From e4dedbcaba544b8cd9b7fea20ece4dad262b2c34 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Tue, 17 Jul 2018 23:50:18 +0300 Subject: Mark own read messages with a double checkmark (#377) --- src/timeline/TimelineItem.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/timeline/TimelineItem.cpp') diff --git a/src/timeline/TimelineItem.cpp b/src/timeline/TimelineItem.cpp index 88ab1963..696db8de 100644 --- a/src/timeline/TimelineItem.cpp +++ b/src/timeline/TimelineItem.cpp @@ -42,6 +42,7 @@ StatusIndicator::StatusIndicator(QWidget *parent) lockIcon_.addFile(":/icons/icons/ui/lock.png"); clockIcon_.addFile(":/icons/icons/ui/clock.png"); checkmarkIcon_.addFile(":/icons/icons/ui/checkmark.png"); + doubleCheckmarkIcon_.addFile(":/icons/icons/ui/double-tick-indicator.png"); } void @@ -79,6 +80,10 @@ StatusIndicator::paintEvent(QPaintEvent *) paintIcon(p, checkmarkIcon_); break; } + case StatusIndicatorState::Read: { + paintIcon(p, doubleCheckmarkIcon_); + break; + } case StatusIndicatorState::Empty: break; } @@ -302,6 +307,8 @@ TimelineItem::TimelineItem(ImageItem *image, setupWidgetLayout, ImageItem>( image, event, with_sender); + markOwnMessagesAsReceived(event.sender); + addSaveImageAction(image); } @@ -315,6 +322,8 @@ TimelineItem::TimelineItem(StickerItem *image, { setupWidgetLayout(image, event, with_sender); + markOwnMessagesAsReceived(event.sender); + addSaveImageAction(image); } @@ -328,6 +337,8 @@ TimelineItem::TimelineItem(FileItem *file, { setupWidgetLayout, FileItem>( file, event, with_sender); + + markOwnMessagesAsReceived(event.sender); } TimelineItem::TimelineItem(AudioItem *audio, @@ -340,6 +351,8 @@ TimelineItem::TimelineItem(AudioItem *audio, { setupWidgetLayout, AudioItem>( audio, event, with_sender); + + markOwnMessagesAsReceived(event.sender); } TimelineItem::TimelineItem(VideoItem *video, @@ -352,6 +365,8 @@ TimelineItem::TimelineItem(VideoItem *video, { setupWidgetLayout, VideoItem>( video, event, with_sender); + + markOwnMessagesAsReceived(event.sender); } /* @@ -367,6 +382,8 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent init(); addReplyAction(); + markOwnMessagesAsReceived(event.sender); + event_id_ = QString::fromStdString(event.event_id); const auto sender = QString::fromStdString(event.sender); @@ -455,6 +474,8 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent init(); addReplyAction(); + markOwnMessagesAsReceived(event.sender); + event_id_ = QString::fromStdString(event.event_id); const auto sender = QString::fromStdString(event.sender); @@ -495,6 +516,21 @@ TimelineItem::markSent() statusIndicator_->setState(StatusIndicatorState::Sent); } +void +TimelineItem::markOwnMessagesAsReceived(const std::string &sender) +{ + QSettings settings; + if (sender == settings.value("auth/user_id").toString().toStdString()) + statusIndicator_->setState(StatusIndicatorState::Received); +} + +void +TimelineItem::markRead() +{ + if (statusIndicator_->state() != StatusIndicatorState::Encrypted) + statusIndicator_->setState(StatusIndicatorState::Read); +} + void TimelineItem::markReceived(bool isEncrypted) { -- cgit 1.5.1