From b2163a7ca561cf18e425f28fc71d1230b0def0d1 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Sat, 14 Jun 2025 21:48:14 +0200 Subject: File Send Dialog: Make file widget static --- main/src/ui/conversation_content_view/file_default_widget.vala | 10 +++++++++- main/src/ui/conversation_content_view/file_widget.vala | 1 + main/src/ui/file_send_overlay.vala | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) (limited to 'main') diff --git a/main/src/ui/conversation_content_view/file_default_widget.vala b/main/src/ui/conversation_content_view/file_default_widget.vala index aaf36b57..f9e4015e 100644 --- a/main/src/ui/conversation_content_view/file_default_widget.vala +++ b/main/src/ui/conversation_content_view/file_default_widget.vala @@ -20,7 +20,7 @@ public class FileDefaultWidget : Box { private FileTransfer.State state; - public FileDefaultWidget() { + public void init_updating_file_info() { EventControllerMotion this_motion_events = new EventControllerMotion(); this.add_controller(this_motion_events); this_motion_events.enter.connect(on_pointer_entered_event); @@ -39,6 +39,14 @@ public class FileDefaultWidget : Box { }); } + public void set_static_file_info(string? mime_type) { + spinner.stop(); // A hidden spinning spinner still uses CPU. Deactivate asap + + image_stack.set_visible_child_name("content_type_image"); + content_type_image.icon_name = get_file_icon_name(mime_type); + mime_label.label = mime_type != null ? ContentType.get_description(mime_type) : null; + } + public void update_file_info(string? mime_type, FileTransfer.State state, bool direction, int64 size, int64 transferred_bytes) { this.state = state; diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala index 2b62f769..f031db21 100644 --- a/main/src/ui/conversation_content_view/file_widget.vala +++ b/main/src/ui/conversation_content_view/file_widget.vala @@ -213,6 +213,7 @@ public class FileDefaultWidgetController : Object { public void set_file_transfer(FileTransfer file_transfer) { this.file_transfer = file_transfer; + widget.init_updating_file_info(); widget.name_label.label = file_transfer.file_name; file_transfer.bind_property("state", this, "file-transfer-state"); diff --git a/main/src/ui/file_send_overlay.vala b/main/src/ui/file_send_overlay.vala index e2d976b7..d8a6ba6b 100644 --- a/main/src/ui/file_send_overlay.vala +++ b/main/src/ui/file_send_overlay.vala @@ -73,7 +73,7 @@ public class FileSendOverlay { if (widget == null) { FileDefaultWidget default_widget = new FileDefaultWidget(); default_widget.name_label.label = file_name; - default_widget.update_file_info(mime_type, FileTransfer.State.COMPLETE, FileTransfer.DIRECTION_SENT, (long)file_info.get_size(), 0); + default_widget.set_static_file_info(mime_type); widget = default_widget; } -- cgit v1.3