From 1515066cf7a479cc3816705ed6ec7e02d0445c1c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 27 Mar 2019 13:06:50 +0300 Subject: UInfoEx: unused icolib code removed, the rest optimized to use Miranda's standard structures --- plugins/UserInfoEx/src/mir_icolib.cpp | 397 ++++++++++++---------------------- plugins/UserInfoEx/src/mir_icolib.h | 3 - 2 files changed, 141 insertions(+), 259 deletions(-) diff --git a/plugins/UserInfoEx/src/mir_icolib.cpp b/plugins/UserInfoEx/src/mir_icolib.cpp index d9d74c0d08..a703d3d457 100644 --- a/plugins/UserInfoEx/src/mir_icolib.cpp +++ b/plugins/UserInfoEx/src/mir_icolib.cpp @@ -21,113 +21,119 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" -typedef struct _ICODESC +static IconItem common[] = { - LPSTR pszName; - LPSTR pszDesc; - LPSTR pszSection; - WORD idResource; - BYTE size; -} ICODESC; - -HICON ghDefIcon = nullptr; + { LPGEN("Main"), ICO_COMMON_MAIN, IDI_MAIN }, + { LPGEN("Default"), ICO_COMMON_DEFAULT, IDI_DEFAULT } +}; -static ICODESC icoDesc[] = { +static IconItem icons1[] = +{ // common - { ICO_COMMON_IM, LPGEN("IM naming"), SECT_COMMON, IDI_MIRANDA, 0 }, - { ICO_COMMON_PASSWORD, LPGEN("Password"), SECT_COMMON, IDI_PASSWORD, 0 }, - { ICO_COMMON_FEMALE, LPGEN("Female"), SECT_COMMON, IDI_FEMALE, 0 }, - { ICO_COMMON_MALE, LPGEN("Male"), SECT_COMMON, IDI_MALE, 0 }, - { ICO_COMMON_BIRTHDAY, LPGEN("Birthday"), SECT_COMMON, IDI_BIRTHDAY, 0 }, - { ICO_COMMON_CLOCK, LPGEN("Timezone"), SECT_COMMON, IDI_CLOCK, 1 }, - { ICO_COMMON_MARITAL, LPGEN("Marital status"), SECT_COMMON, IDI_MARITAL, 0 }, - { ICO_COMMON_ADDRESS, LPGEN("Address"), SECT_COMMON, IDI_TREE_ADDRESS, 0 }, - { ICO_COMMON_ANNIVERSARY,LPGEN("Anniversary"), SECT_COMMON, IDI_ANNIVERSARY, 0 }, - - //zodiac - { ICO_ZOD_AQUARIUS, LPGEN("Aquarius"), SECT_COMMON, IDI_ZOD_AQUARIUS, 128 }, - { ICO_ZOD_ARIES, LPGEN("Aries"), SECT_COMMON, IDI_ZOD_ARIES, 128 }, - { ICO_ZOD_CANCER, LPGEN("Cancer"), SECT_COMMON, IDI_ZOD_CANCER, 128 }, - { ICO_ZOD_CAPRICORN, LPGEN("Capricorn"), SECT_COMMON, IDI_ZOD_CAPRICORN, 128 }, - { ICO_ZOD_GEMINI, LPGEN("Gemini"), SECT_COMMON, IDI_ZOD_GEMINI, 128 }, - { ICO_ZOD_LEO, LPGEN("Leo"), SECT_COMMON, IDI_ZOD_LEO, 128 }, - { ICO_ZOD_LIBRA, LPGEN("Libra"), SECT_COMMON, IDI_ZOD_LIBRA, 128 }, - { ICO_ZOD_PISCES, LPGEN("Pisces"), SECT_COMMON, IDI_ZOD_PISCES, 128 }, - { ICO_ZOD_SAGITTARIUS, LPGEN("Sagittarius"), SECT_COMMON, IDI_ZOD_SAGITTARIUS, 128 }, - { ICO_ZOD_SCORPIO, LPGEN("Scorpio"), SECT_COMMON, IDI_ZOD_SCORPIO, 128 }, - { ICO_ZOD_TAURUS, LPGEN("Taurus"), SECT_COMMON, IDI_ZOD_TAURUS, 128 }, - { ICO_ZOD_VIRGO, LPGEN("Virgo"), SECT_COMMON, IDI_ZOD_VIRGO, 128 }, + { ICO_COMMON_IM, LPGEN("IM naming"), IDI_MIRANDA }, + { ICO_COMMON_PASSWORD, LPGEN("Password"), IDI_PASSWORD }, + { ICO_COMMON_FEMALE, LPGEN("Female"), IDI_FEMALE }, + { ICO_COMMON_MALE, LPGEN("Male"), IDI_MALE }, + { ICO_COMMON_BIRTHDAY, LPGEN("Birthday"), IDI_BIRTHDAY }, + { ICO_COMMON_CLOCK, LPGEN("Timezone"), IDI_CLOCK, 32 }, + { ICO_COMMON_MARITAL, LPGEN("Marital status"), IDI_MARITAL }, + { ICO_COMMON_ADDRESS, LPGEN("Address"), IDI_TREE_ADDRESS }, + { ICO_COMMON_ANNIVERSARY,LPGEN("Anniversary"), IDI_ANNIVERSARY }, + + // zodiac + { ICO_ZOD_AQUARIUS, LPGEN("Aquarius"), IDI_ZOD_AQUARIUS, 128 }, + { ICO_ZOD_ARIES, LPGEN("Aries"), IDI_ZOD_ARIES, 128 }, + { ICO_ZOD_CANCER, LPGEN("Cancer"), IDI_ZOD_CANCER, 128 }, + { ICO_ZOD_CAPRICORN, LPGEN("Capricorn"), IDI_ZOD_CAPRICORN, 128 }, + { ICO_ZOD_GEMINI, LPGEN("Gemini"), IDI_ZOD_GEMINI, 128 }, + { ICO_ZOD_LEO, LPGEN("Leo"), IDI_ZOD_LEO, 128 }, + { ICO_ZOD_LIBRA, LPGEN("Libra"), IDI_ZOD_LIBRA, 128 }, + { ICO_ZOD_PISCES, LPGEN("Pisces"), IDI_ZOD_PISCES, 128 }, + { ICO_ZOD_SAGITTARIUS, LPGEN("Sagittarius"), IDI_ZOD_SAGITTARIUS, 128 }, + { ICO_ZOD_SCORPIO, LPGEN("Scorpio"), IDI_ZOD_SCORPIO, 128 }, + { ICO_ZOD_TAURUS, LPGEN("Taurus"), IDI_ZOD_TAURUS, 128 }, + { ICO_ZOD_VIRGO, LPGEN("Virgo"), IDI_ZOD_VIRGO, 128 }, // lists - { ICO_LST_MODULES, LPGEN("Export: modules"), SECT_COMMON, IDI_LST_MODULES, 0 }, - { ICO_LST_FOLDER, LPGEN("Export: folder"), SECT_COMMON, IDI_LST_FOLDER, 0 }, - { ICO_TREE_DEFAULT, LPGEN("Default"), SECT_TREE, IDI_LST_FOLDER, 0 }, + { ICO_LST_MODULES, LPGEN("Export: modules"), IDI_LST_MODULES }, + { ICO_LST_FOLDER, LPGEN("Export: folder"), IDI_LST_FOLDER }, +}; + +static IconItem icons2[] = +{ + // tree + { ICO_TREE_DEFAULT, LPGEN("Default"), IDI_LST_FOLDER }, +}; +static IconItem icons3[] = +{ // dialogs - { ICO_DLG_DETAILS, LPGEN("Details info bar"), SECT_DLG, IDI_DLG_DETAILS, 48 }, - { ICO_DLG_PHONE, LPGEN("Phone info bar"), SECT_DLG, IDI_DLG_PHONE, 1 }, - { ICO_DLG_EMAIL, LPGEN("E-mail info bar"), SECT_DLG, IDI_DLG_EMAIL, 1 }, - { ICO_DLG_EXPORT, LPGEN("Export VCard"), SECT_DLG, IDI_EXPORT, 1 }, - { ICO_DLG_IMPORT, LPGEN("Import VCard"), SECT_DLG, IDI_IMPORT, 1 }, - { ICO_DLG_ANNIVERSARY, LPGEN("Anniversary info bar"), SECT_DLG, IDI_ANNIVERSARY, 1 }, + { ICO_DLG_DETAILS, LPGEN("Details info bar"), IDI_DLG_DETAILS, 48 }, + { ICO_DLG_PHONE, LPGEN("Phone info bar"), IDI_DLG_PHONE, 32 }, + { ICO_DLG_EMAIL, LPGEN("E-mail info bar"), IDI_DLG_EMAIL, 32 }, + { ICO_DLG_EXPORT, LPGEN("Export VCard"), IDI_EXPORT, 32 }, + { ICO_DLG_IMPORT, LPGEN("Import VCard"), IDI_IMPORT, 32 }, + { ICO_DLG_ANNIVERSARY, LPGEN("Anniversary info bar"), IDI_ANNIVERSARY, 32 }, +}; +static IconItem icons4[] = +{ // button icons - { ICO_BTN_UPDATE, LPGEN("Update"), SECT_BUTTONS, IDI_BTN_UPDATE, 0 }, - { ICO_BTN_IMPORT, LPGEN("Import"), SECT_BUTTONS, IDI_IMPORT, 0 }, - { ICO_BTN_EXPORT, LPGEN("Export"), SECT_BUTTONS, IDI_EXPORT, 0 }, - { ICO_BTN_OK, LPGEN("OK"), SECT_BUTTONS, IDI_BTN_OK, 0 }, - { ICO_BTN_CANCEL, LPGEN("Cancel"), SECT_BUTTONS, IDI_BTN_CLOSE, 0 }, - { ICO_BTN_APPLY, LPGEN("Apply"), SECT_BUTTONS, IDI_BTN_APPLY, 0 }, - { ICO_BTN_GOTO, LPGEN("Goto"), SECT_BUTTONS, IDI_BTN_GOTO, 0 }, - { ICO_BTN_PHONE, LPGEN("Phone"), SECT_BUTTONS, IDI_BTN_PHONE, 0 }, - { ICO_BTN_FAX, LPGEN("Fax"), SECT_BUTTONS, IDI_BTN_FAX, 0 }, - { ICO_BTN_CELLULAR, LPGEN("Cellular"), SECT_BUTTONS, IDI_BTN_CELLULAR, 0 }, - { ICO_BTN_CUSTOMPHONE, LPGEN("Custom phone"), SECT_BUTTONS, IDI_BTN_CUSTOMPHONE, 0 }, - { ICO_BTN_EMAIL, LPGEN("E-mail"), SECT_BUTTONS, IDI_BTN_EMAIL, 0 }, - { ICO_BTN_DOWNARROW, LPGEN("Down arrow"), SECT_BUTTONS, IDI_BTN_DOWNARROW, 0 }, - { ICO_BTN_ADD, LPGEN("Add"), SECT_BUTTONS, IDI_BTN_ADD, 0 }, - { ICO_BTN_EDIT, LPGEN("Edit"), SECT_BUTTONS, IDI_BTN_EDIT, 0 }, - { ICO_BTN_DELETE, LPGEN("Delete"), SECT_BUTTONS, IDI_BTN_DELETE, 0 }, - { ICO_BTN_SEARCH, LPGEN("Search"), SECT_BUTTONS, IDI_SEARCH, 0 }, - { ICO_BTN_EXIMPORT, LPGEN("Export/import"), SECT_BUTTONS, IDI_BTN_EXIMPORT, 0 }, - { ICO_BTN_BDAY_BACKUP, LPGEN("Backup birthday"), SECT_BUTTONS, IDI_BTN_BIRTHDAY_BACKUP, 0 }, - - //birthday and anniversary - { ICO_RMD_DTB0, LPGEN("Birthday today"), SECT_REMIND, IDI_RMD_DTB0, 0 }, - { ICO_RMD_DTB1, LPGEN("Birthday tomorrow"), SECT_REMIND, IDI_RMD_DTB1, 0 }, - { ICO_RMD_DTB2, LPGEN("Birthday in 2 days"), SECT_REMIND, IDI_RMD_DTB2, 0 }, - { ICO_RMD_DTB3, LPGEN("Birthday in 3 days"), SECT_REMIND, IDI_RMD_DTB3, 0 }, - { ICO_RMD_DTB4, LPGEN("Birthday in 4 days"), SECT_REMIND, IDI_RMD_DTB4, 0 }, - { ICO_RMD_DTB5, LPGEN("Birthday in 5 days"), SECT_REMIND, IDI_RMD_DTB5, 0 }, - { ICO_RMD_DTB6, LPGEN("Birthday in 6 days"), SECT_REMIND, IDI_RMD_DTB6, 0 }, - { ICO_RMD_DTB7, LPGEN("Birthday in 7 days"), SECT_REMIND, IDI_RMD_DTB7, 0 }, - { ICO_RMD_DTB8, LPGEN("Birthday in 8 days"), SECT_REMIND, IDI_RMD_DTB8, 0 }, - { ICO_RMD_DTB9, LPGEN("Birthday in 9 days"), SECT_REMIND, IDI_RMD_DTB9, 0 }, - { ICO_RMD_DTBX, LPGEN("Birthday later"), SECT_REMIND, IDI_RMD_DTBX, 0 }, + { ICO_BTN_UPDATE, LPGEN("Update"), IDI_BTN_UPDATE }, + { ICO_BTN_IMPORT, LPGEN("Import"), IDI_IMPORT }, + { ICO_BTN_EXPORT, LPGEN("Export"), IDI_EXPORT }, + { ICO_BTN_OK, LPGEN("OK"), IDI_BTN_OK }, + { ICO_BTN_CANCEL, LPGEN("Cancel"), IDI_BTN_CLOSE }, + { ICO_BTN_APPLY, LPGEN("Apply"), IDI_BTN_APPLY }, + { ICO_BTN_GOTO, LPGEN("Goto"), IDI_BTN_GOTO }, + { ICO_BTN_PHONE, LPGEN("Phone"), IDI_BTN_PHONE }, + { ICO_BTN_FAX, LPGEN("Fax"), IDI_BTN_FAX }, + { ICO_BTN_CELLULAR, LPGEN("Cellular"), IDI_BTN_CELLULAR }, + { ICO_BTN_CUSTOMPHONE, LPGEN("Custom phone"), IDI_BTN_CUSTOMPHONE }, + { ICO_BTN_EMAIL, LPGEN("E-mail"), IDI_BTN_EMAIL }, + { ICO_BTN_DOWNARROW, LPGEN("Down arrow"), IDI_BTN_DOWNARROW }, + { ICO_BTN_ADD, LPGEN("Add"), IDI_BTN_ADD }, + { ICO_BTN_EDIT, LPGEN("Edit"), IDI_BTN_EDIT }, + { ICO_BTN_DELETE, LPGEN("Delete"), IDI_BTN_DELETE }, + { ICO_BTN_SEARCH, LPGEN("Search"), IDI_SEARCH }, + { ICO_BTN_EXIMPORT, LPGEN("Export/import"), IDI_BTN_EXIMPORT }, + { ICO_BTN_BDAY_BACKUP, LPGEN("Backup birthday"), IDI_BTN_BIRTHDAY_BACKUP }, +}; - { ICO_RMD_DTA0, LPGEN("Anniversary today"), SECT_REMIND, IDI_RMD_DTA0, 0 }, - { ICO_RMD_DTA1, LPGEN("Anniversary tomorrow"), SECT_REMIND, IDI_RMD_DTA1, 0 }, - { ICO_RMD_DTA2, LPGEN("Anniversary in 2 days"), SECT_REMIND, IDI_RMD_DTA2, 0 }, - { ICO_RMD_DTA3, LPGEN("Anniversary in 3 days"), SECT_REMIND, IDI_RMD_DTA3, 0 }, - { ICO_RMD_DTA4, LPGEN("Anniversary in 4 days"), SECT_REMIND, IDI_RMD_DTA4, 0 }, - { ICO_RMD_DTA5, LPGEN("Anniversary in 5 days"), SECT_REMIND, IDI_RMD_DTA5, 0 }, - { ICO_RMD_DTA6, LPGEN("Anniversary in 6 days"), SECT_REMIND, IDI_RMD_DTA6, 0 }, - { ICO_RMD_DTA7, LPGEN("Anniversary in 7 days"), SECT_REMIND, IDI_RMD_DTA7, 0 }, - { ICO_RMD_DTA8, LPGEN("Anniversary in 8 days"), SECT_REMIND, IDI_RMD_DTA8, 0 }, - { ICO_RMD_DTA9, LPGEN("Anniversary in 9 days"), SECT_REMIND, IDI_RMD_DTA9, 0 }, - { ICO_RMD_DTAX, LPGEN("Anniversary later"), SECT_REMIND, IDI_RMD_DTAX, 0 }, +static IconItem icons5[] = +{ + // birthday and anniversary + { ICO_RMD_DTB0, LPGEN("Birthday today"), IDI_RMD_DTB0 }, + { ICO_RMD_DTB1, LPGEN("Birthday tomorrow"), IDI_RMD_DTB1 }, + { ICO_RMD_DTB2, LPGEN("Birthday in 2 days"), IDI_RMD_DTB2 }, + { ICO_RMD_DTB3, LPGEN("Birthday in 3 days"), IDI_RMD_DTB3 }, + { ICO_RMD_DTB4, LPGEN("Birthday in 4 days"), IDI_RMD_DTB4 }, + { ICO_RMD_DTB5, LPGEN("Birthday in 5 days"), IDI_RMD_DTB5 }, + { ICO_RMD_DTB6, LPGEN("Birthday in 6 days"), IDI_RMD_DTB6 }, + { ICO_RMD_DTB7, LPGEN("Birthday in 7 days"), IDI_RMD_DTB7 }, + { ICO_RMD_DTB8, LPGEN("Birthday in 8 days"), IDI_RMD_DTB8 }, + { ICO_RMD_DTB9, LPGEN("Birthday in 9 days"), IDI_RMD_DTB9 }, + { ICO_RMD_DTBX, LPGEN("Birthday later"), IDI_RMD_DTBX }, + + { ICO_RMD_DTA0, LPGEN("Anniversary today"), IDI_RMD_DTA0 }, + { ICO_RMD_DTA1, LPGEN("Anniversary tomorrow"), IDI_RMD_DTA1 }, + { ICO_RMD_DTA2, LPGEN("Anniversary in 2 days"), IDI_RMD_DTA2 }, + { ICO_RMD_DTA3, LPGEN("Anniversary in 3 days"), IDI_RMD_DTA3 }, + { ICO_RMD_DTA4, LPGEN("Anniversary in 4 days"), IDI_RMD_DTA4 }, + { ICO_RMD_DTA5, LPGEN("Anniversary in 5 days"), IDI_RMD_DTA5 }, + { ICO_RMD_DTA6, LPGEN("Anniversary in 6 days"), IDI_RMD_DTA6 }, + { ICO_RMD_DTA7, LPGEN("Anniversary in 7 days"), IDI_RMD_DTA7 }, + { ICO_RMD_DTA8, LPGEN("Anniversary in 8 days"), IDI_RMD_DTA8 }, + { ICO_RMD_DTA9, LPGEN("Anniversary in 9 days"), IDI_RMD_DTA9 }, + { ICO_RMD_DTAX, LPGEN("Anniversary later"), IDI_RMD_DTAX }, }; -/** - * This function finds the default iconpack file and return its path. - * - * @param - none - * - * @return This function returns the relative path to an existing icon pack. - **/ -LPTSTR IcoLib_GetDefaultIconFileName() +///////////////////////////////////////////////////////////////////////////////////////// +// This function finds the default iconpack file and return its path. + +wchar_t *IcoLib_GetDefaultIconFileName() { - static LPTSTR path[] = { + static wchar_t *path[] = { L"Icons\\uinfoex_icons.dll", L"Plugins\\uinfoex_icons.dll", L"Customize\\Icons\\uinfoex_icons.dll" @@ -142,17 +148,12 @@ LPTSTR IcoLib_GetDefaultIconFileName() return nullptr; } -/** - * This function checks the version of an iconpack. - * If the icon pack's version differs from the desired one, - * dialog with a warning is displayed. - * - * @param szIconPack - This is the path to the icon pack. - * It can be absolute or relative. - * - * @return nothing - **/ -static void IcoLib_CheckIconPackVersion(LPTSTR szIconPack) +///////////////////////////////////////////////////////////////////////////////////////// +// This function checks the version of an iconpack. +// If the icon pack's version differs from the desired one, +// dialog with a warning is displayed. + +static HINSTANCE IcoLib_CheckIconPackVersion(wchar_t *szIconPack) { if (g_plugin.getByte(SET_ICONS_CHECKFILEVERSION, TRUE)) { if (szIconPack) { @@ -163,174 +164,58 @@ static void IcoLib_CheckIconPackVersion(LPTSTR szIconPack) if (hIconDll) { CHAR szFileVersion[64]; - if (!LoadStringA(hIconDll, IDS_ICOPACKVERSION, szFileVersion, sizeof(szFileVersion)) - || mir_strcmp(szFileVersion, "__UserInfoEx_IconPack_1.2__")) - MsgErr(nullptr, LPGENW("Warning: Your current IconPack's version differs from the one UserInfoEx is designed for.\nSome icons may not be displayed correctly")); - FreeLibrary(hIconDll); + if (LoadStringA(hIconDll, IDS_ICOPACKVERSION, szFileVersion, sizeof(szFileVersion))) + if (!mir_strcmp(szFileVersion, "__UserInfoEx_IconPack_1.2__")) + return hIconDll; + + MsgErr(nullptr, LPGENW("Warning: Your current IconPack's version differs from the one UserInfoEx is designed for.\nSome icons may not be displayed correctly")); } } - else - MsgErr(nullptr, LPGENW("Warning: No IconPack found in one of the following directories: 'customize\\icons', 'icons' or 'plugins'!")); + else MsgErr(nullptr, LPGENW("Warning: No IconPack found in one of the following directories: 'customize\\icons', 'icons' or 'plugins'!")); } + return nullptr; } -/** - * Set the icon of each control in the list - * - * @param hDlg - handle to the dialog control, that owns the controls - * @param pCtrl - list to all controls and its icon names - * @param numCtrls - number of elements in the pCtrl list - * - * @return nothing - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// Set the icon of each control in the list + void IcoLib_SetCtrlIcons(HWND hDlg, const ICONCTRL *pCtrl, BYTE numCtrls) { for (int i = 0; i < numCtrls; i++) { HICON hIcon = IcoLib_GetIcon(pCtrl[i].pszIcon); - if (pCtrl[i].idCtrl) { - HWND hCtrl = GetDlgItem(hDlg, pCtrl[i].idCtrl); - switch (pCtrl[i].Message) { - case STM_SETICON: - case STM_SETIMAGE: - ShowWindow(hCtrl, hIcon ? SW_SHOW : SW_HIDE); - __fallthrough; - - case BM_SETIMAGE: - SendMessage(hCtrl, pCtrl[i].Message, IMAGE_ICON, (LPARAM)hIcon); - } - } - else + if (!pCtrl[i].idCtrl) { SendMessage(hDlg, pCtrl[i].Message, ICON_BIG, (LPARAM)hIcon); - } -} - -/** - * This function manually registers a single icon from the default icon library. - * - * @param szIconID - This is the uniquely identifying string for an icon. - * This string is the setting name in the database and should - * only use ASCII characters. - * @param szDescription - This is the description displayed in the options dialog. - * @param szSection - This is the subsection, where the icon is organized in the options dialog. - * @param szDefaultFile - This is the validated path to the default icon file. - * @param idIcon - This is the ResourceID of the icon in the default file. - * @param Size - This is the desired size of the icon to load. - * 0: default size for small icons (16x16) - * 1: default size for normal icons (32x32) - * @param hDefIcon - This is the default icon to use if the default icon - * file does not exist and no custom icon is set up in the config. - * - * @return This function returns the HANDLE of the icon item. - **/ -static HANDLE IcoLib_RegisterIconHandleEx(LPSTR szIconID, LPSTR szDescription, LPSTR szSection, LPTSTR szDefaultFile, int idIcon, int Size, HICON hDefIcon) -{ - HANDLE hIconHandle = nullptr; - - if (szIconID && szDescription && szSection) { - SKINICONDESC sid = {}; - sid.flags = SIDF_ALL_UNICODE; - sid.pszName = szIconID; - sid.description.w = mir_a2u(szDescription); - sid.section.w = mir_a2u(szSection); - - if (sid.description.w && sid.section.w) { - switch (Size) { - // small icons (16x16) - case 0: - sid.cx = GetSystemMetrics(SM_CXSMICON); - sid.cy = GetSystemMetrics(SM_CYSMICON); - break; - - // normal icons (32x32) - case 1: - sid.cx = GetSystemMetrics(SM_CXICON); - sid.cy = GetSystemMetrics(SM_CYICON); - break; - - // custom icon size - default: - sid.cx = sid.cy = Size; - break; - } - - sid.defaultFile.w = szDefaultFile; - if (sid.defaultFile.w && sid.defaultFile.w[0]) - sid.iDefaultIndex = -idIcon; - else { - sid.hDefaultIcon = hDefIcon; - sid.iDefaultIndex = -1; - } - hIconHandle = g_plugin.addIcon(&sid); + continue; + } + + HWND hCtrl = GetDlgItem(hDlg, pCtrl[i].idCtrl); + switch (pCtrl[i].Message) { + case STM_SETICON: + case STM_SETIMAGE: + ShowWindow(hCtrl, hIcon ? SW_SHOW : SW_HIDE); + __fallthrough; + + case BM_SETIMAGE: + SendMessage(hCtrl, pCtrl[i].Message, IMAGE_ICON, (LPARAM)hIcon); } - MIR_FREE(sid.description.w); - MIR_FREE(sid.section.w); } - return hIconHandle; } -/** - * This function manually registers a single icon from the default icon library. - * - * @param szIconID - This is the uniquely identifying string for an icon. - * This string is the setting name in the database and should - * only use ASCII characters. - * @param szDescription - This is the description displayed in the options dialog. - * @param szSection - This is the subsection, where the icon is organized in the options dialog. - * @param idIcon - This is the ResourceID of the icon in the default file - * @param Size - This is the desired size of the icon to load. - * 0: default size for small icons (16x16) - * 1: default size for normal icons (32x32) - * - * @return This function returns the HANDLE of the icon item. - **/ -HANDLE IcoLib_RegisterIconHandle(LPSTR szIconID, LPSTR szDescription, LPSTR szSection, int idIcon, int Size) -{ - return IcoLib_RegisterIconHandleEx(szIconID, szDescription, szSection, IcoLib_GetDefaultIconFileName(), idIcon, Size, ghDefIcon); -} - -/** - * This function manually registers a single icon from the default icon library. - * - * @param szIconID - This is the uniquely identifying string for an icon. - * This string is the setting name in the database and should - * only use ASCII characters. - * @param szDescription - This is the description displayed in the options dialog. - * @param szSection - This is the subsection, where the icon is organized in the options dialog. - * @param idIcon - This is the ResourceID of the icon in the default file - * @param Size - This is the desired size of the icon to load. - * 0: default size for small icons (16x16) - * 1: default size for normal icons (32x32) - * - * @return This function returns the HICON of the icon itself. - **/ -HICON IcoLib_RegisterIcon(LPSTR szIconID, LPSTR szDescription, LPSTR szSection, int idIcon, int Size) -{ - return IcoLib_GetIconByHandle(IcoLib_RegisterIconHandle(szIconID, szDescription, szSection, idIcon, Size)); -} - -/** - * Add default icons to the skin library or load customized icons - * - * @param none - * - * @return nothing - **/ -static IconItem common[] = -{ - { LPGEN("Main"), ICO_COMMON_MAIN, IDI_MAIN }, - { LPGEN("Default"), ICO_COMMON_DEFAULT, IDI_DEFAULT } -}; +///////////////////////////////////////////////////////////////////////////////////////// +// Add default icons to the skin library or load customized icons void IcoLib_LoadModule() { g_plugin.registerIcon(SECT_COMMON, common); - LPTSTR szDefaultFile = IcoLib_GetDefaultIconFileName(); - IcoLib_CheckIconPackVersion(szDefaultFile); - - // load default icon if required - ghDefIcon = (HICON)IcoLib_GetIcon(ICO_COMMON_DEFAULT, false); - - for (auto &it : icoDesc) - IcoLib_RegisterIconHandleEx(it.pszName, it.pszDesc, it.pszSection, szDefaultFile, it.idResource, it.size, ghDefIcon); + wchar_t *szDefaultFile = IcoLib_GetDefaultIconFileName(); + HINSTANCE hIconPack = IcoLib_CheckIconPackVersion(szDefaultFile); + if (hIconPack) { + Icon_Register(hIconPack, SECT_COMMON, icons1, _countof(icons1), 0, &g_plugin); + Icon_Register(hIconPack, SECT_TREE, icons2, _countof(icons2), 0, &g_plugin); + Icon_Register(hIconPack, SECT_DLG, icons3, _countof(icons3), 0, &g_plugin); + Icon_Register(hIconPack, SECT_BUTTONS, icons4, _countof(icons4), 0, &g_plugin); + Icon_Register(hIconPack, SECT_REMIND, icons5, _countof(icons5), 0, &g_plugin); + FreeLibrary(hIconPack); + } } diff --git a/plugins/UserInfoEx/src/mir_icolib.h b/plugins/UserInfoEx/src/mir_icolib.h index 185f8170b3..de9424ac25 100644 --- a/plugins/UserInfoEx/src/mir_icolib.h +++ b/plugins/UserInfoEx/src/mir_icolib.h @@ -128,9 +128,6 @@ typedef struct TIconCtrl LPTSTR IcoLib_GetDefaultIconFileName(); void IcoLib_SetCtrlIcons(HWND hDlg, const ICONCTRL* pCtrl, BYTE numCtrls); -HANDLE IcoLib_RegisterIconHandle(LPSTR szName, LPSTR szDescription, LPSTR szSection, int idIcon, int Size); -HICON IcoLib_RegisterIcon(LPSTR szName, LPSTR szDescription, LPSTR szSection, int idIcon, int Size); - void IcoLib_LoadModule(); #endif /* _UINFOEX_ICONS_H_INCLUDED_ */ -- cgit v1.2.3