From 96ef0bf6f03191bcf8dfcab8d43627a807eaa0b6 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 9 Dec 2023 15:37:10 +0300 Subject: tabSRMM: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fixes #4000 (Уведомление о пришедшем файле глючит); - unused code removed; - some code cleaning --- plugins/TabSRMM/src/generic_msghandlers.cpp | 23 +++++++++++------------ plugins/TabSRMM/src/globals.cpp | 11 ++++++----- plugins/TabSRMM/src/hotkeyhandler.cpp | 6 ------ plugins/TabSRMM/src/mim.cpp | 8 ++++++-- plugins/TabSRMM/src/msgdialog.cpp | 8 ++------ plugins/TabSRMM/src/msgdlgother.cpp | 17 +++++++++-------- plugins/TabSRMM/src/msgs.h | 6 ++---- 7 files changed, 36 insertions(+), 43 deletions(-) (limited to 'plugins/TabSRMM/src') diff --git a/plugins/TabSRMM/src/generic_msghandlers.cpp b/plugins/TabSRMM/src/generic_msghandlers.cpp index 1fd5be9ee4..6a23ee654a 100644 --- a/plugins/TabSRMM/src/generic_msghandlers.cpp +++ b/plugins/TabSRMM/src/generic_msghandlers.cpp @@ -627,33 +627,32 @@ void CMsgDialog::DM_UpdateLastMessage() const if (m_pContainer->m_hwndStatus == nullptr || m_pContainer->m_hwndActive != m_hwnd) return; - wchar_t szBuf[100]; + HICON hIcon = 0; + CMStringW szBuf; + if (m_bShowTyping) { - SendMessage(m_pContainer->m_hwndStatus, SB_SETICON, 0, (LPARAM)PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]); - mir_snwprintf(szBuf, TranslateT("%s is typing a message..."), m_cache->getNick()); + hIcon = PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]; + szBuf.Format(TranslateT("%s is typing a message..."), m_cache->getNick()); } else if (m_bStatusSet) { - SendMessage(m_pContainer->m_hwndStatus, SB_SETICON, 0, (LPARAM)m_szStatusIcon); - SendMessage(m_pContainer->m_hwndStatus, SB_SETTEXT, 0, (LPARAM)m_szStatusText.c_str()); - return; + hIcon = m_szStatusIcon; + szBuf = m_szStatusText; } else { - SendMessage(m_pContainer->m_hwndStatus, SB_SETICON, 0, 0); - if (m_pContainer->cfg.flags.m_bUinStatusBar) - mir_snwprintf(szBuf, L"UID: %s", m_cache->getUIN()); + szBuf.Format(L"UID: %s", m_cache->getUIN()); else if (m_lastMessage) { wchar_t date[64], time[64]; TimeZone_PrintTimeStamp(nullptr, m_lastMessage, L"d", date, _countof(date), 0); if (m_pContainer->cfg.flags.m_bUinStatusBar && mir_wstrlen(date) > 6) date[mir_wstrlen(date) - 5] = 0; TimeZone_PrintTimeStamp(nullptr, m_lastMessage, L"t", time, _countof(time), 0); - mir_snwprintf(szBuf, TranslateT("Last received: %s at %s"), date, time); + szBuf.Format(TranslateT("Last received: %s at %s"), date, time); } - else szBuf[0] = 0; } - SendMessage(m_pContainer->m_hwndStatus, SB_SETTEXT, 0, (LPARAM)szBuf); + SendMessage(m_pContainer->m_hwndStatus, SB_SETICON, 0, (LPARAM)hIcon); + SendMessage(m_pContainer->m_hwndStatus, SB_SETTEXT, 0, (LPARAM)szBuf.c_str()); } ///////////////////////////////////////////////////////////////////////////////////////// diff --git a/plugins/TabSRMM/src/globals.cpp b/plugins/TabSRMM/src/globals.cpp index 0af46fc489..8c11830517 100644 --- a/plugins/TabSRMM/src/globals.cpp +++ b/plugins/TabSRMM/src/globals.cpp @@ -446,18 +446,19 @@ void CGlobals::RestoreUnreadMessageAlerts(void) OBJLIST arEvents(10, NumericKeySortT); for (auto &hContact : Contacts()) { + if (Proto_GetBaseAccountName(hContact) == nullptr) + continue; + if (db_get_dw(hContact, "SendLater", "count", 0)) SendLater::addContact(hContact); if (!Contact::IsGroupChat(hContact)) { for (MEVENT hDbEvent = db_event_firstUnread(hContact); hDbEvent; hDbEvent = db_event_next(hContact, hDbEvent)) { - DBEVENTINFO dbei = {}; - if (db_event_get(hDbEvent, &dbei)) - continue; - if (Proto_GetBaseAccountName(hContact) == nullptr) + DB::EventInfo dbei(hDbEvent); + if (!dbei) continue; - if (!dbei.markedRead() && dbei.eventType == EVENTTYPE_MESSAGE) + if (!dbei.markedRead() && dbei.isAlertable()) if (!Srmm_FindWindow(hContact)) arEvents.insert(new MSavedEvent(hContact, hDbEvent)); } diff --git a/plugins/TabSRMM/src/hotkeyhandler.cpp b/plugins/TabSRMM/src/hotkeyhandler.cpp index 591cf73423..a4926e4cdf 100644 --- a/plugins/TabSRMM/src/hotkeyhandler.cpp +++ b/plugins/TabSRMM/src/hotkeyhandler.cpp @@ -257,12 +257,6 @@ LONG_PTR CALLBACK HotkeyHandlerDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LP mir_free((void*)lParam); return 0; - case DM_REMOVECLISTEVENT: - // sent from the popup to "dismiss" the event. we should do this in the main thread - Clist_RemoveEvent(wParam, lParam); - db_event_markRead(wParam, lParam); - return 0; - case WM_DWMCOMPOSITIONCHANGED: // react to changes in the desktop composition state // (enable/disable DWM, change to a non-aero visual style diff --git a/plugins/TabSRMM/src/mim.cpp b/plugins/TabSRMM/src/mim.cpp index 78d7a798b2..aa27a13640 100644 --- a/plugins/TabSRMM/src/mim.cpp +++ b/plugins/TabSRMM/src/mim.cpp @@ -373,7 +373,7 @@ int CMimAPI::MessageEventAdded(WPARAM hContact, LPARAM hDbEvent) if (hContact == 0 || Contact::IsGroupChat(hContact)) return 0; - DB::EventInfo dbei(hDbEvent, false); + DB::EventInfo dbei(hDbEvent); auto *pDlg = Srmm_FindDialog(hContact); if (pDlg == nullptr) @@ -427,8 +427,12 @@ int CMimAPI::MessageEventAdded(WPARAM hContact, LPARAM hDbEvent) switch (dbei.eventType) { case EVENTTYPE_AUTHREQUEST: case EVENTTYPE_ADDED: - case EVENTTYPE_FILE: return 0; + + case EVENTTYPE_FILE: + DB::FILE_BLOB blob(dbei); + if (!blob.isOffline()) + return 0; } } diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index 767d297df5..8af50246c9 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -624,9 +624,9 @@ bool CMsgDialog::OnInitDialog() timerFlash.Start(TIMEOUT_FLASHWND); m_bCanFlashTab = true; - DBEVENTINFO dbei = {}; + DB::EventInfo dbei; dbei.eventType = EVENTTYPE_MESSAGE; - FlashOnClist(m_hDbEventFirst, &dbei); + FlashOnClist(m_hDbEventFirst, dbei); if (!isChat()) m_pContainer->SetIcon(this, Skin_LoadIcon(SKINICON_EVENT_MESSAGE)); @@ -2429,10 +2429,6 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) } return 0; - case DM_UPDATELASTMESSAGE: - DM_UpdateLastMessage(); - return 0; - case DM_SAVESIZE: if (m_bNeedCheckSize) lParam = 0; diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index 0060ac5a0c..bfda8bb78f 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -548,13 +548,14 @@ void CMsgDialog::EventAdded(MEVENT hDbEvent, const DB::EventInfo &dbei) if (m_hDbEventFirst == 0) m_hDbEventFirst = hDbEvent; + bool bAlertable = dbei.isAlertable(); bool bIsStatusChangeEvent = IsStatusEvent(dbei.eventType); - bool bDisableNotify = (dbei.eventType == EVENTTYPE_MESSAGE && (dbei.flags & DBEF_READ)); + bool bDisableNotify = (bAlertable && (dbei.flags & DBEF_READ)); if (!DbEventIsShown(dbei)) return; - if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & (DBEF_SENT))) { + if (bAlertable && !(dbei.flags & DBEF_SENT)) { m_lastMessage = dbei.timestamp; m_wszStatusBar[0] = 0; if (m_bShowTyping) { @@ -564,7 +565,7 @@ void CMsgDialog::EventAdded(MEVENT hDbEvent, const DB::EventInfo &dbei) } HandleIconFeedback(this, (HICON)-1); if (m_pContainer->m_hwndStatus) - PostMessage(m_hwnd, DM_UPDATELASTMESSAGE, 0, 0); + DM_UpdateLastMessage(); } // set the message log divider to mark new (maybe unseen) messages, if the container has @@ -611,7 +612,7 @@ void CMsgDialog::EventAdded(MEVENT hDbEvent, const DB::EventInfo &dbei) // try to flash the contact list... if (!bDisableNotify) - FlashOnClist(hDbEvent, &dbei); + FlashOnClist(hDbEvent, dbei); // autoswitch tab if option is set AND container is minimized (otherwise, we never autoswitch) // never switch for status changes... @@ -640,7 +641,7 @@ void CMsgDialog::EventAdded(MEVENT hDbEvent, const DB::EventInfo &dbei) } // play a sound - if (!bDisableNotify && dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & (DBEF_SENT))) + if (!bDisableNotify && bAlertable && !(dbei.flags & DBEF_SENT)) PlayIncomingSound(); if (m_pWnd) @@ -734,11 +735,11 @@ int CMsgDialog::FindRTLLocale() ///////////////////////////////////////////////////////////////////////////////////////// -void CMsgDialog::FlashOnClist(MEVENT hEvent, const DBEVENTINFO *dbei) +void CMsgDialog::FlashOnClist(MEVENT hEvent, const DB::EventInfo &dbei) { m_dwTickLastEvent = GetTickCount(); - if ((GetForegroundWindow() != m_pContainer->m_hwnd || m_pContainer->m_hwndActive != m_hwnd) && !(dbei->flags & DBEF_SENT) && dbei->eventType == EVENTTYPE_MESSAGE) { + if ((GetForegroundWindow() != m_pContainer->m_hwnd || m_pContainer->m_hwndActive != m_hwnd) && !(dbei.flags & DBEF_SENT) && dbei.eventType == EVENTTYPE_MESSAGE) { m_dwUnread++; AddUnreadContact(m_hContact); } @@ -749,7 +750,7 @@ void CMsgDialog::FlashOnClist(MEVENT hEvent, const DBEVENTINFO *dbei) if (!g_plugin.bFlashOnClist || isChat()) return; - if ((GetForegroundWindow() != m_pContainer->m_hwnd || m_pContainer->m_hwndActive != m_hwnd) && !(dbei->flags & DBEF_SENT) && dbei->eventType == EVENTTYPE_MESSAGE && !m_bFlashClist) { + if ((GetForegroundWindow() != m_pContainer->m_hwnd || m_pContainer->m_hwndActive != m_hwnd) && !(dbei.flags & DBEF_SENT) && dbei.eventType == EVENTTYPE_MESSAGE && !m_bFlashClist) { for (int i = 0;; i++) { auto *cle = Clist_GetEvent(m_hContact, i); if (cle == nullptr) diff --git a/plugins/TabSRMM/src/msgs.h b/plugins/TabSRMM/src/msgs.h index 79c2d3c554..efb5a3e56d 100644 --- a/plugins/TabSRMM/src/msgs.h +++ b/plugins/TabSRMM/src/msgs.h @@ -74,7 +74,6 @@ #define DM_OPTIONSAPPLIED (TM_USER+14) #define DM_SPLITSENDACK (TM_USER+19) #define DM_UPDATEWINICON (TM_USER+21) -#define DM_UPDATELASTMESSAGE (TM_USER+22) #define DM_STATUSICONCHANGE (TM_USER+25) #define DM_CREATECONTAINER (TM_USER+26) @@ -95,7 +94,6 @@ #define DM_CHECKQUEUEFORCLOSE (TM_USER+70) #define DM_CHECKAUTOHIDE (TM_USER+71) #define DM_HANDLECLISTEVENT (TM_USER+73) -#define DM_REMOVECLISTEVENT (TM_USER+75) #define DM_DOCREATETAB (TM_USER+77) #define DM_SMILEYOPTIONSCHANGED (TM_USER+85) #define DM_MYAVATARCHANGED (TM_USER+86) @@ -418,7 +416,7 @@ class CMsgDialog : public CSrmmBaseDialog void DetermineMinHeight(void); BOOL DoRtfToTags(CMStringW &pszText) const; int FindRTLLocale(void); - void FlashOnClist(MEVENT hEvent, const DBEVENTINFO *dbei); + void FlashOnClist(MEVENT hEvent, const DB::EventInfo &dbei); void FlashTab(bool bInvertMode); LRESULT GetSendButtonState(); void GetSendFormat(void); @@ -622,7 +620,7 @@ public: m_nTypeSecs = 0; m_bShowTyping = 0; m_wszStatusBar[0] = 0; - PostMessage(m_hwnd, DM_UPDATELASTMESSAGE, 0, 0); + DM_UpdateLastMessage(); } __forceinline CLogWindow* LOG() { -- cgit v1.2.3