summaryrefslogtreecommitdiff
path: root/Plugins/smcnotify/options.c
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/smcnotify/options.c')
-rw-r--r--Plugins/smcnotify/options.c496
1 files changed, 496 insertions, 0 deletions
diff --git a/Plugins/smcnotify/options.c b/Plugins/smcnotify/options.c
new file mode 100644
index 0000000..ef690a8
--- /dev/null
+++ b/Plugins/smcnotify/options.c
@@ -0,0 +1,496 @@
+/*
+Status Message Change Notify plugin for Miranda IM.
+
+Copyright © 2004-2005 NoName
+Copyright © 2005-2006 Daniel Vijge, Tomasz Słotwiński, Ricardo Pescuma Domenecci
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "commonheaders.h"
+
+
+BOOL AllowProtocol(const char *proto) {
+ if ((CallProtoService(proto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGRECV) == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static OptPageControl optionsControls[] = {
+ {&opts.bIgnoreRemove, CONTROL_CHECKBOX, IDC_IGNOREREMOVE, "IgnoreRemove", FALSE},
+ {&opts.bListUseBkImage, CONTROL_CHECKBOX, IDC_USEBGIMG, "ListUseBkImage", FALSE},
+ {&opts.colListBack, CONTROL_COLOR, IDC_LISTBGCOLOR, "ListBkColor", RGB(255,255,255)},
+ {&opts.colListText, CONTROL_COLOR, IDC_LISTTEXTCOLOR, "ListTextColor", RGB(0,0,0)},
+ {NULL, CONTROL_PROTOCOL_LIST, IDC_PROTOCOLS, "%sEnabled", TRUE, (int)AllowProtocol}
+};
+
+static OptPageControl advancedControls[] = {
+ {&opts.bHistoryEnable, CONTROL_CHECKBOX, IDC_HISTORY, "HistoryEnable", TRUE},
+ {&opts.dHistoryMax, CONTROL_SPIN, IDC_HISTORYMAX, "HistoryMax", 20, IDC_HISTORYMAX_SPIN, (WORD)1, (WORD)100},
+ {&opts.history, CONTROL_TEXT, IDC_HISTORYTEXT, "HistoryTemplate", (DWORD)_T(DEFAULT_TEMPLATE_HISTORY)},
+ {&opts.bDBEnable, CONTROL_CHECKBOX, IDC_MESSAGEWND, "DBEnable", TRUE},
+// {&opts.history_only_ansi_if_possible, CONTROL_CHECKBOX, IDC_ANSI, "HistoryOnlyANSIIfPossible", TRUE},
+ {&opts.msgchanged, CONTROL_TEXT, IDC_MSGCHANGED, "TemplateChanged", (DWORD)_T(DEFAULT_TEMPLATE_CHANGED)},
+ {&opts.msgremoved, CONTROL_TEXT, IDC_MSGREMOVED, "TemplateRemoved", (DWORD)_T(DEFAULT_TEMPLATE_REMOVED)},
+ {&opts.bLogEnable, CONTROL_CHECKBOX, IDC_LOG, "LogEnable", FALSE},
+#ifdef UNICODE
+ {&opts.bLogAscii, CONTROL_CHECKBOX, IDC_LOGASCII, "LogAscii", FALSE},
+#endif
+ {&opts.log, CONTROL_TEXT, IDC_LOGTEXT, "LogTemplate", (DWORD)_T(DEFAULT_TEMPLATE_LOG)}
+};
+
+static OptPageControl popupsControls[] = {
+ {&puopts.bEnable, CONTROL_CHECKBOX, IDC_POPUPS, "PopupsEnable", TRUE},
+ {&puopts.bOnConnect, CONTROL_CHECKBOX, IDC_ONCONNECT, "PopupsOnConnect", FALSE},
+ {&puopts.bIfChanged, CONTROL_CHECKBOX, IDC_IFCHANGED, "PopupsIfChanged", TRUE},
+ {&puopts.bIgnoreRemove, CONTROL_CHECKBOX, IDC_PUIGNOREREMOVE, "PopupsIgnoreRemove", FALSE},
+#ifdef CUSTOMBUILD_OSDSUPPORT
+ {&puopts.bUseOSD, CONTROL_CHECKBOX, IDC_USEOSD, "PopupsUseOSD", TRUE},
+#endif
+ {&puopts.bColorType, CONTROL_RADIO, IDC_COLORFROMPU, "PopupsColorType", POPUP_COLOR_DEFAULT, POPUP_COLOR_DEFAULT},
+ {NULL, CONTROL_RADIO, IDC_COLORWINDOWS, "PopupsColorType", POPUP_COLOR_DEFAULT, POPUP_COLOR_WINDOWS},
+ {NULL, CONTROL_RADIO, IDC_COLORCUSTOM, "PopupsColorType", POPUP_COLOR_DEFAULT, POPUP_COLOR_CUSTOM},
+ {&puopts.colBack, CONTROL_COLOR, IDC_PUBGCOLOR, "PopupsBkColor", RGB(201,125,234)},
+ {&puopts.colText, CONTROL_COLOR, IDC_PUTEXTCOLOR, "PopupsTextColor", RGB(0,0,0)},
+ {&puopts.bDelayType, CONTROL_RADIO, IDC_DELAYFROMPU, "PopupsDelayType", POPUP_DELAY_DEFAULT, POPUP_DELAY_DEFAULT},
+ {NULL, CONTROL_RADIO, IDC_DELAYCUSTOM, "PopupsDelayType", POPUP_DELAY_DEFAULT, POPUP_DELAY_CUSTOM},
+ {NULL, CONTROL_RADIO, IDC_DELAYPERMANENT, "PopupsDelayType", POPUP_DELAY_DEFAULT, POPUP_DELAY_PERMANENT},
+ {&puopts.dDelay, CONTROL_SPIN, IDC_DELAY, "PopupsDelay", 10, IDC_DELAY_SPIN, (WORD)1, (WORD)255},
+ {&puopts.LeftClickAction, CONTROL_COMBO, IDC_LEFTACTION, "PopupsLeftClick", POPUP_ACTION_INFO},
+ {&puopts.RightClickAction, CONTROL_COMBO, IDC_RIGHTACTION, "PopupsRightClick", POPUP_ACTION_CLOSE},
+ {&puopts.text, CONTROL_TEXT, IDC_POPUPTEXT, "PopupsTemplate", (DWORD)_T(DEFAULT_TEMPLATE_POPUP)}
+};
+/*
+static UINT popupsExpertControls[] = {
+ IDC_ONCONNECT, IDC_IFCHANGED, IDC_PUIGNOREREMOVE,
+ IDC_EXPERT, IDC_PUBGCOLOR, IDC_PUTEXTCOLOR, IDC_COLORTYPE,
+ IDC_DELAYFROMPU, IDC_DELAYCUSTOM, IDC_DELAYPERMANENT, IDC_DELAY, IDC_DELAY_SPIN,
+ IDC_RIGHTACTION, IDC_LEFTACTION,
+ IDC_POPUPTEXT, IDC_PREVIEW
+};
+*/
+static OptPageControl fileControls[] = {
+ {&opts.logfile, CONTROL_TEXT, IDC_LOGFILE, "LogFile", (DWORD)_T(DEFAULT_LOG_FILENAME), 0, 0, MAX_PATH},
+ {&opts.listbkimage, CONTROL_TEXT, IDC_BGIMGFILE, "ListBkImage", (DWORD)_T(DEFAULT_BGIMAGE_FILENAME), 0, 0, MAX_PATH}
+};
+
+#define MAX_REGS(_A_) ( sizeof(_A_) / sizeof(_A_[0]) )
+
+void LoadOptions() {
+ TCHAR temp[MAX_PATH];
+
+ LoadOpts(optionsControls, MAX_REGS(optionsControls), MODULE_NAME);
+ LoadOpts(advancedControls, MAX_REGS(advancedControls), MODULE_NAME);
+ LoadOpts(popupsControls, MAX_REGS(popupsControls), MODULE_NAME);
+
+ LoadOpts(fileControls, MAX_REGS(fileControls), MODULE_NAME);
+ if (opts.listbkimage != NULL && opts.listbkimage[0] != _T('\0'))
+ {
+ CallService(MS_UTILS_PATHTOABSOLUTET, (WPARAM)opts.listbkimage, (LPARAM)temp);
+ lstrcpyn(opts.listbkimage, temp, MAX_PATH);
+ }
+ if (opts.logfile != NULL && opts.logfile[0] != _T('\0'))
+ {
+ CallService(MS_UTILS_PATHTOABSOLUTET, (WPARAM)opts.logfile, (LPARAM)temp);
+ lstrcpyn(opts.logfile, temp, MAX_PATH);
+ }
+}
+
+static BOOL CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
+ BOOL ret = SaveOptsDlgProc(optionsControls, MAX_REGS(optionsControls), MODULE_NAME, hwndDlg, msg, wParam, lParam);
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ SetDlgItemText(hwndDlg, IDC_BGIMGFILE, opts.listbkimage);
+ SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ break;
+ case WM_USER + 10:
+ {
+ BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_USEBGIMG);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_LISTBGCOLOR), !enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BGIMGFILE), enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BGIMGBROWSE), enabled);
+ break;
+ }
+ case WM_COMMAND:
+ switch (LOWORD(wParam))
+ {
+ case IDC_USEBGIMG:
+ SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ break;
+ case IDC_BGIMGBROWSE:
+ {
+ OPENFILENAME ofn;
+ TCHAR filepath[MAX_PATH] = _T("");
+ char filter[512] = "";
+#ifdef UNICODE
+ WCHAR filterW[512] = L"";
+ int i;
+#endif
+
+ GetDlgItemText(hwndDlg, IDC_BGIMGFILE, filepath, sizeof(filepath));
+ CallService(MS_UTILS_GETBITMAPFILTERSTRINGS, sizeof(filter), (LPARAM)filter);
+#ifdef UNICODE
+ for (i = 0; i < 512; i++)
+ filterW[i] = filter[i];
+#endif
+
+ ZeroMemory(&ofn, sizeof(ofn));
+ ofn.lStructSize = sizeof(ofn);//OPENFILENAME_SIZE_VERSION_400;
+ ofn.hwndOwner = hwndDlg;
+#ifdef UNICODE
+ ofn.lpstrFilter = filterW;
+#else
+ ofn.lpstrFilter = filter;
+#endif
+ ofn.lpstrFile = filepath;
+ ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST;
+ ofn.nMaxFile = MAX_PATH;
+ ofn.lpstrDefExt = _T("bmp");
+
+ if (GetOpenFileName(&ofn))
+ {
+ SetDlgItemText(hwndDlg, IDC_BGIMGFILE, filepath);
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ }
+
+ break;
+ }
+ case IDC_BGIMGFILE:
+ if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())
+ return 0;
+// else
+// SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ break;
+ }
+ break;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnmhdr = (LPNMHDR)lParam;
+
+ if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY)
+ {
+ TCHAR temp[MAX_PATH]; temp[0] = _T('\0');
+ GetDlgItemText(hwndDlg, IDC_BGIMGFILE, opts.listbkimage, MAX_PATH);
+ if (opts.listbkimage != NULL && opts.listbkimage[0] != _T('\0'))
+ CallService(MS_UTILS_PATHTORELATIVET, (WPARAM)opts.listbkimage, (LPARAM)temp);
+ DBWriteContactSettingTString(NULL, MODULE_NAME, "ListBkImage", temp);
+ }
+ break;
+ }
+ }
+ return ret;
+}
+
+static BOOL CALLBACK AdvancedDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
+ BOOL ret = SaveOptsDlgProc(advancedControls, MAX_REGS(advancedControls), MODULE_NAME, hwndDlg, msg, wParam, lParam);
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ {
+ TCHAR str[1024];str[0] = _T('\0');
+
+ SetDlgItemText(hwndDlg, IDC_LOGFILE, opts.logfile);
+#ifdef UNICODE
+ ShowWindow(GetDlgItem(hwndDlg, IDC_LOGASCII), SW_HIDE);
+#endif
+ SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ SendMessage(hwndDlg, WM_USER + 11, 0, 0);
+ SendMessage(hwndDlg, WM_USER + 12, 0, 0);
+
+ lstrcpy(str, _T("%n\tNew Status Message\r\n%o\tOld Status Message\r\n%c\tCustom Nickname\r\n\\n\tline break\r\n\\t\ttab stop"));
+ SetDlgItemText(hwndDlg, IDC_VARS1, str);
+ lstrcpy(str, _T("%D/%M/%Y\tDay/Month/Year\r\n%H:%m:%s\tTime (in 24h format)\r\n%h:%m:%s %a\t(in 12h format)"));
+ SetDlgItemText(hwndDlg, IDC_VARS2, str);
+ break;
+ }
+ case WM_USER + 10:
+ {
+ BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_MESSAGEWND);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_MSGCHANGED), enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_MSGREMOVED), enabled);
+ break;
+ }
+ case WM_USER + 11:
+ {
+ BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_HISTORY);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_HISTORYMAX), enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_HISTORYMAX_SPIN), enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_HISTORYTEXT), enabled);
+ break;
+ }
+ case WM_USER + 12:
+ {
+ BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_LOG);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_LOGTEXT), enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_LOGFILE), enabled);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_LOGFILEBROWSE), enabled);
+#ifdef UNICODE
+ EnableWindow(GetDlgItem(hwndDlg, IDC_LOGASCII), enabled);
+#endif
+ break;
+ }
+ case WM_COMMAND:
+ if ((LOWORD(wParam) == IDC_LOGFILE
+ || LOWORD(wParam) == IDC_VARS1
+ || LOWORD(wParam) == IDC_VARS2)
+ && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))
+ return 0;
+ switch (LOWORD(wParam))
+ {
+ case IDC_MESSAGEWND:
+ SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ break;
+ case IDC_HISTORY:
+ SendMessage(hwndDlg, WM_USER + 11, 0, 0);
+ break;
+ case IDC_LOG:
+ SendMessage(hwndDlg, WM_USER + 12, 0, 0);
+ break;
+ case IDC_HISTORYCLEAR:
+ ClearAllHistory();
+ return 0;
+ case IDC_LOGFILEBROWSE:
+ {
+ OPENFILENAME ofn;
+ TCHAR filepath[MAX_PATH] = _T("");
+
+ GetDlgItemText(hwndDlg, IDC_LOGFILE, filepath, sizeof(filepath));
+
+ ZeroMemory(&ofn, sizeof(ofn));
+ ofn.lStructSize = sizeof(ofn);//OPENFILENAME_SIZE_VERSION_400;
+ ofn.hwndOwner = hwndDlg;
+ ofn.lpstrFilter = _T("Text Files (*.txt)\0*.txt\0Log Files (*.log)\0*.log\0All Files (*.*)\0*.*\0");
+ ofn.lpstrFile = filepath;
+ ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
+ ofn.nMaxFile = MAX_PATH;
+ ofn.lpstrDefExt = _T("txt");
+
+ if (GetSaveFileName(&ofn))
+ {
+ SetDlgItemText(hwndDlg, IDC_LOGFILE, filepath);
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ }
+
+ break;
+ }
+ }
+ break;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnmhdr = (LPNMHDR)lParam;
+
+ if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY)
+ {
+ TCHAR temp[MAX_PATH]; temp[0] = _T('\0');
+ GetDlgItemText(hwndDlg, IDC_LOGFILE, opts.logfile, MAX_PATH);
+ if (opts.logfile != NULL && opts.logfile[0] != _T('\0'))
+ CallService(MS_UTILS_PATHTORELATIVET, (WPARAM)opts.logfile, (LPARAM)temp);
+ DBWriteContactSettingTString(NULL, MODULE_NAME, "LogFile", temp);
+ }
+ break;
+ }
+ }
+
+ return ret;
+}
+
+static BOOL CALLBACK PopupOptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ {
+ BOOL ret;
+
+ SendDlgItemMessage(hwndDlg, IDC_RIGHTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Do nothing"));
+ SendDlgItemMessage(hwndDlg, IDC_RIGHTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Close popup"));
+ SendDlgItemMessage(hwndDlg, IDC_RIGHTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Open message window"));
+ SendDlgItemMessage(hwndDlg, IDC_RIGHTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Open contact menu"));
+ SendDlgItemMessage(hwndDlg, IDC_RIGHTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Open contact details"));
+ SendDlgItemMessage(hwndDlg, IDC_RIGHTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("View status message history"));
+
+ SendDlgItemMessage(hwndDlg, IDC_LEFTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Do nothing"));
+ SendDlgItemMessage(hwndDlg, IDC_LEFTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Close popup"));
+ SendDlgItemMessage(hwndDlg, IDC_LEFTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Open message window"));
+ SendDlgItemMessage(hwndDlg, IDC_LEFTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Open contact menu"));
+ SendDlgItemMessage(hwndDlg, IDC_LEFTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("Open contact details"));
+ SendDlgItemMessage(hwndDlg, IDC_LEFTACTION, CB_ADDSTRING, 0, (LONG) TranslateT("View status message history"));
+
+ // Needs to be called here in this case
+ ret = SaveOptsDlgProc(popupsControls, MAX_REGS(popupsControls), MODULE_NAME, hwndDlg, msg, wParam, lParam);
+
+ SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ SendMessage(hwndDlg, WM_USER + 11, 0, 0);
+ SendMessage(hwndDlg, WM_USER + 12, 0, 0);
+#ifdef CUSTOMBUILD_OSDSUPPORT
+ SendMessage(hwndDlg, WM_USER + 13, 0, 0);
+#endif
+
+ return ret;
+ }
+ case WM_USER + 10:
+ EnableWindow(GetDlgItem(hwndDlg, IDC_PUBGCOLOR), IsDlgButtonChecked(hwndDlg, IDC_COLORCUSTOM));
+ EnableWindow(GetDlgItem(hwndDlg, IDC_PUTEXTCOLOR), IsDlgButtonChecked(hwndDlg, IDC_COLORCUSTOM));
+ break;
+ case WM_USER + 11:
+ EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY), IsDlgButtonChecked(hwndDlg, IDC_DELAYCUSTOM));
+ EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_SPIN), IsDlgButtonChecked(hwndDlg, IDC_DELAYCUSTOM));
+ break;
+ case WM_USER + 12:
+ EnableWindow(GetDlgItem(hwndDlg, IDC_IFCHANGED), IsDlgButtonChecked(hwndDlg, IDC_ONCONNECT));
+ break;
+#ifdef CUSTOMBUILD_OSDSUPPORT
+ case WM_USER + 13:
+ {
+ BOOL state = !IsDlgButtonChecked(hwndDlg, IDC_USEOSD);
+ if (state) SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ else
+ {
+ EnableWindow(GetDlgItem(hwndDlg, IDC_PUBGCOLOR), state);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_PUTEXTCOLOR), state);
+ }
+ EnableWindow(GetDlgItem(hwndDlg, IDC_COLORTYPE), state);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_LEFTCLICK), state);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_RIGHTCLICK), state);
+ break;
+ }
+#endif
+ case WM_COMMAND:
+ {
+ if ((LOWORD(wParam) == IDC_POPUPTEXT || LOWORD(wParam) == IDC_DELAY)
+ && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))
+ return 0;
+ switch (LOWORD(wParam)) //(HIWORD(wParam) == BN_CLICKED)
+ {
+#ifdef CUSTOMBUILD_OSDSUPPORT
+ case IDC_USEOSD:
+ SendMessage(hwndDlg, WM_USER + 13, 0, 0);
+ break;
+#endif
+ case IDC_COLORFROMPU:
+ case IDC_COLORWINDOWS:
+ case IDC_COLORCUSTOM:
+ SendMessage(hwndDlg, WM_USER + 10, 0, 0);
+ break;
+ case IDC_DELAYFROMPU:
+ case IDC_DELAYPERMANENT:
+ case IDC_DELAYCUSTOM:
+ SendMessage(hwndDlg, WM_USER + 11, 0, 0);
+ break;
+ case IDC_ONCONNECT:
+ SendMessage(hwndDlg, WM_USER + 12, 0, 0);
+ break;
+ case IDC_PREVIEW:
+ {
+ STATUSMSGINFO temp_smi;
+ SMCNOTIFY_PUOPTIONS temp_puo;
+
+ ZeroMemory(&temp_smi, sizeof(temp_smi));
+ temp_smi.hContact = NULL;
+ temp_smi.cust = (TCHAR*)mir_alloc0(8 * sizeof(TCHAR));
+ lstrcpy(temp_smi.cust, TranslateT("Contact"));
+ temp_smi.oldstatusmsg = (TCHAR*)mir_alloc0(19 * sizeof(TCHAR));
+ lstrcpy(temp_smi.oldstatusmsg, TranslateT("Old status message"));
+ temp_smi.newstatusmsg = (TCHAR*)mir_alloc0(19 * sizeof(TCHAR));
+ lstrcpy(temp_smi.newstatusmsg, TranslateT("New status message"));
+
+ ZeroMemory(&temp_puo, sizeof(temp_puo));
+ if (IsDlgButtonChecked(hwndDlg, IDC_DELAYFROMPU))
+ temp_puo.bDelayType = POPUP_DELAY_DEFAULT;
+ else if (IsDlgButtonChecked(hwndDlg, IDC_DELAYCUSTOM))
+ {
+ temp_puo.bDelayType = POPUP_DELAY_CUSTOM;
+ temp_puo.dDelay = GetDlgItemInt(hwndDlg,IDC_DELAY, NULL, FALSE);
+ }
+ else if (IsDlgButtonChecked(hwndDlg, IDC_DELAYPERMANENT))
+ temp_puo.bDelayType = POPUP_DELAY_PERMANENT;
+ if (IsDlgButtonChecked(hwndDlg, IDC_COLORFROMPU))
+ temp_puo.bColorType = POPUP_COLOR_DEFAULT;
+ else if (IsDlgButtonChecked(hwndDlg, IDC_COLORWINDOWS))
+ temp_puo.bColorType = POPUP_COLOR_WINDOWS;
+ else if (IsDlgButtonChecked(hwndDlg, IDC_COLORCUSTOM))
+ {
+ temp_puo.bColorType = POPUP_COLOR_CUSTOM;
+ temp_puo.colBack = SendDlgItemMessage(hwndDlg,IDC_PUBGCOLOR,CPM_GETCOLOUR,0,0);
+ temp_puo.colText = SendDlgItemMessage(hwndDlg,IDC_PUTEXTCOLOR,CPM_GETCOLOUR,0,0);
+ }
+ GetDlgItemText(hwndDlg, IDC_POPUPTEXT, temp_puo.text, TEMPLATEMAXLEN);
+
+ PopupNotify(&temp_smi, &temp_puo);
+ MIR_FREE(temp_smi.cust);
+ MIR_FREE(temp_smi.oldstatusmsg);
+ MIR_FREE(temp_smi.newstatusmsg);
+ return 0;
+ }
+ }
+ break;
+ }
+ }
+
+ return SaveOptsDlgProc(popupsControls, MAX_REGS(popupsControls), MODULE_NAME, hwndDlg, msg, wParam, lParam);
+}
+
+extern int OptionsInit(WPARAM wParam, LPARAM lParam) {
+ OPTIONSDIALOGPAGE odp;
+
+ ZeroMemory(&odp, sizeof(odp));
+ odp.cbSize = sizeof(odp);
+ odp.position = 0;
+ odp.hInstance = hInst;
+ odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR;
+
+ if(ServiceExists(MS_POPUP_ADDPOPUPEX)
+#ifdef UNICODE
+ || ServiceExists(MS_POPUP_ADDPOPUPW)
+#endif
+ )
+ {
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_POPUP);
+ odp.ptszGroup = TranslateT("Popups");
+ odp.ptszTitle = TranslateT(PLUGIN_NAME);
+ odp.pfnDlgProc = PopupOptionsDlgProc;
+// odp.expertOnlyControls = popupsExpertControls;
+// odp.nExpertOnlyControls = sizeof(popupsExpertControls);
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+ }
+
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS);
+ odp.ptszGroup = TranslateT("History");
+ odp.ptszTitle = TranslateT(PLUGIN_NAME);
+ odp.ptszTab = TranslateT("General");
+ odp.pfnDlgProc = OptionsDlgProc;
+// odp.expertOnlyControls = optionsExpertControls;
+// odp.nExpertOnlyControls = sizeof(optionsExpertControls);
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+
+ odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR | ODPF_EXPERTONLY;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_ADVANCED);
+ odp.ptszTab = TranslateT("Advanced");
+ odp.pfnDlgProc = AdvancedDlgProc;
+// odp.expertOnlyControls = optionsExpertControls;
+// odp.nExpertOnlyControls = sizeof(optionsExpertControls);
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+
+ odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_IGNORE);
+ odp.ptszTab = TranslateT("Ignore");
+ odp.pfnDlgProc = IgnoreDlgProc;
+// odp.expertOnlyControls = optionsExpertControls;
+// odp.nExpertOnlyControls = sizeof(optionsExpertControls);
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+
+ return 0;
+}