diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/ui/conversation_content_view/file_default_widget.vala | 15 | ||||
| -rw-r--r-- | main/src/ui/conversation_content_view/file_widget.vala | 12 | ||||
| -rw-r--r-- | main/src/ui/file_send_overlay.vala | 3 |
3 files changed, 24 insertions, 6 deletions
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 638dab15..79d22fe4 100644 --- a/main/src/ui/conversation_content_view/file_default_widget.vala +++ b/main/src/ui/conversation_content_view/file_default_widget.vala @@ -31,7 +31,8 @@ public class FileDefaultWidget : EventBox { cancel_button = new ModelButton() { text=_("Cancel"), visible=true }; } - public void update_file_info(string? mime_type, FileTransfer.State state, long size) { + public void update_file_info(string? mime_type, uint64 transferred_bytes, + bool direction, FileTransfer.State state, long size) { this.state = state; spinner.active = false; // A hidden spinning spinner still uses CPU. Deactivate asap @@ -58,7 +59,17 @@ public class FileDefaultWidget : EventBox { popover_menu.closed.connect(on_pointer_left); break; case FileTransfer.State.IN_PROGRESS: - mime_label.label = _("Downloading %s…").printf(get_size_string(size)); + uint progress = 0; + + if (size > 0) + progress = (uint)((transferred_bytes * (uint64)100) / (uint64)size); + + if (direction == FileTransfer.DIRECTION_SENT) { + mime_label.label = _("Uploading %s (%u%%)…").printf(get_size_string(size), progress); + } + else { + mime_label.label = _("Downloading %s (%u%%)…").printf(get_size_string(size), progress); + } spinner.active = true; image_stack.set_visible_child_name("spinner"); diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala index cac6fda4..54953d72 100644 --- a/main/src/ui/conversation_content_view/file_widget.vala +++ b/main/src/ui/conversation_content_view/file_widget.vala @@ -65,7 +65,8 @@ public class FileWidget : SizeRequestBox { } private async void update_widget() { - if (show_image() && state != State.IMAGE) { + if (show_image() && state != State.IMAGE + && file_transfer.state == FileTransfer.State.COMPLETE) { var content_bak = content; FileImageWidget file_image_widget = null; @@ -120,6 +121,7 @@ public class FileDefaultWidgetController : Object { public string file_transfer_path { get; set; } public string file_transfer_state { get; set; } public string file_transfer_mime_type { get; set; } + public uint64 file_transfer_transferred_bytes { get; set; } private StreamInteractor? stream_interactor; private string file_uri; @@ -143,10 +145,12 @@ public class FileDefaultWidgetController : Object { file_transfer.bind_property("path", this, "file-transfer-path"); file_transfer.bind_property("state", this, "file-transfer-state"); file_transfer.bind_property("mime-type", this, "file-transfer-mime-type"); + file_transfer.bind_property("transferred-bytes", this, "file-transfer-transferred-bytes"); this.notify["file-transfer-path"].connect(update_file_info); this.notify["file-transfer-state"].connect(update_file_info); this.notify["file-transfer-mime-type"].connect(update_file_info); + this.notify["file-transfer-transferred-bytes"].connect(update_file_info); update_file_info(); } @@ -155,13 +159,15 @@ public class FileDefaultWidgetController : Object { file_uri = file.get_uri(); state = FileTransfer.State.COMPLETE; widget.name_label.label = this.file_name = file_name; - widget.update_file_info(mime_type, state, -1); + widget.update_file_info(mime_type, 0, false, state, -1); } private void update_file_info() { file_uri = file_transfer.get_file().get_uri(); state = file_transfer.state; - widget.update_file_info(file_transfer.mime_type, file_transfer.state, file_transfer.size); + widget.update_file_info(file_transfer.mime_type, + file_transfer.transferred_bytes, + file_transfer.direction, file_transfer.state, file_transfer.size); } private void open_file() { diff --git a/main/src/ui/file_send_overlay.vala b/main/src/ui/file_send_overlay.vala index 369d291a..ac3a275b 100644 --- a/main/src/ui/file_send_overlay.vala +++ b/main/src/ui/file_send_overlay.vala @@ -74,7 +74,8 @@ public class FileSendOverlay : Gtk.EventBox { if (widget == null) { FileDefaultWidget default_widget = new FileDefaultWidget() { visible=true }; default_widget.name_label.label = file_name; - default_widget.update_file_info(mime_type, FileTransfer.State.COMPLETE, (long)file_info.get_size()); + default_widget.update_file_info(mime_type, 0, FileTransfer.DIRECTION_SENT, + FileTransfer.State.COMPLETE, (long)file_info.get_size()); widget = default_widget; } |
