summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/Scriver/src/msgs.cpp6
-rw-r--r--plugins/TabSRMM/src/globals.cpp6
-rw-r--r--plugins/TabSRMM/src/msgdlgother.cpp39
-rw-r--r--src/core/stdmsg/src/msgs.cpp6
-rw-r--r--src/mir_app/src/filexferdlg.cpp2
-rw-r--r--src/mir_app/src/srmm_base.cpp6
6 files changed, 32 insertions, 33 deletions
diff --git a/plugins/Scriver/src/msgs.cpp b/plugins/Scriver/src/msgs.cpp
index 47f692d0a4..ed86c8b0ce 100644
--- a/plugins/Scriver/src/msgs.cpp
+++ b/plugins/Scriver/src/msgs.cpp
@@ -249,7 +249,7 @@ struct MSavedEvent
static void RestoreUnreadMessageAlerts(void)
{
- OBJLIST<MSavedEvent> arEvents(10, NumericKeySortT);
+ OBJLIST<MSavedEvent> events(10, NumericKeySortT);
for (auto &hContact : Contacts()) {
if (Contact::IsGroupChat(hContact) || !Proto_GetBaseAccountName(hContact))
@@ -269,11 +269,11 @@ static void RestoreUnreadMessageAlerts(void)
if (IsAutoPopup(hContact) && !windowAlreadyExists)
(new CMsgDialog(hContact, true))->Show();
else
- arEvents.insert(new MSavedEvent(hContact, hDbEvent));
+ events.insert(new MSavedEvent(hContact, hDbEvent));
}
}
- for (auto &e : arEvents)
+ for (auto &e : events)
Srmm_AddEvent(e->hContact, e->hEvent);
}
diff --git a/plugins/TabSRMM/src/globals.cpp b/plugins/TabSRMM/src/globals.cpp
index f46d7b6fdd..a6ab43374d 100644
--- a/plugins/TabSRMM/src/globals.cpp
+++ b/plugins/TabSRMM/src/globals.cpp
@@ -442,7 +442,7 @@ struct MSavedEvent
void CGlobals::RestoreUnreadMessageAlerts(void)
{
- OBJLIST<MSavedEvent> arEvents(10, NumericKeySortT);
+ OBJLIST<MSavedEvent> events(10, NumericKeySortT);
for (auto &hContact : Contacts()) {
if (Proto_GetBaseAccountName(hContact) == nullptr)
@@ -459,12 +459,12 @@ void CGlobals::RestoreUnreadMessageAlerts(void)
if (!dbei.markedRead() && dbei.isAlertable())
if (!Srmm_FindWindow(hContact))
- arEvents.insert(new MSavedEvent(hContact, hDbEvent));
+ events.insert(new MSavedEvent(hContact, hDbEvent));
}
}
}
- for (auto &e : arEvents)
+ for (auto &e : events)
Srmm_AddEvent(e->hContact, e->hEvent);
}
diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp
index 1bf3dde416..56cdf162d7 100644
--- a/plugins/TabSRMM/src/msgdlgother.cpp
+++ b/plugins/TabSRMM/src/msgdlgother.cpp
@@ -401,35 +401,31 @@ void CMsgDialog::EventAdded(MEVENT hDbEvent, const DB::EventInfo &dbei)
bool CMsgDialog::GetFirstEvent()
{
int historyMode = g_plugin.getByte(m_hContact, "LoadHistory", Srmm::iHistoryMode);
-
- m_hDbEventFirst = db_event_firstUnread(m_hContact);
-
if (m_bActualHistory)
historyMode = LOADHISTORY_COUNT;
DB::EventInfo dbei;
- DB::ECPTR pCursor(DB::EventsRev(m_hContact, m_hDbEventFirst));
switch (historyMode) {
- case LOADHISTORY_COUNT:
- int i;
-
- // ability to load only current session's history
- if (m_bActualHistory)
- i = m_cache->getSessionMsgCount();
- else
- i = g_plugin.getWord(SRMSGSET_LOADCOUNT, SRMSGDEFSET_LOADCOUNT);
+ case LOADHISTORY_UNREAD:
+ m_hDbEventFirst = db_event_firstUnread(m_hContact);
+ break;
- for (; i > 0; i--) {
- MEVENT hPrevEvent = pCursor.FetchNext();
- if (hPrevEvent == 0)
- break;
+ case LOADHISTORY_COUNT:
+ {
+ DB::ECPTR pCursor(DB::EventsRev(m_hContact));
+ int n = (m_bActualHistory) ? m_cache->getSessionMsgCount() : g_plugin.getWord(SRMSGSET_LOADCOUNT, SRMSGDEFSET_LOADCOUNT);
+ while (n > 0) {
+ MEVENT hPrevEvent = pCursor.FetchNext();
+ if (hPrevEvent == 0)
+ break;
- dbei.cbBlob = 0;
- m_hDbEventFirst = hPrevEvent;
- db_event_get(m_hDbEventFirst, &dbei);
- if (!DbEventIsShown(dbei))
- i++;
+ dbei.cbBlob = 0;
+ m_hDbEventFirst = hPrevEvent;
+ db_event_get(m_hDbEventFirst, &dbei);
+ if (DbEventIsShown(dbei))
+ n--;
+ }
}
break;
@@ -441,6 +437,7 @@ bool CMsgDialog::GetFirstEvent()
uint32_t firstTime = dbei.getUnixtime() - 60 * g_plugin.getWord(SRMSGSET_LOADTIME, SRMSGDEFSET_LOADTIME);
+ DB::ECPTR pCursor(DB::EventsRev(m_hContact));
while (MEVENT hPrevEvent = pCursor.FetchNext()) {
dbei.cbBlob = 0;
db_event_get(hPrevEvent, &dbei);
diff --git a/src/core/stdmsg/src/msgs.cpp b/src/core/stdmsg/src/msgs.cpp
index 6bbf995d52..6e7e0f2ceb 100644
--- a/src/core/stdmsg/src/msgs.cpp
+++ b/src/core/stdmsg/src/msgs.cpp
@@ -277,7 +277,7 @@ struct MSavedEvent
static void RestoreUnreadMessageAlerts(void)
{
- OBJLIST<MSavedEvent> arEvents(10, NumericKeySortT);
+ OBJLIST<MSavedEvent> events(10, NumericKeySortT);
for (auto &hContact : Contacts()) {
if (Contact::IsGroupChat(hContact) || !Proto_GetBaseAccountName(hContact))
@@ -305,12 +305,12 @@ static void RestoreUnreadMessageAlerts(void)
if (autoPopup && !windowAlreadyExists)
GetContainer()->AddPage(hContact);
else
- arEvents.insert(new MSavedEvent(hContact, hDbEvent));
+ events.insert(new MSavedEvent(hContact, hDbEvent));
}
}
}
- for (auto &e : arEvents)
+ for (auto &e : events)
Srmm_AddEvent(e->hContact, e->hEvent);
}
diff --git a/src/mir_app/src/filexferdlg.cpp b/src/mir_app/src/filexferdlg.cpp
index d946f4c65f..1abb90673d 100644
--- a/src/mir_app/src/filexferdlg.cpp
+++ b/src/mir_app/src/filexferdlg.cpp
@@ -595,7 +595,7 @@ INT_PTR CALLBACK DlgProcFileTransfer(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR
DB::EventInfo dbei;
dbei.szModule = Proto_GetBaseAccountName(dat->hContact);
dbei.eventType = EVENTTYPE_FILE;
- dbei.flags = DBEF_SENT | DBEF_UTF;
+ dbei.flags = DBEF_SENT | DBEF_READ | DBEF_UTF;
dbei.iTimestamp = time(0);
DB::FILE_BLOB blob(dat->szFilenames, dat->szMsg);
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp
index 734428756f..fa4f27ce57 100644
--- a/src/mir_app/src/srmm_base.cpp
+++ b/src/mir_app/src/srmm_base.cpp
@@ -841,7 +841,7 @@ void CSrmmBaseDialog::UpdateChatLog()
auto *szProto = Proto_GetBaseAccountName(m_hContact);
for (MEVENT hDbEvent = m_hDbEventFirst; hDbEvent; hDbEvent = db_event_next(m_hContact, hDbEvent)) {
DB::EventInfo dbei(hDbEvent);
- if (dbei && !mir_strcmp(szProto, dbei.szModule) && g_chatApi.DbEventIsShown(dbei) && dbei.szUserId) {
+ if (dbei && !mir_strcmp(szProto, dbei.szModule) && g_chatApi.DbEventIsShown(dbei)) {
if (iHistoryMode == LOADHISTORY_UNREAD && dbei.bRead)
continue;
@@ -855,7 +855,9 @@ void CSrmmBaseDialog::UpdateChatLog()
gce.time = dbei.getUnixtime();
gce.hEvent = hDbEvent;
- if (USERINFO *ui = g_chatApi.UM_FindUser(m_si, wszUserId))
+ if (dbei.szUserId == nullptr)
+ gce.bIsMe = true;
+ else if (USERINFO *ui = g_chatApi.UM_FindUser(m_si, wszUserId))
gce.pszNick.w = ui->pszNick;
else
gce.pszNick.w = wszUserId;