← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/gsettings-port into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/gsettings-port into lp:indicator-session.

Requested reviews:
  Conor Curran (cjcurran)

For more details, see:
https://code.launchpad.net/~ted/indicator-session/gsettings-port/+merge/72254

GSettings port.  I've updated the ubuntu branch with this branch so it can be tested easier.
-- 
https://code.launchpad.net/~ted/indicator-session/gsettings-port/+merge/72254
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file '.bzrignore'
--- .bzrignore	2011-08-10 17:11:27 +0000
+++ .bzrignore	2011-08-19 20:18:25 +0000
@@ -1,6 +1,6 @@
 compile
 m4
-po
+po/indicator-session.pot
 src/libmessaging.la
 src/libmessaging_la-indicator-messages.lo
 config.guess.cdbs-orig
@@ -199,3 +199,6 @@
 modified:
 .bzrignore
 src/libsession_la-user-widget.lo
+consolekit-seat-client.h
+data/com.canonical.indicator.session.gschema.valid
+data/com.canonical.indicator.session.gschema.xml

=== modified file 'configure.ac'
--- configure.ac	2011-08-10 18:15:18 +0000
+++ configure.ac	2011-08-19 20:18:25 +0000
@@ -8,6 +8,8 @@
 
 AM_MAINTAINER_MODE
 
+GLIB_GSETTINGS
+
 IT_PROG_INTLTOOL([0.35.0])
 
 AC_ISC_POSIX
@@ -89,16 +91,6 @@
 AC_SUBST(GTKLOGOUTHELPER_CFLAGS)
 AC_SUBST(GTKLOGOUTHELPER_LIBS)
 
-AC_PATH_PROG(GCONFTOOL, gconftool-2)
-dnl Specify the gconf configuration source,
-dnl default to xml::$(sysconfdir)/gconf/gconf.xml.defaults
-
-AM_GCONF_SOURCE_2
-
-PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.0)
-AC_SUBST(GCONF_CFLAGS)
-AC_SUBST(GCONF_LIBS)
-
 ###########################
 # Check to see if we're local
 ###########################

=== modified file 'data/Makefile.am'
--- data/Makefile.am	2011-05-11 22:22:21 +0000
+++ data/Makefile.am	2011-08-19 20:18:25 +0000
@@ -9,37 +9,22 @@
 %.service: %.service.in
 	sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
 
-##############################
-# GConf Schema
-##############################
-
-schemadir =					\
-	$(GCONF_SCHEMA_FILE_DIR)
-
-schema_in_files =				\
-	indicator-session.schemas.in
-
-schema_DATA =					\
-	$(schema_in_files:.schemas.in=.schemas)
-
 @INTLTOOL_SCHEMAS_RULE@
-
-
-#$(dbus_services_DATA): $(service_in_files) Makefile
-#	sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
+@INTLTOOL_XML_NOMERGE_RULE@
+
+@GSETTINGS_RULES@
+gsettings_SCHEMAS = com.canonical.indicator.session.gschema.xml
+
+convertdir = $(datadir)/GConf/gsettings
+dist_convert_DATA = indicator-session.convert
+
 
 EXTRA_DIST =					\
 	$(service_in_files)			\
-	$(schema_in_files)
+	$(gsettings_SCHEMAS:.xml=.xml.in)
+
 
 CLEANFILES =					\
 	$(dbus_services_DATA)			\
-	$(schema_DATA)
+	$(gsettings_SCHEMAS)
 
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
-	GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
-		gconftool-2 --makefile-install-rule $(schema_DATA)
-else
-install-data-local:
-endif

=== added file 'data/com.canonical.indicator.session.gschema.xml.in'
--- data/com.canonical.indicator.session.gschema.xml.in	1970-01-01 00:00:00 +0000
+++ data/com.canonical.indicator.session.gschema.xml.in	2011-08-19 20:18:25 +0000
@@ -0,0 +1,24 @@
+<schemalist>
+  <schema id="com.canonical.indicator.session" path="/apps/indicator-session/">
+    <key name="suppress-logout-restart-shutdown" type="b">
+      <default>false</default>
+      <_summary>Suppress the dialog to confirm logout, restart and shutdown action</_summary>
+      <_description>Whether or not to show confirmation dialogs for logout, restart and shutdown actions.</_description>
+    </key>
+    <key name="suppress-logout-menuitem" type="b">
+      <default>false</default>
+      <_summary>Remove the Log Out item from the session menu</_summary>
+      <_description>Makes it so that the logout button doesn't show in the session menu.</_description>
+    </key>
+    <key name="suppress-restart-menuitem" type="b">
+      <default>false</default>
+      <_summary>Remove the Restart item from the session menu</_summary>
+      <_description>Makes it so that the restart button doesn't show in the session menu.</_description>
+    </key>
+    <key name="suppress-shutdown-menuitem" type="b">
+      <default>false</default>
+      <_summary>Remove the shutdown item from the session menu</_summary>
+      <_description>Makes it so that the shutdown button doesn't show in the session menu.</_description>
+    </key>
+  </schema>
+</schemalist>

=== added file 'data/indicator-session.convert'
--- data/indicator-session.convert	1970-01-01 00:00:00 +0000
+++ data/indicator-session.convert	2011-08-19 20:18:25 +0000
@@ -0,0 +1,5 @@
+[com.canonical.indicator.session]
+suppress_logout_restart_shutdown = /apps/indicator-session/suppress_logout_restart_shutdown
+suppress_logout_menuitem = /apps/indicator-session/suppress_logout_menuitem
+suppress_restart_menuitem = /apps/indicator-session/suppress_restart_menuitem
+suppress_shutdown_menuitem = /apps/indicator-session/suppress_shutdown_menuitem

=== removed file 'data/indicator-session.schemas.in'
--- data/indicator-session.schemas.in	2010-04-06 21:56:04 +0000
+++ data/indicator-session.schemas.in	1970-01-01 00:00:00 +0000
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<gconfschemafile>
-  <schemalist>
-    <schema>
-		<key>/schemas/apps/indicator-session/suppress_logout_restart_shutdown</key>
-		<applyto>/apps/indicator-session/suppress_logout_restart_shutdown</applyto>
-		<owner>indicator-session</owner>
-		<type>bool</type>
-		<default>FALSE</default>
-		<locale name="C">
-			<short>Suppress the dialog to confirm logout, restart and shutdown action</short>
-			<long>Whether or not to show confirmation dialogs for logout,
-			      restart and shutdown actions.</long>
-		</locale>
-    </schema>
-	<schema>
-		<key>/schemas/apps/indicator-session/suppress_logout_menuitem</key>
-		<applyto>/apps/indicator-session/suppress_logout_menuitem</applyto>
-		<owner>indicator-session</owner>
-		<type>bool</type>
-		<default>FALSE</default>
-		<locale name="C">
-			<short>Remove the Log Out item from the session menu</short>
-			<long>Makes it so that the logout button doesn't show in the session menu.</long>
-		</locale>
-	</schema>
-	<schema>
-		<key>/schemas/apps/indicator-session/suppress_restart_menuitem</key>
-		<applyto>/apps/indicator-session/suppress_restart_menuitem</applyto>
-		<owner>indicator-session</owner>
-		<type>bool</type>
-		<default>FALSE</default>
-		<locale name="C">
-			<short>Remove the Restart item from the session menu</short>
-			<long>Makes it so that the restart button doesn't show in the session menu.</long>
-		</locale>
-	</schema>
-	<schema>
-		<key>/schemas/apps/indicator-session/suppress_shutdown_menuitem</key>
-		<applyto>/apps/indicator-session/suppress_shutdown_menuitem</applyto>
-		<owner>indicator-session</owner>
-		<type>bool</type>
-		<default>FALSE</default>
-		<locale name="C">
-			<short>Remove the shutdown item from the session menu</short>
-			<long>Makes it so that the shutdown button doesn't show in the session menu.</long>
-		</locale>
-	</schema>
-  </schemalist>
-</gconfschemafile>

=== modified file 'po/POTFILES.in'
--- po/POTFILES.in	2011-07-22 17:12:20 +0000
+++ po/POTFILES.in	2011-08-19 20:18:25 +0000
@@ -1,7 +1,7 @@
 [encoding: UTF-8]
-data/indicator-session.schemas.in
+data/com.canonical.indicator.session.gschema.xml.in
 data/extra-sessions/classic-desktop.desktop.in.in
-src/gconf-helper.c
+src/settings-helper.c
 src/lock-helper.c
 src/gtk-logout-helper.c
 src/dialog.c

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2011-08-17 20:53:51 +0000
+++ src/Makefile.am	2011-08-19 20:18:25 +0000
@@ -96,11 +96,11 @@
 	session-dbus.h \
 	gen-session-dbus.xml.c \
 	dbusmenu-shared.h \
-	gconf-helper.c \
+	settings-helper.c \
 	users-service-dbus.h \
 	users-service-dbus.c \
 	user-menu-mgr.h \
-	user-menu-mgr.c \	
+	user-menu-mgr.c \
 	device-menu-mgr.h \
 	device-menu-mgr.c \
 	apt-watcher.h \
@@ -126,8 +126,8 @@
 
 gtk_logout_helper_SOURCES = \
 	gtk-logout-helper.c \
-	gconf-helper.c \
-	gconf-helper.h \
+	settings-helper.c \
+	settings-helper.h \
 	dialog.c \
 	dialog.h
 

=== modified file 'src/device-menu-mgr.c'
--- src/device-menu-mgr.c	2011-08-18 15:21:02 +0000
+++ src/device-menu-mgr.c	2011-08-19 20:18:25 +0000
@@ -21,7 +21,7 @@
 #include <libdbusmenu-gtk3/menuitem.h>
 
 #include "device-menu-mgr.h"
-#include "gconf-helper.h"
+#include "settings-helper.h"
 #include "dbus-shared-names.h"
 #include "dbusmenu-shared.h"
 #include "lock-helper.h"
@@ -44,7 +44,8 @@
   UdevMgr* udev_mgr;
 };
 
-static GConfClient       *gconf_client  = NULL;
+static GSettings         *lockdown_settings  = NULL;
+static GSettings         *keybinding_settings  = NULL;
 static DbusmenuMenuitem  *lock_menuitem = NULL;
 static DbusmenuMenuitem  *system_settings_menuitem = NULL;
 static DbusmenuMenuitem  *display_settings_menuitem = NULL;
@@ -72,7 +73,7 @@
 static DBusGProxy * up_main_proxy = NULL;
 static DBusGProxy * up_prop_proxy = NULL;
 
-static void device_menu_mgr_ensure_gconf_client (DeviceMenuMgr* self);
+static void device_menu_mgr_ensure_settings_client (DeviceMenuMgr* self);
 static void setup_restart_watch (DeviceMenuMgr* self);
 static void setup_up (DeviceMenuMgr* self);
 static void device_menu_mgr_rebuild_items (DeviceMenuMgr *self);
@@ -128,21 +129,18 @@
 // TODO
 // Is this needed anymore
 static void
-lockdown_changed (GConfClient *client,
-                  guint        cnxd_id,
-                  GConfEntry  *entry,
+lockdown_changed (GSettings * settings,
+                  const gchar * key,
                   gpointer     user_data)
 {
-  DeviceMenuMgr* self = DEVICE_MENU_MGR (user_data);
-	GConfValue  *value = gconf_entry_get_value (entry);
-	const gchar *key   = gconf_entry_get_key (entry);
+	DeviceMenuMgr* self = DEVICE_MENU_MGR (user_data);
 
-	if (value == NULL || key == NULL) {
+	if (key == NULL) {
 		return;
 	}
 
 	if (g_strcmp0 (key, LOCKDOWN_KEY_USER) == 0 ||
-      g_strcmp0 (key, LOCKDOWN_KEY_SCREENSAVER) == 0) {
+	      g_strcmp0 (key, LOCKDOWN_KEY_SCREENSAVER) == 0) {
 		device_menu_mgr_rebuild_items(self);
 	}
 
@@ -150,23 +148,19 @@
 }
 
 static void
-keybinding_changed (GConfClient *client,
-                    guint        cnxd_id,
-                    GConfEntry  *entry,
+keybinding_changed (GSettings   *settings,
+                    const gchar *key,
                     gpointer     user_data)
 {
-	GConfValue  *value = gconf_entry_get_value (entry);
-	const gchar *key   = gconf_entry_get_key (entry);
-
-	if (value == NULL || key == NULL) {
+	if (key == NULL) {
 		return;
 	}
 
 	if (g_strcmp0 (key, KEY_LOCK_SCREEN) == 0) {
-		g_debug("Keybinding changed to: %s", gconf_value_get_string(value));
+		g_debug("Keybinding changed to: %s", g_settings_get_string(settings, key));
 		if (lock_menuitem != NULL) {
 			dbusmenu_menuitem_property_set_shortcut_string (lock_menuitem,
-                                                      gconf_value_get_string(value));
+                                                      g_settings_get_string(settings, key));
 		}
 	}
 	return;
@@ -176,9 +170,9 @@
    locking the screen.  If not, lock it. */
 static void
 lock_if_possible (DeviceMenuMgr* self) {
-	device_menu_mgr_ensure_gconf_client (self);
+	device_menu_mgr_ensure_settings_client (self);
 
-	if (!gconf_client_get_bool (gconf_client, LOCKDOWN_KEY_SCREENSAVER, NULL)) {
+	if (!g_settings_get_boolean (lockdown_settings, LOCKDOWN_KEY_SCREENSAVER)) {
 		lock_screen (NULL, 0, NULL);
 	}
 	return;
@@ -659,10 +653,9 @@
 
     /* Make sure we have a valid GConf client, and build one
        if needed */
-    device_menu_mgr_ensure_gconf_client (self);
-    can_lockscreen = !gconf_client_get_bool ( gconf_client,
-                                              LOCKDOWN_KEY_SCREENSAVER,
-                                              NULL);
+    device_menu_mgr_ensure_settings_client (self);
+    can_lockscreen = !g_settings_get_boolean (lockdown_settings,
+                                              LOCKDOWN_KEY_SCREENSAVER);
     /* Lock screen item */
     if (can_lockscreen) {
       lock_menuitem = dbusmenu_menuitem_new();
@@ -670,7 +663,7 @@
                                       DBUSMENU_MENUITEM_PROP_LABEL,
                                       _("Lock Screen"));
 
-      gchar * shortcut = gconf_client_get_string(gconf_client, KEY_LOCK_SCREEN, NULL);
+      gchar * shortcut = g_settings_get_string(keybinding_settings, KEY_LOCK_SCREEN);
       if (shortcut != NULL) {
         g_debug("Lock screen shortcut: %s", shortcut);
         dbusmenu_menuitem_property_set_shortcut_string(lock_menuitem, shortcut);
@@ -830,26 +823,18 @@
 /* Ensures that we have a GConf client and if we build one
    set up the signal handler. */
 static void
-device_menu_mgr_ensure_gconf_client (DeviceMenuMgr* self)
+device_menu_mgr_ensure_settings_client (DeviceMenuMgr* self)
 {
-	if (!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-		gconf_client_add_dir(gconf_client, LOCKDOWN_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
-		gconf_client_notify_add (gconf_client,
-                             LOCKDOWN_DIR,
-                             lockdown_changed,
-                             self,
-                             NULL,
-                             NULL);
+	if (!lockdown_settings) {
+		lockdown_settings = g_settings_new (LOCKDOWN_SCHEMA);
+		g_signal_connect(lockdown_settings, "changed", G_CALLBACK(lockdown_changed), self);
+	}
+	if (!keybinding_settings) {
+		keybinding_settings = g_settings_new (KEYBINDING_SCHEMA);
+		g_signal_connect(lockdown_settings, "changed::" KEY_LOCK_SCREEN, G_CALLBACK(keybinding_changed), self);
+	}
 
-		gconf_client_add_dir(gconf_client, KEYBINDING_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
-		gconf_client_notify_add (gconf_client,
-                             KEYBINDING_DIR,
-                             keybinding_changed,
-                             self,
-                             NULL,
-                             NULL);
-	}
+	return;
 }
 
 DbusmenuMenuitem*

=== modified file 'src/gtk-logout-helper.c'
--- src/gtk-logout-helper.c	2010-04-02 02:27:28 +0000
+++ src/gtk-logout-helper.c	2011-08-19 20:18:25 +0000
@@ -26,7 +26,7 @@
 #include <gtk/gtk.h>
 #include <dbus/dbus-glib.h>
 #include "dialog.h"
-#include "gconf-helper.h"
+#include "settings-helper.h"
 
 static void
 consolekit_fallback (LogoutDialogType action)

=== renamed file 'src/gconf-helper.c' => 'src/settings-helper.c'
--- src/gconf-helper.c	2011-06-12 12:42:53 +0000
+++ src/settings-helper.c	2011-08-19 20:18:25 +0000
@@ -1,5 +1,5 @@
 /*
-A small wrapper utility for connecting to gconf.
+A small wrapper utility for connecting to GSettings.
 
 Copyright 2009 Canonical Ltd.
 
@@ -19,9 +19,7 @@
 with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
-#include <gconf/gconf-client.h>
-
+#include <gio/gio.h>
 #include <glib/gi18n.h>
 
 #include <dbus/dbus-glib.h>
@@ -31,53 +29,52 @@
 #include <libdbusmenu-glib/menuitem.h>
 
 #include "dbus-shared-names.h"
-#include "gconf-helper.h"
-
-static GConfClient * gconf_client = NULL;
+#include "settings-helper.h"
+
+static GSettings* settings = NULL;
+
 static guint confirmation_notify = 0;
 static guint logout_notify = 0;
 static guint restart_notify = 0;
 static guint shutdown_notify = 0;
 
+static void
+build_settings (void) {
+	if(!settings) {
+		settings = g_settings_new (SESSION_SCHEMA);
+	}
+	return;
+}
+
 gboolean
 supress_confirmations (void) {
-	if(!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-	}
-	return gconf_client_get_bool (gconf_client, SUPPRESS_KEY, NULL) ;
+	build_settings();
+	return g_settings_get_boolean (settings, SUPPRESS_KEY) ;
 }
 
 gboolean
 show_logout (void) {
-	if(!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-	}
-	return !gconf_client_get_bool (gconf_client, LOGOUT_KEY, NULL) ;
+	build_settings();
+	return !g_settings_get_boolean (settings, LOGOUT_KEY) ;
 }
 
 gboolean
 show_restart (void) {
-	if(!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-	}
-	return !gconf_client_get_bool (gconf_client, RESTART_KEY, NULL) ;
+	build_settings();
+	return !g_settings_get_boolean (settings, RESTART_KEY) ;
 }
 
 gboolean
 show_shutdown (void) {
-	if(!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-	}
-	return !gconf_client_get_bool (gconf_client, SHUTDOWN_KEY, NULL) ;
+	build_settings();
+	return !g_settings_get_boolean (settings, SHUTDOWN_KEY) ;
 }
 
-static void update_menu_entries_callback (GConfClient *client, guint cnxn_id, GConfEntry  *entry, gpointer data) {
+static void update_menu_entries_callback (GSettings * settings, const gchar * key, gpointer data) {
 	RestartShutdownLogoutMenuItems * restart_shutdown_logout_mi = (RestartShutdownLogoutMenuItems*) data;
-	GConfValue * value = gconf_entry_get_value (entry);
-	const gchar * key = gconf_entry_get_key (entry);
 
 	if(g_strcmp0 (key, SUPPRESS_KEY) == 0) {
-		if (gconf_value_get_bool (value)) {
+		if (g_settings_get_boolean (settings, key)) {
 			dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->logout_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Log Out"));
 			dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->restart_mi, RESTART_ITEM_LABEL, _("Restart"));
 			dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->shutdown_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Shut Down"));
@@ -90,80 +87,65 @@
 }
 
 static void
-update_logout_callback (GConfClient *client, guint cnxn_id, GConfEntry  *entry, gpointer data) {
+update_logout_callback (GSettings * settings, const gchar * key, gpointer data) {
 	DbusmenuMenuitem * mi = (DbusmenuMenuitem*) data;
-	GConfValue * value = gconf_entry_get_value (entry);
-	const gchar * key = gconf_entry_get_key (entry);
 
 	if(g_strcmp0 (key, LOGOUT_KEY) == 0) {
-		dbusmenu_menuitem_property_set_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE, !gconf_value_get_bool(value));
+		dbusmenu_menuitem_property_set_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE, !g_settings_get_boolean(settings, key));
 	}
 }
 
 static void
-update_restart_callback (GConfClient *client, guint cnxn_id, GConfEntry  *entry, gpointer data) {
+update_restart_callback (GSettings * settings, const gchar * key, gpointer data) {
 	DbusmenuMenuitem * mi = (DbusmenuMenuitem*) data;
-	GConfValue * value = gconf_entry_get_value (entry);
-	const gchar * key = gconf_entry_get_key (entry);
 
 	if(g_strcmp0 (key, RESTART_KEY) == 0) {
-		dbusmenu_menuitem_property_set_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE, !gconf_value_get_bool(value));
+		dbusmenu_menuitem_property_set_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE, !g_settings_get_boolean(settings, key));
 	}
 }
 
 static void
-update_shutdown_callback (GConfClient *client, guint cnxn_id, GConfEntry  *entry, gpointer data) {
+update_shutdown_callback (GSettings * settings, const gchar * key, gpointer data) {
 	DbusmenuMenuitem * mi = (DbusmenuMenuitem*) data;
-	GConfValue * value = gconf_entry_get_value (entry);
-	const gchar * key = gconf_entry_get_key (entry);
 
 	if(g_strcmp0 (key, SHUTDOWN_KEY) == 0) {
-		dbusmenu_menuitem_property_set_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE, !gconf_value_get_bool(value));
+		dbusmenu_menuitem_property_set_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE, !g_settings_get_boolean(settings, key));
 	}
 }
 
 void
 update_menu_entries(RestartShutdownLogoutMenuItems * restart_shutdown_logout_mi) {
 	/* If we don't have a client, build one. */
-	if(!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-	}
-
-	/* If we've not gotten any notifications, then we need
-	   to add the directory for notifications to come from. */
-	if (confirmation_notify == 0 || logout_notify == 0) {
-		gconf_client_add_dir (gconf_client, GLOBAL_DIR,
-		                      GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
-	}
+	build_settings();
 
 	if (confirmation_notify != 0) {
-		gconf_client_notify_remove (gconf_client, confirmation_notify);
+		g_signal_handler_disconnect (settings, confirmation_notify);
 		confirmation_notify = 0;
 	}
 
 	if (logout_notify != 0) {
-		gconf_client_notify_remove (gconf_client, logout_notify);
+		g_signal_handler_disconnect (settings, logout_notify);
 		logout_notify = 0;
 	}
 
 	if (restart_notify != 0) {
-		gconf_client_notify_remove (gconf_client, restart_notify);
+		g_signal_handler_disconnect (settings, restart_notify);
 		restart_notify = 0;
 	}
 
 	if (shutdown_notify != 0) {
-		gconf_client_notify_remove (gconf_client, shutdown_notify);
+		g_signal_handler_disconnect (settings, shutdown_notify);
 		shutdown_notify = 0;
 	}
 
-	confirmation_notify = gconf_client_notify_add (gconf_client, SUPPRESS_KEY,
-				update_menu_entries_callback, restart_shutdown_logout_mi, NULL, NULL);
-	logout_notify = gconf_client_notify_add (gconf_client, LOGOUT_KEY,
-				update_logout_callback, restart_shutdown_logout_mi->logout_mi, NULL, NULL);
-	restart_notify = gconf_client_notify_add (gconf_client, RESTART_KEY,
-				update_restart_callback, restart_shutdown_logout_mi->restart_mi, NULL, NULL);
-	shutdown_notify = gconf_client_notify_add (gconf_client, SHUTDOWN_KEY,
-				update_shutdown_callback, restart_shutdown_logout_mi->shutdown_mi, NULL, NULL);
+	confirmation_notify = g_signal_connect (settings, "changed::" SUPPRESS_KEY,
+				G_CALLBACK(update_menu_entries_callback), restart_shutdown_logout_mi);
+	logout_notify = g_signal_connect (settings, "changed::" LOGOUT_KEY,
+				G_CALLBACK(update_logout_callback), restart_shutdown_logout_mi->logout_mi);
+	restart_notify = g_signal_connect (settings, "changed::" RESTART_KEY,
+				G_CALLBACK(update_restart_callback), restart_shutdown_logout_mi->restart_mi);
+	shutdown_notify = g_signal_connect (settings, "changed::" SHUTDOWN_KEY,
+				G_CALLBACK(update_shutdown_callback), restart_shutdown_logout_mi->shutdown_mi);
 
 	return;
 }

=== renamed file 'src/gconf-helper.h' => 'src/settings-helper.h'
--- src/gconf-helper.h	2011-07-15 11:06:53 +0000
+++ src/settings-helper.h	2011-08-19 20:18:25 +0000
@@ -1,5 +1,5 @@
 /*
-A small wrapper utility for connecting to gconf.
+A small wrapper utility for connecting to GSettings.
 
 Copyright 2009 Canonical Ltd.
 
@@ -23,8 +23,6 @@
 #ifndef __GCONF_HELPER_H__
 #define __GCONF_HELPER_H__ 1
 
-#include <gconf/gconf-client.h>
-
 #include <glib/gi18n.h>
 
 #include <dbus/dbus-glib.h>
@@ -33,17 +31,17 @@
 #include <libdbusmenu-glib/server.h>
 #include <libdbusmenu-glib/menuitem.h>
 
-#define GLOBAL_DIR      "/apps/indicator-session"
-#define SUPPRESS_KEY    GLOBAL_DIR "/suppress_logout_restart_shutdown"
-#define LOGOUT_KEY      GLOBAL_DIR "/suppress_logout_menuitem"
-#define RESTART_KEY     GLOBAL_DIR "/suppress_restart_menuitem"
-#define SHUTDOWN_KEY    GLOBAL_DIR "/suppress_shutdown_menuitem"
+#define SESSION_SCHEMA      "com.canonical.indicator.session"
+#define SUPPRESS_KEY        "suppress-logout-restart-shutdown"
+#define LOGOUT_KEY          "suppress-logout-menuitem"
+#define RESTART_KEY         "suppress-restart-menuitem"
+#define SHUTDOWN_KEY        "suppress-shutdown-menuitem"
 
-#define LOCKDOWN_DIR              "/desktop/gnome/lockdown"
-#define LOCKDOWN_KEY_USER         LOCKDOWN_DIR "/disable_user_switching"
-#define LOCKDOWN_KEY_SCREENSAVER  LOCKDOWN_DIR "/disable_lock_screen"
-#define KEYBINDING_DIR            "/apps/gnome_settings_daemon/keybindings"
-#define KEY_LOCK_SCREEN           KEYBINDING_DIR "/screensaver"
+#define LOCKDOWN_SCHEMA           "org.gnome.desktop.lockdown"
+#define LOCKDOWN_KEY_USER         "disable-user-switching"
+#define LOCKDOWN_KEY_SCREENSAVER  "disable-lock-screen"
+#define KEYBINDING_SCHEMA         "org.gnome.settings-daemon.plugins.media-keys"
+#define KEY_LOCK_SCREEN           "screensaver"
 
 typedef struct _RestartShutdownLogoutMenuItems
 {

=== modified file 'src/user-menu-mgr.c'
--- src/user-menu-mgr.c	2011-08-18 15:21:02 +0000
+++ src/user-menu-mgr.c	2011-08-19 20:18:25 +0000
@@ -20,13 +20,13 @@
 #include <libdbusmenu-glib/client.h>
 
 #include "user-menu-mgr.h"
-#include "gconf-helper.h"
+#include "settings-helper.h"
 #include "dbus-shared-names.h"
 #include "dbusmenu-shared.h"
 #include "lock-helper.h"
 #include "users-service-dbus.h"
 
-static GConfClient * gconf_client = NULL;
+static GSettings* settings = NULL;
 static DbusmenuMenuitem  *switch_menuitem = NULL;
 
 struct _UserMenuMgr
@@ -56,7 +56,7 @@
                          const gchar      *user_id,
                          gpointer          user_data);
 
-static void ensure_gconf_client ();
+static void ensure_settings_client ();
 static gboolean check_guest_session (void);
 static void activate_guest_session (DbusmenuMenuitem * mi,
                                     guint timestamp,
@@ -110,11 +110,11 @@
 
   /* Make sure we have a valid GConf client, and build one
      if needed */
-  ensure_gconf_client ();
+  ensure_settings_client ();
 
   /* Check to see which menu items we're allowed to have */
   can_activate = users_service_dbus_can_activate_session (self->users_dbus_interface) &&
-      !gconf_client_get_bool (gconf_client, LOCKDOWN_KEY_USER, NULL);
+      !g_settings_get_boolean (settings, LOCKDOWN_KEY_USER);
 
   /* Remove the old menu items if that makes sense */
   children = dbusmenu_menuitem_take_children (self->root_item);
@@ -288,9 +288,9 @@
    locking the screen.  If not, lock it. */
 static void
 lock_if_possible (void) {
-	ensure_gconf_client ();
+	ensure_settings_client ();
 
-	if (!gconf_client_get_bool (gconf_client, LOCKDOWN_KEY_SCREENSAVER, NULL)) {
+	if (!g_settings_get_boolean (settings, LOCKDOWN_KEY_SCREENSAVER)) {
 		lock_screen(NULL, 0, NULL);
 	}
 
@@ -373,13 +373,12 @@
 /* Ensures that we have a GConf client and if we build one
    set up the signal handler. */
 static void
-ensure_gconf_client ()
+ensure_settings_client ()
 {
-	if (!gconf_client) {
-		gconf_client = gconf_client_get_default ();
-		gconf_client_add_dir (gconf_client, LOCKDOWN_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
-		gconf_client_add_dir (gconf_client, KEYBINDING_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+	if(!settings) {
+		settings = g_settings_new (LOCKDOWN_SCHEMA);
 	}
+	return;
 }
 
 DbusmenuMenuitem*


Follow ups