From b67c7629805f10b181ac4aa7a934aa2adc273a4a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 31 Aug 2018 14:24:39 +0300 Subject: tabSRMM: tray menu code simplification --- plugins/TabSRMM/src/chat_window.cpp | 2 +- plugins/TabSRMM/src/eventpopups.cpp | 73 +++++++++++-------------------------- plugins/TabSRMM/src/mim.cpp | 8 ++-- plugins/TabSRMM/src/msgdialog.cpp | 3 +- 4 files changed, 28 insertions(+), 58 deletions(-) (limited to 'plugins/TabSRMM/src') diff --git a/plugins/TabSRMM/src/chat_window.cpp b/plugins/TabSRMM/src/chat_window.cpp index c722134c66..4b2381cb64 100644 --- a/plugins/TabSRMM/src/chat_window.cpp +++ b/plugins/TabSRMM/src/chat_window.cpp @@ -532,7 +532,7 @@ bool CChatRoomDlg::OnInitDialog() m_pPanel.loadHeight(); if (PluginConfig.g_hMenuTrayUnread != nullptr && m_hContact != 0 && m_szProto != nullptr) - UpdateTrayMenu(nullptr, m_wStatus, m_szProto, m_wszStatus, m_hContact, FALSE); + UpdateTrayMenu(nullptr, m_wStatus, m_szProto, m_wszStatus, m_hContact, 0); m_log.SendMsg(EM_HIDESELECTION, TRUE, 0); diff --git a/plugins/TabSRMM/src/eventpopups.cpp b/plugins/TabSRMM/src/eventpopups.cpp index c4e704b293..0e85f99703 100644 --- a/plugins/TabSRMM/src/eventpopups.cpp +++ b/plugins/TabSRMM/src/eventpopups.cpp @@ -676,11 +676,10 @@ void TSAPI UpdateTrayMenuState(CTabBaseDlg *dat, BOOL bForced) GetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, (UINT_PTR)dat->m_hContact, FALSE, &mii); if (!bForced) - PluginConfig.m_UnreadInTray -= (mii.dwItemData & 0x0000ffff); + PluginConfig.m_UnreadInTray -= mii.dwItemData; if (mii.dwItemData > 0 || bForced) { wchar_t szMenuEntry[80]; - mir_snwprintf(szMenuEntry, L"%s: %s (%s) [%d]", tszProto, - dat->m_cache->getNick(), dat->m_wszStatus[0] ? dat->m_wszStatus : L"(undef)", mii.dwItemData & 0x0000ffff); + mir_snwprintf(szMenuEntry, L"%s: %s (%s) [%d]", tszProto, dat->m_cache->getNick(), dat->m_wszStatus[0] ? dat->m_wszStatus : L"(undef)", mii.dwItemData); if (!bForced) mii.dwItemData = 0; @@ -703,58 +702,30 @@ int TSAPI UpdateTrayMenu(const CTabBaseDlg *dat, WORD wStatus, const char *szPro if (tszFinalProto == nullptr) return 0; - WORD wMyStatus = (wStatus == 0) ? db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE) : wStatus; - const wchar_t *szMyStatus = (szStatus == nullptr) ? Clist_GetStatusModeDescription(wMyStatus, 0) : szStatus; + WORD wMyStatus = (wStatus == 0) ? Contact_GetStatus(hContact) : wStatus; + const wchar_t *szMyStatus = (szStatus == nullptr) ? Clist_GetStatusModeDescription(wMyStatus, 0) : szStatus; - MENUITEMINFO mii = { 0 }; + MENUITEMINFO mii = {}; mii.cbSize = sizeof(mii); - mii.fMask = MIIM_DATA | MIIM_ID | MIIM_BITMAP; - mii.wID = (UINT)hContact; - mii.hbmpItem = HBMMENU_CALLBACK; + mii.fMask = MIIM_DATA | MIIM_ID; + mii.wID = hContact; + if (!GetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, hContact, FALSE, &mii)) + AppendMenu(PluginConfig.g_hMenuTrayUnread, MF_BYCOMMAND | MF_STRING, hContact, L""); + + mii.dwItemData += fromEvent; + PluginConfig.m_UnreadInTray += fromEvent; + if (PluginConfig.m_UnreadInTray) + SetEvent(g_hEvent); wchar_t szMenuEntry[80]; - const wchar_t *szNick = nullptr; - if (dat != nullptr) { - szNick = dat->m_cache->getNick(); - GetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, hContact, FALSE, &mii); - mii.dwItemData++; - if (fromEvent == 2) // from chat... - mii.dwItemData |= 0x10000000; - DeleteMenu(PluginConfig.g_hMenuTrayUnread, hContact, MF_BYCOMMAND); - mir_snwprintf(szMenuEntry, L"%s: %s (%s) [%d]", tszFinalProto, szNick, szMyStatus, mii.dwItemData & 0x0000ffff); - AppendMenu(PluginConfig.g_hMenuTrayUnread, MF_BYCOMMAND | MF_STRING, hContact, szMenuEntry); - PluginConfig.m_UnreadInTray++; - if (PluginConfig.m_UnreadInTray) - SetEvent(g_hEvent); - SetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, hContact, FALSE, &mii); - } - else { - szNick = Clist_GetContactDisplayName(hContact); - if (CheckMenuItem(PluginConfig.g_hMenuTrayUnread, hContact, MF_BYCOMMAND | MF_UNCHECKED) == -1) { - mir_snwprintf(szMenuEntry, L"%s: %s (%s) [%d]", tszFinalProto, szNick, szMyStatus, fromEvent ? 1 : 0); - AppendMenu(PluginConfig.g_hMenuTrayUnread, MF_BYCOMMAND | MF_STRING, hContact, szMenuEntry); - mii.dwItemData = fromEvent ? 1 : 0; - PluginConfig.m_UnreadInTray += (mii.dwItemData & 0x0000ffff); - if (PluginConfig.m_UnreadInTray) - SetEvent(g_hEvent); - if (fromEvent == 2) - mii.dwItemData |= 0x10000000; - } - else { - GetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, hContact, FALSE, &mii); - mii.dwItemData += (fromEvent ? 1 : 0); - PluginConfig.m_UnreadInTray += (fromEvent ? 1 : 0); - if (PluginConfig.m_UnreadInTray) - SetEvent(g_hEvent); - mii.fMask |= MIIM_STRING; - if (fromEvent == 2) - mii.dwItemData |= 0x10000000; - mir_snwprintf(szMenuEntry, L"%s: %s (%s) [%d]", tszFinalProto, szNick, szMyStatus, mii.dwItemData & 0x0000ffff); - mii.cch = (int)mir_wstrlen(szMenuEntry) + 1; - mii.dwTypeData = szMenuEntry; - } - SetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, hContact, FALSE, &mii); - } + const wchar_t *szNick = (dat != nullptr) ? dat->m_cache->getNick() : Clist_GetContactDisplayName(hContact); + mir_snwprintf(szMenuEntry, L"%s: %s (%s) [%d]", tszFinalProto, szNick, szMyStatus, mii.dwItemData); + + mii.hbmpItem = HBMMENU_CALLBACK; + mii.fMask |= MIIM_STRING | MIIM_BITMAP; + mii.cch = (int)mir_wstrlen(szMenuEntry) + 1; + mii.dwTypeData = szMenuEntry; + SetMenuItemInfo(PluginConfig.g_hMenuTrayUnread, hContact, FALSE, &mii); return 0; } diff --git a/plugins/TabSRMM/src/mim.cpp b/plugins/TabSRMM/src/mim.cpp index 6dd35d2073..e388ce109c 100644 --- a/plugins/TabSRMM/src/mim.cpp +++ b/plugins/TabSRMM/src/mim.cpp @@ -501,13 +501,15 @@ int CMimAPI::MessageEventAdded(WPARAM hContact, LPARAM hDbEvent) } } +nowindowcreate: // for tray support, we add the event to the tray menu. otherwise we send it back to // the contact list for flashing -nowindowcreate: if (!(dbei.flags & DBEF_READ)) { UpdateTrayMenu(nullptr, 0, dbei.szModule, nullptr, hContact, 1); + if (!nen_options.bTraySupport) { - wchar_t toolTip[256], *contactName; + wchar_t toolTip[256]; + mir_snwprintf(toolTip, TranslateT("Message from %s"), Clist_GetContactDisplayName(hContact)); CLISTEVENT cle = {}; cle.hContact = hContact; @@ -515,8 +517,6 @@ nowindowcreate: cle.flags = CLEF_UNICODE; cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); cle.pszService = MS_MSG_READMESSAGE; - contactName = Clist_GetContactDisplayName(hContact); - mir_snwprintf(toolTip, TranslateT("Message from %s"), contactName); cle.szTooltip.w = toolTip; g_clistApi.pfnAddEvent(&cle); } diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index d502b02685..f64daf18c7 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -750,8 +750,7 @@ bool CSrmmWindow::OnInitDialog() m_log.SendMsg(EM_SETLANGOPTIONS, 0, m_log.SendMsg(EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOFONTSIZEADJUST); // add us to the tray list (if it exists) - if (PluginConfig.g_hMenuTrayUnread != nullptr && m_hContact != 0 && m_szProto != nullptr) - UpdateTrayMenu(nullptr, m_wStatus, m_szProto, m_wszStatus, m_hContact, FALSE); + UpdateTrayMenu(nullptr, m_wStatus, m_szProto, m_wszStatus, m_hContact, 0); m_log.SendMsg(EM_AUTOURLDETECT, TRUE, 0); m_log.SendMsg(EM_EXLIMITTEXT, 0, 0x80000000); -- cgit v1.2.3