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/Scriver/src/msgdialog.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'plugins/Scriver') diff --git a/plugins/Scriver/src/msgdialog.cpp b/plugins/Scriver/src/msgdialog.cpp index 43fd82a142..f0d55d784c 100644 --- a/plugins/Scriver/src/msgdialog.cpp +++ b/plugins/Scriver/src/msgdialog.cpp @@ -256,17 +256,17 @@ bool CMsgDialog::OnInitDialog() notifyUnread = true; } + DB::ECPTR pCursor(DB::EventsRev(m_hContact, m_hDbEventFirst)); + DBEVENTINFO dbei = {}; MEVENT hPrevEvent; switch (historyMode) { case LOADHISTORY_COUNT: for (int i = g_plugin.iLoadCount; i > 0; i--) { - if (m_hDbEventFirst == 0) - hPrevEvent = db_event_last(m_hContact); - else - hPrevEvent = db_event_prev(m_hContact, m_hDbEventFirst); + hPrevEvent = pCursor.FetchNext(); if (hPrevEvent == 0) break; + dbei.cbBlob = 0; m_hDbEventFirst = hPrevEvent; db_event_get(m_hDbEventFirst, &dbei); @@ -276,26 +276,23 @@ bool CMsgDialog::OnInitDialog() break; case LOADHISTORY_TIME: - if (m_hDbEventFirst == 0) { + if (m_hDbEventFirst == 0) dbei.timestamp = time(0); - hPrevEvent = db_event_last(m_hContact); - } - else { + else db_event_get(m_hDbEventFirst, &dbei); - hPrevEvent = db_event_prev(m_hContact, m_hDbEventFirst); - } DWORD firstTime = dbei.timestamp - 60 * g_plugin.iLoadTime; for (;;) { + hPrevEvent = pCursor.FetchNext(); if (hPrevEvent == 0) break; + dbei.cbBlob = 0; db_event_get(hPrevEvent, &dbei); if (dbei.timestamp < firstTime) break; if (DbEventIsShown(dbei)) m_hDbEventFirst = hPrevEvent; - hPrevEvent = db_event_prev(m_hContact, hPrevEvent); } break; } @@ -303,16 +300,14 @@ bool CMsgDialog::OnInitDialog() m_pParent->AddChild(this); - MEVENT hdbEvent = db_event_last(m_hContact); - if (hdbEvent) { + DB::ECPTR pCursor(DB::EventsRev(m_hContact)); + while (MEVENT hdbEvent = pCursor.FetchNext()) { DBEVENTINFO dbei = {}; - do { - db_event_get(hdbEvent, &dbei); - if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & DBEF_SENT)) { - m_lastMessage = dbei.timestamp; - break; - } - } while ((hdbEvent = db_event_prev(m_hContact, hdbEvent))); + db_event_get(hdbEvent, &dbei); + if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & DBEF_SENT)) { + m_lastMessage = dbei.timestamp; + break; + } } SendMessage(m_hwnd, DM_OPTIONSAPPLIED, 0, 0); -- cgit v1.2.3