From 2aa59179945482dee30935c991f9317dfbf31946 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 17 May 2018 18:23:34 +0300 Subject: Tipper, StopSpamMod, StopSpam, StatusManager, StatusChange, StartupSilence, StartPosition, SplashScreen, SpellChecker, Spamotron => CMPlugin --- plugins/StatusChange/src/main.cpp | 462 +++++++++++++++++++------------------- plugins/StatusChange/src/stdafx.h | 12 +- 2 files changed, 241 insertions(+), 233 deletions(-) (limited to 'plugins/StatusChange') diff --git a/plugins/StatusChange/src/main.cpp b/plugins/StatusChange/src/main.cpp index 350872570b..b91526137b 100644 --- a/plugins/StatusChange/src/main.cpp +++ b/plugins/StatusChange/src/main.cpp @@ -1,13 +1,17 @@ #include "stdafx.h" -HINSTANCE hInst; TOPTIONS Options; HICON hIconMsg; HICON hIconUrl; HICON hIconFile; + int hLangpack; +CMPlugin g_plugin; + +///////////////////////////////////////////////////////////////////////////////////////// -PLUGININFOEX pluginInfo={ +PLUGININFOEX pluginInfo = +{ sizeof(PLUGININFOEX), __PLUGIN_NAME, PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), @@ -17,9 +21,16 @@ PLUGININFOEX pluginInfo={ __AUTHORWEB, UNICODE_AWARE, // {1ACB2ED1-C1ED-43EE-89BD-086686F6EBB5} - {0x1acb2ed1, 0xc1ed, 0x43ee, {0x89, 0xbd, 0x8, 0x66, 0x86, 0xf6, 0xeb, 0xb5}} + { 0x1acb2ed1, 0xc1ed, 0x43ee, { 0x89, 0xbd, 0x8, 0x66, 0x86, 0xf6, 0xeb, 0xb5 }} }; +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD) +{ + return &pluginInfo; +} + +///////////////////////////////////////////////////////////////////////////////////////// + void LoadOptions() { memset(&Options, 0, sizeof(Options)); @@ -50,43 +61,43 @@ static int StatusChangeGetMessage(WPARAM, LPARAM hDbEvent) db_event_get(hDbEvent, &dbe); int status = Proto_GetStatus(dbe.szModule); - if(!status) + if (!status) status = CallService(MS_CLIST_GETSTATUSMODE, 0, 0); - if(status == Options.ChangeTo) + if (status == Options.ChangeTo) return 0; switch (status) { - case ID_STATUS_OFFLINE : change_status = Options.IfOffline; break; - case ID_STATUS_ONLINE : change_status = Options.IfOnline; break; - case ID_STATUS_AWAY : change_status = Options.IfAway; break; - case ID_STATUS_NA : change_status = Options.IfNA; break; - case ID_STATUS_OCCUPIED : change_status = Options.IfOccupied; break; - case ID_STATUS_DND : change_status = Options.IfDND; break; - case ID_STATUS_FREECHAT : change_status = Options.IfFreeforchat; break; - case ID_STATUS_INVISIBLE : change_status = Options.IfInvisible; break; - case ID_STATUS_ONTHEPHONE : change_status = Options.IfOnthephone; break; - case ID_STATUS_OUTTOLUNCH : change_status = Options.IfOuttolunch; break; - default : change_status = FALSE; break; + case ID_STATUS_OFFLINE: change_status = Options.IfOffline; break; + case ID_STATUS_ONLINE: change_status = Options.IfOnline; break; + case ID_STATUS_AWAY: change_status = Options.IfAway; break; + case ID_STATUS_NA: change_status = Options.IfNA; break; + case ID_STATUS_OCCUPIED: change_status = Options.IfOccupied; break; + case ID_STATUS_DND: change_status = Options.IfDND; break; + case ID_STATUS_FREECHAT: change_status = Options.IfFreeforchat; break; + case ID_STATUS_INVISIBLE: change_status = Options.IfInvisible; break; + case ID_STATUS_ONTHEPHONE: change_status = Options.IfOnthephone; break; + case ID_STATUS_OUTTOLUNCH: change_status = Options.IfOuttolunch; break; + default: change_status = FALSE; break; } if (!change_status) return 0; - + switch (dbe.eventType) { - case EVENTTYPE_MESSAGE : - read = Options.MessageRead; - send = Options.MessageSend; - break; - case EVENTTYPE_URL : - read = Options.UrlRead; - send = Options.UrlSend; - break; - case EVENTTYPE_FILE : - read = Options.FileRead; - send = Options.FileSend; - break; - break; + case EVENTTYPE_MESSAGE: + read = Options.MessageRead; + send = Options.MessageSend; + break; + case EVENTTYPE_URL: + read = Options.UrlRead; + send = Options.UrlSend; + break; + case EVENTTYPE_FILE: + read = Options.FileRead; + send = Options.FileSend; + break; + break; } // If is a message sent... @@ -104,206 +115,205 @@ static int StatusChangeGetMessage(WPARAM, LPARAM hDbEvent) CallProtoService(dbe.szModule, PS_SETSTATUS, (LPARAM)Options.ChangeTo, 0); } } - + return 0; } static INT_PTR CALLBACK DlgProcStatusChangeOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - - hIconMsg = (HICON)CopyImage(Skin_LoadIcon(SKINICON_EVENT_MESSAGE), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); - SendDlgItemMessage(hwndDlg, IDC_MSGICON, STM_SETICON, (WPARAM)hIconMsg, 0); - hIconUrl = (HICON)CopyImage(Skin_LoadIcon(SKINICON_EVENT_URL), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); - SendDlgItemMessage(hwndDlg, IDC_URLICON, STM_SETICON, (WPARAM)hIconUrl, 0); - hIconFile = (HICON)CopyImage(Skin_LoadIcon(SKINICON_EVENT_FILE), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); - SendDlgItemMessage(hwndDlg, IDC_FILEICON, STM_SETICON, (WPARAM)hIconFile, 0); - - CheckDlgButton(hwndDlg, IDC_CHK_MESSAGEREAD, Options.MessageRead ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_MESSAGESEND, Options.MessageSend ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_URLREAD, Options.UrlRead ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_URLSEND, Options.UrlSend ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_FILEREAD, Options.FileRead ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_FILESEND, Options.FileSend ? BST_CHECKED : BST_UNCHECKED); - - switch(Options.ChangeTo) { - case ID_STATUS_OFFLINE : CheckDlgButton(hwndDlg, IDC_RAD_OFFLINE, BST_CHECKED); break; - case ID_STATUS_ONLINE : CheckDlgButton(hwndDlg, IDC_RAD_ONLINE, BST_CHECKED); break; - case ID_STATUS_AWAY : CheckDlgButton(hwndDlg, IDC_RAD_AWAY, BST_CHECKED); break; - case ID_STATUS_DND : CheckDlgButton(hwndDlg, IDC_RAD_DND, BST_CHECKED); break; - case ID_STATUS_NA : CheckDlgButton(hwndDlg, IDC_RAD_NA, BST_CHECKED); break; - case ID_STATUS_OCCUPIED : CheckDlgButton(hwndDlg, IDC_RAD_OCCUPIED, BST_CHECKED); break; - case ID_STATUS_FREECHAT : CheckDlgButton(hwndDlg, IDC_RAD_FREECHAT, BST_CHECKED); break; - case ID_STATUS_INVISIBLE : CheckDlgButton(hwndDlg, IDC_RAD_INVISIBLE, BST_CHECKED); break; - case ID_STATUS_ONTHEPHONE : CheckDlgButton(hwndDlg, IDC_RAD_ONTHEPHONE, BST_CHECKED); break; - case ID_STATUS_OUTTOLUNCH : CheckDlgButton(hwndDlg, IDC_RAD_OUTTOLUNCH, BST_CHECKED); break; - break; - } + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); - CheckDlgButton(hwndDlg, IDC_CHK_OFFLINE, Options.IfOffline ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_ONLINE, Options.IfOnline ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_AWAY, Options.IfAway ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_DND, Options.IfDND ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_NA, Options.IfNA ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_OCCUPIED, Options.IfOccupied ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_FREECHAT, Options.IfFreeforchat ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_INVISIBLE, Options.IfInvisible ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_ONTHEPHONE, Options.IfOnthephone ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CHK_OUTTOLUNCH, Options.IfOuttolunch ? BST_CHECKED : BST_UNCHECKED); - return TRUE; - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDC_CHK_MESSAGEREAD: - Options.MessageRead = !Options.MessageRead; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_MESSAGESEND: - Options.MessageSend = !Options.MessageSend; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_URLREAD: - Options.UrlRead = !Options.UrlRead; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_URLSEND: - Options.UrlSend = !Options.UrlSend; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_FILEREAD: - Options.FileRead = !Options.FileRead; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_FILESEND: - Options.FileSend = !Options.FileSend; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case IDC_RAD_OFFLINE: - Options.ChangeTo = ID_STATUS_OFFLINE; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_ONLINE: - Options.ChangeTo = ID_STATUS_ONLINE; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_AWAY: - Options.ChangeTo = ID_STATUS_AWAY; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_DND: - Options.ChangeTo = ID_STATUS_DND; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_NA: - Options.ChangeTo = ID_STATUS_NA; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_OCCUPIED: - Options.ChangeTo = ID_STATUS_OCCUPIED; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_FREECHAT: - Options.ChangeTo = ID_STATUS_FREECHAT; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_INVISIBLE: - Options.ChangeTo = ID_STATUS_INVISIBLE; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_ONTHEPHONE: - Options.ChangeTo = ID_STATUS_ONTHEPHONE; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_OUTTOLUNCH: - Options.ChangeTo = ID_STATUS_OUTTOLUNCH; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case IDC_CHK_OFFLINE: - Options.IfOffline = !Options.IfOffline; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_ONLINE: - Options.IfOnline = !Options.IfOnline; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_AWAY: - Options.IfAway = !Options.IfAway; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_DND: - Options.IfDND = !Options.IfDND; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_NA: - Options.IfNA = !Options.IfNA; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_OCCUPIED: - Options.IfOccupied = !Options.IfOccupied; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_FREECHAT: - Options.IfFreeforchat = !Options.IfFreeforchat; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_INVISIBLE: - Options.IfInvisible = !Options.IfInvisible; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_ONTHEPHONE: - Options.IfOnthephone = !Options.IfOnthephone; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_OUTTOLUNCH: - Options.IfOuttolunch = !Options.IfOuttolunch; - PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - } + hIconMsg = (HICON)CopyImage(Skin_LoadIcon(SKINICON_EVENT_MESSAGE), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); + SendDlgItemMessage(hwndDlg, IDC_MSGICON, STM_SETICON, (WPARAM)hIconMsg, 0); + hIconUrl = (HICON)CopyImage(Skin_LoadIcon(SKINICON_EVENT_URL), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); + SendDlgItemMessage(hwndDlg, IDC_URLICON, STM_SETICON, (WPARAM)hIconUrl, 0); + hIconFile = (HICON)CopyImage(Skin_LoadIcon(SKINICON_EVENT_FILE), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); + SendDlgItemMessage(hwndDlg, IDC_FILEICON, STM_SETICON, (WPARAM)hIconFile, 0); + + CheckDlgButton(hwndDlg, IDC_CHK_MESSAGEREAD, Options.MessageRead ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_MESSAGESEND, Options.MessageSend ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_URLREAD, Options.UrlRead ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_URLSEND, Options.UrlSend ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_FILEREAD, Options.FileRead ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_FILESEND, Options.FileSend ? BST_CHECKED : BST_UNCHECKED); + + switch (Options.ChangeTo) { + case ID_STATUS_OFFLINE: CheckDlgButton(hwndDlg, IDC_RAD_OFFLINE, BST_CHECKED); break; + case ID_STATUS_ONLINE: CheckDlgButton(hwndDlg, IDC_RAD_ONLINE, BST_CHECKED); break; + case ID_STATUS_AWAY: CheckDlgButton(hwndDlg, IDC_RAD_AWAY, BST_CHECKED); break; + case ID_STATUS_DND: CheckDlgButton(hwndDlg, IDC_RAD_DND, BST_CHECKED); break; + case ID_STATUS_NA: CheckDlgButton(hwndDlg, IDC_RAD_NA, BST_CHECKED); break; + case ID_STATUS_OCCUPIED: CheckDlgButton(hwndDlg, IDC_RAD_OCCUPIED, BST_CHECKED); break; + case ID_STATUS_FREECHAT: CheckDlgButton(hwndDlg, IDC_RAD_FREECHAT, BST_CHECKED); break; + case ID_STATUS_INVISIBLE: CheckDlgButton(hwndDlg, IDC_RAD_INVISIBLE, BST_CHECKED); break; + case ID_STATUS_ONTHEPHONE: CheckDlgButton(hwndDlg, IDC_RAD_ONTHEPHONE, BST_CHECKED); break; + case ID_STATUS_OUTTOLUNCH: CheckDlgButton(hwndDlg, IDC_RAD_OUTTOLUNCH, BST_CHECKED); break; break; + } - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_RESET: - LoadOptions(); - return TRUE; - case PSN_APPLY: - db_set_b(NULL, PLUGINNAME, "MessageRead", (BYTE)Options.MessageRead); - db_set_b(NULL, PLUGINNAME, "MessageSend", (BYTE)Options.MessageSend); - db_set_b(NULL, PLUGINNAME, "UrlRead", (BYTE)Options.UrlRead); - db_set_b(NULL, PLUGINNAME, "UrlSend", (BYTE)Options.UrlSend); - db_set_b(NULL, PLUGINNAME, "FileRead", (BYTE)Options.FileRead); - db_set_b(NULL, PLUGINNAME, "FileSend", (BYTE)Options.FileSend); - db_set_dw(NULL, PLUGINNAME, "ChangeTo", (DWORD)Options.ChangeTo); - db_set_b(NULL, PLUGINNAME, "IfOffline", (BYTE)Options.IfOffline); - db_set_b(NULL, PLUGINNAME, "IfOnline", (BYTE)Options.IfOnline); - db_set_b(NULL, PLUGINNAME, "IfAway", (BYTE)Options.IfAway); - db_set_b(NULL, PLUGINNAME, "IfNA", (BYTE)Options.IfNA); - db_set_b(NULL, PLUGINNAME, "IfDND", (BYTE)Options.IfDND); - db_set_b(NULL, PLUGINNAME, "IfOccupied", (BYTE)Options.IfOccupied); - db_set_b(NULL, PLUGINNAME, "IfFreeforchat", (BYTE)Options.IfFreeforchat); - db_set_b(NULL, PLUGINNAME, "IfInvisible", (BYTE)Options.IfInvisible); - db_set_b(NULL, PLUGINNAME, "IfOnthephone", (BYTE)Options.IfOnthephone); - db_set_b(NULL, PLUGINNAME, "IfOuttolunch", (BYTE)Options.IfOuttolunch); - return TRUE; - break; - } - break; - break; - } + CheckDlgButton(hwndDlg, IDC_CHK_OFFLINE, Options.IfOffline ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_ONLINE, Options.IfOnline ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_AWAY, Options.IfAway ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_DND, Options.IfDND ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_NA, Options.IfNA ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_OCCUPIED, Options.IfOccupied ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_FREECHAT, Options.IfFreeforchat ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_INVISIBLE, Options.IfInvisible ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_ONTHEPHONE, Options.IfOnthephone ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_OUTTOLUNCH, Options.IfOuttolunch ? BST_CHECKED : BST_UNCHECKED); + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_CHK_MESSAGEREAD: + Options.MessageRead = !Options.MessageRead; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_MESSAGESEND: + Options.MessageSend = !Options.MessageSend; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_URLREAD: + Options.UrlRead = !Options.UrlRead; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_URLSEND: + Options.UrlSend = !Options.UrlSend; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_FILEREAD: + Options.FileRead = !Options.FileRead; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_FILESEND: + Options.FileSend = !Options.FileSend; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_RAD_OFFLINE: + Options.ChangeTo = ID_STATUS_OFFLINE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_ONLINE: + Options.ChangeTo = ID_STATUS_ONLINE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_AWAY: + Options.ChangeTo = ID_STATUS_AWAY; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_DND: + Options.ChangeTo = ID_STATUS_DND; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_NA: + Options.ChangeTo = ID_STATUS_NA; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_OCCUPIED: + Options.ChangeTo = ID_STATUS_OCCUPIED; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_FREECHAT: + Options.ChangeTo = ID_STATUS_FREECHAT; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_INVISIBLE: + Options.ChangeTo = ID_STATUS_INVISIBLE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_ONTHEPHONE: + Options.ChangeTo = ID_STATUS_ONTHEPHONE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_OUTTOLUNCH: + Options.ChangeTo = ID_STATUS_OUTTOLUNCH; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; - case WM_DESTROY: - DestroyIcon(hIconMsg); - DestroyIcon(hIconUrl); - DestroyIcon(hIconFile); + case IDC_CHK_OFFLINE: + Options.IfOffline = !Options.IfOffline; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_ONLINE: + Options.IfOnline = !Options.IfOnline; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_AWAY: + Options.IfAway = !Options.IfAway; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; - } + case IDC_CHK_DND: + Options.IfDND = !Options.IfDND; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_NA: + Options.IfNA = !Options.IfNA; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_OCCUPIED: + Options.IfOccupied = !Options.IfOccupied; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_FREECHAT: + Options.IfFreeforchat = !Options.IfFreeforchat; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_INVISIBLE: + Options.IfInvisible = !Options.IfInvisible; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_ONTHEPHONE: + Options.IfOnthephone = !Options.IfOnthephone; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_OUTTOLUNCH: + Options.IfOuttolunch = !Options.IfOuttolunch; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + break; + + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->idFrom) { + case 0: + switch (((LPNMHDR)lParam)->code) { + case PSN_RESET: + LoadOptions(); + return TRUE; + + case PSN_APPLY: + db_set_b(NULL, PLUGINNAME, "MessageRead", (BYTE)Options.MessageRead); + db_set_b(NULL, PLUGINNAME, "MessageSend", (BYTE)Options.MessageSend); + db_set_b(NULL, PLUGINNAME, "UrlRead", (BYTE)Options.UrlRead); + db_set_b(NULL, PLUGINNAME, "UrlSend", (BYTE)Options.UrlSend); + db_set_b(NULL, PLUGINNAME, "FileRead", (BYTE)Options.FileRead); + db_set_b(NULL, PLUGINNAME, "FileSend", (BYTE)Options.FileSend); + db_set_dw(NULL, PLUGINNAME, "ChangeTo", (DWORD)Options.ChangeTo); + db_set_b(NULL, PLUGINNAME, "IfOffline", (BYTE)Options.IfOffline); + db_set_b(NULL, PLUGINNAME, "IfOnline", (BYTE)Options.IfOnline); + db_set_b(NULL, PLUGINNAME, "IfAway", (BYTE)Options.IfAway); + db_set_b(NULL, PLUGINNAME, "IfNA", (BYTE)Options.IfNA); + db_set_b(NULL, PLUGINNAME, "IfDND", (BYTE)Options.IfDND); + db_set_b(NULL, PLUGINNAME, "IfOccupied", (BYTE)Options.IfOccupied); + db_set_b(NULL, PLUGINNAME, "IfFreeforchat", (BYTE)Options.IfFreeforchat); + db_set_b(NULL, PLUGINNAME, "IfInvisible", (BYTE)Options.IfInvisible); + db_set_b(NULL, PLUGINNAME, "IfOnthephone", (BYTE)Options.IfOnthephone); + db_set_b(NULL, PLUGINNAME, "IfOuttolunch", (BYTE)Options.IfOuttolunch); + return TRUE; + } + break; + } + break; + + case WM_DESTROY: + DestroyIcon(hIconMsg); + DestroyIcon(hIconUrl); + DestroyIcon(hIconFile); + break; + } return FALSE; } @@ -311,7 +321,7 @@ static INT_PTR CALLBACK DlgProcStatusChangeOpts(HWND hwndDlg, UINT msg, WPARAM w int StatusChangeOptInit(WPARAM wParam, LPARAM) { OPTIONSDIALOGPAGE odp = { 0 }; - odp.hInstance = hInst; + odp.hInstance = g_plugin.getInst(); odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); odp.szTitle.w = LPGENW("Status Change"); odp.szGroup.w = LPGENW("Status"); @@ -321,16 +331,7 @@ int StatusChangeOptInit(WPARAM wParam, LPARAM) return 0; } -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD, LPVOID) -{ - hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD) -{ - return &pluginInfo; -} +///////////////////////////////////////////////////////////////////////////////////////// extern "C" __declspec(dllexport) int Load(void) { @@ -340,10 +341,11 @@ extern "C" __declspec(dllexport) int Load(void) HookEvent(ME_DB_EVENT_ADDED, StatusChangeGetMessage); LoadOptions(); - return 0; } +///////////////////////////////////////////////////////////////////////////////////////// + extern "C" __declspec(dllexport) int Unload(void) { return 0; diff --git a/plugins/StatusChange/src/stdafx.h b/plugins/StatusChange/src/stdafx.h index 3ec8723cd2..a2335bb170 100644 --- a/plugins/StatusChange/src/stdafx.h +++ b/plugins/StatusChange/src/stdafx.h @@ -5,7 +5,6 @@ #include #include -#define __NO_CMPLUGIN_NEEDED #include #include #include @@ -19,7 +18,14 @@ #define PLUGINNAME "StatusChange" -typedef struct +struct CMPlugin : public PLUGIN +{ + CMPlugin() : + PLUGIN(PLUGINNAME) + {} +}; + +struct TOPTIONS { BOOL MessageRead; BOOL MessageSend; @@ -40,4 +46,4 @@ typedef struct BOOL IfInvisible; BOOL IfOnthephone; BOOL IfOuttolunch; -} TOPTIONS; +}; -- cgit v1.2.3