[gdm] Migrate GDM off GConf to GSettings.



commit 2d0069984082b9528bc38c58ab8beeafade58467
Author: Marek Kasik <mkasik redhat com>
Date:   Wed Feb 15 13:03:27 2012 +0100

    Migrate GDM off GConf to GSettings.
    
    This commit moves the fallback greeter and daemon away from gconf.
    
    Some changes from Ray Strode.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=635375

 configure.ac                                     |   20 +-
 daemon/gdm-welcome-session.c                     |   25 -
 data/Makefile.am                                 |   13 +-
 data/gconf.path                                  |   12 -
 data/org.gnome.login-screen.gschema.xml.in       |   38 +
 data/session-setup.entries                       |  785 ----------------------
 gui/simple-chooser/chooser-main.c                |   22 +-
 gui/simple-chooser/gdm-host-chooser.c            |   22 +-
 gui/simple-greeter/Makefile.am                   |   32 +-
 gui/simple-greeter/gdm-greeter-login-window.c    |  135 ++---
 gui/simple-greeter/gdm-greeter-panel.c           |   22 +-
 gui/simple-greeter/gdm-greeter-session.c         |    1 -
 gui/simple-greeter/gdm-simple-greeter.schemas.in |  252 -------
 gui/simple-greeter/gdm-user-chooser-widget.c     |   25 +-
 gui/simple-greeter/greeter-main.c                |    1 -
 15 files changed, 117 insertions(+), 1288 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 3c94f94..2c03e1e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -60,7 +60,6 @@ GLIB_REQUIRED_VERSION=2.29.3
 GTK_REQUIRED_VERSION=2.91.1
 PANGO_REQUIRED_VERSION=1.3.0
 SCROLLKEEPER_REQUIRED_VERSION=0.1.4
-GCONF_REQUIRED_VERSION=2.31.3
 GNOME_PANEL_REQUIRED_VERSION=2.0.0
 LIBXKLAVIER_REQUIRED_VERSION=4.0
 LIBCANBERRA_GTK_REQUIRED_VERSION=0.4
@@ -121,17 +120,8 @@ AC_SUBST(GTK_LIBS)
 PKG_CHECK_MODULES(CANBERRA_GTK,
         libcanberra-gtk3 >= $LIBCANBERRA_GTK_REQUIRED_VERSION
 )
-AC_SUBST(GCONF_CFLAGS)
-AC_SUBST(GCONF_LIBS)
-
-PKG_CHECK_MODULES(GCONF,
-        gconf-2.0 >= $GCONF_REQUIRED_VERSION
-)
-AC_SUBST(GCONF_CFLAGS)
-AC_SUBST(GCONF_LIBS)
-
-gconf_defaultpath=`pkg-config gconf-2.0 --variable=gconf_defaultpath`
-AC_DEFINE_UNQUOTED([GCONF_DEFAULTPATH], "$gconf_defaultpath", [GConf Default Path])
+AC_SUBST(CANBERRA_GTK_CFLAGS)
+AC_SUBST(CANBERRA_GTK_LIBS)
 
 PKG_CHECK_MODULES(UPOWER,
         upower-glib >= $UPOWER_REQUIRED_VERSION,
@@ -148,7 +138,6 @@ AC_SUBST(UPOWER_LIBS)
 PKG_CHECK_MODULES(SIMPLE_GREETER,
         dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
         gtk+-3.0 >= $GTK_REQUIRED_VERSION
-        gconf-2.0 >= $GCONF_REQUIRED_VERSION
 	fontconfig >= $FONTCONFIG_REQUIRED_VERSION
         accountsservice >= $ACCOUNTS_SERVICE_REQUIRED_VERSION
 	x11
@@ -172,7 +161,6 @@ AC_SUBST(LIBXKLAVIER_LIBS)
 PKG_CHECK_MODULES(SIMPLE_CHOOSER,
         dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
         gtk+-3.0 >= $GTK_REQUIRED_VERSION
-        gconf-2.0 >= $GCONF_REQUIRED_VERSION
 )
 AC_SUBST(SIMPLE_CHOOSER_CFLAGS)
 AC_SUBST(SIMPLE_CHOOSER_LIBS)
@@ -190,10 +178,6 @@ PKG_CHECK_MODULES(CHECK,
                   have_check=no)
 AM_CONDITIONAL([HAVE_CHECK],[test "x$CHECK_CFLAGS" != "x"])
 
-AC_PATH_PROG(GCONFTOOL, gconftool-2)
-
-AM_GCONF_SOURCE_2
-
 LIBGDMGREETER_LIBS="$SIMPLE_GREETER_LIBS"
 AC_SUBST(LIBGDMGREETER_LIBS)
 LIBGDMGREETER_CFLAGS="$SIMPLE_GREETER_CFLAGS"
diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-welcome-session.c
index 2e81cb7..d0f88a2 100644
--- a/daemon/gdm-welcome-session.c
+++ b/daemon/gdm-welcome-session.c
@@ -315,7 +315,6 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
                 seat_id = welcome_session->priv->x11_display_seat_id +
                         strlen ("/org/freedesktop/ConsoleKit/");
 
-                g_hash_table_insert (hash, g_strdup ("GCONF_DEFAULT_SOURCE_PATH"), g_strdup (GCONF_DEFAULTPATH));
                 g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
         }
 
@@ -423,30 +422,6 @@ spawn_child_setup (SpawnChildData *data)
                 _exit (1);
         }
 
-        if (pwent->pw_dir != NULL) {
-                struct stat statbuf;
-                const char *seat_id;
-                char       *gconf_dir;
-                int         r;
-
-                seat_id = data->seat_id + strlen ("/org/freedesktop/ConsoleKit/");
-                gconf_dir = g_strdup_printf ("%s/%s", pwent->pw_dir, seat_id);
-
-                /* Verify per-seat gconf directory exists, create if needed */
-                r = g_stat (gconf_dir, &statbuf);
-                if (r < 0) {
-                        g_debug ("Making per-seat gconf directory %s", gconf_dir);
-                        g_mkdir (gconf_dir, S_IRWXU | S_IXGRP | S_IRGRP);
-                        g_chmod (gconf_dir, S_IRWXU | S_IXGRP | S_IRGRP);
-                        res = chown (gconf_dir, pwent->pw_uid, grent->gr_gid);
-                        if (res == -1) {
-                                g_warning ("GdmWelcomeSession: Error setting owner of per-seat gconf directory: %s",
-                                           g_strerror (errno));
-                        }
-                }
-                g_free (gconf_dir);
-        }
-
         g_debug ("GdmWelcomeSession: Setting up run time dir %s", data->runtime_dir);
         g_mkdir (data->runtime_dir, 0755);
         res = chown (data->runtime_dir, pwent->pw_uid, pwent->pw_gid);
diff --git a/data/Makefile.am b/data/Makefile.am
index a209fb3..f0d00bf 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -115,8 +115,6 @@ EXTRA_DIST =			\
 	PreSession.in 		\
 	PostSession.in 		\
 	PostLogin 		\
-	gconf.path		\
-	session-setup.entries	\
 	gdm-shell.session.in    \
 	dconf-profile \
 	00-upstream-settings \
@@ -158,12 +156,10 @@ uninstall-hook:
 	$(DESTDIR)$(PAM_PREFIX)/pam.d/gdm \
 	$(DESTDIR)$(PAM_PREFIX)/pam.d/gdm-autologin \
 	$(DESTDIR)$(PAM_PREFIX)/pam.d/gdm-welcome \
-	$(DESTDIR)$(workingdir)/.gconf.path \
 	$(DESTDIR)$(sysconfdir)/dconf/db/gdm \
 	$(DESTDIR)$(sysconfdir)/dconf/profile/gdm \
 	-rf \
 	$(DESTDIR)$(sysconfdir)/dconf/db/gdm.d \
-	$(DESTDIR)$(workingdir)/.gconf.mandatory \
 	$(DESTDIR)$(workingdir)/.config/dconf \
 	$(DESTDIR)$(screenshotdir) \
 	$(DESTDIR)$(xauthdir)
@@ -174,7 +170,7 @@ uninstall-hook:
 	$(DESTDIR)$(sysconfdir)/dconf/db \
 	$(DESTDIR)$(sysconfdir)/dconf
 
-install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path 00-upstream-settings 00-upstream-settings-locks
+install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession 00-upstream-settings 00-upstream-settings-locks
 	if test '!' -d $(DESTDIR)$(gdmconfdir); then \
 		$(mkinstalldirs) $(DESTDIR)$(gdmconfdir); \
 		chmod 755 $(DESTDIR)$(gdmconfdir); \
@@ -311,13 +307,6 @@ install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.pa
 		chown root:gdm $(DESTDIR)$(cachedir) || : ; \
 	fi
 
-	$(INSTALL_DATA) $(srcdir)/gconf.path $(DESTDIR)$(workingdir)/.gconf.path
-	gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --recursive-unset /
-	gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --load $(srcdir)/session-setup.entries
-	chown -R root:gdm $(DESTDIR)$(workingdir)/.gconf.mandatory || :
-	chmod 1750 $(DESTDIR)$(workingdir)/.gconf.mandatory
-	chmod 1640 $(DESTDIR)$(workingdir)/.gconf.mandatory/*.xml
-
 	$(INSTALL_DATA) $(srcdir)/dconf-profile $(DESTDIR)$(sysconfdir)/dconf/profile/gdm
 	$(INSTALL_DATA) $(srcdir)/00-upstream-settings $(DESTDIR)$(sysconfdir)/dconf/db/gdm.d
 	$(INSTALL_DATA) $(srcdir)/00-upstream-settings-locks $(DESTDIR)$(sysconfdir)/dconf/db/gdm.d/locks
diff --git a/data/org.gnome.login-screen.gschema.xml.in b/data/org.gnome.login-screen.gschema.xml.in
index f0c9dfe..657d0b0 100644
--- a/data/org.gnome.login-screen.gschema.xml.in
+++ b/data/org.gnome.login-screen.gschema.xml.in
@@ -31,6 +31,17 @@
         provide branding.
       </_description>
     </key>
+    <key name="fallback-logo" type="s">
+      <default>''</default>
+      <_summary>
+        Path to small image at top of user list
+      </_summary>
+      <_description>
+        The fallback login screen can optionally show a small image at the top of its
+        user list to provide site administrators and distributions a way to
+        provide branding.
+      </_description>
+    </key>
     <key name="disable-user-list" type="b">
       <default>false</default>
       <_summary>
@@ -41,5 +52,32 @@
         as. This setting can be toggled to disable showing the user list.
       </_description>
     </key>
+    <key name="banner-message-enable" type="b">
+      <default>false</default>
+      <_summary>
+        Enable showing the banner message
+      </_summary>
+      <_description>
+        Set to true to show the banner message text.
+      </_description>
+    </key>
+    <key name="banner-message-text" type="s">
+      <default>''</default>
+      <_summary>
+        Banner message text
+      </_summary>
+      <_description>
+        Text banner message to show in the login window.
+      </_description>
+    </key>
+    <key name="disable-restart-buttons" type="b">
+      <default>false</default>
+      <_summary>
+        Disable showing the restart buttons
+      </_summary>
+      <_description>
+        Set to true to disable showing the restart buttons in the login window.
+      </_description>
+    </key>
   </schema>
 </schemalist>
diff --git a/gui/simple-chooser/chooser-main.c b/gui/simple-chooser/chooser-main.c
index 2978a23..2b42031 100644
--- a/gui/simple-chooser/chooser-main.c
+++ b/gui/simple-chooser/chooser-main.c
@@ -30,7 +30,6 @@
 #include <glib/gi18n.h>
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 
 #include "gdm-common.h"
 #include "gdm-log.h"
@@ -199,25 +198,8 @@ at_set_gtk_modules (void)
 static void
 load_a11y (void)
 {
-        const char        *env_a_t_support;
-        gboolean           a_t_support;
-        GConfClient       *gconf_client;
-
-        gconf_client = gconf_client_get_default ();
-
-        env_a_t_support = g_getenv ("GNOME_ACCESSIBILITY");
-        if (env_a_t_support) {
-                a_t_support = atoi (env_a_t_support);
-        } else {
-                a_t_support = gconf_client_get_bool (gconf_client, ACCESSIBILITY_KEY, NULL);
-        }
-
-        if (a_t_support) {
-                assistive_registry_start ();
-                at_set_gtk_modules ();
-        }
-
-        g_object_unref (gconf_client);
+        assistive_registry_start ();
+        at_set_gtk_modules ();
 }
 
 int
diff --git a/gui/simple-chooser/gdm-host-chooser.c b/gui/simple-chooser/gdm-host-chooser.c
index 1f5f9c6..7ed5b79 100644
--- a/gui/simple-chooser/gdm-host-chooser.c
+++ b/gui/simple-chooser/gdm-host-chooser.c
@@ -30,7 +30,6 @@
 #include <glib/gi18n.h>
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 
 #include "gdm-common.h"
 #include "gdm-log.h"
@@ -200,25 +199,8 @@ at_set_gtk_modules (void)
 static void
 load_a11y (void)
 {
-        const char        *env_a_t_support;
-        gboolean           a_t_support;
-        GConfClient       *gconf_client;
-
-        gconf_client = gconf_client_get_default ();
-
-        env_a_t_support = g_getenv ("GNOME_ACCESSIBILITY");
-        if (env_a_t_support) {
-                a_t_support = atoi (env_a_t_support);
-        } else {
-                a_t_support = gconf_client_get_bool (gconf_client, ACCESSIBILITY_KEY, NULL);
-        }
-
-        if (a_t_support) {
-                assistive_registry_start ();
-                at_set_gtk_modules ();
-        }
-
-        g_object_unref (gconf_client);
+        assistive_registry_start ();
+        at_set_gtk_modules ();
 }
 
 int
diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am
index ed4fd0a..f11e6cf 100644
--- a/gui/simple-greeter/Makefile.am
+++ b/gui/simple-greeter/Makefile.am
@@ -26,12 +26,6 @@ AM_CPPFLAGS = \
 	$(SIMPLE_GREETER_CFLAGS)			\
 	$(NULL)
 
- INTLTOOL_SCHEMAS_RULE@
-
-schemasdir   = @GCONF_SCHEMA_FILE_DIR@
-schemas_in_files = gdm-simple-greeter.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
-
 noinst_PROGRAMS = 			\
 	test-filesystem-type		\
 	test-greeter-login-window	\
@@ -85,8 +79,6 @@ test_greeter_panel_SOURCES = 	\
 	gdm-clock-widget.c      \
 	gdm-option-widget.h     \
 	gdm-option-widget.c     \
-	gdm-recent-option-widget.h	\
-	gdm-recent-option-widget.c	\
 	gdm-cell-renderer-timer.h	\
 	gdm-cell-renderer-timer.c	\
 	gdm-timer.h			\
@@ -106,7 +98,6 @@ test_greeter_panel_LDADD =	\
 	$(top_builddir)/gui/simple-greeter/libgdmsimplegreeter/libgdmsimplegreeter.la	\
 	$(SIMPLE_GREETER_LIBS)		\
 	$(GTK_LIBS)			\
-	$(GCONF_LIBS)			\
 	$(LIBXKLAVIER_LIBS)		\
 	$(UPOWER_LIBS)		\
 	$(NULL)
@@ -199,8 +190,6 @@ gdm_simple_greeter_SOURCES =  		\
 	gdm-clock-widget.c		\
 	gdm-option-widget.h		\
 	gdm-option-widget.c		\
-	gdm-recent-option-widget.h	\
-	gdm-recent-option-widget.c	\
 	gdm-sessions.h			\
 	gdm-sessions.c			\
 	gdm-session-option-widget.h	\
@@ -228,27 +217,10 @@ ui_DATA = 					\
 	gdm-greeter-login-window.ui		\
 	$(NULL)
 
-EXTRA_DIST = 			\
-	$(schemas_in_files)	\
-	$(ui_DATA)		\
+EXTRA_DIST = 						\
+	$(ui_DATA)					\
 	$(NULL)
 
-DISTCLEANFILES =                        \
-        $(schemas_DATA)                 \
-        $(NULL)
-
 MAINTAINERCLEANFILES =                  \
         *~                              \
         Makefile.in
-
-if GCONF_SCHEMAS_INSTALL
-# don't do this if we are building in eg. rpm
-install-data-local: $(schemas_DATA)
-	if test -z "$(DESTDIR)" ; then \
-		for p in $(schemas_DATA) ; do \
-			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/gui/simple-greeter/$$p ; \
-		done \
-	fi
-else
-install-data-local:
-endif
diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
index 7bd6660..70192fc 100644
--- a/gui/simple-greeter/gdm-greeter-login-window.c
+++ b/gui/simple-greeter/gdm-greeter-login-window.c
@@ -41,6 +41,7 @@
 #include <glib/gi18n.h>
 #include <glib/gstdio.h>
 #include <glib-object.h>
+#include <gio/gio.h>
 
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdkx.h>
@@ -48,8 +49,6 @@
 
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
-
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
 
@@ -83,11 +82,11 @@
 
 #define UI_XML_FILE       "gdm-greeter-login-window.ui"
 
-#define KEY_GREETER_DIR             "/apps/gdm/simple-greeter"
-#define KEY_BANNER_MESSAGE_ENABLED  KEY_GREETER_DIR "/banner_message_enable"
-#define KEY_BANNER_MESSAGE_TEXT     KEY_GREETER_DIR "/banner_message_text"
-#define KEY_LOGO                    KEY_GREETER_DIR "/logo_icon_name"
-#define KEY_DISABLE_USER_LIST       "/apps/gdm/simple-greeter/disable_user_list"
+#define LOGIN_SCREEN_SCHEMA         "org.gnome.login-screen"
+#define KEY_BANNER_MESSAGE_ENABLED  "banner-message-enable"
+#define KEY_BANNER_MESSAGE_TEXT     "banner-message-text"
+#define KEY_LOGO                    "fallback-logo"
+#define KEY_DISABLE_USER_LIST       "disable-user-list"
 
 #define LSB_RELEASE_COMMAND "lsb_release -d"
 
@@ -122,14 +121,14 @@ struct GdmGreeterLoginWindowPrivate
         GtkWidget       *auth_page_box;
         guint            display_is_local : 1;
         guint            user_chooser_loaded : 1;
-        GConfClient     *client;
+        GSettings       *settings;
         GList           *extensions;
         GdmLoginExtension *active_extension;
         GList           *extensions_to_enable;
         GList           *extensions_to_stop;
 
         gboolean         banner_message_enabled;
-        guint            gconf_cnxn;
+        gulong           gsettings_cnxn;
 
         guint            last_mode;
         guint            dialog_mode;
@@ -1870,23 +1869,18 @@ load_theme (GdmGreeterLoginWindow *login_window)
 
         image = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "logo-image"));
         if (image != NULL) {
-                char        *icon_name;
-                GError      *error;
-
-                error = NULL;
-                icon_name = gconf_client_get_string (login_window->priv->client, KEY_LOGO, &error);
-                if (error != NULL) {
-                        g_debug ("GdmGreeterLoginWindow: unable to get logo icon name: %s", error->message);
-                        g_error_free (error);
-                }
+                GdkPixbuf *pixbuf;
+                char *path;
+
+                path = g_settings_get_string (login_window->priv->settings, KEY_LOGO);
+                g_debug ("GdmGreeterLoginWindow: Got greeter logo '%s'", path);
 
-                g_debug ("GdmGreeterLoginWindow: Got greeter logo '%s'",
-                          icon_name ? icon_name : "(null)");
-                if (icon_name != NULL) {
-                        gtk_image_set_from_icon_name (GTK_IMAGE (image),
-                                                      icon_name,
-                                                      GTK_ICON_SIZE_DIALOG);
-                        g_free (icon_name);
+                pixbuf = gdk_pixbuf_new_from_file_at_scale (path, -1, 48, TRUE, NULL);
+                g_free (path);
+
+                if (pixbuf != NULL) {
+                        gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+                        g_object_unref (pixbuf);
                 }
         }
 
@@ -2045,7 +2039,6 @@ gdm_greeter_login_window_get_preferred_height (GtkWidget *widget,
 static void
 update_banner_message (GdmGreeterLoginWindow *login_window)
 {
-        GError      *error;
         gboolean     enabled;
 
         if (login_window->priv->auth_banner_label == NULL) {
@@ -2054,12 +2047,7 @@ update_banner_message (GdmGreeterLoginWindow *login_window)
                 return;
         }
 
-        error = NULL;
-        enabled = gconf_client_get_bool (login_window->priv->client, KEY_BANNER_MESSAGE_ENABLED, &error);
-        if (error != NULL) {
-                g_debug ("GdmGreeterLoginWindow: unable to get configuration: %s", error->message);
-                g_error_free (error);
-        }
+        enabled = g_settings_get_boolean (login_window->priv->settings, KEY_BANNER_MESSAGE_ENABLED);
 
         login_window->priv->banner_message_enabled = enabled;
 
@@ -2067,15 +2055,11 @@ update_banner_message (GdmGreeterLoginWindow *login_window)
                 g_debug ("GdmGreeterLoginWindow: banner message disabled");
                 gtk_widget_hide (login_window->priv->auth_banner_label);
         } else {
-                char *message = NULL;
-                error = NULL;
-                if (message == NULL) {
-                        message = gconf_client_get_string (login_window->priv->client, KEY_BANNER_MESSAGE_TEXT, &error);
-                        if (error != NULL) {
-                                g_debug("GdmGreeterLoginWindow: unable to get banner text: %s", error->message);
-                                g_error_free(error);
-                        }
-                }
+                char *message;
+
+                message = g_settings_get_string (login_window->priv->settings,
+                                                 KEY_BANNER_MESSAGE_TEXT);
+
                 if (message != NULL) {
                         char *markup;
                         markup = g_markup_printf_escaped ("<small><i>%s</i></small>", message);
@@ -2229,29 +2213,24 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
 }
 
 static void
-on_gconf_key_changed (GConfClient           *client,
-                      guint                  cnxn_id,
-                      GConfEntry            *entry,
-                      GdmGreeterLoginWindow *login_window)
+on_gsettings_key_changed (GSettings             *settings,
+                          gchar                 *key,
+                          gpointer               user_data)
 {
-        const char *key;
-        GConfValue *value;
+        GdmGreeterLoginWindow *login_window;
 
-        key = gconf_entry_get_key (entry);
-        value = gconf_entry_get_value (entry);
+        login_window = GDM_GREETER_LOGIN_WINDOW (user_data);
 
         if (strcmp (key, KEY_BANNER_MESSAGE_ENABLED) == 0) {
-                if (value->type == GCONF_VALUE_BOOL) {
-                        gboolean enabled;
+                gboolean enabled;
+
+                enabled = g_settings_get_boolean (settings, key);
+
+                g_debug ("setting key %s = %d", key, enabled);
+
+                login_window->priv->banner_message_enabled = enabled;
+                update_banner_message (login_window);
 
-                        enabled = gconf_value_get_bool (value);
-                        g_debug ("setting key %s = %d", key, enabled);
-                        login_window->priv->banner_message_enabled = enabled;
-                        update_banner_message (login_window);
-                } else {
-                        g_warning ("Error retrieving configuration key '%s': Invalid type",
-                                   key);
-                }
         } else if (strcmp (key, KEY_BANNER_MESSAGE_TEXT) == 0) {
                 if (login_window->priv->banner_message_enabled) {
                         update_banner_message (login_window);
@@ -2566,9 +2545,8 @@ load_login_extensions (GdmGreeterLoginWindow *login_window)
 static void
 gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
 {
-        GConfClient *client;
-        GError      *error;
-        gboolean     user_list_disable;
+        GSettings *settings;
+        gboolean   user_list_disable;
 
         gdm_profile_start (NULL);
 
@@ -2577,19 +2555,12 @@ gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
         login_window->priv->dialog_mode = MODE_UNDEFINED;
         login_window->priv->next_mode = MODE_UNDEFINED;
 
-        client = gconf_client_get_default ();
-        error = NULL;
+        settings = g_settings_new (LOGIN_SCREEN_SCHEMA);
 
         /* The user list is not shown only if the user list is disabled and
          * timed login is also not being used.
          */
-        user_list_disable = gconf_client_get_bool (client,
-                                                   KEY_DISABLE_USER_LIST,
-                                                   &error);
-        if (error != NULL) {
-                g_debug ("GdmUserChooserWidget: unable to get disable-user-list configuration: %s", error->message);
-                g_error_free (error);
-        }
+        user_list_disable = g_settings_get_boolean (settings, KEY_DISABLE_USER_LIST);
 
         login_window->priv->user_list_disabled = user_list_disable;
 
@@ -2609,17 +2580,13 @@ gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
                           G_CALLBACK (on_window_state_event),
                           NULL);
 
-        login_window->priv->client = gconf_client_get_default ();
-        gconf_client_add_dir (login_window->priv->client,
-                              KEY_GREETER_DIR,
-                              GCONF_CLIENT_PRELOAD_ONELEVEL,
-                              NULL);
-        login_window->priv->gconf_cnxn = gconf_client_notify_add (login_window->priv->client,
-                                                                  KEY_GREETER_DIR,
-                                                                  (GConfClientNotifyFunc)on_gconf_key_changed,
-                                                                  login_window,
-                                                                  NULL,
-                                                                  NULL);
+        login_window->priv->settings = g_settings_new (LOGIN_SCREEN_SCHEMA);
+
+        login_window->priv->gsettings_cnxn = g_signal_connect (login_window->priv->settings,
+                                                               "changed",
+                                                               G_CALLBACK (on_gsettings_key_changed),
+                                                               login_window);
+
         g_idle_add ((GSourceFunc) load_login_extensions, login_window);
         gdm_profile_end (NULL);
 }
@@ -2636,8 +2603,8 @@ gdm_greeter_login_window_finalize (GObject *object)
 
         g_return_if_fail (login_window->priv != NULL);
 
-        if (login_window->priv->client != NULL) {
-                g_object_unref (login_window->priv->client);
+        if (login_window->priv->settings != NULL) {
+                g_object_unref (login_window->priv->settings);
         }
 
         G_OBJECT_CLASS (gdm_greeter_login_window_parent_class)->finalize (object);
diff --git a/gui/simple-greeter/gdm-greeter-panel.c b/gui/simple-greeter/gdm-greeter-panel.c
index 598aadf..552e6fa 100644
--- a/gui/simple-greeter/gdm-greeter-panel.c
+++ b/gui/simple-greeter/gdm-greeter-panel.c
@@ -40,7 +40,6 @@
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
 #include <dbus/dbus-glib.h>
 
 #ifdef HAVE_UPOWER
@@ -61,7 +60,10 @@
 #define GPM_DBUS_PATH      "/org/gnome/SettingsDaemon/Power"
 #define GPM_DBUS_INTERFACE "org.gnome.SettingsDaemon.Power"
 
-#define KEY_DISABLE_RESTART_BUTTONS "/apps/gdm/simple-greeter/disable_restart_buttons"
+#define LOGIN_SCREEN_SCHEMA           "org.gnome.login-screen"
+
+#define KEY_DISABLE_RESTART_BUTTONS   "disable-restart-buttons"
+
 #define KEY_NOTIFICATION_AREA_PADDING "/apps/notification_area_applet/prefs/padding"
 
 #define GDM_GREETER_PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_PANEL, GdmGreeterPanelPrivate))
@@ -762,18 +764,12 @@ do_disconnect (GtkWidget       *widget,
 static gboolean
 get_show_restart_buttons (GdmGreeterPanel *panel)
 {
-        gboolean     show;
-        GError      *error;
-        GConfClient *client;
+        gboolean   show;
+        GSettings *settings;
 
-        client = gconf_client_get_default ();
+        settings = g_settings_new (LOGIN_SCREEN_SCHEMA);
 
-        error = NULL;
-        show = ! gconf_client_get_bool (client, KEY_DISABLE_RESTART_BUTTONS, &error);
-        if (error != NULL) {
-                g_debug ("GdmGreeterPanel: unable to get disable-restart-buttons configuration: %s", error->message);
-                g_error_free (error);
-        }
+        show = ! g_settings_get_boolean (settings, KEY_DISABLE_RESTART_BUTTONS);
 
 #ifdef ENABLE_RBAC_SHUTDOWN
         {
@@ -790,7 +786,7 @@ get_show_restart_buttons (GdmGreeterPanel *panel)
                 }
         }
 #endif
-        g_object_unref (client);
+        g_object_unref (settings);
 
         return show;
 }
diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
index 60acc45..d0ce274 100644
--- a/gui/simple-greeter/gdm-greeter-session.c
+++ b/gui/simple-greeter/gdm-greeter-session.c
@@ -31,7 +31,6 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glib-object.h>
-#include <gconf/gconf-client.h>
 
 #include "gdm-greeter-session.h"
 #include "gdm-greeter-client.h"
diff --git a/gui/simple-greeter/gdm-user-chooser-widget.c b/gui/simple-greeter/gdm-user-chooser-widget.c
index 60ed160..e469ef6 100644
--- a/gui/simple-greeter/gdm-user-chooser-widget.c
+++ b/gui/simple-greeter/gdm-user-chooser-widget.c
@@ -33,10 +33,9 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glib/gstdio.h>
+#include <gio/gio.h>
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
-
 #include <act/act-user-manager.h>
 #include <act/act-user.h>
 
@@ -44,7 +43,9 @@
 #include "gdm-settings-keys.h"
 #include "gdm-settings-client.h"
 
-#define KEY_DISABLE_USER_LIST "/apps/gdm/simple-greeter/disable_user_list"
+#define LOGIN_SCREEN_SCHEMA   "org.gnome.login-screen"
+
+#define KEY_DISABLE_USER_LIST "disable-user-list"
 
 enum {
         USER_NO_DISPLAY              = 1 << 0,
@@ -753,18 +754,12 @@ gdm_user_chooser_widget_get_property (GObject        *object,
 static gboolean
 is_user_list_disabled (GdmUserChooserWidget *widget)
 {
-        GConfClient *client;
-        GError      *error;
-        gboolean     result;
-
-        client = gconf_client_get_default ();
-        error = NULL;
-        result = gconf_client_get_bool (client, KEY_DISABLE_USER_LIST, &error);
-        if (error != NULL) {
-                g_debug ("GdmUserChooserWidget: unable to get disable-user-list configuration: %s", error->message);
-                g_error_free (error);
-        }
-        g_object_unref (client);
+        GSettings *settings;
+        gboolean   result;
+
+        settings = g_settings_new (LOGIN_SCREEN_SCHEMA);
+        result = g_settings_get_boolean (settings, KEY_DISABLE_USER_LIST);
+        g_object_unref (settings);
 
         return result;
 }
diff --git a/gui/simple-greeter/greeter-main.c b/gui/simple-greeter/greeter-main.c
index a2c533e..ef54a7b 100644
--- a/gui/simple-greeter/greeter-main.c
+++ b/gui/simple-greeter/greeter-main.c
@@ -29,7 +29,6 @@
 #include <glib/gi18n.h>
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 
 #include <dbus/dbus-glib.h>
 



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