From 31b191bc8ddb639e488ab8306f71ac1dbabf16f0 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 3 Nov 2012 17:32:37 +0000 Subject: removing built-in Clist Modern extra icons part I git-svn-id: http://svn.miranda-ng.org/main/trunk@2167 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Rate/src/commonheaders.h | 17 --- plugins/Rate/src/main.cpp | 165 +++++++---------------------- plugins/Rate/src/options.cpp | 221 --------------------------------------- plugins/Rate/src/resource.h | 6 +- 4 files changed, 41 insertions(+), 368 deletions(-) delete mode 100644 plugins/Rate/src/options.cpp (limited to 'plugins/Rate/src') diff --git a/plugins/Rate/src/commonheaders.h b/plugins/Rate/src/commonheaders.h index 2637e8f42b..bdced5d33b 100644 --- a/plugins/Rate/src/commonheaders.h +++ b/plugins/Rate/src/commonheaders.h @@ -44,28 +44,11 @@ #include "resource.h" //external SDK headers -#include #include -static const int DefaultSlot = EXTRA_ICON_PROTO; #define MODULENAME "Rate" /* 0e2866a8-6f4c-4132-98ae-6afdb8766c48 */ #define MIID_CONTACTSRATE {0x0e2866a8, 0x6f4c, 0x4132, {0x98, 0xae, 0x6a, 0xfd, 0xb8, 0x76, 0x6c, 0x48}} -static struct -{ - TCHAR* szDescr; - char* szName; - int defIconID; - HANDLE hIconLibItem; -} iconList[] = -{ - { LPGENT( "Rate high" ), "rate_high", IDI_RATEHI }, - { LPGENT( "Rate medium" ), "rate_medium", IDI_RATEME }, - { LPGENT( "Rate low" ), "rate_low", IDI_RATELO }, -}; - - - #endif //COMMHEADERS_H diff --git a/plugins/Rate/src/main.cpp b/plugins/Rate/src/main.cpp index a430ef0123..586011caca 100644 --- a/plugins/Rate/src/main.cpp +++ b/plugins/Rate/src/main.cpp @@ -32,33 +32,15 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/*--------------------------------------------------------------------------*/ -/* - FILE ID: $Id$ - CHANGE LOG: - - $Log$ -*/ #include "commonheaders.h" HINSTANCE g_hInst; -static HANDLE hHookModulesLoaded = NULL, hSystemOKToExit = NULL, hOptInitialise = NULL, hIcoLibIconsChanged = NULL; -static HANDLE hHookExtraIconsRebuild = NULL, hHookExtraIconsApply = NULL, hContactSettingChanged = NULL; -static HANDLE hPrebuildContactMenu = NULL; static HANDLE hExtraIcon = NULL; -IconExtraColumn g_IECRateHigh = {0}; -IconExtraColumn g_IECRateMedium = {0}; -IconExtraColumn g_IECRateLow = {0}; -IconExtraColumn g_IECClear = {0}; -int clistIcon = 0; //Icon slot to use byte bRate = 0; int hLangpack; -extern int onOptInitialise(WPARAM wParam, LPARAM lParam); - - PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), "Contact`s Rate", @@ -85,84 +67,21 @@ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD miranda return &pluginInfo; } -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_CONTACTSRATE, MIID_LAST}; - -int onSystemOKToExit(WPARAM wParam,LPARAM lParam) -{ - UnhookEvent(hHookModulesLoaded); - UnhookEvent(hHookExtraIconsRebuild); - UnhookEvent(hHookExtraIconsApply); - UnhookEvent(hOptInitialise); - UnhookEvent(hSystemOKToExit); - if (hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged); - if (hContactSettingChanged) - UnhookEvent(hContactSettingChanged); - - return 0; -} - -void setExtaIcon(HANDLE hContact, int bRate = -1, BOOL clear = TRUE) -{ - if (hContact == NULL) - return; - - if (bRate < 0) - bRate = DBGetContactSettingByte(hContact, "CList", "Rate", 0); - - if (hExtraIcon != NULL) - { - const char *icon; - switch(bRate) - { - case 3: icon = "rate_high"; break; - case 2: icon = "rate_medium"; break; - case 1: icon = "rate_low"; break; - default: icon = NULL; break; - } - - if (icon == NULL && !clear) - return; - - ExtraIcon_SetIcon(hExtraIcon, hContact, icon); - } - else - { - switch(bRate) - { - case 3: CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) hContact, (LPARAM) &g_IECRateHigh); break; - case 2: CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) hContact, (LPARAM) &g_IECRateMedium); break; - case 1: CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) hContact, (LPARAM) &g_IECRateLow); break; - default: CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) hContact, (LPARAM) &g_IECClear); break; - } - } -} - +/////////////////////////////////////////////////////////////////////////////// -int onExtraImageApplying(WPARAM wParam, LPARAM lParam) +struct { - setExtaIcon((HANDLE) wParam); - return 0; + TCHAR* szDescr; + char* szName; + int defIconID; + HANDLE hIconLibItem; } - - -int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam) +static iconList[] = { - g_IECRateHigh.cbSize = sizeof(IconExtraColumn); - g_IECRateHigh.ColumnType = clistIcon; - g_IECRateMedium.cbSize = sizeof(IconExtraColumn); - g_IECRateMedium.ColumnType = clistIcon; - g_IECRateLow.cbSize = sizeof(IconExtraColumn); - g_IECRateLow.ColumnType = clistIcon; - - if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) - { - g_IECRateHigh.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)Skin_GetIcon("rate_high"), 0); - g_IECRateMedium.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)Skin_GetIcon("rate_medium"), 0); - g_IECRateLow.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)Skin_GetIcon("rate_low"), 0); - } - return 0; -} - + { LPGENT( "Rate high" ), "rate_high", IDI_RATEHI }, + { LPGENT( "Rate medium" ), "rate_medium", IDI_RATEME }, + { LPGENT( "Rate low" ), "rate_low", IDI_RATELO }, +}; static void init_icolib (void) { @@ -183,65 +102,61 @@ static void init_icolib (void) } } +/////////////////////////////////////////////////////////////////////////////// + +static void setExtraIcon(HANDLE hContact, int bRate = -1, BOOL clear = TRUE) +{ + if (hContact == NULL) + return; + + if (bRate < 0) + bRate = DBGetContactSettingByte(hContact, "CList", "Rate", 0); + + const char *icon = NULL; + switch(bRate) { + case 1: icon = "rate_low"; break; + case 2: icon = "rate_medium"; break; + case 3: icon = "rate_high"; break; + } + + if (icon != NULL || clear) + ExtraIcon_SetIcon(hExtraIcon, hContact, icon); +} int onModulesLoaded(WPARAM wParam,LPARAM lParam) { - //IcoLib support + // IcoLib support init_icolib(); - // Extra icon support hExtraIcon = ExtraIcon_Register("contact_rate", "Contact rate", "rate_high"); - if (hExtraIcon != NULL) - { - // Set initial value for all contacts - HANDLE hContact = db_find_first(); - while (hContact != NULL) - { - setExtaIcon(hContact, -1, FALSE); - hContact = db_find_next(hContact); - } - } - else - { - hOptInitialise = HookEvent(ME_OPT_INITIALISE, onOptInitialise); - hIcoLibIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, onExtraImageListRebuild); - hHookExtraIconsRebuild = HookEvent(ME_CLIST_EXTRA_LIST_REBUILD, onExtraImageListRebuild); - hHookExtraIconsApply = HookEvent(ME_CLIST_EXTRA_IMAGE_APPLY, onExtraImageApplying); - onExtraImageListRebuild(0,0); + // Set initial value for all contacts + HANDLE hContact = db_find_first(); + while (hContact != NULL) { + setExtraIcon(hContact, -1, FALSE); + hContact = db_find_next(hContact); } return 0; } - int onContactSettingChanged(WPARAM wParam,LPARAM lParam) { DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; if (wParam != NULL && !lstrcmpA(cws->szModule,"CList") && !lstrcmpA(cws->szSetting,"Rate")) - setExtaIcon((HANDLE)wParam, cws->value.type == DBVT_DELETED ? 0 : cws->value.bVal); + setExtraIcon((HANDLE)wParam, cws->value.type == DBVT_DELETED ? 0 : cws->value.bVal); return 0; } - extern "C" int __declspec(dllexport) Load(void) { - mir_getLP(&pluginInfo); - hHookModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, onModulesLoaded); - hSystemOKToExit = HookEvent(ME_SYSTEM_OKTOEXIT,onSystemOKToExit); - hContactSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, onContactSettingChanged); - - clistIcon = DBGetContactSettingByte(NULL, MODULENAME, "AdvancedIcon", DefaultSlot); - - g_IECClear.cbSize = sizeof(IconExtraColumn); - g_IECClear.ColumnType = clistIcon; - g_IECClear.hImage = (HANDLE) -1; - + HookEvent(ME_SYSTEM_MODULESLOADED, onModulesLoaded); + HookEvent(ME_DB_CONTACT_SETTINGCHANGED, onContactSettingChanged); return 0; } diff --git a/plugins/Rate/src/options.cpp b/plugins/Rate/src/options.cpp deleted file mode 100644 index e435e4b215..0000000000 --- a/plugins/Rate/src/options.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* - Authorization State plugin for Miranda-IM (www.miranda-im.org) - (c) 2006 by Thief - Icons by Faith Healer - - 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 - - File name : $URL: svn://svnsrv.mirandaim.ru/mainrepo/authstate/trunk/options.cpp $ - Revision : $Rev: 233 $ - Last change on : $Date: 2006-10-05 15:48:05 +0300 (Thu, 05 Oct 2006) $ - Last change by : $Author: Thief $ - -*/ - -#include "commonheaders.h" - -extern HINSTANCE g_hInst; -extern int onExtraImageApplying(WPARAM wParam, LPARAM lParam); -extern int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam); -extern IconExtraColumn g_IECAuth, g_IECGrant, g_IECAuthGrant, g_IECClear; -extern int clistIcon; -//extern byte bUseAuthIcon, bUseGrantIcon, bContactMenuItem, bIconsForRecentContacts; - -//#define EXTRA_ICON_RES0 0 // only used by nicer -//#define EXTRA_ICON_EMAIL 1 -//#define EXTRA_ICON_WEB 2 -//#define EXTRA_ICON_SMS 3 -//#define EXTRA_ICON_ADV1 4 -//#define EXTRA_ICON_ADV2 5 -//#define EXTRA_ICON_ADV3 6 -//#define EXTRA_ICON_CLIENT 7 -//#define EXTRA_ICON_ADV4 8 -//#define EXTRA_ICON_RES1 9 // only used by nicer -//#define EXTRA_ICON_PROTO 9 // used by mwclist and modern -//#define EXTRA_ICON_RES2 10 // only used by nicer -//#define EXTRA_ICON_VISMODE 10 // only used by modern - -#define MS_SKINENG_DRAWICONEXFIX "SkinEngine/DrawIconEx_Fix" - -enum { - clist_none, - clist_modern, - clist_nicer -}; - -const TCHAR *szAdvancedIconsModern[] = { - LPGENT("E-mail"), - LPGENT("Web page"), - LPGENT("Phone/SMS"), - LPGENT("Advanced #1"), - LPGENT("Advanced #2"), - LPGENT("Advanced #3"), - LPGENT("Client"), - LPGENT("Advanced #4"), - LPGENT("Protocol"), - LPGENT("Visibility/Chat activity") -}; -//const int cAdvancedIconsModern = sizeof(szAdvancedIconsModern) / sizeof(szAdvancedIconsModern[0]); - -const TCHAR *szAdvancedIconsNicer[] = { - LPGENT("Reserved"), - LPGENT("E-mail"), - LPGENT("Homepage"), - LPGENT("Telephone"), - LPGENT("Advanced #1"), - LPGENT("Advanced #2"), - LPGENT("Client"), - LPGENT("Advanced #3"), - LPGENT("Advanced #4"), - LPGENT("Reserved #1"), - LPGENT("Reserved #2") - }; -//const int cAdvancedIconsNicer = sizeof(szAdvancedIconsNicer) / sizeof(szAdvancedIconsNicer[0]); - -INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static int bInitializing = 0; - static int usedClist = clist_none; - int cAdvancedIcons; -// const char **szAdvancedIcons; - - switch (msg) - { - case WM_INITDIALOG: - { - TranslateDialogDefault(hwndDlg); - bInitializing = 1; - if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) - { - if (ServiceExists(MS_SKINENG_DRAWICONEXFIX)) - { // modern? -// SendDlgItemMessage(hwndDlg,IDC_USED_CLIST, WM_SETTEXT,0,(LPARAM)_T("Your clist: modern")); - cAdvancedIcons = SIZEOF(szAdvancedIconsModern); - usedClist = clist_modern; - } - else - { - if (ServiceExists("CLN/About")) - { - usedClist = clist_nicer; -// szAdvancedIcons = szAdvancedIconsNicer; - cAdvancedIcons = SIZEOF(szAdvancedIconsNicer); - SendDlgItemMessage(hwndDlg,IDC_USED_CLIST, WM_SETTEXT,0,(LPARAM)TranslateT("Your clist: nicer")); - } - else - { - usedClist = clist_modern; - cAdvancedIcons = SIZEOF(szAdvancedIconsModern) - 1; // mw doesn`t have last modern extraicon -// SendDlgItemMessage(hwndDlg,IDC_USED_CLIST, WM_SETTEXT,0,(LPARAM)_T("Your clist: mw")); - } - SendDlgItemMessage(hwndDlg,IDC_NOTMODERN_WARNING, WM_SETTEXT,0,(LPARAM)TranslateT("Warning: your contact list plugin doesn`t have ability to sort contacts by rate.")); - ShowWindow(GetDlgItem(hwndDlg, IDC_NOTMODERN_WARNING), SW_SHOW); - } - } - else - { - cAdvancedIcons = 0; -// SendDlgItemMessage(hwndDlg,IDC_USED_CLIST, WM_SETTEXT,0,(LPARAM)_T("Your clist: classic")); - SendDlgItemMessage(hwndDlg,IDC_NOTMODERN_WARNING, WM_SETTEXT,0,(LPARAM)TranslateT("Warning: classic contact list plugin doesn`t have ability to use extraicons")); - ShowWindow(GetDlgItem(hwndDlg, IDC_NOTMODERN_WARNING), SW_SHOW); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADVICON), 0); - } -// cAdvancedIcons = sizeof(szAdvancedIcons) / sizeof(szAdvancedIcons[0]); -// cAdvancedIcons = SIZEOF(szAdvancedIcons); - - if (usedClist != clist_none) { - for (int i = 0; i < cAdvancedIcons; i++) - { - SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_ADDSTRING, 0, (LPARAM) TranslateTS( usedClist==clist_modern ? szAdvancedIconsModern[i] : szAdvancedIconsNicer[i])); - } - - if (usedClist == clist_modern ) - SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon-1, 0); - else - SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon, 0); - } - bInitializing = 0; - return TRUE; - } - case WM_COMMAND: - { - switch (LOWORD(wParam)) { - case IDC_ADVICON: - { - if ((HIWORD(wParam) == EN_CHANGE) && (!bInitializing) || (HIWORD(wParam) == CBN_SELENDOK)) - { - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - } - } - break; - } - case WM_NOTIFY: - { - if (((LPNMHDR)lParam)->idFrom == 0) - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - { - if (usedClist==clist_none) - return TRUE; - - clistIcon = SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_GETCURSEL, 0, 0); - if (usedClist == clist_modern ) - clistIcon++; - - HANDLE hContact = db_find_first(); - while (hContact) - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); - hContact = db_find_next(hContact); - } - g_IECClear.ColumnType = clistIcon; - onExtraImageListRebuild(0,0); - hContact = db_find_first(); - while (hContact) - { - onExtraImageApplying((WPARAM)hContact,0); - hContact = db_find_next(hContact); - } - //Store options values to DB - DBWriteContactSettingByte(NULL, MODULENAME, "AdvancedIcon", clistIcon); - } - return TRUE; - } - } - } - case WM_DESTROY: - break; - } - return FALSE; -} - -int onOptInitialise(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { 0 }; - odp.cbSize = sizeof(odp); - odp.hInstance = g_hInst; - odp.ptszGroup = LPGENT("Contact List"); - odp.ptszTitle = LPGENT("Rate"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_RATE_OPT); - odp.pfnDlgProc = DlgProcOptions; - odp.flags = ODPF_BOLDGROUPS|ODPF_TCHAR; - Options_AddPage(wParam, &odp); - - return 0; -} diff --git a/plugins/Rate/src/resource.h b/plugins/Rate/src/resource.h index 3b27728839..ba0f258319 100644 --- a/plugins/Rate/src/resource.h +++ b/plugins/Rate/src/resource.h @@ -2,16 +2,12 @@ // Microsoft Visual C++ generated include file. // Used by rate.rc // -#define IDD_RATE_OPT 9 #define IDI_RATEHI 101 #define IDI_RATEME 102 #define IDI_RATELO 103 -#define IDC_ADVICON 1001 -#define IDC_NOTMODERN_WARNING 1010 -#define IDC_USED_CLIST 1011 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 104 -- cgit v1.2.3