extern "C" __declspec(dllexport) int Load(void) { mir_getLP(&pluginInfoEx); TCHAR* tszFolder = Utils_ReplaceVarsT(_T("%miranda_userdata%\\" DEFAULT_UPDATES_FOLDER)); mir_tstrncpy(tszRoot, tszFolder, _countof(tszRoot)); hPackUpdaterFolder = FoldersRegisterCustomPathT(MODULEA, LPGEN("Pack Updater"), MIRANDA_USERDATAT _T("\\")DEFAULT_UPDATES_FOLDER); if (hPackUpdaterFolder) FoldersGetCustomPathT(hPackUpdaterFolder, tszRoot, MAX_PATH, _T("")); mir_free(tszFolder); LoadOptions(); InitPopupList(); NetlibInit(); IcoLibInit(); // Add cheking update menu item CreateServiceFunction(MODNAME"/CheckUpdates", MenuCommand); CMenuItem mi; SET_UID(mi, 0x326495e8, 0xab0a, 0x47d2, 0xb2, 0x22, 0x2a, 0x8e, 0xa8, 0xae, 0x53, 0x1a); mi.position = -0x7FFFFFFF; mi.flags = CMIF_TCHAR; mi.hIcolibItem = IcoLib_GetIcon("check_update"); mi.name.t = LPGENT("Check for pack updates"); mi.pszService = MODNAME"/CheckUpdates"; Menu_AddMainMenuItem(&mi); // Add empty updates folder menu item CreateServiceFunction(MODNAME"/EmptyFolder", EmptyFolder); memset(&mi, 0, sizeof(mi)); SET_UID(mi, 0xc3eea590, 0xaba3, 0x454f, 0x93, 0x93, 0xbc, 0x97, 0x15, 0x2c, 0x3b, 0x3d); mi.position = -0x7FFFFFFF; mi.flags = CMIF_TCHAR; mi.hIcolibItem = IcoLib_GetIcon("empty_folder"); mi.name.t = LPGENT("Clear pack updates folder"); mi.pszService = MODNAME"/EmptyFolder"; Menu_AddMainMenuItem(&mi); // Add options hook HookEvent(ME_OPT_INITIALISE, OptInit); HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_SYSTEM_PRESHUTDOWN, OnPreShutdown); return 0; }
extern "C" __declspec(dllexport) int Load(PLUGINLINK *link) { pluginLink = link; mir_getMMI(&mmi); mir_getLI(&li); mir_getMD5I(&md5i); mir_getUTFI(&utfi); #else extern "C" __declspec(dllexport) int Load(void) { mir_getLP(&pluginInfoEx); InitServices(); #endif db_set_b(NULL, MODNAME, "NeedRestart", 0); DWORD dwLen = GetTempPath( SIZEOF(tszTempPath), tszTempPath); if (tszTempPath[dwLen-1] == '\\') tszTempPath[dwLen-1] = 0; LoadOptions(); InitPopupList(); InitNetlib(); InitIcoLib(); // Add cheking update menu item InitCheck(); CLISTMENUITEM mi = { sizeof(mi) }; mi.position = 400010000; mi.icolibItem = Skin_GetIconHandle("check_update"); mi.pszName = LPGEN("Check for updates"); mi.pszService = MODNAME"/CheckUpdates"; Menu_AddMainMenuItem(&mi); #if MIRANDA_VER >= 0x0A00 InitListNew(); mi.position++; mi.icolibItem = Skin_GetIconHandle("plg_list"); mi.pszName = LPGEN("Available components list"); mi.pszService = MODNAME"/ShowList"; Menu_AddMainMenuItem(&mi); InitOptions(); #endif // Add hotkey HOTKEYDESC hkd = { sizeof(hkd) }; hkd.pszName = "Check for updates"; hkd.pszDescription = "Check for updates"; hkd.pszSection = "Plugin Updater"; hkd.pszService = MODNAME"/CheckUpdates"; hkd.DefHotKey = HOTKEYCODE(HOTKEYF_CONTROL, VK_F10) | HKF_MIRANDA_LOCAL; hkd.lParam = FALSE; Hotkey_Register(&hkd); InitEvents(); //add sounds SkinAddNewSoundEx("updatecompleted",LPGEN("Plugin Updater"),LPGEN("Update completed")); SkinAddNewSoundEx("updatefailed",LPGEN("Plugin Updater"),LPGEN("Update failed")); return 0; }
INT_PTR CALLBACK DlgPopupOpts(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { int i; WORD idCtrl; char str[20] = { 0 }, str2[20] = { 0 }; switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hdlg); //Colors if (MyOptions.DefColors == byCOLOR_OWN) { CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_CHECKED); CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_UNCHECKED); } if (MyOptions.DefColors == byCOLOR_WINDOWS) { CheckDlgButton(hdlg, IDC_USEOWNCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED); CheckDlgButton(hdlg, IDC_USEWINCOLORS, BST_CHECKED); } if (MyOptions.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++) { 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)), (MyOptions.DefColors == byCOLOR_OWN)); EnableWindow(GetDlgItem(hdlg, (i + 41071)), (MyOptions.DefColors == byCOLOR_OWN)); } //Timeout SendDlgItemMessage(hdlg, IDC_TIMEOUT_VALUE, EM_LIMITTEXT, 4, 0); SendDlgItemMessage(hdlg, IDC_TIMEOUT_VALUE_SPIN, UDM_SETRANGE32, -1, 9999); SetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, MyOptions.Timeout, TRUE); //Mouse actions for (i = 0; i < _countof(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, MyOptions.LeftClickAction, 0); SendDlgItemMessage(hdlg, IDC_RC, CB_SETCURSEL, MyOptions.RightClickAction, 0); //Popups nitified for (i = 0; i < POPUPS; i++) { mir_snprintf(str, "Popups%d", i); mir_snprintf(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))) EnableWindow(GetDlgItem(hdlg, (i + 1024)), FALSE); else if (i > 0) EnableWindow(GetDlgItem(hdlg, (i + 1024)), TRUE); } if (!(db_get_dw(NULL, "Popup", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS)) EnableWindow(GetDlgItem(hdlg, (40071)), FALSE); else EnableWindow(GetDlgItem(hdlg, (40071)), TRUE); return TRUE; case WM_SHOWWINDOW: if (!(db_get_dw(NULL, "Popup", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS)) EnableWindow(GetDlgItem(hdlg, (40071)), FALSE); else EnableWindow(GetDlgItem(hdlg, (40071)), TRUE); return TRUE; case WM_COMMAND: idCtrl = LOWORD(wParam); if (HIWORD(wParam) == CPN_COLOURCHANGED) { if (idCtrl > 40070) { //It's a color picker change. idCtrl is the control id. COLORREF color = SendDlgItemMessage(hdlg, idCtrl, CPM_GETCOLOUR, 0, 0); int ctlID = idCtrl; if ((ctlID > 41070) && (ctlID < 42070)) //It's 41071 or above => Text color. PopupsList[ctlID - 41071].colorText = color; else if (ctlID > 42070)//Background color. PopupsList[ctlID - 42071].colorBack = color; SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); return TRUE; } } if (HIWORD(wParam) == CBN_SELCHANGE) { if (idCtrl == IDC_LC) MyOptions.LeftClickAction = (BYTE)SendDlgItemMessage(hdlg, IDC_LC, CB_GETCURSEL, 0, 0); else if (idCtrl == IDC_RC) MyOptions.RightClickAction = (BYTE)SendDlgItemMessage(hdlg, IDC_RC, CB_GETCURSEL, 0, 0); SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); return TRUE; } switch (idCtrl) { case IDC_USEOWNCOLORS: if (HIWORD(wParam) == BN_CLICKED) { MyOptions.DefColors = byCOLOR_OWN; BOOL bEnableOthers = TRUE; for (i = 0; i < POPUPS; i++) { EnableWindow(GetDlgItem(hdlg, (i + 42071)), bEnableOthers); //Background EnableWindow(GetDlgItem(hdlg, (i + 41071)), bEnableOthers); //Text } SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); } break; case IDC_USEWINCOLORS: if (HIWORD(wParam) == BN_CLICKED) { //Use Windows colors MyOptions.DefColors = byCOLOR_WINDOWS; BOOL bEnableOthers = FALSE; for (i = 0; i < POPUPS; i++) { EnableWindow(GetDlgItem(hdlg, (i + 42071)), bEnableOthers); //Background EnableWindow(GetDlgItem(hdlg, (i + 41071)), bEnableOthers); //Text } SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); } break; case IDC_USEPOPUPCOLORS: if (HIWORD(wParam) == BN_CLICKED) { //Use Popup colors MyOptions.DefColors = byCOLOR_POPUP; BOOL bEnableOthers = FALSE; for (i = 0; i < POPUPS; i++) { EnableWindow(GetDlgItem(hdlg, (i + 42071)), bEnableOthers); //Background EnableWindow(GetDlgItem(hdlg, (i + 41071)), bEnableOthers); //Text } SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); } break; case IDC_PREVIEW: Title = TranslateT("Pack Updater"); Text = TranslateT("Test"); for (i = 0; i < POPUPS; i++) { if ((BST_UNCHECKED == IsDlgButtonChecked(hdlg, (i + 40071))) || (!IsWindowEnabled(GetDlgItem(hdlg, (i + 40071))))) continue; show_popup(0, Title, Text, i, 0); } break; case IDC_TIMEOUT_VALUE: case IDC_MSG_BOXES: case IDC_ERRORS: if (BST_UNCHECKED == IsDlgButtonChecked(hdlg, IDC_ERRORS)) EnableWindow(GetDlgItem(hdlg, IDC_ERRORS_MSG), TRUE); else EnableWindow(GetDlgItem(hdlg, IDC_ERRORS_MSG), FALSE); if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus()) SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); break; case IDC_INFO_MESSAGES: if (BST_UNCHECKED == IsDlgButtonChecked(hdlg, IDC_INFO_MESSAGES)) EnableWindow(GetDlgItem(hdlg, IDC_INFO_MESSAGES_MSG), TRUE); else EnableWindow(GetDlgItem(hdlg, IDC_INFO_MESSAGES_MSG), FALSE); if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus()) SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); break; case IDC_PROGR_DLG: if (BST_UNCHECKED == IsDlgButtonChecked(hdlg, IDC_PROGR_DLG)) EnableWindow(GetDlgItem(hdlg, IDC_PROGR_DLG_MSG), TRUE); else EnableWindow(GetDlgItem(hdlg, IDC_PROGR_DLG_MSG), FALSE); if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus()) SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); break; case IDC_MSG_BOXES_MSG: case IDC_ERRORS_MSG: case IDC_INFO_MESSAGES_MSG: case IDC_PROGR_DLG_MSG: if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus()) SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0); break; } break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_RESET: //Restore the options stored in memory. LoadOptions(); InitPopupList(); return TRUE; case PSN_APPLY: //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, "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, "Popups%iTx", i); db_set_dw(NULL, MODNAME, szSetting, ctlColor); } //Colors db_set_b(NULL, MODNAME, "DefColors", MyOptions.DefColors); //Timeout MyOptions.Timeout = GetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, 0, TRUE); db_set_dw(NULL, MODNAME, "Timeout", MyOptions.Timeout); //Left mouse click db_set_b(NULL, MODNAME, "LeftClickAction", MyOptions.LeftClickAction); //Right mouse click db_set_b(NULL, MODNAME, "RightClickAction", MyOptions.RightClickAction); //Notified popups for (i = 0; i < POPUPS; i++) { mir_snprintf(str, "Popups%d", i); db_set_b(NULL, MODNAME, str, (BYTE)(IsDlgButtonChecked(hdlg, (i + 40071)))); mir_snprintf(str2, "Popups%dM", i); db_set_b(NULL, MODNAME, str2, (BYTE)(IsDlgButtonChecked(hdlg, (i + 1024)))); } return TRUE; } break; //End WM_NOTIFY } return FALSE; }