From c4582dd65b444e5dae29ada7cc3f6c9a9c20edf3 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 2 Dec 2012 18:19:49 +0000 Subject: new easy standard way of registering icons: Icon_Register git-svn-id: http://svn.miranda-ng.org/main/trunk@2601 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/core/miranda.h | 1 - src/core/stdchat/src/options.cpp | 102 ++++++++++++----------------- src/core/stdmsg/src/globals.cpp | 37 ++--------- src/core/stdmsg/src/msglog.cpp | 4 +- src/core/stdplug.h | 4 +- src/mir_core/icons.cpp | 77 ++++++++++++++++++++++ src/mir_core/mir_core.def | 2 + src/mir_core/mir_core_10.vcxproj | 1 + src/mir_core/mir_core_10.vcxproj.filters | 3 + src/modules/extraicons/IcolibExtraIcon.cpp | 2 +- src/modules/extraicons/extraicons.cpp | 30 +++------ src/modules/icolib/IcoLib.h | 10 +-- src/modules/icolib/skin2icons.cpp | 38 +++++------ src/modules/icolib/skin2opts.cpp | 20 +++--- 14 files changed, 177 insertions(+), 154 deletions(-) create mode 100644 src/mir_core/icons.cpp (limited to 'src') diff --git a/src/core/miranda.h b/src/core/miranda.h index 3cfaab2b76..b89eeb3011 100644 --- a/src/core/miranda.h +++ b/src/core/miranda.h @@ -138,7 +138,6 @@ extern HANDLE hOkToExitEvent, hModulesLoadedEvent, hevLoadModule, hevUnloadModul /**** newplugins.cpp *******************************************************************/ char* GetPluginNameByInstance(HINSTANCE hInstance); -int GetPluginLangByInstance(HINSTANCE hInstance); int GetPluginFakeId(const MUUID &uuid, int hLangpack); /**** utf.cpp **************************************************************************/ diff --git a/src/core/stdchat/src/options.cpp b/src/core/stdchat/src/options.cpp index fae3bdd567..8ad41172ce 100644 --- a/src/core/stdchat/src/options.cpp +++ b/src/core/stdchat/src/options.cpp @@ -426,72 +426,52 @@ void RegisterFonts( void ) // add icons to the skinning module -struct +static IconItem iconList[] = { - int size; - char* szSection; - char* szDescr; - char* szName; - int defIconID; -} -static const iconList[] = -{ - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Window Icon"), "chat_window", IDI_CHANMGR }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Text colour"), "chat_fgcol", IDI_COLOR }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Background colour"), "chat_bkgcol", IDI_BKGCOLOR }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Bold"), "chat_bold", IDI_BBOLD }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Italics"), "chat_italics", IDI_BITALICS }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Underlined"), "chat_underline", IDI_BUNDERLINE }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Smiley button"), "chat_smiley", IDI_BSMILEY }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Room history"), "chat_history", IDI_HISTORY }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Room settings"), "chat_settings", IDI_TOPICBUT }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Event filter disabled"), "chat_filter", IDI_FILTER }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Event filter enabled"), "chat_filter2", IDI_FILTER2 }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Hide userlist"), "chat_nicklist", IDI_NICKLIST }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Show userlist"), "chat_nicklist2", IDI_NICKLIST2 }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Icon overlay"), "chat_overlay", IDI_OVERLAY }, - { 0, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Close"), "chat_close", IDI_CLOSE }, - - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Status 1 (10x10)"), "chat_status0", IDI_STATUS0 }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Status 2 (10x10)"), "chat_status1", IDI_STATUS1 }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Status 3 (10x10)"), "chat_status2", IDI_STATUS2 }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Status 4 (10x10)"), "chat_status3", IDI_STATUS3 }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Status 5 (10x10)"), "chat_status4", IDI_STATUS4 }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats"), LPGEN("Status 6 (10x10)"), "chat_status5", IDI_STATUS5 }, - - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Message in (10x10)"), "chat_log_message_in", IDI_MESSAGE }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Message out (10x10)"), "chat_log_message_out", IDI_MESSAGEOUT }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Action (10x10)"), "chat_log_action", IDI_ACTION }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Add Status (10x10)"), "chat_log_addstatus", IDI_ADDSTATUS }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Remove status (10x10)"), "chat_log_removestatus", IDI_REMSTATUS }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Join (10x10)"), "chat_log_join", IDI_JOIN }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Leave (10x10)"), "chat_log_part", IDI_PART }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Quit (10x10)"), "chat_log_quit", IDI_QUIT }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Kick (10x10)"), "chat_log_kick", IDI_KICK }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Nickchange (10x10)"), "chat_log_nick", IDI_NICK }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Notice (10x10)"), "chat_log_notice", IDI_NOTICE }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Topic (10x10)"), "chat_log_topic", IDI_TOPIC }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Highlight (10x10)"), "chat_log_highlight", IDI_HIGHLIGHT }, - { 10, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), LPGEN("Information (10x10)"), "chat_log_info", IDI_INFO } + { LPGEN("Window Icon"), "chat_window", IDI_CHANMGR, 0 }, + { LPGEN("Text colour"), "chat_fgcol", IDI_COLOR, 0 }, + { LPGEN("Background colour"), "chat_bkgcol", IDI_BKGCOLOR, 0 }, + { LPGEN("Bold"), "chat_bold", IDI_BBOLD, 0 }, + { LPGEN("Italics"), "chat_italics", IDI_BITALICS, 0 }, + { LPGEN("Underlined"), "chat_underline", IDI_BUNDERLINE, 0 }, + { LPGEN("Smiley button"), "chat_smiley", IDI_BSMILEY, 0 }, + { LPGEN("Room history"), "chat_history", IDI_HISTORY, 0 }, + { LPGEN("Room settings"), "chat_settings", IDI_TOPICBUT, 0 }, + { LPGEN("Event filter disabled"), "chat_filter", IDI_FILTER, 0 }, + { LPGEN("Event filter enabled"), "chat_filter2", IDI_FILTER2, 0 }, + { LPGEN("Hide userlist"), "chat_nicklist", IDI_NICKLIST, 0 }, + { LPGEN("Show userlist"), "chat_nicklist2", IDI_NICKLIST2, 0 }, + { LPGEN("Icon overlay"), "chat_overlay", IDI_OVERLAY, 0 }, + { LPGEN("Close"), "chat_close", IDI_CLOSE, 0 }, + + { LPGEN("Status 1 (10x10)"), "chat_status0", IDI_STATUS0, 10 }, + { LPGEN("Status 2 (10x10)"), "chat_status1", IDI_STATUS1, 10 }, + { LPGEN("Status 3 (10x10)"), "chat_status2", IDI_STATUS2, 10 }, + { LPGEN("Status 4 (10x10)"), "chat_status3", IDI_STATUS3, 10 }, + { LPGEN("Status 5 (10x10)"), "chat_status4", IDI_STATUS4, 10 }, + { LPGEN("Status 6 (10x10)"), "chat_status5", IDI_STATUS5, 10 }, + + { LPGEN("Message in (10x10)"), "chat_log_message_in", IDI_MESSAGE, 10 }, + { LPGEN("Message out (10x10)"), "chat_log_message_out", IDI_MESSAGEOUT, 10 }, + { LPGEN("Action (10x10)"), "chat_log_action", IDI_ACTION, 10 }, + { LPGEN("Add Status (10x10)"), "chat_log_addstatus", IDI_ADDSTATUS, 10 }, + { LPGEN("Remove status (10x10)"), "chat_log_removestatus", IDI_REMSTATUS, 10 }, + { LPGEN("Join (10x10)"), "chat_log_join", IDI_JOIN, 10 }, + { LPGEN("Leave (10x10)"), "chat_log_part", IDI_PART, 10 }, + { LPGEN("Quit (10x10)"), "chat_log_quit", IDI_QUIT, 10 }, + { LPGEN("Kick (10x10)"), "chat_log_kick", IDI_KICK, 10 }, + { LPGEN("Nickchange (10x10)"), "chat_log_nick", IDI_NICK, 10 }, + { LPGEN("Notice (10x10)"), "chat_log_notice", IDI_NOTICE, 10 }, + { LPGEN("Topic (10x10)"), "chat_log_topic", IDI_TOPIC, 10 }, + { LPGEN("Highlight (10x10)"), "chat_log_highlight", IDI_HIGHLIGHT, 10 }, + { LPGEN("Information (10x10)"), "chat_log_info", IDI_INFO, 10 } }; void AddIcons(void) { - TCHAR szFile[MAX_PATH]; - GetModuleFileName(g_hInst, szFile, MAX_PATH); - - SKINICONDESC sid = { sizeof(sid) }; - sid.ptszDefaultFile = szFile; - sid.flags = SIDF_PATH_TCHAR; - - for (int i = 0; i < SIZEOF(iconList); i++ ) { - sid.cx = sid.cy = iconList[i].size; - sid.pszSection = iconList[i].szSection; - sid.pszDescription = iconList[i].szDescr; - sid.pszName = iconList[i].szName; - sid.iDefaultIndex = -iconList[i].defIconID; - Skin_AddIcon(&sid); -} } + Icon_Register(g_hInst, LPGEN("Messaging") "/" LPGEN("Group Chats"), iconList, 21); + Icon_Register(g_hInst, LPGEN("Messaging") "/" LPGEN("Group Chats Log"), iconList+21, 14); +} // load icons from the skinning module if available HICON LoadIconEx( char* pszIcoLibName, BOOL big ) diff --git a/src/core/stdmsg/src/globals.cpp b/src/core/stdmsg/src/globals.cpp index d60ce6d3fc..52e69a8860 100644 --- a/src/core/stdmsg/src/globals.cpp +++ b/src/core/stdmsg/src/globals.cpp @@ -26,43 +26,16 @@ static int dbaddedevent(WPARAM wParam, LPARAM lParam); static int ackevent(WPARAM wParam, LPARAM lParam); static int AvatarChanged(WPARAM wParam, LPARAM lParam); -typedef struct IconDefStruct +IconItem iconList[] = { - char *szName; - char *szDescr; - int defIconID; -} IconList; - -static const IconList iconList[] = -{ - { "INCOMING", LPGEN("Incoming message (10x10)"), IDI_INCOMING }, - { "OUTGOING", LPGEN("Outgoing message (10x10)"), IDI_OUTGOING }, - { "NOTICE", LPGEN("Notice (10x10)"), IDI_NOTICE }, + { LPGEN("Incoming message (10x10)"), "INCOMING", IDI_INCOMING, 10 }, + { LPGEN("Outgoing message (10x10)"), "OUTGOING", IDI_OUTGOING, 10 }, + { LPGEN("Notice (10x10)"), "NOTICE", IDI_NOTICE, 10 }, }; - -HANDLE hIconLibItem[SIZEOF(iconList)]; - static void InitIcons(void) { - char szSettingName[100]; - - TCHAR szFile[MAX_PATH]; - GetModuleFileName(g_hInst, szFile, SIZEOF(szFile)); - - SKINICONDESC sid = { sizeof(sid) }; - sid.ptszDefaultFile = szFile; - sid.pszName = szSettingName; - sid.pszSection = LPGEN("Messaging"); - sid.flags = SIDF_PATH_TCHAR; - sid.cx = 10; sid.cy = 10; - - for (int i=0; i < SIZEOF(iconList); i++) { - mir_snprintf(szSettingName, sizeof(szSettingName), "SRMM_%s", iconList[i].szName); - sid.pszDescription = iconList[i].szDescr; - sid.iDefaultIndex = -iconList[i].defIconID; - hIconLibItem[i] = Skin_AddIcon(&sid); - } + Icon_Register(g_hInst, LPGEN("Messaging"), iconList, SIZEOF(iconList), "SRMM"); } static int IconsChanged(WPARAM wParam, LPARAM lParam) diff --git a/src/core/stdmsg/src/msglog.cpp b/src/core/stdmsg/src/msglog.cpp index 3596233975..89647cd226 100644 --- a/src/core/stdmsg/src/msglog.cpp +++ b/src/core/stdmsg/src/msglog.cpp @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "commonheaders.h" -extern HANDLE hIconLibItem[]; +extern IconItem iconList[]; static int logPixelSY; #define LOGICON_MSG_IN 0 @@ -609,7 +609,7 @@ void LoadMsgLogIcons(void) pBmpBits = (PBYTE) mir_alloc(widthBytes * bih.biHeight); for (i = 0; i < SIZEOF(pLogIconBmpBits); i++) { - hIcon = Skin_GetIconByHandle(hIconLibItem[i]); + hIcon = Skin_GetIconByHandle(iconList[i].hIcolib); pLogIconBmpBits[i] = (PBYTE) mir_alloc(RTFPICTHEADERMAXSIZE + (bih.biSize + widthBytes * bih.biHeight) * 2); //I can't seem to get binary mode working. No matter. rtfHeaderSize = sprintf((char*)pLogIconBmpBits[i], "{\\pict\\dibitmap0\\wbmbitspixel%u\\wbmplanes1\\wbmwidthbytes%u\\picw%u\\pich%u ", bih.biBitCount, widthBytes, bih.biWidth, bih.biHeight); diff --git a/src/core/stdplug.h b/src/core/stdplug.h index 00cecdbbfa..f7a6e49522 100644 --- a/src/core/stdplug.h +++ b/src/core/stdplug.h @@ -13,7 +13,7 @@ MIRANDA_EXE_FUNC(HANDLE) IcoLib_AddNewIcon(int hLangpack, SKINICONDESC* sid); MIRANDA_EXE_FUNC(HICON) IcoLib_GetIcon(const char* pszIconName, bool big); MIRANDA_EXE_FUNC(HICON) IcoLib_GetIconByHandle(HANDLE hItem, bool big); MIRANDA_EXE_FUNC(HANDLE) IcoLib_IsManaged(HICON hIcon); -MIRANDA_EXE_FUNC(int) IcoLib_ReleaseIcon(HICON hIcon, char* szIconName, bool big=false); +MIRANDA_EXE_FUNC(int) IcoLib_ReleaseIcon(HICON hIcon, char* szIconName, bool big=false); MIRANDA_EXE_FUNC(void) Button_SetIcon_IcoLib(HWND hDlg, int itemId, int iconId, const char* tooltip); MIRANDA_EXE_FUNC(void) Button_FreeIcon_IcoLib(HWND hDlg, int itemId); @@ -21,3 +21,5 @@ MIRANDA_EXE_FUNC(void) Button_FreeIcon_IcoLib(HWND hDlg, int itemId); MIRANDA_EXE_FUNC(void) Window_SetIcon_IcoLib(HWND hWnd, int iconId); MIRANDA_EXE_FUNC(void) Window_SetProtoIcon_IcoLib(HWND hWnd, const char* szProto, int iconId); MIRANDA_EXE_FUNC(void) Window_FreeIcon_IcoLib(HWND hWnd); + +MIRANDA_EXE_FUNC(int) GetPluginLangByInstance(HINSTANCE hInstance); diff --git a/src/mir_core/icons.cpp b/src/mir_core/icons.cpp new file mode 100644 index 0000000000..74ba02c07c --- /dev/null +++ b/src/mir_core/icons.cpp @@ -0,0 +1,77 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright 2012 Miranda NG project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "commonheaders.h" + +#include +#include "..\src\core\stdplug.h" + +MIR_CORE_DLL(void) Icon_Register(HINSTANCE hInst, const char *szSection, IconItem *pIcons, size_t iCount, char *prefix, int hLangpack) +{ + TCHAR szFile[MAX_PATH]; + GetModuleFileName(hInst, szFile, MAX_PATH); + + SKINICONDESC sid = { sizeof(sid) }; + sid.ptszDefaultFile = szFile; + sid.pszSection = (char*)szSection; + sid.flags = SIDF_PATH_TCHAR; + + for (unsigned i = 0; i < iCount; i++) { + char szSetting[100]; + if (prefix) { + mir_snprintf(szSetting, SIZEOF(szSetting), "%s_%s", prefix, pIcons[i].szName); + sid.pszName = szSetting; + } + else sid.pszName = pIcons[i].szName; + + sid.cx = sid.cy = pIcons[i].size; + sid.pszDescription = pIcons[i].szDescr; + sid.iDefaultIndex = -pIcons[i].defIconID; + pIcons[i].hIcolib = (HANDLE)CallService("Skin2/Icons/AddIcon", hLangpack, (LPARAM)&sid); + } +} + +MIR_CORE_DLL(void) Icon_RegisterT(HINSTANCE hInst, const TCHAR *szSection, IconItemT *pIcons, size_t iCount, char *prefix, int hLangpack) +{ + TCHAR szFile[MAX_PATH]; + GetModuleFileName(hInst, szFile, MAX_PATH); + + SKINICONDESC sid = { sizeof(sid) }; + sid.ptszDefaultFile = szFile; + sid.ptszSection = (TCHAR*)szSection; + sid.flags = SIDF_ALL_TCHAR; + + for (unsigned i = 0; i < iCount; i++) { + char szSetting[100]; + if (prefix) { + mir_snprintf(szSetting, SIZEOF(szSetting), "%s_%s", prefix, pIcons[i].szName); + sid.pszName = szSetting; + } + else sid.pszName = pIcons[i].szName; + + sid.cx = sid.cy = pIcons[i].size; + sid.ptszDescription = pIcons[i].tszDescr; + sid.iDefaultIndex = -pIcons[i].defIconID; + pIcons[i].hIcolib = (HANDLE)CallService("Skin2/Icons/AddIcon", hLangpack, (LPARAM)&sid); + } +} diff --git a/src/mir_core/mir_core.def b/src/mir_core/mir_core.def index df6cce1144..3958995c32 100644 --- a/src/mir_core/mir_core.def +++ b/src/mir_core/mir_core.def @@ -134,3 +134,5 @@ GetSubscribersCount @131 NotifyFastHook @132 db_find_first @133 db_find_next @134 +Icon_Register @135 +Icon_RegisterT @136 diff --git a/src/mir_core/mir_core_10.vcxproj b/src/mir_core/mir_core_10.vcxproj index edabb2b74f..c1cf98d550 100644 --- a/src/mir_core/mir_core_10.vcxproj +++ b/src/mir_core/mir_core_10.vcxproj @@ -27,6 +27,7 @@ + Create diff --git a/src/mir_core/mir_core_10.vcxproj.filters b/src/mir_core/mir_core_10.vcxproj.filters index 61188b5100..9e472906fb 100644 --- a/src/mir_core/mir_core_10.vcxproj.filters +++ b/src/mir_core/mir_core_10.vcxproj.filters @@ -55,6 +55,9 @@ Source Files + + Source Files + diff --git a/src/modules/extraicons/IcolibExtraIcon.cpp b/src/modules/extraicons/IcolibExtraIcon.cpp index 1b18b0f9c8..aa00b0efdc 100644 --- a/src/modules/extraicons/IcolibExtraIcon.cpp +++ b/src/modules/extraicons/IcolibExtraIcon.cpp @@ -82,7 +82,7 @@ int IcolibExtraIcon::setIcon(int id, HANDLE hContact, HANDLE hIcoLib) } } - IconItem *p = (IconItem*)hIcoLib; + IcolibItem *p = (IcolibItem*)hIcoLib; char *szName = (p) ? p->name : NULL; storeIcon(hContact, szName); diff --git a/src/modules/extraicons/extraicons.cpp b/src/modules/extraicons/extraicons.cpp index a1cfbf8c57..b47a5d4dd9 100644 --- a/src/modules/extraicons/extraicons.cpp +++ b/src/modules/extraicons/extraicons.cpp @@ -507,6 +507,13 @@ static INT_PTR svcExtraIcon_Add(WPARAM wParam, LPARAM lParam) /////////////////////////////////////////////////////////////////////////////// +static IconItem iconList[] = +{ + { LPGEN("Chat Activity"), "ChatActivity", IDI_CHAT }, + { LPGEN("Male"), "gender_male", IDI_MALE }, + { LPGEN("Female"), "gender_female", IDI_FEMALE } +}; + void LoadExtraIconsModule() { DWORD ret = CallService(MS_CLUI_GETCAPS, CLUICAPS_FLAGS2, 0); @@ -525,28 +532,7 @@ void LoadExtraIconsModule() hEventExtraImageListRebuilding = CreateHookableEvent(ME_CLIST_EXTRA_LIST_REBUILD); // Icons - TCHAR tszFile[MAX_PATH]; - GetModuleFileName(NULL, tszFile, MAX_PATH); - - SKINICONDESC sid = { sizeof(sid) }; - sid.flags = SIDF_PATH_TCHAR; - sid.ptszDefaultFile = tszFile; - sid.pszSection = "Contact List"; - - sid.pszName = "ChatActivity"; - sid.pszDescription = LPGEN("Chat Activity"); - sid.iDefaultIndex = -IDI_CHAT; - Skin_AddIcon(&sid); - - sid.pszName = "gender_male"; - sid.pszDescription = LPGEN("Male"); - sid.iDefaultIndex = -IDI_MALE; - Skin_AddIcon(&sid); - - sid.pszName = "gender_female"; - sid.pszDescription = LPGEN("Female"); - sid.iDefaultIndex = -IDI_FEMALE; - Skin_AddIcon(&sid); + Icon_Register(NULL, "Contact List", iconList, SIZEOF(iconList)); // Hooks HookEvent(ME_SYSTEM_MODULESLOADED, &ModulesLoaded); diff --git a/src/modules/icolib/IcoLib.h b/src/modules/icolib/IcoLib.h index 550de7ad9b..ec93d2af62 100644 --- a/src/modules/icolib/IcoLib.h +++ b/src/modules/icolib/IcoLib.h @@ -56,7 +56,7 @@ struct IconSourceItem int icon_size; }; -struct IconItem +struct IcolibItem { char* name; SectionItem* section; @@ -90,15 +90,15 @@ int IconSourceItem_ReleaseIcon(IconSourceItem* item); HICON IconSourceItem_GetIcon(IconSourceItem* item); IconSourceItem* GetIconSourceItem(const TCHAR* file, int indx, int cxIcon, int cyIcon); -IconItem* IcoLib_FindHIcon(HICON hIcon, bool &big); -IconItem* IcoLib_FindIcon(const char* pszIconName); +IcolibItem* IcoLib_FindHIcon(HICON hIcon, bool &big); +IcolibItem* IcoLib_FindIcon(const char* pszIconName); -HICON IconItem_GetIcon(IconItem* item, bool big); +HICON IconItem_GetIcon(IcolibItem* item, bool big); int SkinOptionsInit(WPARAM, LPARAM); extern CRITICAL_SECTION csIconList; -extern LIST iconList; +extern LIST iconList; extern LIST sectionList; extern BOOL bNeedRebuild; diff --git a/src/modules/icolib/skin2icons.cpp b/src/modules/icolib/skin2icons.cpp index eec1dff500..80bcfc5e9e 100644 --- a/src/modules/icolib/skin2icons.cpp +++ b/src/modules/icolib/skin2icons.cpp @@ -82,12 +82,12 @@ static int sttCompareIconSourceItems(const IconSourceItem* p1, const IconSourceI static LIST iconSourceList(20, sttCompareIconSourceItems); -static int sttCompareIcons(const IconItem* p1, const IconItem* p2) +static int sttCompareIcons(const IcolibItem* p1, const IcolibItem* p2) { return strcmp(p1->name, p2->name); } -LIST iconList(20, sttCompareIcons); +LIST iconList(20, sttCompareIcons); ///////////////////////////////////////////////////////////////////////////////////////// // Utility functions @@ -447,20 +447,20 @@ static void IcoLib_RemoveSection(SectionItem* section) } } -IconItem* IcoLib_FindIcon(const char* pszIconName) +IcolibItem* IcoLib_FindIcon(const char* pszIconName) { int indx; - IconItem key = { (char*)pszIconName }; + IcolibItem key = { (char*)pszIconName }; if ((indx = iconList.getIndex(&key)) != -1) return iconList[ indx ]; return NULL; } -IconItem* IcoLib_FindHIcon(HICON hIcon, bool &big) +IcolibItem* IcoLib_FindHIcon(HICON hIcon, bool &big) { for (int i = 0; i < iconList.getCount(); i++) { - IconItem *p = iconList[i]; + IcolibItem *p = iconList[i]; if ((void*)p == hIcon) { big = (p->source_small == NULL); return p; @@ -478,7 +478,7 @@ IconItem* IcoLib_FindHIcon(HICON hIcon, bool &big) return NULL; } -static void IcoLib_FreeIcon(IconItem* icon) +static void IcoLib_FreeIcon(IcolibItem* icon) { if ( !icon) return; @@ -510,9 +510,9 @@ HANDLE IcoLib_AddNewIcon(int hLangpack, SKINICONDESC* sid) mir_cslock lck(csIconList); - IconItem* item = IcoLib_FindIcon(sid->pszName); + IcolibItem* item = IcoLib_FindIcon(sid->pszName); if (!item) { - item = (IconItem*)mir_calloc(sizeof(IconItem)); + item = (IcolibItem*)mir_calloc(sizeof(IcolibItem)); item->name = sid->pszName; iconList.insert(item); } @@ -552,7 +552,7 @@ HANDLE IcoLib_AddNewIcon(int hLangpack, SKINICONDESC* sid) if (sid->hDefaultIcon) { bool big; - IconItem* def_item = IcoLib_FindHIcon(sid->hDefaultIcon, big); + IcolibItem* def_item = IcoLib_FindHIcon(sid->hDefaultIcon, big); if (def_item) { item->default_icon = big ? def_item->source_big : def_item->source_small; item->default_icon->ref_count++; @@ -581,8 +581,8 @@ static INT_PTR IcoLib_RemoveIcon(WPARAM, LPARAM lParam) mir_cslock lck(csIconList); int i; - if ((i = iconList.getIndex((IconItem*)&lParam)) != -1) { - IconItem *item = iconList[ i ]; + if ((i = iconList.getIndex((IcolibItem*)&lParam)) != -1) { + IcolibItem *item = iconList[ i ]; IcoLib_FreeIcon(item); iconList.remove(i); SAFE_FREE((void**)&item); @@ -600,7 +600,7 @@ void KillModuleIcons(int hLangpack) mir_cslock lck(csIconList); for (int i = iconList.getCount()-1; i >= 0; i--) { - IconItem *item = iconList[i]; + IcolibItem *item = iconList[i]; if ( item->hLangpack == hLangpack) { IcoLib_FreeIcon(item); iconList.remove(i); @@ -612,7 +612,7 @@ void KillModuleIcons(int hLangpack) ///////////////////////////////////////////////////////////////////////////////////////// // IconItem_GetDefaultIcon -HICON IconItem_GetDefaultIcon(IconItem* item, bool big) +HICON IconItem_GetDefaultIcon(IcolibItem* item, bool big) { HICON hIcon = NULL; @@ -660,7 +660,7 @@ HICON IconItem_GetDefaultIcon(IconItem* item, bool big) ///////////////////////////////////////////////////////////////////////////////////////// // IconItem_GetIcon -HICON IconItem_GetIcon(IconItem* item, bool big) +HICON IconItem_GetIcon(IcolibItem* item, bool big) { DBVARIANT dbv = {0}; HICON hIcon = NULL; @@ -704,7 +704,7 @@ HICON IcoLib_GetIcon(const char* pszIconName, bool big) return hIconBlank; mir_cslock lck(csIconList); - IconItem* item = IcoLib_FindIcon(pszIconName); + IcolibItem* item = IcoLib_FindIcon(pszIconName); return (item) ? IconItem_GetIcon(item, big) : NULL; } @@ -732,7 +732,7 @@ HICON IcoLib_GetIconByHandle(HANDLE hItem, bool big) return NULL; mir_cslock lck(csIconList); - IconItem* pi = (IconItem*)hItem; + IcolibItem* pi = (IcolibItem*)hItem; if ( iconList.getIndex(pi) != -1) return IconItem_GetIcon(pi, big); @@ -762,7 +762,7 @@ static INT_PTR IcoLib_AddRef(WPARAM wParam, LPARAM) mir_cslock lck(csIconList); bool big; - IconItem *item = IcoLib_FindHIcon((HICON)wParam, big); + IcolibItem *item = IcoLib_FindHIcon((HICON)wParam, big); INT_PTR res = 1; if (item) { @@ -865,7 +865,7 @@ void UnloadIcoLibModule(void) DeleteCriticalSection(&csIconList); for (i = iconList.getCount()-1; i >= 0; i--) { - IconItem* p = iconList[i]; + IcolibItem* p = iconList[i]; iconList.remove(i); IcoLib_FreeIcon(p); mir_free(p); diff --git a/src/modules/icolib/skin2opts.cpp b/src/modules/icolib/skin2opts.cpp index 09faff70e9..dc757297df 100644 --- a/src/modules/icolib/skin2opts.cpp +++ b/src/modules/icolib/skin2opts.cpp @@ -73,7 +73,7 @@ int IcoLib_ReleaseIcon(HICON hIcon, char* szIconName, bool big) { mir_cslock lck(csIconList); - IconItem *item = NULL; + IcolibItem *item = NULL; if (szIconName) item = IcoLib_FindIcon(szIconName); @@ -98,7 +98,7 @@ int IcoLib_ReleaseIcon(HICON hIcon, char* szIconName, bool big) ///////////////////////////////////////////////////////////////////////////////////////// // IconItem_GetIcon_Preview -HICON IconItem_GetIcon_Preview(IconItem* item) +HICON IconItem_GetIcon_Preview(IcolibItem* item) { HICON hIcon = NULL; @@ -154,7 +154,7 @@ static void LoadSectionIcons(TCHAR *filename, SectionItem* sectionActive) mir_cslock lck(csIconList); for (int indx = 0; indx < iconList.getCount(); indx++) { - IconItem *item = iconList[ indx ]; + IcolibItem *item = iconList[ indx ]; if (item->default_file && item->section == sectionActive) { _itot(item->default_indx, path + suffIndx, 10); @@ -194,7 +194,7 @@ void LoadSubIcons(HWND htv, TCHAR *filename, HTREEITEM hItem) static void UndoChanges(int iconIndx, int cmd) { - IconItem *item = iconList[ iconIndx ]; + IcolibItem *item = iconList[ iconIndx ]; if ( !item->temp_file && !item->temp_icon && item->temp_reset && cmd == ID_CANCELCHANGE) item->temp_reset = FALSE; @@ -320,7 +320,7 @@ void DoIconsChanged(HWND hwndDlg) mir_cslock lck(csIconList); // Destroy unused icons for (int indx = 0; indx < iconList.getCount(); indx++) { - IconItem *item = iconList[indx]; + IcolibItem *item = iconList[indx]; if (item->source_small && !item->source_small->icon_ref_count) { item->source_small->icon_ref_count++; IconSourceItem_ReleaseIcon(item->source_small); @@ -783,7 +783,7 @@ INT_PTR CALLBACK DlgProcIcoLibOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM mir_cslock lck(csIconList); for (int indx = 0; indx < iconList.getCount(); indx++) { - IconItem *item = iconList[indx]; + IcolibItem *item = iconList[indx]; if (item->section == sectionActive) { lvi.pszText = item->getDescr(); HICON hIcon = item->temp_icon; @@ -843,7 +843,7 @@ INT_PTR CALLBACK DlgProcIcoLibOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM ListView_GetItem(hPreview, &lvi); { mir_cslock lck(csIconList); - IconItem *item = iconList[ lvi.lParam ]; + IcolibItem *item = iconList[ lvi.lParam ]; SAFE_FREE((void**)&item->temp_file); SafeDestroyIcon(&item->temp_icon); @@ -938,7 +938,7 @@ INT_PTR CALLBACK DlgProcIcoLibOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM mir_cslock lck(csIconList); for (int indx = 0; indx < iconList.getCount(); indx++) { - IconItem *item = iconList[indx]; + IcolibItem *item = iconList[indx]; if (item->temp_reset) { DBDeleteContactSetting(NULL, "SkinIcons", item->name); if (item->source_small != item->default_icon) { @@ -960,7 +960,7 @@ INT_PTR CALLBACK DlgProcIcoLibOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM case IDC_PREVIEW: if (((LPNMHDR)lParam)->code == LVN_GETINFOTIP) { - IconItem *item; + IcolibItem *item; NMLVGETINFOTIP *pInfoTip = (NMLVGETINFOTIP *)lParam; LVITEM lvi; lvi.mask = LVIF_PARAM; @@ -1022,7 +1022,7 @@ INT_PTR CALLBACK DlgProcIcoLibOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM { mir_cslock lck(csIconList); for (int indx = 0; indx < iconList.getCount(); indx++) { - IconItem *item = iconList[indx]; + IcolibItem *item = iconList[indx]; SAFE_FREE((void**)&item->temp_file); SafeDestroyIcon(&item->temp_icon); -- cgit v1.2.3