From 125264843b0e1f8afccc85ea30c329f0366eb716 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 25 Sep 2013 13:50:57 +0000 Subject: - custom screen saver detection code removed - code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@6230 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/AutoShutdown/src/cpuusage.cpp | 44 +- plugins/AutoShutdown/src/frame.cpp | 132 ++--- plugins/AutoShutdown/src/main.cpp | 4 +- plugins/AutoShutdown/src/options.cpp | 118 ++-- plugins/AutoShutdown/src/settingsdlg.cpp | 108 ++-- plugins/AutoShutdown/src/shutdownsvc.cpp | 607 +++++++++++---------- plugins/AutoShutdown/src/utils.cpp | 50 +- plugins/AutoShutdown/src/watcher.cpp | 182 +++--- plugins/Import/src/import.cpp | 2 +- plugins/Import/src/miranda.cpp | 99 ++-- plugins/KeyboardNotify/src/ignore.cpp | 20 +- plugins/KeyboardNotify/src/main.cpp | 102 +--- plugins/KeyboardNotify/src/options.cpp | 12 +- plugins/Scriver/src/msgwindow.cpp | 541 +++++++++--------- plugins/SimpleStatusMsg/src/main.cpp | 84 +-- .../AdvancedAutoAway/advancedautoaway.cpp | 5 +- 16 files changed, 1005 insertions(+), 1105 deletions(-) (limited to 'plugins') diff --git a/plugins/AutoShutdown/src/cpuusage.cpp b/plugins/AutoShutdown/src/cpuusage.cpp index 8ab1fa91c0..cc4a3fac15 100644 --- a/plugins/AutoShutdown/src/cpuusage.cpp +++ b/plugins/AutoShutdown/src/cpuusage.cpp @@ -31,12 +31,12 @@ static BOOL WinNT_PerfStatsSwitch(TCHAR *pszServiceName,BOOL fDisable) DWORD dwData,dwDataSize; BOOL fSwitched=FALSE; /* Win2000+ */ - if(!RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("System\\CurrentControlSet\\Services"),0,KEY_QUERY_VALUE|KEY_SET_VALUE,&hKeyServices)) { - if(!RegOpenKeyEx(hKeyServices,pszServiceName,0,KEY_QUERY_VALUE|KEY_SET_VALUE,&hKeyService)) { - if(!RegOpenKeyEx(hKeyService,_T("Performance"),0,KEY_QUERY_VALUE|KEY_SET_VALUE,&hKeyPerf)) { + if (!RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("System\\CurrentControlSet\\Services"),0,KEY_QUERY_VALUE|KEY_SET_VALUE,&hKeyServices)) { + if (!RegOpenKeyEx(hKeyServices,pszServiceName,0,KEY_QUERY_VALUE|KEY_SET_VALUE,&hKeyService)) { + if (!RegOpenKeyEx(hKeyService,_T("Performance"),0,KEY_QUERY_VALUE|KEY_SET_VALUE,&hKeyPerf)) { dwDataSize=sizeof(DWORD); - if(!RegQueryValueEx(hKeyPerf,_T("Disable Performance Counters"),NULL,NULL,(BYTE*)&dwData,&dwDataSize)) - if((dwData!=0)!=fDisable) + if (!RegQueryValueEx(hKeyPerf,_T("Disable Performance Counters"),NULL,NULL,(BYTE*)&dwData,&dwDataSize)) + if ((dwData != 0) != fDisable) fSwitched=!RegSetValueEx(hKeyPerf,_T("Disable Performance Counters"),0,REG_DWORD,(BYTE*)&fDisable,dwDataSize); RegCloseKey(hKeyPerf); } @@ -58,7 +58,7 @@ struct CpuUsageThreadParams { static BOOL CallBackAndWait(struct CpuUsageThreadParams *param,BYTE nCpuUsage) { - if(param->hFirstEvent!=NULL) { + if (param->hFirstEvent != NULL) { /* return value for PollCpuUsage() */ *param->pidThread=GetCurrentThreadId(); SetEvent(param->hFirstEvent); @@ -66,7 +66,7 @@ static BOOL CallBackAndWait(struct CpuUsageThreadParams *param,BYTE nCpuUsage) /* lower priority after first call */ SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_IDLE); } - if(!param->pfnDataAvailProc(nCpuUsage,param->lParam)) return FALSE; + if (!param->pfnDataAvailProc(nCpuUsage,param->lParam)) return FALSE; SleepEx(param->dwDelayMillis,TRUE); return !Miranda_Terminated(); } @@ -102,25 +102,25 @@ static void WinNT_PollThread(void *vparam) res=RegQueryValueExW(HKEY_PERFORMANCE_DATA,wszValueName,NULL,NULL,(BYTE*)pPerfData,&dwBufferSize); while(!pBuffer || res==ERROR_MORE_DATA) { pBuffer=(BYTE*)mir_realloc(pPerfData,dwBufferSize+=256); - if(!pBuffer) break; + if (!pBuffer) break; pPerfData=(PERF_DATA_BLOCK*)pBuffer; res=RegQueryValueExW(HKEY_PERFORMANCE_DATA,wszValueName,NULL,NULL,pBuffer,&dwBufferSize); } - if(res!=ERROR_SUCCESS) break; + if (res != ERROR_SUCCESS) break; /* find object in data */ fFound=FALSE; /* first object */ pPerfObj=(PERF_OBJECT_TYPE*)((BYTE*)pPerfData+pPerfData->HeaderLength); for(dwCount=0;dwCountNumObjectTypes;++dwCount) { - if(pPerfObj->ObjectNameTitleIndex==dwObjectId) { + if (pPerfObj->ObjectNameTitleIndex==dwObjectId) { /* find counter in object data */ /* first counter */ pPerfCounter=(PERF_COUNTER_DEFINITION*)((BYTE*)pPerfObj+pPerfObj->HeaderLength); for(dwCount=0;dwCount<(pPerfObj->NumCounters);++dwCount) { - if(pPerfCounter->CounterNameTitleIndex==dwCounterId) { + if (pPerfCounter->CounterNameTitleIndex==dwCounterId) { /* find instance in counter data */ - if(pPerfObj->NumInstances==PERF_NO_INSTANCES) { + if (pPerfObj->NumInstances==PERF_NO_INSTANCES) { pPerfCounterBlock=(PERF_COUNTER_BLOCK*)((BYTE*)pPerfObj+pPerfObj->DefinitionLength); liCurrentCounterValue=*(LARGE_INTEGER*)((BYTE*)pPerfCounterBlock+pPerfCounter->CounterOffset); fFound=TRUE; @@ -130,7 +130,7 @@ static void WinNT_PollThread(void *vparam) pPerfInstance=(PERF_INSTANCE_DEFINITION*)((BYTE*)pPerfObj+pPerfObj->DefinitionLength); for(lCount=0;lCount<(pPerfObj->NumInstances);++lCount) { pPerfCounterBlock=(PERF_COUNTER_BLOCK*)((BYTE*)pPerfInstance+pPerfInstance->ByteLength); - if(!lstrcmpiW(pwszInstanceName,(WCHAR*)((BYTE*)pPerfInstance+pPerfInstance->NameOffset)) || !pwszInstanceName) { + if (!lstrcmpiW(pwszInstanceName,(WCHAR*)((BYTE*)pPerfInstance+pPerfInstance->NameOffset)) || !pwszInstanceName) { liCurrentCounterValue=*(LARGE_INTEGER*)((BYTE*)pPerfCounterBlock+pPerfCounter->CounterOffset); fFound=TRUE; break; @@ -149,14 +149,14 @@ static void WinNT_PollThread(void *vparam) /* next object */ pPerfObj=(PERF_OBJECT_TYPE*)((BYTE*)pPerfObj+pPerfObj->TotalByteLength); } - if(!fFound) break; + if (!fFound) break; /* calc val from data, we need two samplings * counter type: PERF_100NSEC_TIMER_INV * calc: time base=100Ns, value=100*(1-(data_diff)/(100NsTime_diff)) */ - if(!fIsFirst) { + if (!fIsFirst) { nCpuUsage=(BYTE)((1.0-(Li2Double(liCurrentCounterValue)-Li2Double(liPrevCounterValue))/(Li2Double(pPerfData->PerfTime100nSec)-Li2Double(liPrevPerfTime100nSec)))*100.0+0.5); - if(!CallBackAndWait(param,nCpuUsage)) break; + if (!CallBackAndWait(param,nCpuUsage)) break; } else fIsFirst=FALSE; /* store current sampling for next */ @@ -165,11 +165,11 @@ static void WinNT_PollThread(void *vparam) } /* uninit */ - if(pPerfData) mir_free(pPerfData); - if(fSwitched) WinNT_PerfStatsSwitch(_T("PerfOS"),TRUE); + if (pPerfData) mir_free(pPerfData); + if (fSwitched) WinNT_PerfStatsSwitch(_T("PerfOS"),TRUE); /* return error for PollCpuUsage() if never succeeded */ - if(param->hFirstEvent!=NULL) SetEvent(param->hFirstEvent); + if (param->hFirstEvent != NULL) SetEvent(param->hFirstEvent); mir_free(param); } @@ -184,18 +184,18 @@ DWORD PollCpuUsage(CPUUSAGEAVAILPROC pfnDataAvailProc,LPARAM lParam,DWORD dwDela /* init params */ param=(struct CpuUsageThreadParams*)mir_alloc(sizeof(struct CpuUsageThreadParams)); - if(param==NULL) return FALSE; + if (param==NULL) return FALSE; param->dwDelayMillis=dwDelayMillis; param->pfnDataAvailProc=pfnDataAvailProc; param->lParam=lParam; param->pidThread=&idThread; param->hFirstEvent=hFirstEvent=CreateEvent(NULL,FALSE,FALSE,NULL); - if(hFirstEvent==NULL) { + if (hFirstEvent==NULL) { mir_free(param); return 0; } /* start thread */ - if((int)mir_forkthread(WinNT_PollThread, param) != -1) + if ((int)mir_forkthread(WinNT_PollThread, param) != -1) WaitForSingleObject(hFirstEvent,INFINITE); /* wait for first success */ else mir_free(param); /* thread not started */ diff --git a/plugins/AutoShutdown/src/frame.cpp b/plugins/AutoShutdown/src/frame.cpp index 04b0a10422..9c0e8ff9fd 100644 --- a/plugins/AutoShutdown/src/frame.cpp +++ b/plugins/AutoShutdown/src/frame.cpp @@ -51,7 +51,7 @@ static LOGFONT* GetDefaultFont(LOGFONT *lf) NONCLIENTMETRICS ncm; ZeroMemory(&ncm,sizeof(ncm)); ncm.cbSize=sizeof(ncm); - if(SystemParametersInfo(SPI_GETNONCLIENTMETRICS,ncm.cbSize,&ncm,0)) { + if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS,ncm.cbSize,&ncm,0)) { *lf=ncm.lfStatusFont; return lf; } @@ -63,7 +63,7 @@ static HICON SetFrameTitleIcon(WORD hFrame,HICON hNewIcon) HICON hPrevIcon; hPrevIcon=(HICON)CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_ICON,hFrame),0); CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS,MAKEWPARAM(FO_ICON,hFrame),(LPARAM)hNewIcon); - if((int)hPrevIcon==-1) return (HICON)NULL; + if ((int)hPrevIcon==-1) return (HICON)NULL; return hPrevIcon; } @@ -123,7 +123,7 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA case WM_NCCREATE: /* init window data */ dat=(struct CountdownFrameWndData*)mir_calloc(sizeof(*dat)); SetWindowLongPtr(hwndFrame, GWLP_USERDATA, (LONG)dat); - if(dat==NULL) return FALSE; /* creation failed */ + if (dat==NULL) return FALSE; /* creation failed */ dat->fTimeFlags=*(WORD*)((CREATESTRUCT*)lParam)->lpCreateParams; dat->flags=FWPDF_COUNTDOWNINVALID; break; @@ -151,7 +151,7 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA NULL, params->hInstance, NULL); - if(dat->hwndProgress==NULL) return -1; /* creation failed, calls WM_DESTROY */ + if (dat->hwndProgress==NULL) return -1; /* creation failed, calls WM_DESTROY */ SendMessage(dat->hwndProgress,PBM_SETSTEP,(WPARAM)1,0); mir_subclassWindow(dat->hwndProgress, ProgressBarSubclassProc); dat->hwndDesc=CreateWindowEx(WS_EX_NOPARENTNOTIFY, @@ -178,7 +178,7 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA NULL, params->hInstance, NULL); - if(dat->hwndTime==NULL) return -1; /* creation failed, calls WM_DESTROY */ + if (dat->hwndTime==NULL) return -1; /* creation failed, calls WM_DESTROY */ /* create tooltips */ TTTOOLINFO ti; dat->hwndToolTip=CreateWindowEx(WS_EX_TOPMOST, @@ -191,7 +191,7 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA NULL, params->hInstance, NULL); - if(dat->hwndToolTip!=NULL) { + if (dat->hwndToolTip != NULL) { SetWindowPos(dat->hwndToolTip,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE); ZeroMemory(&ti,sizeof(ti)); ti.cbSize=sizeof(ti); @@ -203,11 +203,11 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA ti.uFlags&=~TTF_TRANSPARENT; ti.uId=(UINT)dat->hwndProgress; SendMessage(dat->hwndToolTip,TTM_ADDTOOL,0,(LPARAM)&ti); - if(dat->hwndDesc!=NULL) { + if (dat->hwndDesc != NULL) { ti.uId=(UINT)dat->hwndDesc; SendMessage(dat->hwndToolTip,TTM_ADDTOOL,0,(LPARAM)&ti); } - if(dat->hwndIcon!=NULL) { + if (dat->hwndIcon != NULL) { ti.uId=(UINT)dat->hwndIcon; SendMessage(dat->hwndToolTip,TTM_ADDTOOL,0,(LPARAM)&ti); } @@ -221,24 +221,24 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA SendMessage(hwndFrame,M_REFRESH_ICONS,0,0); SendMessage(hwndFrame,M_SET_COUNTDOWN,0,0); SendMessage(hwndFrame,M_UPDATE_COUNTDOWN,0,0); - if(!SetTimer(hwndFrame,1,1000,NULL)) return -1; /* creation failed, calls WM_DESTROY */ + if (!SetTimer(hwndFrame,1,1000,NULL)) return -1; /* creation failed, calls WM_DESTROY */ return 0; } case WM_DESTROY: { - if(dat==NULL) return 0; + if (dat==NULL) return 0; UnhookEvent(dat->hHookColorsChanged); UnhookEvent(dat->hHookFontsChanged); UnhookEvent(dat->hHookIconsChanged); /* other childs are destroyed automatically */ - if(dat->hwndToolTip!=NULL) DestroyWindow(dat->hwndToolTip); + if (dat->hwndToolTip != NULL) DestroyWindow(dat->hwndToolTip); HICON hIcon=(HICON)SendMessage(dat->hwndIcon,STM_SETIMAGE,IMAGE_ICON,0); break; } case WM_NCDESTROY: - if(dat==NULL) return 0; - if(dat->hFont!=NULL) DeleteObject(dat->hFont); - if(dat->hbrBackground!=NULL) DeleteObject(dat->hbrBackground); + if (dat==NULL) return 0; + if (dat->hFont != NULL) DeleteObject(dat->hFont); + if (dat->hbrBackground != NULL) DeleteObject(dat->hbrBackground); mir_free(dat); SetWindowLongPtr(hwndFrame, GWLP_USERDATA, (LONG)NULL); break; @@ -256,7 +256,7 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA height=rc.bottom-(GetSystemMetrics(SM_CYICON)/2)-5; hdwp=DeferWindowPos(hdwp,dat->hwndProgress,NULL,0,0,width,height,SWP_NOMOVE|defflg); /* desc */ - if(dat->hwndDesc!=NULL) hdwp=DeferWindowPos(hdwp,dat->hwndDesc,NULL,GetSystemMetrics(SM_CXICON)+5,5+height,0,0,SWP_NOSIZE|defflg); + if (dat->hwndDesc != NULL) hdwp=DeferWindowPos(hdwp,dat->hwndDesc,NULL,GetSystemMetrics(SM_CXICON)+5,5+height,0,0,SWP_NOSIZE|defflg); /* time */ hdwp=DeferWindowPos(hdwp,dat->hwndTime,NULL,GetSystemMetrics(SM_CXICON)+85,5+height,width-80,(GetSystemMetrics(SM_CXICON)/2),defflg); EndDeferWindowPos(hdwp); @@ -266,11 +266,11 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA case M_REFRESH_COLORS: { COLORREF clrBar; - if(FontService_GetColor(_T("Automatic Shutdown"),_T("Progress Bar"),&clrBar)) + if (FontService_GetColor(_T("Automatic Shutdown"),_T("Progress Bar"),&clrBar)) clrBar=GetDefaultColor(FRAMEELEMENT_BAR); - if(FontService_GetColor(_T("Automatic Shutdown"),_T("Background"),&dat->clrBackground)) + if (FontService_GetColor(_T("Automatic Shutdown"),_T("Background"),&dat->clrBackground)) dat->clrBackground=GetDefaultColor(FRAMEELEMENT_BKGRND); - if(dat->hbrBackground!=NULL) DeleteObject(dat->hbrBackground); + if (dat->hbrBackground != NULL) DeleteObject(dat->hbrBackground); dat->hbrBackground=CreateSolidBrush(dat->clrBackground); SendMessage(dat->hwndProgress,PBM_SETBARCOLOR,0,(LPARAM)clrBar); SendMessage(dat->hwndProgress,PBM_SETBKCOLOR,0,(LPARAM)dat->clrBackground); @@ -282,18 +282,18 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA case M_REFRESH_FONTS: { LOGFONT lf; - if(!FontService_GetFont(_T("Automatic Shutdown"),_T("Countdown on Frame"),&dat->clrText,&lf)) { - if(dat->hFont!=NULL) DeleteObject(dat->hFont); + if (!FontService_GetFont(_T("Automatic Shutdown"),_T("Countdown on Frame"),&dat->clrText,&lf)) { + if (dat->hFont != NULL) DeleteObject(dat->hFont); dat->hFont=CreateFontIndirect(&lf); } else { dat->clrText=GetDefaultColor(FRAMEELEMENT_TEXT); - if(GetDefaultFont(&lf)!=NULL) { - if(dat->hFont!=NULL) DeleteObject(dat->hFont); + if (GetDefaultFont(&lf) != NULL) { + if (dat->hFont != NULL) DeleteObject(dat->hFont); dat->hFont=CreateFontIndirect(&lf); } } - if(dat->hwndDesc!=NULL) + if (dat->hwndDesc != NULL) SendMessage(dat->hwndDesc,WM_SETFONT,(WPARAM)dat->hFont,FALSE); SendMessage(dat->hwndTime,WM_SETFONT,(WPARAM)dat->hFont,FALSE); InvalidateRect(hwndFrame,NULL,FALSE); @@ -319,20 +319,20 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA return (BOOL)dat->hbrBackground; case WM_ERASEBKGND: { RECT rc; - if(dat->hbrBackground!=NULL && GetClientRect(hwndFrame,&rc)) { + if (dat->hbrBackground != NULL && GetClientRect(hwndFrame,&rc)) { FillRect((HDC)wParam,&rc,dat->hbrBackground); return TRUE; } return FALSE; } case M_SET_COUNTDOWN: - if(dat->fTimeFlags&SDWTF_ST_TIME) { + if (dat->fTimeFlags&SDWTF_ST_TIME) { dat->settingLastTime=(time_t)db_get_dw(NULL,"AutoShutdown","TimeStamp",SETTING_TIMESTAMP_DEFAULT); dat->countdown=time(NULL); - if(dat->settingLastTime>dat->countdown) dat->countdown=dat->settingLastTime-dat->countdown; + if (dat->settingLastTime>dat->countdown) dat->countdown=dat->settingLastTime-dat->countdown; else dat->countdown=0; } - else if(dat->flags&FWPDF_COUNTDOWNINVALID) { + else if (dat->flags&FWPDF_COUNTDOWNINVALID) { dat->countdown=(time_t)db_get_dw(NULL,"AutoShutdown","Countdown",SETTING_COUNTDOWN_DEFAULT); dat->countdown*=(time_t)db_get_dw(NULL,"AutoShutdown","CountdownUnit",SETTING_COUNTDOWNUNIT_DEFAULT); } @@ -341,13 +341,13 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA SendMessage(dat->hwndProgress,PBM_SETRANGE32,0,(LPARAM)dat->countdown); return 0; case WM_TIMER: - if(dat==NULL) return 0; - if(dat->countdown!=0 && !(dat->flags&FWPDF_COUNTDOWNINVALID) && !(dat->flags&FWPDF_PAUSED)) { + if (dat==NULL) return 0; + if (dat->countdown != 0 && !(dat->flags&FWPDF_COUNTDOWNINVALID) && !(dat->flags&FWPDF_PAUSED)) { dat->countdown--; PostMessage(dat->hwndProgress,PBM_STEPIT,0,0); } - if(IsWindowVisible(hwndFrame)) PostMessage(hwndFrame,M_UPDATE_COUNTDOWN,0,0); - if(dat->countdown==0) { + if (IsWindowVisible(hwndFrame)) PostMessage(hwndFrame,M_UPDATE_COUNTDOWN,0,0); + if (dat->countdown==0) { SendMessage(hwndFrame,M_CLOSE_COUNTDOWN,0,0); ServiceShutdown(0,TRUE); ServiceStopWatcher(0,0); @@ -355,25 +355,25 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA return 0; case WM_SHOWWINDOW: /* the text is kept unchanged while hidden */ - if((BOOL)wParam) SendMessage(hwndFrame,M_UPDATE_COUNTDOWN,0,0); + if ((BOOL)wParam) SendMessage(hwndFrame,M_UPDATE_COUNTDOWN,0,0); break; case M_UPDATE_COUNTDOWN: - if(dat->flags&FWPDF_PAUSED && !(dat->flags&FWPDF_PAUSEDSHOWN)) { + if (dat->flags&FWPDF_PAUSED && !(dat->flags&FWPDF_PAUSEDSHOWN)) { SetWindowText(dat->hwndTime,TranslateT("Paused")); dat->flags|=FWPDF_PAUSEDSHOWN; } else { TCHAR szOutput[256]; - if(dat->fTimeFlags&SDWTF_ST_TIME) + if (dat->fTimeFlags&SDWTF_ST_TIME) GetFormatedDateTime(szOutput,SIZEOF(szOutput),dat->settingLastTime,TRUE); else GetFormatedCountdown(szOutput,SIZEOF(szOutput),dat->countdown); SetWindowText(dat->hwndTime,szOutput); PostMessage(hwndFrame,M_CHECK_CLIPPED,0,0); /* update tooltip text (if shown) */ - if(dat->hwndToolTip!=NULL && !(dat->flags&FWPDF_PAUSED)) { + if (dat->hwndToolTip != NULL && !(dat->flags&FWPDF_PAUSED)) { TTTOOLINFO ti; ti.cbSize=sizeof(ti); - if(SendMessage(dat->hwndToolTip,TTM_GETCURRENTTOOL,0,(LPARAM)&ti) && (HWND)ti.uId!=dat->hwndIcon) + if (SendMessage(dat->hwndToolTip,TTM_GETCURRENTTOOL,0,(LPARAM)&ti) && (HWND)ti.uId != dat->hwndIcon) SendMessage(dat->hwndToolTip,TTM_UPDATE,0,0); } else dat->flags&=~FWPDF_PAUSEDSHOWN; } @@ -390,7 +390,7 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA SendMessage(dat->hwndProgress,PBM_SETMARQUEE,TRUE,10); /* marquee for rest of time */ return 0; case M_PAUSE_COUNTDOWN: - if(dat->flags&FWPDF_PAUSED) { + if (dat->flags&FWPDF_PAUSED) { /* unpause */ dat->flags&=~(FWPDF_PAUSED|FWPDF_PAUSEDSHOWN); SendMessage(hwndFrame,M_SET_COUNTDOWN,0,0); @@ -406,17 +406,17 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA case WM_CONTEXTMENU: { HMENU hContextMenu; POINT pt; - if(dat->flags&FWPDF_COUNTDOWNINVALID) return 0; + if (dat->flags&FWPDF_COUNTDOWNINVALID) return 0; POINTSTOPOINT(pt,MAKEPOINTS(lParam)); - if(pt.x==-1 && pt.y==-1) { /* invoked by keyboard */ + if (pt.x==-1 && pt.y==-1) { /* invoked by keyboard */ RECT rc; /* position in middle above rect */ - if(!GetWindowRect(hwndFrame, &rc)) return 0; + if (!GetWindowRect(hwndFrame, &rc)) return 0; pt.x=rc.left+((int)(rc.right-rc.left)/2); pt.y=rc.top+((int)(rc.bottom-rc.top)/2); } hContextMenu=CreatePopupMenu(); - if(hContextMenu!=NULL) { + if (hContextMenu != NULL) { AppendMenu(hContextMenu,MF_STRING,MENUITEM_PAUSECOUNTDOWN,(dat->flags&FWPDF_PAUSED)?TranslateT("&Unpause Countdown"):TranslateT("&Pause Countdown")); SetMenuDefaultItem(hContextMenu,MENUITEM_PAUSECOUNTDOWN,FALSE); AppendMenu(hContextMenu,MF_STRING,MENUITEM_STOPCOUNTDOWN,TranslateT("&Cancel Countdown")); @@ -426,14 +426,14 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA return 0; } case WM_LBUTTONDBLCLK: - if(!(dat->flags&FWPDF_COUNTDOWNINVALID)) + if (!(dat->flags&FWPDF_COUNTDOWNINVALID)) SendMessage(hwndFrame,M_PAUSE_COUNTDOWN,0,0); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case MENUITEM_STOPCOUNTDOWN: /* close only countdown window when other watcher types running */ - if(dat->fTimeFlags&~(SDWTF_SPECIFICTIME|SDWTF_ST_MASK)) + if (dat->fTimeFlags&~(SDWTF_SPECIFICTIME|SDWTF_ST_MASK)) CloseCountdownFrame(); /* something else is running */ else ServiceStopWatcher(0,0); /* calls CloseCountdownFrame() */ return 0; @@ -449,16 +449,16 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA HFONT hFontPrev=NULL; TCHAR szOutput[256]; dat->flags&=~FWPDF_TIMEISCLIPPED; - if(GetWindowText(dat->hwndTime,szOutput,SIZEOF(szOutput)-1)) - if(GetClientRect(dat->hwndTime,&rc)) { + if (GetWindowText(dat->hwndTime,szOutput,SIZEOF(szOutput)-1)) + if (GetClientRect(dat->hwndTime,&rc)) { hdc=GetDC(dat->hwndTime); - if(hdc!=NULL) { - if(dat->hFont!=NULL) + if (hdc != NULL) { + if (dat->hFont != NULL) hFontPrev = (HFONT)SelectObject(hdc,dat->hFont); - if(GetTextExtentPoint32(hdc,szOutput,lstrlen(szOutput),&size)) - if(size.cx>=(rc.right-rc.left)) + if (GetTextExtentPoint32(hdc,szOutput,lstrlen(szOutput),&size)) + if (size.cx>=(rc.right-rc.left)) dat->flags&=FWPDF_TIMEISCLIPPED; - if(dat->hFont!=NULL) + if (dat->hFont != NULL) SelectObject(hdc,hFontPrev); ReleaseDC(dat->hwndTime,hdc); } @@ -466,12 +466,12 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA return 0; } case WM_NOTIFY: - if(((NMHDR*)lParam)->hwndFrom==dat->hwndToolTip) + if (((NMHDR*)lParam)->hwndFrom==dat->hwndToolTip) switch(((NMHDR*)lParam)->code) { case TTN_SHOW: /* 'in-place' tooltip on dat->hwndTime */ - if(dat->flags&FWPDF_TIMEISCLIPPED && (HWND)wParam==dat->hwndTime) { + if (dat->flags&FWPDF_TIMEISCLIPPED && (HWND)wParam==dat->hwndTime) { RECT rc; - if(GetWindowRect(dat->hwndTime,&rc)) { + if (GetWindowRect(dat->hwndTime,&rc)) { SetWindowLongPtr(dat->hwndToolTip, GWL_STYLE, GetWindowLongPtr(dat->hwndToolTip, GWL_STYLE) | TTS_NOANIMATE); SetWindowLongPtr(dat->hwndToolTip, GWL_EXSTYLE, GetWindowLongPtr(dat->hwndToolTip, GWL_EXSTYLE) | WS_EX_TRANSPARENT); SendMessage(dat->hwndToolTip,TTM_ADJUSTRECT,TRUE,(LPARAM)&rc); @@ -489,15 +489,15 @@ static LRESULT CALLBACK FrameWndProc(HWND hwndFrame,UINT msg,WPARAM wParam,LPARA return 0; case TTN_NEEDTEXT: { NMTTDISPINFO *ttdi=(NMTTDISPINFO*)lParam; - if(dat->flags&FWPDF_TIMEISCLIPPED && (HWND)wParam==dat->hwndTime) { - if(GetWindowText(dat->hwndTime,ttdi->szText,SIZEOF(ttdi->szText)-1)) + if (dat->flags&FWPDF_TIMEISCLIPPED && (HWND)wParam==dat->hwndTime) { + if (GetWindowText(dat->hwndTime,ttdi->szText,SIZEOF(ttdi->szText)-1)) ttdi->lpszText=ttdi->szText; } - else if((HWND)wParam==dat->hwndIcon) + else if ((HWND)wParam==dat->hwndIcon) ttdi->lpszText=TranslateT("Automatic Shutdown"); else { TCHAR szTime[SIZEOF(ttdi->szText)]; - if(dat->fTimeFlags&SDWTF_ST_TIME) + if (dat->fTimeFlags&SDWTF_ST_TIME) GetFormatedDateTime(szTime,SIZEOF(szTime),dat->settingLastTime,FALSE); else GetFormatedCountdown(szTime,SIZEOF(szTime),dat->countdown); mir_sntprintf(ttdi->szText,SIZEOF(ttdi->szText),_T("%s %s"),(dat->fTimeFlags&SDWTF_ST_TIME)?TranslateT("Shutdown at:"):TranslateT("Time left:"),szTime); @@ -526,9 +526,9 @@ void ShowCountdownFrame(WORD fTimeFlags) NULL, hInst, &fTimeFlags); - if(hwndCountdownFrame==NULL) return; + if (hwndCountdownFrame==NULL) return; - if(ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { + if (ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { CLISTFrame clf = { sizeof(clf) }; clf.hIcon=Skin_GetIcon("AutoShutdown_Active"); /* CListFrames does not make a copy */ clf.align=alBottom; @@ -538,7 +538,7 @@ void ShowCountdownFrame(WORD fTimeFlags) clf.TBname=Translate("Automatic Shutdown"); clf.hWnd=hwndCountdownFrame; hFrame=(WORD)CallService(MS_CLIST_FRAMES_ADDFRAME,(WPARAM)&clf,0); - if(hFrame) { + if (hFrame) { ShowWindow(hwndCountdownFrame,SW_SHOW); CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS,MAKEWPARAM(FO_TBTIPNAME,hFrame),(LPARAM)clf.name); /* HACKS TO FIX CLUI FRAMES: @@ -548,7 +548,7 @@ void ShowCountdownFrame(WORD fTimeFlags) /* workaround #2: drawing glitch after adding a frame (frame positioned wrongly when hidden) */ CallService(MS_CLIST_FRAMES_UPDATEFRAME,hFrame,FU_FMPOS|FU_FMREDRAW); /* workaround #3: MS_CLIST_FRAMES_SETFRAMEOPTIONS does cause redrawing problems */ - if(!(CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,hFrame),0)&F_VISIBLE)) + if (!(CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,hFrame),0)&F_VISIBLE)) CallService(MS_CLIST_FRAMES_SHFRAME,hFrame,0); /* workaround #4: MS_CLIST_FRAMES_SHFRAME does cause redrawing problems when frame was hidden */ RedrawWindow(hwndCountdownFrame,NULL,NULL,RDW_INVALIDATE|RDW_ALLCHILDREN|RDW_ERASE); @@ -560,9 +560,9 @@ void ShowCountdownFrame(WORD fTimeFlags) void CloseCountdownFrame(void) { - if(hwndCountdownFrame!=NULL) { + if (hwndCountdownFrame != NULL) { SendMessage(hwndCountdownFrame,M_CLOSE_COUNTDOWN,0,0); - if(hFrame) { + if (hFrame) { /* HACKS TO FIX CLUIFrames: * workaround #6: MS_CLIST_FRAMES_REMOVEFRAME does not finish with * destroy cycle (clist_modern, clist_nicer crashes) */ @@ -584,14 +584,14 @@ void CloseCountdownFrame(void) static int FrameModulesLoaded(WPARAM wParam,LPARAM lParam) { - if(ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { + if (ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { LOGFONT lf; /* built-in font module is not available before this hook */ COLORREF clr = GetDefaultColor(FRAMEELEMENT_TEXT); FontService_RegisterFont("AutoShutdown","CountdownFont",LPGENT("Automatic Shutdown"),LPGENT("Countdown on Frame"),LPGENT("Automatic Shutdown"),LPGENT("Background"),0,FALSE,GetDefaultFont(&lf),clr); clr=GetDefaultColor(FRAMEELEMENT_BKGRND); FontService_RegisterColor("AutoShutdown","BkgColor",LPGENT("Automatic Shutdown"),LPGENT("Background"),clr); - if( !IsThemeActive()) { + if ( !IsThemeActive()) { /* progressbar color can only be changed with classic theme */ clr=GetDefaultColor(FRAMEELEMENT_BAR); FontService_RegisterColor("AutoShutdown","ProgressColor",TranslateT("Automatic Shutdown"),TranslateT("Progress Bar"),clr); @@ -610,7 +610,7 @@ int InitFrame(void) wcx.hInstance =hInst; wcx.hCursor =(HCURSOR)LoadImage(NULL,IDC_ARROW,IMAGE_CURSOR,0,0,LR_SHARED); wcx.lpszClassName =COUNTDOWNFRAME_CLASS; - if(!RegisterClassEx(&wcx)) return 1; + if (!RegisterClassEx(&wcx)) return 1; hwndCountdownFrame=NULL; hHookModulesLoaded=HookEvent(ME_SYSTEM_MODULESLOADED,FrameModulesLoaded); diff --git a/plugins/AutoShutdown/src/main.cpp b/plugins/AutoShutdown/src/main.cpp index 636fc3e0fd..5341f7d7d0 100644 --- a/plugins/AutoShutdown/src/main.cpp +++ b/plugins/AutoShutdown/src/main.cpp @@ -74,9 +74,9 @@ extern "C" __declspec(dllexport) int Load(void) INITCOMMONCONTROLSEX icc; icc.dwSize=sizeof(icc); icc.dwICC=ICC_DATE_CLASSES|ICC_UPDOWN_CLASS|ICC_PROGRESS_CLASS; - if(!InitCommonControlsEx(&icc)) return 1; + if (!InitCommonControlsEx(&icc)) return 1; - if(InitFrame()) return 1; /* before icons */ + if (InitFrame()) return 1; /* before icons */ /* shared */ Icon_Register(hInst, "Automatic Shutdown", iconList, SIZEOF(iconList)); diff --git a/plugins/AutoShutdown/src/options.cpp b/plugins/AutoShutdown/src/options.cpp index 2c3ce593df..4cadbe61c4 100644 --- a/plugins/AutoShutdown/src/options.cpp +++ b/plugins/AutoShutdown/src/options.cpp @@ -34,35 +34,39 @@ static HANDLE hHookModulesLoaded; static INT_PTR CALLBACK ShutdownOptDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - { WORD setting=db_get_w(NULL,"AutoShutdown","ConfirmDlgCountdown",SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT); - if(setting<3) setting=SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT; - SendDlgItemMessage(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN,UDM_SETRANGE,0,MAKELPARAM(999,3)); - SendDlgItemMessage(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,EM_SETLIMITTEXT,3,0); - SendDlgItemMessage(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN,UDM_SETPOS,0,MAKELPARAM(setting,0)); - SetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,setting,FALSE); - } - CheckDlgButton(hwndDlg,IDC_CHECK_SMARTOFFLINECHECK,db_get_b(NULL,"AutoShutdown","SmartOfflineCheck",SETTING_SMARTOFFLINECHECK_DEFAULT)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_REMEMBERONRESTART,db_get_b(NULL,"AutoShutdown","RememberOnRestart",SETTING_REMEMBERONRESTART_DEFAULT)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_SHOWCONFIRMDLG,db_get_b(NULL,"AutoShutdown","ShowConfirmDlg",SETTING_SHOWCONFIRMDLG_DEFAULT)!=0); - { BOOL enabled=ServiceIsTypeEnabled(SDSDT_SHUTDOWN,0); - if(enabled) { - if(ServiceExists(MS_SYSINFO_HDDTEMP)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_HDDOVERHEAT),TRUE); - CheckDlgButton(hwndDlg,IDC_CHECK_HDDOVERHEAT,db_get_b(NULL,"AutoShutdown","HddOverheatShutdown",SETTING_HDDOVERHEATSHUTDOWN_DEFAULT)!=0); - } - if(ServiceExists(MS_WEATHER_UPDATE)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_WEATHER),TRUE); - CheckDlgButton(hwndDlg,IDC_CHECK_WEATHER,db_get_b(NULL,"AutoShutdown","WeatherShutdown",SETTING_WEATHERSHUTDOWN_DEFAULT)!=0); - } + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + { + WORD setting=db_get_w(NULL,"AutoShutdown","ConfirmDlgCountdown",SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT); + if (setting<3) setting=SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT; + SendDlgItemMessage(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN,UDM_SETRANGE,0,MAKELPARAM(999,3)); + SendDlgItemMessage(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,EM_SETLIMITTEXT,3,0); + SendDlgItemMessage(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN,UDM_SETPOS,0,MAKELPARAM(setting,0)); + SetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,setting,FALSE); + } + CheckDlgButton(hwndDlg,IDC_CHECK_SMARTOFFLINECHECK,db_get_b(NULL,"AutoShutdown","SmartOfflineCheck",SETTING_SMARTOFFLINECHECK_DEFAULT) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_REMEMBERONRESTART,db_get_b(NULL,"AutoShutdown","RememberOnRestart",SETTING_REMEMBERONRESTART_DEFAULT) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_SHOWCONFIRMDLG,db_get_b(NULL,"AutoShutdown","ShowConfirmDlg",SETTING_SHOWCONFIRMDLG_DEFAULT) != 0); + { + BOOL enabled = ServiceIsTypeEnabled(SDSDT_SHUTDOWN,0); + if (enabled) { + if (ServiceExists(MS_SYSINFO_HDDTEMP)) { + EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_HDDOVERHEAT),TRUE); + CheckDlgButton(hwndDlg,IDC_CHECK_HDDOVERHEAT,db_get_b(NULL,"AutoShutdown","HddOverheatShutdown",SETTING_HDDOVERHEATSHUTDOWN_DEFAULT) != 0); + } + if (ServiceExists(MS_WEATHER_UPDATE)) { + EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_WEATHER),TRUE); + CheckDlgButton(hwndDlg,IDC_CHECK_WEATHER,db_get_b(NULL,"AutoShutdown","WeatherShutdown",SETTING_WEATHERSHUTDOWN_DEFAULT) != 0); } } - SendMessage(hwndDlg,M_ENABLE_SUBCTLS,0,0); - return TRUE; /* default focus */ - case M_ENABLE_SUBCTLS: - { BOOL checked=IsDlgButtonChecked(hwndDlg,IDC_CHECK_SHOWCONFIRMDLG)!=0; - if(checked!=IsWindowEnabled(GetDlgItem(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN))) { + } + SendMessage(hwndDlg,M_ENABLE_SUBCTLS,0,0); + return TRUE; /* default focus */ + + case M_ENABLE_SUBCTLS: + { + BOOL checked=IsDlgButtonChecked(hwndDlg,IDC_CHECK_SHOWCONFIRMDLG) != 0; + if (checked != IsWindowEnabled(GetDlgItem(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN))) { EnableWindow(GetDlgItem(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN),checked); EnableWindow(GetDlgItem(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN),checked); EnableWindow(GetDlgItem(hwndDlg,IDC_TEXT_COUNTDOWNSTARTS),checked); @@ -70,35 +74,37 @@ static INT_PTR CALLBACK ShutdownOptDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,L } return TRUE; } - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDC_EDIT_CONFIRMDLGCOUNTDOWN: - if(HIWORD(wParam)==EN_KILLFOCUS) - if((int)GetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,NULL,TRUE)<3) { - SendDlgItemMessage(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN,UDM_SETPOS,0,MAKELPARAM(3,0)); - SetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,3,FALSE); - } - if(HIWORD(wParam)!=EN_CHANGE || (HWND)lParam!=GetFocus()) - return TRUE; /* no apply */ - break; - } - PostMessage(hwndDlg,M_ENABLE_SUBCTLS,0,0); - PostMessage(GetParent(hwndDlg),PSM_CHANGED,0,0); /* enable apply */ - return FALSE; - case WM_NOTIFY: - switch(((NMHDR*)lParam)->code) { - case PSN_APPLY: - db_set_b(NULL,"AutoShutdown","ShowConfirmDlg",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_SHOWCONFIRMDLG)!=0)); - db_set_w(NULL,"AutoShutdown","ConfirmDlgCountdown",(WORD)GetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,NULL,FALSE)); - db_set_b(NULL,"AutoShutdown","RememberOnRestart",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_REMEMBERONRESTART)!=0)); - db_set_b(NULL,"AutoShutdown","SmartOfflineCheck",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_SMARTOFFLINECHECK)!=0)); - if(IsWindowEnabled(GetDlgItem(hwndDlg,IDC_CHECK_WEATHER))) - db_set_b(NULL,"AutoShutdown","WeatherShutdown",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_WEATHER)!=0)); - if(IsWindowEnabled(GetDlgItem(hwndDlg,IDC_CHECK_HDDOVERHEAT))) - db_set_b(NULL,"AutoShutdown","HddOverheatShutdown",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_HDDOVERHEAT)!=0)); - return TRUE; - } - break; + + case WM_COMMAND: + switch(LOWORD(wParam)) { + case IDC_EDIT_CONFIRMDLGCOUNTDOWN: + if (HIWORD(wParam)==EN_KILLFOCUS) + if ((int)GetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,NULL,TRUE)<3) { + SendDlgItemMessage(hwndDlg,IDC_SPIN_CONFIRMDLGCOUNTDOWN,UDM_SETPOS,0,MAKELPARAM(3,0)); + SetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,3,FALSE); + } + if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) + return TRUE; /* no apply */ + break; + } + PostMessage(hwndDlg,M_ENABLE_SUBCTLS,0,0); + PostMessage(GetParent(hwndDlg),PSM_CHANGED,0,0); /* enable apply */ + return FALSE; + + case WM_NOTIFY: + switch(((NMHDR*)lParam)->code) { + case PSN_APPLY: + db_set_b(NULL,"AutoShutdown","ShowConfirmDlg",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_SHOWCONFIRMDLG) != 0)); + db_set_w(NULL,"AutoShutdown","ConfirmDlgCountdown",(WORD)GetDlgItemInt(hwndDlg,IDC_EDIT_CONFIRMDLGCOUNTDOWN,NULL,FALSE)); + db_set_b(NULL,"AutoShutdown","RememberOnRestart",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_REMEMBERONRESTART) != 0)); + db_set_b(NULL,"AutoShutdown","SmartOfflineCheck",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_SMARTOFFLINECHECK) != 0)); + if (IsWindowEnabled(GetDlgItem(hwndDlg,IDC_CHECK_WEATHER))) + db_set_b(NULL,"AutoShutdown","WeatherShutdown",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_WEATHER) != 0)); + if (IsWindowEnabled(GetDlgItem(hwndDlg,IDC_CHECK_HDDOVERHEAT))) + db_set_b(NULL,"AutoShutdown","HddOverheatShutdown",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_CHECK_HDDOVERHEAT) != 0)); + return TRUE; + } + break; } return FALSE; } diff --git a/plugins/AutoShutdown/src/settingsdlg.cpp b/plugins/AutoShutdown/src/settingsdlg.cpp index 6e527eac22..f5a31ace20 100644 --- a/plugins/AutoShutdown/src/settingsdlg.cpp +++ b/plugins/AutoShutdown/src/settingsdlg.cpp @@ -36,14 +36,14 @@ const TCHAR *unitNames[]={LPGENT("Second(s)"), LPGENT("Minute(s)"), LPGENT("Hour static void EnableDlgItem(HWND hwndDlg,int idCtrl,BOOL fEnable) { hwndDlg=GetDlgItem(hwndDlg,idCtrl); - if(hwndDlg!=NULL && IsWindowEnabled(hwndDlg)!=fEnable) + if (hwndDlg != NULL && IsWindowEnabled(hwndDlg) != fEnable) EnableWindow(hwndDlg,fEnable); } static BOOL CALLBACK DisplayCpuUsageProc(BYTE nCpuUsage,LPARAM lParam) { /* dialog closed? */ - if(!IsWindow((HWND)lParam)) return FALSE; /* stop poll thread */ + if (!IsWindow((HWND)lParam)) return FALSE; /* stop poll thread */ TCHAR str[64]; mir_sntprintf(str,SIZEOF(str),TranslateT("(current: %u%%)"),nCpuUsage); SetWindowText((HWND)lParam,str); @@ -54,9 +54,9 @@ static bool AnyProtoHasCaps(DWORD caps1) { int nProtoCount; PROTOACCOUNT **protos; - if(!ProtoEnumAccounts(&nProtoCount, &protos)) + if (!ProtoEnumAccounts(&nProtoCount, &protos)) for(int i=0;iszModuleName,PS_GETCAPS,(WPARAM)PFLAGNUM_1,0)&caps1) + if (CallProtoService(protos[i]->szModuleName,PS_GETCAPS,(WPARAM)PFLAGNUM_1,0)&caps1) return true; /* CALLSERVICE_NOTFOUND also handled gracefully */ return false; } @@ -77,7 +77,7 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR { HFONT hBoldFont; LOGFONT lf; - if(GetObject((HFONT)SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_GETFONT,0,0),sizeof(lf),&lf)) { + if (GetObject((HFONT)SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_GETFONT,0,0),sizeof(lf),&lf)) { lf.lfWeight=FW_BOLD; hBoldFont=CreateFontIndirect(&lf); } else hBoldFont=NULL; @@ -87,17 +87,17 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR { WORD watcherType=db_get_w(NULL,"AutoShutdown","WatcherFlags",SETTING_WATCHERFLAGS_DEFAULT); CheckRadioButton(hwndDlg,IDC_RADIO_STTIME,IDC_RADIO_STCOUNTDOWN,(watcherType&SDWTF_ST_TIME)?IDC_RADIO_STTIME:IDC_RADIO_STCOUNTDOWN); - CheckDlgButton(hwndDlg,IDC_CHECK_SPECIFICTIME,(watcherType&SDWTF_SPECIFICTIME)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_MESSAGE,(watcherType&SDWTF_MESSAGE)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_FILETRANSFER,(watcherType&SDWTF_FILETRANSFER)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_IDLE,(watcherType&SDWTF_IDLE)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_STATUS,(watcherType&SDWTF_STATUS)!=0); - CheckDlgButton(hwndDlg,IDC_CHECK_CPUUSAGE,(watcherType&SDWTF_CPUUSAGE)!=0); + CheckDlgButton(hwndDlg,IDC_CHECK_SPECIFICTIME,(watcherType&SDWTF_SPECIFICTIME) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_MESSAGE,(watcherType&SDWTF_MESSAGE) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_FILETRANSFER,(watcherType&SDWTF_FILETRANSFER) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_IDLE,(watcherType&SDWTF_IDLE) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_STATUS,(watcherType&SDWTF_STATUS) != 0); + CheckDlgButton(hwndDlg,IDC_CHECK_CPUUSAGE,(watcherType&SDWTF_CPUUSAGE) != 0); } /* read-in countdown val */ { SYSTEMTIME st; - if(!TimeStampToSystemTime((time_t)db_get_dw(NULL,"AutoShutdown","TimeStamp",SETTING_TIMESTAMP_DEFAULT),&st)) + if (!TimeStampToSystemTime((time_t)db_get_dw(NULL,"AutoShutdown","TimeStamp",SETTING_TIMESTAMP_DEFAULT),&st)) GetLocalTime(&st); DateTime_SetSystemtime(GetDlgItem(hwndDlg,IDC_TIME_TIMESTAMP),GDT_VALID,&st); DateTime_SetSystemtime(GetDlgItem(hwndDlg,IDC_DATE_TIMESTAMP),GDT_VALID,&st); @@ -105,7 +105,7 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR } { DWORD setting=db_get_dw(NULL,"AutoShutdown","Countdown",SETTING_COUNTDOWN_DEFAULT); - if(setting<1) setting=SETTING_COUNTDOWN_DEFAULT; + if (setting<1) setting=SETTING_COUNTDOWN_DEFAULT; SendDlgItemMessage(hwndDlg,IDC_SPIN_COUNTDOWN,UDM_SETRANGE,0,MAKELPARAM(UD_MAXVAL,1)); SendDlgItemMessage(hwndDlg,IDC_EDIT_COUNTDOWN,EM_SETLIMITTEXT,(WPARAM)10,0); SendDlgItemMessage(hwndDlg,IDC_SPIN_COUNTDOWN,UDM_SETPOS,0,MAKELPARAM(setting,0)); @@ -118,19 +118,19 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR SendMessage(hwndCombo,CB_INITSTORAGE,SIZEOF(unitNames),SIZEOF(unitNames)*16); /* approx. */ for(int i=0;i100) val=100; + if (val<1) val=1; + else if (val>100) val=100; SendDlgItemMessage(hwndDlg,IDC_SPIN_CPUUSAGE,UDM_SETPOS,0,MAKELPARAM(val,0)); SetDlgItemInt(hwndDlg,IDC_EDIT_CPUUSAGE,val,FALSE); return TRUE; @@ -337,7 +337,7 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR } case IDC_COMBO_SHUTDOWNTYPE: - if(HIWORD(wParam)==CBN_SELCHANGE) + if (HIWORD(wParam)==CBN_SELCHANGE) SendMessage(hwndDlg,M_UPDATE_SHUTDOWNDESC,0,lParam); return TRUE; @@ -348,7 +348,7 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR HWND hwndEdit=GetDlgItem(hwndDlg,IDC_EDIT_MESSAGE); int len=GetWindowTextLength(hwndEdit)+1; TCHAR *pszText=(TCHAR*)mir_alloc(len*sizeof(TCHAR)); - if(pszText!=NULL && GetWindowText(hwndEdit,pszText,len+1)) { + if (pszText != NULL && GetWindowText(hwndEdit,pszText,len+1)) { TrimString(pszText); db_set_ts(NULL,"AutoShutdown","Message",pszText); } @@ -359,28 +359,28 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR SYSTEMTIME st; time_t timestamp; DateTime_GetSystemtime(GetDlgItem(hwndDlg,IDC_TIME_TIMESTAMP),&st); /* time gets synchronized */ - if(!SystemTimeToTimeStamp(&st,×tamp)) + if (!SystemTimeToTimeStamp(&st,×tamp)) timestamp=time(NULL); db_set_dw(NULL,"AutoShutdown","TimeStamp",(DWORD)timestamp); } /* shutdown type */ { int index = SendDlgItemMessage(hwndDlg,IDC_COMBO_SHUTDOWNTYPE,CB_GETCURSEL,0,0); - if(index!=LB_ERR) db_set_b(NULL,"AutoShutdown","ShutdownType",(BYTE)SendDlgItemMessage(hwndDlg,IDC_COMBO_SHUTDOWNTYPE,CB_GETITEMDATA,(WPARAM)index,0)); + if (index != LB_ERR) db_set_b(NULL,"AutoShutdown","ShutdownType",(BYTE)SendDlgItemMessage(hwndDlg,IDC_COMBO_SHUTDOWNTYPE,CB_GETITEMDATA,(WPARAM)index,0)); index=SendDlgItemMessage(hwndDlg,IDC_COMBO_COUNTDOWNUNIT,CB_GETCURSEL,0,0); - if(index!=LB_ERR) db_set_dw(NULL,"AutoShutdown","CountdownUnit",(DWORD)SendDlgItemMessage(hwndDlg,IDC_COMBO_COUNTDOWNUNIT,CB_GETITEMDATA,(WPARAM)index,0)); + if (index != LB_ERR) db_set_dw(NULL,"AutoShutdown","CountdownUnit",(DWORD)SendDlgItemMessage(hwndDlg,IDC_COMBO_COUNTDOWNUNIT,CB_GETITEMDATA,(WPARAM)index,0)); db_set_dw(NULL,"AutoShutdown","Countdown",(DWORD)GetDlgItemInt(hwndDlg,IDC_EDIT_COUNTDOWN,NULL,FALSE)); db_set_b(NULL,"AutoShutdown","CpuUsageThreshold",(BYTE)GetDlgItemInt(hwndDlg,IDC_EDIT_CPUUSAGE,NULL,FALSE)); } /* watcher type */ { WORD watcherType = (WORD)(IsDlgButtonChecked(hwndDlg,IDC_RADIO_STTIME)?SDWTF_ST_TIME:SDWTF_ST_COUNTDOWN); - if(IsDlgButtonChecked(hwndDlg,IDC_CHECK_SPECIFICTIME)) watcherType|=SDWTF_SPECIFICTIME; - if(IsDlgButtonChecked(hwndDlg,IDC_CHECK_MESSAGE)) watcherType|=SDWTF_MESSAGE; - if(IsDlgButtonChecked(hwndDlg,IDC_CHECK_FILETRANSFER)) watcherType|=SDWTF_FILETRANSFER; - if(IsDlgButtonChecked(hwndDlg,IDC_CHECK_IDLE)) watcherType|=SDWTF_IDLE; - if(IsDlgButtonChecked(hwndDlg,IDC_CHECK_STATUS)) watcherType|=SDWTF_STATUS; - if(IsDlgButtonChecked(hwndDlg,IDC_CHECK_CPUUSAGE)) watcherType|=SDWTF_CPUUSAGE; + if (IsDlgButtonChecked(hwndDlg,IDC_CHECK_SPECIFICTIME)) watcherType|=SDWTF_SPECIFICTIME; + if (IsDlgButtonChecked(hwndDlg,IDC_CHECK_MESSAGE)) watcherType|=SDWTF_MESSAGE; + if (IsDlgButtonChecked(hwndDlg,IDC_CHECK_FILETRANSFER)) watcherType|=SDWTF_FILETRANSFER; + if (IsDlgButtonChecked(hwndDlg,IDC_CHECK_IDLE)) watcherType|=SDWTF_IDLE; + if (IsDlgButtonChecked(hwndDlg,IDC_CHECK_STATUS)) watcherType|=SDWTF_STATUS; + if (IsDlgButtonChecked(hwndDlg,IDC_CHECK_CPUUSAGE)) watcherType|=SDWTF_CPUUSAGE; db_set_w(NULL,"AutoShutdown","WatcherFlags",watcherType); ServiceStartWatcher(0,watcherType); } @@ -403,7 +403,7 @@ static INT_PTR CALLBACK SettingsDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR static INT_PTR ServiceShowSettingsDialog(WPARAM wParam,LPARAM lParam) { - if(hwndSettingsDlg!=NULL) { /* already opened, bring to front */ + if (hwndSettingsDlg != NULL) { /* already opened, bring to front */ SetForegroundWindow(hwndSettingsDlg); return 0; } @@ -430,7 +430,7 @@ int ToolbarLoaded(WPARAM,LPARAM) void SetShutdownToolbarButton(bool fActive) { - if(hToolbarButton) + if (hToolbarButton) CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)hToolbarButton,fActive?TTBST_PUSHED:TTBST_RELEASED); } @@ -443,7 +443,7 @@ void SetShutdownMenuItem(bool fActive) /* main menu */ CLISTMENUITEM mi = { sizeof(mi) }; mi.position = 2001090000; - if(fActive) + if (fActive) { mi.icolibItem = iconList[1].hIcolib; mi.ptszName = LPGENT("Stop automatic &shutdown"); @@ -463,7 +463,7 @@ void SetShutdownMenuItem(bool fActive) /* tray menu */ mi.position = 899999; - if(hTrayMenuItem != NULL) { + if (hTrayMenuItem != NULL) { mi.flags |= CMIM_NAME | CMIM_ICON; Menu_ModifyItem(hTrayMenuItem, &mi); } @@ -473,7 +473,7 @@ void SetShutdownMenuItem(bool fActive) static INT_PTR MenuItemCommand(WPARAM,LPARAM) { /* toggle between StopWatcher and ShowSettingsDdialog */ - if(ServiceIsWatcherEnabled(0,0)) + if (ServiceIsWatcherEnabled(0,0)) ServiceStopWatcher(0,0); else ServiceShowSettingsDialog(0,0); diff --git a/plugins/AutoShutdown/src/shutdownsvc.cpp b/plugins/AutoShutdown/src/shutdownsvc.cpp index c3f0a740ee..fb351ebef5 100644 --- a/plugins/AutoShutdown/src/shutdownsvc.cpp +++ b/plugins/AutoShutdown/src/shutdownsvc.cpp @@ -24,22 +24,23 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /* Shutdown Dialog */ static HWND hwndShutdownDlg; extern HINSTANCE hInst; -/* Services */ + +/* Events */ static HANDLE hEventOkToShutdown,hEventShutdown; -static HANDLE hServiceShutdown,hServiceIsTypeEnabled,hServiceGetTypeDesc; /************************* Utils **************************************/ -TCHAR *desc[]={LPGENT("Miranda NG is going to be automatically closed in %u second(s)."), - LPGENT("All Miranda NG protocols are going to be set to offline in %u second(s)."), - LPGENT("You will be logged off automatically in %u second(s)."), - LPGENT("The computer will automatically be restarted in %u second(s)."), - LPGENT("The computer will automatically be set to standby mode in %u second(s)."), - LPGENT("The computer will automatically be set to hibernate mode in %u second(s)."), - LPGENT("The workstation will automatically get locked in %u second(s)."), - LPGENT("All dialup connections will be closed in %u second(s)."), - LPGENT("The computer will automatically be shut down in %u second(s).")}; - +TCHAR *desc[] = { + LPGENT("Miranda NG is going to be automatically closed in %u second(s)."), + LPGENT("All Miranda NG protocols are going to be set to offline in %u second(s)."), + LPGENT("You will be logged off automatically in %u second(s)."), + LPGENT("The computer will automatically be restarted in %u second(s)."), + LPGENT("The computer will automatically be set to standby mode in %u second(s)."), + LPGENT("The computer will automatically be set to hibernate mode in %u second(s)."), + LPGENT("The workstation will automatically get locked in %u second(s)."), + LPGENT("All dialup connections will be closed in %u second(s)."), + LPGENT("The computer will automatically be shut down in %u second(s).") +}; static BOOL WinNT_SetPrivilege(TCHAR *pszPrivName,BOOL bEnable) { @@ -47,10 +48,10 @@ static BOOL WinNT_SetPrivilege(TCHAR *pszPrivName,BOOL bEnable) HANDLE hToken; TOKEN_PRIVILEGES tkp; /* get a token for this process */ - if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) { + if (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) { tkp.PrivilegeCount=1; /* one privilege is to set */ /* get the LUID for the shutdown privilege */ - if(LookupPrivilegeValue(NULL,pszPrivName,&tkp.Privileges[0].Luid)) { + if (LookupPrivilegeValue(NULL,pszPrivName,&tkp.Privileges[0].Luid)) { tkp.Privileges[0].Attributes=bEnable?SE_PRIVILEGE_ENABLED:0; /* get the shutdown privilege for this process */ bReturn=AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); @@ -65,19 +66,6 @@ static void BroadcastEndSession(DWORD dwRecipients,LPARAM lParam) BroadcastSystemMessage(BSF_FORCEIFHUNG,&dwRecipients,WM_ENDSESSION,TRUE,lParam); } -static BOOL WinNT_IsWorkStationLocked(void) -{ - HDESK hDesk; - TCHAR szName[8]; - DWORD cbName; - BOOL bLocked; - hDesk=OpenInputDesktop(0,FALSE,DESKTOP_READOBJECTS); - if(hDesk==NULL) return TRUE; - bLocked=(!GetUserObjectInformation(hDesk,UOI_NAME,szName,SIZEOF(szName),&cbName) || lstrcmpi(szName,_T("default"))!=0); - CloseDesktop(hDesk); - return bLocked; -} - /************************* Workers ************************************/ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) { @@ -86,17 +74,17 @@ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) case SDSDT_HIBERNATE: case SDSDT_STANDBY: { HMODULE hPowerDLL=LoadLibraryA("POWRPROF"); /* all ascii */ - if(hPowerDLL!=NULL) { + if (hPowerDLL != NULL) { BOOLEAN (STDAPICALLTYPE *pfnIsPwrModeAllowed)(void); *(PROC*)&pfnIsPwrModeAllowed=GetProcAddress(hPowerDLL,(shutdownType==SDSDT_HIBERNATE)?"IsPwrHibernateAllowed":"IsPwrSuspendAllowed"); - if(pfnIsPwrModeAllowed) bReturn=pfnIsPwrModeAllowed()!=0; + if (pfnIsPwrModeAllowed) bReturn=pfnIsPwrModeAllowed() != 0; FreeLibrary(hPowerDLL); } } /* test privilege */ - if(bReturn) { + if (bReturn) { bReturn=WinNT_SetPrivilege(SE_SHUTDOWN_NAME,TRUE); - if(bReturn) WinNT_SetPrivilege(SE_SHUTDOWN_NAME,FALSE); + if (bReturn) WinNT_SetPrivilege(SE_SHUTDOWN_NAME,FALSE); } break; case SDSDT_LOGOFF: @@ -104,10 +92,10 @@ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) DWORD dwSetting,dwSize; /* NoLogOff is BINARY on Win9x/ME and DWORD on Win2000+ */ bReturn=TRUE; - if(RegOpenKeyEx(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"),0,KEY_QUERY_VALUE,&hKey)==ERROR_SUCCESS) { + if (RegOpenKeyEx(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"),0,KEY_QUERY_VALUE,&hKey)==ERROR_SUCCESS) { dwSize=sizeof(dwSetting); - if(RegQueryValueEx(hKey, _T("NoLogOff"), 0, NULL, (LPBYTE)&dwSetting, &dwSize) == ERROR_SUCCESS) - if(dwSetting) bReturn=FALSE; + if (RegQueryValueEx(hKey, _T("NoLogOff"), 0, NULL, (LPBYTE)&dwSetting, &dwSize) == ERROR_SUCCESS) + if (dwSetting) bReturn=FALSE; RegCloseKey(hKey); } } @@ -118,10 +106,10 @@ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) DWORD dwSize,dwSetting; /* DisableLockWorkstation is DWORD on Win2000+ */ bReturn=TRUE; - if(RegOpenKeyEx(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"),0,KEY_QUERY_VALUE,&hKey)==ERROR_SUCCESS) { + if (RegOpenKeyEx(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"),0,KEY_QUERY_VALUE,&hKey)==ERROR_SUCCESS) { dwSize=sizeof(dwSetting); - if(!RegQueryValueEx(hKey, _T("DisableLockWorkstation"), 0, NULL, (LPBYTE)&dwSetting, &dwSize)) - if(dwSetting) + if (!RegQueryValueEx(hKey, _T("DisableLockWorkstation"), 0, NULL, (LPBYTE)&dwSetting, &dwSize)) + if (dwSetting) bReturn=FALSE; RegCloseKey(hKey); } @@ -129,7 +117,7 @@ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) break; case SDSDT_CLOSERASCONNECTIONS: /* check if RAS installed/available */ - bReturn=SearchPath(NULL,_T("RASAPI32"),_T(".DLL"),0,NULL,NULL)!=0; + bReturn=SearchPath(NULL,_T("RASAPI32"),_T(".DLL"),0,NULL,NULL) != 0; break; case SDSDT_SETMIRANDAOFFLINE: case SDSDT_CLOSEMIRANDA: @@ -139,7 +127,7 @@ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) case SDSDT_SHUTDOWN: /* test privileges */ bReturn=WinNT_SetPrivilege(SE_SHUTDOWN_NAME,TRUE); - if(bReturn) + if (bReturn) WinNT_SetPrivilege(SE_SHUTDOWN_NAME,FALSE); break; } @@ -148,165 +136,179 @@ static BOOL IsShutdownTypeEnabled(BYTE shutdownType) static DWORD ShutdownNow(BYTE shutdownType) { - DWORD dwErrCode=ERROR_SUCCESS; + DWORD dwErrCode = ERROR_SUCCESS; switch(shutdownType) { - case SDSDT_CLOSEMIRANDA: - if(!Miranda_Terminated()) { - /* waiting for short until ready (but not too long...) */ - DWORD dwLastTickCount=GetTickCount(); - while(!CallService(MS_SYSTEM_OKTOEXIT,0,0)) { - /* infinite loop protection (max 5 sec) */ - if(GetTickCount()-dwLastTickCount>=5000) { /* wraparound works */ - OutputDebugStringA("Timeout (5 sec)\n"); /* tell others, all ascii */ - break; - } - SleepEx(1000,TRUE); - if(Miranda_Terminated()) break; /* someone else did it */ - OutputDebugStringA("Not ready to exit. Waiting...\n"); /* tell others, all ascii */ + case SDSDT_CLOSEMIRANDA: + if (!Miranda_Terminated()) { + /* waiting for short until ready (but not too long...) */ + DWORD dwLastTickCount=GetTickCount(); + while(!CallService(MS_SYSTEM_OKTOEXIT,0,0)) { + /* infinite loop protection (max 5 sec) */ + if (GetTickCount()-dwLastTickCount>=5000) { /* wraparound works */ + OutputDebugStringA("Timeout (5 sec)\n"); /* tell others, all ascii */ + break; } - /* shutdown service must be called from main thread anyway */ - if(!DestroyWindow((HWND)CallService(MS_CLUI_GETHWND,0,0))) - dwErrCode=GetLastError(); + SleepEx(1000,TRUE); + if (Miranda_Terminated()) break; /* someone else did it */ + OutputDebugStringA("Not ready to exit. Waiting...\n"); /* tell others, all ascii */ } - break; - case SDSDT_SETMIRANDAOFFLINE: - /* set global status mode to offline (is remembered by Miranda on exit) */ - CallService(MS_CLIST_SETSTATUSMODE,(WPARAM)ID_STATUS_OFFLINE,0); - break; - case SDSDT_STANDBY: - case SDSDT_HIBERNATE: - WinNT_SetPrivilege(SE_SHUTDOWN_NAME,TRUE); - if(!SetSystemPowerState(shutdownType==SDSDT_STANDBY,TRUE)) + /* shutdown service must be called from main thread anyway */ + if (!DestroyWindow((HWND)CallService(MS_CLUI_GETHWND,0,0))) dwErrCode=GetLastError(); - WinNT_SetPrivilege(SE_SHUTDOWN_NAME,FALSE); - break; - case SDSDT_LOCKWORKSTATION: - { - if(!WinNT_IsWorkStationLocked()) - dwErrCode=GetLastError(); - } - break; - case SDSDT_CLOSERASCONNECTIONS: - ShutdownNow(SDSDT_SETMIRANDAOFFLINE); /* set Miranda offline */ - /* hang up all ras connections */ - { HMODULE hRasApiDLL=LoadLibrary(_T("RASAPI32")); /* all ascii */ - if(hRasApiDLL!=NULL) { - DWORD (APIENTRY *pfnRasEnumConnections)(RASCONN*,DWORD*,DWORD*); - DWORD (APIENTRY *pfnRasHangUp)(HRASCONN); - DWORD (APIENTRY *pfnRasGetConnectStatus)(HRASCONN,RASCONNSTATUS*); - *(PROC*)&pfnRasEnumConnections=GetProcAddress(hRasApiDLL,"RasEnumConnectionsW"); - *(PROC*)&pfnRasHangUp=GetProcAddress(hRasApiDLL,"RasHangUpW"); - *(PROC*)&pfnRasGetConnectStatus=GetProcAddress(hRasApiDLL,"RasGetConnectStatusW"); - if(pfnRasEnumConnections && pfnRasGetConnectStatus && pfnRasHangUp) { - RASCONN *paConn; - RASCONN *paConnBuf; - DWORD dwConnSize,dwConnItems,dwRetries; - RASCONNSTATUS rcs; - DWORD dw,dwLastTickCount; - - dwConnSize=sizeof(RASCONN); - dwConnItems=0; - paConn=(RASCONN*)mir_alloc(dwConnSize); - dwErrCode=ERROR_NOT_ENOUGH_MEMORY; - if(paConn!=NULL) - for(dwRetries=5;dwRetries!=0;dwRetries--) { /* prevent infinite loop (rare) */ - ZeroMemory(paConn,dwConnSize); - paConn[0].dwSize=sizeof(RASCONN); - dwErrCode=pfnRasEnumConnections(paConn,&dwConnSize,&dwConnItems); - if(dwErrCode!=ERROR_BUFFER_TOO_SMALL) break; - paConnBuf=(RASCONN*)mir_realloc(paConn,dwConnSize); - if(paConnBuf!=NULL) { - mir_free(paConn); - paConn=NULL; - dwErrCode=ERROR_NOT_ENOUGH_MEMORY; - break; - } - paConn=paConnBuf; + } + break; + + case SDSDT_SETMIRANDAOFFLINE: + /* set global status mode to offline (is remembered by Miranda on exit) */ + CallService(MS_CLIST_SETSTATUSMODE,(WPARAM)ID_STATUS_OFFLINE,0); + break; + + case SDSDT_STANDBY: + case SDSDT_HIBERNATE: + WinNT_SetPrivilege(SE_SHUTDOWN_NAME,TRUE); + if (!SetSystemPowerState(shutdownType == SDSDT_STANDBY, TRUE)) + dwErrCode = GetLastError(); + WinNT_SetPrivilege(SE_SHUTDOWN_NAME,FALSE); + break; + + case SDSDT_LOCKWORKSTATION: + if ( !IsWorkstationLocked()) + dwErrCode = GetLastError(); + break; + + case SDSDT_CLOSERASCONNECTIONS: + ShutdownNow(SDSDT_SETMIRANDAOFFLINE); /* set Miranda offline */ + /* hang up all ras connections */ + { + HMODULE hRasApiDLL=LoadLibrary(_T("RASAPI32")); /* all ascii */ + if (hRasApiDLL != NULL) { + DWORD (APIENTRY *pfnRasEnumConnections)(RASCONN*,DWORD*,DWORD*); + DWORD (APIENTRY *pfnRasHangUp)(HRASCONN); + DWORD (APIENTRY *pfnRasGetConnectStatus)(HRASCONN,RASCONNSTATUS*); + *(PROC*)&pfnRasEnumConnections=GetProcAddress(hRasApiDLL,"RasEnumConnectionsW"); + *(PROC*)&pfnRasHangUp=GetProcAddress(hRasApiDLL,"RasHangUpW"); + *(PROC*)&pfnRasGetConnectStatus=GetProcAddress(hRasApiDLL,"RasGetConnectStatusW"); + if (pfnRasEnumConnections && pfnRasGetConnectStatus && pfnRasHangUp) { + RASCONN *paConn; + RASCONN *paConnBuf; + DWORD dwConnSize,dwConnItems,dwRetries; + RASCONNSTATUS rcs; + DWORD dw,dwLastTickCount; + + dwConnSize=sizeof(RASCONN); + dwConnItems=0; + paConn=(RASCONN*)mir_alloc(dwConnSize); + dwErrCode=ERROR_NOT_ENOUGH_MEMORY; + if (paConn != NULL) { + for(dwRetries=5; dwRetries != 0; dwRetries--) { /* prevent infinite loop (rare) */ + ZeroMemory(paConn, dwConnSize); + paConn[0].dwSize = sizeof(RASCONN); + dwErrCode = pfnRasEnumConnections(paConn,&dwConnSize,&dwConnItems); + if (dwErrCode != ERROR_BUFFER_TOO_SMALL) break; + paConnBuf=(RASCONN*)mir_realloc(paConn,dwConnSize); + if (paConnBuf != NULL) { + mir_free(paConn); + paConn = NULL; + dwErrCode = ERROR_NOT_ENOUGH_MEMORY; + break; } - if(dwErrCode==ERROR_SUCCESS || dwErrCode==ERROR_BUFFER_TOO_SMALL) { + paConn=paConnBuf; + } + if (dwErrCode==ERROR_SUCCESS || dwErrCode==ERROR_BUFFER_TOO_SMALL) { for(dw=0;dw3000) break; /* wraparound works */ + dwRetries = GetTickCount(); + if (dwRetries - dwLastTickCount>3000) + break; /* wraparound works */ } + } + } } mir_free(paConn); /* does NULL check */ - } else dwErrCode=GetLastError(); - FreeLibrary(hRasApiDLL); - } else dwErrCode=GetLastError(); + } + } + else dwErrCode = GetLastError(); + FreeLibrary(hRasApiDLL); } - /* set Miranda to offline again, to remain offline with reconnection plugins */ - ShutdownNow(SDSDT_SETMIRANDAOFFLINE); + else dwErrCode = GetLastError(); + } + /* set Miranda to offline again, to remain offline with reconnection plugins */ + ShutdownNow(SDSDT_SETMIRANDAOFFLINE); + break; + + case SDSDT_REBOOT: + case SDSDT_SHUTDOWN: + if (GetSystemMetrics(SM_SHUTTINGDOWN)) { /* Win2000+, 0 on error */ + dwErrCode=ERROR_SHUTDOWN_IN_PROGRESS; break; - case SDSDT_REBOOT: - case SDSDT_SHUTDOWN: - if(GetSystemMetrics(SM_SHUTTINGDOWN)) { /* Win2000+, 0 on error */ - dwErrCode=ERROR_SHUTDOWN_IN_PROGRESS; - break; - } - /* WinNT4/2000/XP */ - { - WinNT_SetPrivilege(SE_SHUTDOWN_NAME,TRUE); + } + /* WinNT4/2000/XP */ + { + WinNT_SetPrivilege(SE_SHUTDOWN_NAME,TRUE); - /* does not send out WM_ENDSESSION messages, so we do it manually to - * give the applications the chance to save their data */ - WinNT_SetPrivilege(SE_TCB_NAME,TRUE); /* for BSM_ALLDESKTOPS */ - BroadcastEndSession(BSM_APPLICATIONS|BSM_ALLDESKTOPS,ENDSESSION_CLOSEAPP); /* app should close itself */ - WinNT_SetPrivilege(SE_TCB_NAME,FALSE); + /* does not send out WM_ENDSESSION messages, so we do it manually to + * give the applications the chance to save their data */ + WinNT_SetPrivilege(SE_TCB_NAME,TRUE); /* for BSM_ALLDESKTOPS */ + BroadcastEndSession(BSM_APPLICATIONS|BSM_ALLDESKTOPS,ENDSESSION_CLOSEAPP); /* app should close itself */ + WinNT_SetPrivilege(SE_TCB_NAME,FALSE); - if(!InitiateSystemShutdownEx(NULL,TranslateT("AutoShutdown"),0,TRUE,shutdownType==SDSDT_REBOOT,SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER|SHTDN_REASON_FLAG_PLANNED)) - dwErrCode=GetLastError(); + if (!InitiateSystemShutdownEx(NULL,TranslateT("AutoShutdown"),0,TRUE,shutdownType==SDSDT_REBOOT,SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER|SHTDN_REASON_FLAG_PLANNED)) + dwErrCode=GetLastError(); - /* cleanly close Miranda */ - if(!dwErrCode) ShutdownNow(SDSDT_CLOSEMIRANDA); - break; + /* cleanly close Miranda */ + if (!dwErrCode) ShutdownNow(SDSDT_CLOSEMIRANDA); + break; + } + /* fall through for Win9x */ + case SDSDT_LOGOFF: + { + UINT flags; + switch(shutdownType) { + case SDSDT_LOGOFF: flags=EWX_LOGOFF; break; + case SDSDT_REBOOT: flags=EWX_REBOOT; break; + default: flags=EWX_SHUTDOWN|EWX_POWEROFF; } - /* fall through for Win9x */ - case SDSDT_LOGOFF: - { UINT flags; - switch(shutdownType) { - case SDSDT_LOGOFF: flags=EWX_LOGOFF; break; - case SDSDT_REBOOT: flags=EWX_REBOOT; break; - default: flags=EWX_SHUTDOWN|EWX_POWEROFF; - } - if(shutdownType==SDSDT_LOGOFF && !WinNT_IsWorkStationLocked()) - flags|=EWX_FORCEIFHUNG; /* only considered for WM_ENDSESSION messages */ - else flags|=EWX_FORCE; /* must be used when workstation locked */ - - if(flags&EWX_FORCE) { - /* EWX_FORCE does not send out WM_ENDSESSION messages, so we do it - * manually to give the applications the chance to save their data */ - BroadcastEndSession(BSM_APPLICATIONS,(shutdownType==SDSDT_LOGOFF)?ENDSESSION_LOGOFF:0); - - /* Windows Me/98/95 (msdn): Because of the design of the shell, - * calling ExitWindowsEx with EWX_FORCE fails to completely log off - * the user (the system terminates the applications and displays the - * Enter Windows Password dialog box, however, the user's desktop remains.) - * To log off the user forcibly, terminate the Explorer process before calling - * ExitWindowsEx with EWX_LOGOFF and EWX_FORCE. */ - } - if(!ExitWindowsEx(flags,SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER|SHTDN_REASON_FLAG_PLANNED)) - dwErrCode=GetLastError(); - /* cleanly close Miranda */ - if(!dwErrCode) ShutdownNow(SDSDT_CLOSEMIRANDA); + if (shutdownType == SDSDT_LOGOFF && !IsWorkstationLocked()) + flags |= EWX_FORCEIFHUNG; /* only considered for WM_ENDSESSION messages */ + else + flags|= EWX_FORCE; /* must be used when workstation locked */ + + if (flags & EWX_FORCE) { + /* EWX_FORCE does not send out WM_ENDSESSION messages, so we do it + * manually to give the applications the chance to save their data */ + BroadcastEndSession(BSM_APPLICATIONS,(shutdownType==SDSDT_LOGOFF)?ENDSESSION_LOGOFF:0); + + /* Windows Me/98/95 (msdn): Because of the design of the shell, + * calling ExitWindowsEx with EWX_FORCE fails to completely log off + * the user (the system terminates the applications and displays the + * Enter Windows Password dialog box, however, the user's desktop remains.) + * To log off the user forcibly, terminate the Explorer process before calling + * ExitWindowsEx with EWX_LOGOFF and EWX_FORCE. */ } - break; + if (!ExitWindowsEx(flags,SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER|SHTDN_REASON_FLAG_PLANNED)) + dwErrCode = GetLastError(); + /* cleanly close Miranda */ + if (!dwErrCode) + ShutdownNow(SDSDT_CLOSEMIRANDA); + } + break; } return dwErrCode; } @@ -321,40 +323,43 @@ static INT_PTR CALLBACK ShutdownDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR WORD countdown=(WORD)GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA); switch(msg) { - case WM_INITDIALOG: - hwndShutdownDlg=hwndDlg; - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)lParam); - TranslateDialogDefault(hwndDlg); - - if(lParam==SDSDT_SHUTDOWN || lParam==SDSDT_REBOOT || lParam==SDSDT_LOGOFF) - ShowWindow(GetDlgItem(hwndDlg,IDC_TEXT_UNSAVEDWARNING),SW_SHOW); - SendDlgItemMessage(hwndDlg,IDC_ICON_HEADER,STM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon("AutoShutdown_Header")); - { HFONT hBoldFont; - LOGFONT lf; - if(GetObject((HFONT)SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_GETFONT,0,0),sizeof(lf),&lf)) { - lf.lfWeight=FW_BOLD; - hBoldFont=CreateFontIndirect(&lf); - } - else hBoldFont=NULL; - SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_SETFONT,(WPARAM)hBoldFont,FALSE); - SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, (LONG)hBoldFont); - } - { WORD countdown=db_get_w(NULL,"AutoShutdown","ConfirmDlgCountdown",SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT); - if(countdown<3) countdown=SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT; - SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, countdown); - SendMessage(hwndDlg,M_UPDATE_COUNTDOWN,0,countdown); + case WM_INITDIALOG: + hwndShutdownDlg=hwndDlg; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)lParam); + TranslateDialogDefault(hwndDlg); + + if (lParam==SDSDT_SHUTDOWN || lParam==SDSDT_REBOOT || lParam==SDSDT_LOGOFF) + ShowWindow(GetDlgItem(hwndDlg,IDC_TEXT_UNSAVEDWARNING),SW_SHOW); + SendDlgItemMessage(hwndDlg,IDC_ICON_HEADER,STM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon("AutoShutdown_Header")); + { + HFONT hBoldFont; + LOGFONT lf; + if (GetObject((HFONT)SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_GETFONT,0,0),sizeof(lf),&lf)) { + lf.lfWeight=FW_BOLD; + hBoldFont=CreateFontIndirect(&lf); } - SkinPlaySound("AutoShutdown_Countdown"); - if(!SetTimer(hwndDlg,1,1000,NULL)) PostMessage(hwndDlg,M_START_SHUTDOWN,0,0); - Utils_RestoreWindowPositionNoSize(hwndDlg,NULL,"AutoShutdown","ConfirmDlg_"); + else hBoldFont=NULL; + SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_SETFONT,(WPARAM)hBoldFont,FALSE); + SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, (LONG)hBoldFont); + } + { + WORD countdown=db_get_w(NULL,"AutoShutdown","ConfirmDlgCountdown",SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT); + if (countdown<3) countdown=SETTING_CONFIRMDLGCOUNTDOWN_DEFAULT; + SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, countdown); + SendMessage(hwndDlg,M_UPDATE_COUNTDOWN,0,countdown); + } + SkinPlaySound("AutoShutdown_Countdown"); + if (!SetTimer(hwndDlg,1,1000,NULL)) PostMessage(hwndDlg,M_START_SHUTDOWN,0,0); + Utils_RestoreWindowPositionNoSize(hwndDlg,NULL,"AutoShutdown","ConfirmDlg_"); + + /* disallow foreground window changes (WinMe/2000+) */ + SetForegroundWindow(hwndDlg); + LockSetForegroundWindow(LSFW_LOCK); - /* disallow foreground window changes (WinMe/2000+) */ - SetForegroundWindow(hwndDlg); - LockSetForegroundWindow(LSFW_LOCK); + SendMessage(hwndDlg,WM_NEXTDLGCTL,(WPARAM)GetDlgItem(hwndDlg,IDCANCEL),TRUE); + return FALSE; /* focus set on cancel */ - SendMessage(hwndDlg,WM_NEXTDLGCTL,(WPARAM)GetDlgItem(hwndDlg,IDCANCEL),TRUE); - return FALSE; /* focus set on cancel */ - case WM_DESTROY: + case WM_DESTROY: { hwndShutdownDlg=NULL; ShowWindow(hwndDlg,SW_HIDE); @@ -364,61 +369,66 @@ static INT_PTR CALLBACK ShutdownDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR HICON hIcon=(HICON)SendDlgItemMessage(hwndDlg,IDC_ICON_HEADER,STM_SETIMAGE,IMAGE_ICON,0); HFONT hFont=(HFONT)SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_GETFONT,0,0); SendDlgItemMessage(hwndDlg,IDC_TEXT_HEADER,WM_SETFONT,0,FALSE); /* no return value */ - if(hFont!=NULL) DeleteObject(hFont); - return TRUE; + if (hFont != NULL) DeleteObject(hFont); } - case M_START_SHUTDOWN: - if(IsWindowEnabled(GetDlgItem(hwndDlg,IDC_BUTTON_SHUTDOWNNOW))) { - DWORD dwErrCode; - EnableWindow(GetDlgItem(hwndDlg,IDC_BUTTON_SHUTDOWNNOW),FALSE); - ShowWindow(hwndDlg,SW_HIDE); /* get rid of the dialog immediately */ - dwErrCode=ShutdownNow(shutdownType); - if(dwErrCode!=ERROR_SUCCESS) { - char *pszErr; - pszErr=GetWinErrorDescription(dwErrCode); - ShowInfoMessage(NIIF_ERROR,Translate("Automatic Shutdown Error"),Translate("The shutdown process failed!\nReason: %s"),(pszErr!=NULL)?pszErr:Translate("Unknown")); - if(pszErr!=NULL) LocalFree(pszErr); - } - DestroyWindow(hwndDlg); - } - return TRUE; - case WM_TIMER: - if(countdown) { - --countdown; - SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, countdown); - if(countdown==27 || countdown==24 || countdown==21 || countdown==19 || - countdown==17 || countdown==15 || countdown==13 || countdown==11 || - countdown<=10) - SkinPlaySound("AutoShutdown_Countdown"); + return TRUE; + + case M_START_SHUTDOWN: + if (IsWindowEnabled(GetDlgItem(hwndDlg,IDC_BUTTON_SHUTDOWNNOW))) { + DWORD dwErrCode; + EnableWindow(GetDlgItem(hwndDlg,IDC_BUTTON_SHUTDOWNNOW),FALSE); + ShowWindow(hwndDlg,SW_HIDE); /* get rid of the dialog immediately */ + dwErrCode=ShutdownNow(shutdownType); + if (dwErrCode != ERROR_SUCCESS) { + char *pszErr; + pszErr=GetWinErrorDescription(dwErrCode); + ShowInfoMessage(NIIF_ERROR,Translate("Automatic Shutdown Error"),Translate("The shutdown process failed!\nReason: %s"),(pszErr != NULL)?pszErr:Translate("Unknown")); + if (pszErr != NULL) LocalFree(pszErr); } - else KillTimer(hwndDlg,wParam); /* countdown finished */ - PostMessage(hwndDlg,M_UPDATE_COUNTDOWN,0,countdown); - return TRUE; - case M_UPDATE_COUNTDOWN: /* lParam=(WORD)countdown */ + DestroyWindow(hwndDlg); + } + return TRUE; + + case WM_TIMER: + if (countdown) { + --countdown; + SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, countdown); + if (countdown==27 || countdown==24 || countdown==21 || countdown==19 || + countdown==17 || countdown==15 || countdown==13 || countdown==11 || + countdown<=10) + SkinPlaySound("AutoShutdown_Countdown"); + } + else KillTimer(hwndDlg,wParam); /* countdown finished */ + PostMessage(hwndDlg,M_UPDATE_COUNTDOWN,0,countdown); + return TRUE; + + case M_UPDATE_COUNTDOWN: /* lParam=(WORD)countdown */ { TCHAR szText[256]; mir_sntprintf(szText,SIZEOF(szText),TranslateTS(desc[shutdownType-1]),lParam); SetDlgItemText(hwndDlg,IDC_TEXT_HEADER,szText); /* countdown finished */ - if(!lParam) PostMessage(hwndDlg,M_START_SHUTDOWN,0,0); - return TRUE; + if (!lParam) + PostMessage(hwndDlg,M_START_SHUTDOWN,0,0); } - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDC_BUTTON_SHUTDOWNNOW: - KillTimer(hwndDlg,1); - SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, 0); - SendMessage(hwndDlg,M_UPDATE_COUNTDOWN,0,(LONG)0); - PostMessage(hwndDlg,M_START_SHUTDOWN,0,0); - return TRUE; - case IDCANCEL: /* WM_CLOSE */ - if(countdown) { - KillTimer(hwndDlg,1); - DestroyWindow(hwndDlg); - } - return TRUE; + return TRUE; + + case WM_COMMAND: + switch(LOWORD(wParam)) { + case IDC_BUTTON_SHUTDOWNNOW: + KillTimer(hwndDlg,1); + SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_TEXT_HEADER), GWLP_USERDATA, 0); + SendMessage(hwndDlg,M_UPDATE_COUNTDOWN,0,(LONG)0); + PostMessage(hwndDlg,M_START_SHUTDOWN,0,0); + return TRUE; + case IDCANCEL: /* WM_CLOSE */ + if (countdown) { + KillTimer(hwndDlg,1); + DestroyWindow(hwndDlg); } - break; + return TRUE; + } + break; } return FALSE; } @@ -428,32 +438,32 @@ static INT_PTR CALLBACK ShutdownDlgProc(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR INT_PTR ServiceShutdown(WPARAM wParam,LPARAM lParam) { /* passing 0 as wParam is only to be used internally, undocumented */ - if(!wParam) wParam=db_get_b(NULL,"AutoShutdown","ShutdownType",SETTING_SHUTDOWNTYPE_DEFAULT); - if(!IsShutdownTypeEnabled((BYTE)wParam)) return 1; /* does shutdownType range check */ - if((BOOL)lParam && hwndShutdownDlg!=NULL) return 2; + if (!wParam) wParam=db_get_b(NULL,"AutoShutdown","ShutdownType",SETTING_SHUTDOWNTYPE_DEFAULT); + if (!IsShutdownTypeEnabled((BYTE)wParam)) return 1; /* does shutdownType range check */ + if ((BOOL)lParam && hwndShutdownDlg != NULL) return 2; /* ask others if allowed */ - if(NotifyEventHooks(hEventOkToShutdown,wParam,lParam)) { + if (NotifyEventHooks(hEventOkToShutdown,wParam,lParam)) { OutputDebugStringA("automatic shutdown denied by event hook\n"); /* all ascii */ return 3; } /* tell others */ NotifyEventHooks(hEventShutdown,wParam,lParam); /* show dialog */ - if(lParam && db_get_b(NULL,"AutoShutdown","ShowConfirmDlg",SETTING_SHOWCONFIRMDLG_DEFAULT)) - if(CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_SHUTDOWNNOW), NULL, ShutdownDlgProc, (LPARAM)(BYTE)wParam) != NULL) + if (lParam && db_get_b(NULL,"AutoShutdown","ShowConfirmDlg",SETTING_SHOWCONFIRMDLG_DEFAULT)) + if (CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_SHUTDOWNNOW), NULL, ShutdownDlgProc, (LPARAM)(BYTE)wParam) != NULL) return 0; /* show error */ - { DWORD dwErrCode; - dwErrCode=ShutdownNow((BYTE)wParam); - if(dwErrCode!=ERROR_SUCCESS) { - char *pszErr; - pszErr=GetWinErrorDescription(dwErrCode); - ShowInfoMessage(NIIF_ERROR,Translate("Automatic Shutdown Error"),Translate("Inititiating the shutdown process failed!\nReason: %s"),(pszErr!=NULL)?pszErr:Translate("Unknown")); - if(pszErr!=NULL) LocalFree(pszErr); - return 4; - } + + DWORD dwErrCode = ShutdownNow((BYTE)wParam); + if (dwErrCode != ERROR_SUCCESS) { + char *pszErr = GetWinErrorDescription(dwErrCode); + ShowInfoMessage(NIIF_ERROR,Translate("Automatic Shutdown Error"),Translate("Inititiating the shutdown process failed!\nReason: %s"),(pszErr != NULL)?pszErr:Translate("Unknown")); + if (pszErr != NULL) + LocalFree(pszErr); + return 4; } + return 0; } @@ -462,33 +472,38 @@ INT_PTR ServiceIsTypeEnabled(WPARAM wParam,LPARAM) return IsShutdownTypeEnabled((BYTE)wParam); /* does shutdownType range check */ } +const TCHAR *apszShort[] = { + LPGENT("Close Miranda NG"),LPGENT("Set Miranda NG offline"),LPGENT("Log off user"), + LPGENT("Restart computer"),LPGENT("Shutdown computer"),LPGENT("Standby mode"),LPGENT("Hibernate mode"), + LPGENT("Lock workstation"),LPGENT("Hang up dialup connections"),LPGENT("Close Miranda NG"), + LPGENT("Set Miranda NG offline"),LPGENT("Log off user"),LPGENT("Restart computer"),LPGENT("Shutdown computer"), + LPGENT("Standby mode"),LPGENT("Hibernate mode"),LPGENT("Lock workstation"),LPGENT("Hang up dialup connections") +}; + +const TCHAR *apszLong[] = { + LPGENT("Sets all Miranda NG protocols to offline and closes Miranda NG."), + LPGENT("Sets all Miranda NG protocols to offline."), + LPGENT("Logs the current Windows user off so that another user can log in."), + LPGENT("Shuts down Windows and then restarts Windows."), + LPGENT("Closes all running programs and shuts down Windows to a point at which it is safe to turn off the power."), + LPGENT("Saves the current Windows session in memory and sets the system to suspend mode."), + LPGENT("Saves the current Windows session on harddisc, so that the power can be turned off."), + LPGENT("Locks the computer. To unlock the computer, you must log in."), + LPGENT("Sets all protocols to offline and closes all RAS connections.") +}; + INT_PTR ServiceGetTypeDescription(WPARAM wParam,LPARAM lParam) { - TCHAR *pszDesc; - const TCHAR *apszShort[]={LPGENT("Close Miranda NG"),LPGENT("Set Miranda NG offline"),LPGENT("Log off user"), - LPGENT("Restart computer"),LPGENT("Shutdown computer"),LPGENT("Standby mode"),LPGENT("Hibernate mode"), - LPGENT("Lock workstation"),LPGENT("Hang up dialup connections"),LPGENT("Close Miranda NG"), - LPGENT("Set Miranda NG offline"),LPGENT("Log off user"),LPGENT("Restart computer"),LPGENT("Shutdown computer"), - LPGENT("Standby mode"),LPGENT("Hibernate mode"),LPGENT("Lock workstation"),LPGENT("Hang up dialup connections")}; - const TCHAR *apszLong[]={LPGENT("Sets all Miranda NG protocols to offline and closes Miranda NG."), - LPGENT("Sets all Miranda NG protocols to offline."), - LPGENT("Logs the current Windows user off so that another user can log in."), - LPGENT("Shuts down Windows and then restarts Windows."), - LPGENT("Closes all running programs and shuts down Windows to a point at which it is safe to turn off the power."), - LPGENT("Saves the current Windows session in memory and sets the system to suspend mode."), - LPGENT("Saves the current Windows session on harddisc, so that the power can be turned off."), - LPGENT("Locks the computer. To unlock the computer, you must log in."), - LPGENT("Sets all protocols to offline and closes all RAS connections.")}; /* shutdownType range check */ - if(!wParam || (BYTE)wParam>SDSDT_MAX) return 0; + if (!wParam || (BYTE)wParam>SDSDT_MAX) return 0; /* select description */ - pszDesc=(TCHAR*)((lParam&GSTDF_LONGDESC)?apszLong:apszShort)[wParam-1]; - if(!(lParam&GSTDF_UNTRANSLATED)) pszDesc=TranslateTS(pszDesc); + TCHAR *pszDesc=(TCHAR*)((lParam&GSTDF_LONGDESC)?apszLong:apszShort)[wParam-1]; + if (!(lParam&GSTDF_UNTRANSLATED)) pszDesc=TranslateTS(pszDesc); /* convert as needed */ - if(!(lParam&GSTDF_UNICODE)) { + if (!(lParam&GSTDF_UNICODE)) { static char szConvBuf[128]; char *buf=u2a(pszDesc); - if(buf==NULL) return 0; + if (buf==NULL) return 0; lstrcpynA(szConvBuf,buf,sizeof(szConvBuf)); mir_free(buf); return (INT_PTR)szConvBuf; @@ -503,22 +518,24 @@ void InitShutdownSvc(void) /* Shutdown Dialog */ hwndShutdownDlg=NULL; SkinAddNewSoundExT("AutoShutdown_Countdown",LPGENT("Alerts"),LPGENT("Automatic Shutdown Countdown")); + + /* Events */ + hEventOkToShutdown = CreateHookableEvent(ME_AUTOSHUTDOWN_OKTOSHUTDOWN); + hEventShutdown = CreateHookableEvent(ME_AUTOSHUTDOWN_SHUTDOWN); + /* Services */ - hEventOkToShutdown=CreateHookableEvent(ME_AUTOSHUTDOWN_OKTOSHUTDOWN); - hEventShutdown=CreateHookableEvent(ME_AUTOSHUTDOWN_SHUTDOWN); - hServiceShutdown = CreateServiceFunction(MS_AUTOSHUTDOWN_SHUTDOWN, ServiceShutdown); - hServiceIsTypeEnabled = CreateServiceFunction(MS_AUTOSHUTDOWN_ISTYPEENABLED, ServiceIsTypeEnabled); - hServiceGetTypeDesc = CreateServiceFunction(MS_AUTOSHUTDOWN_GETTYPEDESCRIPTION, ServiceGetTypeDescription); + CreateServiceFunction(MS_AUTOSHUTDOWN_SHUTDOWN, ServiceShutdown); + CreateServiceFunction(MS_AUTOSHUTDOWN_ISTYPEENABLED, ServiceIsTypeEnabled); + CreateServiceFunction(MS_AUTOSHUTDOWN_GETTYPEDESCRIPTION, ServiceGetTypeDescription); } void UninitShutdownSvc(void) { /* Shutdown Dialog */ - if(hwndShutdownDlg!=NULL) DestroyWindow(hwndShutdownDlg); + if (hwndShutdownDlg != NULL) + DestroyWindow(hwndShutdownDlg); + /* Services */ - DestroyServiceFunction(hServiceShutdown); - DestroyServiceFunction(hServiceIsTypeEnabled); - DestroyServiceFunction(hServiceGetTypeDesc); DestroyHookableEvent(hEventOkToShutdown); DestroyHookableEvent(hEventShutdown); } diff --git a/plugins/AutoShutdown/src/utils.cpp b/plugins/AutoShutdown/src/utils.cpp index b510fbd17c..75c65dc345 100644 --- a/plugins/AutoShutdown/src/utils.cpp +++ b/plugins/AutoShutdown/src/utils.cpp @@ -30,15 +30,15 @@ char* u2a(const WCHAR *pszUnicode) char *psz; DWORD flags; - if(pszUnicode==NULL) return NULL; + if (pszUnicode==NULL) return NULL; codepage=CallService(MS_LANGPACK_GETCODEPAGE,0,0); /* without WC_COMPOSITECHECK some characters might get out strange (see MS blog) */ cch=WideCharToMultiByte(codepage,flags=WC_COMPOSITECHECK,pszUnicode,-1,NULL,0,NULL,NULL); - if(!cch) cch=WideCharToMultiByte(codepage,flags=0,pszUnicode,-1,NULL,0,NULL,NULL); - if(!cch) return NULL; + if (!cch) cch=WideCharToMultiByte(codepage,flags=0,pszUnicode,-1,NULL,0,NULL,NULL); + if (!cch) return NULL; psz=(char*)mir_alloc(cch); - if(psz!=NULL && !WideCharToMultiByte(codepage,flags,pszUnicode,-1,psz,cch,NULL,NULL)){ + if (psz != NULL && !WideCharToMultiByte(codepage,flags,pszUnicode,-1,psz,cch,NULL,NULL)){ mir_free(psz); return NULL; } @@ -83,7 +83,7 @@ void ShowInfoMessage(BYTE flags,const char *pszTitle,const char *pszTextFmt,...) mir_vsnprintf(szText,SIZEOF(szText),pszTextFmt,va); va_end(va); - if(ServiceExists(MS_CLIST_SYSTRAY_NOTIFY)) { + if (ServiceExists(MS_CLIST_SYSTRAY_NOTIFY)) { MIRANDASYSTRAYNOTIFY msn; msn.cbSize=sizeof(msn); msn.szProto=NULL; @@ -91,12 +91,12 @@ void ShowInfoMessage(BYTE flags,const char *pszTitle,const char *pszTextFmt,...) msn.szInfo=(char*)szText; msn.uTimeout=30000; /* max timeout */ msn.dwInfoFlags=flags; - if(!CallServiceSync(MS_CLIST_SYSTRAY_NOTIFY,0,(LPARAM)&msn)) + if (!CallServiceSync(MS_CLIST_SYSTRAY_NOTIFY,0,(LPARAM)&msn)) return; /* success */ } mbp=(MSGBOXPARAMSA*)mir_calloc(sizeof(*mbp)); - if(mbp==NULL) return; + if (mbp==NULL) return; mbp->cbSize=sizeof(*mbp); mbp->lpszCaption=mir_strdup(pszTitle); mbp->lpszText=mir_strdup(szText); @@ -115,8 +115,8 @@ char* GetWinErrorDescription(DWORD dwLastError) { char *buf=NULL; DWORD flags=FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM; - if(!FormatMessageA(flags,NULL,dwLastError,LANGIDFROMLCID((LCID)CallService(MS_LANGPACK_GETLOCALE,0,0)),(char*)&buf,0,NULL)) - if(GetLastError()==ERROR_RESOURCE_LANG_NOT_FOUND) + if (!FormatMessageA(flags,NULL,dwLastError,LANGIDFROMLCID((LCID)CallService(MS_LANGPACK_GETLOCALE,0,0)),(char*)&buf,0,NULL)) + if (GetLastError()==ERROR_RESOURCE_LANG_NOT_FOUND) FormatMessageA(flags,NULL,dwLastError,0,(char*)&buf,0,NULL); return buf; } @@ -136,7 +136,7 @@ BOOL SystemTimeToTimeStamp(SYSTEMTIME *st,time_t *timestamp) ts.tm_year = st->wYear-1900; /* current year minus 1900 */ ts.tm_yday=0; /* 0-365 (Jan1=0) */ *timestamp = mktime(&ts); - return (*timestamp!=-1); + return (*timestamp != -1); } BOOL TimeStampToSystemTime(time_t timestamp,SYSTEMTIME *st) @@ -162,22 +162,22 @@ BOOL GetFormatedCountdown(TCHAR *pszOut,int nSize,time_t countdown) static BOOL fInited=FALSE; static int (WINAPI *pfnGetDurationFormat)(LCID,DWORD,const SYSTEMTIME*,double,WCHAR*,WCHAR*,int); /* Init */ - if(!fInited && IsWinVerVistaPlus()) { + if (!fInited && IsWinVerVistaPlus()) { *(PROC*)&pfnGetDurationFormat=GetProcAddress(GetModuleHandleA("KERNEL32"),"GetDurationFormat"); fInited=TRUE; } /* WinVista */ - if(pfnGetDurationFormat!=NULL) { + if (pfnGetDurationFormat != NULL) { SYSTEMTIME st; LCID locale; locale=(LCID)CallService(MS_LANGPACK_GETLOCALE,0,0); - if(TimeStampToSystemTime(countdown,&st)) - if(pfnGetDurationFormat(locale,0,&st,0,NULL,pszOut,nSize)) + if (TimeStampToSystemTime(countdown,&st)) + if (pfnGetDurationFormat(locale,0,&st,0,NULL,pszOut,nSize)) return TRUE; return FALSE; } else /* Win9x/NT/XP */ - return StrFromTimeInterval(pszOut,nSize,(countdown>(MAXDWORD/1000))?MAXDWORD:(countdown*1000),10)!=0; + return StrFromTimeInterval(pszOut,nSize,(countdown>(MAXDWORD/1000))?MAXDWORD:(countdown*1000),10) != 0; return FALSE; } @@ -189,13 +189,13 @@ BOOL GetFormatedDateTime(TCHAR *pszOut,int nSize,time_t timestamp,BOOL fShowDate GetLocalTime(&stNow); TimeStampToSystemTime(timestamp,&st); /* today: no need to show the date */ - if(!fShowDateEvenToday && st.wDay==stNow.wDay && st.wMonth==stNow.wMonth && st.wYear==stNow.wYear) - return GetTimeFormat(locale,((st.wSecond==0)?TIME_NOSECONDS:0)|TIME_FORCE24HOURFORMAT,&st,NULL,pszOut,nSize)!=0; + if (!fShowDateEvenToday && st.wDay==stNow.wDay && st.wMonth==stNow.wMonth && st.wYear==stNow.wYear) + return GetTimeFormat(locale,((st.wSecond==0)?TIME_NOSECONDS:0)|TIME_FORCE24HOURFORMAT,&st,NULL,pszOut,nSize) != 0; /* show both date and time */ { TCHAR szDate[128],szTime[128]; - if(!GetTimeFormat(locale,((st.wSecond==0)?TIME_NOSECONDS:0)|TIME_FORCE24HOURFORMAT,&st,NULL,szTime,SIZEOF(szTime))) + if (!GetTimeFormat(locale,((st.wSecond==0)?TIME_NOSECONDS:0)|TIME_FORCE24HOURFORMAT,&st,NULL,szTime,SIZEOF(szTime))) return FALSE; - if(!GetDateFormat(locale,DATE_SHORTDATE,&st,NULL,szDate,SIZEOF(szDate))) + if (!GetDateFormat(locale,DATE_SHORTDATE,&st,NULL,szDate,SIZEOF(szDate))) return FALSE; mir_sntprintf(pszOut,nSize,_T("%s %s"),szTime,szDate); return TRUE; @@ -216,16 +216,16 @@ int FontService_RegisterFont(const char *pszDbModule,const char *pszDbName,const lstrcpyn(fid.backgroundGroup,pszBackgroundGroup,SIZEOF(fid.backgroundGroup)); /* buffer safe */ lstrcpyn(fid.backgroundName,pszBackgroundName,SIZEOF(fid.backgroundName)); /* buffer safe */ fid.flags=FIDF_ALLOWREREGISTER; - if(bAllowEffects) fid.flags|=FIDF_ALLOWEFFECTS; + if (bAllowEffects) fid.flags|=FIDF_ALLOWEFFECTS; fid.order=position; - if(plfDefault!=NULL) { + if (plfDefault != NULL) { fid.flags|=FIDF_DEFAULTVALID; fid.deffontsettings.colour=clrDefault; fid.deffontsettings.size=(char)plfDefault->lfHeight; - if(plfDefault->lfItalic) fid.deffontsettings.style|=DBFONTF_ITALIC; - if(plfDefault->lfWeight!=FW_NORMAL) fid.deffontsettings.style|=DBFONTF_BOLD; - if(plfDefault->lfUnderline) fid.deffontsettings.style|=DBFONTF_UNDERLINE; - if(plfDefault->lfStrikeOut) fid.deffontsettings.style|=DBFONTF_STRIKEOUT; + if (plfDefault->lfItalic) fid.deffontsettings.style|=DBFONTF_ITALIC; + if (plfDefault->lfWeight != FW_NORMAL) fid.deffontsettings.style|=DBFONTF_BOLD; + if (plfDefault->lfUnderline) fid.deffontsettings.style|=DBFONTF_UNDERLINE; + if (plfDefault->lfStrikeOut) fid.deffontsettings.style|=DBFONTF_STRIKEOUT; fid.deffontsettings.charset=plfDefault->lfCharSet; lstrcpyn(fid.deffontsettings.szFace,plfDefault->lfFaceName,SIZEOF(fid.deffontsettings.szFace)); /* buffer safe */ } diff --git a/plugins/AutoShutdown/src/watcher.cpp b/plugins/AutoShutdown/src/watcher.cpp index b4d9d89a05..71ea713e9a 100644 --- a/plugins/AutoShutdown/src/watcher.cpp +++ b/plugins/AutoShutdown/src/watcher.cpp @@ -48,16 +48,16 @@ static void __stdcall MainThreadMapping(void *param) HANDLE *phDoneEvent = (HANDLE*)param; ServiceShutdown(0,TRUE); /* ensure main thread (for cpu usage shutdown) */ ServiceStopWatcher(0,0); - if(*phDoneEvent!=NULL) SetEvent(*phDoneEvent); + if (*phDoneEvent != NULL) SetEvent(*phDoneEvent); } static void __inline ShutdownAndStopWatcher(void) { HANDLE hDoneEvent; hDoneEvent=CreateEvent(NULL,FALSE,FALSE,NULL); - if(CallFunctionAsync(MainThreadMapping, &hDoneEvent)) - if(hDoneEvent!=NULL) WaitForSingleObject(hDoneEvent,INFINITE); - if(hDoneEvent!=NULL) CloseHandle(hDoneEvent); + if (CallFunctionAsync(MainThreadMapping, &hDoneEvent)) + if (hDoneEvent != NULL) WaitForSingleObject(hDoneEvent,INFINITE); + if (hDoneEvent != NULL) CloseHandle(hDoneEvent); } /************************* Msg Shutdown *******************************/ @@ -65,28 +65,28 @@ static void __inline ShutdownAndStopWatcher(void) // ppBlob might get reallocated, must have been allocated using mir_alloc() static TCHAR* GetMessageText(BYTE **ppBlob,DWORD *pcbBlob) { - DWORD cb; (*ppBlob)[*pcbBlob]=0; - cb=lstrlenA((char*)*ppBlob); + DWORD cb = lstrlenA((char*)*ppBlob); /* use Unicode data if present */ - if(*pcbBlob>(cb+3)) { + if (*pcbBlob>(cb+3)) { (*ppBlob)[*pcbBlob-1]=0; return (WCHAR*)&(*ppBlob)[cb]; } /* no Unicode data present, convert from ANSI */ - { int len; - BYTE *buf; - len=MultiByteToWideChar(CP_ACP,0,(char*)*ppBlob,-1,NULL,0); - if(!len) return NULL; - buf=(BYTE*)mir_realloc(*ppBlob,(*pcbBlob)+(len*sizeof(WCHAR))); - if(buf==NULL) return NULL; - *pcbBlob+=len*sizeof(WCHAR); - *ppBlob=buf; - buf=&(*ppBlob)[cb]; - MultiByteToWideChar(CP_ACP,0,(char*)*ppBlob,-1,(WCHAR*)buf,len); - ((WCHAR*)buf)[len-1]=0; - return (WCHAR*)buf; - } + int len = MultiByteToWideChar(CP_ACP,0,(char*)*ppBlob,-1,NULL,0); + if (!len) + return NULL; + + BYTE *buf=(BYTE*)mir_realloc(*ppBlob,(*pcbBlob)+(len*sizeof(WCHAR))); + if (buf == NULL) + return NULL; + + *pcbBlob += len*sizeof(WCHAR); + *ppBlob = buf; + buf = &(*ppBlob)[cb]; + MultiByteToWideChar(CP_ACP,0,(char*)*ppBlob,-1,(WCHAR*)buf,len); + ((WCHAR*)buf)[len-1] = 0; + return (WCHAR*)buf; } static int MsgEventAdded(WPARAM wParam,LPARAM lParam) @@ -100,12 +100,12 @@ static int MsgEventAdded(WPARAM wParam,LPARAM lParam) if (dbe.pBlob == NULL) return 0; if (!db_event_get(hDbEvent, &dbe)) - if(dbe.eventType == EVENTTYPE_MESSAGE && !(dbe.flags & DBEF_SENT)) { + if (dbe.eventType == EVENTTYPE_MESSAGE && !(dbe.flags & DBEF_SENT)) { DBVARIANT dbv; - if(!db_get_ts(NULL,"AutoShutdown","Message",&dbv)) { + if (!db_get_ts(NULL,"AutoShutdown","Message",&dbv)) { TrimString(dbv.ptszVal); TCHAR *pszMsg = GetMessageText(&dbe.pBlob,&dbe.cbBlob); - if(pszMsg!=NULL && _tcsstr(pszMsg,dbv.ptszVal)!=NULL) + if (pszMsg != NULL && _tcsstr(pszMsg,dbv.ptszVal) != NULL) ShutdownAndStopWatcher(); /* msg with specified text recvd */ mir_free(dbv.ptszVal); /* does NULL check */ } @@ -123,44 +123,44 @@ static int nTransfersCount; static int ProtoAck(WPARAM wParam,LPARAM lParam) { ACKDATA *ack=(ACKDATA*)lParam; - if(ack->type==ACKTYPE_FILE) - switch(ack->result) { - case ACKRESULT_DATA: - { int i; - for(i=0;ihProcess) - break; /* already in list */ - /* insert into list */ - { HANDLE *buf=(HANDLE*)mir_realloc(transfers,(nTransfersCount+1)*sizeof(HANDLE)); if(buf!=NULL) { - transfers=buf; - transfers[nTransfersCount]=ack->hProcess; - ++nTransfersCount; - } - } - break; + if (ack->type != ACKTYPE_FILE) + return 0; + + switch(ack->result) { + case ACKRESULT_DATA: + { + for(int i=0; i < nTransfersCount; ++i) + if (transfers[i]==ack->hProcess) + break; /* already in list */ + /* insert into list */ + HANDLE *buf = (HANDLE*)mir_realloc(transfers,(nTransfersCount+1)*sizeof(HANDLE)); + if (buf != NULL) { + transfers = buf; + transfers[nTransfersCount] = ack->hProcess; + ++nTransfersCount; } - case ACKRESULT_SUCCESS: - case ACKRESULT_FAILED: - case ACKRESULT_DENIED: - { int i; - for(i=0;ihProcess) { - /* remove from list */ - HANDLE *buf; - if(i<(nTransfersCount-1)) - MoveMemory(&transfers[i],&transfers[i+1],(nTransfersCount-i-1)*sizeof(HANDLE)); - --nTransfersCount; - buf=(HANDLE*)mir_realloc(transfers,nTransfersCount*sizeof(HANDLE)); - if(buf!=NULL) transfers=buf; - else if(!nTransfersCount) transfers=NULL; - /* stop watcher */ - if(!nTransfersCount && (currentWatcherType&SDWTF_FILETRANSFER)) - ShutdownAndStopWatcher(); - break; - } + break; + } + case ACKRESULT_SUCCESS: + case ACKRESULT_FAILED: + case ACKRESULT_DENIED: + for(int i=0;ihProcess) { + /* remove from list */ + if (i<(nTransfersCount-1)) + MoveMemory(&transfers[i],&transfers[i+1],(nTransfersCount-i-1)*sizeof(HANDLE)); + --nTransfersCount; + HANDLE *buf = (HANDLE*)mir_realloc(transfers,nTransfersCount*sizeof(HANDLE)); + if (buf != NULL) transfers=buf; + else if (!nTransfersCount) transfers=NULL; + /* stop watcher */ + if (!nTransfersCount && (currentWatcherType&SDWTF_FILETRANSFER)) + ShutdownAndStopWatcher(); break; } } + break; + } return 0; } @@ -168,7 +168,7 @@ static int ProtoAck(WPARAM wParam,LPARAM lParam) static int IdleChanged(WPARAM,LPARAM lParam) { - if(currentWatcherType&SDWTF_IDLE && lParam&IDF_ISIDLE) + if (currentWatcherType&SDWTF_IDLE && lParam&IDF_ISIDLE) ShutdownAndStopWatcher(); return 0; } @@ -181,12 +181,12 @@ static BOOL CheckAllContactsOffline(void) fSmartCheck=db_get_b(NULL,"AutoShutdown","SmartOfflineCheck",SETTING_SMARTOFFLINECHECK_DEFAULT); for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { char *pszProto = GetContactProto(hContact); - if(pszProto != NULL && CallProtoService(pszProto,PS_GETSTATUS,0,0)!=ID_STATUS_OFFLINE) { - if(db_get_b(hContact,pszProto,"ChatRoom",0)) continue; - if(db_get_w(hContact,pszProto,"Status",0)!=ID_STATUS_OFFLINE) { - if(fSmartCheck) { - if(db_get_b(hContact,"CList","Hidden",0)) continue; - if(db_get_b(hContact,"CList","NotOnList",0)) continue; + if (pszProto != NULL && CallProtoService(pszProto,PS_GETSTATUS,0,0) != ID_STATUS_OFFLINE) { + if (db_get_b(hContact,pszProto,"ChatRoom",0)) continue; + if (db_get_w(hContact,pszProto,"Status",0) != ID_STATUS_OFFLINE) { + if (fSmartCheck) { + if (db_get_b(hContact,"CList","Hidden",0)) continue; + if (db_get_b(hContact,"CList","NotOnList",0)) continue; } fAllOffline=FALSE; break; @@ -198,12 +198,12 @@ static BOOL CheckAllContactsOffline(void) static int StatusSettingChanged(WPARAM wParam,LPARAM lParam) { - if(currentWatcherType&SDWTF_STATUS) { + if (currentWatcherType&SDWTF_STATUS) { DBCONTACTWRITESETTING *dbcws=(DBCONTACTWRITESETTING*)lParam; - if((HANDLE)wParam!=NULL && dbcws->value.wVal==ID_STATUS_OFFLINE && !lstrcmpA(dbcws->szSetting,"Status")) { + if ((HANDLE)wParam != NULL && dbcws->value.wVal==ID_STATUS_OFFLINE && !lstrcmpA(dbcws->szSetting,"Status")) { char *pszProto = GetContactProto((HANDLE)wParam); - if(pszProto!=NULL && !lstrcmpA(dbcws->szModule,pszProto)) - if(CheckAllContactsOffline()) + if (pszProto != NULL && !lstrcmpA(dbcws->szModule,pszProto)) + if (CheckAllContactsOffline()) ShutdownAndStopWatcher(); } } @@ -218,14 +218,14 @@ static BOOL CALLBACK CpuUsageWatcherProc(BYTE nCpuUsage,LPARAM lParam) { static BYTE nTimesBelow=0; /* only one watcher thread */ /* terminated? */ - if(idCpuUsageThread!=GetCurrentThreadId()) { + if (idCpuUsageThread != GetCurrentThreadId()) { nTimesBelow=0; return FALSE; /* stop poll thread */ } /* ignore random peaks */ - if(nCpuUsage<(BYTE)lParam) ++nTimesBelow; + if (nCpuUsage<(BYTE)lParam) ++nTimesBelow; else nTimesBelow=0; - if(nTimesBelow==3) { + if (nTimesBelow==3) { nTimesBelow=0; ShutdownAndStopWatcher(); return FALSE; /* stop poll thread */ @@ -238,8 +238,8 @@ static BOOL CALLBACK CpuUsageWatcherProc(BYTE nCpuUsage,LPARAM lParam) static int WeatherUpdated(WPARAM wParam,LPARAM lParam) { char *pszProto = GetContactProto((HANDLE)wParam); - if((BOOL)lParam && pszProto!=NULL && CallProtoService(pszProto,PS_GETSTATUS,0,0)==THUNDER) - if(db_get_b(NULL,"AutoShutdown","WeatherShutdown",SETTING_WEATHERSHUTDOWN_DEFAULT)) + if ((BOOL)lParam && pszProto != NULL && CallProtoService(pszProto,PS_GETSTATUS,0,0)==THUNDER) + if (db_get_b(NULL,"AutoShutdown","WeatherShutdown",SETTING_WEATHERSHUTDOWN_DEFAULT)) ServiceShutdown(SDSDT_SHUTDOWN,TRUE); return 0; } @@ -248,7 +248,7 @@ static int WeatherUpdated(WPARAM wParam,LPARAM lParam) static int HddOverheat(WPARAM wParam,LPARAM lParam) { - if(db_get_b(NULL,"AutoShutdown","HddOverheatShutdown",SETTING_HDDOVERHEATSHUTDOWN_DEFAULT)) + if (db_get_b(NULL,"AutoShutdown","HddOverheatShutdown",SETTING_HDDOVERHEATSHUTDOWN_DEFAULT)) ServiceShutdown(SDSDT_SHUTDOWN,TRUE); return 0; } @@ -258,21 +258,21 @@ static int HddOverheat(WPARAM wParam,LPARAM lParam) INT_PTR ServiceStartWatcher(WPARAM wParam,LPARAM lParam) { /* passing watcherType as lParam is only to be used internally, undocumented */ - if(lParam==0) + if (lParam==0) lParam=(LPARAM)db_get_w(NULL,"AutoShutdown","WatcherFlags",0); /* invalid flags or empty? */ - if(!(lParam&SDWTF_MASK)) + if (!(lParam&SDWTF_MASK)) return 1; /* no specific time choice? */ - if(lParam&SDWTF_SPECIFICTIME && !(lParam&SDWTF_ST_MASK)) + if (lParam&SDWTF_SPECIFICTIME && !(lParam&SDWTF_ST_MASK)) return 2; - if(currentWatcherType==(WORD)lParam) + if (currentWatcherType==(WORD)lParam) return 3; - if(currentWatcherType!=0) { + if (currentWatcherType != 0) { /* Time Shutdown */ CloseCountdownFrame(); /* fails if not opened */ /* Cpu Shutdown */ @@ -284,26 +284,26 @@ INT_PTR ServiceStartWatcher(WPARAM wParam,LPARAM lParam) NotifyEventHooks(hEventWatcherChanged,TRUE,0); /* Time Shutdown */ - if(currentWatcherType&SDWTF_SPECIFICTIME) + if (currentWatcherType&SDWTF_SPECIFICTIME) ShowCountdownFrame(currentWatcherType); /* after modules loaded */ /* Cpu Shutdown */ - if(currentWatcherType&SDWTF_CPUUSAGE) + if (currentWatcherType&SDWTF_CPUUSAGE) idCpuUsageThread=PollCpuUsage(CpuUsageWatcherProc,(LPARAM)DBGetContactSettingRangedByte(NULL,"AutoShutdown","CpuUsageThreshold",SETTING_CPUUSAGETHRESHOLD_DEFAULT,1,100),1500); /* Transfer Shutdown */ - if(currentWatcherType&SDWTF_FILETRANSFER && !nTransfersCount) + if (currentWatcherType&SDWTF_FILETRANSFER && !nTransfersCount) ShutdownAndStopWatcher(); /* Status Shutdown */ - if(currentWatcherType&SDWTF_STATUS && CheckAllContactsOffline()) + if (currentWatcherType&SDWTF_STATUS && CheckAllContactsOffline()) ShutdownAndStopWatcher(); return 0; } INT_PTR ServiceStopWatcher(WPARAM,LPARAM) { - if(currentWatcherType==0) return 1; + if (currentWatcherType==0) return 1; /* Time Shutdown */ - if(currentWatcherType&SDWTF_SPECIFICTIME) + if (currentWatcherType&SDWTF_SPECIFICTIME) CloseCountdownFrame(); /* Cpu Shutdown */ idCpuUsageThread=0; @@ -317,7 +317,7 @@ INT_PTR ServiceStopWatcher(WPARAM,LPARAM) INT_PTR ServiceIsWatcherEnabled(WPARAM,LPARAM) { - return currentWatcherType!=0; + return currentWatcherType != 0; } /************************* Misc ***********************************/ @@ -325,14 +325,14 @@ INT_PTR ServiceIsWatcherEnabled(WPARAM,LPARAM) void WatcherModulesLoaded(void) { /* Weather Shutdown */ - if(ServiceExists(MS_WEATHER_UPDATE)) + if (ServiceExists(MS_WEATHER_UPDATE)) hHookWeatherUpdated=HookEvent(ME_WEATHER_UPDATED,WeatherUpdated); /* Overheat Shutdown */ - if(ServiceExists(MS_SYSINFO_HDDTEMP)) + if (ServiceExists(MS_SYSINFO_HDDTEMP)) hHookHddOverheat=HookEvent(ME_SYSINFO_HDDOVERHEAT,HddOverheat); /* restore watcher if it was running on last exit */ - if(db_get_b(NULL,"AutoShutdown","RememberOnRestart",0)==SDROR_RUNNING) { + if (db_get_b(NULL,"AutoShutdown","RememberOnRestart",0)==SDROR_RUNNING) { db_set_b(NULL,"AutoShutdown","RememberOnRestart",1); ServiceStartWatcher(0,0); /* after modules loaded */ } @@ -366,8 +366,8 @@ void InitWatcher(void) void UninitWatcher(void) { /* remember watcher if running */ - if(!ServiceStopWatcher(0,0)) - if(db_get_b(NULL,"AutoShutdown","RememberOnRestart",SETTING_REMEMBERONRESTART_DEFAULT)) + if (!ServiceStopWatcher(0,0)) + if (db_get_b(NULL,"AutoShutdown","RememberOnRestart",SETTING_REMEMBERONRESTART_DEFAULT)) db_set_b(NULL,"AutoShutdown","RememberOnRestart",SDROR_RUNNING); /* Message Shutdown */ diff --git a/plugins/Import/src/import.cpp b/plugins/Import/src/import.cpp index 7730df32b6..e17eb4fbce 100644 --- a/plugins/Import/src/import.cpp +++ b/plugins/Import/src/import.cpp @@ -543,7 +543,7 @@ void MirandaImport(HWND hdlg) if (nImportOption == IMPORT_ALL || (nCustomOptions & 2046)) { // 2 - 1024 types AddMessage( LPGENT("Importing history.")); HANDLE hContact = srcDb->FindFirstContact(); - for(int i=1; hContact != NULL; i++) { + for (int i=1; hContact != NULL; i++) { ImportHistory(hContact, NULL, NULL); SetProgress(100 * i / nNumberOfContacts); diff --git a/plugins/Import/src/miranda.cpp b/plugins/Import/src/miranda.cpp index fc9a654165..e2da3df048 100644 --- a/plugins/Import/src/miranda.cpp +++ b/plugins/Import/src/miranda.cpp @@ -84,16 +84,14 @@ INT_PTR CALLBACK MirandaPageProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lPa case WM_INITDIALOG: TranslateDialogDefault(hdlg); { - TCHAR *pfd, *pfd1, *pfd2, *pfn; - REPLACEVARSDATA dat = {0}; dat.cbSize = sizeof(dat); dat.dwFlags = RVF_TCHAR; - pfd = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_path%\\Profiles"), (LPARAM)&dat); - pfd1 = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_path%"), (LPARAM)&dat); - pfd2 = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_profile%"), (LPARAM)&dat); - pfn = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_profilename%"), (LPARAM)&dat); + TCHAR *pfd = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_path%\\Profiles"), (LPARAM)&dat); + TCHAR *pfd1 = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_path%"), (LPARAM)&dat); + TCHAR *pfd2 = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_profile%"), (LPARAM)&dat); + TCHAR *pfn = (TCHAR*)CallService(MS_UTILS_REPLACEVARS, (WPARAM)_T("%miranda_profilename%"), (LPARAM)&dat); SearchForLists(hdlg, pfd2, pfn); SearchForLists(hdlg, pfd1, NULL); @@ -104,8 +102,8 @@ INT_PTR CALLBACK MirandaPageProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lPa mir_free(pfd2); mir_free(pfd1); mir_free(pfd); - return TRUE; } + return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { @@ -116,9 +114,8 @@ INT_PTR CALLBACK MirandaPageProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lPa case IDOK: { TCHAR filename[MAX_PATH]; - GetDlgItemText(hdlg, IDC_FILENAME, filename, SIZEOF(filename)); - if (_taccess(filename, 4)) { + if ( _taccess(filename, 4)) { MessageBox(hdlg, TranslateT("The given file does not exist. Please check that you have entered the name correctly."), TranslateT("Miranda Import"), MB_OK); break; } @@ -140,40 +137,36 @@ INT_PTR CALLBACK MirandaPageProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lPa break; case IDC_OTHER: - { - OPENFILENAME ofn; - TCHAR str[MAX_PATH], text[256]; - TCHAR *pfd; - - pfd = Utils_ReplaceVarsT(_T("%miranda_profile%")); - - GetDlgItemText(hdlg, IDC_FILENAME, str, SIZEOF(str)); - ZeroMemory(&ofn, sizeof(ofn)); - ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; - ofn.hwndOwner = hdlg; - mir_sntprintf(text, SIZEOF(text), _T("%s (*.dat, *.bak)%c*.dat;*.bak%c%s (*.*)%c*.*%c%c"), TranslateT("Miranda NG database"), 0, 0, TranslateT("All Files"), 0, 0, 0); - ofn.lpstrFilter = text; - ofn.lpstrDefExt = _T("dat"); - ofn.lpstrFile = str; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT; - ofn.nMaxFile = SIZEOF(str); - ofn.lpstrInitialDir = pfd; - if (GetOpenFileName(&ofn)) - SetDlgItemText(hdlg, IDC_FILENAME, str); - - mir_free(pfd); - break; - } + OPENFILENAME ofn; + TCHAR str[MAX_PATH], text[256]; + TCHAR *pfd; + + pfd = Utils_ReplaceVarsT(_T("%miranda_profile%")); + + GetDlgItemText(hdlg, IDC_FILENAME, str, SIZEOF(str)); + ZeroMemory(&ofn, sizeof(ofn)); + ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; + ofn.hwndOwner = hdlg; + mir_sntprintf(text, SIZEOF(text), _T("%s (*.dat, *.bak)%c*.dat;*.bak%c%s (*.*)%c*.*%c%c"), TranslateT("Miranda NG database"), 0, 0, TranslateT("All Files"), 0, 0, 0); + ofn.lpstrFilter = text; + ofn.lpstrDefExt = _T("dat"); + ofn.lpstrFile = str; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT; + ofn.nMaxFile = SIZEOF(str); + ofn.lpstrInitialDir = pfd; + if (GetOpenFileName(&ofn)) + SetDlgItemText(hdlg, IDC_FILENAME, str); + + mir_free(pfd); + break; } break; - case WM_DESTROY: - { - int i; - for(i=SendDlgItemMessage(hdlg,IDC_LIST,LB_GETCOUNT,0,0)-1;i>=0;i--) - mir_free((char*)SendDlgItemMessage(hdlg,IDC_LIST,LB_GETITEMDATA,i,0)); - break; - } } + case WM_DESTROY: + for (int i = SendDlgItemMessage(hdlg,IDC_LIST,LB_GETCOUNT,0,0)-1; i >= 0; i--) + mir_free((char*)SendDlgItemMessage(hdlg, IDC_LIST, LB_GETITEMDATA, i, 0)); + break; + } return FALSE; } @@ -199,7 +192,7 @@ INT_PTR CALLBACK MirandaOptionsPageProc(HWND hdlg,UINT message,WPARAM wParam,LPA break; case IDOK: - if (IsDlgButtonChecked(hdlg,IDC_RADIO_ALL)) { + if ( IsDlgButtonChecked(hdlg,IDC_RADIO_ALL)) { nImportOption = IMPORT_ALL; nCustomOptions = 0;//IOPT_MSGSENT|IOPT_MSGRECV|IOPT_URLSENT|IOPT_URLRECV; DoImport = MirandaImport; @@ -207,7 +200,7 @@ INT_PTR CALLBACK MirandaOptionsPageProc(HWND hdlg,UINT message,WPARAM wParam,LPA break; } - if (IsDlgButtonChecked(hdlg,IDC_RADIO_CONTACTS)) { + if ( IsDlgButtonChecked(hdlg,IDC_RADIO_CONTACTS)) { nImportOption = IMPORT_CONTACTS; nCustomOptions = 0; DoImport = MirandaImport; @@ -327,21 +320,17 @@ INT_PTR CALLBACK MirandaAdvOptionsPageProc(HWND hdlg,UINT message,WPARAM wParam, case IDC_ALL: case IDC_INCOMING: case IDC_OUTGOING: - { - int i; + if (LOWORD(wParam) == IDC_ALL) + for (int i = 0; i < sizeof(SysControls)/sizeof(SysControls[0]); i++) + CheckDlgButton(hdlg,SysControls[i], !IsDlgButtonChecked(hdlg,SysControls[i])); - if (LOWORD(wParam) == IDC_ALL) - for (i = 0; i < sizeof(SysControls)/sizeof(SysControls[0]); i++) - CheckDlgButton(hdlg,SysControls[i], !IsDlgButtonChecked(hdlg,SysControls[i])); + if (LOWORD(wParam) != IDC_OUTGOING) + for (int i = 0; i < sizeof(InControls)/sizeof(InControls[0]); i++) + CheckDlgButton(hdlg,InControls[i], !IsDlgButtonChecked(hdlg,InControls[i])); - if (LOWORD(wParam) != IDC_OUTGOING) - for (i = 0; i < sizeof(InControls)/sizeof(InControls[0]); i++) - CheckDlgButton(hdlg,InControls[i], !IsDlgButtonChecked(hdlg,InControls[i])); - - if (LOWORD(wParam) != IDC_INCOMING) - for (i = 0; i < sizeof(OutControls)/sizeof(OutControls[0]); i++) - CheckDlgButton(hdlg,OutControls[i], !IsDlgButtonChecked(hdlg,OutControls[i])); - } + if (LOWORD(wParam) != IDC_INCOMING) + for (int i = 0; i < sizeof(OutControls)/sizeof(OutControls[0]); i++) + CheckDlgButton(hdlg,OutControls[i], !IsDlgButtonChecked(hdlg,OutControls[i])); break; case IDC_MSG: diff --git a/plugins/KeyboardNotify/src/ignore.cpp b/plugins/KeyboardNotify/src/ignore.cpp index 645ea4b192..6ce81f49cb 100644 --- a/plugins/KeyboardNotify/src/ignore.cpp +++ b/plugins/KeyboardNotify/src/ignore.cpp @@ -59,7 +59,7 @@ static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentIt hChildItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); if(hChildItem) SetListGroupIcons(hwndList, hChildItem, hItem, childCount); - for(i=0; i < SIZEOF(iconOn); i++) + for (i=0; i < SIZEOF(iconOn); i++) if(iconOn[i] && SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, i) == 0) iconOn[i] = 0; hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hItem); @@ -70,7 +70,7 @@ static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentIt else hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hFirstItem); while(hItem) { - for(i=0; i < SIZEOF(iconOn); i++) { + for (i=0; i < SIZEOF(iconOn); i++) { iImage = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, i); if(iconOn[i] && iImage == 0) iconOn[i] = 0; @@ -80,7 +80,7 @@ static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentIt hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hItem); } //set icons - for(i=0; i < SIZEOF(iconOn); i++) { + for (i=0; i < SIZEOF(iconOn); i++) { SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hParentItem, MAKELPARAM(i, childCount[i]?(iconOn[i]?i+3:0):EMPTY_EXTRA_ICON)); if(groupChildCount) groupChildCount[i] += childCount[i]; @@ -129,7 +129,7 @@ static void ResetListOptions(HWND hwndList) SendMessage(hwndList, CLM_SETLEFTMARGIN, 4, 0); SendMessage(hwndList, CLM_SETINDENT, 10, 0); SendMessage(hwndList, CLM_SETHIDEEMPTYGROUPS, 1, 0); - for(i=0; i <= FONTID_MAX; i++) + for (i=0; i <= FONTID_MAX; i++) SendMessage(hwndList, CLM_SETTEXTCOLOR, i, GetSysColor(COLOR_WINDOWTEXT)); } @@ -162,7 +162,7 @@ static void InitialiseItem(HWND hwndList, HANDLE hContact, HANDLE hItem, DWORD p int i; mask = GetMask(hContact); - for(i=0; i < IGNOREEVENT_MAX; i++) + for (i=0; i < IGNOREEVENT_MAX; i++) if(ignoreIdToPf1[i] == 0xFFFFFFFF || protoCaps & ignoreIdToPf1[i]) SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(i, mask&(1<iColumn == IGNOREEVENT_MAX) { //ignore all - for(iImage=0; iImage < IGNOREEVENT_MAX; iImage++) + for (iImage=0; iImage < IGNOREEVENT_MAX; iImage++) SetIconsForColumn(GetDlgItem(hwndDlg, IDC_LIST), hItem, hItemAll, iImage, iImage+3); } else if(nm->iColumn == IGNOREEVENT_MAX+1) { //ignore none - for(iImage=0; iImage < IGNOREEVENT_MAX; iImage++) + for (iImage=0; iImage < IGNOREEVENT_MAX; iImage++) SetIconsForColumn(GetDlgItem(hwndDlg, IDC_LIST), hItem, hItemAll, iImage, 0); } else { @@ -326,7 +326,7 @@ INT_PTR CALLBACK DlgProcIgnoreOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPA case WM_DESTROY: { int i; HIMAGELIST hIml; - for(i=0; i < SIZEOF(hIcons); i++) + for (i=0; i < SIZEOF(hIcons); i++) DestroyIcon(hIcons[i]); hIml = (HIMAGELIST)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGELIST, 0, 0); ImageList_Destroy(hIml); diff --git a/plugins/KeyboardNotify/src/main.cpp b/plugins/KeyboardNotify/src/main.cpp index 860b03ae92..bf5a170972 100644 --- a/plugins/KeyboardNotify/src/main.cpp +++ b/plugins/KeyboardNotify/src/main.cpp @@ -26,10 +26,6 @@ #define NCONVERS_BLINKID ((HANDLE)123456) //nconvers' random identifier used to flash an icon for "incoming message" on contact list -#ifndef SPI_GETSCREENSAVERRUNNING -#define SPI_GETSCREENSAVERRUNNING 114 -#endif - #ifndef WM_XBUTTONDBLCLK #define WM_XBUTTONDBLCLK 0x020D #endif @@ -109,7 +105,6 @@ BOOL bReminderDisabled = FALSE; char *szMetaProto = NULL; BYTE bMetaProtoEnabled = 0; - PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), __PLUGIN_NAME, @@ -124,8 +119,6 @@ PLUGININFOEX pluginInfo={ {0x119d7288, 0x2050, 0x448d, {0x99, 0x00, 0xd8, 0x6a, 0xc7, 0x04, 0x26, 0xbf}} }; - - int InitializeOptions(WPARAM,LPARAM); void LoadSettings(void); int HookWindowsHooks(void); @@ -137,7 +130,6 @@ static LRESULT CALLBACK MirandaKeyBoardHookFunction(int, WPARAM, LPARAM); static LRESULT CALLBACK MirandaWndProcHookFunction(int, WPARAM, LPARAM); BOOL CheckMsgWnd(HANDLE, BOOL *); - BOOL isMetaContactsSubContact(HANDLE hMetaContact, HANDLE hContact) { char *szProto = GetContactProto(hMetaContact); @@ -149,7 +141,6 @@ BOOL isMetaContactsSubContact(HANDLE hMetaContact, HANDLE hContact) return FALSE; } - BOOL checkOpenWindow(HANDLE hContact) { BOOL found, focus; @@ -172,76 +163,27 @@ BOOL checkOpenWindow(HANDLE hContact) return FALSE; } -BOOL isScreenSaverRunning() -{ - BOOL screenSaverIsRunning=FALSE; - - SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &screenSaverIsRunning, FALSE); - return screenSaverIsRunning; -} - - -/* this function is from the original idle module */ -BOOL isWorkstationLocked() -{ - HDESK hd; - char buf[MAX_PATH]; - - hd = OpenInputDesktop(0, FALSE, MAXIMUM_ALLOWED); /* if it fails then the workstation is prolly locked anyway */ - if (hd == NULL) return TRUE; - GetUserObjectInformation(hd, UOI_NAME, buf, sizeof(buf), NULL); /* if we got it (hmm,) get a name */ - CloseDesktop(hd); - return strcmp(buf, "Winlogon")==0; -} - - -BOOL isFullScreen() -{ - int w = GetSystemMetrics(SM_CXSCREEN); - int h = GetSystemMetrics(SM_CYSCREEN); - - HWND hWnd = 0; - while (hWnd = FindWindowEx(NULL, hWnd, NULL, NULL)) { - RECT WindowRect; - - if (!(GetWindowLongPtr(hWnd, GWL_EXSTYLE) & WS_EX_TOPMOST)) - continue; - - GetWindowRect(hWnd, &WindowRect); - if ((w != (WindowRect.right - WindowRect.left)) || (h != (WindowRect.bottom - WindowRect.top))) - continue; - - return TRUE; - } - - return FALSE; -} - - BOOL checkNotifyOptions() { - BOOL fullScreenMode, screenSaverIsRunning, workstationIsLocked, processesRunning; - - screenSaverIsRunning = isScreenSaverRunning(); + BOOL screenSaverIsRunning = IsScreenSaverRunning(); if (screenSaverIsRunning && bScreenSaverRunning) - return TRUE; + return TRUE; - workstationIsLocked = isWorkstationLocked(); + BOOL workstationIsLocked = IsWorkstationLocked(); if (workstationIsLocked && bWorkstationLocked) - return TRUE; + return TRUE; - fullScreenMode = isFullScreen() && !screenSaverIsRunning; + BOOL fullScreenMode = IsFullScreen() && !screenSaverIsRunning; if (fullScreenMode && bFullScreenMode) - return TRUE; + return TRUE; - processesRunning = areThereProcessesRunning(); + BOOL processesRunning = areThereProcessesRunning(); if (processesRunning && bProcessesAreRunning) - return TRUE; + return TRUE; return (!fullScreenMode && !screenSaverIsRunning && !workstationIsLocked && !processesRunning && bWorkstationActive); } - BOOL isStatusEnabled(int status) { switch (status) { @@ -259,13 +201,11 @@ BOOL isStatusEnabled(int status) } } - BOOL checkGlobalStatus() { return isStatusEnabled(CallService(MS_CLIST_GETSTATUSMODE, 0, 0)); } - BOOL checkGlobalXstatus() { int protosSupporting=0, status=0; @@ -288,19 +228,15 @@ BOOL checkGlobalXstatus() return protosSupporting == 0; } - DBEVENTINFO createMsgEventInfo(HANDLE hContact) { DBEVENTINFO einfo = {0}; - einfo.cbSize = sizeof(einfo); einfo.eventType = EVENTTYPE_MESSAGE; einfo.szModule = GetContactProto(hContact); - return einfo; } - DBEVENTINFO readEventInfo(HANDLE hDbEvent, HANDLE hContact) { if (hDbEvent == NCONVERS_BLINKID) // we need to handle nconvers' blink event @@ -311,26 +247,23 @@ DBEVENTINFO readEventInfo(HANDLE hDbEvent, HANDLE hContact) return einfo; } - BOOL checkIgnore(HANDLE hContact, WORD eventType) { return !IsIgnored(hContact, eventType); } - BOOL checkProtocol(char *szProto) { if (!szProto) return FALSE; - for(int i=0; i < ProtoList.protoCount; i++) + for (int i=0; i < ProtoList.protoCount; i++) if (ProtoList.protoInfo[i].szProto && !strcmp(ProtoList.protoInfo[i].szProto, szProto)) return ProtoList.protoInfo[i].enabled; return FALSE; } - BOOL metaCheckProtocol(char *szProto, HANDLE hContact, WORD eventType) { HANDLE hSubContact=NULL; @@ -366,7 +299,6 @@ BOOL checkUnopenEvents() return FALSE; } - static void FlashThreadFunction() { BOOL bEvent = FALSE; @@ -485,7 +417,7 @@ BOOL checkXstatus(char *szProto) if (!szProto) return checkGlobalXstatus(); - for(int i=0; i < ProtoList.protoCount; i++) + for (int i=0; i < ProtoList.protoCount; i++) if (ProtoList.protoInfo[i].szProto && !strcmp(ProtoList.protoInfo[i].szProto, szProto)) { if (!ProtoList.protoInfo[i].xstatus.count) return TRUE; @@ -643,7 +575,7 @@ void createProcessList(void) ProcessList.count = 0; ProcessList.szFileName = (TCHAR **)malloc(count * sizeof(TCHAR *)); if (ProcessList.szFileName) { - for(i=0; i < count; i++) + for (i=0; i < count; i++) if (db_get_ts(NULL, KEYBDMODULE, fmtDBSettingName("process%d", i), &dbv)) ProcessList.szFileName[i] = NULL; else { @@ -665,7 +597,7 @@ void destroyProcessList(void) count = ProcessList.count; ProcessList.count = 0; - for(i=0; i < count; i++) + for (i=0; i < count; i++) if (ProcessList.szFileName[i]) free(ProcessList.szFileName[i]); @@ -723,11 +655,11 @@ void LoadSettings(void) db_set_b(NULL, KEYBDMODULE, "testnum", DEF_SETTING_TESTNUM); if (db_get_b(NULL, KEYBDMODULE, "testsecs", -1) == -1) db_set_b(NULL, KEYBDMODULE, "testsecs", DEF_SETTING_TESTSECS); - for(int i=0; i < ProtoList.protoCount; i++) + for (int i=0; i < ProtoList.protoCount; i++) if (ProtoList.protoInfo[i].visible) { unsigned int j; ProtoList.protoInfo[i].enabled = db_get_b(NULL, KEYBDMODULE, ProtoList.protoInfo[i].szProto, DEF_SETTING_PROTOCOL); - for(j=0; j < ProtoList.protoInfo[i].xstatus.count; j++) + for (j=0; j < ProtoList.protoInfo[i].xstatus.count; j++) ProtoList.protoInfo[i].xstatus.enabled[j] = db_get_b(NULL, KEYBDMODULE, fmtDBSettingName("%sxstatus%d", ProtoList.protoInfo[i].szProto, j), DEF_SETTING_XSTATUS); } @@ -773,7 +705,7 @@ void updateXstatusProto(PROTOCOL_INFO *protoInfo) if (!protoInfo->xstatus.enabled) protoInfo->xstatus.count = 0; else - for(unsigned i=0; i < protoInfo->xstatus.count; i++) + for (unsigned i=0; i < protoInfo->xstatus.count; i++) protoInfo->xstatus.enabled[i] = FALSE; } @@ -792,7 +724,7 @@ void createProtocolList(void) return; } - for(int i=0; i < ProtoList.protoCount; i++) { + for (int i=0; i < ProtoList.protoCount; i++) { ProtoList.protoInfo[i].xstatus.count = 0; ProtoList.protoInfo[i].xstatus.enabled = NULL; ProtoList.protoInfo[i].szProto = (char *)malloc(strlen(proto[i]->szModuleName) + 1); @@ -899,7 +831,7 @@ extern "C" __declspec(dllexport) int Load(void) void destroyProtocolList(void) { - for(int i=0; i < ProtoList.protoCount; i++) { + for (int i=0; i < ProtoList.protoCount; i++) { if (ProtoList.protoInfo[i].szProto) free(ProtoList.protoInfo[i].szProto); if (ProtoList.protoInfo[i].xstatus.enabled) diff --git a/plugins/KeyboardNotify/src/options.cpp b/plugins/KeyboardNotify/src/options.cpp index d4d5d031bb..0f853b03e9 100644 --- a/plugins/KeyboardNotify/src/options.cpp +++ b/plugins/KeyboardNotify/src/options.cpp @@ -224,7 +224,7 @@ INT_PTR CALLBACK DlgProcProtoOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR lvItem.cchTextMax = 256; lvItem.iItem = 0; lvItem.iSubItem = 0; - for(int i=0; i < ProtoList.protoCount; i++) { + for (int i=0; i < ProtoList.protoCount; i++) { int count; PROTOACCOUNT** protos; ProtoEnumAccounts( &count, &protos ); if(ProtoList.protoInfo[i].visible) { @@ -519,7 +519,7 @@ INT_PTR CALLBACK DlgProcBasicOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR if (XstatusListAux) for (int i = 0; i < ProtoList.protoCount; i++) - for(int j = 0; j < (int)XstatusListAux[i].count; j++) + for (int j = 0; j < (int)XstatusListAux[i].count; j++) db_set_b(NULL, KEYBDMODULE, fmtDBSettingName("%sxstatus%d", ProtoList.protoInfo[i].szProto, j), (BYTE)XstatusListAux[i].enabled[j]); LoadSettings(); @@ -1211,7 +1211,7 @@ void createProcessListAux(void) void destroyProcessListAux(void) { - for(int i = 0; i < ProcessListAux.count; i++) + for (int i = 0; i < ProcessListAux.count; i++) if (ProcessListAux.szFileName[i]) free(ProcessListAux.szFileName[i]); @@ -1307,7 +1307,7 @@ void createXstatusListAux(void) if (!XstatusListAux[i].enabled) XstatusListAux[i].count = 0; else - for(int j = 0; j < (int)XstatusListAux[i].count; j++) + for (int j = 0; j < (int)XstatusListAux[i].count; j++) XstatusListAux[i].enabled[j] = ProtoList.protoInfo[i].xstatus.enabled[j]; } } @@ -1318,7 +1318,7 @@ void createXstatusListAux(void) void destroyXstatusListAux(void) { if (XstatusListAux) { - for(int i = 0; i < ProtoList.protoCount; i++) + for (int i = 0; i < ProtoList.protoCount; i++) if (XstatusListAux[i].enabled) free(XstatusListAux[i].enabled); free(XstatusListAux); @@ -1382,7 +1382,7 @@ INT_PTR CALLBACK DlgProcXstatusList(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA tvis.item.iImage = tvis.item.iSelectedImage = ImageList_AddIcon(hImageList, hIconAux=(HICON)CallProtoService(ProtoList.protoInfo[i].szProto, PS_LOADICON, PLI_PROTOCOL, 0)); if (hIconAux) DestroyIcon(hIconAux); hParent = TreeView_InsertItem(hwndTree, &tvis); - for(j = 0; j < XstatusListAux[i].count; j++) { + for (j = 0; j < XstatusListAux[i].count; j++) { tvis.hParent = hParent; tvis.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; if (!j){ diff --git a/plugins/Scriver/src/msgwindow.cpp b/plugins/Scriver/src/msgwindow.cpp index abe6b0ac84..89df28fcc6 100644 --- a/plugins/Scriver/src/msgwindow.cpp +++ b/plugins/Scriver/src/msgwindow.cpp @@ -1136,7 +1136,7 @@ static void DrawTab(ParentWindowData *dat, HWND hwnd, WPARAM wParam, LPARAM lPar TCITEM tci; LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT) lParam; int iTabIndex = lpDIS->itemID; - tcdat = (TabCtrlData *) GetWindowLongPtr(hwnd, GWLP_USERDATA); + tcdat = (TabCtrlData*)GetWindowLongPtr(hwnd, GWLP_USERDATA); if (iTabIndex >= 0) { HANDLE hTheme = NULL; int tstate; @@ -1247,30 +1247,29 @@ static void DrawTab(ParentWindowData *dat, HWND hwnd, WPARAM wParam, LPARAM lPar LRESULT CALLBACK TabCtrlProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - TabCtrlData *dat; - dat = (TabCtrlData *) GetWindowLongPtr(hwnd, GWLP_USERDATA); + TabCtrlData *dat = (TabCtrlData*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + switch(msg) { - case EM_SUBCLASSED: - dat = (TabCtrlData *) mir_alloc(sizeof(TabCtrlData)); - SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR) dat); - dat->bDragging = FALSE; - dat->bDragged = FALSE; - dat->srcTab = -1; - dat->destTab = -1; - return 0; - case WM_MBUTTONDOWN: + case EM_SUBCLASSED: + dat = (TabCtrlData*)mir_alloc(sizeof(TabCtrlData)); + SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR) dat); + dat->bDragging = FALSE; + dat->bDragged = FALSE; + dat->srcTab = -1; + dat->destTab = -1; + return 0; + + case WM_MBUTTONDOWN: { - TCITEM tci; - int tabId; - MessageWindowTabData *mwtd; TCHITTESTINFO thinfo; thinfo.pt.x = LOWORD(lParam); thinfo.pt.y = HIWORD(lParam); - tabId = TabCtrl_HitTest(hwnd, &thinfo); + int tabId = TabCtrl_HitTest(hwnd, &thinfo); if (tabId >= 0) { + TCITEM tci; tci.mask = TCIF_PARAM; TabCtrl_GetItem(hwnd, tabId, &tci); - mwtd = (MessageWindowTabData *) tci.lParam; + MessageWindowTabData *mwtd = (MessageWindowTabData *) tci.lParam; if (mwtd != NULL) { SendMessage(mwtd->hwnd, WM_CLOSE, 0, 0); dat->srcTab = -1; @@ -1278,13 +1277,12 @@ LRESULT CALLBACK TabCtrlProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) } return 0; } - case WM_LBUTTONDBLCLK: + case WM_LBUTTONDBLCLK: { TCHITTESTINFO thinfo; - int tabId; thinfo.pt.x = LOWORD(lParam); thinfo.pt.y = HIWORD(lParam); - tabId = TabCtrl_HitTest(hwnd, &thinfo); + int tabId = TabCtrl_HitTest(hwnd, &thinfo); if (tabId >=0 && tabId == dat->srcTab) { SendMessage(GetChildFromTab(hwnd, tabId)->hwnd, WM_CLOSE, 0, 0); dat->srcTab = -1; @@ -1292,284 +1290,277 @@ LRESULT CALLBACK TabCtrlProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) dat->destTab = -1; } break; - case WM_LBUTTONDOWN: - if (!dat->bDragging) { - TCHITTESTINFO thinfo; - FILETIME ft; - thinfo.pt.x = LOWORD(lParam); - thinfo.pt.y = HIWORD(lParam); - dat->srcTab = TabCtrl_HitTest(hwnd, &thinfo); - GetSystemTimeAsFileTime(&ft); - if (dat->srcTab >=0 ) { - dat->bDragging = TRUE; - dat->bDragged = FALSE; - dat->clickLParam = lParam; - dat->clickWParam = wParam; - dat->lastClickTime = ft.dwLowDateTime; - dat->mouseLBDownPos.x = thinfo.pt.x; - dat->mouseLBDownPos.y = thinfo.pt.y; - SetCapture(hwnd); + case WM_LBUTTONDOWN: + if (!dat->bDragging) { + TCHITTESTINFO thinfo; + thinfo.pt.x = LOWORD(lParam); + thinfo.pt.y = HIWORD(lParam); + dat->srcTab = TabCtrl_HitTest(hwnd, &thinfo); + + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + if (dat->srcTab >= 0) { + dat->bDragging = TRUE; + dat->bDragged = FALSE; + dat->clickLParam = lParam; + dat->clickWParam = wParam; + dat->lastClickTime = ft.dwLowDateTime; + dat->mouseLBDownPos.x = thinfo.pt.x; + dat->mouseLBDownPos.y = thinfo.pt.y; + SetCapture(hwnd); + } + return 0; + } + break; + case WM_CAPTURECHANGED: + case WM_LBUTTONUP: + if (dat->bDragging) { + TCHITTESTINFO thinfo; + thinfo.pt.x = LOWORD(lParam); + thinfo.pt.y = HIWORD(lParam); + if (dat->bDragged) { + ImageList_DragLeave(GetDesktopWindow()); + ImageList_EndDrag(); + ImageList_Destroy(dat->hDragImageList); + SetCursor(LoadCursor(NULL, IDC_ARROW)); + dat->destTab = TabCtrl_HitTest(hwnd, &thinfo); + if (thinfo.flags != TCHT_NOWHERE && dat->destTab != dat->srcTab) { + NMHDR nmh; + TCHAR sBuffer[501]; + TCITEM item; + int curSel; + curSel = TabCtrl_GetCurSel(hwnd); + item.mask = TCIF_IMAGE | TCIF_PARAM | TCIF_TEXT; + item.pszText = sBuffer; + item.cchTextMax = SIZEOF(sBuffer); + TabCtrl_GetItem(hwnd, dat->srcTab, &item); + sBuffer[SIZEOF(sBuffer)-1] = '\0'; + + if (curSel == dat->srcTab) + curSel = dat->destTab; + else if (curSel > dat->srcTab && curSel <= dat->destTab) + curSel--; + else if (curSel < dat->srcTab && curSel >= dat->destTab) + curSel++; + + TabCtrl_DeleteItem(hwnd, dat->srcTab); + TabCtrl_InsertItem(hwnd, dat->destTab, &item ); + TabCtrl_SetCurSel(hwnd, curSel); + dat->destTab = -1; + nmh.hwndFrom = hwnd; + nmh.idFrom = GetDlgCtrlID(hwnd); + nmh.code = TCN_SELCHANGE; + SendMessage(GetParent(hwnd), WM_NOTIFY, nmh.idFrom, (LPARAM)&nmh); + UpdateWindow(hwnd); + } + else if (thinfo.flags == TCHT_NOWHERE) { + TCITEM tci; + POINT pt; + NewMessageWindowLParam newData = { 0 }; + dat->destTab = -1; + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(hwnd, dat->srcTab, &tci); + MessageWindowTabData *mwtd = (MessageWindowTabData *) tci.lParam; + if (mwtd != NULL) { + HWND hChild = mwtd->hwnd; + HANDLE hContact = mwtd->hContact; + GetCursorPos(&pt); + HWND hParent = WindowFromPoint(pt); + while (GetParent(hParent) != NULL) + hParent = GetParent(hParent); + + hParent = WindowList_Find(g_dat.hParentWindowList, hParent); + if ((hParent != NULL && hParent != GetParent(hwnd)) || (hParent == NULL && mwtd->parent->childrenCount > 1 && (GetKeyState(VK_CONTROL) & 0x8000))) { + if (hParent == NULL) { + RECT rc, rcDesktop; + newData.hContact = hContact; + hParent = (HWND)CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSGWIN), NULL, DlgProcParentWindow, (LPARAM)& newData); + GetWindowRect(hParent, &rc); + rc.right = (rc.right - rc.left); + rc.bottom = (rc.bottom - rc.top); + rc.left = pt.x - rc.right / 2; + rc.top = pt.y - rc.bottom / 2; + HMONITOR hMonitor = MonitorFromRect(&rc, MONITOR_DEFAULTTONEAREST); + MONITORINFO mi; + mi.cbSize = sizeof(mi); + GetMonitorInfo(hMonitor, &mi); + rcDesktop = mi.rcWork; + if (rc.left < rcDesktop.left) + rc.left = rcDesktop.left; + if (rc.top < rcDesktop.top) + rc.top = rcDesktop.top; + MoveWindow(hParent, rc.left, rc.top, rc.right, rc.bottom, FALSE); + } + NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_CLOSING); + NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_CLOSE); + SetParent(hChild, hParent); + SendMessage(GetParent(hwnd), CM_REMOVECHILD, 0, (LPARAM)hChild); + SendMessage(hChild, DM_SETPARENT, 0, (LPARAM)hParent); + SendMessage(hParent, CM_ADDCHILD, (WPARAM)hChild, (LPARAM)hContact); + SendMessage(hChild, DM_UPDATETABCONTROL, 0, 0); + SendMessage(hParent, CM_ACTIVATECHILD, 0, (LPARAM)hChild); + NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_OPENING); + NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_OPEN); + ShowWindow(hParent, SW_SHOWNA); + EnableWindow(hParent, TRUE); + } + } + } + else { + dat->destTab = -1; + RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } - return 0; } - break; - case WM_CAPTURECHANGED: - case WM_LBUTTONUP: + else if (dat->srcTab >= 0 && g_dat.flags2 & SMF2_TABCLOSEBUTTON) { + IMAGEINFO info; + POINT pt; + RECT rect; + int atTop = (GetWindowLongPtr(hwnd, GWL_STYLE) & TCS_BOTTOM) == 0; + TabCtrl_GetItemRect(hwnd, dat->srcTab, &rect); + pt.x = LOWORD(lParam); + pt.y = HIWORD(lParam); + ImageList_GetImageInfo(g_dat.hButtonIconList, 0, &info); + rect.left = rect.right - (info.rcImage.right - info.rcImage.left) - 6; + if (!atTop) + rect.top = rect.bottom - (info.rcImage.bottom - info.rcImage.top); + + if (pt.x >= rect.left && pt.x < rect.left + (info.rcImage.right - info.rcImage.left) && pt.y >= rect.top && pt.y < rect.top + (info.rcImage.bottom - info.rcImage.top)) { + HBITMAP hOldBitmap, hBmp; + HDC hdc = GetDC(NULL); + HDC hdcMem = CreateCompatibleDC(hdc); + pt.x -= rect.left; + pt.y -= rect.top; + hBmp = CreateCompatibleBitmap(hdc, info.rcImage.right - info.rcImage.left + 1, info.rcImage.bottom - info.rcImage.top + 1); + hOldBitmap = (HBITMAP)SelectObject(hdcMem, hBmp); + SetPixel(hdcMem, pt.x, pt.y, 0x000000); + ImageList_DrawEx(g_dat.hButtonIconList, 0, hdcMem, 0, 0, 0, 0, CLR_NONE, CLR_NONE, ILD_NORMAL); + COLORREF color1 = GetPixel(hdcMem, pt.x, pt.y); + SetPixel(hdcMem, pt.x, pt.y, 0xFFFFFF); + ImageList_DrawEx(g_dat.hButtonIconList, 0, hdcMem, 0, 0, 0, 0, CLR_NONE, CLR_NONE, ILD_NORMAL); + COLORREF color2 = GetPixel(hdcMem, pt.x, pt.y); + SelectObject(hdcMem, hOldBitmap); + DeleteDC(hdcMem); + DeleteObject(hBmp); + ReleaseDC(NULL, hdc); + if (color1 != 0x000000 || color2 != 0xFFFFFF) { + SendMessage(GetChildFromTab(hwnd, dat->srcTab)->hwnd, WM_CLOSE, 0, 0); + dat->srcTab = -1; + } + } + else SendMessage(hwnd, WM_LBUTTONDOWN, dat->clickWParam, dat->clickLParam); + } + else SendMessage(hwnd, WM_LBUTTONDOWN, dat->clickWParam, dat->clickLParam); + + dat->bDragged = FALSE; + dat->bDragging = FALSE; + dat->destTab = -1; + ReleaseCapture(); + } + break; + case WM_MOUSEMOVE: + if (wParam & MK_LBUTTON) { if (dat->bDragging) { + FILETIME ft; TCHITTESTINFO thinfo; + GetSystemTimeAsFileTime(&ft); thinfo.pt.x = LOWORD(lParam); thinfo.pt.y = HIWORD(lParam); - if (dat->bDragged) { - ImageList_DragLeave(GetDesktopWindow()); - ImageList_EndDrag(); - ImageList_Destroy(dat->hDragImageList); - SetCursor(LoadCursor(NULL, IDC_ARROW)); - dat->destTab = TabCtrl_HitTest(hwnd, &thinfo); - if (thinfo.flags != TCHT_NOWHERE && dat->destTab != dat->srcTab) { - NMHDR nmh; - TCHAR sBuffer[501]; - TCITEM item; - int curSel; - curSel = TabCtrl_GetCurSel(hwnd); - item.mask = TCIF_IMAGE | TCIF_PARAM | TCIF_TEXT; - item.pszText = sBuffer; - item.cchTextMax = SIZEOF(sBuffer); - TabCtrl_GetItem(hwnd, dat->srcTab, &item); - sBuffer[SIZEOF(sBuffer)-1] = '\0'; - if (curSel == dat->srcTab) { - curSel = dat->destTab; - } else { - if (curSel > dat->srcTab && curSel <= dat->destTab) { - curSel--; - } else if (curSel < dat->srcTab && curSel >= dat->destTab) { - curSel++; - } - } - TabCtrl_DeleteItem(hwnd, dat->srcTab); - TabCtrl_InsertItem(hwnd, dat->destTab, &item ); - TabCtrl_SetCurSel(hwnd, curSel); - dat->destTab = -1; - nmh.hwndFrom = hwnd; - nmh.idFrom = GetDlgCtrlID(hwnd); - nmh.code = TCN_SELCHANGE; - SendMessage(GetParent(hwnd), WM_NOTIFY, nmh.idFrom, (LPARAM)&nmh); - UpdateWindow(hwnd); - } else if (thinfo.flags == TCHT_NOWHERE) { - MessageWindowTabData *mwtd; - TCITEM tci; - POINT pt; - NewMessageWindowLParam newData = { 0 }; - dat->destTab = -1; - tci.mask = TCIF_PARAM; - TabCtrl_GetItem(hwnd, dat->srcTab, &tci); - mwtd = (MessageWindowTabData *) tci.lParam; - if (mwtd != NULL) { - HWND hChild = mwtd->hwnd; - HANDLE hContact = mwtd->hContact; - HWND hParent; - GetCursorPos(&pt); - hParent = WindowFromPoint(pt); - while (GetParent(hParent) != NULL) { - hParent = GetParent(hParent); - } - hParent = WindowList_Find(g_dat.hParentWindowList, hParent); - if ((hParent != NULL && hParent != GetParent(hwnd)) || (hParent == NULL && mwtd->parent->childrenCount > 1 && (GetKeyState(VK_CONTROL) & 0x8000))) { - if (hParent == NULL) { - MONITORINFO mi; - HMONITOR hMonitor; - RECT rc, rcDesktop; - newData.hContact = hContact; - hParent = (HWND)CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSGWIN), NULL, DlgProcParentWindow, (LPARAM)& newData); - GetWindowRect(hParent, &rc); - rc.right = (rc.right - rc.left); - rc.bottom = (rc.bottom - rc.top); - rc.left = pt.x - rc.right / 2; - rc.top = pt.y - rc.bottom / 2; - hMonitor = MonitorFromRect(&rc, MONITOR_DEFAULTTONEAREST); - mi.cbSize = sizeof(mi); - GetMonitorInfo(hMonitor, &mi); - rcDesktop = mi.rcWork; - if (rc.left < rcDesktop.left) { - rc.left = rcDesktop.left; - } - if (rc.top < rcDesktop.top) { - rc.top = rcDesktop.top; - } - MoveWindow(hParent, rc.left, rc.top, rc.right, rc.bottom, FALSE); - - } - NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_CLOSING); - NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_CLOSE); - SetParent(hChild, hParent); - SendMessage(GetParent(hwnd), CM_REMOVECHILD, 0, (LPARAM)hChild); - SendMessage(hChild, DM_SETPARENT, 0, (LPARAM)hParent); - SendMessage(hParent, CM_ADDCHILD, (WPARAM)hChild, (LPARAM)hContact); - SendMessage(hChild, DM_UPDATETABCONTROL, 0, 0); - SendMessage(hParent, CM_ACTIVATECHILD, 0, (LPARAM)hChild); - NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_OPENING); - NotifyLocalWinEvent(hContact, hChild, MSG_WINDOW_EVT_OPEN); - ShowWindow(hParent, SW_SHOWNA); - EnableWindow(hParent, TRUE); - } - } - } else { - dat->destTab = -1; - RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); - } - } else if (dat->srcTab >= 0 && g_dat.flags2 & SMF2_TABCLOSEBUTTON) { - IMAGEINFO info; + if (!dat->bDragged) { + if ((abs(thinfo.pt.x-dat->mouseLBDownPos.x)<3 && abs(thinfo.pt.y-dat->mouseLBDownPos.y)<3) + || (ft.dwLowDateTime - dat->lastClickTime) < 10*1000*150) + break; + } + if (!dat->bDragged) { POINT pt; RECT rect; - int atTop = (GetWindowLongPtr(hwnd, GWL_STYLE) & TCS_BOTTOM) == 0; + RECT rect2; + HBRUSH hBrush = CreateSolidBrush(RGB(255,0,254)); + GetCursorPos(&pt); TabCtrl_GetItemRect(hwnd, dat->srcTab, &rect); - pt.x = LOWORD(lParam); - pt.y = HIWORD(lParam); - ImageList_GetImageInfo(g_dat.hButtonIconList, 0, &info); - rect.left = rect.right - (info.rcImage.right - info.rcImage.left) - 6; - if (!atTop) { - rect.top = rect.bottom - (info.rcImage.bottom - info.rcImage.top); - } - if (pt.x >= rect.left && pt.x < rect.left + (info.rcImage.right - info.rcImage.left) && pt.y >= rect.top && pt.y < rect.top + (info.rcImage.bottom - info.rcImage.top)) { - HBITMAP hOldBitmap, hBmp; - COLORREF color1, color2; - HDC hdc = GetDC(NULL); - HDC hdcMem = CreateCompatibleDC(hdc); - pt.x -= rect.left; - pt.y -= rect.top; - hBmp = CreateCompatibleBitmap(hdc, info.rcImage.right - info.rcImage.left + 1, info.rcImage.bottom - info.rcImage.top + 1); - hOldBitmap = (HBITMAP)SelectObject(hdcMem, hBmp); - SetPixel(hdcMem, pt.x, pt.y, 0x000000); - ImageList_DrawEx(g_dat.hButtonIconList, 0, hdcMem, 0, 0, 0, 0, CLR_NONE, CLR_NONE, ILD_NORMAL); - color1 = GetPixel(hdcMem, pt.x, pt.y); - SetPixel(hdcMem, pt.x, pt.y, 0xFFFFFF); - ImageList_DrawEx(g_dat.hButtonIconList, 0, hdcMem, 0, 0, 0, 0, CLR_NONE, CLR_NONE, ILD_NORMAL); - color2 = GetPixel(hdcMem, pt.x, pt.y); - SelectObject(hdcMem, hOldBitmap); - DeleteDC(hdcMem); - DeleteObject(hBmp); - ReleaseDC(NULL, hdc); - if (color1 != 0x000000 || color2 != 0xFFFFFF) { - SendMessage(GetChildFromTab(hwnd, dat->srcTab)->hwnd, WM_CLOSE, 0, 0); - dat->srcTab = -1; - } - } else { - SendMessage(hwnd, WM_LBUTTONDOWN, dat->clickWParam, dat->clickLParam); - } - } else { - SendMessage(hwnd, WM_LBUTTONDOWN, dat->clickWParam, dat->clickLParam); + rect.right -= rect.left-1; + rect.bottom -= rect.top-1; + rect2.left = 0; rect2.right = rect.right; rect2.top = 0; rect2.bottom = rect.bottom; + dat->hDragImageList = ImageList_Create(rect.right, rect.bottom, ILC_COLOR | ILC_MASK, 0, 1); + HDC hDC = GetDC(hwnd); + HDC hMemDC = CreateCompatibleDC(hDC); + HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rect.right, rect.bottom); + HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); + FillRect(hMemDC, &rect2, hBrush); + SetWindowOrgEx (hMemDC, rect.left, rect.top, NULL); + SendMessage(hwnd, WM_PRINTCLIENT, (WPARAM)hMemDC, PRF_CLIENT); + SelectObject(hMemDC, hOldBitmap); + ImageList_AddMasked(dat->hDragImageList, hBitmap, RGB(255,0,254)); + DeleteObject(hBitmap); + DeleteObject(hBrush); + ReleaseDC(hwnd, hDC); + DeleteDC(hMemDC); + ImageList_BeginDrag(dat->hDragImageList, 0, dat->mouseLBDownPos.x - rect.left, dat->mouseLBDownPos.y - rect.top); + ImageList_DragEnter(GetDesktopWindow(), pt.x, pt.y); + SetCursor(hDragCursor); + dat->mouseLBDownPos.x = thinfo.pt.x; + dat->mouseLBDownPos.y = thinfo.pt.y; } - dat->bDragged = FALSE; - dat->bDragging = FALSE; - dat->destTab = -1; - ReleaseCapture(); - } - break; - case WM_MOUSEMOVE: - if (wParam & MK_LBUTTON) { - if (dat->bDragging) { - FILETIME ft; + else { TCHITTESTINFO thinfo; - GetSystemTimeAsFileTime(&ft); - thinfo.pt.x = LOWORD(lParam); - thinfo.pt.y = HIWORD(lParam); - if (!dat->bDragged) { - if ((abs(thinfo.pt.x-dat->mouseLBDownPos.x)<3 && abs(thinfo.pt.y-dat->mouseLBDownPos.y)<3) - || (ft.dwLowDateTime - dat->lastClickTime) < 10*1000*150) - break; - } - if (!dat->bDragged) { - POINT pt; - RECT rect; - RECT rect2; - HDC hDC, hMemDC; - HBITMAP hBitmap, hOldBitmap; - HBRUSH hBrush = CreateSolidBrush(RGB(255,0,254)); - GetCursorPos(&pt); - TabCtrl_GetItemRect(hwnd, dat->srcTab, &rect); - rect.right -= rect.left-1; - rect.bottom -= rect.top-1; - rect2.left = 0; rect2.right = rect.right; rect2.top = 0; rect2.bottom = rect.bottom; - dat->hDragImageList = ImageList_Create(rect.right, rect.bottom, ILC_COLOR | ILC_MASK, 0, 1); - hDC = GetDC(hwnd); - hMemDC = CreateCompatibleDC(hDC); - hBitmap = CreateCompatibleBitmap(hDC, rect.right, rect.bottom); - hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); - FillRect(hMemDC, &rect2, hBrush); - SetWindowOrgEx (hMemDC, rect.left, rect.top, NULL); - SendMessage(hwnd, WM_PRINTCLIENT, (WPARAM)hMemDC, PRF_CLIENT); - SelectObject(hMemDC, hOldBitmap); - ImageList_AddMasked(dat->hDragImageList, hBitmap, RGB(255,0,254)); - DeleteObject(hBitmap); - DeleteObject(hBrush); - ReleaseDC(hwnd, hDC); - DeleteDC(hMemDC); - ImageList_BeginDrag(dat->hDragImageList, 0, dat->mouseLBDownPos.x - rect.left, dat->mouseLBDownPos.y - rect.top); + POINT pt; + GetCursorPos(&pt); + thinfo.pt = pt; + ScreenToClient(hwnd, &thinfo.pt); + int newDest = TabCtrl_HitTest(hwnd, &thinfo); + if (thinfo.flags == TCHT_NOWHERE) + newDest = -1; + + if (newDest != dat->destTab) { + dat->destTab = newDest; + ImageList_DragLeave(GetDesktopWindow()); + RedrawWindow(hwnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW); ImageList_DragEnter(GetDesktopWindow(), pt.x, pt.y); - SetCursor(hDragCursor); - dat->mouseLBDownPos.x = thinfo.pt.x; - dat->mouseLBDownPos.y = thinfo.pt.y; - } else { - TCHITTESTINFO thinfo; - POINT pt; - int newDest; - GetCursorPos(&pt); - thinfo.pt = pt; - ScreenToClient(hwnd, &thinfo.pt); - newDest = TabCtrl_HitTest(hwnd, &thinfo); - if (thinfo.flags == TCHT_NOWHERE) { - newDest = -1; - } - if (newDest != dat->destTab) { - dat->destTab = newDest; - ImageList_DragLeave(GetDesktopWindow()); - RedrawWindow(hwnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW); - ImageList_DragEnter(GetDesktopWindow(), pt.x, pt.y); - } else { - ImageList_DragMove(pt.x, pt.y); - } } - dat->bDragged = TRUE; - return 0; + else ImageList_DragMove(pt.x, pt.y); } + dat->bDragged = TRUE; + return 0; } - break; - case EM_UNSUBCLASSED: - mir_free(dat); - return 0; + } + break; + + case EM_UNSUBCLASSED: + mir_free(dat); + return 0; } return mir_callNextSubclass(hwnd, TabCtrlProc, msg, wParam, lParam); } -int ScriverRestoreWindowPosition(HWND hwnd,HANDLE hContact,const char *szModule,const char *szNamePrefix, int flags, int showCmd) +int ScriverRestoreWindowPosition(HWND hwnd, HANDLE hContact, const char *szModule,const char *szNamePrefix, int flags, int showCmd) { RECT rcDesktop; WINDOWPLACEMENT wp; + wp.length = sizeof(wp); + GetWindowPlacement(hwnd, &wp); + char szSettingName[64]; - int x,y; - MONITORINFO mi; - HMONITOR hMonitor; -// SystemParametersInfo(SPI_GETWORKAREA, 0, &rcDesktop, 0); - wp.length=sizeof(wp); - GetWindowPlacement(hwnd,&wp); mir_snprintf(szSettingName, SIZEOF(szSettingName), "%sx", szNamePrefix); - x=db_get_dw(hContact,szModule,szSettingName,-1); + int x = db_get_dw(hContact,szModule,szSettingName,-1); mir_snprintf(szSettingName, SIZEOF(szSettingName), "%sy", szNamePrefix); - y=(int)db_get_dw(hContact,szModule,szSettingName,-1); - if (x==-1) return 1; - if (flags&RWPF_NOSIZE) { + int y = db_get_dw(hContact,szModule,szSettingName,-1); + if (x == -1) + return 1; + + if (flags & RWPF_NOSIZE) OffsetRect(&wp.rcNormalPosition,x-wp.rcNormalPosition.left,y-wp.rcNormalPosition.top); - } else { - wp.rcNormalPosition.left=x; - wp.rcNormalPosition.top=y; + else { + wp.rcNormalPosition.left = x; + wp.rcNormalPosition.top = y; mir_snprintf(szSettingName, SIZEOF(szSettingName), "%swidth", szNamePrefix); - wp.rcNormalPosition.right=wp.rcNormalPosition.left+db_get_dw(hContact,szModule,szSettingName,-1); + wp.rcNormalPosition.right = wp.rcNormalPosition.left + db_get_dw(hContact,szModule,szSettingName,-1); mir_snprintf(szSettingName, SIZEOF(szSettingName), "%sheight", szNamePrefix); - wp.rcNormalPosition.bottom=wp.rcNormalPosition.top+db_get_dw(hContact,szModule,szSettingName,-1); + wp.rcNormalPosition.bottom = wp.rcNormalPosition.top + db_get_dw(hContact,szModule,szSettingName,-1); } - wp.flags=0; + wp.flags = 0; wp.showCmd = showCmd; - hMonitor = MonitorFromRect(&wp.rcNormalPosition, MONITOR_DEFAULTTONEAREST); + HMONITOR hMonitor = MonitorFromRect(&wp.rcNormalPosition, MONITOR_DEFAULTTONEAREST); + MONITORINFO mi; mi.cbSize = sizeof(mi); GetMonitorInfo(hMonitor, &mi); rcDesktop = mi.rcWork; @@ -1586,22 +1577,22 @@ HWND GetParentWindow(HANDLE hContact, BOOL bChat) { if (g_dat.flags2 & SMF2_USETABS) { if (!bChat || !(g_dat.flags2 & SMF2_SEPARATECHATSCONTAINERS)) { if (g_dat.lastParent != NULL) { - int tabsNum = (int) SendMessage(g_dat.lastParent->hwnd, CM_GETCHILDCOUNT, 0, 0); - if (!(g_dat.flags2 & SMF2_LIMITTABS) || tabsNum < g_dat.limitTabsNum) { + int tabsNum = (int)SendMessage(g_dat.lastParent->hwnd, CM_GETCHILDCOUNT, 0, 0); + if (!(g_dat.flags2 & SMF2_LIMITTABS) || tabsNum < g_dat.limitTabsNum) return g_dat.lastParent->hwnd; - } } - } else { + } + else { if (g_dat.lastChatParent != NULL) { - int tabsNum = (int) SendMessage(g_dat.lastChatParent->hwnd, CM_GETCHILDCOUNT, 0, 0); + int tabsNum = (int)SendMessage(g_dat.lastChatParent->hwnd, CM_GETCHILDCOUNT, 0, 0); if (!(g_dat.flags2 & SMF2_LIMITCHATSTABS) || tabsNum < g_dat.limitChatsTabsNum) { return g_dat.lastChatParent->hwnd; } } } } - if (!(g_dat.flags2 & SMF2_SEPARATECHATSCONTAINERS)) { - newData.isChat =FALSE; - } + if ( !(g_dat.flags2 & SMF2_SEPARATECHATSCONTAINERS)) + newData.isChat = FALSE; + return CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSGWIN), NULL, DlgProcParentWindow, (LPARAM)& newData); } diff --git a/plugins/SimpleStatusMsg/src/main.cpp b/plugins/SimpleStatusMsg/src/main.cpp index caa4505ea2..ef0abee184 100644 --- a/plugins/SimpleStatusMsg/src/main.cpp +++ b/plugins/SimpleStatusMsg/src/main.cpp @@ -1004,25 +1004,21 @@ INT_PTR ShowStatusMessageDialog(WPARAM wParam, LPARAM lParam) static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) { + if (Miranda_Terminated()) + return 0; + int iStatus = (int)wParam; char *szProto = (char*)lParam; - int iDlgFlags; - BOOL bShowDlg, bOnStartup = FALSE, bGlobalStartupStatus = TRUE, bScreenSaverRunning = FALSE; - char szSetting[80]; - - if (Miranda_Terminated()) return 0; // TODO this could be done better - if (szProto && !strcmp(szProto, "SimpleStatusMsgGlobalStartupStatus")) - { + BOOL bOnStartup = FALSE, bGlobalStartupStatus = TRUE; + if (szProto && !strcmp(szProto, "SimpleStatusMsgGlobalStartupStatus")) { szProto = NULL; bOnStartup = TRUE; } - if (accounts->statusMsgCount == 1 && !szProto) - { - for (int i = 0; i < accounts->count; ++i) - { + if (accounts->statusMsgCount == 1 && !szProto) { + for (int i = 0; i < accounts->count; ++i) { if (!IsAccountEnabled(accounts->pa[i])) continue; @@ -1033,8 +1029,7 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) continue; szProto = accounts->pa[i]->szModuleName; - if (bOnStartup && iStatus == ID_STATUS_CURRENT) - { + if (bOnStartup && iStatus == ID_STATUS_CURRENT) { iStatus = GetStartupStatus(accounts->pa[i]->szModuleName); bGlobalStartupStatus = FALSE; } @@ -1042,13 +1037,14 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) } } + char szSetting[80]; mir_snprintf(szSetting, SIZEOF(szSetting), "%sFlags", szProto ? szProto : ""); - iDlgFlags = db_get_b(NULL, "SimpleStatusMsg", (char *)StatusModeToDbSetting(iStatus, szSetting), STATUS_DEFAULT); - bShowDlg = iDlgFlags & STATUS_SHOW_DLG || bOnStartup; - SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &bScreenSaverRunning, 0); + int iDlgFlags = db_get_b(NULL, "SimpleStatusMsg", (char *)StatusModeToDbSetting(iStatus, szSetting), STATUS_DEFAULT); - if (szProto) - { + BOOL bShowDlg = iDlgFlags & STATUS_SHOW_DLG || bOnStartup; + BOOL bScreenSaverRunning = IsScreenSaverRunning(); + + if (szProto) { struct MsgBoxInitData *box_data; int status_modes = 0, status_modes_msg = 0, iProtoFlags; @@ -1057,10 +1053,8 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) return 0; status_modes_msg = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0); - if (!(Proto_Status2Flag(iStatus) & status_modes_msg) || !(CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND)) - { - if (bOnStartup && GetCurrentStatus(szProto) != iStatus) - { + if (!(Proto_Status2Flag(iStatus) & status_modes_msg) || !(CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND)) { + if (bOnStartup && GetCurrentStatus(szProto) != iStatus) { CallProtoService(szProto, PS_SETSTATUS, iStatus, 0); #ifdef _DEBUG log2file("ChangeStatusMessage(): Set %s status for %s.", StatusModeToDbSetting(iStatus, ""), szProto); @@ -1071,13 +1065,11 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) mir_snprintf(szSetting, SIZEOF(szSetting), "Proto%sFlags", szProto); iProtoFlags = db_get_b(NULL, "SimpleStatusMsg", szSetting, PROTO_DEFAULT); - if (iProtoFlags & PROTO_NO_MSG || iProtoFlags & PROTO_THIS_MSG) - { + if (iProtoFlags & PROTO_NO_MSG || iProtoFlags & PROTO_THIS_MSG) { if (HasProtoStaticStatusMsg(szProto, iStatus, iStatus)) return 1; } - else if (iProtoFlags & PROTO_NOCHANGE && !bOnStartup) - { + else if (iProtoFlags & PROTO_NOCHANGE && !bOnStartup) { DBVARIANT dbv; TCHAR *msg = NULL; @@ -1097,8 +1089,7 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) return 1; } - if (!bShowDlg || bScreenSaverRunning) - { + if (!bShowDlg || bScreenSaverRunning) { TCHAR *msg = GetAwayMessageFormat(iStatus, szProto); #ifdef _DEBUG log2file("ChangeStatusMessage(): Set %s status and \"%S\" status message for %s.", StatusModeToDbSetting(iStatus, ""), msg, szProto); @@ -1128,21 +1119,15 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) DestroyWindow(hwndSAMsgDialog); hwndSAMsgDialog = CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_AWAYMSGBOX), NULL, AwayMsgBoxDlgProc, (LPARAM)box_data); } - else - { - struct MsgBoxInitData *box_data; - int iProtoFlags; - + else { // iStatus == ID_STATUS_CURRENT only when bOnStartup == TRUE if (iStatus == ID_STATUS_OFFLINE || (!(accounts->statusMsgFlags & Proto_Status2Flag(iStatus)) && iStatus != ID_STATUS_CURRENT)) return 0; - iProtoFlags = db_get_b(NULL, "SimpleStatusMsg", "ProtoFlags", PROTO_DEFAULT); - if (!bShowDlg || bScreenSaverRunning || (iProtoFlags & PROTO_NOCHANGE && !bOnStartup)) - { + int iProtoFlags = db_get_b(NULL, "SimpleStatusMsg", "ProtoFlags", PROTO_DEFAULT); + if (!bShowDlg || bScreenSaverRunning || (iProtoFlags & PROTO_NOCHANGE && !bOnStartup)) { TCHAR *msg = NULL; - for (int i = 0; i < accounts->count; ++i) - { + for (int i = 0; i < accounts->count; ++i) { if (!IsAccountEnabled(accounts->pa[i])) continue; @@ -1156,8 +1141,7 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) !(CallProtoService(accounts->pa[i]->szModuleName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND)) continue; - if (iProtoFlags & PROTO_NOCHANGE) - { + if (iProtoFlags & PROTO_NOCHANGE) { DBVARIANT dbv; mir_snprintf(szSetting, SIZEOF(szSetting), "FCur%sMsg", accounts->pa[i]->szModuleName); if (!db_get_ts(NULL, "SimpleStatusMsg", szSetting, &dbv)) @@ -1179,7 +1163,7 @@ static int ChangeStatusMessage(WPARAM wParam, LPARAM lParam) return 1; } - box_data = (struct MsgBoxInitData *)mir_alloc(sizeof(struct MsgBoxInitData)); + MsgBoxInitData *box_data = (MsgBoxInitData*)mir_alloc( sizeof(MsgBoxInitData)); box_data->m_szProto = NULL; box_data->m_iStatus = iStatus; box_data->m_iStatusModes = accounts->statusFlags; @@ -1263,27 +1247,9 @@ static INT_PTR SetOutToLunchStatus(WPARAM wParam, LPARAM lParam) static int ProcessProtoAck(WPARAM wParam,LPARAM lParam) { ACKDATA *ack = (ACKDATA *)lParam; - if (!ack || !ack->szModule) return 0; - if (ack->type == ACKTYPE_AWAYMSG && ack->result == ACKRESULT_SENTREQUEST && !ack->lParam) - { - TCHAR *tszMsg = GetAwayMessage(CallProtoService((char *)ack->szModule, PS_GETSTATUS, 0, 0), (char *)ack->szModule, TRUE, NULL); - - { - char *szMsg = mir_u2a(tszMsg); - CallContactService(ack->hContact, PSS_AWAYMSG, (WPARAM)(HANDLE)ack->hProcess, (LPARAM)szMsg); - if (szMsg) mir_free(szMsg); - } - -#ifdef _DEBUG - log2file("ProcessProtoAck(): Send away message \"%S\" reply.", tszMsg); -#endif - if (tszMsg) mir_free(tszMsg); - return 0; - } - if (ack->type != ACKTYPE_STATUS || ack->result != ACKRESULT_SUCCESS || ack->hContact != NULL) return 0; diff --git a/plugins/StatusPlugins/AdvancedAutoAway/advancedautoaway.cpp b/plugins/StatusPlugins/AdvancedAutoAway/advancedautoaway.cpp index 7e372640ab..5a3a801732 100644 --- a/plugins/StatusPlugins/AdvancedAutoAway/advancedautoaway.cpp +++ b/plugins/StatusPlugins/AdvancedAutoAway/advancedautoaway.cpp @@ -88,7 +88,6 @@ static LRESULT CALLBACK MouseHookFunction(int code, WPARAM wParam, LPARAM lParam static LRESULT CALLBACK KeyBoardHookFunction(int code, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK MirandaMouseHookFunction(int code, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK MirandaKeyBoardHookFunction(int code, WPARAM wParam, LPARAM lParam); -static BOOL IsSaverRunning(); BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved); static VOID CALLBACK AutoAwayTimer(HWND hwnd,UINT message,UINT_PTR idEvent,DWORD dwTime); @@ -280,8 +279,8 @@ static VOID CALLBACK AutoAwayTimer(HWND hwnd,UINT message,UINT_PTR idEvent,DWORD int sts2Time = aas.naTime * SECS_PER_MINUTE; int sts1setTime = aas.sts1setTimer==0?0:(GetTickCount() - aas.sts1setTimer)/1000; int currentMode = CallProtoService(aas.szName,PS_GETSTATUS,0, 0); - if ( aas.optionFlags & FLAG_ONSAVER ) - SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &screenSaver, FALSE); + if (aas.optionFlags & FLAG_ONSAVER) + screenSaver = IsScreenSaverRunning(); if (aas.optionFlags & FLAG_ONLOCK) locked = IsWorkstationLocked(); -- cgit v1.2.3