diff --git a/src/widget/form/genericchatform.cpp b/src/widget/form/genericchatform.cpp index 6d6c5172d..a047f1fee 100644 --- a/src/widget/form/genericchatform.cpp +++ b/src/widget/form/genericchatform.cpp @@ -811,12 +811,22 @@ void GenericChatForm::onLoadHistory() { LoadHistoryDialog dlg(&chatLog); if (dlg.exec()) { - QDateTime time = dlg.getFromDate(); - auto idx = firstItemAfterDate(dlg.getFromDate().date(), chatLog); - auto end = ChatLogIdx(idx.get() + 100); chatWidget->clear(); messages.clear(); - renderMessages(idx, end); + + QDateTime time = dlg.getFromDate(); + auto type = dlg.getLoadType(); + + auto begin = firstItemAfterDate(dlg.getFromDate().date(), chatLog); + auto end = ChatLogIdx(begin.get() + 1); + + renderMessages(begin, end); + + if (type == LoadHistoryDialog::from) { + loadHistoryUpper(); + } else { + loadHistoryLower(); + } } } @@ -986,15 +996,13 @@ void GenericChatForm::renderMessages(ChatLogIdx begin, ChatLogIdx end, void GenericChatForm::loadHistoryLower() { - auto begin = messages.begin()->first; - - if (begin.get() > 100) { - begin = ChatLogIdx(begin.get() - 100); - } else { - begin = ChatLogIdx(0); + auto end = messages.begin()->first; + auto begin = ChatLogIdx(0); + if (end.get() > 100) { + begin = ChatLogIdx(end.get() - 100); } - renderMessages(begin, chatLog.getNextIdx()); + renderMessages(begin, end); } void GenericChatForm::loadHistoryUpper() diff --git a/src/widget/form/loadhistorydialog.cpp b/src/widget/form/loadhistorydialog.cpp index 0e1925245..2ff15eeb4 100644 --- a/src/widget/form/loadhistorydialog.cpp +++ b/src/widget/form/loadhistorydialog.cpp @@ -62,6 +62,15 @@ QDateTime LoadHistoryDialog::getFromDate() return res; } +LoadHistoryDialog::LoadType LoadHistoryDialog::getLoadType() +{ + if (ui->loadTypeComboBox->currentIndex() == 0) { + return LoadType::from; + } + + return LoadType::to; +} + void LoadHistoryDialog::setTitle(const QString& title) { setWindowTitle(title); diff --git a/src/widget/form/loadhistorydialog.h b/src/widget/form/loadhistorydialog.h index 092bd8b15..dfb046867 100644 --- a/src/widget/form/loadhistorydialog.h +++ b/src/widget/form/loadhistorydialog.h @@ -34,11 +34,17 @@ class LoadHistoryDialog : public QDialog Q_OBJECT public: + enum LoadType { + from, + to + }; + explicit LoadHistoryDialog(const IChatLog* chatLog, QWidget* parent = nullptr); explicit LoadHistoryDialog(QWidget* parent = nullptr); ~LoadHistoryDialog(); QDateTime getFromDate(); + LoadType getLoadType(); void setTitle(const QString& title); void setInfoLabel(const QString& info); diff --git a/src/widget/form/loadhistorydialog.ui b/src/widget/form/loadhistorydialog.ui index fc4ab5029..5bf3fc553 100644 --- a/src/widget/form/loadhistorydialog.ui +++ b/src/widget/form/loadhistorydialog.ui @@ -6,8 +6,8 @@ 0 0 - 347 - 264 + 410 + 332 @@ -16,22 +16,60 @@ true - - - - - Load history from: - - + + + + + + + Load history + + + + + + + + from + + + + + to + + + + + + + + (about 100 messages are loaded) + + + + + + + Qt::Horizontal + + + + 17 + 20 + + + + + - + false - + Qt::Horizontal