Index: res/Resource.rc =================================================================== --- res/Resource.rc (Revision 9087) +++ res/Resource.rc (Arbeitskopie) @@ -43,7 +43,7 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CTEXT "PluginUpdater has detected updated versions of some Miranda components. Click on Details button to view more information.",IDC_UPDATETEXT,9,7,223,24 - DEFPUSHBUTTON "Update",IDOK,32,36,50,14 + DEFPUSHBUTTON "Update",IDOK,32,36,50,14,WS_DISABLED PUSHBUTTON "Details >>",IDC_DETAILS,95,36,50,14,NOT WS_TABSTOP PUSHBUTTON "Cancel",IDCANCEL,157,36,50,14 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,1,58,236,1 @@ -58,15 +58,15 @@ BEGIN END -IDD_OPT_UPDATENOTIFY DIALOGEX 0, 0, 261, 197 +IDD_OPT_UPDATENOTIFY DIALOGEX 0, 0, 261, 187 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Hotkey",IDC_STATIC,2,0,253,26 + GROUPBOX "Hotkey",IDC_STATIC,5,0,250,26 CONTROL "Go to Customize -> Hotkeys to change the hotkey",IDC_LINK_HOTKEY, - "Hyperlink",WS_TABSTOP,9,11,199,10 - GROUPBOX "Plugin updates options",IDC_STATIC,1,29,253,48 + "Hyperlink",WS_TABSTOP,11,11,239,10 + GROUPBOX "Plugin updates options",IDC_STATIC,5,29,249,59 CONTROL "On startup",IDC_UPDATEONSTARTUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,44,73,10 CONTROL "(but only once a day)",IDC_ONLYONCEADAY,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,92,44,161,10 CONTROL "Every",IDC_UPDATEONPERIOD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,58,52,10 @@ -73,25 +73,26 @@ EDITTEXT IDC_PERIOD,65,56,28,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED CONTROL "",IDC_PERIODSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_DISABLED,92,56,10,15 COMBOBOX IDC_PERIODMEASURE,114,56,58,30,CBS_DROPDOWNLIST | CBS_SORT | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Files source",IDC_STATIC,1,80,253,96 - CONTROL "Stable version",IDC_STABLE,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,93,236,10 - CONTROL "Development version (less stable)",IDC_TRUNK,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,108,236,10 + GROUPBOX "Files source",IDC_STATIC,5,94,249,85 + CONTROL "Stable version",IDC_STABLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,11,107,239,10 + CONTROL "Development version (less stable)",IDC_TRUNK,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,119,239,10 CONTROL "Development version with debug symbols",IDC_TRUNK_SYMBOLS, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,123,236,10 - CONTROL "Custom version",IDC_CUSTOM,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,138,236,10 - EDITTEXT IDC_CUSTOMURL,11,152,234,16,ES_AUTOHSCROLL + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,131,239,10 + CONTROL "Custom version",IDC_CUSTOM,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11,145,239,10 + EDITTEXT IDC_CUSTOMURL,11,158,239,16,ES_AUTOHSCROLL + CONTROL "Automatically restart after update",IDC_RESTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,73,239,12 END -IDD_POPUP DIALOGEX 0, 0, 316, 182 +IDD_POPUP DIALOGEX 0, 0, 309, 171 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Notifications",IDC_NOTIFY,1,0,172,79 - CONTROL "Message boxes (*)",IDC_MSG_BOXES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,19,79,10 - CONTROL "Errors",IDC_ERRORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,32,57,10 - CONTROL "Info messages",IDC_INFO_MESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,45,80,10 - CONTROL "Progress dialogs",IDC_PROGR_DLG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,59,80,10 + CONTROL "Message boxes (*)",IDC_MSG_BOXES,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,6,19,79,10 + CONTROL "Errors",IDC_ERRORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,32,79,10 + CONTROL "Info messages",IDC_INFO_MESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,45,79,10 + CONTROL "Progress dialogs",IDC_PROGR_DLG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,59,79,10 CTEXT "Back",IDC_STATIC,90,8,24,8 CTEXT "Text",IDC_STATIC,116,8,24,8 CONTROL "",IDC_MSG_BOXES_BG,"ColourPicker",WS_TABSTOP,90,17,24,12 @@ -102,43 +103,43 @@ CONTROL "",IDC_INFO_MESSAGES_TX,"ColourPicker",WS_TABSTOP,116,44,24,12 CONTROL "",IDC_PROGR_DLG_BG,"ColourPicker",WS_TABSTOP,90,58,24,12 CONTROL "",IDC_PROGR_DLG_TX,"ColourPicker",WS_TABSTOP,116,58,24,12 - GROUPBOX "Colors",IDC_COLORS,178,0,133,44,WS_GROUP - CONTROL "Use cus&tom colors",IDC_USEOWNCOLORS,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | BS_NOTIFY,186,8,122,13 - CONTROL "Use &Windows colors",IDC_USEWINCOLORS,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | BS_NOTIFY,186,30,121,13 - CONTROL "Use Pop&up colors",IDC_USEPOPUPCOLORS,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | BS_NOTIFY,186,19,102,13 - PUSHBUTTON "Preview",IDC_PREVIEW,189,104,57,12 - GROUPBOX "Click action",IDC_STATIC,1,83,145,67,WS_GROUP - COMBOBOX IDC_LC,6,103,127,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_RC,6,130,127,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "On left click",IDC_STATIC,8,94,121,8 - LTEXT "On right click",IDC_STATIC,8,120,121,8 - GROUPBOX "Timeout",IDC_STATIC,178,45,133,51 - EDITTEXT IDC_TIMEOUT_VALUE,194,59,32,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_TIMEOUT_VALUE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,215,59,12,12 - CTEXT "0 = Default",IDC_STATIC_DEFAULT,250,56,55,8 - CTEXT "-1 = Infinite",IDC_STATIC_INFINITE,249,66,54,8 - LTEXT "Sec",IDC_STATIC_SEC,230,61,17,8 + GROUPBOX "Colors",IDC_COLORS,178,0,126,44,WS_GROUP + CONTROL "Use cus&tom colors",IDC_USEOWNCOLORS,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | BS_NOTIFY,186,8,113,13 + CONTROL "Use &Windows colors",IDC_USEWINCOLORS,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | BS_NOTIFY,186,30,113,13 + CONTROL "Use Pop&up colors",IDC_USEPOPUPCOLORS,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | BS_NOTIFY,186,19,113,13 + PUSHBUTTON "Preview",IDC_PREVIEW,186,104,60,12 + GROUPBOX "Click action",IDC_STATIC,1,83,171,67,WS_GROUP + COMBOBOX IDC_LC,6,103,160,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RC,6,130,160,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "On left click",IDC_STATIC,8,94,158,8 + LTEXT "On right click",IDC_STATIC,8,120,158,8 + GROUPBOX "Timeout",IDC_STATIC,178,45,126,51 + EDITTEXT IDC_TIMEOUT_VALUE,186,59,28,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_TIMEOUT_VALUE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,213,59,11,12 + CTEXT "0 = Default",IDC_STATIC_DEFAULT,244,56,55,8 + CTEXT "-1 = Infinite",IDC_STATIC_INFINITE,244,66,55,8 + LTEXT "Sec",IDC_STATIC_SEC,226,61,18,8 LTEXT "* Needs popup actions to be enabled",IDC_STATIC,4,156,190,8 - LTEXT "Not sets for ""Message boxes""",IDC_STATIC,185,80,123,8 + LTEXT "Not sets for ""Message boxes""",IDC_STATIC,186,80,113,8 CONTROL "",IDC_MSG_BOXES_MSG,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,153,19,8,10 CONTROL "",IDC_ERRORS_MSG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,153,32,8,10 CONTROL "",IDC_INFO_MESSAGES_MSG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,153,45,8,10 CONTROL "",IDC_PROGR_DLG_MSG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,153,59,8,10 CTEXT "Boxes",IDC_STATIC,146,8,23,8 - CTEXT "Popups",IDC_STATIC,7,9,79,8 + CTEXT "Popups",IDC_STATIC,6,9,79,8 END -IDD_LIST DIALOGEX 0, 0, 240, 236 +IDD_LIST DIALOGEX 0, 0, 241, 249 STYLE DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_CONTROLPARENT CAPTION "Component list" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - CTEXT "Here is the complete list of missing Miranda NG components. Check components that you want to download.\n\nClick on info icon to view component info page.",IDC_UPDATETEXT,9,9,223,44 - DEFPUSHBUTTON "Download",IDOK,175,218,60,14 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,1,58,236,1 - CONTROL "",IDC_LIST_UPDATES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,6,64,229,149 - PUSHBUTTON "Select &none",IDC_SELNONE,109,218,60,14,NOT WS_TABSTOP + CTEXT "Here is the complete list of missing Miranda NG components. Check components that you want to download.\n\nClick on info icon to view component info page.",IDC_UPDATETEXT,9,9,223,37 + DEFPUSHBUTTON "Download",IDOK,175,51,60,14 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,-1,79,236,1 + CONTROL "",IDC_LIST_UPDATES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,6,89,229,149 + PUSHBUTTON "Select &none",IDC_SELNONE,113,51,60,14,NOT WS_TABSTOP END @@ -183,15 +184,39 @@ IDD_OPT_UPDATENOTIFY, DIALOG BEGIN - BOTTOMMARGIN, 196 + VERTGUIDE, 5 + VERTGUIDE, 11 + VERTGUIDE, 250 + VERTGUIDE, 254 + BOTTOMMARGIN, 182 END + IDD_POPUP, DIALOG + BEGIN + VERTGUIDE, 1 + VERTGUIDE, 6 + VERTGUIDE, 85 + VERTGUIDE, 90 + VERTGUIDE, 114 + VERTGUIDE, 116 + VERTGUIDE, 140 + VERTGUIDE, 153 + VERTGUIDE, 166 + VERTGUIDE, 172 + VERTGUIDE, 178 + VERTGUIDE, 186 + VERTGUIDE, 244 + VERTGUIDE, 299 + VERTGUIDE, 304 + END + IDD_LIST, DIALOG BEGIN + RIGHTMARGIN, 240 VERTGUIDE, 6 VERTGUIDE, 235 - BOTTOMMARGIN, 234 - HORZGUIDE, 232 + BOTTOMMARGIN, 247 + HORZGUIDE, 65 END END #endif // APSTUDIO_INVOKED Index: src/Common.h =================================================================== --- src/Common.h (Revision 9087) +++ src/Common.h (Arbeitskopie) @@ -92,7 +92,7 @@ struct PlugOptions { - BYTE bUpdateOnStartup, bUpdateOnPeriod, bOnlyOnceADay, bForceRedownload; + BYTE bUpdateOnStartup, bUpdateOnPeriod, bOnlyOnceADay, bForceRedownload, bRestart; BOOL bSilent, bDlgDld; BYTE bPeriodMeasure; @@ -105,6 +105,7 @@ #define DEFAULT_UPDATEONPERIOD 0 #define DEFAULT_PERIOD 1 #define DEFAULT_PERIODMEASURE 1 +#define DEFAULT_RESTART 0 #define DEFAULT_UPDATE_URL "http://miranda-ng.org/distr/stable/x%platform%" #define DEFAULT_UPDATE_URL_TRUNK "http://miranda-ng.org/distr/x%platform%" Index: src/DlgListNew.cpp =================================================================== --- src/DlgListNew.cpp (Revision 9087) +++ src/DlgListNew.cpp (Arbeitskopie) @@ -19,6 +19,9 @@ #include "common.h" +bool bFinishedNew = false; + + static void SelectAll(HWND hDlg, bool bEnable) { OBJLIST &todo = *(OBJLIST *)GetWindowLongPtr(hDlg, GWLP_USERDATA); @@ -48,7 +51,7 @@ AutoHandle pipe(hPipe); HWND hwndList = GetDlgItem(hDlg, IDC_LIST_UPDATES); OBJLIST &todo = *(OBJLIST *)GetWindowLongPtr(hDlg, GWLP_USERDATA); - TCHAR tszBuff[2048], tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH]; + TCHAR tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH]; mir_sntprintf(tszFileBack, SIZEOF(tszFileBack), _T("%s\\Backups"), tszRoot); SafeCreateDirectory(tszFileBack); @@ -61,18 +64,18 @@ ListView_EnsureVisible(hwndList, i, FALSE); if (!todo[i].bEnabled) { ListView_SetItemText(hwndList, i, 2, TranslateT("Skipped.")); - continue; } + else { + // download update + ListView_SetItemText(hwndList, i, 2, TranslateT("Downloading...")); - // download update - ListView_SetItemText(hwndList, i, 2, TranslateT("Downloading...")); - - FILEURL *pFileUrl = &todo[i].File; - if (!DownloadFile(pFileUrl->tszDownloadURL, pFileUrl->tszDiskPath, pFileUrl->CRCsum, nlc)) { - ListView_SetItemText(hwndList, i, 2, TranslateT("Failed!")); + FILEURL *pFileUrl = &todo[i].File; + if (!DownloadFile(pFileUrl->tszDownloadURL, pFileUrl->tszDiskPath, pFileUrl->CRCsum, nlc)) { + ListView_SetItemText(hwndList, i, 2, TranslateT("Failed!")); + } + else + ListView_SetItemText(hwndList, i, 2, TranslateT("Succeeded.")); } - else - ListView_SetItemText(hwndList, i, 2, TranslateT("Succeeded.")); } Netlib_CloseHandle(nlc); @@ -107,19 +110,15 @@ SafeDeleteFile(p.File.tszDiskPath); // remove .zip after successful update } } - - PopupDataText temp; - temp.Title = TranslateT("Plugin Updater"); - temp.Text = tszBuff; - lstrcpyn(tszBuff, TranslateT("Download complete. Do you want to go to plugins option page?"), SIZEOF(tszBuff)); - int rc = MessageBox(hDlg, temp.Text, temp.Title, MB_YESNO | MB_ICONQUESTION); - if (rc == IDYES) - CallFunctionAsync(OpenPluginOptions, 0); - - CloseWindow(hDlg); - DestroyWindow(hDlg); - hwndDialog = NULL; - return; + + SetWindowText(hDlg,TranslateT("Download complete")); + SetDlgItemText(hDlg,IDC_UPDATETEXT,TranslateT("Do you want to go to plugins option page?")); + EnableWindow(GetDlgItem(hDlg,IDOK),TRUE); + SetDlgItemText(hDlg,IDOK,TranslateT("&No")); + EnableWindow(GetDlgItem(hDlg,IDC_SELNONE),TRUE); + SetDlgItemText(hDlg,IDC_SELNONE,TranslateT("&Yes")); + Button_SetElevationRequiredState(GetDlgItem(hDlg, IDOK), FALSE); + bFinishedNew = true; } ///////////////////////////////////////////////////////////////////////////////////////// @@ -159,7 +158,7 @@ switch (urc->wId) { case IDC_SELNONE: case IDOK: - return RD_ANCHORX_RIGHT | RD_ANCHORY_BOTTOM; + return RD_ANCHORX_RIGHT | RD_ANCHORY_TOP; case IDC_UPDATETEXT: return RD_ANCHORX_CENTRE; @@ -322,14 +321,22 @@ if (HIWORD( wParam ) == BN_CLICKED) { switch(LOWORD(wParam)) { case IDOK: - EnableWindow( GetDlgItem(hDlg, IDOK), FALSE); - EnableWindow( GetDlgItem(hDlg, IDC_SELNONE), FALSE); - - mir_forkthread(ApplyDownloads, hDlg); + if(bFinishedNew) + DestroyWindow(hDlg); + else { + EnableWindow( GetDlgItem(hDlg, IDOK), FALSE); + EnableWindow( GetDlgItem(hDlg, IDC_SELNONE), FALSE); + mir_forkthread(ApplyDownloads, hDlg); + } return TRUE; case IDC_SELNONE: - SelectAll(hDlg, false); + if(bFinishedNew) { + CallFunctionAsync(OpenPluginOptions, 0); + DestroyWindow(hDlg); + } + else + SelectAll(hDlg, false); break; case IDCANCEL: @@ -368,6 +375,7 @@ hwndDialog = NULL; delete (OBJLIST *)GetWindowLongPtr(hDlg, GWLP_USERDATA); SetWindowLongPtr(hDlg, GWLP_USERDATA, 0); + bFinishedNew = false; break; } Index: src/DlgUpdate.cpp =================================================================== --- src/DlgUpdate.cpp (Revision 9087) +++ src/DlgUpdate.cpp (Arbeitskopie) @@ -21,7 +21,8 @@ #define UM_ERROR (WM_USER+1) -static bool bShowDetails; +static bool bShowDetails = false, bFinishedUpdate = false; +static HANDLE hUpdateThread = NULL; static void SelectAll(HWND hDlg, bool bEnable) { @@ -57,7 +58,7 @@ AutoHandle pipe(hPipe); HWND hwndList = GetDlgItem(hDlg, IDC_LIST_UPDATES); OBJLIST &todo = *(OBJLIST *)GetWindowLongPtr(hDlg, GWLP_USERDATA); - TCHAR tszBuff[2048], tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH]; + TCHAR tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH]; mir_sntprintf(tszFileBack, SIZEOF(tszFileBack), _T("%s\\Backups"), tszRoot); SafeCreateDirectory(tszFileBack); @@ -71,25 +72,24 @@ ListView_EnsureVisible(hwndList, i, FALSE); if (!todo[i].bEnabled) { SetStringText(hwndList, i, TranslateT("Skipped.")); - continue; } - if (todo[i].bDeleteOnly) { + else if (todo[i].bDeleteOnly) { SetStringText(hwndList, i, TranslateT("Will be deleted!")); - continue; } + else { + // download update + SetStringText(hwndList, i, TranslateT("Downloading...")); - // download update - SetStringText(hwndList, i, TranslateT("Downloading...")); + FILEURL *pFileUrl = &todo[i].File; + if (!DownloadFile(pFileUrl->tszDownloadURL, pFileUrl->tszDiskPath, pFileUrl->CRCsum, nlc)) { + SetStringText(hwndList, i, TranslateT("Failed!")); - FILEURL *pFileUrl = &todo[i].File; - if (!DownloadFile(pFileUrl->tszDownloadURL, pFileUrl->tszDiskPath, pFileUrl->CRCsum, nlc)) { - SetStringText(hwndList, i, TranslateT("Failed!")); - - // interrupt update as we require all components to be updated - error = true; - break; + // interrupt update as we require all components to be updated + error = true; + break; + } + SetStringText(hwndList, i, TranslateT("Succeeded.")); } - SetStringText(hwndList, i, TranslateT("Succeeded.")); } Netlib_CloseHandle(nlc); @@ -138,15 +138,26 @@ db_set_b(NULL, MODNAME, "RestartCount", 5); - PopupDataText temp; - temp.Title = TranslateT("Plugin Updater"); - temp.Text = tszBuff; - lstrcpyn(tszBuff, TranslateT("Update complete. Press Yes to restart Miranda now or No to postpone a restart until the exit."), SIZEOF(tszBuff)); - int rc = MessageBox(hDlg, temp.Text, temp.Title, MB_YESNO | MB_ICONQUESTION); - if (rc == IDYES) + if(opts.bRestart) { CallFunctionAsync(RestartMe, 0); + } + else { + // change the text of the controls + SetWindowText(hDlg,TranslateT("Update complete")); + SetDlgItemText(hDlg,IDC_UPDATETEXT,TranslateT("Press Restart to restart Miranda now or Close to postpone a restart until the exit.")); + SetDlgItemText(hDlg,IDOK,TranslateT("&Restart")); + SetDlgItemText(hDlg,IDCANCEL,TranslateT("&Close")); + EnableWindow(GetDlgItem(hDlg,IDOK),TRUE); + Button_SetElevationRequiredState(GetDlgItem(hDlg, IDOK), FALSE); +/* + // this brings the dialog to foreground + ShowWindow(hDlg, SW_SHOW); + SetForegroundWindow(hDlg); + SetFocus(hDlg); +*/ + bFinishedUpdate = true; + } } - DestroyWindow(hDlg); } static void ResizeVert(HWND hDlg, int yy) @@ -232,8 +243,8 @@ if (todo[i].bEnabled) enableOk = true; } - HWND hwOk = GetDlgItem(hDlg, IDOK); - EnableWindow(hwOk, enableOk); + if(enableOk) + EnableWindow(GetDlgItem(hDlg, IDOK), TRUE); } bShowDetails = false; @@ -282,11 +293,19 @@ if (HIWORD( wParam ) == BN_CLICKED) { switch(LOWORD(wParam)) { case IDOK: - EnableWindow( GetDlgItem(hDlg, IDOK), FALSE); - EnableWindow( GetDlgItem(hDlg, IDC_SELALL), FALSE); - EnableWindow( GetDlgItem(hDlg, IDC_SELNONE), FALSE); - - mir_forkthread(ApplyUpdates, hDlg); + if(bFinishedUpdate) { + // After Update is finished, it will restart Miranda + CallFunctionAsync(RestartMe, 0); + DestroyWindow(hDlg); + } + else { + // It will start the update otherwise + SetWindowText(hDlg,TranslateT("Update in progress, please wait!")); + EnableWindow(GetDlgItem(hDlg, IDOK), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_SELALL), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_SELNONE), FALSE); + hUpdateThread = mir_forkthread(ApplyUpdates, hDlg); + } return TRUE; case IDC_DETAILS: @@ -312,8 +331,8 @@ break; case UM_ERROR: - MessageBox(hDlg, TranslateT("Update failed! One of the components wasn't downloaded correctly. Try it again later."), TranslateT("Plugin Updater"), MB_OK | MB_ICONERROR); - DestroyWindow(hDlg); + SetWindowText(hDlg,TranslateT("Update failed!")); + SetDlgItemText(hDlg,IDC_UPDATETEXT, TranslateT("Update failed! One of the components wasn't downloaded correctly. Try it again later.")); break; case WM_DESTROY: @@ -322,6 +341,7 @@ hwndDialog = NULL; delete (OBJLIST *)GetWindowLongPtr(hDlg, GWLP_USERDATA); SetWindowLongPtr(hDlg, GWLP_USERDATA, 0); + bFinishedUpdate = false; break; } Index: src/Events.cpp =================================================================== --- src/Events.cpp (Revision 9087) +++ src/Events.cpp (Arbeitskopie) @@ -30,7 +30,7 @@ return 0; } -int ModulesLoaded(WPARAM wParam, LPARAM lParam) +int ModulesLoaded(WPARAM, LPARAM) { HookEvent(ME_FOLDERS_PATH_CHANGED, OnFoldersChanged); @@ -51,7 +51,7 @@ return 0; } -INT_PTR MenuCommand(WPARAM wParam,LPARAM lParam) +INT_PTR MenuCommand(WPARAM,LPARAM) { opts.bSilent = false; DoCheck(true); @@ -59,7 +59,7 @@ } #if MIRANDA_VER >= 0x0A00 -INT_PTR ShowListCommand(WPARAM wParam,LPARAM lParam) +INT_PTR ShowListCommand(WPARAM,LPARAM) { opts.bSilent = false; DoGetList(true); @@ -67,7 +67,7 @@ } #endif -INT_PTR EmptyFolder(WPARAM wParam,LPARAM lParam) +INT_PTR EmptyFolder(WPARAM,LPARAM lParam) { SHFILEOPSTRUCT file_op = { NULL, @@ -85,7 +85,7 @@ return 0; } -int OnPreShutdown(WPARAM wParam, LPARAM lParam) +int OnPreShutdown(WPARAM, LPARAM) { CancelWaitableTimer(Timer); CloseHandle(Timer); Index: src/Options.cpp =================================================================== --- src/Options.cpp (Revision 9087) +++ src/Options.cpp (Arbeitskopie) @@ -46,6 +46,7 @@ EnableWindow(GetDlgItem(hwndDlg, IDC_PERIOD), opts.bUpdateOnPeriod); EnableWindow(GetDlgItem(hwndDlg, IDC_PERIODSPIN), opts.bUpdateOnPeriod); EnableWindow(GetDlgItem(hwndDlg, IDC_PERIODMEASURE), opts.bUpdateOnPeriod); + CheckDlgButton(hwndDlg, IDC_RESTART, opts.bRestart); SendDlgItemMessage(hwndDlg, IDC_PERIODSPIN, UDM_SETRANGE, 0, MAKELONG(99, 1)); SendDlgItemMessage(hwndDlg, IDC_PERIODSPIN, UDM_SETPOS, 0, (LPARAM)opts.Period); @@ -86,6 +87,7 @@ break; case IDC_ONLYONCEADAY: + case IDC_RESTART: SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; @@ -135,6 +137,7 @@ opts.bOnlyOnceADay = IsDlgButtonChecked(hwndDlg, IDC_ONLYONCEADAY); opts.bUpdateOnPeriod = IsDlgButtonChecked(hwndDlg, IDC_UPDATEONPERIOD); + opts.bRestart = IsDlgButtonChecked(hwndDlg, IDC_RESTART); TCHAR buffer[3] = {0}; Edit_GetText(GetDlgItem(hwndDlg, IDC_PERIOD), buffer, SIZEOF(buffer)); @@ -146,6 +149,7 @@ db_set_b(NULL, MODNAME, "OnlyOnceADay", opts.bOnlyOnceADay); db_set_b(NULL, MODNAME, "UpdateOnPeriod", opts.bUpdateOnPeriod); db_set_b(NULL, MODNAME, "PeriodMeasure", opts.bPeriodMeasure); + db_set_b(NULL, MODNAME, "Restart", opts.bRestart); db_set_dw(NULL, MODNAME, "Period", opts.Period); InitTimer(1); @@ -176,13 +180,10 @@ INT_PTR CALLBACK DlgPopupOpts(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { - int i; - char str[20] = {0}, str2[20] = {0}; - switch (msg) { - case WM_INITDIALOG: + case WM_INITDIALOG: { TranslateDialogDefault(hdlg); - + bool havePopups = ServiceExists(MS_POPUP_ADDPOPUPT) != 0; //Colors if (PopupOptions.DefColors == byCOLOR_OWN) { CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_CHECKED); @@ -189,21 +190,21 @@ CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_UNCHECKED); } - if (PopupOptions.DefColors == byCOLOR_WINDOWS) { + else if (PopupOptions.DefColors == byCOLOR_WINDOWS) { CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_CHECKED); } - if (PopupOptions.DefColors == byCOLOR_POPUP) { + else if (PopupOptions.DefColors == byCOLOR_POPUP) { CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_CHECKED); CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_UNCHECKED); } - for (i = 0; i < POPUPS; i++) { + for (int i = 0; i < POPUPS; i++) { SendDlgItemMessage(hdlg, (i+42071), CPM_SETCOLOUR, 0, PopupsList[i].colorBack); SendDlgItemMessage(hdlg, (i+41071), CPM_SETCOLOUR, 0, PopupsList[i].colorText); - EnableWindow(GetDlgItem(hdlg, (i+42071)), (PopupOptions.DefColors == byCOLOR_OWN)); - EnableWindow(GetDlgItem(hdlg, (i+41071)), (PopupOptions.DefColors == byCOLOR_OWN)); + EnableWindow(GetDlgItem(hdlg, (i+42071)), havePopups && (PopupOptions.DefColors == byCOLOR_OWN)); + EnableWindow(GetDlgItem(hdlg, (i+41071)), havePopups && (PopupOptions.DefColors == byCOLOR_OWN)); } //Timeout SendDlgItemMessage(hdlg, IDC_TIMEOUT_VALUE, EM_LIMITTEXT, 4, 0); @@ -210,28 +211,36 @@ SendDlgItemMessage(hdlg, IDC_TIMEOUT_VALUE_SPIN, UDM_SETRANGE32, -1, 9999); SetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, PopupOptions.Timeout, TRUE); //Mouse actions - for (i = 0; i < SIZEOF(PopupActions); i++) { - SendMessage(GetDlgItem(hdlg, IDC_LC), CB_SETITEMDATA, SendMessage(GetDlgItem(hdlg, IDC_LC), CB_ADDSTRING, 0, (LPARAM)TranslateTS(PopupActions[i].Text)), PopupActions[i].Action); - SendMessage(GetDlgItem(hdlg, IDC_RC), CB_SETITEMDATA, SendMessage(GetDlgItem(hdlg, IDC_RC), CB_ADDSTRING, 0, (LPARAM)TranslateTS(PopupActions[i].Text)), PopupActions[i].Action); + for (int i = 0; i < SIZEOF(PopupActions); i++) { + SendDlgItemMessage(hdlg, IDC_LC, CB_SETITEMDATA, SendDlgItemMessage(hdlg, IDC_LC, CB_ADDSTRING, 0, (LPARAM)TranslateTS(PopupActions[i].Text)), PopupActions[i].Action); + SendDlgItemMessage(hdlg, IDC_RC, CB_SETITEMDATA, SendDlgItemMessage(hdlg, IDC_RC, CB_ADDSTRING, 0, (LPARAM)TranslateTS(PopupActions[i].Text)), PopupActions[i].Action); } SendDlgItemMessage(hdlg, IDC_LC, CB_SETCURSEL, PopupOptions.LeftClickAction, 0); SendDlgItemMessage(hdlg, IDC_RC, CB_SETCURSEL, PopupOptions.RightClickAction, 0); //Popups nitified - for (i = 0; i < POPUPS; i++) { + for (int i = 0; i < POPUPS; i++) { + char str[20] = {0}, str2[20] = {0}; mir_snprintf(str, SIZEOF(str), "Popups%d", i); mir_snprintf(str2, SIZEOF(str2), "Popups%dM", i); CheckDlgButton(hdlg, (i+40071), (db_get_b(NULL, MODNAME, str, DEFAULT_POPUP_ENABLED)) ? BST_CHECKED: BST_UNCHECKED); CheckDlgButton(hdlg, (i+1024), (db_get_b(NULL, MODNAME, str2, DEFAULT_MESSAGE_ENABLED)) ? BST_CHECKED: BST_UNCHECKED); - if (IsDlgButtonChecked(hdlg, (i+40071))) + if (IsDlgButtonChecked(hdlg, (i+40071)) || !havePopups) EnableWindow(GetDlgItem(hdlg, (i+1024)), FALSE); - else if (i > 0) - EnableWindow(GetDlgItem(hdlg, (i+1024)), TRUE); } EnableWindow(GetDlgItem(hdlg, (40071)), FALSE); + if(!havePopups) { + EnableWindow(GetDlgItem(hdlg, IDC_LC), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_RC), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_TIMEOUT_VALUE), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_TIMEOUT_VALUE_SPIN), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_USEOWNCOLORS), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_USEPOPUPCOLORS), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_USEWINCOLORS), FALSE); + } return TRUE; - + } case WM_SHOWWINDOW: EnableWindow(GetDlgItem(hdlg, (40071)), FALSE); return TRUE; @@ -269,7 +278,7 @@ PopupOptions.DefColors = byCOLOR_OWN; - for (i = 0; i < POPUPS; i++) { + for (int i = 0; i < POPUPS; i++) { EnableWindow(GetDlgItem(hdlg, (i+42071)), TRUE); //Background EnableWindow(GetDlgItem(hdlg, (i+41071)), TRUE); //Text } @@ -282,7 +291,7 @@ //Use Windows colors PopupOptions.DefColors = byCOLOR_WINDOWS; - for (i = 0; i < POPUPS; i++) { + for (int i = 0; i < POPUPS; i++) { EnableWindow(GetDlgItem(hdlg, (i+42071)), FALSE); //Background EnableWindow(GetDlgItem(hdlg, (i+41071)), FALSE); //Text } @@ -295,7 +304,7 @@ //Use Popup colors PopupOptions.DefColors = byCOLOR_POPUP; - for (i = 0; i < POPUPS; i++) { + for (int i = 0; i < POPUPS; i++) { EnableWindow(GetDlgItem(hdlg, (i+42071)), FALSE); //Background EnableWindow(GetDlgItem(hdlg, (i+41071)), FALSE); //Text } @@ -354,38 +363,36 @@ return TRUE; case PSN_APPLY: - { + for (int i = 0; i <= POPUPS-1; i++) { + DWORD ctlColor = SendDlgItemMessage(hdlg, (i+42071), CPM_GETCOLOUR, 0, 0); + PopupsList[i].colorBack = ctlColor; //Text color char szSetting[20] = {0}; - DWORD ctlColor = 0; - for (i = 0; i <= POPUPS-1; i++) { - ctlColor = SendDlgItemMessage(hdlg, (i+42071), CPM_GETCOLOUR, 0, 0); - PopupsList[i].colorBack = ctlColor; - mir_snprintf(szSetting, SIZEOF(szSetting), "Popups%iBg", i); - db_set_dw(NULL, MODNAME, szSetting, ctlColor); - ctlColor = SendDlgItemMessage(hdlg, (i+41071), CPM_GETCOLOUR, 0, 0); - PopupsList[i].colorText = ctlColor; - mir_snprintf(szSetting, SIZEOF(szSetting), "Popups%iTx", i); - db_set_dw(NULL, MODNAME, szSetting, ctlColor); - } - //Colors - db_set_b(NULL, MODNAME, "DefColors", PopupOptions.DefColors); - //Timeout - PopupOptions.Timeout = GetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, 0, TRUE); - db_set_dw(NULL, MODNAME, "Timeout", PopupOptions.Timeout); - //Left mouse click - db_set_b(NULL, MODNAME, "LeftClickAction", PopupOptions.LeftClickAction); - //Right mouse click - db_set_b(NULL, MODNAME, "RightClickAction", PopupOptions.RightClickAction); - //Notified popups - for (i = 0; i < POPUPS; i++) { - mir_snprintf(str, SIZEOF(str), "Popups%d", i); - db_set_b(NULL, MODNAME, str, (BYTE)(IsDlgButtonChecked(hdlg, (i+40071)))); - mir_snprintf(str2, SIZEOF(str2), "Popups%dM", i); - db_set_b(NULL, MODNAME, str2, (BYTE)(IsDlgButtonChecked(hdlg, (i+1024)))); - } - return TRUE; - } //case PSN_APPLY + mir_snprintf(szSetting, SIZEOF(szSetting), "Popups%iBg", i); + db_set_dw(NULL, MODNAME, szSetting, ctlColor); + ctlColor = SendDlgItemMessage(hdlg, (i+41071), CPM_GETCOLOUR, 0, 0); + PopupsList[i].colorText = ctlColor; + mir_snprintf(szSetting, SIZEOF(szSetting), "Popups%iTx", i); + db_set_dw(NULL, MODNAME, szSetting, ctlColor); + } + //Colors + db_set_b(NULL, MODNAME, "DefColors", PopupOptions.DefColors); + //Timeout + PopupOptions.Timeout = GetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, 0, TRUE); + db_set_dw(NULL, MODNAME, "Timeout", PopupOptions.Timeout); + //Left mouse click + db_set_b(NULL, MODNAME, "LeftClickAction", PopupOptions.LeftClickAction); + //Right mouse click + db_set_b(NULL, MODNAME, "RightClickAction", PopupOptions.RightClickAction); + //Notified popups + for (int i = 0; i < POPUPS; i++) { + char str[20] = {0}, str2[20] = {0}; + mir_snprintf(str, SIZEOF(str), "Popups%d", i); + db_set_b(NULL, MODNAME, str, (BYTE)(IsDlgButtonChecked(hdlg, (i+40071)))); + mir_snprintf(str2, SIZEOF(str2), "Popups%dM", i); + db_set_b(NULL, MODNAME, str2, (BYTE)(IsDlgButtonChecked(hdlg, (i+1024)))); + } + return TRUE; } // switch code break; //End WM_NOTIFY } //switch message @@ -392,7 +399,7 @@ return FALSE; } -int OptInit(WPARAM wParam, LPARAM lParam) +int OptInit(WPARAM wParam, LPARAM) { OPTIONSDIALOGPAGE odp = { sizeof(odp) }; odp.position = 100000000; @@ -401,15 +408,19 @@ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_UPDATENOTIFY); odp.ptszGroup = LPGENT("Services"); odp.ptszTitle = LPGENT("Plugin Updater"); + odp.ptszTab = LPGENT("Settings"); odp.pfnDlgProc = UpdateNotifyOptsProc; Options_AddPage(wParam, &odp); - if ( ServiceExists(MS_POPUP_ADDPOPUP)) { - odp.pszTemplate = MAKEINTRESOURCEA(IDD_POPUP); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_POPUP); + if (ServiceExists(MS_POPUP_ADDPOPUP)) { odp.ptszGroup = LPGENT("Popups"); odp.ptszTitle = LPGENT("Plugin Updater"); - odp.pfnDlgProc = DlgPopupOpts; - Options_AddPage(wParam, &odp); } + else { + odp.ptszTab = LPGENT("Notifications"); + } + odp.pfnDlgProc = DlgPopupOpts; + Options_AddPage(wParam, &odp); return 0; } Index: src/resource.h =================================================================== --- src/resource.h (Revision 9087) +++ src/resource.h (Arbeitskopie) @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. -// Used by D:\Development\Miranda NG\plugins\PluginUpdater\res\Resource.rc +// Used by C:\Users\xx\Documents\Visual Studio 2010\Projects\miranda-ng\plugins\PluginUpdater\res\Resource.rc // #define IDD_UPDATE 101 #define IDD_OPT_UPDATENOTIFY 102 @@ -48,6 +48,7 @@ #define IDC_TRUNK 1044 #define IDC_TRUNK_SYMBOLS 1045 #define IDC_CUSTOM 1046 +#define IDC_RESTART 1047 #define IDC_MSG_BOXES 40071 #define IDC_ERRORS 40072 #define IDC_INFO_MESSAGES 40073 @@ -67,7 +68,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 117 #define _APS_NEXT_COMMAND_VALUE 40075 -#define _APS_NEXT_CONTROL_VALUE 1044 +#define _APS_NEXT_CONTROL_VALUE 1048 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif Index: src/Utils.cpp =================================================================== --- src/Utils.cpp (Revision 9087) +++ src/Utils.cpp (Arbeitskopie) @@ -120,9 +120,10 @@ opts.bUpdateOnStartup = db_get_b(NULL, MODNAME, "UpdateOnStartup", DEFAULT_UPDATEONSTARTUP); opts.bOnlyOnceADay = db_get_b(NULL, MODNAME, "OnlyOnceADay", DEFAULT_ONLYONCEADAY); opts.bUpdateOnPeriod = db_get_b(NULL, MODNAME, "UpdateOnPeriod", DEFAULT_UPDATEONPERIOD); + opts.bRestart = db_get_b(NULL, MODNAME, "Restart", DEFAULT_UPDATEONPERIOD); opts.Period = db_get_dw(NULL, MODNAME, "Period", DEFAULT_PERIOD); opts.bPeriodMeasure = db_get_b(NULL, MODNAME, "PeriodMeasure", DEFAULT_PERIODMEASURE); - opts.bForceRedownload = db_get_b(NULL, MODNAME, "ForceRedownload", 0); + opts.bForceRedownload = db_get_b(NULL, MODNAME, "ForceRedownload", DEFAULT_RESTART); } ULONG crc32_table[256];