From 35780da54a30840b50313ebf6ca2a0b7367d6c49 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 18 Jan 2021 21:15:51 +0300 Subject: =?UTF-8?q?fixes=20#2700=20(Scriver:=20=D0=BF=D1=80=D0=B8=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B8=20=D0=BE=D0=BA=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D0=B0=D0=BF=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D0=BB=D0=B8=D1=88=D1=8C=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=BD=D0=BE=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/TabSRMM/src/msgdlgother.cpp | 50 ++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 29 deletions(-) (limited to 'plugins/TabSRMM/src/msgdlgother.cpp') diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index 0dec572846..01e98df270 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -463,49 +463,41 @@ void CMsgDialog::FindFirstEvent() if (m_bActualHistory) historyMode = LOADHISTORY_COUNT; + DBEVENTINFO dbei = {}; + DB::ECPTR pCursor(DB::EventsRev(m_hContact, m_hDbEventFirst)); + switch (historyMode) { case LOADHISTORY_COUNT: int i; - MEVENT hPrevEvent; - { - DBEVENTINFO dbei = {}; - // ability to load only current session's history - if (m_bActualHistory) - i = m_cache->getSessionMsgCount(); - else - i = g_plugin.getWord(SRMSGSET_LOADCOUNT, SRMSGDEFSET_LOADCOUNT); - for (; i > 0; i--) { - if (m_hDbEventFirst == 0) - hPrevEvent = db_event_last(m_hContact); - else - hPrevEvent = db_event_prev(m_hContact, m_hDbEventFirst); - if (hPrevEvent == 0) - break; - dbei.cbBlob = 0; - m_hDbEventFirst = hPrevEvent; - db_event_get(m_hDbEventFirst, &dbei); - if (!DbEventIsShown(&dbei)) - 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); + + for (; i > 0; i--) { + MEVENT hPrevEvent = pCursor.FetchNext(); + if (hPrevEvent == 0) + break; + + dbei.cbBlob = 0; + m_hDbEventFirst = hPrevEvent; + db_event_get(m_hDbEventFirst, &dbei); + if (!DbEventIsShown(&dbei)) + i++; } break; case LOADHISTORY_TIME: - DBEVENTINFO dbei = {}; if (m_hDbEventFirst == 0) dbei.timestamp = time(0); else db_event_get(m_hDbEventFirst, &dbei); DWORD firstTime = dbei.timestamp - 60 * g_plugin.getWord(SRMSGSET_LOADTIME, SRMSGDEFSET_LOADTIME); - for (;;) { - if (m_hDbEventFirst == 0) - hPrevEvent = db_event_last(m_hContact); - else - hPrevEvent = db_event_prev(m_hContact, m_hDbEventFirst); - if (hPrevEvent == 0) - break; + + while (MEVENT hPrevEvent = pCursor.FetchNext()) { dbei.cbBlob = 0; db_event_get(hPrevEvent, &dbei); if (dbei.timestamp < firstTime) -- cgit v1.2.3