From 32dedc767dec565c576b78b786e7a95d76ac806e Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 19 Nov 2012 12:51:53 +0000 Subject: - added another helper, ExtraIcon_Clear, to remove an icon from slot; - added ability to pass IcoLib handles instead of icons' names git-svn-id: http://svn.miranda-ng.org/main/trunk@2371 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- include/m_extraicons.h | 40 +++++++++----- include/m_icq.h | 2 +- include/m_netlib.h | 2 +- plugins/BuddyExpectator/src/BuddyExpectator.cpp | 6 +-- plugins/CountryFlags/src/extraimg.cpp | 2 +- plugins/IgnoreState/src/main.cpp | 2 +- plugins/UserInfoEx/src/Flags/svc_flags.cpp | 22 +++----- plugins/UserInfoEx/src/svc_email.cpp | 7 +-- plugins/UserInfoEx/src/svc_gender.cpp | 17 ++---- plugins/UserInfoEx/src/svc_homepage.cpp | 9 +--- plugins/UserInfoEx/src/svc_phone.cpp | 17 ++---- plugins/UserInfoEx/src/svc_reminder.cpp | 20 +++---- plugins/WhenWasIt/src/notifiers.cpp | 2 +- protocols/AimOscar/src/theme.cpp | 8 +-- protocols/IcqOscarJ/src/icq_xstatus.cpp | 2 +- protocols/MRA/src/Mra.h | 1 - protocols/MRA/src/Mra_svcs.cpp | 16 ++---- src/core/miranda.h | 4 +- src/core/stdplug.h | 2 +- src/modules/addcontact/addcontact.cpp | 2 +- src/modules/clist/Docking.cpp | 4 +- src/modules/clist/clcutils.cpp | 2 +- src/modules/clist/clistevents.cpp | 4 +- src/modules/clist/clistmenus.cpp | 4 +- src/modules/clist/clistmod.cpp | 2 +- src/modules/clist/clisttray.cpp | 6 +-- src/modules/clist/clui.cpp | 14 ++--- src/modules/clist/contacts.cpp | 22 ++++---- src/modules/clist/genmenu.cpp | 2 +- src/modules/clist/genmenuopt.cpp | 2 +- src/modules/clist/groups.cpp | 42 +++++++-------- src/modules/clist/keyboard.cpp | 2 +- src/modules/database/dbini.cpp | 2 +- src/modules/extraicons/CallbackExtraIcon.cpp | 9 +++- src/modules/extraicons/CallbackExtraIcon.h | 3 +- src/modules/extraicons/DefaultExtraIcons.cpp | 14 ++--- src/modules/extraicons/ExtraIcon.h | 17 +++--- src/modules/extraicons/ExtraIconGroup.cpp | 63 ++++++++++++---------- src/modules/extraicons/ExtraIconGroup.h | 6 ++- src/modules/extraicons/IcolibExtraIcon.cpp | 61 ++++++++++++++++------ src/modules/extraicons/IcolibExtraIcon.h | 6 +-- src/modules/extraicons/extraicons.cpp | 33 ++++++++---- src/modules/extraicons/options_ei.cpp | 4 +- src/modules/extraicons/usedIcons.cpp | 69 +++++++++++++++++++------ src/modules/extraicons/usedIcons.h | 9 ++-- src/modules/findadd/findadd.cpp | 2 +- src/modules/fonts/FontOptions.cpp | 2 +- src/modules/fonts/services.cpp | 2 +- src/modules/icolib/skin2icons.cpp | 2 +- src/modules/json/JSONNode.h | 4 +- src/modules/langpack/lpservices.cpp | 2 +- src/modules/netlib/netlib.cpp | 2 +- src/modules/netlib/netliblog.cpp | 6 +-- src/modules/netlib/netlibopts.cpp | 10 ++-- src/modules/options/options.cpp | 6 +-- src/modules/protocols/protoaccs.cpp | 16 +++--- src/modules/protocols/protoopts.cpp | 4 +- src/modules/skin/skinicons.cpp | 6 +-- src/modules/skin/sounds.cpp | 10 ++-- src/modules/utils/openurl.cpp | 2 +- src/modules/utils/path.cpp | 2 +- src/modules/utils/timezones.cpp | 6 +-- 62 files changed, 369 insertions(+), 300 deletions(-) diff --git a/include/m_extraicons.h b/include/m_extraicons.h index 921346ad3c..2d38fe7db4 100644 --- a/include/m_extraicons.h +++ b/include/m_extraicons.h @@ -117,11 +117,12 @@ typedef struct { typedef struct { int cbSize; - HANDLE hExtraIcon; // Value returned by MS_EXTRAICON_REGISTER - HANDLE hContact; // Contact to set the extra icon - union { // The icon to be set. This depends on the type of the extra icon: - HANDLE hImage; // Value returned by MS_CLIST_EXTRA_ADD_ICON (if EXTRAICON_TYPE_CALLBACK) - const char *icoName; // Name of the icon registered with icolib (if EXTRAICON_TYPE_ICOLIB) + HANDLE hExtraIcon; // Value returned by MS_EXTRAICON_REGISTER + HANDLE hContact; // Contact to set the extra icon + union { // The icon to be set. This depends on the type of the extra icon: + HANDLE hImage; // Value returned by MS_CLIST_EXTRA_ADD_ICON (if EXTRAICON_TYPE_CALLBACK) + // or the icolib icon handle (if EXTRAICON_TYPE_ICOLIB) + const char *icoName; // Name of the icon registered with icolib (if EXTRAICON_TYPE_ICOLIB) }; } EXTRAICON; @@ -130,15 +131,19 @@ typedef struct { // Return: 0 on success #define MS_EXTRAICON_SET_ICON "ExtraIcon/SetIcon" - +// Set an extra icon by icolib icon's name +// wParam = (EXTRAICON *) Extra icon +// Return: 0 on success +#define MS_EXTRAICON_SET_ICON_BY_NAME "ExtraIcon/SetIconByName" #ifndef _NO_WRAPPERS #ifdef __cplusplus -static HANDLE ExtraIcon_Register(const char *name, const char *description, const char *descIcon, - MIRANDAHOOK RebuildIcons, - MIRANDAHOOK ApplyIcon, - MIRANDAHOOKPARAM OnClick = NULL, LPARAM onClickParam = 0) +static HANDLE ExtraIcon_Register( + const char *name, const char *description, const char *descIcon, + MIRANDAHOOK RebuildIcons, + MIRANDAHOOK ApplyIcon, + MIRANDAHOOKPARAM OnClick = NULL, LPARAM onClickParam = 0) { if (!ServiceExists(MS_EXTRAICON_REGISTER)) return NULL; @@ -156,8 +161,9 @@ static HANDLE ExtraIcon_Register(const char *name, const char *description, cons return (HANDLE) CallService(MS_EXTRAICON_REGISTER, (WPARAM) &ei, 0); } -static HANDLE ExtraIcon_Register(const char *name, const char *description, const char *descIcon = NULL, - MIRANDAHOOKPARAM OnClick = NULL, LPARAM onClickParam = 0) +static HANDLE ExtraIcon_Register( + const char *name, const char *description, const char *descIcon = NULL, + MIRANDAHOOKPARAM OnClick = NULL, LPARAM onClickParam = 0) { if (!ServiceExists(MS_EXTRAICON_REGISTER)) return NULL; @@ -190,6 +196,16 @@ static int ExtraIcon_SetIcon(HANDLE hExtraIcon, HANDLE hContact, const char *ico ei.hContact = hContact; ei.icoName = icoName; + return CallService(MS_EXTRAICON_SET_ICON_BY_NAME, (WPARAM) &ei, 0); +} + +static int ExtraIcon_Clear(HANDLE hExtraIcon, HANDLE hContact) +{ + EXTRAICON ei = { sizeof(ei) }; + ei.hExtraIcon = hExtraIcon; + ei.hContact = hContact; + ei.icoName = NULL; + return CallService(MS_EXTRAICON_SET_ICON, (WPARAM) &ei, 0); } diff --git a/include/m_icq.h b/include/m_icq.h index e2378e3e7e..125eeef885 100644 --- a/include/m_icq.h +++ b/include/m_icq.h @@ -263,7 +263,7 @@ typedef struct { // Called from contact list in order to get index of custom status icon in list // wParam = hContact // lParam = 0 -// rerurn = (int) index of extra contact icon shifted <<16 (the low word will be normal status icon, the high will be xStatus Icon +// rerurn = (int)index of extra contact icon shifted <<16 (the low word will be normal status icon, the high will be xStatus Icon #define PS_ICQ_GETADVANCEDSTATUSICON "/GetAdvancedStatusIcon" #endif // M_ICQ_H__ diff --git a/include/m_netlib.h b/include/m_netlib.h index 83b469e9c0..62b7512b69 100644 --- a/include/m_netlib.h +++ b/include/m_netlib.h @@ -435,7 +435,7 @@ typedef struct { // Converts numerical representation of IP in SOCKADDR_INET into string representation with IP and port // IPv4 will be supplied in formats address:port or address // IPv6 will be supplied in formats [address]:port or [address] -// wParam = (WPARAM)(int) 0 - lParam - (sockaddr_gen*); 1 - lParam - (unsigned) in host byte order +// wParam = (WPARAM)(int)0 - lParam - (sockaddr_gen*); 1 - lParam - (unsigned) in host byte order // lParam = (LPARAM)(sockaddr_gen*) or (unsigned) numeric IP address structure // Returns pointer to the string or NULL if not successful #define MS_NETLIB_ADDRESSTOSTRING "Netlib/AddressToString" diff --git a/plugins/BuddyExpectator/src/BuddyExpectator.cpp b/plugins/BuddyExpectator/src/BuddyExpectator.cpp index 03b793ad09..b0798c59a4 100644 --- a/plugins/BuddyExpectator/src/BuddyExpectator.cpp +++ b/plugins/BuddyExpectator/src/BuddyExpectator.cpp @@ -153,7 +153,7 @@ LRESULT CALLBACK MissYouPopupDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPA if ( !db_get_b(PUGetContact(hWnd), MODULE_NAME, "MissYouNotifyAlways", 0)) { db_set_b(PUGetContact(hWnd), MODULE_NAME, "MissYou", 0); if (options.MissYouIcon) - ExtraIcon_SetIcon(hExtraIcon, PUGetContact(hWnd), ""); + ExtraIcon_Clear(hExtraIcon, PUGetContact(hWnd)); } PUDeletePopUp(hWnd); } @@ -167,7 +167,7 @@ LRESULT CALLBACK MissYouPopupDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPA if (wParam == 1) { db_set_b(PUGetContact(hWnd), MODULE_NAME, "MissYou", 0); if (options.MissYouIcon) - ExtraIcon_SetIcon(hExtraIcon, PUGetContact(hWnd), ""); + ExtraIcon_Clear(hExtraIcon, PUGetContact(hWnd)); PUDeletePopUp(hWnd); } break; @@ -449,7 +449,7 @@ INT_PTR MenuMissYouClick(WPARAM wParam, LPARAM lParam) if (db_get_b((HANDLE)wParam, MODULE_NAME, "MissYou", 0)) { db_set_b((HANDLE)wParam, MODULE_NAME, "MissYou", 0); if (options.MissYouIcon) - ExtraIcon_SetIcon(hExtraIcon, (HANDLE)wParam, ""); + ExtraIcon_Clear(hExtraIcon, (HANDLE)wParam); } else { db_set_b((HANDLE)wParam, MODULE_NAME, "MissYou", 1); diff --git a/plugins/CountryFlags/src/extraimg.cpp b/plugins/CountryFlags/src/extraimg.cpp index dcb8f33773..433cbfb664 100644 --- a/plugins/CountryFlags/src/extraimg.cpp +++ b/plugins/CountryFlags/src/extraimg.cpp @@ -66,7 +66,7 @@ static void RemoveExtraImages(void) { HANDLE hContact = db_find_first(); while (hContact != NULL) { - ExtraIcon_SetIcon(hExtraIcon, hContact, (HANDLE)0); + ExtraIcon_Clear(hExtraIcon, hContact); hContact = db_find_next(hContact); } } diff --git a/plugins/IgnoreState/src/main.cpp b/plugins/IgnoreState/src/main.cpp index 886219e20f..5826b55bcc 100644 --- a/plugins/IgnoreState/src/main.cpp +++ b/plugins/IgnoreState/src/main.cpp @@ -101,7 +101,7 @@ void applyExtraImage(HANDLE hContact) if (ignore == 1) ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_full"); else if (ignore == 0) - ExtraIcon_SetIcon(hExtraIcon, hContact, ""); + ExtraIcon_Clear(hExtraIcon, hContact); else if (isIgnored(hContact, IGNOREEVENT_MESSAGE)) ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_mess"); else diff --git a/plugins/UserInfoEx/src/Flags/svc_flags.cpp b/plugins/UserInfoEx/src/Flags/svc_flags.cpp index c864e0bca8..e3b59f47f8 100644 --- a/plugins/UserInfoEx/src/Flags/svc_flags.cpp +++ b/plugins/UserInfoEx/src/Flags/svc_flags.cpp @@ -234,30 +234,20 @@ static INT_PTR ServiceDetectContactOriginCountry(WPARAM wParam,LPARAM lParam) static void CALLBACK SetExtraImage(LPARAM lParam) { /* get contact's country */ - int countryNumber = ServiceDetectContactOriginCountry((WPARAM)lParam,0);; - - EXTRAICON ico = { sizeof(ico) }; - ico.hContact = (HANDLE)lParam; - ico.hExtraIcon = hExtraIconSvc; - ico.icoName = (char*)0; //preset + int countryNumber = ServiceDetectContactOriginCountry((WPARAM)lParam,0); if (countryNumber != 0xFFFF || gFlagsOpts.bUseUnknownFlag) { char szId[20]; - mir_snprintf(szId, SIZEOF(szId), (countryNumber==0xFFFF)?"%s_0x%X":"%s_%i","flags",countryNumber); /* buffer safe */ - ico.icoName = szId; + mir_snprintf(szId, SIZEOF(szId), (countryNumber == 0xFFFF) ? "%s_0x%X" : "%s_%i","flags", countryNumber); /* buffer safe */ + ExtraIcon_SetIcon(hExtraIconSvc, (HANDLE)lParam, szId); } - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); + else ExtraIcon_Clear(hExtraIconSvc, (HANDLE)lParam); } static void CALLBACK RemoveExtraImages(LPARAM lParam) { - EXTRAICON ico = { sizeof(ico) }; - ico.hExtraIcon = hExtraIconSvc; - ico.icoName = 0; /* invalidate icon for contact*/ /* enum all contacts */ - for (HANDLE hContact = DB::Contact::FindFirst(); hContact != NULL; hContact = DB::Contact::FindNext(hContact)) { - ico.hContact = hContact; - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); - } + for (HANDLE hContact = DB::Contact::FindFirst(); hContact != NULL; hContact = DB::Contact::FindNext(hContact)) + ExtraIcon_Clear(hExtraIconSvc, hContact); } // always call in context of main thread diff --git a/plugins/UserInfoEx/src/svc_email.cpp b/plugins/UserInfoEx/src/svc_email.cpp index 5b886b72a3..f0915e64fe 100644 --- a/plugins/UserInfoEx/src/svc_email.cpp +++ b/plugins/UserInfoEx/src/svc_email.cpp @@ -146,13 +146,8 @@ static INT_PTR MenuCommand(WPARAM wParam,LPARAM lParam) static INT OnCListApplyIcons(WPARAM wParam, LPARAM lParam) { LPSTR val = Get((HANDLE)wParam); - - EXTRAICON ico = { sizeof(ico) }; - ico.hContact=(HANDLE)wParam; - ico.hExtraIcon=ghExtraIconSvc; - ico.icoName=val?ICO_BTN_EMAIL:(char *)0; + ExtraIcon_SetIcon(ghExtraIconSvc, (HANDLE)wParam, (val) ? ICO_BTN_EMAIL: 0); mir_free(val); - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); return 0; } diff --git a/plugins/UserInfoEx/src/svc_gender.cpp b/plugins/UserInfoEx/src/svc_gender.cpp index 68d6f5b8ec..f849569644 100644 --- a/plugins/UserInfoEx/src/svc_gender.cpp +++ b/plugins/UserInfoEx/src/svc_gender.cpp @@ -81,20 +81,13 @@ BYTE GenderOf(HANDLE hContact) static INT OnCListApplyIcons(HANDLE hContact, LPARAM) { if (ghExtraIconSvc != INVALID_HANDLE_VALUE) { - EXTRAICON ico = { sizeof(ico) }; - ico.hContact = hContact; - ico.hExtraIcon = ghExtraIconSvc; + char *icoName; switch (GenderOf(hContact)) { - case 'M': - ico.icoName = ICO_COMMON_MALE; - break; - case 'F': - ico.icoName = ICO_COMMON_FEMALE; - break; - default: - ico.icoName = NULL; + case 'M': icoName = ICO_COMMON_MALE; break; + case 'F': icoName = ICO_COMMON_FEMALE; break; + default: icoName = NULL; } - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); + ExtraIcon_SetIcon(ghExtraIconSvc, hContact, icoName); } return 0; } diff --git a/plugins/UserInfoEx/src/svc_homepage.cpp b/plugins/UserInfoEx/src/svc_homepage.cpp index 8c3cf5ff3d..e5d31746f2 100644 --- a/plugins/UserInfoEx/src/svc_homepage.cpp +++ b/plugins/UserInfoEx/src/svc_homepage.cpp @@ -109,13 +109,8 @@ static INT_PTR MenuCommand(WPARAM wParam, LPARAM lParam) static INT OnCListApplyIcons(HANDLE hContact, LPARAM) { LPSTR val = Get(hContact); - if (ghExtraIconSvc != INVALID_HANDLE_VALUE) { - EXTRAICON ico = { sizeof(ico) }; - ico.hContact = hContact; - ico.hExtraIcon = ghExtraIconSvc; - ico.icoName = (val) ? ICO_BTN_GOTO : NULL; - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); - } + if (ghExtraIconSvc != INVALID_HANDLE_VALUE) + ExtraIcon_SetIcon(ghExtraIconSvc, hContact, (val) ? ICO_BTN_GOTO : NULL); MIR_FREE(val); return 0; } diff --git a/plugins/UserInfoEx/src/svc_phone.cpp b/plugins/UserInfoEx/src/svc_phone.cpp index 941003716b..9490a563e9 100644 --- a/plugins/UserInfoEx/src/svc_phone.cpp +++ b/plugins/UserInfoEx/src/svc_phone.cpp @@ -102,20 +102,13 @@ static INT_PTR Get(HANDLE hContact) static INT OnCListApplyIcons(HANDLE hContact, LPARAM) { - EXTRAICON ico = { sizeof(ico) }; - ico.hContact = hContact; - ico.hExtraIcon = ghExtraIconSvc; + char *icoName; switch (Get(hContact)) { - case PHONE_NORMAL: - ico.icoName = ICO_BTN_PHONE; - break; - case PHONE_SMS: - ico.icoName = ICO_BTN_CELLULAR; - break; - default: - ico.icoName = NULL; + case PHONE_NORMAL: icoName = ICO_BTN_PHONE; break; + case PHONE_SMS: icoName = ICO_BTN_CELLULAR; break; + default: icoName = NULL; } - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); + ExtraIcon_SetIcon(ghExtraIconSvc, hContact, icoName); return 0; } diff --git a/plugins/UserInfoEx/src/svc_reminder.cpp b/plugins/UserInfoEx/src/svc_reminder.cpp index 91f19eb804..660d2de23e 100644 --- a/plugins/UserInfoEx/src/svc_reminder.cpp +++ b/plugins/UserInfoEx/src/svc_reminder.cpp @@ -187,31 +187,31 @@ static HICON GetAnnivIcon(const CEvent &evt) static VOID NotifyWithExtraIcon(HANDLE hContact, const CEvent &evt) { if (gRemindOpts.bCListExtraIcon) { - CHAR szIcon[MAXSETTING]; - - EXTRAICON ico = { sizeof(ico) }; - ico.hContact = hContact; - ico.hExtraIcon = ExtraIcon; + char szIcon[MAXSETTING], *icoName; + switch (evt._eType) { case CEvent::BIRTHDAY: if (evt._wDaysLeft > 9) - ico.icoName = ICO_RMD_DTAX; + icoName = ICO_RMD_DTAX; else { mir_snprintf(szIcon, SIZEOF(szIcon), MODNAME"_rmd_dtb%u", evt._wDaysLeft); - ico.icoName = szIcon; + icoName = szIcon; } break; case CEvent::ANNIVERSARY: if (evt._wDaysLeft > 9) - ico.icoName = ICO_RMD_DTAX; + icoName = ICO_RMD_DTAX; else { mir_snprintf(szIcon, SIZEOF(szIcon), MODNAME"_rmd_dta%u", evt._wDaysLeft); - ico.icoName = szIcon; + icoName = szIcon; } break; + + default: + return; } - CallService(MS_EXTRAICON_SET_ICON, (WPARAM)&ico, 0); + ExtraIcon_SetIcon(ExtraIcon, hContact, icoName); } } diff --git a/plugins/WhenWasIt/src/notifiers.cpp b/plugins/WhenWasIt/src/notifiers.cpp index 2cc37e28a8..ec7950655b 100644 --- a/plugins/WhenWasIt/src/notifiers.cpp +++ b/plugins/WhenWasIt/src/notifiers.cpp @@ -231,7 +231,7 @@ int SoundNotifyBirthday(int dtb) int ClearClistIcon(HANDLE hContact) { - return ExtraIcon_SetIcon(hWWIExtraIcons, hContact, INVALID_HANDLE_VALUE); + return ExtraIcon_Clear(hWWIExtraIcons, hContact); } int RefreshContactListIcons(HANDLE hContact) diff --git a/protocols/AimOscar/src/theme.cpp b/protocols/AimOscar/src/theme.cpp index 9ba7307d0d..b0b3fd4ec5 100644 --- a/protocols/AimOscar/src/theme.cpp +++ b/protocols/AimOscar/src/theme.cpp @@ -161,12 +161,12 @@ static HANDLE extra_ES_icon_handle[2]; static void clear_AT_icon(HANDLE hContact) { - ExtraIcon_SetIcon(hExtraAT, hContact, (char*)NULL); + ExtraIcon_Clear(hExtraAT, hContact); } static void clear_ES_icon(HANDLE hContact) { - ExtraIcon_SetIcon(hExtraES, hContact, (char*)NULL); + ExtraIcon_Clear(hExtraES, hContact); } static void set_AT_icon(CAimProto* ppro, HANDLE hContact) @@ -180,7 +180,7 @@ static void set_AT_icon(CAimProto* ppro, HANDLE hContact) mir_snprintf(name, sizeof(name), "AIM_%s", extra_AT_icon_name[i]); ExtraIcon_SetIcon(hExtraAT, hContact, name); } - else ExtraIcon_SetIcon(hExtraAT, hContact, (char*)NULL); + else ExtraIcon_Clear(hExtraAT, hContact); } static void set_ES_icon(CAimProto* ppro, HANDLE hContact) @@ -194,7 +194,7 @@ static void set_ES_icon(CAimProto* ppro, HANDLE hContact) mir_snprintf(name, sizeof(name), "AIM_%s", extra_ES_icon_name[i]); ExtraIcon_SetIcon(hExtraES, hContact, name); } - else ExtraIcon_SetIcon(hExtraES, hContact, (char*)NULL); + else ExtraIcon_Clear(hExtraES, hContact); } void set_contact_icon(CAimProto* ppro, HANDLE hContact) diff --git a/protocols/IcqOscarJ/src/icq_xstatus.cpp b/protocols/IcqOscarJ/src/icq_xstatus.cpp index 8c195aaa7f..ab612f30b3 100644 --- a/protocols/IcqOscarJ/src/icq_xstatus.cpp +++ b/protocols/IcqOscarJ/src/icq_xstatus.cpp @@ -183,7 +183,7 @@ void releaseXStatusIcon(int bStatus, UINT flags) void setContactExtraIcon(HANDLE hContact, int xstatus) { if (xstatus <= 0) - ExtraIcon_SetIcon(hExtraXStatus, hContact, (char *) NULL); + ExtraIcon_Clear(hExtraXStatus, hContact); else { char szTemp[MAX_PATH]; null_snprintf(szTemp, sizeof(szTemp), "icq_xstatus%d", xstatus-1); diff --git a/protocols/MRA/src/Mra.h b/protocols/MRA/src/Mra.h index 2d6ee820a3..38d02d62c1 100644 --- a/protocols/MRA/src/Mra.h +++ b/protocols/MRA/src/Mra.h @@ -247,7 +247,6 @@ BOOL IsEMailMR (LPSTR lpszEMail, size_t dwEMailSize); BOOL GetEMailFromString (LPSTR lpszBuff, size_t dwBuffSize, LPSTR *plpszEMail, size_t *pdwEMailSize); DWORD CreateBlobFromContact (HANDLE hContact, LPWSTR lpwszRequestReason, size_t dwRequestReasonSize, LPBYTE lpbBuff, size_t dwBuffSize, size_t *pdwBuffSizeRet); -int ExtraSetIcon (HANDLE hExtraIcon, HANDLE hContact, HANDLE hImage); size_t CopyNumber (LPCVOID lpcOutBuff, LPCVOID lpcBuff, size_t dwLen); BOOL IsPhone (LPSTR lpszString, size_t dwStringSize); BOOL IsContactPhone (HANDLE hContact, LPSTR lpszPhone, size_t dwPhoneSize); diff --git a/protocols/MRA/src/Mra_svcs.cpp b/protocols/MRA/src/Mra_svcs.cpp index bc84af7703..d61098201a 100644 --- a/protocols/MRA/src/Mra_svcs.cpp +++ b/protocols/MRA/src/Mra_svcs.cpp @@ -157,19 +157,9 @@ void CMraProto::SetExtraIcons(HANDLE hContact) if (dwBlogStatusMsgSize) dwIconID = ADV_ICON_BLOGSTATUS; } - if ( IsXStatusValid(dwXStatus) || dwXStatus == MRA_MIR_XSTATUS_UNKNOWN) { - char szSetting[40]; - mir_snprintf(szSetting, SIZEOF(szSetting), "mra_xstatus%d", dwXStatus); - ExtraSetIcon(hExtraXstatusIcon, hContact, szSetting); - } - else ExtraSetIcon(hExtraXstatusIcon, hContact, NULL); - - if (dwIconID != -1) { - char szSetting[40]; - mir_snprintf(szSetting, SIZEOF(szSetting), "MRA_%s", gdiExtraStatusIconsItems[dwIconID].lpszName); - ExtraSetIcon(hExtraInfo, hContact, szSetting); - } - else ExtraSetIcon(hExtraInfo, hContact, NULL); + ExtraIcon_SetIcon(hExtraXstatusIcon, hContact, + (IsXStatusValid(dwXStatus) || dwXStatus == MRA_MIR_XSTATUS_UNKNOWN) ? hXStatusAdvancedStatusIcons[dwXStatus] : NULL); + ExtraIcon_SetIcon(hExtraInfo, hContact, (dwIconID != -1) ? gdiExtraStatusIconsItems[dwIconID].hIconHandle : NULL); } INT_PTR CMraProto::MraXStatusMenu(WPARAM wParam, LPARAM lParam, LPARAM param) diff --git a/src/core/miranda.h b/src/core/miranda.h index b0369e0f08..614c4aee98 100644 --- a/src/core/miranda.h +++ b/src/core/miranda.h @@ -255,7 +255,7 @@ public: extern "C" { - MIR_CORE_DLL(int) Langpack_MarkPluginLoaded(PLUGININFOEX* pInfo); - MIR_CORE_DLL(int) GetSubscribersCount(HANDLE hHook); + MIR_CORE_DLL(int)Langpack_MarkPluginLoaded(PLUGININFOEX* pInfo); + MIR_CORE_DLL(int)GetSubscribersCount(HANDLE hHook); MIR_CORE_DLL(void) db_setCurrent(MIDatabase* _db); }; diff --git a/src/core/stdplug.h b/src/core/stdplug.h index 269eeeba3d..00cecdbbfa 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); diff --git a/src/modules/addcontact/addcontact.cpp b/src/modules/addcontact/addcontact.cpp index 1736e35917..60ef8cca0d 100644 --- a/src/modules/addcontact/addcontact.cpp +++ b/src/modules/addcontact/addcontact.cpp @@ -98,7 +98,7 @@ INT_PTR CALLBACK AddContactDlgProc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lp if (DBGetContactSettingTString(NULL, "CListGroups", idstr, &dbv)) break; id = SendDlgItemMessage(hdlg, IDC_GROUP, CB_ADDSTRING, 0, (LPARAM)(dbv.ptszVal+1)); SendDlgItemMessage(hdlg, IDC_GROUP, CB_SETITEMDATA , id, groupId+1); - DBFreeVariant(&dbv); + db_free(&dbv); } } diff --git a/src/modules/clist/Docking.cpp b/src/modules/clist/Docking.cpp index 3308176347..d2695ef6b6 100644 --- a/src/modules/clist/Docking.cpp +++ b/src/modules/clist/Docking.cpp @@ -170,8 +170,8 @@ int fnDocking_ProcessWindowMessage(WPARAM wParam, LPARAM lParam) draggingTitle = 0; docked = db_get_b(NULL, "CLUI", "DockToSides", 1) ? (char) db_get_b(NULL, "CList", "Docked", 0) : 0; - dockPos.x = (int) db_get_dw(NULL, "CList", "DockX", 0); - dockPos.y = (int) db_get_dw(NULL, "CList", "DockY", 0); + dockPos.x = (int)db_get_dw(NULL, "CList", "DockX", 0); + dockPos.y = (int)db_get_dw(NULL, "CList", "DockY", 0); break; case WM_ACTIVATE: diff --git a/src/modules/clist/clcutils.cpp b/src/modules/clist/clcutils.cpp index 8b237e7d8f..e3ae2be605 100644 --- a/src/modules/clist/clcutils.cpp +++ b/src/modules/clist/clcutils.cpp @@ -225,7 +225,7 @@ void fnScrollTo(HWND hwnd, struct ClcData *dat, int desty, int noSmooth) nowTick = GetTickCount(); if (nowTick >= startTick + dat->scrollTime) break; - dat->yScroll = oldy + (desty - oldy) * (int) (nowTick - startTick) / dat->scrollTime; + dat->yScroll = oldy + (desty - oldy) * (int)(nowTick - startTick) / dat->scrollTime; if (dat->backgroundBmpUse & CLBF_SCROLL || dat->hBmpBackground == NULL) ScrollWindowEx(hwnd, 0, previousy - dat->yScroll, NULL, NULL, NULL, NULL, SW_INVALIDATE); else diff --git a/src/modules/clist/clistevents.cpp b/src/modules/clist/clistevents.cpp index 5f85903d1d..71a520b2ff 100644 --- a/src/modules/clist/clistevents.cpp +++ b/src/modules/clist/clistevents.cpp @@ -386,9 +386,9 @@ static int CListEventSettingsChanged(WPARAM wParam, LPARAM lParam) DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING *) lParam; if (hContact == NULL && cws && cws->szModule && cws->szSetting && strcmp(cws->szModule, "CList") == 0) { if (strcmp(cws->szSetting, "DisableTrayFlash") == 0) - disableTrayFlash = (int) cws->value.bVal; + disableTrayFlash = (int)cws->value.bVal; else if (strcmp(cws->szSetting, "NoIconBlink") == 0) - disableIconFlash = (int) cws->value.bVal; + disableIconFlash = (int)cws->value.bVal; } return 0; } diff --git a/src/modules/clist/clistmenus.cpp b/src/modules/clist/clistmenus.cpp index 567fa0c1f2..4b54616adf 100644 --- a/src/modules/clist/clistmenus.cpp +++ b/src/modules/clist/clistmenus.cpp @@ -810,12 +810,12 @@ int fnGetProtoIndexByPos(PROTOCOLDESCRIPTOR ** proto, int protoCnt, int Pos) if ( !DBGetContactSetting(NULL, "Protocols", buf, &dbv)) { for (p=0; p < protoCnt; p++) { if (lstrcmpA(proto[p]->szName, dbv.pszVal) == 0) { - DBFreeVariant(&dbv); + db_free(&dbv); return p; } } - DBFreeVariant(&dbv); + db_free(&dbv); } return -1; diff --git a/src/modules/clist/clistmod.cpp b/src/modules/clist/clistmod.cpp index cb14eb0c42..fdbc75fe82 100644 --- a/src/modules/clist/clistmod.cpp +++ b/src/modules/clist/clistmod.cpp @@ -143,7 +143,7 @@ static int ProtocolAck(WPARAM, LPARAM lParam) CallService(MS_CLUI_PROTOCOLSTATUSCHANGED, ack->lParam, (LPARAM) ack->szModule); - if ((int) ack->hProcess < ID_STATUS_ONLINE && ack->lParam >= ID_STATUS_ONLINE) { + if ((int)ack->hProcess < ID_STATUS_ONLINE && ack->lParam >= ID_STATUS_ONLINE) { DWORD caps = (DWORD)CallProtoServiceInt(NULL,ack->szModule, PS_GETCAPS, PFLAGNUM_1, 0); if (caps & PF1_SERVERCLIST) { HANDLE hContact = db_find_first(); diff --git a/src/modules/clist/clisttray.cpp b/src/modules/clist/clisttray.cpp index ae9e9e7da0..351ca78a7b 100644 --- a/src/modules/clist/clisttray.cpp +++ b/src/modules/clist/clisttray.cpp @@ -65,7 +65,7 @@ static TCHAR* sttGetXStatus(const char* szProto) if ( !DBGetContactSettingTString(NULL, szProto, dbTitle, &dbv)) { if (dbv.ptszVal[0] != 0) result = mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } } @@ -285,7 +285,7 @@ int fnTrayIconInit(HWND hwnd) szProto = NULL; cli.pfnTrayIconAdd(hwnd, NULL, szProto, szProto ? CallProtoServiceInt(NULL,szProto, PS_GETSTATUS, 0, 0) : CallService(MS_CLIST_GETSTATUSMODE, 0, 0)); - DBFreeVariant(&dbv); + db_free(&dbv); } else if (trayIconSetting == SETTING_TRAYICON_MULTI && (averageMode < 0 || db_get_b(NULL, "CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))) { @@ -552,7 +552,7 @@ void fnTrayIconUpdateBase(const char *szChangedProto) changed = cli.pfnTrayIconSetBaseInfo(cli.pfnGetIconFromStatusMode(NULL, szProto, szProto ? CallProtoServiceInt(NULL,szProto, PS_GETSTATUS, 0, 0) : CallService(MS_CLIST_GETSTATUSMODE, 0, 0)), szProto); - DBFreeVariant(&dbv); + db_free(&dbv); } break; diff --git a/src/modules/clist/clui.cpp b/src/modules/clist/clui.cpp index 15f6ab4e8e..58f3978b84 100644 --- a/src/modules/clist/clui.cpp +++ b/src/modules/clist/clui.cpp @@ -311,14 +311,14 @@ int LoadCLUIModule(void) lstrcpyn(titleText, _T(MIRANDANAME), SIZEOF(titleText)); else { lstrcpyn(titleText, dbv.ptszVal, SIZEOF(titleText)); - DBFreeVariant(&dbv); + db_free(&dbv); } RECT pos; - pos.left = (int) db_get_dw(NULL, "CList", "x", 700); - pos.top = (int) db_get_dw(NULL, "CList", "y", 221); - pos.right = pos.left + (int) db_get_dw(NULL, "CList", "Width", 108); - pos.bottom = pos.top + (int) db_get_dw(NULL, "CList", "Height", 310); + pos.left = (int)db_get_dw(NULL, "CList", "x", 700); + pos.top = (int)db_get_dw(NULL, "CList", "y", 221); + pos.right = pos.left + (int)db_get_dw(NULL, "CList", "Width", 108); + pos.bottom = pos.top + (int)db_get_dw(NULL, "CList", "Height", 310); Utils_AssertInsideScreen(&pos); @@ -639,7 +639,7 @@ LRESULT CALLBACK fnContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM } case WM_TIMER: - if ((int) wParam == TM_AUTOALPHA) { + if ((int)wParam == TM_AUTOALPHA) { int inwnd; if (GetForegroundWindow() == hwnd) { @@ -693,7 +693,7 @@ LRESULT CALLBACK fnContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM if (thisTick >= startTick + 200) break; setLayeredWindowAttributes(hwnd, RGB(0, 0, 0), - (BYTE) (sourceAlpha + (destAlpha - sourceAlpha) * (int) (thisTick - startTick) / 200), LWA_ALPHA); + (BYTE) (sourceAlpha + (destAlpha - sourceAlpha) * (int)(thisTick - startTick) / 200), LWA_ALPHA); } setLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE) destAlpha, LWA_ALPHA); } diff --git a/src/modules/clist/contacts.cpp b/src/modules/clist/contacts.cpp index 65ecf618e3..ec1717dfd5 100644 --- a/src/modules/clist/contacts.cpp +++ b/src/modules/clist/contacts.cpp @@ -62,7 +62,7 @@ static int ProcessDatabaseValueDefault(CONTACTINFO *ci, const char* setting) ci->pszVal = dbv.ptszVal; return 0; } - DBFreeVariant(&dbv); + db_free(&dbv); } if (DBGetContactSetting(ci->hContact, ci->szProto, setting, &dbv)) @@ -83,7 +83,7 @@ static int ProcessDatabaseValueDefault(CONTACTINFO *ci, const char* setting) return 0; } - DBFreeVariant(&dbv); + db_free(&dbv); return 1; } @@ -159,12 +159,12 @@ static INT_PTR GetContactInfo(WPARAM, LPARAM lParam) { else ci->pszVal = (TCHAR*)mir_strdup(countries[i].szName); ci->type = CNFT_ASCIIZ; - DBFreeVariant(&dbv); + db_free(&dbv); return 0; } } else return ProcessDatabaseValueDefault(ci, (ci->dwFlag & 0x7F) == CNF_COUNTRY ? "Country" : "CompanyCountry"); - DBFreeVariant(&dbv); + db_free(&dbv); } break; @@ -187,11 +187,11 @@ static INT_PTR GetContactInfo(WPARAM, LPARAM lParam) { strcat(strcat(strcpy(buf, dbv.pszVal), " "), dbv2.pszVal); ci->pszVal = (TCHAR*)buf; } - DBFreeVariant(&dbv); - DBFreeVariant(&dbv2); + db_free(&dbv); + db_free(&dbv2); return 0; } - DBFreeVariant(&dbv); + db_free(&dbv); } break; @@ -305,11 +305,11 @@ static INT_PTR GetContactInfo(WPARAM, LPARAM lParam) { ci->pszVal = (TCHAR*)buf; } - DBFreeVariant(&dbv); - DBFreeVariant(&dbv2); + db_free(&dbv); + db_free(&dbv2); return 0; } - DBFreeVariant(&dbv); + db_free(&dbv); } break; @@ -510,7 +510,7 @@ int LoadContactsModule(void) DBVARIANT dbv; if ( !DBGetContactSetting(NULL, "Contact", "NameOrder", &dbv)) { CopyMemory(nameOrder, dbv.pbVal, dbv.cpbVal); - DBFreeVariant(&dbv); + db_free(&dbv); } CreateServiceFunction(MS_CONTACT_GETCONTACTINFO, GetContactInfo); diff --git a/src/modules/clist/genmenu.cpp b/src/modules/clist/genmenu.cpp index df8903a58d..8f6944f837 100644 --- a/src/modules/clist/genmenu.cpp +++ b/src/modules/clist/genmenu.cpp @@ -932,7 +932,7 @@ HMENU BuildRecursiveMenu(HMENU hMenu, PMO_IntMenuItem pRootMenu, ListParam *para if ( !DBGetContactSettingTString(NULL, MenuNameItems, DBString, &dbv)) { if (_tcslen(dbv.ptszVal) > 0) replaceStrT(pmi->CustomName, dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } mir_snprintf(DBString, SIZEOF(DBString), "%s_pos", menuItemName); diff --git a/src/modules/clist/genmenuopt.cpp b/src/modules/clist/genmenuopt.cpp index d3b0b157c3..e9e4bff881 100644 --- a/src/modules/clist/genmenuopt.cpp +++ b/src/modules/clist/genmenuopt.cpp @@ -265,7 +265,7 @@ static int BuildTree(HWND hwndDlg, int MenuObjectId, BOOL bReread) if ( !DBGetContactSettingTString(NULL, MenuNameItems, buf, &dbv)) { PD->name = mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } else PD->name = mir_tstrdup(GetMenuItemText(p)); } diff --git a/src/modules/clist/groups.cpp b/src/modules/clist/groups.cpp index fb9ce4cc3b..e3a6424c48 100644 --- a/src/modules/clist/groups.cpp +++ b/src/modules/clist/groups.cpp @@ -38,7 +38,7 @@ static int CountGroups(void) _itoa(i, str, 10); if (DBGetContactSetting(NULL, "CListGroups", str, &dbv)) break; - DBFreeVariant(&dbv); + db_free(&dbv); } return i; } @@ -56,10 +56,10 @@ static int GroupNameExists(const TCHAR *name, int skipGroup) if (DBGetContactSettingTString(NULL, "CListGroups", idstr, &dbv)) break; if ( !_tcscmp(dbv.ptszVal + 1, name)) { - DBFreeVariant(&dbv); + db_free(&dbv); return i+1; } - DBFreeVariant(&dbv); + db_free(&dbv); } return 0; } @@ -120,7 +120,7 @@ static INT_PTR GetGroupName2(WPARAM wParam, LPARAM lParam) lstrcpynA(name, dbv.pszVal + 1, SIZEOF(name)); if ((DWORD *) lParam != NULL) *(DWORD *) lParam = dbv.pszVal[0]; - DBFreeVariant(&dbv); + db_free(&dbv); return (INT_PTR) name; } @@ -137,7 +137,7 @@ TCHAR* fnGetGroupName(int idx, DWORD* pdwFlags) lstrcpyn(name, dbv.ptszVal + 1, SIZEOF(name)); if (pdwFlags != NULL) *pdwFlags = dbv.ptszVal[0]; - DBFreeVariant(&dbv); + db_free(&dbv); return name; } @@ -163,7 +163,7 @@ static INT_PTR DeleteGroup(WPARAM wParam, LPARAM) if (DBGetContactSettingTString(NULL, "CListGroups", str, &dbv)) return 1; lstrcpyn(name, dbv.ptszVal + 1, SIZEOF(name)); - DBFreeVariant(&dbv); + db_free(&dbv); if (db_get_b(NULL, "CList", "ConfirmDelete", SETTING_CONFIRMDELETE_DEFAULT)) { TCHAR szQuestion[256+100]; @@ -192,10 +192,10 @@ static INT_PTR DeleteGroup(WPARAM wParam, LPARAM) if (_tcscmp(dbv.ptszVal, name)) { - DBFreeVariant(&dbv); + db_free(&dbv); continue; } - DBFreeVariant(&dbv); + db_free(&dbv); if (szNewParent[0]) { @@ -216,7 +216,7 @@ static INT_PTR DeleteGroup(WPARAM wParam, LPARAM) break; _itoa(i, str, 10); DBWriteContactSettingStringUtf(NULL, "CListGroups", str, dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } _itoa(i, str, 10); DBDeleteContactSetting(NULL, "CListGroups", str); @@ -237,7 +237,7 @@ static INT_PTR DeleteGroup(WPARAM wParam, LPARAM) lstrcpyn(szNewName, dbv.ptszVal + len + 2, SIZEOF(szNewName)); cli.pfnRenameGroup(i + 1, szNewName); } - DBFreeVariant(&dbv); + db_free(&dbv); } } SetCursor(LoadCursor(NULL, IDC_ARROW)); @@ -268,7 +268,7 @@ static int RenameGroupWithMove(int groupId, const TCHAR *szName, int move) return 1; str[0] = dbv.pszVal[0] & 0x7F; lstrcpyn(oldName, dbv.ptszVal + 1, SIZEOF(oldName)); - DBFreeVariant(&dbv); + db_free(&dbv); lstrcpyn(str + 1, szName, SIZEOF(str) - 1); db_set_ts(NULL, "CListGroups", idstr, str); @@ -300,7 +300,7 @@ static int RenameGroupWithMove(int groupId, const TCHAR *szName, int move) mir_sntprintf(szNewName, SIZEOF(szNewName), _T("%s\\%s"), szName, dbv.ptszVal + len + 2); RenameGroupWithMove(i, szNewName, 0); //luckily, child groups will never need reordering } - DBFreeVariant(&dbv); + db_free(&dbv); } } @@ -323,7 +323,7 @@ static int RenameGroupWithMove(int groupId, const TCHAR *szName, int move) MoveGroupBefore(groupId + 1, i + 2); break; } - DBFreeVariant(&dbv); + db_free(&dbv); } } } @@ -360,7 +360,7 @@ static INT_PTR SetGroupExpandedState(WPARAM wParam, LPARAM lParam) else dbv.pszVal[0] = dbv.pszVal[0] & ~GROUPF_EXPANDED; DBWriteContactSettingStringUtf(NULL, "CListGroups", idstr, dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); return 0; } @@ -377,7 +377,7 @@ static INT_PTR SetGroupFlags(WPARAM wParam, LPARAM lParam) oldval = dbv.pszVal[0]; newval = dbv.pszVal[0] = ((oldval & ~HIWORD(lParam)) | flags) & 0x7f; DBWriteContactSettingStringUtf(NULL, "CListGroups", idstr, dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); if ((oldval & GROUPF_HIDEOFFLINE) != (newval & GROUPF_HIDEOFFLINE)) cli.pfnLoadContactTree(); return 0; @@ -423,7 +423,7 @@ static INT_PTR MoveGroupBefore(WPARAM wParam, LPARAM lParam) } _itoa(i, str, 10); DBWriteContactSettingStringUtf(NULL, "CListGroups", str, dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } else { @@ -435,7 +435,7 @@ static INT_PTR MoveGroupBefore(WPARAM wParam, LPARAM lParam) } //never happens _itoa(i, str, 10); DBWriteContactSettingStringUtf(NULL, "CListGroups", str, dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } _itoa(shuffleTo, str, 10); @@ -457,7 +457,7 @@ static INT_PTR BuildGroupMenu(WPARAM, LPARAM) if (DBGetContactSettingStringUtf(NULL, "CListGroups", "0", &dbv)) return (INT_PTR) (HMENU) NULL; - DBFreeVariant(&dbv); + db_free(&dbv); hRootMenu = CreateMenu(); for (groupId = 0;; groupId++) { _itoa(groupId, idstr, 10); @@ -510,7 +510,7 @@ static INT_PTR BuildGroupMenu(WPARAM, LPARAM) } break; } - if ((int) mii.dwItemData - 1 > groupId) + if ((int)mii.dwItemData - 1 > groupId) break; } if (compareResult) { @@ -533,7 +533,7 @@ static INT_PTR BuildGroupMenu(WPARAM, LPARAM) } } while (pNextField); - DBFreeVariant(&dbv); + db_free(&dbv); } return (INT_PTR) hRootMenu; } @@ -553,7 +553,7 @@ int InitGroupServices(void) dbv.pszVal[0] &= 0x7f; DBWriteContactSettingStringUtf(NULL, "CListGroups", str, dbv.pszVal); } - DBFreeVariant(&dbv); + db_free(&dbv); } CreateServiceFunction(MS_CLIST_GROUPCREATE, CreateGroup); diff --git a/src/modules/clist/keyboard.cpp b/src/modules/clist/keyboard.cpp index 6da22a5fb7..37fe94b30c 100644 --- a/src/modules/clist/keyboard.cpp +++ b/src/modules/clist/keyboard.cpp @@ -35,7 +35,7 @@ INT_PTR hkSearch(WPARAM wParam, LPARAM lParam) DBVARIANT dbv = {0}; if ( !DBGetContactSettingString(NULL, "CList", "SearchUrl", &dbv)) { CallService(MS_UTILS_OPENURL, db_get_b(NULL, "CList", "HKSearchNewWnd", 0), (LPARAM)dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } return 0; } diff --git a/src/modules/database/dbini.cpp b/src/modules/database/dbini.cpp index 2d148f146c..f6731cc20d 100644 --- a/src/modules/database/dbini.cpp +++ b/src/modules/database/dbini.cpp @@ -337,7 +337,7 @@ static void ProcessIniFile(TCHAR* szIniPath, char *szSafeSections, char *szUnsaf ConvertBackslashes(szValue+1, Langpack_GetDefaultCodePage()); case 's': case 'S': - DBWriteContactSettingString(NULL, szSection, szName, szValue+1); + db_set_s(NULL, szSection, szName, szValue+1); break; case 'g': case 'G': diff --git a/src/modules/extraicons/CallbackExtraIcon.cpp b/src/modules/extraicons/CallbackExtraIcon.cpp index 703628e73d..8c07bfd327 100644 --- a/src/modules/extraicons/CallbackExtraIcon.cpp +++ b/src/modules/extraicons/CallbackExtraIcon.cpp @@ -60,12 +60,17 @@ void CallbackExtraIcon::applyIcon(HANDLE hContact) ApplyIcon((WPARAM) hContact, 0); } -int CallbackExtraIcon::setIcon(int id, HANDLE hContact, void *icon) +int CallbackExtraIcon::setIcon(int id, HANDLE hContact, HANDLE icon) { if (!isEnabled() || hContact == NULL || id != this->id) return -1; - return ClistSetExtraIcon(hContact, (HANDLE) icon); + return ClistSetExtraIcon(hContact, icon); +} + +int CallbackExtraIcon::setIconByName(int id, HANDLE hContact, const char *icon) +{ + return -1; } void CallbackExtraIcon::storeIcon(HANDLE hContact, void *icon) diff --git a/src/modules/extraicons/CallbackExtraIcon.h b/src/modules/extraicons/CallbackExtraIcon.h index 547f81a477..b339ce53d3 100644 --- a/src/modules/extraicons/CallbackExtraIcon.h +++ b/src/modules/extraicons/CallbackExtraIcon.h @@ -34,7 +34,8 @@ public: virtual void rebuildIcons(); virtual void applyIcon(HANDLE hContact); - virtual int setIcon(int id, HANDLE hContact, void *icon); + virtual int setIcon(int id, HANDLE hContact, HANDLE icon); + virtual int setIconByName(int id, HANDLE hContact, const char* icon); virtual void storeIcon(HANDLE hContact, void *icon); private: diff --git a/src/modules/extraicons/DefaultExtraIcons.cpp b/src/modules/extraicons/DefaultExtraIcons.cpp index 539475b10a..5a7917a331 100644 --- a/src/modules/extraicons/DefaultExtraIcons.cpp +++ b/src/modules/extraicons/DefaultExtraIcons.cpp @@ -63,7 +63,7 @@ static void SetVisibility(HANDLE hContact, int apparentMode, BOOL clear) return; char *proto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (IsEmpty(proto)) + if ( IsEmpty(proto)) return; if (apparentMode <= 0) @@ -102,7 +102,7 @@ static void SetGender(HANDLE hContact, int gender, BOOL clear) return; char *proto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (IsEmpty(proto)) + if ( IsEmpty(proto)) return; if (gender <= 0) @@ -172,7 +172,7 @@ static void SetExtraIcons(HANDLE hContact) return; char *proto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (IsEmpty(proto)) + if ( IsEmpty(proto)) return; for (unsigned int i = 0; i < SIZEOF(infos); i++) { @@ -189,7 +189,7 @@ static void SetExtraIcons(HANDLE hContact) info.SetIcon(hContact, &info, dbv.pszVal); show = true; } - DBFreeVariant(&dbv); + db_free(&dbv); } } } @@ -252,7 +252,7 @@ static int DefaultOnClick(WPARAM wParam, LPARAM lParam, LPARAM param) return 0; char *proto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (IsEmpty(proto)) + if ( IsEmpty(proto)) return 0; bool found = false; @@ -267,7 +267,7 @@ static int DefaultOnClick(WPARAM wParam, LPARAM lParam, LPARAM param) found = true; } - DBFreeVariant(&dbv); + db_free(&dbv); } } @@ -347,7 +347,7 @@ static int ProtocolApplyIcon(WPARAM wParam, LPARAM lParam) HANDLE hContact = (HANDLE)wParam; char *proto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (IsEmpty(proto)) + if ( IsEmpty(proto)) return 0; ProtoInfo *pi = FindProto(proto); diff --git a/src/modules/extraicons/ExtraIcon.h b/src/modules/extraicons/ExtraIcon.h index 281e9e25eb..0fec56562c 100644 --- a/src/modules/extraicons/ExtraIcon.h +++ b/src/modules/extraicons/ExtraIcon.h @@ -30,18 +30,19 @@ public: ExtraIcon(const char *name); virtual ~ExtraIcon(); - virtual void rebuildIcons() =0; + virtual void rebuildIcons() = 0; virtual void applyIcons(); - virtual void applyIcon(HANDLE hContact) =0; - virtual void onClick(HANDLE hContact) =0; + virtual void applyIcon(HANDLE hContact) =0 ; + virtual void onClick(HANDLE hContact) = 0; - virtual int setIcon(int id, HANDLE hContact, void *icon) =0; - virtual void storeIcon(HANDLE hContact, void *icon) =0; + virtual int setIcon(int id, HANDLE hContact, HANDLE icon) = 0; + virtual int setIconByName(int id, HANDLE hContact, const char* icon) = 0; + virtual void storeIcon(HANDLE hContact, void *icon) = 0; virtual const char *getName() const; - virtual const TCHAR *getDescription() const =0; - virtual const char *getDescIcon() const =0; - virtual int getType() const =0; + virtual const TCHAR *getDescription() const = 0; + virtual const char *getDescIcon() const = 0; + virtual int getType() const = 0; virtual int getSlot() const; virtual void setSlot(int slot); diff --git a/src/modules/extraicons/ExtraIconGroup.cpp b/src/modules/extraicons/ExtraIconGroup.cpp index 5d26f8488c..0f9e162877 100644 --- a/src/modules/extraicons/ExtraIconGroup.cpp +++ b/src/modules/extraicons/ExtraIconGroup.cpp @@ -65,17 +65,15 @@ void ExtraIconGroup::applyIcon(HANDLE hContact) insideApply = true; unsigned int i; - for (i = 0; i < items.size(); i++) - { + for (i = 0; i < items.size(); i++) { items[i]->applyIcon(hContact); - if (setValidExtraIcon) break; } insideApply = false; - DBWriteContactSettingDword(hContact, MODULE_NAME, name.c_str(), setValidExtraIcon ? items[i]->getID() : 0); + db_set_dw(hContact, MODULE_NAME, name.c_str(), setValidExtraIcon ? items[i]->getID() : 0); } int ExtraIconGroup::getPosition() const @@ -96,7 +94,7 @@ void ExtraIconGroup::setSlot(int slot) ExtraIcon * ExtraIconGroup::getCurrentItem(HANDLE hContact) const { - int id = (int) DBGetContactSettingDword(hContact, MODULE_NAME, name.c_str(), 0); + int id = (int)DBGetContactSettingDword(hContact, MODULE_NAME, name.c_str(), 0); if (id < 1) return NULL; @@ -114,13 +112,25 @@ void ExtraIconGroup::onClick(HANDLE hContact) extra->onClick(hContact); } -int ExtraIconGroup::setIcon(int id, HANDLE hContact, void *icon) +int ExtraIconGroup::setIcon(int id, HANDLE hContact, HANDLE value) { - if (insideApply) - { + return internalSetIcon(id, hContact, (void*)value, false); +} + +int ExtraIconGroup::setIconByName(int id, HANDLE hContact, const char *value) +{ + return internalSetIcon(id, hContact, (void*)value, true); +} + +int ExtraIconGroup::internalSetIcon(int id, HANDLE hContact, void *value, bool bByName) +{ + if (insideApply) { for (unsigned int i = 0; i < items.size(); i++) - if (items[i]->getID() == id) - return items[i]->setIcon(id, hContact, icon); + if (items[i]->getID() == id) { + if (bByName) + return items[i]->setIconByName(id, hContact, (const char*)value); + return items[i]->setIcon(id, hContact, (HANDLE)value); + } return -1; } @@ -128,8 +138,7 @@ int ExtraIconGroup::setIcon(int id, HANDLE hContact, void *icon) ExtraIcon *current = getCurrentItem(hContact); int currentPos = (int)items.size(); int storePos = (int)items.size(); - for (unsigned int i = 0; i < items.size(); i++) - { + for (unsigned int i = 0; i < items.size(); i++) { if (items[i]->getID() == id) storePos = i; @@ -140,9 +149,8 @@ int ExtraIconGroup::setIcon(int id, HANDLE hContact, void *icon) if (storePos == items.size()) return -1; - if (storePos > currentPos) - { - items[storePos]->storeIcon(hContact, icon); + if (storePos > currentPos) { + items[storePos]->storeIcon(hContact, value); return 0; } @@ -150,25 +158,24 @@ int ExtraIconGroup::setIcon(int id, HANDLE hContact, void *icon) setValidExtraIcon = false; - int ret = items[storePos]->setIcon(id, hContact, icon); + int ret; + if (bByName) + ret = items[storePos]->setIconByName(id, hContact, (const char*)value); + else + ret = items[storePos]->setIcon(id, hContact, (HANDLE)value); - if (storePos < currentPos) - { + if (storePos < currentPos) { if (setValidExtraIcon) - DBWriteContactSettingDword(hContact, MODULE_NAME, name.c_str(), items[storePos]->getID()); + db_set_dw(hContact, MODULE_NAME, name.c_str(), items[storePos]->getID()); } - else if (storePos == currentPos) - { - if (!setValidExtraIcon) - { - DBWriteContactSettingDword(hContact, MODULE_NAME, name.c_str(), 0); + else if (storePos == currentPos) { + if (!setValidExtraIcon) { + db_set_dw(hContact, MODULE_NAME, name.c_str(), 0); insideApply = true; - for (++storePos; storePos < (int)items.size(); ++storePos) - { + for (++storePos; storePos < (int)items.size(); ++storePos) { items[storePos]->applyIcon(hContact); - if (setValidExtraIcon) break; } @@ -176,7 +183,7 @@ int ExtraIconGroup::setIcon(int id, HANDLE hContact, void *icon) insideApply = false; if (setValidExtraIcon) - DBWriteContactSettingDword(hContact, MODULE_NAME, name.c_str(), items[storePos]->getID()); + db_set_dw(hContact, MODULE_NAME, name.c_str(), items[storePos]->getID()); } } diff --git a/src/modules/extraicons/ExtraIconGroup.h b/src/modules/extraicons/ExtraIconGroup.h index eb2aec5561..bddc3bed5e 100644 --- a/src/modules/extraicons/ExtraIconGroup.h +++ b/src/modules/extraicons/ExtraIconGroup.h @@ -27,6 +27,7 @@ class BaseExtraIcon; class ExtraIconGroup : public ExtraIcon { + int internalSetIcon(int id, HANDLE hContact, HANDLE icon, bool bByName); public: ExtraIconGroup(const char *name); virtual ~ExtraIconGroup(); @@ -37,7 +38,8 @@ public: virtual void applyIcon(HANDLE hContact); virtual void onClick(HANDLE hContact); - virtual int setIcon(int id, HANDLE hContact, void *icon); + virtual int setIcon(int id, HANDLE hContact, HANDLE icon); + virtual int setIconByName(int id, HANDLE hContact, const char* icon); virtual void storeIcon(HANDLE hContact, void *icon); virtual const TCHAR *getDescription() const; @@ -56,7 +58,7 @@ protected: bool setValidExtraIcon; bool insideApply; - virtual ExtraIcon * getCurrentItem(HANDLE hContact) const; + virtual ExtraIcon *getCurrentItem(HANDLE hContact) const; }; #endif // __EXTRAICONGROUP_H__ diff --git a/src/modules/extraicons/IcolibExtraIcon.cpp b/src/modules/extraicons/IcolibExtraIcon.cpp index bfc273fd0b..53d627da9e 100644 --- a/src/modules/extraicons/IcolibExtraIcon.cpp +++ b/src/modules/extraicons/IcolibExtraIcon.cpp @@ -54,18 +54,50 @@ void IcolibExtraIcon::applyIcon(HANDLE hContact) HANDLE hImage = INVALID_HANDLE_VALUE; DBVARIANT dbv = { 0 }; - if (!DBGetContactSettingString(hContact, MODULE_NAME, name.c_str(), &dbv)) - { + if ( !DBGetContactSettingString(hContact, MODULE_NAME, name.c_str(), &dbv)) { if (!IsEmpty(dbv.pszVal)) hImage = GetIcon(dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } ClistSetExtraIcon(hContact, hImage); } -int IcolibExtraIcon::setIcon(int id, HANDLE hContact, void *icon) +int IcolibExtraIcon::setIcon(int id, HANDLE hContact, HANDLE hIcoLib) +{ + if (hContact == NULL || id != this->id) + return -1; + + if (hIcoLib == INVALID_HANDLE_VALUE) + hIcoLib = NULL; + + if (isEnabled()) { + DBVARIANT dbv = { 0 }; + if ( !DBGetContactSettingString(hContact, MODULE_NAME, name.c_str(), &dbv)) { + if (!IsEmpty(dbv.pszVal)) + RemoveIcon(dbv.pszVal); + + db_free(&dbv); + } + } + + storeIcon(hContact, hIcoLib); + + if (isEnabled()) { + HANDLE hImage; + if (hIcoLib == NULL) + hImage = INVALID_HANDLE_VALUE; + else + hImage = AddIcon(hIcoLib); + + return ClistSetExtraIcon(hContact, hImage); + } + + return 0; +} + +int IcolibExtraIcon::setIconByName(int id, HANDLE hContact, const char *icon) { if (hContact == NULL || id != this->id) return -1; @@ -73,26 +105,23 @@ int IcolibExtraIcon::setIcon(int id, HANDLE hContact, void *icon) if (icon == INVALID_HANDLE_VALUE) icon = NULL; - if (isEnabled()) - { + if (isEnabled()) { DBVARIANT dbv = { 0 }; - if (!DBGetContactSettingString(hContact, MODULE_NAME, name.c_str(), &dbv)) - { + if ( !DBGetContactSettingString(hContact, MODULE_NAME, name.c_str(), &dbv)) { if (!IsEmpty(dbv.pszVal)) RemoveIcon(dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } - storeIcon(hContact, icon); + storeIcon(hContact, ""); - if (isEnabled()) - { + if (isEnabled()) { const char *icolibName = (const char *) icon; HANDLE hImage; - if (IsEmpty(icolibName)) + if ( IsEmpty(icolibName)) hImage = INVALID_HANDLE_VALUE; else hImage = AddIcon(icolibName); @@ -109,8 +138,8 @@ void IcolibExtraIcon::storeIcon(HANDLE hContact, void *icon) return; const char *icolibName = (const char *) icon; - if (IsEmpty(icolibName)) - icolibName = ""; // Delete don't work and I don't know why + if ( IsEmpty(icolibName)) + icolibName = ""; // Delete doesn't work, and I don't know why - DBWriteContactSettingString(hContact, MODULE_NAME, name.c_str(), icolibName); + db_set_s(hContact, MODULE_NAME, name.c_str(), icolibName); } diff --git a/src/modules/extraicons/IcolibExtraIcon.h b/src/modules/extraicons/IcolibExtraIcon.h index 5f113e7251..beb24fbdc3 100644 --- a/src/modules/extraicons/IcolibExtraIcon.h +++ b/src/modules/extraicons/IcolibExtraIcon.h @@ -25,8 +25,7 @@ class IcolibExtraIcon : public BaseExtraIcon { public: - IcolibExtraIcon(int id, const char *name, const TCHAR *description, const char *descIcon, MIRANDAHOOKPARAM OnClick, - LPARAM param); + IcolibExtraIcon(int id, const char *name, const TCHAR *description, const char *descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param); virtual ~IcolibExtraIcon(); virtual int getType() const; @@ -34,7 +33,8 @@ public: virtual void rebuildIcons(); virtual void applyIcon(HANDLE hContact); - virtual int setIcon(int id, HANDLE hContact, void *icon); + virtual int setIcon(int id, HANDLE hContact, HANDLE icon); + virtual int setIconByName(int id, HANDLE hContact, const char* icon); virtual void storeIcon(HANDLE hContact, void *icon); }; diff --git a/src/modules/extraicons/extraicons.cpp b/src/modules/extraicons/extraicons.cpp index 45a81235e6..9f119d5706 100644 --- a/src/modules/extraicons/extraicons.cpp +++ b/src/modules/extraicons/extraicons.cpp @@ -102,7 +102,7 @@ int Clist_SetExtraIcon(HANDLE hContact, int slot, HANDLE hImage) ExtraIcon* GetExtraIcon(HANDLE id) { - unsigned int i = (int) id; + unsigned int i = (int)id; if (i < 1 || i > extraIconsByHandle.size()) return NULL; @@ -157,7 +157,7 @@ static void LoadGroups(vector &groups) group->setSlot(extra->getSlot()); } } - DBFreeVariant(&dbv); + db_free(&dbv); } } @@ -257,7 +257,7 @@ int ClistExtraClick(WPARAM wParam, LPARAM lParam) if (hContact == NULL) return 0; - int clistSlot = (int) lParam; + int clistSlot = (int)lParam; for (unsigned int i = 0; i < extraIconsBySlot.size(); i++) { ExtraIcon *extra = extraIconsBySlot[i]; @@ -349,11 +349,11 @@ INT_PTR ExtraIcon_Register(WPARAM wParam, LPARAM lParam) return 0; EXTRAICON_INFO *ei = (EXTRAICON_INFO *) wParam; - if (ei->cbSize < (int) sizeof(EXTRAICON_INFO)) + if (ei->cbSize < (int)sizeof(EXTRAICON_INFO)) return 0; if (ei->type != EXTRAICON_TYPE_CALLBACK && ei->type != EXTRAICON_TYPE_ICOLIB) return 0; - if (IsEmpty(ei->name) || IsEmpty(ei->description)) + if ( IsEmpty(ei->name) || IsEmpty(ei->description)) return 0; if (ei->type == EXTRAICON_TYPE_CALLBACK && (ei->ApplyIcon == NULL || ei->RebuildIcons == NULL)) return 0; @@ -457,17 +457,31 @@ INT_PTR ExtraIcon_SetIcon(WPARAM wParam, LPARAM lParam) if (wParam == 0) return -1; - EXTRAICON *ei = (EXTRAICON *) wParam; - if (ei->cbSize < (int) sizeof(EXTRAICON)) + EXTRAICON *ei = (EXTRAICON*)wParam; + if (ei->cbSize < (int)sizeof(EXTRAICON) || ei->hExtraIcon == NULL || ei->hContact == NULL) return -1; - if (ei->hExtraIcon == NULL || ei->hContact == NULL) + + ExtraIcon *extra = GetExtraIcon(ei->hExtraIcon); + if (extra == NULL) + return -1; + + return extra->setIcon((int)ei->hExtraIcon, ei->hContact, ei->hImage); +} + +INT_PTR ExtraIcon_SetIconByName(WPARAM wParam, LPARAM lParam) +{ + if (wParam == 0) + return -1; + + EXTRAICON *ei = (EXTRAICON*)wParam; + if (ei->cbSize < (int)sizeof(EXTRAICON) || ei->hExtraIcon == NULL || ei->hContact == NULL) return -1; ExtraIcon *extra = GetExtraIcon(ei->hExtraIcon); if (extra == NULL) return -1; - return extra->setIcon((int) ei->hExtraIcon, ei->hContact, ei->hImage); + return extra->setIconByName((int)ei->hExtraIcon, ei->hContact, ei->icoName); } static INT_PTR svcExtraIcon_Add(WPARAM wParam, LPARAM lParam) @@ -486,6 +500,7 @@ void LoadExtraIconsModule() // Services CreateServiceFunction(MS_EXTRAICON_REGISTER, &ExtraIcon_Register); CreateServiceFunction(MS_EXTRAICON_SET_ICON, &ExtraIcon_SetIcon); + CreateServiceFunction(MS_EXTRAICON_SET_ICON_BY_NAME, &ExtraIcon_SetIconByName); CreateServiceFunction(MS_CLIST_EXTRA_ADD_ICON, &svcExtraIcon_Add); diff --git a/src/modules/extraicons/options_ei.cpp b/src/modules/extraicons/options_ei.cpp index b04ec3fec3..2d4e9fd7df 100644 --- a/src/modules/extraicons/options_ei.cpp +++ b/src/modules/extraicons/options_ei.cpp @@ -419,7 +419,7 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LP TranslateDialogDefault(hwndDlg); { int numSlots = GetNumberOfSlots(); - if (numSlots < (int) registeredExtraIcons.size()) { + if (numSlots < (int)registeredExtraIcons.size()) { TCHAR txt[512]; mir_sntprintf(txt, SIZEOF(txt), TranslateT("* only the first %d icons will be shown"), numSlots); @@ -573,7 +573,7 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LP BaseExtraIcon *extra = group->items[j]; mir_snprintf(setting, SIZEOF(setting), "%d_%d", i, j); - DBWriteContactSettingString(NULL, MODULE_NAME "Groups", setting, extra->getName()); + db_set_s(NULL, MODULE_NAME "Groups", setting, extra->getName()); } } diff --git a/src/modules/extraicons/usedIcons.cpp b/src/modules/extraicons/usedIcons.cpp index 1c42104490..e810dd1878 100644 --- a/src/modules/extraicons/usedIcons.cpp +++ b/src/modules/extraicons/usedIcons.cpp @@ -25,41 +25,69 @@ struct Icon { string name; int refCount; - HANDLE hImage; + HANDLE hIcoLib, hImage; Icon(const char *icolibName) : - name(icolibName), refCount(0), hImage(INVALID_HANDLE_VALUE) + name(icolibName), hIcoLib(0), refCount(0), hImage(INVALID_HANDLE_VALUE) + { + } + + Icon(HANDLE _hIcolib) : + name(""), hIcoLib(_hIcolib), refCount(0), hImage(INVALID_HANDLE_VALUE) { } }; static vector usedIcons; -static Icon * FindIcon(const char *icolibName) +static Icon* FindIcon(const char *icolibName) { Icon *icon = NULL; - for (unsigned int i = 0; i < usedIcons.size(); i++) - { + for (unsigned int i = 0; i < usedIcons.size(); i++) { Icon *tmp = &usedIcons[i]; - if (tmp->name != icolibName) - continue; - - icon = tmp; - break; + if (tmp->name == icolibName) { + icon = tmp; + break; + } } - if (icon == NULL) - { - usedIcons.push_back(Icon(icolibName)); + if (icon == NULL) { + usedIcons.push_back( Icon(icolibName)); icon = &usedIcons[usedIcons.size() - 1]; } - if (icon->hImage == INVALID_HANDLE_VALUE) - { + if (icon->hImage == INVALID_HANDLE_VALUE) { HICON hIcon = Skin_GetIcon(icon->name.c_str()); - if (hIcon != NULL) - { + if (hIcon != NULL) { + icon->hImage = ExtraIcon_Add(hIcon); + Skin_ReleaseIcon(hIcon); + } + } + + return icon; +} + +static Icon* FindIcon(HANDLE hIcolib) +{ + Icon *icon = NULL; + + for (unsigned int i = 0; i < usedIcons.size(); i++) { + Icon *tmp = &usedIcons[i]; + if (tmp->hImage == hIcolib) { + icon = tmp; + break; + } + } + + if (icon == NULL) { + usedIcons.push_back( Icon(hIcolib)); + icon = &usedIcons[usedIcons.size() - 1]; + } + + if (icon->hImage == INVALID_HANDLE_VALUE) { + HICON hIcon = Skin_GetIconByHandle(icon->hIcoLib); + if (hIcon != NULL) { icon->hImage = ExtraIcon_Add(hIcon); Skin_ReleaseIcon(hIcon); } @@ -80,6 +108,13 @@ HANDLE AddIcon(const char *icolibName) return icon->hImage; } +HANDLE AddIcon(HANDLE hIcolib) +{ + Icon *icon = FindIcon(hIcolib); + icon->refCount++; + return icon->hImage; +} + void RemoveIcon(const char *icolibName) { for (unsigned int i = 0; i < usedIcons.size(); i++) diff --git a/src/modules/extraicons/usedIcons.h b/src/modules/extraicons/usedIcons.h index ef3a0f0200..b8aeee226c 100644 --- a/src/modules/extraicons/usedIcons.h +++ b/src/modules/extraicons/usedIcons.h @@ -20,9 +20,12 @@ #ifndef __USEDICONS_H__ #define __USEDICONS_H__ -HANDLE GetIcon(const char *icolibName); -HANDLE AddIcon(const char *icolibName); -void RemoveIcon(const char *icolibName); +HANDLE GetIcon(LPCSTR icolibName); + +HANDLE AddIcon(LPCSTR icolibName); +HANDLE AddIcon(HANDLE hIcolib); + +void RemoveIcon(LPCSTR icolibName); void ResetIcons(); diff --git a/src/modules/findadd/findadd.cpp b/src/modules/findadd/findadd.cpp index c5306516ab..a693cc4c45 100644 --- a/src/modules/findadd/findadd.cpp +++ b/src/modules/findadd/findadd.cpp @@ -391,7 +391,7 @@ static INT_PTR CALLBACK DlgProcFindAdd(HWND hwndDlg, UINT msg, WPARAM wParam, LP if ((rect.right-rect.left)lfFaceName, dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } else retval = 1; diff --git a/src/modules/icolib/skin2icons.cpp b/src/modules/icolib/skin2icons.cpp index 0fd774a087..eec1dff500 100644 --- a/src/modules/icolib/skin2icons.cpp +++ b/src/modules/icolib/skin2icons.cpp @@ -674,7 +674,7 @@ HICON IconItem_GetIcon(IconItem* item, bool big) int cx = item->cx ? item->cx : GetSystemMetrics(big ? SM_CXICON : SM_CXSMICON); int cy = item->cy ? item->cy : GetSystemMetrics(big ? SM_CYICON : SM_CYSMICON); source = GetIconSourceItemFromPath(tszFullPath, cx, cy); - DBFreeVariant(&dbv); + db_free(&dbv); } if (source) diff --git a/src/modules/json/JSONNode.h b/src/modules/json/JSONNode.h index 3552f9f73c..0c4f19d08d 100644 --- a/src/modules/json/JSONNode.h +++ b/src/modules/json/JSONNode.h @@ -61,7 +61,7 @@ #define DECLARE_FOR_ALL_TYPES_CONST(foo)\ foo(char) const; foo(unsigned char) const;\ foo(short) const; foo(unsigned short) const;\ - foo(int) const; foo(unsigned int) const;\ + foo(int)const; foo(unsigned int) const;\ foo(long) const; foo(unsigned long) const;\ foo(float) const; foo(double) const;\ foo(bool) const;\ @@ -72,7 +72,7 @@ #define IMPLEMENT_FOR_ALL_NUMBERS(foo)\ foo(char) foo(unsigned char)\ foo(short) foo(unsigned short)\ - foo(int) foo(unsigned int)\ + foo(int)foo(unsigned int)\ foo(long) foo(unsigned long)\ foo(float) foo(double) diff --git a/src/modules/langpack/lpservices.cpp b/src/modules/langpack/lpservices.cpp index 01a1f9cf07..a761f50dec 100644 --- a/src/modules/langpack/lpservices.cpp +++ b/src/modules/langpack/lpservices.cpp @@ -95,7 +95,7 @@ static INT_PTR srvGetPluginLangpack(WPARAM wParam, LPARAM lParam) ///////////////////////////////////////////////////////////////////////////////////////// -MIR_CORE_DLL(int) LoadLangPackModule(void); +MIR_CORE_DLL(int)LoadLangPackModule(void); int LoadLangpackModule(void) { diff --git a/src/modules/netlib/netlib.cpp b/src/modules/netlib/netlib.cpp index 2c799ffa2e..b0d228ca09 100644 --- a/src/modules/netlib/netlib.cpp +++ b/src/modules/netlib/netlib.cpp @@ -121,7 +121,7 @@ static char *GetNetlibUserSettingString(const char *szUserModule, const char *sz char *szRet; if (decode) CallService(MS_DB_CRYPT_DECODESTRING, strlen(dbv.pszVal) + 1, (LPARAM)dbv.pszVal); szRet = mir_strdup(dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); if (szRet == NULL) SetLastError(ERROR_OUTOFMEMORY); return szRet; } diff --git a/src/modules/netlib/netliblog.cpp b/src/modules/netlib/netliblog.cpp index 01f5855e10..05b4e899dd 100644 --- a/src/modules/netlib/netliblog.cpp +++ b/src/modules/netlib/netliblog.cpp @@ -92,7 +92,7 @@ static INT_PTR CALLBACK LogOptionsDlgProc(HWND hwndDlg, UINT message, WPARAM wPa DBVARIANT dbv; if ( !DBGetContactSettingString(NULL, "Netlib", "RunAtStart", &dbv)) { SetDlgItemTextA(hwndDlg, IDC_RUNATSTART, dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } logOptions.save = 0; @@ -575,7 +575,7 @@ void NetlibLogInit(void) logOptions.szFile = mir_tstrdup(path); mir_free(pszNewPath); - DBFreeVariant(&dbv); + db_free(&dbv); } else { logOptions.szUserFile = mir_tstrdup(_T("%miranda_logpath%\\netlog.txt")); @@ -598,7 +598,7 @@ void NetlibLogInit(void) si.cb = sizeof(si); if (dbv.ptszVal[0]) CreateProcess(NULL, dbv.ptszVal, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); - DBFreeVariant(&dbv); + db_free(&dbv); } } diff --git a/src/modules/netlib/netlibopts.cpp b/src/modules/netlib/netlibopts.cpp index 1131980bc5..1a28e62df4 100644 --- a/src/modules/netlib/netlibopts.cpp +++ b/src/modules/netlib/netlibopts.cpp @@ -199,21 +199,21 @@ static void WriteSettingsStructToDb(const char *szSettingsModule, NETLIBUSERSETT db_set_b(NULL, szSettingsModule, "NLValidateSSL", (BYTE)settings->validateSSL); db_set_b(NULL, szSettingsModule, "NLUseProxy", (BYTE)settings->useProxy); db_set_b(NULL, szSettingsModule, "NLProxyType", (BYTE)settings->proxyType); - DBWriteContactSettingString(NULL, szSettingsModule, "NLProxyServer", settings->szProxyServer?settings->szProxyServer:""); + db_set_s(NULL, szSettingsModule, "NLProxyServer", settings->szProxyServer?settings->szProxyServer:""); DBWriteContactSettingWord(NULL, szSettingsModule, "NLProxyPort", (WORD)settings->wProxyPort); db_set_b(NULL, szSettingsModule, "NLUseProxyAuth", (BYTE)settings->useProxyAuth); - DBWriteContactSettingString(NULL, szSettingsModule, "NLProxyAuthUser", settings->szProxyAuthUser?settings->szProxyAuthUser:""); + db_set_s(NULL, szSettingsModule, "NLProxyAuthUser", settings->szProxyAuthUser?settings->szProxyAuthUser:""); lstrcpynA(szEncodedPassword, settings->szProxyAuthPassword?settings->szProxyAuthPassword:"", SIZEOF(szEncodedPassword)); CallService(MS_DB_CRYPT_ENCODESTRING, SIZEOF(szEncodedPassword), (LPARAM)szEncodedPassword); - DBWriteContactSettingString(NULL, szSettingsModule, "NLProxyAuthPassword", szEncodedPassword); + db_set_s(NULL, szSettingsModule, "NLProxyAuthPassword", szEncodedPassword); db_set_b(NULL, szSettingsModule, "NLDnsThroughProxy", (BYTE)settings->dnsThroughProxy); db_set_b(NULL, szSettingsModule, "NLSpecifyOutgoingPorts", (BYTE)settings->specifyOutgoingPorts); - DBWriteContactSettingString(NULL, szSettingsModule, "NLOutgoingPorts", settings->szOutgoingPorts?settings->szOutgoingPorts:""); + db_set_s(NULL, szSettingsModule, "NLOutgoingPorts", settings->szOutgoingPorts?settings->szOutgoingPorts:""); } if (flags & NUF_INCOMING) { db_set_b(NULL, szSettingsModule, "NLEnableUPnP", (BYTE)settings->enableUPnP); db_set_b(NULL, szSettingsModule, "NLSpecifyIncomingPorts", (BYTE)settings->specifyIncomingPorts); - DBWriteContactSettingString(NULL, szSettingsModule, "NLIncomingPorts", settings->szIncomingPorts?settings->szIncomingPorts:""); + db_set_s(NULL, szSettingsModule, "NLIncomingPorts", settings->szIncomingPorts?settings->szIncomingPorts:""); } } diff --git a/src/modules/options/options.cpp b/src/modules/options/options.cpp index 64879ee5c8..4d8d71c438 100644 --- a/src/modules/options/options.cpp +++ b/src/modules/options/options.cpp @@ -718,13 +718,13 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hdlg, UINT message, WPARAM wParam, L if (ood->pszPage == NULL) { if ( !DBGetContactSettingTString(NULL, "Options", "LastPage", &dbv)) { lastPage = mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } if (ood->pszGroup == NULL) { if ( !DBGetContactSettingTString(NULL, "Options", "LastGroup", &dbv)) { lastGroup = mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } else lastGroup = mir_a2t(ood->pszGroup); @@ -737,7 +737,7 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hdlg, UINT message, WPARAM wParam, L if (ood->pszTab == NULL) { if ( !DBGetContactSettingTString(NULL, "Options", "LastTab", &dbv)) { lastTab = mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } else lastTab = mir_a2t(ood->pszTab); diff --git a/src/modules/protocols/protoaccs.cpp b/src/modules/protocols/protoaccs.cpp index fff20b30c2..b643a960e8 100644 --- a/src/modules/protocols/protoaccs.cpp +++ b/src/modules/protocols/protoaccs.cpp @@ -54,7 +54,7 @@ static int EnumDbModules(const char *szModuleName, DWORD ofsModuleName, LPARAM l pa->iOrder = accounts.getCount(); accounts.insert(pa); } - DBFreeVariant(&dbv); + db_free(&dbv); } return 0; } @@ -73,12 +73,12 @@ void LoadDbAccounts(void) PROTOACCOUNT* pa = (PROTOACCOUNT*)mir_calloc(sizeof(PROTOACCOUNT)); if (pa == NULL) { - DBFreeVariant(&dbv); + db_free(&dbv); continue; } pa->cbSize = sizeof(*pa); pa->szModuleName = mir_strdup(dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); _itoa(OFFSET_VISIBLE+i, buf, 10); pa->bIsVisible = db_get_dw(NULL, "Protocols", buf, 1); @@ -87,11 +87,11 @@ void LoadDbAccounts(void) pa->iOrder = db_get_dw(NULL, "Protocols", buf, 1); if (ver >= 4) { - DBFreeVariant(&dbv); + db_free(&dbv); _itoa(OFFSET_NAME+i, buf, 10); if ( !DBGetContactSettingTString(NULL, "Protocols", buf, &dbv)) { pa->tszAccountName = mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } _itoa(OFFSET_ENABLED+i, buf, 10); @@ -99,14 +99,14 @@ void LoadDbAccounts(void) if ( !DBGetContactSettingString(NULL, pa->szModuleName, "AM_BaseProto", &dbv)) { pa->szProtoName = mir_strdup(dbv.pszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } } else pa->bIsEnabled = TRUE; if ( !pa->szProtoName) { pa->szProtoName = mir_strdup(pa->szModuleName); - DBWriteContactSettingString(NULL, pa->szModuleName, "AM_BaseProto", pa->szProtoName); + db_set_s(NULL, pa->szModuleName, "AM_BaseProto", pa->szProtoName); } if ( !pa->tszAccountName) @@ -173,7 +173,7 @@ void WriteDbAccounts() char buf[ 20 ]; _itoa(i, buf, 10); - DBWriteContactSettingString(NULL, "Protocols", buf, pa->szModuleName); + db_set_s(NULL, "Protocols", buf, pa->szModuleName); _itoa(OFFSET_PROTOPOS+i, buf, 10); db_set_dw(NULL, "Protocols", buf, pa->iOrder); diff --git a/src/modules/protocols/protoopts.cpp b/src/modules/protocols/protoopts.cpp index 52bd819123..9aa7436b4d 100644 --- a/src/modules/protocols/protoopts.cpp +++ b/src/modules/protocols/protoopts.cpp @@ -175,7 +175,7 @@ static INT_PTR CALLBACK AccFormDlgProc(HWND hwndDlg, UINT message, WPARAM wParam mir_snprintf(buf, SIZEOF(buf), "%s_%d", pa->szProtoName, count++); if (DBGetContactSettingString(NULL, buf, "AM_BaseProto", &dbv)) break; - DBFreeVariant(&dbv); + db_free(&dbv); } } pa->szModuleName = mir_strdup(buf); @@ -185,7 +185,7 @@ static INT_PTR CALLBACK AccFormDlgProc(HWND hwndDlg, UINT message, WPARAM wParam pa->tszAccountName = mir_a2t(buf); } - DBWriteContactSettingString(NULL, pa->szModuleName, "AM_BaseProto", pa->szProtoName); + db_set_s(NULL, pa->szModuleName, "AM_BaseProto", pa->szProtoName); accounts.insert(pa); if ( ActivateAccount(pa)) { diff --git a/src/modules/skin/skinicons.cpp b/src/modules/skin/skinicons.cpp index 37b01b0e40..b4e69eb602 100644 --- a/src/modules/skin/skinicons.cpp +++ b/src/modules/skin/skinicons.cpp @@ -369,7 +369,7 @@ static void convertOneProtocol(char *moduleName, char *iconName) _itoa(i, pi, 10); db_set_ts(NULL, "SkinIcons", iconName, dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); DBDeleteContactSetting(NULL, "Icons", moduleName); } } } @@ -414,7 +414,7 @@ int LoadSkinIcons(void) mir_snprintf(iconName, SIZEOF(iconName), "%s%d", mainIconsFmt, i); db_set_ts(NULL, "SkinIcons", iconName, dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); DBDeleteContactSetting(NULL, "Icons", moduleName); } @@ -435,7 +435,7 @@ int LoadSkinIcons(void) mir_snprintf(iconName, SIZEOF(iconName), "%s" TCHAR_STR_PARAM, statusIconsFmt, dbv.ptszVal); convertOneProtocol(moduleName, iconName); - DBFreeVariant(&dbv); + db_free(&dbv); } moduleName[0] = 0; strcpy(iconName, "core_status_" GLOBAL_PROTO_NAME); diff --git a/src/modules/skin/sounds.cpp b/src/modules/skin/sounds.cpp index 42e51898ed..ebf2be6f80 100644 --- a/src/modules/skin/sounds.cpp +++ b/src/modules/skin/sounds.cpp @@ -96,7 +96,7 @@ static INT_PTR ServiceSkinAddNewSound(WPARAM wParam, LPARAM lParam) if (DBGetContactSettingString(NULL, "SkinSounds", item->name, &dbv)) db_set_ts(NULL, "SkinSounds", item->name, ptszDefaultFile); else - DBFreeVariant(&dbv); + db_free(&dbv); mir_free(ptszDefaultFile); } @@ -129,7 +129,7 @@ static INT_PTR ServiceSkinPlaySound(WPARAM, LPARAM lParam) TCHAR szFull[MAX_PATH]; PathToAbsoluteT(dbv.ptszVal, szFull, NULL); NotifyEventHooks(hPlayEvent, 0, (LPARAM)szFull); - DBFreeVariant(&dbv); + db_free(&dbv); } } return 1; @@ -253,7 +253,7 @@ INT_PTR CALLBACK DlgProcSoundOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM TCHAR szPathFull[MAX_PATH]; PathToAbsoluteT(dbv.ptszVal, szPathFull, NULL); NotifyEventHooks(hPlayEvent, 1, (LPARAM)szPathFull); - DBFreeVariant(&dbv); + db_free(&dbv); } } break; @@ -282,7 +282,7 @@ INT_PTR CALLBACK DlgProcSoundOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM DBVARIANT dbv; if (DBGetContactSettingTString(NULL, "SkinSounds", snd.name, &dbv) == 0) { PathToAbsoluteT(dbv.ptszVal, strdir, NULL); - DBFreeVariant(&dbv); + db_free(&dbv); } } } mir_sntprintf(strFull, SIZEOF(strFull), _T("%s"), snd.ptszTempFile ? snd.ptszTempFile : _T("")); @@ -381,7 +381,7 @@ INT_PTR CALLBACK DlgProcSoundOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM DBVARIANT dbv; if ( !DBGetContactSettingTString(NULL, "SkinSounds", arSounds[tvi.lParam].name, &dbv)) { SetDlgItemText(hwndDlg, IDC_LOCATION, dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); } else SetDlgItemText(hwndDlg, IDC_LOCATION, TranslateT("")); } diff --git a/src/modules/utils/openurl.cpp b/src/modules/utils/openurl.cpp index a50ee22e7e..ebf462cca4 100644 --- a/src/modules/utils/openurl.cpp +++ b/src/modules/utils/openurl.cpp @@ -57,7 +57,7 @@ static void OpenURLThread(void *arg) DBVARIANT dbv; if (!DBGetContactSettingTString(NULL, "Miranda", "OpenUrlBrowser", &dbv)) { ShellExecute(NULL, _T("open"), dbv.ptszVal, szResult, NULL, (hUrlInfo->newWindow) ? SW_NORMAL : SW_SHOWDEFAULT); - DBFreeVariant(&dbv); + db_free(&dbv); } else ShellExecute(NULL, _T("open"), szResult, NULL, NULL, (hUrlInfo->newWindow) ? SW_NORMAL : SW_SHOWDEFAULT); diff --git a/src/modules/utils/path.cpp b/src/modules/utils/path.cpp index 9d2f543e4a..24e30fcf4a 100644 --- a/src/modules/utils/path.cpp +++ b/src/modules/utils/path.cpp @@ -71,7 +71,7 @@ TCHAR *GetContactID(HANDLE hContact) DBVARIANT dbv; if ( !DBGetContactSettingTString(hContact, szProto, "ChatRoomID", &dbv)) { theValue = (TCHAR *)mir_tstrdup(dbv.ptszVal); - DBFreeVariant(&dbv); + db_free(&dbv); return theValue; } } else { diff --git a/src/modules/utils/timezones.cpp b/src/modules/utils/timezones.cpp index 2f7153442b..a230fa7083 100644 --- a/src/modules/utils/timezones.cpp +++ b/src/modules/utils/timezones.cpp @@ -190,7 +190,7 @@ static HANDLE timeapiGetInfoByContact(HANDLE hContact, DWORD dwFlags) if ( !DBGetContactSettingTString(hContact, "UserInfo", "TzName", &dbv)) { HANDLE res = timeapiGetInfoByName(dbv.ptszVal, dwFlags); - DBFreeVariant(&dbv); + db_free(&dbv); if (res) return res; } @@ -201,7 +201,7 @@ static HANDLE timeapiGetInfoByContact(HANDLE hContact, DWORD dwFlags) if ( !DBGetContactSettingTString(hContact, szProto, "TzName", &dbv)) { HANDLE res = timeapiGetInfoByName(dbv.ptszVal, dwFlags); - DBFreeVariant(&dbv); + db_free(&dbv); if (res) return res; } timezone = (signed char)db_get_b(hContact, szProto, "Timezone", -1); @@ -390,7 +390,7 @@ static int timeapiSelectListItem(HANDLE hContact, HWND hWnd, DWORD dwFlags) break; } } - DBFreeVariant(&dbv); + db_free(&dbv); } } -- cgit v1.2.3