|
|
|
|
@ -670,7 +670,13 @@ void GenericChatForm::loadHistoryTo(const QDateTime &time)
@@ -670,7 +670,13 @@ void GenericChatForm::loadHistoryTo(const QDateTime &time)
|
|
|
|
|
{ |
|
|
|
|
auto end = ChatLogIdx(0); |
|
|
|
|
if (time.isNull()) { |
|
|
|
|
end = messages.begin()->first; |
|
|
|
|
if (messages.size() + 100 >= maxMessages) { |
|
|
|
|
end = ChatLogIdx(messages.rbegin()->first.get() - 100); |
|
|
|
|
chatWidget->removeLasts(100); |
|
|
|
|
removeLastsMessages(100); |
|
|
|
|
} else { |
|
|
|
|
end = messages.begin()->first; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
end = firstItemAfterDate(time.date(), chatLog); |
|
|
|
|
} |
|
|
|
|
@ -687,7 +693,14 @@ void GenericChatForm::loadHistoryFrom(const QDateTime &time)
@@ -687,7 +693,14 @@ void GenericChatForm::loadHistoryFrom(const QDateTime &time)
|
|
|
|
|
{ |
|
|
|
|
auto begin = ChatLogIdx(0); |
|
|
|
|
if (time.isNull()) { |
|
|
|
|
begin = messages.rbegin()->first; |
|
|
|
|
if (messages.size() + 100 >= maxMessages) { |
|
|
|
|
begin = ChatLogIdx(messages.rbegin()->first.get() + 100); |
|
|
|
|
chatWidget->removeFirsts(100); |
|
|
|
|
removeFirstsMessages(100); |
|
|
|
|
} else { |
|
|
|
|
begin = messages.rbegin()->first; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
begin = firstItemAfterDate(time.date(), chatLog); |
|
|
|
|
} |
|
|
|
|
@ -700,6 +713,24 @@ void GenericChatForm::loadHistoryFrom(const QDateTime &time)
@@ -700,6 +713,24 @@ void GenericChatForm::loadHistoryFrom(const QDateTime &time)
|
|
|
|
|
renderMessages(begin, end); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GenericChatForm::removeFirstsMessages(const int num) |
|
|
|
|
{ |
|
|
|
|
if (messages.size() > num) { |
|
|
|
|
messages.erase(messages.begin(), std::next(messages.begin(), num)); |
|
|
|
|
} else { |
|
|
|
|
messages.clear(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GenericChatForm::removeLastsMessages(const int num) |
|
|
|
|
{ |
|
|
|
|
if (messages.size() > 100) { |
|
|
|
|
messages.erase(std::next(messages.end(), -100), messages.end()); |
|
|
|
|
} else { |
|
|
|
|
messages.clear(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void GenericChatForm::disableSearchText() |
|
|
|
|
{ |
|
|
|
|
@ -993,6 +1024,10 @@ void GenericChatForm::handleSearchResult(SearchResult result, SearchDirection di
@@ -993,6 +1024,10 @@ void GenericChatForm::handleSearchResult(SearchResult result, SearchDirection di
|
|
|
|
|
|
|
|
|
|
void GenericChatForm::renderMessage(ChatLogIdx idx) |
|
|
|
|
{ |
|
|
|
|
if (chatWidget->getLines().size() >= maxMessages) { |
|
|
|
|
chatWidget->removeFirsts(optimalRemove); |
|
|
|
|
removeFirstsMessages(optimalRemove); |
|
|
|
|
} |
|
|
|
|
renderMessages(idx, idx + 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|