[baobab/reroot-view: 3/4] Drop the "scanning" page and report progress in FolderDisplay



commit bd1da89168c7c33b2a8407078daa2677a8c5c581
Author: Stefano Facchini <stefano facchini gmail com>
Date:   Fri Jun 26 15:10:13 2020 +0200

    Drop the "scanning" page and report progress in FolderDisplay
    
    We reduce a bit the amount of transitiong, and it looks better when rescanning.

 data/baobab.css                |  4 ----
 data/ui/baobab-location-row.ui | 22 ++++++----------------
 data/ui/baobab-main-window.ui  | 32 +-------------------------------
 src/baobab-folder-display.vala | 13 +++++++++++++
 src/baobab-window.vala         | 35 +++++------------------------------
 5 files changed, 25 insertions(+), 81 deletions(-)
---
diff --git a/data/baobab.css b/data/baobab.css
index f5a10b6..f571bb6 100644
--- a/data/baobab.css
+++ b/data/baobab.css
@@ -71,10 +71,6 @@ window.background stack treeview:hover:not(:selected) {
     background: @theme_bg_color;
 }
 
-.scanning-label {
-    font-size: 150%;
-}
-
 pathbar button {
        transition: 0;
        margin: 0;
diff --git a/data/ui/baobab-location-row.ui b/data/ui/baobab-location-row.ui
index e74cf98..9bbf90b 100644
--- a/data/ui/baobab-location-row.ui
+++ b/data/ui/baobab-location-row.ui
@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.0 -->
 <interface>
-  <!-- interface-requires gtk+ 3.0 -->
+  <requires lib="gtk+" version="3.0"/>
   <template class="BaobabLocationRow" parent="GtkListBoxRow">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <child>
       <object class="GtkGrid" id="grid">
         <property name="visible">True</property>
-        <property name="orientation">horizontal</property>
+        <property name="can_focus">False</property>
         <property name="column_spacing">12</property>
         <property name="margin">6</property>
         <child>
@@ -18,7 +20,6 @@
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">0</property>
-            <property name="width">1</property>
             <property name="height">2</property>
           </packing>
         </child>
@@ -35,8 +36,6 @@
           <packing>
             <property name="left_attach">1</property>
             <property name="top_attach">0</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
@@ -54,8 +53,6 @@
           <packing>
             <property name="left_attach">1</property>
             <property name="top_attach">1</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
@@ -68,8 +65,6 @@
           <packing>
             <property name="left_attach">2</property>
             <property name="top_attach">0</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
@@ -85,25 +80,20 @@
           <packing>
             <property name="left_attach">2</property>
             <property name="top_attach">1</property>
-            <property name="width">1</property>
-            <property name="height">1</property>
           </packing>
         </child>
         <child>
           <object class="GtkLevelBar" id="usage_bar">
-            <property name="visible">False</property>
             <property name="can_focus">False</property>
-            <property name="halign">fill</property>
             <property name="valign">start</property>
+            <property name="margin_top">6</property>
+            <property name="margin_bottom">6</property>
             <property name="hexpand">True</property>
-            <property name="margin-top">6</property>
-            <property name="margin-bottom">6</property>
           </object>
           <packing>
             <property name="left_attach">0</property>
             <property name="top_attach">2</property>
             <property name="width">3</property>
-            <property name="height">1</property>
           </packing>
         </child>
       </object>
diff --git a/data/ui/baobab-main-window.ui b/data/ui/baobab-main-window.ui
index 175b547..ed09fd9 100644
--- a/data/ui/baobab-main-window.ui
+++ b/data/ui/baobab-main-window.ui
@@ -198,6 +198,7 @@
             <object class="GtkStack" id="main_stack">
               <property name="visible">True</property>
               <property name="can_focus">False</property>
+              <property name="transition_type">slide-left-right</property>
               <child>
                 <object class="GtkGrid" id="home_page">
                   <property name="can_focus">False</property>
@@ -219,37 +220,6 @@
                   </child>
                  </object>
               </child>
-              <child>
-                <object class="GtkGrid" id="scanning_page">
-                  <property name="visible">True</property>
-                  <property name="halign">center</property>
-                  <property name="valign">center</property>
-                  <style>
-                    <class name="scanning-label"/>
-                    <class name="dim-label"/>
-                  </style>
-                  <child>
-                    <object class="GtkLabel" id="scanning_label_front">
-                      <property name="visible">True</property>
-                      <property name="label" translatable="yes">In progress,</property>
-                    </object>
-                  </child>
-                  <child>
-                    <object class="GtkLabel" id="scanning_progress_label">
-                      <property name="visible">True</property>
-                      <property name="width_chars">8</property>
-                      <property name="halign">end</property>
-                      <property name="xalign">1.0</property>
-                    </object>
-                  </child>
-                  <child>
-                    <object class="GtkLabel" id="scanning_label_back">
-                      <property name="visible">True</property>
-                      <property name="label" translatable="yes"> scanned so far</property>
-                    </object>
-                  </child>
-                </object>
-              </child>
               <child>
                 <object class="GtkGrid" id="result_page">
                   <property name="visible">True</property>
diff --git a/src/baobab-folder-display.vala b/src/baobab-folder-display.vala
index 651308b..a91614b 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_changed_handler;
+
         Location location_;
         public Location location {
             set {
+                if (location_changed_handler > 0) {
+                    SignalHandler.disconnect (location_, location_changed_handler);
+                    location_changed_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_changed_handler = location_.changed.connect (() => {
+                    Gtk.TreeIter iter;
+                    list_store.set (iter, Scanner.Columns.SIZE, location_.scanner.total_size);
+                });
+
             }
 
             get {
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index dfa3bf0..eea2bef 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.changed ();
                 return Source.CONTINUE;
             });
 
+            set_ui_state (result_page, true);
             scanner.scan (force);
         }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]