summaryrefslogtreecommitdiff
path: root/plugins/Rate/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-11-03 17:32:37 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-11-03 17:32:37 +0000
commit31b191bc8ddb639e488ab8306f71ac1dbabf16f0 (patch)
treeaa661023372aa18381e46c7f6fcecf67856ac8ae /plugins/Rate/src
parent6ba829af4e0c008865675b67b868f33d8e7641df (diff)
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
Diffstat (limited to 'plugins/Rate/src')
-rw-r--r--plugins/Rate/src/commonheaders.h17
-rw-r--r--plugins/Rate/src/main.cpp165
-rw-r--r--plugins/Rate/src/options.cpp221
-rw-r--r--plugins/Rate/src/resource.h6
4 files changed, 41 insertions, 368 deletions
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 <m_cluiframes.h>
#include <m_extraicons.h>
-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