diff options
author | George Hazan <ghazan@miranda.im> | 2019-03-27 13:06:50 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-03-27 13:06:50 +0300 |
commit | 1515066cf7a479cc3816705ed6ec7e02d0445c1c (patch) | |
tree | 8c2f8fa4398c658633355673f6874075741510a6 /plugins/UserInfoEx/src/mir_icolib.cpp | |
parent | ac3d2dcd3187204907c1415bbece6483df6e4588 (diff) |
UInfoEx: unused icolib code removed, the rest optimized to use Miranda's standard structures
Diffstat (limited to 'plugins/UserInfoEx/src/mir_icolib.cpp')
-rw-r--r-- | plugins/UserInfoEx/src/mir_icolib.cpp | 397 |
1 files changed, 141 insertions, 256 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);
+ }
}
|