From eaf05748ff1fc2b1ced8fdb329661ff20d6b7b85 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Wed, 3 Jan 2018 18:05:49 +0200 Subject: Initial support for read receipts --- src/timeline/TimelineItem.cc | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/timeline') diff --git a/src/timeline/TimelineItem.cc b/src/timeline/TimelineItem.cc index a42edbb7..202b331d 100644 --- a/src/timeline/TimelineItem.cc +++ b/src/timeline/TimelineItem.cc @@ -15,10 +15,13 @@ * along with this program. If not, see . */ +#include #include +#include #include #include "Avatar.h" +#include "ChatPage.h" #include "Config.h" #include "timeline/TimelineItem.h" @@ -39,6 +42,14 @@ TimelineItem::init() QFontMetrics fm(font_); + receiptsMenu_ = new QMenu(this); + showReadReceipts_ = new QAction("Read receipts", this); + receiptsMenu_->addAction(showReadReceipts_); + connect(showReadReceipts_, &QAction::triggered, this, [=]() { + if (!event_id_.isEmpty()) + ChatPage::instance()->showReadReceipts(event_id_); + }); + topLayout_ = new QHBoxLayout(this); sideLayout_ = new QVBoxLayout; mainLayout_ = new QVBoxLayout; @@ -88,7 +99,7 @@ TimelineItem::TimelineItem(mtx::events::MessageType ty, setupAvatarLayout(displayName); mainLayout_->addLayout(headerLayout_); - AvatarProvider::resolve(userid, this); + AvatarProvider::resolve(userid, [=](const QImage &img) { setUserAvatar(img); }); } else { generateBody(body); setupSimpleLayout(); @@ -213,7 +224,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEventaddLayout(headerLayout_); - AvatarProvider::resolve(sender, this); + AvatarProvider::resolve(sender, [=](const QImage &img) { setUserAvatar(img); }); } else { generateBody(body); setupSimpleLayout(); @@ -252,7 +263,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent setupAvatarLayout(displayName); mainLayout_->addLayout(headerLayout_); - AvatarProvider::resolve(sender, this); + AvatarProvider::resolve(sender, [=](const QImage &img) { setUserAvatar(img); }); } else { generateBody(emoteMsg); setupSimpleLayout(); @@ -297,7 +308,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent mainLayout_->addLayout(headerLayout_); - AvatarProvider::resolve(sender, this); + AvatarProvider::resolve(sender, [=](const QImage &img) { setUserAvatar(img); }); } else { generateBody(body); setupSimpleLayout(); @@ -471,6 +482,13 @@ TimelineItem::descriptiveTime(const QDateTime &then) TimelineItem::~TimelineItem() {} +void +TimelineItem::contextMenuEvent(QContextMenuEvent *event) +{ + if (receiptsMenu_) + receiptsMenu_->exec(event->globalPos()); +} + void TimelineItem::paintEvent(QPaintEvent *) { -- cgit 1.5.1