summary refs log tree commit diff
path: root/src/timeline/TimelineItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/timeline/TimelineItem.cpp')
-rw-r--r--src/timeline/TimelineItem.cpp36
1 files changed, 36 insertions, 0 deletions
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<mtx::events::RoomEvent<mtx::events::msg::Image>, ImageItem>( image, event, with_sender); + markOwnMessagesAsReceived(event.sender); + addSaveImageAction(image); } @@ -315,6 +322,8 @@ TimelineItem::TimelineItem(StickerItem *image, { setupWidgetLayout<mtx::events::Sticker, StickerItem>(image, event, with_sender); + markOwnMessagesAsReceived(event.sender); + addSaveImageAction(image); } @@ -328,6 +337,8 @@ TimelineItem::TimelineItem(FileItem *file, { setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::File>, FileItem>( file, event, with_sender); + + markOwnMessagesAsReceived(event.sender); } TimelineItem::TimelineItem(AudioItem *audio, @@ -340,6 +351,8 @@ TimelineItem::TimelineItem(AudioItem *audio, { setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Audio>, AudioItem>( audio, event, with_sender); + + markOwnMessagesAsReceived(event.sender); } TimelineItem::TimelineItem(VideoItem *video, @@ -352,6 +365,8 @@ TimelineItem::TimelineItem(VideoItem *video, { setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Video>, VideoItem>( video, event, with_sender); + + markOwnMessagesAsReceived(event.sender); } /* @@ -367,6 +382,8 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice init(); addReplyAction(); + markOwnMessagesAsReceived(event.sender); + event_id_ = QString::fromStdString(event.event_id); const auto sender = QString::fromStdString(event.sender); const auto timestamp = QDateTime::fromMSecsSinceEpoch(event.origin_server_ts); @@ -413,6 +430,8 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote> 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<mtx::events::msg::Text> init(); addReplyAction(); + markOwnMessagesAsReceived(event.sender); + event_id_ = QString::fromStdString(event.event_id); const auto sender = QString::fromStdString(event.sender); @@ -496,6 +517,21 @@ TimelineItem::markSent() } 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) { isReceived_ = true;