aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/file_default_widget.vala
diff options
context:
space:
mode:
authorwkg <1515379+wkg@users.noreply.github.com>2022-01-09 16:34:09 +0300
committerGitHub <noreply@github.com>2022-01-09 14:34:09 +0100
commit25db512297781ea9e4a01c6e6719cb7e43db6db4 (patch)
treeb0ecd2beafcb86a826a44ca857b0ccdded22da68 /main/src/ui/conversation_content_view/file_default_widget.vala
parent975b37c498f2611bc7f13017d4491961426a8a7f (diff)
downloaddino-25db512297781ea9e4a01c6e6719cb7e43db6db4.tar.gz
dino-25db512297781ea9e4a01c6e6719cb7e43db6db4.zip
Introduce file widget menu with "Save as..." and "Open" actions (#1080)
Diffstat (limited to 'main/src/ui/conversation_content_view/file_default_widget.vala')
-rw-r--r--main/src/ui/conversation_content_view/file_default_widget.vala20
1 files changed, 20 insertions, 0 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 892c7ba2..9832e527 100644
--- a/main/src/ui/conversation_content_view/file_default_widget.vala
+++ b/main/src/ui/conversation_content_view/file_default_widget.vala
@@ -15,12 +15,18 @@ public class FileDefaultWidget : EventBox {
[GtkChild] public unowned Image content_type_image;
[GtkChild] public unowned Spinner spinner;
[GtkChild] public unowned EventBox stack_event_box;
+ [GtkChild] public MenuButton file_menu;
+
+ public ModelButton file_open_button;
+ public ModelButton file_save_button;
private FileTransfer.State state;
public FileDefaultWidget() {
this.enter_notify_event.connect(on_pointer_entered);
this.leave_notify_event.connect(on_pointer_left);
+ file_open_button = new ModelButton() { text=_("Open"), visible=true };
+ file_save_button = new ModelButton() { text=_("Save as..."), visible=true };
}
public void update_file_info(string? mime_type, FileTransfer.State state, long size) {
@@ -35,6 +41,15 @@ public class FileDefaultWidget : EventBox {
case FileTransfer.State.COMPLETE:
mime_label.label = mime_description;
image_stack.set_visible_child_name("content_type_image");
+ Gtk.PopoverMenu popover_menu = new Gtk.PopoverMenu();
+ Box file_menu_box = new Box(Orientation.VERTICAL, 0) { margin=10, visible=true };
+ file_menu_box.add(file_open_button);
+ file_menu_box.add(file_save_button);
+ popover_menu.add(file_menu_box);
+ file_menu.popover = popover_menu;
+ file_menu.clicked.connect(() => {
+ popover_menu.visible = true;
+ });
break;
case FileTransfer.State.IN_PROGRESS:
mime_label.label = _("Downloading %s…").printf(get_size_string(size));
@@ -67,17 +82,22 @@ public class FileDefaultWidget : EventBox {
if (state == FileTransfer.State.NOT_STARTED) {
image_stack.set_visible_child_name("download_image");
}
+ if (state == FileTransfer.State.COMPLETE) {
+ file_menu.visible = true;
+ }
return false;
}
private bool on_pointer_left(Gdk.EventCrossing event) {
if (event.detail == Gdk.NotifyType.INFERIOR) return false;
+ if (file_menu.popover.visible == true) return false;
event.get_window().set_cursor(new Cursor.for_display(Gdk.Display.get_default(), CursorType.XTERM));
content_type_image.opacity = 0.5;
if (state == FileTransfer.State.NOT_STARTED) {
image_stack.set_visible_child_name("content_type_image");
}
+ file_menu.visible = false;
return false;
}