From 60338d55bb73d0c45b6e092703c4bb88a3c49755 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 23 Jul 2012 13:03:18 +0000 Subject: Rate, RecentContacts, Scriver: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1121 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Rate/commonheaders.h | 77 ---------- plugins/Rate/docs/rate-translation.txt | 21 +++ plugins/Rate/icons/rate_high.ico | Bin 1150 -> 0 bytes plugins/Rate/icons/rate_low.ico | Bin 1150 -> 0 bytes plugins/Rate/icons/rate_med.ico | Bin 1150 -> 0 bytes plugins/Rate/main.cpp | 251 --------------------------------- plugins/Rate/options.cpp | 221 ----------------------------- plugins/Rate/rate-translation.txt | 21 --- plugins/Rate/rate.rc | 124 ---------------- plugins/Rate/rate_10.vcxproj | 25 ++-- plugins/Rate/rate_10.vcxproj.filters | 30 +--- plugins/Rate/res/rate.rc | 124 ++++++++++++++++ plugins/Rate/res/rate_high.ico | Bin 0 -> 1150 bytes plugins/Rate/res/rate_low.ico | Bin 0 -> 1150 bytes plugins/Rate/res/rate_med.ico | Bin 0 -> 1150 bytes plugins/Rate/resource.h | 22 --- plugins/Rate/src/commonheaders.h | 77 ++++++++++ plugins/Rate/src/main.cpp | 251 +++++++++++++++++++++++++++++++++ plugins/Rate/src/options.cpp | 221 +++++++++++++++++++++++++++++ plugins/Rate/src/resource.h | 22 +++ 20 files changed, 730 insertions(+), 757 deletions(-) delete mode 100644 plugins/Rate/commonheaders.h create mode 100644 plugins/Rate/docs/rate-translation.txt delete mode 100644 plugins/Rate/icons/rate_high.ico delete mode 100644 plugins/Rate/icons/rate_low.ico delete mode 100644 plugins/Rate/icons/rate_med.ico delete mode 100644 plugins/Rate/main.cpp delete mode 100644 plugins/Rate/options.cpp delete mode 100644 plugins/Rate/rate-translation.txt delete mode 100644 plugins/Rate/rate.rc create mode 100644 plugins/Rate/res/rate.rc create mode 100644 plugins/Rate/res/rate_high.ico create mode 100644 plugins/Rate/res/rate_low.ico create mode 100644 plugins/Rate/res/rate_med.ico delete mode 100644 plugins/Rate/resource.h create mode 100644 plugins/Rate/src/commonheaders.h create mode 100644 plugins/Rate/src/main.cpp create mode 100644 plugins/Rate/src/options.cpp create mode 100644 plugins/Rate/src/resource.h (limited to 'plugins/Rate') diff --git a/plugins/Rate/commonheaders.h b/plugins/Rate/commonheaders.h deleted file mode 100644 index 9fde7034e0..0000000000 --- a/plugins/Rate/commonheaders.h +++ /dev/null @@ -1,77 +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: http://svn.mirandaim.ru/mainrepo/authstate/trunk/commonheaders.h $ - Revision : $Rev: 222 $ - Last change on : $Date: 2006-09-26 05:54:03 +0700 (Вт, 26 сен 2006) $ - Last change by : $Author: Thief $ - -*/ - -#ifndef COMMHEADERS_H -#define COMMHEADERS_H - -#define _CRT_SECURE_NO_WARNINGS - -//needed by m_utils.h -#include - -// needed by m_icolib.h > r9256 -#include - -//Miranda API headers -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#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 -{ - char* szDescr; - char* szName; - int defIconID; - HANDLE hIconLibItem; -} iconList[] = -{ - { LPGEN( "Rate high" ), "rate_high", IDI_RATEHI }, - { LPGEN( "Rate medium" ), "rate_medium", IDI_RATEME }, - { LPGEN( "Rate low" ), "rate_low", IDI_RATELO }, -}; - - - -#endif //COMMHEADERS_H diff --git a/plugins/Rate/docs/rate-translation.txt b/plugins/Rate/docs/rate-translation.txt new file mode 100644 index 0000000000..a6b3b909de --- /dev/null +++ b/plugins/Rate/docs/rate-translation.txt @@ -0,0 +1,21 @@ +; Common strings that belong to many files +;[Warning: classic contact list plugin doesn`t have ability to use extraicons] + +; ../../plugins/Rate/commonheaders.h +;[Rate high] +;[Rate low] +;[Rate medium] + +; ../../plugins/Rate/main.cpp +;[Contact Rate] + +; ../../plugins/Rate/options.cpp +;[Contact List] +;[Rate] +;[Warning: your contact list plugin doesn`t have ability to sort contacts by rate.] +;[Your clist: nicer] + +; ../../plugins/Rate/rate.rc +;[Plugin settings] +;[Use] +;[slot to draw the icon] diff --git a/plugins/Rate/icons/rate_high.ico b/plugins/Rate/icons/rate_high.ico deleted file mode 100644 index ad5fa6acf1..0000000000 Binary files a/plugins/Rate/icons/rate_high.ico and /dev/null differ diff --git a/plugins/Rate/icons/rate_low.ico b/plugins/Rate/icons/rate_low.ico deleted file mode 100644 index 66a340da9c..0000000000 Binary files a/plugins/Rate/icons/rate_low.ico and /dev/null differ diff --git a/plugins/Rate/icons/rate_med.ico b/plugins/Rate/icons/rate_med.ico deleted file mode 100644 index 2b3220de1b..0000000000 Binary files a/plugins/Rate/icons/rate_med.ico and /dev/null differ diff --git a/plugins/Rate/main.cpp b/plugins/Rate/main.cpp deleted file mode 100644 index 772d23f790..0000000000 --- a/plugins/Rate/main.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/*==========================================================================*/ -/* - FILE DESCRIPTION: Rate main - - AUTHOR: Kildor - GROUP: The NULL workgroup - PROJECT: Contact`s rate - PART: Main - VERSION: 1.0 - CREATED: 20.12.2006 23:11:41 - - EMAIL: kostia@ngs.ru - WWW: http://kildor.miranda.im - - COPYRIGHT: (C) 2006 The NULL workgroup. All Rights Reserved. -*/ -/*--------------------------------------------------------------------------*/ -/* - Copyright (C) 2006 The NULL workgroup - - 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 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", - PLUGIN_MAKE_VERSION(0,0,2,1), - "Show rating of contact in contact list (if presents).", - "Kildor, Thief", - "kostia@ngs.ru", - " 2006-2009 Kostia Romanov, based on AuthState by Alexander Turyak", - "http://kildor.miranda.im/", - UNICODE_AWARE, - // 45230488-977b-405b-856d-ea276d7083b7 - {0x45230488, 0x977b, 0x405b, {0x85, 0x6d, 0xea, 0x27, 0x6d, 0x70, 0x83, 0xb7}} -}; - -extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) -{ - g_hInst = hinstDLL; - return TRUE; -} - -// -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - 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) -{ - setExtaIcon((HANDLE) wParam); - return 0; -} - - -int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam) -{ - 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)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"rate_high"), (LPARAM)0); - g_IECRateMedium.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"rate_medium"), (LPARAM)0); - g_IECRateLow.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"rate_low"), (LPARAM)0); - } - return 0; -} - - -static void init_icolib (void) -{ - TCHAR szFile[MAX_PATH]; - GetModuleFileName(g_hInst, szFile, MAX_PATH); - - SKINICONDESC sid = {0}; - sid.cbSize = sizeof(sid); - sid.pszSection = Translate("Contact Rate"); - sid.pszDefaultFile = szFile; - sid.flags = SIDF_PATH_TCHAR; - - for (int i = 0; i < SIZEOF(iconList); i++ ) { - sid.pszName = iconList[i].szName; - sid.pszDescription = iconList[i].szDescr; - sid.iDefaultIndex = -iconList[i].defIconID; - iconList[i].hIconLibItem = Skin_AddIcon(&sid); - } -} - - -int onModulesLoaded(WPARAM wParam,LPARAM lParam) -{ - //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 = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact != NULL) - { - setExtaIcon(hContact, -1, FALSE); - hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); - } - } - 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); - } - - return 0; -} - - -int onContactSettingChanged(WPARAM wParam,LPARAM lParam) -{ - DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; - - if (wParam != NULL && !lstrcmp(cws->szModule,"CList") && !lstrcmp(cws->szSetting,"Rate")) - setExtaIcon((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; - - return 0; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - return 0; -} diff --git a/plugins/Rate/options.cpp b/plugins/Rate/options.cpp deleted file mode 100644 index d6088aa691..0000000000 --- a/plugins/Rate/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 char *szAdvancedIconsModern[] = { - "E-mail", - "Web page", - "Phone/SMS", - "Advanced #1", - "Advanced #2", - "Advanced #3", - "Client", - "Advanced #4", - "Protocol", - "Visibility/Chat activity" -}; -//const int cAdvancedIconsModern = sizeof(szAdvancedIconsModern) / sizeof(szAdvancedIconsModern[0]); - -const char *szAdvancedIconsNicer[] = { - "Reserved", - "E-mail", - "Homepage", - "Telephone", - "Advanced #1", - "Advanced #2", - "Client", - "Advanced #3", - "Advanced #4", - "Reserved #1", - "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) Translate( 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 = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact) - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - g_IECClear.ColumnType = clistIcon; - onExtraImageListRebuild(0,0); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact) - { - onExtraImageApplying((WPARAM)hContact,0); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - //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.pszGroup = LPGEN("Contact List"); - odp.pszTitle = LPGEN("Rate"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_RATE_OPT); - odp.pfnDlgProc = DlgProcOptions; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - - return 0; -} diff --git a/plugins/Rate/rate-translation.txt b/plugins/Rate/rate-translation.txt deleted file mode 100644 index a6b3b909de..0000000000 --- a/plugins/Rate/rate-translation.txt +++ /dev/null @@ -1,21 +0,0 @@ -; Common strings that belong to many files -;[Warning: classic contact list plugin doesn`t have ability to use extraicons] - -; ../../plugins/Rate/commonheaders.h -;[Rate high] -;[Rate low] -;[Rate medium] - -; ../../plugins/Rate/main.cpp -;[Contact Rate] - -; ../../plugins/Rate/options.cpp -;[Contact List] -;[Rate] -;[Warning: your contact list plugin doesn`t have ability to sort contacts by rate.] -;[Your clist: nicer] - -; ../../plugins/Rate/rate.rc -;[Plugin settings] -;[Use] -;[slot to draw the icon] diff --git a/plugins/Rate/rate.rc b/plugins/Rate/rate.rc deleted file mode 100644 index e1a75b6808..0000000000 --- a/plugins/Rate/rate.rc +++ /dev/null @@ -1,124 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Ukrainian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_UKR) -#ifdef _WIN32 -LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_RATEHI ICON "icons\\rate_high.ico" -IDI_RATELO ICON "icons\\rate_low.ico" -IDI_RATEME ICON "icons\\rate_med.ico" -#endif // Ukrainian resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_RATE_OPT DIALOGEX 0, 0, 314, 240 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - COMBOBOX IDC_ADVICON,95,102,78,81,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP,WS_EX_CLIENTEDGE - GROUPBOX "Plugin settings",IDC_STATIC,46,46,222,118 - RTEXT "Use",IDC_STATIC,56,104,33,12 - LTEXT "slot to draw the icon",IDC_STATIC,179,104,76,17 - LTEXT "Warning: classic contact list plugin doesn`t have ability to use extraicons", - IDC_NOTMODERN_WARNING,77,126,171,18,NOT WS_VISIBLE -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_RATE_OPT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 307 - TOPMARGIN, 7 - BOTTOMMARGIN, 233 - END -END -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/Rate/rate_10.vcxproj b/plugins/Rate/rate_10.vcxproj index 1675f7e947..82e835bbb9 100644 --- a/plugins/Rate/rate_10.vcxproj +++ b/plugins/Rate/rate_10.vcxproj @@ -73,7 +73,7 @@ Disabled ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL @@ -97,7 +97,7 @@ Disabled ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN64;_DEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN64;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 @@ -119,7 +119,7 @@ Full ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) Level3 Size @@ -142,7 +142,7 @@ Full ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN64;NDEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN64;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) Level3 Size @@ -162,22 +162,15 @@ - - + + - - + + - - - - - - - - + diff --git a/plugins/Rate/rate_10.vcxproj.filters b/plugins/Rate/rate_10.vcxproj.filters index 53188635f5..ba69553d11 100644 --- a/plugins/Rate/rate_10.vcxproj.filters +++ b/plugins/Rate/rate_10.vcxproj.filters @@ -13,46 +13,26 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx - - {629d9113-01ed-4da4-8f68-76e949ebdb7b} - - + Source Files - + Source Files - + Header Files - + Header Files - + Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Docs - - - Docs - - \ No newline at end of file diff --git a/plugins/Rate/res/rate.rc b/plugins/Rate/res/rate.rc new file mode 100644 index 0000000000..59a1db4d1f --- /dev/null +++ b/plugins/Rate/res/rate.rc @@ -0,0 +1,124 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\src\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Ukrainian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_UKR) +#ifdef _WIN32 +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT +#pragma code_page(1251) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_RATEHI ICON "rate_high.ico" +IDI_RATELO ICON "rate_low.ico" +IDI_RATEME ICON "rate_med.ico" +#endif // Ukrainian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\src\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_RATE_OPT DIALOGEX 0, 0, 314, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_ADVICON,95,102,78,81,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP,WS_EX_CLIENTEDGE + GROUPBOX "Plugin settings",IDC_STATIC,46,46,222,118 + RTEXT "Use",IDC_STATIC,56,104,33,12 + LTEXT "slot to draw the icon",IDC_STATIC,179,104,76,17 + LTEXT "Warning: classic contact list plugin doesn`t have ability to use extraicons", + IDC_NOTMODERN_WARNING,77,126,171,18,NOT WS_VISIBLE +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_RATE_OPT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 307 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/Rate/res/rate_high.ico b/plugins/Rate/res/rate_high.ico new file mode 100644 index 0000000000..ad5fa6acf1 Binary files /dev/null and b/plugins/Rate/res/rate_high.ico differ diff --git a/plugins/Rate/res/rate_low.ico b/plugins/Rate/res/rate_low.ico new file mode 100644 index 0000000000..66a340da9c Binary files /dev/null and b/plugins/Rate/res/rate_low.ico differ diff --git a/plugins/Rate/res/rate_med.ico b/plugins/Rate/res/rate_med.ico new file mode 100644 index 0000000000..2b3220de1b Binary files /dev/null and b/plugins/Rate/res/rate_med.ico differ diff --git a/plugins/Rate/resource.h b/plugins/Rate/resource.h deleted file mode 100644 index 3b27728839..0000000000 --- a/plugins/Rate/resource.h +++ /dev/null @@ -1,22 +0,0 @@ -//{{NO_DEPENDENCIES}} -// 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 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1013 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/Rate/src/commonheaders.h b/plugins/Rate/src/commonheaders.h new file mode 100644 index 0000000000..9fde7034e0 --- /dev/null +++ b/plugins/Rate/src/commonheaders.h @@ -0,0 +1,77 @@ +/* + 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: http://svn.mirandaim.ru/mainrepo/authstate/trunk/commonheaders.h $ + Revision : $Rev: 222 $ + Last change on : $Date: 2006-09-26 05:54:03 +0700 (Вт, 26 сен 2006) $ + Last change by : $Author: Thief $ + +*/ + +#ifndef COMMHEADERS_H +#define COMMHEADERS_H + +#define _CRT_SECURE_NO_WARNINGS + +//needed by m_utils.h +#include + +// needed by m_icolib.h > r9256 +#include + +//Miranda API headers +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#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 +{ + char* szDescr; + char* szName; + int defIconID; + HANDLE hIconLibItem; +} iconList[] = +{ + { LPGEN( "Rate high" ), "rate_high", IDI_RATEHI }, + { LPGEN( "Rate medium" ), "rate_medium", IDI_RATEME }, + { LPGEN( "Rate low" ), "rate_low", IDI_RATELO }, +}; + + + +#endif //COMMHEADERS_H diff --git a/plugins/Rate/src/main.cpp b/plugins/Rate/src/main.cpp new file mode 100644 index 0000000000..772d23f790 --- /dev/null +++ b/plugins/Rate/src/main.cpp @@ -0,0 +1,251 @@ +/*==========================================================================*/ +/* + FILE DESCRIPTION: Rate main + + AUTHOR: Kildor + GROUP: The NULL workgroup + PROJECT: Contact`s rate + PART: Main + VERSION: 1.0 + CREATED: 20.12.2006 23:11:41 + + EMAIL: kostia@ngs.ru + WWW: http://kildor.miranda.im + + COPYRIGHT: (C) 2006 The NULL workgroup. All Rights Reserved. +*/ +/*--------------------------------------------------------------------------*/ +/* + Copyright (C) 2006 The NULL workgroup + + 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 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", + PLUGIN_MAKE_VERSION(0,0,2,1), + "Show rating of contact in contact list (if presents).", + "Kildor, Thief", + "kostia@ngs.ru", + " 2006-2009 Kostia Romanov, based on AuthState by Alexander Turyak", + "http://kildor.miranda.im/", + UNICODE_AWARE, + // 45230488-977b-405b-856d-ea276d7083b7 + {0x45230488, 0x977b, 0x405b, {0x85, 0x6d, 0xea, 0x27, 0x6d, 0x70, 0x83, 0xb7}} +}; + +extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + g_hInst = hinstDLL; + return TRUE; +} + +// +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + 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) +{ + setExtaIcon((HANDLE) wParam); + return 0; +} + + +int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam) +{ + 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)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"rate_high"), (LPARAM)0); + g_IECRateMedium.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"rate_medium"), (LPARAM)0); + g_IECRateLow.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"rate_low"), (LPARAM)0); + } + return 0; +} + + +static void init_icolib (void) +{ + TCHAR szFile[MAX_PATH]; + GetModuleFileName(g_hInst, szFile, MAX_PATH); + + SKINICONDESC sid = {0}; + sid.cbSize = sizeof(sid); + sid.pszSection = Translate("Contact Rate"); + sid.pszDefaultFile = szFile; + sid.flags = SIDF_PATH_TCHAR; + + for (int i = 0; i < SIZEOF(iconList); i++ ) { + sid.pszName = iconList[i].szName; + sid.pszDescription = iconList[i].szDescr; + sid.iDefaultIndex = -iconList[i].defIconID; + iconList[i].hIconLibItem = Skin_AddIcon(&sid); + } +} + + +int onModulesLoaded(WPARAM wParam,LPARAM lParam) +{ + //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 = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact != NULL) + { + setExtaIcon(hContact, -1, FALSE); + hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); + } + } + 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); + } + + return 0; +} + + +int onContactSettingChanged(WPARAM wParam,LPARAM lParam) +{ + DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; + + if (wParam != NULL && !lstrcmp(cws->szModule,"CList") && !lstrcmp(cws->szSetting,"Rate")) + setExtaIcon((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; + + return 0; +} + +extern "C" int __declspec(dllexport) Unload(void) +{ + return 0; +} diff --git a/plugins/Rate/src/options.cpp b/plugins/Rate/src/options.cpp new file mode 100644 index 0000000000..d6088aa691 --- /dev/null +++ b/plugins/Rate/src/options.cpp @@ -0,0 +1,221 @@ +/* + 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 char *szAdvancedIconsModern[] = { + "E-mail", + "Web page", + "Phone/SMS", + "Advanced #1", + "Advanced #2", + "Advanced #3", + "Client", + "Advanced #4", + "Protocol", + "Visibility/Chat activity" +}; +//const int cAdvancedIconsModern = sizeof(szAdvancedIconsModern) / sizeof(szAdvancedIconsModern[0]); + +const char *szAdvancedIconsNicer[] = { + "Reserved", + "E-mail", + "Homepage", + "Telephone", + "Advanced #1", + "Advanced #2", + "Client", + "Advanced #3", + "Advanced #4", + "Reserved #1", + "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) Translate( 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 = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact) + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + g_IECClear.ColumnType = clistIcon; + onExtraImageListRebuild(0,0); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact) + { + onExtraImageApplying((WPARAM)hContact,0); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + //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.pszGroup = LPGEN("Contact List"); + odp.pszTitle = LPGEN("Rate"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_RATE_OPT); + odp.pfnDlgProc = DlgProcOptions; + odp.flags = ODPF_BOLDGROUPS; + Options_AddPage(wParam, &odp); + + return 0; +} diff --git a/plugins/Rate/src/resource.h b/plugins/Rate/src/resource.h new file mode 100644 index 0000000000..3b27728839 --- /dev/null +++ b/plugins/Rate/src/resource.h @@ -0,0 +1,22 @@ +//{{NO_DEPENDENCIES}} +// 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 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1013 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif -- cgit v1.2.3