summaryrefslogtreecommitdiff
path: root/plugins/PackUpdater/Src/Options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/PackUpdater/Src/Options.cpp')
-rw-r--r--plugins/PackUpdater/Src/Options.cpp411
1 files changed, 411 insertions, 0 deletions
diff --git a/plugins/PackUpdater/Src/Options.cpp b/plugins/PackUpdater/Src/Options.cpp
new file mode 100644
index 0000000000..645a2ca718
--- /dev/null
+++ b/plugins/PackUpdater/Src/Options.cpp
@@ -0,0 +1,411 @@
+/*
+Copyright (C) 2010 Mataes
+
+This is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+This is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with this file; see the file license.txt. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+*/
+
+#include "common.h"
+
+INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WORD i = 0;
+ char str[20] = {0};
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ TranslateDialogDefault(hwndDlg);
+ CheckDlgButton(hwndDlg, IDC_ENABLEUPDATES, (int)AutoUpdate);
+ CheckDlgButton(hwndDlg, IDC_REMINDER, (int)Reminder);
+ if (ServiceExists(MS_POPUP_ADDPOPUP))
+ {
+ ShowWindow(GetDlgItem(hwndDlg, IDC_NOTIFY2), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_MSG_BOXES2), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_ERRORS2), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_INFO_MESSAGES2), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_PROGR_DLG2), SW_HIDE);
+ }
+ else
+ {
+ for (i = 1; i < POPUPS; i++)
+ {
+ mir_snprintf(str, SIZEOF(str), "Popups%dM", i);
+ CheckDlgButton(hwndDlg, (i+1029), (DBGetContactSettingByte(NULL, MODNAME, str, DEFAULT_MESSAGE_ENABLED)) ? BST_CHECKED: BST_UNCHECKED);
+ }
+ }
+ return TRUE;
+
+ case WM_COMMAND:
+ {
+ switch (LOWORD(wParam))
+ {
+ case IDC_ENABLEUPDATES:
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ break;
+ case IDC_REMINDER:
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ break;
+ case IDC_LINK_HOTKEY:
+ {
+ OPENOPTIONSDIALOG ood = {0};
+ ood.cbSize = sizeof(ood);
+ ood.pszGroup = "Customize";
+ ood.pszPage = "Hotkeys";
+ CallService( MS_OPT_OPENOPTIONS, 0, (LPARAM)&ood );
+ return (true);
+ }
+ case IDC_MSG_BOXES2:
+ case IDC_ERRORS2:
+ case IDC_INFO_MESSAGES2:
+ case IDC_PROGR_DLG2:
+ if ((HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == EN_CHANGE) && (HWND)lParam == GetFocus())
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ break;
+ }
+ break;
+ }
+ case WM_NOTIFY:
+ {
+ NMHDR *hdr = (NMHDR *)lParam;
+ if (hdr && hdr->code == PSN_APPLY)
+ {
+ AutoUpdate = IsDlgButtonChecked(hwndDlg, IDC_ENABLEUPDATES);
+ DBWriteContactSettingByte(NULL, MODNAME, "AutoUpdate", AutoUpdate);
+ Reminder = IsDlgButtonChecked(hwndDlg, IDC_REMINDER);
+ DBWriteContactSettingByte(NULL, MODNAME, "Reminder", Reminder);
+ if (!ServiceExists(MS_POPUP_ADDPOPUP))
+ {
+ for (i = 1; i < POPUPS; i++)
+ {
+ mir_snprintf(str, SIZEOF(str), "Popups%dM", i);
+ DBWriteContactSettingByte(NULL, MODNAME, str, (BYTE)(IsDlgButtonChecked(hwndDlg, (i+1029))));
+ }
+ }
+ }
+ break;
+ }
+ }//end* switch (msg)
+ return FALSE;
+}
+
+INT_PTR CALLBACK DlgPopUpOpts(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WORD i = 0;
+ 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);
+ }
+ SendDlgItemMessage(hdlg, (42071), CPM_SETCOLOUR, 0, PopupsList[0].colorBack);
+ SendDlgItemMessage(hdlg, (41071), CPM_SETCOLOUR, 0, PopupsList[0].colorText);
+ for (i = 1; 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 < 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);
+ }
+ 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, SIZEOF(str), "Popups%d", i);
+ mir_snprintf(str2, SIZEOF(str2), "Popups%dM", i);
+ CheckDlgButton(hdlg, (i+40071), (DBGetContactSettingByte(NULL, MODNAME, str, DEFAULT_POPUP_ENABLED)) ? BST_CHECKED: BST_UNCHECKED);
+ CheckDlgButton(hdlg, (i+1024), (DBGetContactSettingByte(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 (!(DBGetContactSettingDword(NULL, "PopUp", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS))
+ {
+ EnableWindow(GetDlgItem(hdlg, (40071)), FALSE);
+ EnableWindow(GetDlgItem(hdlg, (41071)), FALSE);
+ EnableWindow(GetDlgItem(hdlg, (42071)), FALSE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hdlg, (40071)), TRUE);
+ EnableWindow(GetDlgItem(hdlg, (41071)), (MyOptions.DefColors == byCOLOR_OWN));
+ EnableWindow(GetDlgItem(hdlg, (42071)), (MyOptions.DefColors == byCOLOR_OWN));
+ }
+ return TRUE;
+ }
+ case WM_SHOWWINDOW:
+ if (!(DBGetContactSettingDword(NULL, "PopUp", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS))
+ {
+ EnableWindow(GetDlgItem(hdlg, (40071)), FALSE);
+ EnableWindow(GetDlgItem(hdlg, (41071)), FALSE);
+ EnableWindow(GetDlgItem(hdlg, (42071)), FALSE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hdlg, (40071)), TRUE);
+ EnableWindow(GetDlgItem(hdlg, (41071)), (MyOptions.DefColors == byCOLOR_OWN));
+ EnableWindow(GetDlgItem(hdlg, (42071)), (MyOptions.DefColors == byCOLOR_OWN));
+ }
+ return TRUE;
+ case WM_COMMAND:
+ {
+ WORD idCtrl = LOWORD(wParam), wNotifyCode = HIWORD(wParam);
+ if (wNotifyCode == 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 (wNotifyCode == 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:
+ {
+ BOOL bEnableOthers = FALSE;
+ if (wNotifyCode != BN_CLICKED)
+ break;
+ MyOptions.DefColors = byCOLOR_OWN;
+ bEnableOthers = TRUE;
+ if (!(DBGetContactSettingDword(NULL, "PopUp", "Actions", 0) & 1) || !ServiceExists(MS_POPUP_REGISTERACTIONS))
+ {
+ EnableWindow(GetDlgItem(hdlg, (41071)), FALSE);
+ EnableWindow(GetDlgItem(hdlg, (42071)), FALSE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hdlg, (41071)), bEnableOthers);
+ EnableWindow(GetDlgItem(hdlg, (42071)), bEnableOthers);
+ }
+ for (i = 1; 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:
+ {
+ BOOL bEnableOthers = FALSE;
+ if (wNotifyCode != BN_CLICKED)
+ break;
+ //Use Windows colors
+ MyOptions.DefColors = byCOLOR_WINDOWS;
+ 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:
+ {
+ BOOL bEnableOthers = FALSE;
+ if (wNotifyCode != BN_CLICKED)
+ break;
+ //Use Popup colors
+ MyOptions.DefColors = byCOLOR_POPUP;
+ 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:
+ {//Declarations and initializations
+ Title = TranslateT("Pack Updater");
+ Text = TranslateT("Test");
+ for (int i = 0; i < POPUPS; i++)
+ {
+ if ((!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 (!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 (!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 (!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;
+ }//end* switch(idCtrl)
+ break;
+ }//end* case WM_COMMAND:
+ 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, SIZEOF(szSetting), "Popups%iBg", i);
+ DBWriteContactSettingDword(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);
+ DBWriteContactSettingDword(NULL, MODNAME, szSetting, ctlColor);
+ }
+ //Colors
+ DBWriteContactSettingByte(NULL, MODNAME, "DefColors", MyOptions.DefColors);
+ //Timeout
+ MyOptions.Timeout = GetDlgItemInt(hdlg, IDC_TIMEOUT_VALUE, 0, TRUE);
+ DBWriteContactSettingDword(NULL, MODNAME, "Timeout", MyOptions.Timeout);
+ //Left mouse click
+ DBWriteContactSettingByte(NULL, MODNAME, "LeftClickAction", MyOptions.LeftClickAction);
+ //Right mouse click
+ DBWriteContactSettingByte(NULL, MODNAME, "RightClickAction", MyOptions.RightClickAction);
+ //Notified popups
+ for (i = 0; i < POPUPS; i++)
+ {
+ mir_snprintf(str, SIZEOF(str), "Popups%d", i);
+ DBWriteContactSettingByte(NULL, MODNAME, str, (BYTE)(IsDlgButtonChecked(hdlg, (i+40071))));
+ mir_snprintf(str2, SIZEOF(str2), "Popups%dM", i);
+ DBWriteContactSettingByte(NULL, MODNAME, str2, (BYTE)(IsDlgButtonChecked(hdlg, (i+1024))));
+ }
+ return TRUE;
+ } //case PSN_APPLY
+ } // switch code
+ break; //End WM_NOTIFY
+ } //switch message
+return FALSE;
+}
+
+int OptInit(WPARAM wParam, LPARAM lParam)
+{
+ OPTIONSDIALOGPAGE odp = {0};
+
+ ZeroMemory(&odp, sizeof(odp));
+ odp.cbSize = sizeof(odp);
+ odp.position = 100000000;
+ odp.hInstance = hInst;
+ odp.flags = ODPF_TCHAR | ODPF_BOLDGROUPS;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_UPDATENOTIFY);
+ odp.ptszGroup = _T("Events");
+ odp.ptszTitle = _T("Pack Updater");
+ odp.pfnDlgProc = UpdateNotifyOptsProc;
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+ if (ServiceExists(MS_POPUP_ADDPOPUP))
+ {
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_POPUP);
+ odp.ptszGroup = _T("PopUps");
+ odp.ptszTitle = _T("Pack Updater");
+ odp.pfnDlgProc = DlgPopUpOpts;
+ CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp);
+ }
+ return 0;
+} \ No newline at end of file