summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
Diffstat (limited to 'src/timeline')
-rw-r--r--src/timeline/TimelineItem.cc26
1 files changed, 22 insertions, 4 deletions
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 <http://www.gnu.org/licenses/>. */ +#include <QContextMenuEvent> #include <QFontDatabase> +#include <QMenu> #include <QTextEdit> #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::RoomEvent<mtx::events::msg::Notice mainLayout_->addLayout(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<mtx::events::msg::Emote> 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<mtx::events::msg::Text> mainLayout_->addLayout(headerLayout_); - AvatarProvider::resolve(sender, this); + AvatarProvider::resolve(sender, [=](const QImage &img) { setUserAvatar(img); }); } else { generateBody(body); setupSimpleLayout(); @@ -472,6 +483,13 @@ TimelineItem::descriptiveTime(const QDateTime &then) TimelineItem::~TimelineItem() {} void +TimelineItem::contextMenuEvent(QContextMenuEvent *event) +{ + if (receiptsMenu_) + receiptsMenu_->exec(event->globalPos()); +} + +void TimelineItem::paintEvent(QPaintEvent *) { QStyleOption opt;