aboutsummaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/ui/conversation_content_view/file_default_widget.vala15
-rw-r--r--main/src/ui/conversation_content_view/file_widget.vala12
-rw-r--r--main/src/ui/file_send_overlay.vala3
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;
}