From 4c940062ccbf560f057b22a9a5dabe72f17a1222 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 22 Dec 2013 19:22:28 +0000 Subject: local module cycles removed and replaced with the single cycle git-svn-id: http://svn.miranda-ng.org/main/trunk@7343 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/UserInfoEx/src/Flags/svc_flags.cpp | 2 +- plugins/UserInfoEx/src/Flags/svc_flags.h | 3 +- plugins/UserInfoEx/src/init.cpp | 8 ++---- plugins/UserInfoEx/src/psp_options.cpp | 18 ++++++------ plugins/UserInfoEx/src/svc_constants.h | 1 - plugins/UserInfoEx/src/svc_email.cpp | 39 ++++++++------------------ plugins/UserInfoEx/src/svc_email.h | 3 +- plugins/UserInfoEx/src/svc_gender.cpp | 44 ++++++++---------------------- plugins/UserInfoEx/src/svc_gender.h | 3 +- plugins/UserInfoEx/src/svc_homepage.cpp | 43 ++++++++++++----------------- plugins/UserInfoEx/src/svc_homepage.h | 2 +- plugins/UserInfoEx/src/svc_phone.cpp | 42 ++++++++-------------------- plugins/UserInfoEx/src/svc_phone.h | 2 +- 13 files changed, 69 insertions(+), 141 deletions(-) (limited to 'plugins/UserInfoEx') diff --git a/plugins/UserInfoEx/src/Flags/svc_flags.cpp b/plugins/UserInfoEx/src/Flags/svc_flags.cpp index 9ee871bd61..907d201e38 100644 --- a/plugins/UserInfoEx/src/Flags/svc_flags.cpp +++ b/plugins/UserInfoEx/src/Flags/svc_flags.cpp @@ -421,7 +421,7 @@ void SvcFlagsLoadModule() **/ void SvcFlagsOnModulesLoaded() { - SvcFlagsEnableExtraIcons(db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_FLAGS2, 0), FALSE); + SvcFlagsEnableExtraIcons(1, FALSE); /* Status Icon */ HookEvent(ME_MSG_WINDOWEVENT, OnMsgWndEvent); diff --git a/plugins/UserInfoEx/src/Flags/svc_flags.h b/plugins/UserInfoEx/src/Flags/svc_flags.h index d8d7867125..64ed5a2244 100644 --- a/plugins/UserInfoEx/src/Flags/svc_flags.h +++ b/plugins/UserInfoEx/src/Flags/svc_flags.h @@ -35,7 +35,8 @@ struct FLAGSOPTIONS BYTE bShowStatusIconFlag; }; -extern FLAGSOPTIONS gFlagsOpts; +extern FLAGSOPTIONS gFlagsOpts; +extern bool g_eiGender, g_eiHome, g_eiEmail, g_eiPhone; struct MsgWndData { diff --git a/plugins/UserInfoEx/src/init.cpp b/plugins/UserInfoEx/src/init.cpp index dcbc3f6360..394e2da982 100644 --- a/plugins/UserInfoEx/src/init.cpp +++ b/plugins/UserInfoEx/src/init.cpp @@ -82,15 +82,11 @@ static int OnModulesLoaded(WPARAM wParam, LPARAM lParam) // load module to remind user about birthday and a anniversary SvcReminderOnModulesLoaded(); // load extended intagration services - SvcEMailOnModulesLoaded(); SvcHomepageLoadModule(); - SvcPhoneLoadModule(); - SvcGenderLoadModule(); SvcFlagsOnModulesLoaded(); -#ifdef _DEBUG // new feature, not in release jet - NServices::NAvatar::OnModulesLoaded(); -#endif + if (SvcEMailEnableExtraIcons() || SvcPhoneEnableExtraIcons() || SvcGenderEnableExtraIcons() || SvcHomepageEnableExtraIcons()) + pcli->pfnSetAllExtraIcons(0); // build contact's menuitems RebuildMenu(); diff --git a/plugins/UserInfoEx/src/psp_options.cpp b/plugins/UserInfoEx/src/psp_options.cpp index 77433e1779..a79e2ea8be 100644 --- a/plugins/UserInfoEx/src/psp_options.cpp +++ b/plugins/UserInfoEx/src/psp_options.cpp @@ -318,10 +318,10 @@ static INT_PTR CALLBACK DlgProc_CommonOpts(HWND hDlg, UINT uMsg, WPARAM wParam, } } // extra icon settings - DBGetCheckBtn(hDlg, CHECK_OPT_GENDER, SET_CLIST_EXTRAICON_GENDER2, 0); - DBGetCheckBtn(hDlg, CHECK_OPT_HOMEPAGEICON, SET_CLIST_EXTRAICON_HOMEPAGE, DEFVAL_CLIST_EXTRAICON_HOMEPAGE); - DBGetCheckBtn(hDlg, CHECK_OPT_EMAILICON, SET_CLIST_EXTRAICON_EMAIL, DEFVAL_CLIST_EXTRAICON_EMAIL); - DBGetCheckBtn(hDlg, CHECK_OPT_PHONEICON, SET_CLIST_EXTRAICON_PHONE, DEFVAL_CLIST_EXTRAICON_PHONE); + CheckDlgButton(hDlg, CHECK_OPT_GENDER, g_eiGender); + CheckDlgButton(hDlg, CHECK_OPT_EMAILICON, g_eiEmail); + CheckDlgButton(hDlg, CHECK_OPT_PHONEICON, g_eiPhone); + CheckDlgButton(hDlg, CHECK_OPT_HOMEPAGEICON, g_eiHome); CheckDlgButton(hDlg, CHECK_OPT_FLAGSUNKNOWN, gFlagsOpts.bUseUnknownFlag); CheckDlgButton(hDlg, CHECK_OPT_FLAGSMSGSTATUS, gFlagsOpts.bShowStatusIconFlag); @@ -361,15 +361,15 @@ static INT_PTR CALLBACK DlgProc_CommonOpts(HWND hDlg, UINT uMsg, WPARAM wParam, FlagsMsgWndChange++; } - SvcGenderEnableExtraIcons(IsDlgButtonChecked(hDlg, CHECK_OPT_GENDER) ? 1 : -1, TRUE); + if (SvcHomepageEnableExtraIcons(0 != IsDlgButtonChecked(hDlg, CHECK_OPT_HOMEPAGEICON), true) || + SvcEMailEnableExtraIcons(0 != IsDlgButtonChecked(hDlg, CHECK_OPT_EMAILICON), true) || + SvcPhoneEnableExtraIcons(0 != IsDlgButtonChecked(hDlg, CHECK_OPT_PHONEICON), true) || + SvcGenderEnableExtraIcons(0 != IsDlgButtonChecked(hDlg, CHECK_OPT_GENDER), true)) + FlagsClistChange = true; if (FlagsClistChange) pcli->pfnSetAllExtraIcons(NULL); if (FlagsMsgWndChange) UpdateStatusIcons(NULL); - SvcHomepageEnableExtraIcons(IsDlgButtonChecked(hDlg, CHECK_OPT_HOMEPAGEICON), TRUE); - SvcEMailEnableExtraIcons(IsDlgButtonChecked(hDlg, CHECK_OPT_EMAILICON), TRUE); - SvcPhoneEnableExtraIcons(IsDlgButtonChecked(hDlg, CHECK_OPT_PHONEICON), TRUE); - // misc BYTE bEnabled = IsDlgButtonChecked(hDlg, CHECK_OPT_ZODIACAVATAR); db_set_b(NULL, MODNAME, SET_ZODIAC_AVATARS, bEnabled); diff --git a/plugins/UserInfoEx/src/svc_constants.h b/plugins/UserInfoEx/src/svc_constants.h index 76f9421296..1dc73429a8 100644 --- a/plugins/UserInfoEx/src/svc_constants.h +++ b/plugins/UserInfoEx/src/svc_constants.h @@ -69,7 +69,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define SET_CLIST_EXTRAICON_HOMEPAGE "cliHomepage" #define SET_CLIST_EXTRAICON_EMAIL "cliEmail" #define SET_CLIST_EXTRAICON_PHONE "cliPhone" -#define SET_CLIST_EXTRAICON_FLAGS2 "cliFlags" #define SET_OPT_AUTOTIMEZONE "AutoTimezone" #define SET_ZODIAC_AVATARS "ZodicAvatars" #define SET_META_SCAN "MetaScan" diff --git a/plugins/UserInfoEx/src/svc_email.cpp b/plugins/UserInfoEx/src/svc_email.cpp index bf337d5788..08306415be 100644 --- a/plugins/UserInfoEx/src/svc_email.cpp +++ b/plugins/UserInfoEx/src/svc_email.cpp @@ -28,6 +28,8 @@ static HANDLE ghExtraIconSvc = INVALID_HANDLE_VALUE; static HANDLE hChangedHook = NULL; static HANDLE hApplyIconHook = NULL; +bool g_eiEmail = false; + /** * This function reads the email address of the contact. * @@ -200,20 +202,6 @@ void SvcEMailRebuildMenu() } } -/** -* Force all icons to be reloaded. -* -* @param wParam - handle to the contact whose extra icon is to apply -* @param lParam - not used -**/ - -void SvcEMailApplyCListIcons() -{ - // walk through all the contacts stored in the DB - for (HANDLE hContact = db_find_first(); hContact != NULL; hContact = db_find_next(hContact)) - OnCListApplyIcons((WPARAM)hContact, 0); -} - /** * Enable or disable the replacement of clist extra icons. * @@ -221,10 +209,15 @@ void SvcEMailApplyCListIcons() * @param bUpdateDB - if true the database setting is updated, too. **/ -void SvcEMailEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) +bool SvcEMailEnableExtraIcons(bool bEnable, bool bUpdateDB) { - if (bUpdateDB) + bool bChanged; + + if (bUpdateDB) { + bChanged = g_eiEmail != bEnable; db_set_b(NULL, MODNAME, SET_CLIST_EXTRAICON_EMAIL, bEnable); + } + else bChanged = g_eiEmail = db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_EMAIL, DEFVAL_CLIST_EXTRAICON_EMAIL) != 0; if (bEnable) { // E-mail checked // hook events @@ -247,16 +240,8 @@ void SvcEMailEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) hApplyIconHook = NULL; } } - SvcEMailApplyCListIcons(); -} -/** -* This function initially loads the module upon startup. -**/ - -void SvcEMailOnModulesLoaded() -{ - SvcEMailEnableExtraIcons(db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_EMAIL, DEFVAL_CLIST_EXTRAICON_EMAIL), FALSE); + return bChanged; } /** @@ -283,6 +268,6 @@ void SvcEMailLoadModule() void SvcEMailUnloadModule() { // unhook event handlers - UnhookEvent(hChangedHook); hChangedHook = NULL; - UnhookEvent(hApplyIconHook); hApplyIconHook = NULL; + UnhookEvent(hChangedHook); hChangedHook = NULL; + UnhookEvent(hApplyIconHook); hApplyIconHook = NULL; } diff --git a/plugins/UserInfoEx/src/svc_email.h b/plugins/UserInfoEx/src/svc_email.h index 4161ebc8f8..d2f7cb3ec7 100644 --- a/plugins/UserInfoEx/src/svc_email.h +++ b/plugins/UserInfoEx/src/svc_email.h @@ -23,8 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define _UINFOEX_SVCEMAIL_H_INCLUDED_ void SvcEMailRebuildMenu(); -void SvcEMailEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB = FALSE); -void SvcEMailOnModulesLoaded(); +bool SvcEMailEnableExtraIcons(bool bEnable = false, bool bUpdateDB = false); void SvcEMailLoadModule(); void SvcEMailUnloadModule(); diff --git a/plugins/UserInfoEx/src/svc_gender.cpp b/plugins/UserInfoEx/src/svc_gender.cpp index ebee43c044..6e2af9cf99 100644 --- a/plugins/UserInfoEx/src/svc_gender.cpp +++ b/plugins/UserInfoEx/src/svc_gender.cpp @@ -28,6 +28,8 @@ static HANDLE ghExtraIconSvc = INVALID_HANDLE_VALUE; static HANDLE hChangedHook = NULL; static HANDLE hApplyIconHook = NULL; +bool g_eiGender = false; + BYTE GenderOf(HANDLE hContact, LPCSTR pszProto) { DBVARIANT dbv; @@ -96,24 +98,6 @@ static int OnContactSettingChanged(HANDLE hContact, DBCONTACTWRITESETTING* pdbcw return 0; } -/*********************************************************************************************************** - * public Module Interface functions - ***********************************************************************************************************/ - -/** - * Force all icons to be reloaded. - * - * @param wParam - handle to the contact whose extra icon is to apply - * @param lParam - not used - **/ - -void SvcGenderApplyCListIcons() -{ - //walk through all the contacts stored in the DB - for (HANDLE hContact = db_find_first(); hContact != NULL; hContact = db_find_next(hContact)) - OnCListApplyIcons(hContact, 0); -} - /** * Enable or disable the replacement of clist extra icons. * @@ -121,14 +105,17 @@ void SvcGenderApplyCListIcons() * @param bUpdateDB - if true the database setting is updated, too. **/ -void SvcGenderEnableExtraIcons(BYTE bColumn, BYTE bUpdateDB) +bool SvcGenderEnableExtraIcons(bool bEnable, bool bUpdateDB) { - bool bEnable = (bColumn!=((BYTE)-1)); + bool bChanged; - if (bUpdateDB) - db_set_b(NULL, MODNAME, SET_CLIST_EXTRAICON_GENDER2, bColumn); + if (bUpdateDB) { + bChanged = g_eiGender != bEnable; + db_set_b(NULL, MODNAME, SET_CLIST_EXTRAICON_GENDER2, bEnable); + } + else bChanged = g_eiGender = db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_GENDER2, 0) != 0; - if (bEnable) { // Gender checked or dropdown select + if (g_eiGender) { // Gender checked or dropdown select if (ghExtraIconSvc == INVALID_HANDLE_VALUE) ghExtraIconSvc = ExtraIcon_Register("gender", LPGEN("Gender (uinfoex)"), ICO_COMMON_MALE); @@ -149,16 +136,7 @@ void SvcGenderEnableExtraIcons(BYTE bColumn, BYTE bUpdateDB) hApplyIconHook = NULL; } } - SvcGenderApplyCListIcons(); -} - -/** -* This function initially loads the module upon startup. -**/ - -void SvcGenderLoadModule() -{ - SvcGenderEnableExtraIcons(db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_GENDER2, 0), FALSE); + return bChanged; } /** diff --git a/plugins/UserInfoEx/src/svc_gender.h b/plugins/UserInfoEx/src/svc_gender.h index 6103f7f7ae..8c7c892ccf 100644 --- a/plugins/UserInfoEx/src/svc_gender.h +++ b/plugins/UserInfoEx/src/svc_gender.h @@ -25,8 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. BYTE GenderOf(HANDLE hContact, LPCSTR pszProto); BYTE GenderOf(HANDLE hContact); -void SvcGenderEnableExtraIcons(BYTE bColumn, BYTE bUpdateDB); -void SvcGenderLoadModule(); +bool SvcGenderEnableExtraIcons(bool bEnable = false, bool bUpdateDB = false); void SvcGenderUnloadModule(); #endif /* _UINFOEX_SVCGENDER_H_INCLUDED_ */ \ No newline at end of file diff --git a/plugins/UserInfoEx/src/svc_homepage.cpp b/plugins/UserInfoEx/src/svc_homepage.cpp index 801855c699..4f411a55d5 100644 --- a/plugins/UserInfoEx/src/svc_homepage.cpp +++ b/plugins/UserInfoEx/src/svc_homepage.cpp @@ -21,12 +21,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" -static HGENMENU ghMenuItem = NULL; -static HANDLE ghExtraIconDef = INVALID_HANDLE_VALUE; -static HANDLE ghExtraIconSvc = INVALID_HANDLE_VALUE; +static HGENMENU ghMenuItem = NULL; +static HANDLE ghExtraIconDef = INVALID_HANDLE_VALUE; +static HANDLE ghExtraIconSvc = INVALID_HANDLE_VALUE; -static HANDLE hChangedHook = NULL; -static HANDLE hApplyIconHook = NULL; +static HANDLE hChangedHook = NULL; +static HANDLE hApplyIconHook = NULL; + +bool g_eiHome = false; /** * This function reads the homepage address of the contact. @@ -160,20 +162,6 @@ void SvcHomepageRebuildMenu() } } -/** -* Force all icons to be reloaded. -* -* @param wParam - handle to the contact whose extra icon is to apply -* @param lParam - not used -**/ - -void SvcHomepageApplyCListIcons() -{ - //walk through all the contacts stored in the DB - for (HANDLE hContact = db_find_first(); hContact != NULL; hContact = db_find_next(hContact)) - OnCListApplyIcons(hContact, 0); -} - /** * Enable or disable the replacement of clist extra icons. * @@ -181,12 +169,17 @@ void SvcHomepageApplyCListIcons() * @param bUpdateDB - if true the database setting is updated, too. **/ -void SvcHomepageEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) +bool SvcHomepageEnableExtraIcons(bool bEnable, bool bUpdateDB) { - if (bUpdateDB) - db_set_b(NULL, MODNAME, SET_CLIST_EXTRAICON_HOMEPAGE, bEnable); + bool bChanged; + + if (bUpdateDB) { + bChanged = g_eiHome != bEnable; + db_set_b(NULL, MODNAME, SET_CLIST_EXTRAICON_HOMEPAGE, g_eiHome = bEnable); + } + else bChanged = g_eiHome = db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_HOMEPAGE, DEFVAL_CLIST_EXTRAICON_HOMEPAGE) != 0; - if (bEnable) { + if (g_eiHome) { // hook events if (hChangedHook == NULL) hChangedHook = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, (MIRANDAHOOK)OnContactSettingChanged); @@ -207,7 +200,7 @@ void SvcHomepageEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) hApplyIconHook = NULL; } } - SvcHomepageApplyCListIcons(); + return bChanged; } /** @@ -220,8 +213,6 @@ void SvcHomepageEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) void SvcHomepageLoadModule() { CreateServiceFunction(MS_USERINFO_HOMEPAGE_OPENURL, MenuCommand); - SvcHomepageEnableExtraIcons( - db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_HOMEPAGE, DEFVAL_CLIST_EXTRAICON_HOMEPAGE), FALSE); } /** diff --git a/plugins/UserInfoEx/src/svc_homepage.h b/plugins/UserInfoEx/src/svc_homepage.h index cdb9f0927a..ba7c826879 100644 --- a/plugins/UserInfoEx/src/svc_homepage.h +++ b/plugins/UserInfoEx/src/svc_homepage.h @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define _UINFOEX_SvcHomepage_H_INCLUDED_ void SvcHomepageRebuildMenu(); -void SvcHomepageEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB = FALSE); +bool SvcHomepageEnableExtraIcons(bool bEnable = false, bool bUpdateDB = false); void SvcHomepageLoadModule(); void SvcHomepageUnloadModule(); diff --git a/plugins/UserInfoEx/src/svc_phone.cpp b/plugins/UserInfoEx/src/svc_phone.cpp index e8b0e8cace..5678ec946f 100644 --- a/plugins/UserInfoEx/src/svc_phone.cpp +++ b/plugins/UserInfoEx/src/svc_phone.cpp @@ -35,6 +35,8 @@ static HANDLE ghExtraIconSvc = INVALID_HANDLE_VALUE; static HANDLE hChangedHook = NULL; static HANDLE hApplyIconHook = NULL; +bool g_eiPhone = false; + /** * This function reads the contact's phone number from database and returns its type. * @@ -117,24 +119,6 @@ static int OnContactSettingChanged(HANDLE hContact, DBCONTACTWRITESETTING* pdbcw return 0; } -/*********************************************************************************************************** - * public Module Interface functions - ***********************************************************************************************************/ - -/** -* Force all icons to be reloaded. -* -* @param wParam - handle to the contact whose extra icon is to apply -* @param lParam - not used -**/ - -void SvcPhoneApplyCListIcons() -{ - //walk through all the contacts stored in the DB - for (HANDLE hContact = db_find_first(); hContact != NULL; hContact = db_find_next(hContact)) - OnCListApplyIcons(hContact, 0); -} - /** * Enable or disable the replacement of clist extra icons. * @@ -142,13 +126,18 @@ void SvcPhoneApplyCListIcons() * @param bUpdateDB - if true the database setting is updated, too. **/ -void SvcPhoneEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) +bool SvcPhoneEnableExtraIcons(bool bEnable, bool bUpdateDB) { - if (bUpdateDB) + bool bChanged; + + if (bUpdateDB) { + bChanged = g_eiPhone != bEnable; db_set_b(NULL, MODNAME, SET_CLIST_EXTRAICON_PHONE, bEnable); + } + else bChanged = g_eiPhone = db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_PHONE, DEFVAL_CLIST_EXTRAICON_PHONE) != 0; // force module enabled, if extraicon plugin was found - if (bEnable) { + if (g_eiPhone) { // hook events if (hChangedHook == NULL) hChangedHook = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, (MIRANDAHOOK)OnContactSettingChanged); @@ -169,16 +158,7 @@ void SvcPhoneEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB) hApplyIconHook = NULL; } } - SvcPhoneApplyCListIcons(); -} - -/** -* This function initially loads the module upon startup. -**/ - -void SvcPhoneLoadModule() -{ - SvcPhoneEnableExtraIcons(db_get_b(NULL, MODNAME, SET_CLIST_EXTRAICON_PHONE, DEFVAL_CLIST_EXTRAICON_PHONE), FALSE); + return bChanged; } /** diff --git a/plugins/UserInfoEx/src/svc_phone.h b/plugins/UserInfoEx/src/svc_phone.h index 7fd00cd16a..e394168020 100644 --- a/plugins/UserInfoEx/src/svc_phone.h +++ b/plugins/UserInfoEx/src/svc_phone.h @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define _UINFOEX_SVCPHONE_H_INCLUDED_ void SvcPhoneApplyCListIcons(); -void SvcPhoneEnableExtraIcons(BYTE bEnable, BYTE bUpdateDB = FALSE); +bool SvcPhoneEnableExtraIcons(bool bEnable = false, bool bUpdateDB = false); void SvcPhoneLoadModule(); void SvcPhoneUnloadModule(); -- cgit v1.2.3