diff options
author | wkg <1515379+wkg@users.noreply.github.com> | 2022-01-09 16:34:09 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-09 14:34:09 +0100 |
commit | 25db512297781ea9e4a01c6e6719cb7e43db6db4 (patch) | |
tree | b0ecd2beafcb86a826a44ca857b0ccdded22da68 /main/src/ui/conversation_content_view/file_default_widget.vala | |
parent | 975b37c498f2611bc7f13017d4491961426a8a7f (diff) | |
download | dino-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.vala | 20 |
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; } |