Skip to content
This repository has been archived by the owner on Feb 12, 2023. It is now read-only.

Commit

Permalink
feat: add action "Go to current date"
Browse files Browse the repository at this point in the history
  • Loading branch information
TriKriSta committed Jul 22, 2019
1 parent 8c4b1e0 commit 2a9648d
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/model/chathistory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,15 @@ std::vector<IChatLog::DateChatLogIdxPair> ChatHistory::getDateIdxs(const QDate&
}
}

std::size_t ChatHistory::size() const
{
if (canUseHistory()) {
return history->getNumMessagesForFriend(f.getPublicKey());
}

return sessionChatLog.size();
}

void ChatHistory::onFileUpdated(const ToxPk& sender, const ToxFile& file)
{
if (canUseHistory()) {
Expand Down
1 change: 1 addition & 0 deletions src/model/chathistory.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class ChatHistory : public IChatLog
ChatLogIdx getFirstIdx() const override;
ChatLogIdx getNextIdx() const override;
std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate, size_t maxDates) const override;
std::size_t size() const override;

public slots:
void onFileUpdated(const ToxPk& sender, const ToxFile& file);
Expand Down
2 changes: 2 additions & 0 deletions src/model/ichatlog.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ class IChatLog : public QObject
virtual std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate,
size_t maxDates) const = 0;

virtual std::size_t size() const = 0;

signals:
void itemUpdated(ChatLogIdx idx);
};
Expand Down
5 changes: 5 additions & 0 deletions src/model/sessionchatlog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,11 @@ std::vector<IChatLog::DateChatLogIdxPair> SessionChatLog::getDateIdxs(const QDat
return ret;
}

std::size_t SessionChatLog::size() const
{
return items.size();
}

void SessionChatLog::insertMessageAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName,
ChatLogMessage message)
{
Expand Down
1 change: 1 addition & 0 deletions src/model/sessionchatlog.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class SessionChatLog : public IChatLog
ChatLogIdx getFirstIdx() const override;
ChatLogIdx getNextIdx() const override;
std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate, size_t maxDates) const override;
std::size_t size() const override;

void insertMessageAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName, ChatLogMessage message);
void insertFileAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName, ChatLogFile file);
Expand Down
18 changes: 18 additions & 0 deletions src/widget/form/genericchatform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,13 @@ GenericChatForm::GenericChatForm(const Contact* contact, IChatLog& chatLog,
quoteAction = menu.addAction(QIcon(), QString(), this, SLOT(quoteSelectedText()),
QKeySequence(Qt::ALT + Qt::Key_Q));
addAction(quoteAction);

menu.addSeparator();

goCurrentDateAction = menu.addAction(QIcon(), QString(), this, SLOT(goToCurrentDate()),
QKeySequence(Qt::CTRL + Qt::Key_G));
addAction(goCurrentDateAction);

menu.addSeparator();

searchAction = menu.addAction(QIcon(), QString(), this, SLOT(searchFormShow()),
Expand Down Expand Up @@ -1004,6 +1011,16 @@ void GenericChatForm::renderMessages(ChatLogIdx begin, ChatLogIdx end,
}
}

void GenericChatForm::goToCurrentDate()
{
chatWidget->clear();
messages.clear();
auto end = ChatLogIdx(chatLog.size() - 1);
auto begin = end.get() > 100 ? ChatLogIdx(end.get() - 100) : ChatLogIdx(0);

renderMessages(begin, end);
}

void GenericChatForm::loadHistoryLower()
{
auto end = messages.begin()->first;
Expand Down Expand Up @@ -1050,6 +1067,7 @@ void GenericChatForm::retranslateUi()
quoteAction->setText(tr("Quote selected text"));
copyLinkAction->setText(tr("Copy link address"));
searchAction->setText(tr("Search in text"));
goCurrentDateAction->setText(tr("Go to current date"));
loadHistoryAction->setText(tr("Load chat history..."));
exportChatAction->setText(tr("Export to file"));
}
Expand Down
2 changes: 2 additions & 0 deletions src/widget/form/genericchatform.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ protected slots:
void renderMessage(ChatLogIdx idx);
void renderMessages(ChatLogIdx begin, ChatLogIdx end,
std::function<void(void)> onCompletion = std::function<void(void)>());
void goToCurrentDate();

void loadHistoryLower();
void loadHistoryUpper();
Expand Down Expand Up @@ -165,6 +166,7 @@ protected slots:
QAction* searchAction;
QAction* loadHistoryAction;
QAction* exportChatAction;
QAction* goCurrentDateAction;

ToxPk previousId;

Expand Down

0 comments on commit 2a9648d

Please sign in to comment.