From 8d49d83b3b45ab22d7b9d945c4b32296b07cb49e Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 14 Aug 2026 11:45:08 +0200 Subject: Add initial support for multi-file transfers --- .../conversation_selector_row.vala | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'main/src/ui/conversation_selector') diff --git a/main/src/ui/conversation_selector/conversation_selector_row.vala b/main/src/ui/conversation_selector/conversation_selector_row.vala index fd5814fa..0e565c84 100644 --- a/main/src/ui/conversation_selector/conversation_selector_row.vala +++ b/main/src/ui/conversation_selector/conversation_selector_row.vala @@ -226,6 +226,25 @@ public class ConversationSelectorRow : ListBoxRow { message_label.label = (file_is_image ? _("Image received") : _("File received") ); } break; + case FileGroupItem.TYPE: + FileGroupItem file_group_item = last_content_item as FileGroupItem; + FileTransfer first_transfer = file_group_item.file_group.file_transfers.get(0); + + if (conversation.type_ == Conversation.Type.GROUPCHAT) { + // TODO properly display nick for oneself + nick_label.label = Util.get_participant_display_name(stream_interactor, conversation, first_transfer.from, true) + ": "; + } else { + nick_label.label = first_transfer.direction == Message.DIRECTION_SENT ? _("Me") + ": " : ""; + } + + bool all_files_images = Ui.all_files_images(file_group_item.file_group.file_transfers); + change_label_attribute(message_label, attr_style_new(Pango.Style.ITALIC)); + if (first_transfer.direction == Message.DIRECTION_SENT) { + message_label.label = (all_files_images ? _("Images sent") : _("Files sent") ); + } else { + message_label.label = (all_files_images ? _("Images received") : _("Files received") ); + } + break; case CallItem.TYPE: CallItem call_item = (CallItem) last_content_item; Call call = call_item.call; -- cgit v1.3 From 873f980faad23135edc1028de6c7f51c16df8ac3 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Fri, 23 Oct 2026 16:56:45 +0200 Subject: main: Improve conversation selector performance on startup --- main/src/ui/conversation_selector/conversation_selector.vala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'main/src/ui/conversation_selector') diff --git a/main/src/ui/conversation_selector/conversation_selector.vala b/main/src/ui/conversation_selector/conversation_selector.vala index 5d88c540..70e192b7 100644 --- a/main/src/ui/conversation_selector/conversation_selector.vala +++ b/main/src/ui/conversation_selector/conversation_selector.vala @@ -22,7 +22,7 @@ public class ConversationSelector : Widget { list_box.add_css_class("navigation-sidebar"); this.layout_manager = new BinLayout(); - stream_interactor.get_module(ConversationManager.IDENTITY).conversation_activated.connect(add_conversation); + stream_interactor.get_module(ConversationManager.IDENTITY).conversation_activated.connect(on_conversation_activated); stream_interactor.get_module(ConversationManager.IDENTITY).conversation_deactivated.connect(remove_conversation); stream_interactor.get_module(ContentItemStore.IDENTITY).new_item.connect(on_content_item_received); Timeout.add_seconds(60, () => { @@ -33,6 +33,7 @@ public class ConversationSelector : Widget { foreach (Conversation conversation in stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations()) { add_conversation(conversation); } + list_box.invalidate_sort(); return this; } @@ -62,6 +63,7 @@ public class ConversationSelector : Widget { public void on_conversation_selected(Conversation conversation) { if (!rows.has_key(conversation)) { add_conversation(conversation); + list_box.invalidate_sort(); } list_box.select_row(rows[conversation]); } @@ -72,6 +74,11 @@ public class ConversationSelector : Widget { } } + private void on_conversation_activated(Conversation conversation) { + add_conversation(conversation); + list_box.invalidate_sort(); + } + private void add_conversation(Conversation conversation) { ConversationSelectorRow row; if (!rows.has_key(conversation)) { @@ -101,7 +108,6 @@ public class ConversationSelector : Widget { }); row.add_controller(drop_motion_controller); } - list_box.invalidate_sort(); } private void select_fallback_conversation(Conversation conversation) { -- cgit v1.3