summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-03-11 17:56:40 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-03-11 17:56:40 +0200
commitd6b61fbb149ed50e591b85d9814dc537ce98cc4b (patch)
tree09b2087b3cba423f67a349d335c7aee86963a2a6 /src/timeline
parentRemove unused variables (diff)
downloadnheko-d6b61fbb149ed50e591b85d9814dc537ce98cc4b.tar.xz
Add context menu option to mark events individually as read
fixes #261
Diffstat (limited to 'src/timeline')
-rw-r--r--src/timeline/TimelineItem.cc16
-rw-r--r--src/timeline/TimelineView.cc6
2 files changed, 17 insertions, 5 deletions
diff --git a/src/timeline/TimelineItem.cc b/src/timeline/TimelineItem.cc

index 02f22472..1707dd19 100644 --- a/src/timeline/TimelineItem.cc +++ b/src/timeline/TimelineItem.cc
@@ -21,7 +21,6 @@ #include <QTextEdit> #include "Avatar.h" -#include "ChatPage.h" #include "Config.h" #include "timeline/TimelineItem.h" @@ -44,14 +43,19 @@ TimelineItem::init() QFontMetrics fm(font_); - receiptsMenu_ = new QMenu(this); + contextMenu_ = new QMenu(this); showReadReceipts_ = new QAction("Read receipts", this); - receiptsMenu_->addAction(showReadReceipts_); + markAsRead_ = new QAction("Mark as read", this); + contextMenu_->addAction(showReadReceipts_); + contextMenu_->addAction(markAsRead_); + connect(showReadReceipts_, &QAction::triggered, this, [this]() { if (!event_id_.isEmpty()) ChatPage::instance()->showReadReceipts(event_id_); }); + connect(markAsRead_, &QAction::triggered, this, [this]() { sendReadReceipt(); }); + topLayout_ = new QHBoxLayout(this); mainLayout_ = new QVBoxLayout; messageLayout_ = new QHBoxLayout; @@ -360,6 +364,8 @@ TimelineItem::markReceived() { checkmark_->setText(CHECKMARK); checkmark_->setAlignment(Qt::AlignTop); + + sendReadReceipt(); } // Only the body is displayed. @@ -500,8 +506,8 @@ TimelineItem::setUserAvatar(const QImage &avatar) void TimelineItem::contextMenuEvent(QContextMenuEvent *event) { - if (receiptsMenu_) - receiptsMenu_->exec(event->globalPos()); + if (contextMenu_) + contextMenu_->exec(event->globalPos()); } void diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index 33da7f82..7e281e03 100644 --- a/src/timeline/TimelineView.cc +++ b/src/timeline/TimelineView.cc
@@ -19,8 +19,10 @@ #include <QFileInfo> #include <QTimer> +#include "ChatPage.h" #include "Config.h" #include "FloatingButton.h" +#include "UserSettingsPage.h" #include "Utils.h" #include "timeline/TimelineView.h" @@ -504,6 +506,7 @@ TimelineView::addUserMessage(mtx::events::MessageType ty, const QString &body) TimelineItem *view_item = new TimelineItem(ty, local_user_, body, with_sender, scroll_widget_); + view_item->setRoomId(room_id_); addTimelineItem(view_item); @@ -628,6 +631,9 @@ TimelineView::paintEvent(QPaintEvent *) void TimelineView::readLastEvent() const { + if (!ChatPage::instance()->userSettings()->isReadReceiptsEnabled()) + return; + const auto eventId = getLastEventId(); if (!eventId.isEmpty())