From cf91db5000d4f11745e2fe8bb6e7f5c6c6ba162a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 15 Mar 2023 18:08:51 +0300 Subject: SRMM: common code exctracted to a Srmm_AddEvent() function --- include/m_srmm_int.h | 4 ++++ libs/win32/mir_app.lib | Bin 238528 -> 238768 bytes libs/win64/mir_app.lib | Bin 235466 -> 235706 bytes plugins/Scriver/src/msgs.cpp | 32 +++++--------------------------- plugins/TabSRMM/src/container.cpp | 13 +------------ plugins/TabSRMM/src/globals.cpp | 16 ++-------------- plugins/TabSRMM/src/mim.cpp | 14 ++------------ src/core/stdmsg/src/msgs.cpp | 32 +++++--------------------------- src/mir_app/src/mir_app.def | 1 + src/mir_app/src/mir_app64.def | 1 + src/mir_app/src/srmm_util.cpp | 17 +++++++++++++++++ 11 files changed, 38 insertions(+), 92 deletions(-) diff --git a/include/m_srmm_int.h b/include/m_srmm_int.h index 2ba5f5cc00..ad53c773f3 100644 --- a/include/m_srmm_int.h +++ b/include/m_srmm_int.h @@ -286,6 +286,10 @@ class CMsgDialog : public CSrmmBaseDialog {}; EXTERN_C MIR_APP_DLL(DWORD) CALLBACK Srmm_LogStreamCallback(DWORD_PTR dwCookie, uint8_t *pbBuff, LONG cb, LONG *pcb); #endif +///////////////////////////////////////////////////////////////////////////////////////// + +MIR_APP_DLL(void) Srmm_AddEvent(MCONTACT hContact, MEVENT hDbEvent); + ///////////////////////////////////////////////////////////////////////////////////////// // sends a message to all SRMM windows diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib index 4cf5bfb4d5..13d274f01f 100644 Binary files a/libs/win32/mir_app.lib and b/libs/win32/mir_app.lib differ diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib index ba6e0366a5..9fe3b3ff22 100644 Binary files a/libs/win64/mir_app.lib and b/libs/win64/mir_app.lib differ diff --git a/plugins/Scriver/src/msgs.cpp b/plugins/Scriver/src/msgs.cpp index e939a1c69e..8302c903ce 100644 --- a/plugins/Scriver/src/msgs.cpp +++ b/plugins/Scriver/src/msgs.cpp @@ -108,19 +108,9 @@ static int MessageEventAdded(WPARAM hContact, LPARAM hDbEvent) } } - if (hwnd == nullptr || !IsWindowVisible(GetParent(hwnd))) { - wchar_t toolTip[256]; - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(hContact)); - - CLISTEVENT cle = {}; - cle.flags = CLEF_UNICODE; - cle.hContact = hContact; - cle.hDbEvent = hDbEvent; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.szTooltip.w = toolTip; - g_clistApi.pfnAddEvent(&cle); - } + if (hwnd == nullptr || !IsWindowVisible(GetParent(hwnd))) + Srmm_AddEvent(hContact, hDbEvent); + return 0; } @@ -263,20 +253,8 @@ static void RestoreUnreadMessageAlerts(void) } } - wchar_t toolTip[256]; - - CLISTEVENT cle = {}; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.flags = CLEF_UNICODE; - cle.szTooltip.w = toolTip; - - for (auto &e : arEvents) { - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(e->hContact)); - cle.hContact = e->hContact; - cle.hDbEvent = e->hEvent; - g_clistApi.pfnAddEvent(&cle); - } + for (auto &e : arEvents) + Srmm_AddEvent(e->hContact, e->hEvent); } void CMsgDialog::SetStatusText(const wchar_t *wszText, HICON hIcon) diff --git a/plugins/TabSRMM/src/container.cpp b/plugins/TabSRMM/src/container.cpp index 2c6c218631..2d64f9f681 100644 --- a/plugins/TabSRMM/src/container.cpp +++ b/plugins/TabSRMM/src/container.cpp @@ -2346,18 +2346,7 @@ void TSAPI AutoCreateWindow(MCONTACT hContact, MEVENT hDbEvent) if (!(dbei.flags & DBEF_READ)) { AddUnreadContact(hContact); - - wchar_t toolTip[256]; - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(hContact)); - - CLISTEVENT cle = {}; - cle.hContact = hContact; - cle.hDbEvent = hDbEvent; - cle.flags = CLEF_UNICODE; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.szTooltip.w = toolTip; - g_clistApi.pfnAddEvent(&cle); + Srmm_AddEvent(hContact, hDbEvent); } } diff --git a/plugins/TabSRMM/src/globals.cpp b/plugins/TabSRMM/src/globals.cpp index 397e829dc1..7c7a649412 100644 --- a/plugins/TabSRMM/src/globals.cpp +++ b/plugins/TabSRMM/src/globals.cpp @@ -455,20 +455,8 @@ void CGlobals::RestoreUnreadMessageAlerts(void) } } - wchar_t toolTip[256]; - - CLISTEVENT cle = {}; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.flags = CLEF_UNICODE; - cle.szTooltip.w = toolTip; - - for (auto &e : arEvents) { - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(e->hContact)); - cle.hContact = e->hContact; - cle.hDbEvent = e->hEvent; - g_clistApi.pfnAddEvent(&cle); - } + for (auto &e : arEvents) + Srmm_AddEvent(e->hContact, e->hEvent); } void CGlobals::logStatusChange(WPARAM wParam, const CContactCache *c) diff --git a/plugins/TabSRMM/src/mim.cpp b/plugins/TabSRMM/src/mim.cpp index 7412bd0474..434472f9b3 100644 --- a/plugins/TabSRMM/src/mim.cpp +++ b/plugins/TabSRMM/src/mim.cpp @@ -286,6 +286,7 @@ int CMimAPI::TypingMessage(WPARAM hContact, LPARAM nSecs) if (nSecs) { wchar_t szTip[256]; mir_snwprintf(szTip, TranslateT("%s is typing a message"), Clist_GetContactDisplayName(hContact)); + if (fShowOnClist && g_plugin.getByte("ShowTypingBalloon", 0)) Clist_TrayNotifyW(nullptr, TranslateT("Typing notification"), szTip, NIIF_INFO, 1000 * 4); @@ -446,18 +447,7 @@ nowindowcreate: // the contact list for flashing if (!(dbei.flags & DBEF_READ)) { AddUnreadContact(hContact); - - wchar_t toolTip[256]; - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(hContact)); - - CLISTEVENT cle = {}; - cle.hContact = hContact; - cle.hDbEvent = hDbEvent; - cle.flags = CLEF_UNICODE; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.szTooltip.w = toolTip; - g_clistApi.pfnAddEvent(&cle); + Srmm_AddEvent(hContact, hDbEvent); } return 0; } diff --git a/src/core/stdmsg/src/msgs.cpp b/src/core/stdmsg/src/msgs.cpp index 121856ce37..d2b21d2173 100644 --- a/src/core/stdmsg/src/msgs.cpp +++ b/src/core/stdmsg/src/msgs.cpp @@ -65,13 +65,13 @@ static int SRMMStatusToPf2(int status) return 0; } -static int MessageEventAdded(WPARAM hContact, LPARAM lParam) +static int MessageEventAdded(WPARAM hContact, LPARAM hDbEvent) { if (hContact == 0 || Contact::IsGroupChat(hContact)) return 0; DBEVENTINFO dbei = {}; - if (db_event_get(lParam, &dbei)) + if (db_event_get(hDbEvent, &dbei)) return 0; if (dbei.flags & (DBEF_SENT | DBEF_READ) || !(dbei.eventType == EVENTTYPE_MESSAGE || DbEventIsForMsgWindow(&dbei))) @@ -105,17 +105,7 @@ static int MessageEventAdded(WPARAM hContact, LPARAM lParam) } } - wchar_t toolTip[256]; - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(hContact)); - - CLISTEVENT cle = {}; - cle.hContact = hContact; - cle.hDbEvent = lParam; - cle.flags = CLEF_UNICODE; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.szTooltip.w = toolTip; - g_clistApi.pfnAddEvent(&cle); + Srmm_AddEvent(hContact, hDbEvent); return 0; } @@ -283,20 +273,8 @@ static void RestoreUnreadMessageAlerts(void) } } - wchar_t toolTip[256]; - - CLISTEVENT cle = {}; - cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = MS_MSG_READMESSAGE; - cle.flags = CLEF_UNICODE; - cle.szTooltip.w = toolTip; - - for (auto &e : arEvents) { - mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(e->hContact)); - cle.hContact = e->hContact; - cle.hDbEvent = e->hEvent; - g_clistApi.pfnAddEvent(&cle); - } + for (auto &e : arEvents) + Srmm_AddEvent(e->hContact, e->hEvent); } void RegisterSRMMFonts(void); diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index e994cf236b..d662635947 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -824,3 +824,4 @@ Srmm_CreateHotkey @886 NONAME ?getMStringU@PROTO_INTERFACE@@QAE?AV?$CMStringT@DV?$ChTraitsCRT@D@@@@PBD0@Z @939 NONAME ?OnEventDeleted@PROTO_INTERFACE@@UAEXII@Z @940 NONAME Chat_IsMuted @941 NONAME +?Srmm_AddEvent@@YGXII@Z @942 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index c953a52884..e88cb7f181 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -824,3 +824,4 @@ Srmm_CreateHotkey @886 NONAME ?getMStringU@PROTO_INTERFACE@@QEAA?AV?$CMStringT@DV?$ChTraitsCRT@D@@@@PEBD0@Z @939 NONAME ?OnEventDeleted@PROTO_INTERFACE@@UEAAXII@Z @940 NONAME Chat_IsMuted @941 NONAME +?Srmm_AddEvent@@YAXII@Z @942 NONAME diff --git a/src/mir_app/src/srmm_util.cpp b/src/mir_app/src/srmm_util.cpp index 080ff4ae5d..a6750fd86b 100644 --- a/src/mir_app/src/srmm_util.cpp +++ b/src/mir_app/src/srmm_util.cpp @@ -114,6 +114,23 @@ MIR_APP_DLL(CMsgDialog*) Srmm_FindDialog(MCONTACT hContact) return (hwnd) ? (CMsgDialog *)GetWindowLongPtr(hwnd, GWLP_USERDATA) : nullptr; } +///////////////////////////////////////////////////////////////////////////////////////// + +MIR_APP_DLL(void) Srmm_AddEvent(MCONTACT hContact, MEVENT hDbEvent) +{ + wchar_t toolTip[256]; + mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(hContact)); + + CLISTEVENT cle = {}; + cle.hContact = hContact; + cle.hDbEvent = hDbEvent; + cle.flags = CLEF_UNICODE; + cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); + cle.pszService = MS_MSG_READMESSAGE; + cle.szTooltip.w = toolTip; + g_clistApi.pfnAddEvent(&cle); +} + ///////////////////////////////////////////////////////////////////////////////////////// // serializes all thread-unsafe operation to the first thread -- cgit v1.2.3