[gnome-utils/gsettings-tutorial: 11/22] [gsettings-tutorial] Stop using gconf for enable_home_monitor



commit d5ebcb27f8f2e8e8e7738e1f87f83aaad8f7d025
Author: Vincent Untz <vuntz gnome org>
Date:   Fri Apr 16 16:28:14 2010 -0400

    [gsettings-tutorial] Stop using gconf for enable_home_monitor
    
    We simply get the initial value with g_settings_get_boolean() and then
    monitor changes.
    
    A few notes:
    
      + Compared to the previous gconf code, we now support changes of the
        key that are not done via the prefs dialog.
    
      + The prefs dialog doesn't need to know about the main part of the
        application now: it just cares about changing the setting key.

 baobab/src/baobab-prefs.c |   13 -------------
 baobab/src/baobab.c       |   24 ++++++++++++++++++------
 baobab/src/baobab.h       |    3 ++-
 3 files changed, 20 insertions(+), 20 deletions(-)
---
diff --git a/baobab/src/baobab-prefs.c b/baobab/src/baobab-prefs.c
index 21d955a..10e3e13 100644
--- a/baobab/src/baobab-prefs.c
+++ b/baobab/src/baobab-prefs.c
@@ -53,9 +53,6 @@ static gboolean set_gconf_list (GtkTreeModel * model, GtkTreePath * path,
 static gboolean set_model_checks (GtkTreeModel * model, GtkTreePath * path,
 				  GtkTreeIter * iter, gpointer data);
 
-static void enable_home_cb (GtkToggleButton * togglebutton,
-			    gpointer user_data);
-
 
 void
 props_notify (GConfClient *client,
@@ -140,10 +137,6 @@ create_props (void)
 			 G_SETTINGS_BIND_DEFAULT);
 	g_object_unref (settings_properties);
 
-	g_signal_connect_after ((GtkToggleButton *) check_enablehome,
-				"toggled", G_CALLBACK (enable_home_cb),
-				NULL);
-
 	g_signal_connect (dlg, "response",
 		    	  G_CALLBACK (filechooser_response_cb),
 		    	  NULL);
@@ -410,9 +403,3 @@ set_model_checks (GtkTreeModel *model,
 
 	return FALSE;
 }
-
-void
-enable_home_cb (GtkToggleButton *togglebutton, gpointer user_data)
-{
-	baobab.bbEnableHomeMonitor = gtk_toggle_button_get_active (togglebutton);
-}
diff --git a/baobab/src/baobab.c b/baobab/src/baobab.c
index 9997ccc..6a5fc09 100644
--- a/baobab/src/baobab.c
+++ b/baobab/src/baobab.c
@@ -638,6 +638,14 @@ baobab_settings_subfoldertips_changed (GSettings   *settings,
 }
 
 static void
+baobab_settings_home_monitor_changed (GSettings   *settings,
+				      const gchar *key,
+				      gpointer     user_data)
+{
+	baobab.bbEnableHomeMonitor = g_settings_get_boolean (settings, key);
+}
+
+static void
 store_excluded_locations (void)
 {
 	GSList *l;
@@ -807,14 +815,9 @@ baobab_init (void)
 
 	monitor_volume ();
 
-	baobab.bbEnableHomeMonitor = gconf_client_get_bool (baobab.gconf_client,
-							    PROPS_ENABLE_HOME_MONITOR,
-							    NULL);
-
-	monitor_home_dir ();
-
 	/* GSettings */
 	baobab.settings_ui = g_settings_new ("org.gnome.baobab.ui");
+	baobab.settings_properties = g_settings_new ("org.gnome.baobab.properties");
 
 	g_settings_bind (baobab.settings_ui, BAOBAB_TOOLBAR_VISIBLE_KEY,
 			 baobab.toolbar, "visible",
@@ -832,6 +835,13 @@ baobab_init (void)
 
 	g_signal_connect (baobab.settings_ui, "changed::" BAOBAB_SUBFLSTIPS_VISIBLE_KEY,
 			  (GCallback) baobab_settings_subfoldertips_changed, NULL);
+
+	baobab.bbEnableHomeMonitor = g_settings_get_boolean (baobab.settings_properties,
+							     PROPS_ENABLE_HOME_MONITOR);
+	g_signal_connect (baobab.settings_properties, "changed::" PROPS_ENABLE_HOME_MONITOR,
+			  (GCallback) baobab_settings_home_monitor_changed, NULL);
+
+	monitor_home_dir ();
 }
 
 static void
@@ -854,6 +864,8 @@ baobab_shutdown (void)
 
 	if (baobab.gconf_client)
 		g_object_unref (baobab.gconf_client);
+	if (baobab.settings_properties)
+		g_object_unref (baobab.settings_properties);
 	if (baobab.settings_ui)
 		g_object_unref (baobab.settings_ui);
 }
diff --git a/baobab/src/baobab.h b/baobab/src/baobab.h
index 3c5fdac..8f8dac6 100644
--- a/baobab/src/baobab.h
+++ b/baobab/src/baobab.h
@@ -44,7 +44,7 @@ struct BaobabSearchOpt;
 #define BAOBAB_STATUSBAR_VISIBLE_KEY	"statusbar_visible"
 #define BAOBAB_SUBFLSTIPS_VISIBLE_KEY   "baobab_subfoldertips_visible"
 #define PROPS_SCAN_KEY			BAOBAB_KEY_DIR "/properties/skip_scan_uri_list"
-#define PROPS_ENABLE_HOME_MONITOR	BAOBAB_KEY_DIR "/properties/enable_home_monitor"
+#define PROPS_ENABLE_HOME_MONITOR	"enable_home_monitor"
 #define SYSTEM_TOOLBAR_STYLE		"/desktop/gnome/interface/toolbar_style"
 
 typedef struct _ContextMenu ContextMenu;
@@ -83,6 +83,7 @@ struct _baobab_application {
 	char *selected_path;
 
 	GConfClient *gconf_client;
+	GSettings *settings_properties;
 	GSettings *settings_ui;
 	gint model_max_depth;
 };



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