diff --git a/include/timeline/TimelineItem.h b/include/timeline/TimelineItem.h
index a80a42c0..69bb89e2 100644
--- a/include/timeline/TimelineItem.h
+++ b/include/timeline/TimelineItem.h
@@ -26,6 +26,7 @@
#include <QStyleOption>
#include "AvatarProvider.h"
+#include "ChatPage.h"
#include "RoomInfoListItem.h"
#include "TimelineViewManager.h"
#include "Utils.h"
@@ -85,6 +86,12 @@ public:
QString eventId() const { return event_id_; }
void setEventId(const QString &event_id) { event_id_ = event_id; }
void markReceived();
+ void setRoomId(const QString &room_id) { room_id_ = room_id; }
+ void sendReadReceipt() const
+ {
+ if (!event_id_.isEmpty())
+ ChatPage::instance()->readEvent(room_id_, event_id_);
+ }
protected:
void paintEvent(QPaintEvent *event) override;
@@ -114,11 +121,13 @@ private:
QString replaceEmoji(const QString &body);
QString event_id_;
+ QString room_id_;
DescInfo descriptionMsg_;
- QMenu *receiptsMenu_;
+ QMenu *contextMenu_;
QAction *showReadReceipts_;
+ QAction *markAsRead_;
QHBoxLayout *topLayout_;
//! The message and the timestamp/checkmark.
diff --git a/include/timeline/TimelineView.h b/include/timeline/TimelineView.h
index 7a492de5..2876cc60 100644
--- a/include/timeline/TimelineView.h
+++ b/include/timeline/TimelineView.h
@@ -252,6 +252,7 @@ TimelineView::addUserMessage(const QString &url,
TimelineItem *view_item =
new TimelineItem(widget, local_user_, with_sender, scroll_widget_);
+ view_item->setRoomId(room_id_);
addTimelineItem(view_item);
@@ -272,6 +273,7 @@ TimelineItem *
TimelineView::createTimelineItem(const Event &event, bool withSender)
{
TimelineItem *item = new TimelineItem(event, withSender, scroll_widget_);
+ item->setRoomId(room_id_);
return item;
}
@@ -281,6 +283,7 @@ TimelineView::createTimelineItem(const Event &event, bool withSender)
{
auto eventWidget = new Widget(client_, event);
auto item = new TimelineItem(eventWidget, event, withSender, scroll_widget_);
+ item->setRoomId(room_id_);
return item;
}
|