diff options
author | Stefano Facchini <stefano.facchini@gmail.com> | 2020-06-26 15:10:13 +0200 |
---|---|---|
committer | Stefano Facchini <stefano.facchini@gmail.com> | 2020-06-30 16:01:23 +0200 |
commit | 4590b1048849caab20792336656a03bb2cfdcdb7 (patch) | |
tree | e2f20b9ff2efcbc19f275002a1d0084e4c8fdcc7 /src | |
parent | 390b4384f6931ff581d669c9d2fddcdde6d6d5af (diff) | |
download | baobab-4590b1048849caab20792336656a03bb2cfdcdb7.tar.gz |
Drop the "scanning" page and report progress in FolderDisplay
We reduce a bit the amount of transitiong, and it looks better when rescanning.
Diffstat (limited to 'src')
-rw-r--r-- | src/baobab-folder-display.vala | 13 | ||||
-rw-r--r-- | src/baobab-location.vala | 1 | ||||
-rw-r--r-- | src/baobab-window.vala | 35 |
3 files changed, 19 insertions, 30 deletions
diff --git a/src/baobab-folder-display.vala b/src/baobab-folder-display.vala index 651308b..974e43c 100644 --- a/src/baobab-folder-display.vala +++ b/src/baobab-folder-display.vala @@ -39,15 +39,28 @@ namespace Baobab { public signal void activated (); + private ulong location_progress_handler; + Location location_; public Location location { set { + if (location_progress_handler > 0) { + SignalHandler.disconnect (location_, location_progress_handler); + location_progress_handler = 0; + } + location_ = value; var list_store = (Gtk.ListStore) model; list_store.clear (); list_store.insert_with_values (null, -1, Scanner.Columns.NAME, location.name); + + location_progress_handler = location_.progress.connect (() => { + Gtk.TreeIter iter; + list_store.set (iter, Scanner.Columns.SIZE, location_.scanner.total_size); + }); + } get { diff --git a/src/baobab-location.vala b/src/baobab-location.vala index 5d04747..2c4dced 100644 --- a/src/baobab-location.vala +++ b/src/baobab-location.vala @@ -46,6 +46,7 @@ namespace Baobab { public Scanner? scanner { get; private set; } public signal void changed (); + public signal void progress (); private bool querying_fs = false; diff --git a/src/baobab-window.vala b/src/baobab-window.vala index dfa3bf0..5603f0b 100644 --- a/src/baobab-window.vala +++ b/src/baobab-window.vala @@ -41,8 +41,6 @@ namespace Baobab { [GtkChild] private Gtk.Widget home_page; [GtkChild] - private Gtk.Widget scanning_page; - [GtkChild] private Gtk.Widget result_page; [GtkChild] private Gtk.InfoBar infobar; @@ -55,8 +53,6 @@ namespace Baobab { [GtkChild] private LocationList location_list; [GtkChild] - private Gtk.Label scanning_progress_label; - [GtkChild] private FolderDisplay folder_display; [GtkChild] private Gtk.TreeView treeview; @@ -90,7 +86,6 @@ namespace Baobab { private Location? active_location = null; private ulong scan_completed_handler = 0; private uint scanning_progress_id = 0; - private uint scanning_page_timeout_id = 0; static Gdk.Cursor busy_cursor; @@ -266,11 +261,6 @@ namespace Baobab { scan_completed_handler = 0; } - if (scanning_page_timeout_id > 0) { - Source.remove (scanning_page_timeout_id); - scanning_page_timeout_id = 0; - } - active_location = null; } @@ -558,7 +548,7 @@ namespace Baobab { void set_ui_state (Gtk.Widget child, bool busy) { menu_button.visible = (child == home_page); reload_button.visible = (child == result_page); - back_button.visible = (child == result_page) || (child == scanning_page); + back_button.visible = (child == result_page); set_busy (busy); @@ -576,11 +566,6 @@ namespace Baobab { } } - if (child == scanning_page || child == result_page) { - main_stack.transition_type = Gtk.StackTransitionType.CROSSFADE; - } else { - main_stack.transition_type = Gtk.StackTransitionType.SLIDE_LEFT_RIGHT; - } main_stack.visible_child = child; } @@ -617,11 +602,6 @@ namespace Baobab { scanning_progress_id = 0; } - if (scanning_page_timeout_id > 0) { - Source.remove (scanning_page_timeout_id); - scanning_page_timeout_id = 0; - } - try { scanner.finish(); } catch (IOError.CANCELLED e) { @@ -666,22 +646,17 @@ namespace Baobab { treeview.model = null; - var scanner = active_location.scanner; + var scanner = location.scanner; scan_completed_handler = scanner.completed.connect (scanner_completed); clear_message (); - scanning_page_timeout_id = Timeout.add (500, () => { - scanning_page_timeout_id = 0; - set_ui_state (scanning_page, true); - return Source.REMOVE; - }); - - scanning_progress_id = Timeout.add (100, () => { - scanning_progress_label.label = format_size (scanner.total_size); + scanning_progress_id = Timeout.add (500, () => { + location.progress (); return Source.CONTINUE; }); + set_ui_state (result_page, true); scanner.scan (force); } |