1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

feat: add action "Go to current date"

This commit is contained in:
TriKriSta 2019-05-25 22:49:10 +03:00
parent 8c4b1e00a1
commit 2a9648d12c
7 changed files with 38 additions and 0 deletions

View File

@ -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) void ChatHistory::onFileUpdated(const ToxPk& sender, const ToxFile& file)
{ {
if (canUseHistory()) { if (canUseHistory()) {

View File

@ -42,6 +42,7 @@ public:
ChatLogIdx getFirstIdx() const override; ChatLogIdx getFirstIdx() const override;
ChatLogIdx getNextIdx() const override; ChatLogIdx getNextIdx() const override;
std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate, size_t maxDates) const override; std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate, size_t maxDates) const override;
std::size_t size() const override;
public slots: public slots:
void onFileUpdated(const ToxPk& sender, const ToxFile& file); void onFileUpdated(const ToxPk& sender, const ToxFile& file);

View File

@ -138,6 +138,8 @@ public:
virtual std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate, virtual std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate,
size_t maxDates) const = 0; size_t maxDates) const = 0;
virtual std::size_t size() const = 0;
signals: signals:
void itemUpdated(ChatLogIdx idx); void itemUpdated(ChatLogIdx idx);
}; };

View File

@ -289,6 +289,11 @@ std::vector<IChatLog::DateChatLogIdxPair> SessionChatLog::getDateIdxs(const QDat
return ret; return ret;
} }
std::size_t SessionChatLog::size() const
{
return items.size();
}
void SessionChatLog::insertMessageAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName, void SessionChatLog::insertMessageAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName,
ChatLogMessage message) ChatLogMessage message)
{ {

View File

@ -45,6 +45,7 @@ public:
ChatLogIdx getFirstIdx() const override; ChatLogIdx getFirstIdx() const override;
ChatLogIdx getNextIdx() const override; ChatLogIdx getNextIdx() const override;
std::vector<DateChatLogIdxPair> getDateIdxs(const QDate& startDate, size_t maxDates) 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 insertMessageAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName, ChatLogMessage message);
void insertFileAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName, ChatLogFile file); void insertFileAtIdx(ChatLogIdx idx, ToxPk sender, QString senderName, ChatLogFile file);

View File

@ -328,6 +328,13 @@ GenericChatForm::GenericChatForm(const Contact* contact, IChatLog& chatLog,
quoteAction = menu.addAction(QIcon(), QString(), this, SLOT(quoteSelectedText()), quoteAction = menu.addAction(QIcon(), QString(), this, SLOT(quoteSelectedText()),
QKeySequence(Qt::ALT + Qt::Key_Q)); QKeySequence(Qt::ALT + Qt::Key_Q));
addAction(quoteAction); addAction(quoteAction);
menu.addSeparator();
goCurrentDateAction = menu.addAction(QIcon(), QString(), this, SLOT(goToCurrentDate()),
QKeySequence(Qt::CTRL + Qt::Key_G));
addAction(goCurrentDateAction);
menu.addSeparator(); menu.addSeparator();
searchAction = menu.addAction(QIcon(), QString(), this, SLOT(searchFormShow()), searchAction = menu.addAction(QIcon(), QString(), this, SLOT(searchFormShow()),
@ -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() void GenericChatForm::loadHistoryLower()
{ {
auto end = messages.begin()->first; auto end = messages.begin()->first;
@ -1050,6 +1067,7 @@ void GenericChatForm::retranslateUi()
quoteAction->setText(tr("Quote selected text")); quoteAction->setText(tr("Quote selected text"));
copyLinkAction->setText(tr("Copy link address")); copyLinkAction->setText(tr("Copy link address"));
searchAction->setText(tr("Search in text")); searchAction->setText(tr("Search in text"));
goCurrentDateAction->setText(tr("Go to current date"));
loadHistoryAction->setText(tr("Load chat history...")); loadHistoryAction->setText(tr("Load chat history..."));
exportChatAction->setText(tr("Export to file")); exportChatAction->setText(tr("Export to file"));
} }

View File

@ -126,6 +126,7 @@ protected slots:
void renderMessage(ChatLogIdx idx); void renderMessage(ChatLogIdx idx);
void renderMessages(ChatLogIdx begin, ChatLogIdx end, void renderMessages(ChatLogIdx begin, ChatLogIdx end,
std::function<void(void)> onCompletion = std::function<void(void)>()); std::function<void(void)> onCompletion = std::function<void(void)>());
void goToCurrentDate();
void loadHistoryLower(); void loadHistoryLower();
void loadHistoryUpper(); void loadHistoryUpper();
@ -165,6 +166,7 @@ protected:
QAction* searchAction; QAction* searchAction;
QAction* loadHistoryAction; QAction* loadHistoryAction;
QAction* exportChatAction; QAction* exportChatAction;
QAction* goCurrentDateAction;
ToxPk previousId; ToxPk previousId;