aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_selector
diff options
context:
space:
mode:
authorfrosty <frostinator33@airmail.cc>2026-10-26 10:21:57 -0400
committerfrosty <frostinator33@airmail.cc>2026-10-26 10:21:57 -0400
commit74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch)
tree560e6434f183eb54cd779936f3a4c9575146a066 /main/src/ui/conversation_selector
parent3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff)
parent4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff)
Merge 'upstream/master'
Diffstat (limited to 'main/src/ui/conversation_selector')
-rw-r--r--main/src/ui/conversation_selector/conversation_selector.vala10
-rw-r--r--main/src/ui/conversation_selector/conversation_selector_row.vala19
2 files changed, 27 insertions, 2 deletions
diff --git a/main/src/ui/conversation_selector/conversation_selector.vala b/main/src/ui/conversation_selector/conversation_selector.vala
index c11eea82..25ea1b1e 100644
--- a/main/src/ui/conversation_selector/conversation_selector.vala
+++ b/main/src/ui/conversation_selector/conversation_selector.vala
@@ -23,7 +23,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, () => {
@@ -34,6 +34,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;
}
@@ -74,6 +75,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]);
}
@@ -84,6 +86,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)) {
@@ -113,7 +120,6 @@ public class ConversationSelector : Widget {
});
row.add_controller(drop_motion_controller);
}
- list_box.invalidate_sort();
}
private void select_fallback_conversation(Conversation conversation) {
diff --git a/main/src/ui/conversation_selector/conversation_selector_row.vala b/main/src/ui/conversation_selector/conversation_selector_row.vala
index 82c96fdc..95384a5e 100644
--- a/main/src/ui/conversation_selector/conversation_selector_row.vala
+++ b/main/src/ui/conversation_selector/conversation_selector_row.vala
@@ -257,6 +257,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;