Browse Source

room-history: Show member details when clicking on a read receipt

merge-requests/1461/merge
Paul van Tilburg 2 years ago
parent
commit
8cb59dc4c3
No known key found for this signature in database
GPG Key ID: C6DE073EDA9EEC4D
  1. 30
      src/session/view/content/room_history/read_receipts_list/read_receipts_popover.rs
  2. 2
      src/session/view/content/room_history/read_receipts_list/read_receipts_popover.ui

30
src/session/view/content/room_history/read_receipts_list/read_receipts_popover.rs

@ -1,6 +1,17 @@
use gtk::{gio, glib, prelude::*, subclass::prelude::*, CompositeTemplate};
use adw::prelude::*;
use gtk::{
gio,
glib::{self, clone},
subclass::prelude::*,
CompositeTemplate,
};
use crate::session::view::content::room_history::member_timestamp::row::MemberTimestampRow;
use crate::{
components::UserProfileDialog,
session::view::content::room_history::member_timestamp::{
row::MemberTimestampRow, MemberTimestamp,
},
};
mod imp {
use glib::subclass::InitializingObject;
@ -49,9 +60,24 @@ mod imp {
impl ReadReceiptsPopover {
/// Set the receipts to display.
fn set_receipts(&self, receipts: gio::ListStore) {
let obj = self.obj();
self.receipts.set(Some(&receipts));
self.list
.set_model(Some(&gtk::NoSelection::new(Some(receipts))));
self.list
.connect_activate(clone!(@weak obj => move |_, pos| {
let Some(member) = obj.receipts()
.and_then(|list| list.item(pos))
.and_downcast::<MemberTimestamp>()
.and_then(|ts| ts.member())
else { return; };
let dialog = UserProfileDialog::new();
dialog.set_room_member(member);
dialog.present(&obj);
obj.popdown();
}));
}
}
}

2
src/session/view/content/room_history/read_receipts_list/read_receipts_popover.ui

@ -15,13 +15,13 @@
<property name="max-content-height">280</property>
<property name="child">
<object class="GtkListView" id="list">
<property name="single-click-activate">True</property>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="activatable">False</property>
<property name="selectable">False</property>
<property name="child">
<object class="ContentMemberTimestampRow">

Loading…
Cancel
Save