From 15c49e3fc4cf033fffbf79e9f68a0405d5a95d14 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 26 Sep 2019 22:15:57 +0300 Subject: Clist_IsHidden / Clist_HideContact - two helpers to hide CList/Hidden variable and unify access to it --- src/core/stduseronline/src/useronline.cpp | 2 +- src/mir_app/src/chat_manager.cpp | 2 +- src/mir_app/src/chat_tools.cpp | 4 ++-- src/mir_app/src/clc.cpp | 4 ++-- src/mir_app/src/clcitems.cpp | 2 +- src/mir_app/src/clcutils.cpp | 15 +++++++++++++++ src/mir_app/src/clistsettings.cpp | 4 ++-- src/mir_app/src/clui.cpp | 2 +- src/mir_app/src/contact.cpp | 2 +- src/mir_app/src/ignore.cpp | 12 +++++------- src/mir_app/src/meta_menu.cpp | 4 ++-- src/mir_app/src/meta_utils.cpp | 2 +- src/mir_app/src/mir_app.def | 2 ++ src/mir_app/src/mir_app64.def | 2 ++ 14 files changed, 38 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/core/stduseronline/src/useronline.cpp b/src/core/stduseronline/src/useronline.cpp index 1c3a6d3640..ea74f3ed2b 100644 --- a/src/core/stduseronline/src/useronline.cpp +++ b/src/core/stduseronline/src/useronline.cpp @@ -36,7 +36,7 @@ static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam) int oldStatus = g_plugin.getWord(hContact, "OldStatus", ID_STATUS_OFFLINE); g_plugin.setWord(hContact, "OldStatus", (WORD)newStatus); if (CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; - if (db_get_b(hContact, "CList", "Hidden", 0)) return 0; + if (Clist_IsHidden(hContact)) return 0; if (newStatus == ID_STATUS_OFFLINE && oldStatus != ID_STATUS_OFFLINE) { // Remove the event from the queue if it exists since they are now offline MEVENT lastEvent = g_plugin.getDword(hContact, "LastEvent"); diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index 879bf83780..913615bee5 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -326,7 +326,7 @@ BOOL SM_SetStatus(const char *pszModule, SESSION_INFO *si, int wStatus) si->wStatus = wStatus; if (si->hContact) { if (si->iType != GCW_SERVER && wStatus != ID_STATUS_OFFLINE) - db_unset(si->hContact, "CList", "Hidden"); + Clist_HideContact(si->hContact, false); db_set_w(si->hContact, si->pszModule, "Status", (WORD)wStatus); } diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp index d04c2e0d00..94ba775092 100644 --- a/src/mir_app/src/chat_tools.cpp +++ b/src/mir_app/src/chat_tools.cpp @@ -293,8 +293,8 @@ BOOL DoSoundsFlashPopupTrayStuff(SESSION_INFO *si, GCEVENT *gce, BOOL bHighlight gce->iType |= GC_EVENT_HIGHLIGHT; if (bInactive || !g_Settings->bSoundsFocus) Skin_PlaySound("ChatHighlight"); - if (db_get_b(si->hContact, "CList", "Hidden", 0) != 0) - db_unset(si->hContact, "CList", "Hidden"); + if (Clist_IsHidden(si->hContact)) + Clist_HideContact(si->hContact, false); if (bInactive) g_chatApi.DoTrayIcon(si, gce); if (bInactive || !g_Settings->bPopupInactiveOnly) diff --git a/src/mir_app/src/clc.cpp b/src/mir_app/src/clc.cpp index 166a27793a..10625482ce 100644 --- a/src/mir_app/src/clc.cpp +++ b/src/mir_app/src/clc.cpp @@ -452,7 +452,7 @@ LRESULT CALLBACK fnContactListControlWndProc(HWND hwnd, UINT uMsg, WPARAM wParam flags = contact->flags; } Clist_DeleteItemFromTree(hwnd, wParam); - if (GetWindowLongPtr(hwnd, GWL_STYLE) & CLS_SHOWHIDDEN || !db_get_b(wParam, "CList", "Hidden", 0)) { + if (GetWindowLongPtr(hwnd, GWL_STYLE) & CLS_SHOWHIDDEN || !Clist_IsHidden(wParam)) { NMCLISTCONTROL nm; g_clistApi.pfnAddContactToTree(hwnd, dat, wParam, 1, 1); if (Clist_FindItem(hwnd, dat, wParam, &contact)) { @@ -486,7 +486,7 @@ LRESULT CALLBACK fnContactListControlWndProc(HWND hwnd, UINT uMsg, WPARAM wParam // this means an offline msg is flashing, so the contact should be shown DWORD style = GetWindowLongPtr(hwnd, GWL_STYLE); - int shouldShow = (style & CLS_SHOWHIDDEN || !db_get_b(wParam, "CList", "Hidden", 0)) + int shouldShow = (style & CLS_SHOWHIDDEN || !Clist_IsHidden(wParam)) && (!Clist_IsHiddenMode(dat, status) || Clist_GetContactIcon(wParam) != lParam); contact = nullptr; diff --git a/src/mir_app/src/clcitems.cpp b/src/mir_app/src/clcitems.cpp index 4dba92786a..262ddf04f1 100644 --- a/src/mir_app/src/clcitems.cpp +++ b/src/mir_app/src/clcitems.cpp @@ -342,7 +342,7 @@ MIR_APP_DLL(void) Clist_DeleteItemFromTree(HWND hwnd, MCONTACT hItem) int fnGetContactHiddenStatus(MCONTACT hContact, char*, ClcData*) { - return db_get_b(hContact, "CList", "Hidden", 0); + return Clist_IsHidden(hContact); } void fnRebuildEntireList(HWND hwnd, ClcData *dat) diff --git a/src/mir_app/src/clcutils.cpp b/src/mir_app/src/clcutils.cpp index cd26b13f54..6573897669 100644 --- a/src/mir_app/src/clcutils.cpp +++ b/src/mir_app/src/clcutils.cpp @@ -860,6 +860,21 @@ MIR_APP_DLL(void) Clist_InvalidateItem(HWND hwnd, ClcData *dat, int iItem) g_clistApi.pfnInvalidateRect(hwnd, &rc, FALSE); } +/////////////////////////////////////////////////////////////////////////////// + +MIR_APP_DLL(bool) Clist_IsHidden(MCONTACT hContact) +{ + return db_get_b(hContact, "CList", "Hidden", 0) != 0; +} + +MIR_APP_DLL(void) Clist_HideContact(MCONTACT hContact, bool bHidden) +{ + if (bHidden) + db_set_b(hContact, "CList", "Hidden", 1); + else + db_unset(hContact, "CList", "Hidden"); +} + /////////////////////////////////////////////////////////////////////////////// // row coord functions diff --git a/src/mir_app/src/clistsettings.cpp b/src/mir_app/src/clistsettings.cpp index 9a6c18a7b2..c02de30401 100644 --- a/src/mir_app/src/clistsettings.cpp +++ b/src/mir_app/src/clistsettings.cpp @@ -69,7 +69,7 @@ void fnCheckCacheItem(ClcCacheEntry *p) p->szProto = GetContactProto(p->hContact); if (p->bIsHidden == -1) - p->bIsHidden = db_get_b(p->hContact, "CList", "Hidden", 0); + p->bIsHidden = Clist_IsHidden(p->hContact); } void fnFreeCacheItem(ClcCacheEntry *p) @@ -203,7 +203,7 @@ int ContactSettingChanged(WPARAM hContact, LPARAM lParam) g_clistApi.pfnCheckCacheItem(pdnce); } else if (!strcmp(cws->szSetting, "Status")) { - if (!db_get_b(hContact, "CList", "Hidden", 0)) + if (!Clist_IsHidden(hContact)) Clist_ChangeContactIcon(hContact, g_clistApi.pfnIconFromStatusMode(cws->szModule, cws->value.wVal, hContact)); } } diff --git a/src/mir_app/src/clui.cpp b/src/mir_app/src/clui.cpp index 84918f548f..b8e2ba2a9d 100644 --- a/src/mir_app/src/clui.cpp +++ b/src/mir_app/src/clui.cpp @@ -203,7 +203,7 @@ static INT_PTR MenuItem_DeleteContact(WPARAM wParam, LPARAM lParam) switch (action) { case IDC_HIDE: // Archive contact - db_set_b(wParam, "CList", "Hidden", 1); + Clist_HideContact(wParam); break; case IDYES: // Delete contact diff --git a/src/mir_app/src/contact.cpp b/src/mir_app/src/contact.cpp index 3ea5b151af..0daf98592f 100644 --- a/src/mir_app/src/contact.cpp +++ b/src/mir_app/src/contact.cpp @@ -32,7 +32,7 @@ MIR_APP_DLL(void) Clist_LoadContactTree(void) int hideOffline = db_get_b(0, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT); for (auto &hContact : Contacts()) { int status = Contact_GetStatus(hContact); - if ((!hideOffline || status != ID_STATUS_OFFLINE) && !db_get_b(hContact, "CList", "Hidden", 0)) + if ((!hideOffline || status != ID_STATUS_OFFLINE) && !Clist_IsHidden(hContact)) Clist_ChangeContactIcon(hContact, g_clistApi.pfnIconFromStatusMode(GetContactProto(hContact), status, hContact)); } Clist_EndRebuild(); diff --git a/src/mir_app/src/ignore.cpp b/src/mir_app/src/ignore.cpp index 82a3772d17..231e4d5a0f 100644 --- a/src/mir_app/src/ignore.cpp +++ b/src/mir_app/src/ignore.cpp @@ -38,7 +38,7 @@ static DWORD GetMask(MCONTACT hContact) if (hContact == 0) mask = 0; else { - if (db_get_b(hContact, "CList", "Hidden", 0) || db_get_b(hContact, "CList", "NotOnList", 0)) + if (Clist_IsHidden(hContact) || db_get_b(hContact, "CList", "NotOnList", 0)) mask = db_get_dw(0, "Ignore", "Mask1", 0); else mask = db_get_dw(0, "Ignore", "Default1", 0); @@ -192,7 +192,7 @@ static void SetAllContactIcons(HWND hwndList) } else proto1Caps = proto4Caps = 0; InitialiseItem(hwndList, hContact, hItem, proto1Caps, proto4Caps); - if (!db_get_b(hContact, "CList", "Hidden", 0)) + if (!Clist_IsHidden(hContact)) SendMessage(hwndList, CLM_SETCHECKMARK, (WPARAM)hItem, 1); } } @@ -304,11 +304,9 @@ static INT_PTR CALLBACK DlgProcIgnoreOpts(HWND hwndDlg, UINT msg, WPARAM, LPARAM case PSN_APPLY: for (auto &hContact : Contacts()) { HANDLE hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_FINDCONTACT, hContact, 0); - if (hItem) SaveItemMask(GetDlgItem(hwndDlg, IDC_LIST), hContact, hItem, "Mask1"); - if (SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETCHECKMARK, (WPARAM)hItem, 0)) - db_unset(hContact, "CList", "Hidden"); - else - db_set_b(hContact, "CList", "Hidden", 1); + if (hItem) + SaveItemMask(GetDlgItem(hwndDlg, IDC_LIST), hContact, hItem, "Mask1"); + Clist_HideContact(hContact, !SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETCHECKMARK, (WPARAM)hItem, 0)); } SaveItemMask(GetDlgItem(hwndDlg, IDC_LIST), 0, hItemAll, "Default1"); diff --git a/src/mir_app/src/meta_menu.cpp b/src/mir_app/src/meta_menu.cpp index bdc340e79d..5d9a53e492 100644 --- a/src/mir_app/src/meta_menu.cpp +++ b/src/mir_app/src/meta_menu.cpp @@ -79,7 +79,7 @@ INT_PTR Meta_Convert(WPARAM wParam, LPARAM) // hide the contact if clist groups disabled (shouldn't create one anyway since menus disabled) if (!db_mc_isEnabled()) - db_set_b(hMetaContact, "CList", "Hidden", 1); + Clist_HideContact(hMetaContact); return hMetaContact; } @@ -96,7 +96,7 @@ void Meta_RemoveContactNumber(DBCachedContact *ccMeta, int number, bool bUpdateI DBCachedContact *ccSub = currDb->getCache()->GetCachedContact(Meta_GetContactHandle(ccMeta, number)); if (ccSub != nullptr) { if (ccSub->parentID == ccMeta->contactID) { - db_unset(ccSub->contactID, "CList", "Hidden"); + Clist_HideContact(ccSub->contactID, false); // stop ignoring, if we were if (g_metaOptions.bSuppressStatus) diff --git a/src/mir_app/src/meta_utils.cpp b/src/mir_app/src/meta_utils.cpp index 75e02fa608..7d0cee5982 100644 --- a/src/mir_app/src/meta_utils.cpp +++ b/src/mir_app/src/meta_utils.cpp @@ -400,7 +400,7 @@ int Meta_HideMetaContacts(bool bHide) else continue; - db_set_b(hContact, "CList", "Hidden", bSet); + Clist_HideContact(hContact, bSet); } if (bHide) { diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index e040deddea..8a0d8aaa07 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -365,6 +365,8 @@ Chat_UpdateOptions @418 NONAME ?onDblClick_List@CSrmmBaseDialog@@IAEXPAVCCtrlListBox@@@Z @440 NONAME ?OnDestroy@CSrmmBaseDialog@@MAEXXZ @441 NONAME Chat_AddMenuItems @442 NONAME +Clist_IsHidden @443 +Clist_HideContact @444 Chat_DoEventHook @445 NONAME _stubLogProc@16 @446 NONAME _stubMessageProc@16 @447 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 050bc63a1c..d302dbff59 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -365,6 +365,8 @@ Chat_UpdateOptions @418 NONAME ?onDblClick_List@CSrmmBaseDialog@@IEAAXPEAVCCtrlListBox@@@Z @440 NONAME ?OnDestroy@CSrmmBaseDialog@@MEAAXXZ @441 NONAME Chat_AddMenuItems @442 NONAME +Clist_IsHidden @443 +Clist_HideContact @444 Chat_DoEventHook @445 NONAME stubLogProc @446 NONAME stubMessageProc @447 NONAME -- cgit v1.2.3