From 3f80725c33c3c491bb6c186a46f20272bb2dfc46 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Fri, 27 Apr 2018 22:15:44 +0300 Subject: Add support for displaying m.sticker events fixes #291 --- include/timeline/TimelineItem.h | 6 ++++++ include/timeline/widgets/ImageItem.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'include') diff --git a/include/timeline/TimelineItem.h b/include/timeline/TimelineItem.h index 952fb661..ac512ab8 100644 --- a/include/timeline/TimelineItem.h +++ b/include/timeline/TimelineItem.h @@ -32,6 +32,7 @@ #include "Utils.h" class ImageItem; +class StickerItem; class AudioItem; class VideoItem; class FileItem; @@ -89,6 +90,11 @@ public: bool with_sender, const QString &room_id, QWidget *parent); + TimelineItem(StickerItem *img, + const mtx::events::Sticker &e, + bool with_sender, + const QString &room_id, + QWidget *parent); TimelineItem(FileItem *file, const mtx::events::RoomEvent &e, bool with_sender, diff --git a/include/timeline/widgets/ImageItem.h b/include/timeline/widgets/ImageItem.h index d8a12c22..146aa7f6 100644 --- a/include/timeline/widgets/ImageItem.h +++ b/include/timeline/widgets/ImageItem.h @@ -57,6 +57,9 @@ protected: void mousePressEvent(QMouseEvent *event) override; void resizeEvent(QResizeEvent *event) override; + //! Whether the user can interact with the displayed image. + bool isInteractive_ = true; + private: void openUrl(); @@ -81,3 +84,28 @@ private: QSharedPointer client_; }; + +class StickerItem : public ImageItem +{ + Q_OBJECT + +public: + StickerItem(QSharedPointer client, + const mtx::events::Sticker &event, + QWidget *parent = nullptr) + : ImageItem{client, + QString::fromStdString(event.content.url), + QString::fromStdString(event.content.body), + event.content.info.size, + parent} + , event_{event} + { + isInteractive_ = false; + setCursor(Qt::ArrowCursor); + setMouseTracking(false); + setAttribute(Qt::WA_Hover, false); + } + +private: + mtx::events::Sticker event_; +}; -- cgit 1.5.1