From 2a5da4b12eee8e1a0eaba50b2a7a0955c1c7d24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= Date: Wed, 26 Mar 2025 16:07:48 +0100 Subject: [PATCH] event-details-dialog: Add button to open sender profile instead of copying the user ID --- .../scalable/status/user-info-symbolic.svg | 1 + data/resources/resources.gresource.xml | 1 + src/session/view/event_details_dialog.rs | 14 +++++++++++++- src/session/view/event_details_dialog.ui | 19 +++++++++++++++---- 4 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 data/resources/icons/scalable/status/user-info-symbolic.svg diff --git a/data/resources/icons/scalable/status/user-info-symbolic.svg b/data/resources/icons/scalable/status/user-info-symbolic.svg new file mode 100644 index 00000000..09d693cd --- /dev/null +++ b/data/resources/icons/scalable/status/user-info-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/resources/resources.gresource.xml b/data/resources/resources.gresource.xml index 0b13cce4..60d8ddd3 100644 --- a/data/resources/resources.gresource.xml +++ b/data/resources/resources.gresource.xml @@ -61,6 +61,7 @@ icons/scalable/status/sync-off-symbolic.svg icons/scalable/status/sync-on-symbolic.svg icons/scalable/status/sync-partial-symbolic.svg + icons/scalable/status/user-info-symbolic.svg icons/scalable/status/users-symbolic.svg icons/scalable/status/verified-danger-symbolic.svg icons/scalable/status/verified-symbolic.svg diff --git a/src/session/view/event_details_dialog.rs b/src/session/view/event_details_dialog.rs index fd6518a5..dd82ae4c 100644 --- a/src/session/view/event_details_dialog.rs +++ b/src/session/view/event_details_dialog.rs @@ -4,7 +4,7 @@ use gtk::{glib, CompositeTemplate}; use sourceview::prelude::*; use crate::{ - components::{CopyableRow, ToastableDialog}, + components::{CopyableRow, ToastableDialog, UserProfileDialog}, prelude::*, session::model::Event, toast, utils, @@ -82,6 +82,18 @@ mod imp { self.navigation_view.push_by_tag("source"); } + /// Open the profile of the sender. + #[template_callback] + fn open_sender_profile(&self) { + let Some(sender) = self.event.borrow().as_ref().map(Event::sender) else { + return; + }; + + let dialog = UserProfileDialog::new(); + dialog.set_room_member(sender); + dialog.present(Some(&*self.obj())); + } + /// View the original source. #[template_callback] fn show_original_source(&self) { diff --git a/src/session/view/event_details_dialog.ui b/src/session/view/event_details_dialog.ui index 97b487cf..5d3f9c14 100644 --- a/src/session/view/event_details_dialog.ui +++ b/src/session/view/event_details_dialog.ui @@ -88,16 +88,27 @@ - - subtitle + Sender ID EventDetailsDialog - Copy Sender ID - Sender ID copied to clipboard + + + + center + user-info-symbolic + View Profile + + + +