summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefano Facchini <stefano.facchini@gmail.com>2020-06-17 12:36:34 +0200
committerStefano Facchini <stefano.facchini@gmail.com>2020-06-30 16:01:22 +0200
commit28ac2d5b41b5e4681230ee41990682e756d4ce58 (patch)
tree53503f523f208fbf2cc3f2fe7e4df0963debd3bb /src
parent155e19a08bddff85de0386c45bac3627a10606bb (diff)
downloadbaobab-28ac2d5b41b5e4681230ee41990682e756d4ce58.tar.gz
Minor refactoring
Diffstat (limited to 'src')
-rw-r--r--src/baobab-chart.vala15
-rw-r--r--src/baobab-location-list.vala13
-rw-r--r--src/baobab-window.vala61
3 files changed, 45 insertions, 44 deletions
diff --git a/src/baobab-chart.vala b/src/baobab-chart.vala
index 2b2ebbc..ea9ac3e 100644
--- a/src/baobab-chart.vala
+++ b/src/baobab-chart.vala
@@ -63,6 +63,19 @@ namespace Baobab {
List<ChartItem> items;
+ Location location_;
+ public Location location {
+ set {
+ location_ = value;
+ model = location_.scanner;
+ model.bind_property ("max-depth", this, "max-depth", BindingFlags.SYNC_CREATE);
+ }
+
+ get {
+ return location_;
+ }
+ }
+
uint max_depth_ = MAX_DEPTH;
public uint max_depth {
set {
@@ -80,7 +93,7 @@ namespace Baobab {
}
Gtk.TreeModel model_;
- public Gtk.TreeModel model {
+ protected Gtk.TreeModel model {
set {
if (model_ == value) {
return;
diff --git a/src/baobab-location-list.vala b/src/baobab-location-list.vala
index 2752fca..328c0e5 100644
--- a/src/baobab-location-list.vala
+++ b/src/baobab-location-list.vala
@@ -99,8 +99,7 @@ namespace Baobab {
[GtkChild]
private Gtk.Box remote_box;
- public delegate void LocationAction (Location l);
- private LocationAction? location_action;
+ public signal void location_activated (Location location);
private const int MAX_RECENT_LOCATIONS = 5;
@@ -275,14 +274,8 @@ namespace Baobab {
}
void row_activated (Gtk.ListBoxRow row) {
- if (location_action != null) {
- var location_widget = row as LocationRow;
- location_action (location_widget.location);
- }
- }
-
- public void set_action (owned LocationAction? action) {
- location_action = (owned)action;
+ var location_widget = row as LocationRow;
+ location_activated (location_widget.location);
}
public void update () {
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index 5674f2e..4e0541e 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -72,8 +72,9 @@ namespace Baobab {
private Chart treemap_chart;
[GtkChild]
private Gtk.Spinner spinner;
- private Location? active_location;
- private ulong scan_completed_handler;
+
+ private Location? active_location = null;
+ private ulong scan_completed_handler = 0;
static Gdk.Cursor busy_cursor;
@@ -118,7 +119,7 @@ namespace Baobab {
var action = ui_settings.create_action ("active-chart");
add_action (action);
- location_list.set_action (on_scan_location_activate);
+ location_list.location_activated.connect (location_activated);
setup_treeview ();
@@ -161,9 +162,6 @@ namespace Baobab {
ui_settings.apply ();
});
- active_location = null;
- scan_completed_handler = 0;
-
var desktop = Environment.get_variable ("XDG_CURRENT_DESKTOP");
if (desktop == null || !desktop.contains ("Unity")) {
@@ -194,10 +192,7 @@ namespace Baobab {
}
void on_show_home_page_activate () {
- if (active_location != null && active_location.scanner != null) {
- active_location.scanner.cancel ();
- }
-
+ cancel_scan ();
clear_message ();
set_ui_state (home_page, false);
}
@@ -226,25 +221,23 @@ namespace Baobab {
file_chooser.show ();
}
- void set_active_location (Location location) {
- if (scan_completed_handler > 0) {
- active_location.scanner.disconnect (scan_completed_handler);
- scan_completed_handler = 0;
- }
+ void scan_location (Location location, bool force = false) {
+ cancel_scan ();
active_location = location;
// Update the timestamp for GtkRecentManager
location_list.add_location (location);
- }
- void on_scan_location_activate (Location location) {
- set_active_location (location);
+ treeview.model = location.scanner;
+ scan_active_location (force);
+ }
+ void location_activated (Location location) {
location.mount_volume.begin ((location_, res) => {
try {
location.mount_volume.end (res);
- scan_active_location (false);
+ scan_location (location);
} catch (Error e) {
message (_("Could not analyze volume."), e.message, Gtk.MessageType.ERROR);
}
@@ -252,11 +245,17 @@ namespace Baobab {
}
void on_reload_activate () {
- if (active_location != null) {
- if (active_location.scanner != null) {
- active_location.scanner.cancel ();
- }
- scan_active_location (true);
+ scan_location (active_location, true);
+ }
+
+ void cancel_scan () {
+ if (active_location != null && active_location.scanner != null) {
+ active_location.scanner.cancel ();
+ }
+
+ if (scan_completed_handler > 0) {
+ active_location.scanner.disconnect (scan_completed_handler);
+ scan_completed_handler = 0;
}
}
@@ -502,11 +501,9 @@ namespace Baobab {
}
}
- void set_chart_model (Gtk.TreeModel model) {
- model.bind_property ("max-depth", rings_chart, "max-depth", BindingFlags.SYNC_CREATE);
- model.bind_property ("max-depth", treemap_chart, "max-depth", BindingFlags.SYNC_CREATE);
- rings_chart.model = model;
- treemap_chart.model = model;
+ void set_chart_location (Location location) {
+ rings_chart.location = location;
+ treemap_chart.location = location;
}
void scan_active_location (bool force) {
@@ -537,7 +534,7 @@ namespace Baobab {
}
}
- set_chart_model (active_location.scanner);
+ set_chart_location (active_location);
set_ui_state (result_page, false);
@@ -557,7 +554,6 @@ namespace Baobab {
scanner.scan (force);
- treeview.model = scanner;
expand_first_row ();
}
@@ -575,8 +571,7 @@ namespace Baobab {
}
var location = new Location.for_file (directory, flags);
- set_active_location (location);
- scan_active_location (false);
+ scan_location (location);
}
}
}