[gnome-utils] Get rid of the g_fs global and some other code cleanup



commit e055a83e6226d6359a7ed3d57dfaaa12831891b6
Author: Paolo Borelli <pborelli gnome org>
Date:   Sun Aug 29 19:36:43 2010 +0200

    Get rid of the g_fs global and some other code cleanup

 baobab/src/baobab-scan.h     |    1 -
 baobab/src/baobab-treeview.c |    8 ++--
 baobab/src/baobab-utils.c    |   64 ++++++---------------------------
 baobab/src/baobab-utils.h    |    4 +--
 baobab/src/baobab.c          |   80 ++++++++++++++++++++++++++++-------------
 baobab/src/baobab.h          |   22 ++++++------
 6 files changed, 81 insertions(+), 98 deletions(-)
---
diff --git a/baobab/src/baobab-scan.h b/baobab/src/baobab-scan.h
index ef66626..c6400d5 100644
--- a/baobab/src/baobab-scan.h
+++ b/baobab/src/baobab-scan.h
@@ -27,5 +27,4 @@
 
 void baobab_scan_execute (GFile *location);
 
-
 #endif /* __BAOBAB_SCAN_H__ */
diff --git a/baobab/src/baobab-treeview.c b/baobab/src/baobab-treeview.c
index d4d50db..2a3aad3 100644
--- a/baobab/src/baobab-treeview.c
+++ b/baobab/src/baobab-treeview.c
@@ -79,15 +79,15 @@ on_tv_cur_changed (GtkTreeView *treeview, gpointer data)
 static void
 contents_changed (void)
 {
-	baobab_get_filesystem (&g_fs);
-	set_label_scan (&g_fs);
-	show_label ();
-
 	if (messageyesno (_("Rescan your home folder?"), 
 			  _("The content of your home folder has changed. Select rescan to update the disk usage details."),
 			  GTK_MESSAGE_QUESTION, _("_Rescan"), baobab.window) == GTK_RESPONSE_OK) {
 		baobab_rescan_current_dir ();
 	}
+	else {
+		/* Just update the total */
+		baobab_update_filesystem ();
+	}
 }
 
 static gboolean
diff --git a/baobab/src/baobab-utils.c b/baobab/src/baobab-utils.c
index 2857c5c..deab561 100644
--- a/baobab/src/baobab-utils.c
+++ b/baobab/src/baobab-utils.c
@@ -39,9 +39,8 @@
 #include "baobab-utils.h"
 #include "callbacks.h"
 
-
 void
-baobab_get_filesystem (baobab_fs *fs)
+baobab_get_filesystem (BaobabFS *fs)
 {
 	size_t i;
 	glibtop_mountlist mountlist;
@@ -52,24 +51,21 @@ baobab_get_filesystem (baobab_fs *fs)
 	mountentries = glibtop_get_mountlist (&mountlist, FALSE);
 
 	for (i = 0; i < mountlist.number; ++i) {
-		GFile	*file;
+		GFile *file;
 		glibtop_fsusage fsusage;
-		
-		file = g_file_new_for_path(mountentries[i].mountdir);	
 
-		if (baobab_is_excluded_location (file)){
-			g_object_unref(file);
-			continue;
-			}
+		file = g_file_new_for_path (mountentries[i].mountdir);
 
-		glibtop_get_fsusage (&fsusage, mountentries[i].mountdir);
+		if (!baobab_is_excluded_location (file)) {
 
-		/*  v.1.1.1 changed bavail with bfree) */
-		fs->total += fsusage.blocks * fsusage.block_size;
-		fs->avail += fsusage.bfree * fsusage.block_size;
-		fs->used += (fsusage.blocks - fsusage.bfree) * fsusage.block_size;
-		g_object_unref(file);
+			glibtop_get_fsusage (&fsusage, mountentries[i].mountdir);
 
+			fs->total += fsusage.blocks * fsusage.block_size;
+			fs->avail += fsusage.bfree * fsusage.block_size;
+			fs->used += (fsusage.blocks - fsusage.bfree) * fsusage.block_size;
+		}
+
+		g_object_unref (file);
 	}
 
 	g_free (mountentries);
@@ -383,44 +379,6 @@ popupmenu_list (GtkTreePath *path, GdkEventButton *event, gboolean can_trash)
 }
 
 void
-set_label_scan (baobab_fs *fs)
-{
-	gchar *markup;
-	gchar *total;
-	gchar *used;
-	gchar *available;
-
-	g_free (baobab.label_scan);
-
-	total = g_format_size_for_display (fs->total);
-	used = g_format_size_for_display (fs->used);
-	available = g_format_size_for_display (fs->avail);
-
-	/* Translators: these are labels for disk space */
-	markup = g_markup_printf_escaped  ("<small>%s <b>%s</b> (%s %s %s %s )</small>",
-					   _("Total filesystem capacity:"), total,
-					   _("used:"), used,
-					   _("available:"), available);
-
-	baobab.label_scan = markup;
-
-	g_free (total);
-	g_free (used);
-	g_free (available);
-}
-
-void
-show_label (void)
-{
-	GtkWidget *label;
-
-	label = GTK_WIDGET (gtk_builder_get_object (baobab.main_ui, "label1"));
-
-	gtk_label_set_markup (GTK_LABEL (label),
-			      baobab.label_scan);
-}
-
-void
 open_file_with_application (GFile *file)
 {
 	GAppInfo *application;
diff --git a/baobab/src/baobab-utils.h b/baobab/src/baobab-utils.h
index c5af605..9b121a5 100644
--- a/baobab/src/baobab-utils.h
+++ b/baobab/src/baobab-utils.h
@@ -25,7 +25,7 @@
 
 #include "baobab.h"
 
-void baobab_get_filesystem (baobab_fs *fs);
+void baobab_get_filesystem (BaobabFS *fs);
 gchar* dir_select (gboolean, GtkWidget *);
 void on_toggled (GtkToggleButton *, gpointer);
 void stop_scan (void);
@@ -37,8 +37,6 @@ void message (const gchar *primary_msg, const gchar *secondary_msg, GtkMessageTy
 gint messageyesno (const gchar *primary_msg, const gchar *secondary_msg, GtkMessageType type, gchar * ok_button, GtkWidget *parent);
 gboolean baobab_check_dir (GFile *);
 void popupmenu_list (GtkTreePath *path, GdkEventButton *event, gboolean can_trash);
-void set_label_scan (baobab_fs *);
-void show_label (void);
 void open_file_with_application (GFile *file);
 gboolean can_trash_file (GFile *file);
 gboolean trash_file (GFile *file);
diff --git a/baobab/src/baobab.c b/baobab/src/baobab.c
index 2fe47d8..23ab794 100644
--- a/baobab/src/baobab.c
+++ b/baobab/src/baobab.c
@@ -162,6 +162,41 @@ check_drop_targets (gboolean scanning)
 	set_drop_target (baobab.treemap_chart, !scanning);
 }
 
+static void
+update_scan_label (void)
+{
+	gchar *markup;
+	gchar *total;
+	gchar *used;
+	gchar *available;
+	GtkWidget *label;
+
+	total = g_format_size_for_display (baobab.fs.total);
+	used = g_format_size_for_display (baobab.fs.used);
+	available = g_format_size_for_display (baobab.fs.avail);
+
+	/* Translators: these are labels for disk space */
+	markup = g_markup_printf_escaped  ("<small>%s <b>%s</b> (%s %s %s %s )</small>",
+					   _("Total filesystem capacity:"), total,
+					   _("used:"), used,
+					   _("available:"), available);
+
+	g_free (total);
+	g_free (used);
+	g_free (available);
+
+	label = GTK_WIDGET (gtk_builder_get_object (baobab.main_ui, "label1"));
+
+	gtk_label_set_markup (GTK_LABEL (label), markup);
+}
+
+void
+baobab_update_filesystem (void)
+{
+	baobab_get_filesystem (&baobab.fs);
+	update_scan_label ();
+}
+
 void
 baobab_scan_location (GFile *file)
 {
@@ -245,9 +280,7 @@ baobab_rescan_current_dir (void)
 {
 	g_return_if_fail (baobab.current_location != NULL);
 
-	baobab_get_filesystem (&g_fs);
-	set_label_scan (&g_fs);
-	show_label ();
+	baobab_update_filesystem ();
 
 	g_object_ref (baobab.current_location);
 	baobab_scan_location (baobab.current_location);
@@ -348,7 +381,7 @@ first_row (void)
 	gchar *capacity_label, *capacity_size;
 
 	gtk_tree_store_append (baobab.model, &root_iter, NULL);
-	capacity_size = g_format_size_for_display (g_fs.total);
+	capacity_size = g_format_size_for_display (baobab.fs.total);
 
 	capacity_label = g_strdup (_("Total filesystem capacity"));
 	gtk_tree_store_set (baobab.model, &root_iter,
@@ -356,20 +389,20 @@ first_row (void)
 			    COL_H_PARSENAME, "",
 			    COL_H_PERC, 100.0,
 			    COL_DIR_SIZE, capacity_size,
-			    COL_H_SIZE, g_fs.total,
-			    COL_H_ALLOCSIZE, g_fs.total,
+			    COL_H_SIZE, baobab.fs.total,
+			    COL_H_ALLOCSIZE, baobab.fs.total,
 			    COL_H_ELEMENTS, -1, -1);
 	g_free (capacity_label);
 	g_free (capacity_size);
 
 	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (baobab.tree_view), FALSE);
 	gtk_tree_store_append (baobab.model, &firstiter, &root_iter);
-	size = g_format_size_for_display (g_fs.used);
-	if (g_fs.total == 0 && g_fs.used == 0) {
+	size = g_format_size_for_display (baobab.fs.used);
+	if (baobab.fs.total == 0 && baobab.fs.used == 0) {
 		perc = 100.0;
 	} else {
-		g_assert (g_fs.total != 0);
-		perc = ((gdouble) g_fs.used * 100) / (gdouble) g_fs.total;
+		g_assert (baobab.fs.total != 0);
+		perc = ((gdouble) baobab.fs.used * 100) / (gdouble) baobab.fs.total;
 	}
 
 	label = g_strdup (_("Total filesystem usage"));
@@ -378,8 +411,8 @@ first_row (void)
 			    COL_H_PARSENAME, "",
 			    COL_H_PERC, perc,
 			    COL_DIR_SIZE, size,
-			    COL_H_SIZE, g_fs.used,
-			    COL_H_ALLOCSIZE, g_fs.used,
+			    COL_H_SIZE, baobab.fs.used,
+			    COL_H_ALLOCSIZE, baobab.fs.used,
 			    COL_H_ELEMENTS, -1, -1);
 
 	g_free (size);
@@ -498,9 +531,7 @@ volume_changed (GVolumeMonitor *volume_monitor,
                 gpointer        user_data)
 {
 	/* filesystem has changed (mounted or unmounted device) */
-	baobab_get_filesystem (&g_fs);
-	set_label_scan (&g_fs);
-	show_label ();
+	baobab_update_filesystem ();
 }
 
 static void
@@ -808,9 +839,8 @@ excluded_locations_changed (GConfClient *client,
 	g_slist_foreach (uris, (GFunc) g_free, NULL);
 	g_slist_free (uris);
 
-	baobab_get_filesystem (&g_fs);
-	set_label_scan (&g_fs);
-	show_label ();
+	baobab_update_filesystem ();
+
 	gtk_tree_store_clear (baobab.model);
 	first_row ();
 }
@@ -837,6 +867,9 @@ baobab_init (void)
 	GError *error = NULL;
 	gboolean enable;
 
+	/* FileSystem usage */
+	baobab_get_filesystem (&baobab.fs);
+
 	/* Load the UI */
 	baobab.main_ui = gtk_builder_new ();
 	gtk_builder_add_from_file (baobab.main_ui, BAOBAB_UI_FILE, &error);
@@ -851,7 +884,6 @@ baobab_init (void)
 	gtk_builder_connect_signals (baobab.main_ui, NULL);
 
 	/* Misc */
-	baobab.label_scan = NULL;
 	baobab.CONTENTS_CHANGED_DELAYED = FALSE;
 	baobab.STOP_SCANNING = TRUE;
 	baobab.show_allocated = TRUE;
@@ -898,8 +930,6 @@ baobab_init (void)
 static void
 baobab_shutdown (void)
 {
-	g_free (baobab.label_scan);
-
 	if (baobab.current_location)
 		g_object_unref (baobab.current_location);
 
@@ -1222,9 +1252,7 @@ main (int argc, char *argv[])
 
 	baobab_init ();
 
-	check_menu_sens (FALSE);
-	baobab_get_filesystem (&g_fs);
-	if (g_fs.total == 0) {
+	if (baobab.fs.total == 0) {
 		GtkWidget *dialog;
 
 		dialog = gtk_message_dialog_new (NULL,
@@ -1239,8 +1267,8 @@ main (int argc, char *argv[])
 		goto closing;
 	}
 
-	set_label_scan (&g_fs);
-	show_label ();
+	check_menu_sens (FALSE);
+	update_scan_label ();
 
 	baobab.window = GTK_WIDGET (gtk_builder_get_object (baobab.main_ui, "baobab_window"));
 	gtk_window_set_position (GTK_WINDOW (baobab.window),
diff --git a/baobab/src/baobab.h b/baobab/src/baobab.h
index 4c4d804..421250a 100644
--- a/baobab/src/baobab.h
+++ b/baobab/src/baobab.h
@@ -30,7 +30,6 @@
 #include <gio/gio.h>
 #include <gconf/gconf-client.h>
 
-typedef struct _baobab_application baobab_application;
 typedef struct _baobab_fs baobab_fs;
 struct BaobabSearchOpt;
 
@@ -58,9 +57,19 @@ struct _BaobabChartMenu {
 	GtkWidget *set_root_item;
 };
 
+typedef struct _BaobabFS BaobabFS;
+
+struct _BaobabFS {
+	guint64 total;
+	guint64 used;
+	guint64 avail;
+};
+
 typedef struct _BaobabApplication BaobabApplication;
 
 struct _BaobabApplication {
+	BaobabFS fs;
+
 	GtkBuilder *main_ui;
 	GtkWidget *window;
 	GtkWidget *tree_view;
@@ -76,7 +85,6 @@ struct _BaobabApplication {
 	gboolean STOP_SCANNING;
 	gboolean CONTENTS_CHANGED_DELAYED;
 	GSList *excluded_locations;
-	gchar *label_scan;
 	gboolean show_allocated;
 	gboolean is_local;
 
@@ -94,12 +102,6 @@ struct _BaobabApplication {
 /* Application singleton */
 BaobabApplication baobab;
 
-struct _baobab_fs {
-	guint64 total;
-	guint64 used;
-	guint64 avail;
-};
-
 struct chan_data {
 	guint64 size;
 	guint64 alloc_size;
@@ -110,10 +112,8 @@ struct chan_data {
 	gchar *parse_name;
 };
 
-/* globals */
-baobab_fs g_fs;
-
 void baobab_set_busy (gboolean busy);
+void baobab_update_filesystem (void);
 void baobab_scan_location (GFile *);
 void baobab_scan_home (void);
 void baobab_scan_root (void);



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