diff options
| -rw-r--r-- | include/m_chat_int.h | 8 | ||||
| -rw-r--r-- | libs/win32/mir_app.lib | bin | 302188 -> 302584 bytes | |||
| -rw-r--r-- | libs/win64/mir_app.lib | bin | 302256 -> 302666 bytes | |||
| -rw-r--r-- | plugins/Scriver/src/chat_manager.cpp | 3 | ||||
| -rw-r--r-- | plugins/TabSRMM/src/chat_tools.cpp | 3 | ||||
| -rw-r--r-- | src/mir_app/src/chat.h | 2 | ||||
| -rw-r--r-- | src/mir_app/src/chat_manager.cpp | 11 | ||||
| -rw-r--r-- | src/mir_app/src/chat_svc.cpp | 5 | ||||
| -rw-r--r-- | src/mir_app/src/mir_app.def | 1 | ||||
| -rw-r--r-- | src/mir_app/src/mir_app64.def | 1 | ||||
| -rw-r--r-- | src/mir_app/src/srmm_base.cpp | 4 |
11 files changed, 23 insertions, 15 deletions
diff --git a/include/m_chat_int.h b/include/m_chat_int.h index 6f52166e5f..7189facdca 100644 --- a/include/m_chat_int.h +++ b/include/m_chat_int.h @@ -280,7 +280,6 @@ struct CHAT_MANAGER BOOL (*MM_RemoveAll)(void);
STATUSINFO* (*TM_FindStatus)(STATUSINFO *pStatusList, const wchar_t *pszStatus);
- wchar_t* (*TM_WordToString)(STATUSINFO *pStatusList, uint16_t Status);
BOOL (*TM_RemoveAll)(STATUSINFO** pStatusList);
int (*UM_CompareItem)(const USERINFO *u1, const USERINFO *u2);
@@ -365,13 +364,16 @@ MIR_APP_DLL(void) Chat_EmptyHistory(SESSION_INFO *si); // creates custom popup menu for a group chat
MIR_APP_DLL(void) Chat_CreateMenu(HMENU hMenu, SESSION_INFO *si, const wchar_t *pszUID);
-// calculates width or height of a string
-MIR_APP_DLL(int) Chat_GetTextPixelSize(const wchar_t *pszText, HFONT hFont, bool bWidth);
+// retrieves user's role/status
+MIR_APP_DLL(STATUSINFO*) Chat_GetStatus(STATUSINFO *pStatuses, const USERINFO *pUser);
// creates a default description of a group chat event
// returns true if lin->ptszText is already utilized, you need to add it manually then otherwise
MIR_APP_DLL(bool) Chat_GetDefaultEventDescr(const SESSION_INFO *si, const LOGINFO *lin, CMStringW &res);
+// calculates width or height of a string
+MIR_APP_DLL(int) Chat_GetTextPixelSize(const wchar_t *pszText, HFONT hFont, bool bWidth);
+
// sets mute mode for a group chat
MIR_APP_DLL(int) Chat_IsMuted(MCONTACT hContact);
MIR_APP_DLL(void) Chat_Mute(MCONTACT hContact, int mode);
diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib Binary files differindex ce3cfdd152..4e32f03a3f 100644 --- a/libs/win32/mir_app.lib +++ b/libs/win32/mir_app.lib diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib Binary files differindex 32149e97b8..ce355311e6 100644 --- a/libs/win64/mir_app.lib +++ b/libs/win64/mir_app.lib diff --git a/plugins/Scriver/src/chat_manager.cpp b/plugins/Scriver/src/chat_manager.cpp index c4f3efa815..e2974b6d15 100644 --- a/plugins/Scriver/src/chat_manager.cpp +++ b/plugins/Scriver/src/chat_manager.cpp @@ -50,8 +50,7 @@ char SM_GetStatusIndicator(SESSION_INFO *si, USERINFO *ui) if (!ui || !si)
return '\0';
- STATUSINFO *ti = g_chatApi.TM_FindStatus(si->pStatuses, g_chatApi.TM_WordToString(si->pStatuses, ui->Status));
- if (ti) {
+ if (auto *ti = Chat_GetStatus(si->getStatuses(), ui)) {
switch (si->iStatusCount - ti->iIconIndex - 1) {
case 0: return '\0';
case 1: return '+';
diff --git a/plugins/TabSRMM/src/chat_tools.cpp b/plugins/TabSRMM/src/chat_tools.cpp index 4f2b720d83..ae57463343 100644 --- a/plugins/TabSRMM/src/chat_tools.cpp +++ b/plugins/TabSRMM/src/chat_tools.cpp @@ -367,8 +367,7 @@ char GetIndicator(SESSION_INFO *si, LPCTSTR ptszNick, int *iNickIndex) for (auto &ui : si->getUserList()) {
if (!mir_wstrcmp(ui->pszNick, ptszNick)) {
- STATUSINFO *ti = g_chatApi.TM_FindStatus(pStatuses, g_chatApi.TM_WordToString(pStatuses, ui->Status));
- if (ti) {
+ if (auto *ti = Chat_GetStatus(pStatuses, ui)) {
if (iNickIndex)
*iNickIndex = ti->iIconIndex; // color table's index is not zero-based
return szIndicators[ti->iIconIndex];
diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h index 7334aae921..cbca7a51b3 100644 --- a/src/mir_app/src/chat.h +++ b/src/mir_app/src/chat.h @@ -101,7 +101,9 @@ SESSION_INFO* SM_FindSessionByContact(MCONTACT hContact); SESSION_INFO* SM_FindSessionByIndex(const char *pszModule, int iItem);
STATUSINFO* TM_AddStatus(STATUSINFO **ppStatusList, const wchar_t *pszStatus, int *iCount);
+STATUSINFO* TM_FindStatus(STATUSINFO *pStatusList, const wchar_t *pszStatus);
uint16_t TM_StringToWord(STATUSINFO *pStatusList, const wchar_t *pszStatus);
+wchar_t* TM_WordToString(STATUSINFO *pStatusList, uint16_t Status);
USERINFO* UM_AddUser(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszNick, uint16_t wStatus);
BOOL UM_RemoveAll(SESSION_INFO *si);
diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index e7b83a5da8..76c7ee93e4 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -359,7 +359,7 @@ static HICON SM_GetStatusIcon(SESSION_INFO *si, USERINFO *ui) return nullptr;
auto *pStatuses = si->getStatuses();
- STATUSINFO *ti = g_chatApi.TM_FindStatus(pStatuses, g_chatApi.TM_WordToString(pStatuses, ui->Status));
+ STATUSINFO *ti = g_chatApi.TM_FindStatus(pStatuses, TM_WordToString(pStatuses, ui->Status));
if (ti != nullptr)
return g_chatApi.hStatusIcons[ti->iIconIndex];
@@ -672,12 +672,12 @@ STATUSINFO* TM_AddStatus(STATUSINFO **ppStatusList, const wchar_t *pszStatus, in return nullptr;
}
-static STATUSINFO* TM_FindStatus(STATUSINFO *pStatusList, const wchar_t *pszStatus)
+STATUSINFO* TM_FindStatus(STATUSINFO *pStatusList, const wchar_t *pszStatus)
{
if (!pStatusList || !pszStatus)
return nullptr;
- for (STATUSINFO *pTemp = pStatusList; pTemp != nullptr; pTemp = pTemp->next)
+ for (auto *pTemp = pStatusList; pTemp != nullptr; pTemp = pTemp->next)
if (mir_wstrcmpi(pTemp->pszGroup, pszStatus) == 0)
return pTemp;
@@ -699,12 +699,12 @@ uint16_t TM_StringToWord(STATUSINFO *pStatusList, const wchar_t *pszStatus) return 0;
}
-static wchar_t* TM_WordToString(STATUSINFO *pStatusList, uint16_t Status)
+wchar_t* TM_WordToString(STATUSINFO *pStatusList, uint16_t Status)
{
if (!pStatusList)
return nullptr;
- for (STATUSINFO *pTemp = pStatusList; pTemp != nullptr; pTemp = pTemp->next) {
+ for (auto *pTemp = pStatusList; pTemp != nullptr; pTemp = pTemp->next) {
if (pTemp->iStatus & Status) {
Status -= pTemp->iStatus;
if (Status == 0)
@@ -771,7 +771,6 @@ static void ResetApi() g_chatApi.MM_RemoveAll = ::MM_RemoveAll;
g_chatApi.TM_FindStatus = ::TM_FindStatus;
- g_chatApi.TM_WordToString = ::TM_WordToString;
g_chatApi.TM_RemoveAll = ::TM_RemoveAll;
g_chatApi.UM_AddUser = ::UM_AddUser;
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index fa74c2d448..e75c602692 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -680,6 +680,11 @@ MIR_APP_DLL(int) Chat_ChangeUserId(SESSION_INFO *si, const wchar_t *wszOldId, co return 0;
}
+MIR_APP_DLL(STATUSINFO *) Chat_GetStatus(STATUSINFO *pStatuses, const USERINFO *ui)
+{
+ return TM_FindStatus(pStatuses, TM_WordToString(pStatuses, ui->Status));
+}
+
MIR_APP_DLL(void*) Chat_GetUserInfo(SESSION_INFO *si)
{
return (si) ? si->pItemData : nullptr;
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 0beb254bc1..393feb360d 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -997,3 +997,4 @@ Proto_CanDeleteHistory @1118 NONAME ?iHistoryMode@Srmm@@3V?$CMOption@E@@A @1128 NONAME
?getConn@MWebSocket@@QBEPAXXZ @1129 NONAME
?getStatuses@SESSION_INFO@@QBEPAUSTATUSINFO@@XZ @1130 NONAME
+?Chat_GetStatus@@YGPAUSTATUSINFO@@PAU1@PBUUSERINFO@@@Z @1131 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 18a35ef558..6bfd96a14a 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -997,3 +997,4 @@ Proto_CanDeleteHistory @1118 NONAME ?iHistoryMode@Srmm@@3V?$CMOption@E@@A @1128 NONAME
?getConn@MWebSocket@@QEBAPEAXXZ @1129 NONAME
?getStatuses@SESSION_INFO@@QEBAPEAUSTATUSINFO@@XZ @1130 NONAME
+?Chat_GetStatus@@YAPEAUSTATUSINFO@@PEAU1@PEBUUSERINFO@@@Z @1131 NONAME
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index 52dbc09f40..729543cd94 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -313,7 +313,7 @@ static void ProcessNickListHovering(const CCtrlListBox &listBox, int hoveredItem wszBuf.Format(L"%s: %s\r\n%s: %s\r\n%s: %s",
TranslateT("Nickname"), ui->pszNick,
TranslateT("Unique ID"), ui->pszUID,
- TranslateT("Status"), g_chatApi.TM_WordToString(si->getStatuses(), ui->Status));
+ TranslateT("Status"), TM_WordToString(si->getStatuses(), ui->Status));
ti.lpszText = wszBuf.GetBuffer();
}
@@ -339,7 +339,7 @@ void CSrmmBaseDialog::OnNickListTimer(CTimer *pTimer) wszBuf.Format(L"<b>%s:</b>\t%s\n<b>%s:</b>\t%s\n<b>%s:</b>\t%s",
TranslateT("Nick"), ui->pszNick,
TranslateT("Unique ID"), ui->pszUID,
- TranslateT("Status"), g_chatApi.TM_WordToString(m_si->getStatuses(), ui->Status));
+ TranslateT("Status"), TM_WordToString(m_si->getStatuses(), ui->Status));
CLCINFOTIP ti = { sizeof(ti) };
Tipper_ShowTip(wszBuf, &ti);
|
