diff options
author | George Hazan <george.hazan@gmail.com> | 2023-12-09 15:37:10 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-12-09 15:37:10 +0300 |
commit | 96ef0bf6f03191bcf8dfcab8d43627a807eaa0b6 (patch) | |
tree | 826e060e27d8806b0a8e8a93ac39fb37a3975e32 /plugins/TabSRMM/src | |
parent | 5dd8452652544890fbc00501b2ba312cfd97beff (diff) |
tabSRMM:
- fixes #4000 (Уведомление о пришедшем файле глючит);
- unused code removed;
- some code cleaning
Diffstat (limited to 'plugins/TabSRMM/src')
-rw-r--r-- | plugins/TabSRMM/src/generic_msghandlers.cpp | 23 | ||||
-rw-r--r-- | plugins/TabSRMM/src/globals.cpp | 11 | ||||
-rw-r--r-- | plugins/TabSRMM/src/hotkeyhandler.cpp | 6 | ||||
-rw-r--r-- | plugins/TabSRMM/src/mim.cpp | 8 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msgdialog.cpp | 8 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msgdlgother.cpp | 17 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msgs.h | 6 |
7 files changed, 36 insertions, 43 deletions
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<MSavedEvent> 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() {
|