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