[gnome-control-center] universal-access: Update for metacity GSettings port



commit 957374dfa90c6626bdd0df945fd680d31cafbe21
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Nov 14 14:27:40 2011 +0000

    universal-access: Update for metacity GSettings port
    
    Use GSettings to set the visual-bell preferences, rather than GConf.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=625899

 configure.ac                          |    5 +-
 panels/universal-access/cc-ua-panel.c |  128 +++++++--------------------------
 2 files changed, 28 insertions(+), 105 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 216b3a7..e81c5e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -70,6 +70,7 @@ GSD_REQUIRED_VERSION=2.91.94
 NETWORK_MANAGER_REQUIRED_VERSION=0.8.992
 LIBNOTIFY_REQUIRED_VERSION=0.7.3
 GNOME_DESKTOP_REQUIRED_VERSION=3.1.91
+SCHEMAS_REQUIRED_VERSION=3.3.0
 
 COMMON_MODULES="gtk+-3.0 >= $GTK_REQUIRED_VERSION
  glib-2.0 >= $GLIB_REQUIRED_VERSION
@@ -111,8 +112,8 @@ PKG_CHECK_MODULES(SOUND_PANEL, $COMMON_MODULES libxml-2.0
                   libcanberra-gtk3 >= $CANBERRA_REQUIRED_VERSION
                   libpulse >= $PA_REQUIRED_VERSION
                   libpulse-mainloop-glib >= $PA_REQUIRED_VERSION
-                  gconf-2.0)
-PKG_CHECK_MODULES(UNIVERSAL_ACCESS_PANEL, $COMMON_MODULES gconf-2.0)
+                  gsettings-desktop-schemas >= $SCHEMAS_REQUIRED_VERSION)
+PKG_CHECK_MODULES(UNIVERSAL_ACCESS_PANEL, $COMMON_MODULES gconf-2.0 gsettings-desktop-schemas >= $SCHEMAS_REQUIRED_VERSION)
 PKG_CHECK_MODULES(USER_ACCOUNTS_PANEL, $COMMON_MODULES dbus-glib-1
                   polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION
                   gnome-desktop-3.0
diff --git a/panels/universal-access/cc-ua-panel.c b/panels/universal-access/cc-ua-panel.c
index ceabea1..c771442 100644
--- a/panels/universal-access/cc-ua-panel.c
+++ b/panels/universal-access/cc-ua-panel.c
@@ -25,12 +25,10 @@
 #include <config.h>
 
 #include <math.h>
+#include <glib/gi18n-lib.h>
+#include <gsettings-desktop-schemas/gdesktop-enums.h>
 #include "cc-ua-panel.h"
 
-#include <gconf/gconf-client.h>
-
-#include "gconf-property-editor.h"
-
 #include "zoom-options.h"
 
 #define WID(b, w) (GtkWidget *) gtk_builder_get_object (b, w)
@@ -44,7 +42,7 @@ G_DEFINE_DYNAMIC_TYPE (CcUaPanel, cc_ua_panel, CC_TYPE_PANEL)
 struct _CcUaPanelPrivate
 {
   GtkBuilder *builder;
-  GConfClient *client;
+  GSettings *wm_settings;
   GSettings *interface_settings;
   GSettings *kb_settings;
   GSettings *mouse_settings;
@@ -52,8 +50,6 @@ struct _CcUaPanelPrivate
   GSettings *mediakeys_settings;
 
   GObject *zoom_options;
-
-  GSList *notify_list;
 };
 
 
@@ -87,21 +83,6 @@ static void
 cc_ua_panel_dispose (GObject *object)
 {
   CcUaPanelPrivate *priv = CC_UA_PANEL (object)->priv;
-  GSList *l;
-
-  /* remove the notify callbacks, since they rely on builder/client being
-   * available */
-  if (priv->notify_list)
-    {
-      for (l = priv->notify_list; l; l = g_slist_next (l))
-        {
-          gconf_client_notify_remove (priv->client,
-                                      GPOINTER_TO_INT (l->data));
-        }
-      g_slist_free (priv->notify_list);
-      priv->notify_list = NULL;
-    }
-
 
   if (priv->builder)
     {
@@ -109,10 +90,10 @@ cc_ua_panel_dispose (GObject *object)
       priv->builder = NULL;
     }
 
-  if (priv->client)
+  if (priv->wm_settings)
     {
-      g_object_unref (priv->client);
-      priv->client = NULL;
+      g_object_unref (priv->wm_settings);
+      priv->wm_settings = NULL;
     }
 
   if (priv->interface_settings)
@@ -270,46 +251,6 @@ settings_on_off_editor_new (CcUaPanelPrivate  *priv,
   g_settings_bind (settings, key, widget, "active", G_SETTINGS_BIND_DEFAULT);
 }
 
-static GConfValue *
-cc_ua_panel_toggle_switch (GConfPropertyEditor *peditor,
-                           const GConfValue    *value)
-{
-  GtkWidget *sw;
-  gboolean enabled;
-
-  enabled = gconf_value_get_bool (value);
-  sw = (GtkWidget*) gconf_property_editor_get_ui_control (peditor);
-
-  gtk_switch_set_active (GTK_SWITCH (sw), enabled);
-
-  return gconf_value_copy (value);
-}
-
-static void
-gconf_on_off_peditor_new (CcUaPanelPrivate  *priv,
-                          const gchar       *key,
-                          GtkWidget         *widget,
-                          gchar            **section)
-{
-  GObject *peditor;
-
-  /* set data to enable/disable the section this on/off switch controls */
-  if (section)
-    {
-      g_object_set_data (G_OBJECT (widget), "section-widgets", section);
-      g_signal_connect (widget, "notify::active",
-                        G_CALLBACK (cc_ua_panel_section_switched),
-                        priv->builder);
-    }
-
-  /* set up the boolean editor */
-  peditor = gconf_peditor_new_switch (NULL, key, widget, NULL);
-  g_object_set (peditor, "conv-to-widget-cb", cc_ua_panel_toggle_switch, NULL);
-
-  /* emit the notify on the key, so that the conv-to-widget-cb callback is run */
-  gconf_client_notify (priv->client, key);
-}
-
 /* seeing section */
 #define GTK_THEME_KEY "gtk-theme"
 #define ICON_THEME_KEY "icon-theme"
@@ -562,19 +503,16 @@ cc_ua_panel_init_seeing (CcUaPanel *self)
 
 /* hearing/sound section */
 static void
-visual_bell_type_notify_cb (GConfClient *client,
-                            guint        cnxn_id,
-                            GConfEntry  *entry,
+visual_bell_type_notify_cb (GSettings   *settings,
+                            const gchar *key,
                             CcUaPanel   *panel)
 {
   GtkWidget *widget;
-  const gchar *value;
+  GDesktopVisualBellType type;
 
-  g_return_if_fail (entry != NULL);
+  type = g_settings_get_enum (panel->priv->wm_settings, "visual-bell-type");
 
-  value = gconf_value_get_string (entry->value);
-
-  if (g_strcmp0 ("frame_flash", value) == 0)
+  if (type == G_DESKTOP_VISUAL_BELL_FRAME_FLASH)
     widget = WID (panel->priv->builder, "hearing_flash_window_title_button");
   else
     widget = WID (panel->priv->builder, "hearing_flash_screen_button");
@@ -586,15 +524,16 @@ static void
 visual_bell_type_toggle_cb (GtkWidget *button,
                             CcUaPanel *panel)
 {
-  const gchar *key = "/apps/metacity/general/visual_bell_type";
-  gboolean window_title;
+  gboolean frame_flash;
+  GDesktopVisualBellType type;
 
-  window_title = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+  frame_flash = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
 
-  if (window_title)
-    gconf_client_set_string (panel->priv->client, key, "frame_flash", NULL);
+  if (frame_flash)
+    type = G_DESKTOP_VISUAL_BELL_FRAME_FLASH;
   else
-    gconf_client_set_string (panel->priv->client, key, "fullscreen", NULL);
+    type = G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH;
+  g_settings_set_enum (panel->priv->wm_settings, "visual-bell-type", type);
 }
 
 static gboolean
@@ -614,32 +553,16 @@ cc_ua_panel_init_hearing (CcUaPanel *self)
 {
   CcUaPanelPrivate *priv = self->priv;
   GtkWidget *w;
-  GConfEntry *entry;
-  guint id;
 
-  gconf_client_add_dir (priv->client, "/apps/metacity/general",
-                        GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+  /* set the initial visual bell values */
+  visual_bell_type_notify_cb (NULL, NULL, self);
 
+  /* and listen */
   w = WID (priv->builder, "hearing_visual_alerts_switch");
-  gconf_on_off_peditor_new (priv, "/apps/metacity/general/visual_bell",
-                            w, visual_alerts_section);
-
-  /* visual bell type */
-  id = gconf_client_notify_add (priv->client,
-                                "/apps/metacity/general/visual_bell_type",
-                                (GConfClientNotifyFunc)
-                                visual_bell_type_notify_cb,
-                                self, NULL, NULL);
-  priv->notify_list = g_slist_prepend (priv->notify_list, GINT_TO_POINTER (id));
-
-  /* set the initial value */
-  entry = gconf_client_get_entry (priv->client,
-                                  "/apps/metacity/general/visual_bell_type",
-                                  NULL, TRUE, NULL);
-  if (entry == NULL)
-    g_warning ("The following warning is because metacity's GConf settings aren't installed");
-  visual_bell_type_notify_cb (priv->client, 0, entry, self);
+  settings_on_off_editor_new (priv, priv->wm_settings, "visual-bell", w, visual_alerts_section);
 
+  g_signal_connect (priv->wm_settings, "changed::visual-bell-type",
+                    G_CALLBACK (visual_bell_type_notify_cb), self);
   g_signal_connect (WID (priv->builder, "hearing_flash_window_title_button"),
                     "toggled", G_CALLBACK (visual_bell_type_toggle_cb), self);
 
@@ -812,13 +735,12 @@ cc_ua_panel_init (CcUaPanel *self)
       return;
     }
 
-  priv->client = gconf_client_get_default ();
-
   priv->interface_settings = g_settings_new ("org.gnome.desktop.interface");
   g_signal_connect (priv->interface_settings, "changed",
                     G_CALLBACK (interface_settings_changed_cb), self);
   interface_settings_changed_cb (priv->interface_settings, "gtk-theme", self);
 
+  priv->wm_settings = g_settings_new ("org.gnome.desktop.wm.preferences");
   priv->kb_settings = g_settings_new ("org.gnome.desktop.a11y.keyboard");
   priv->mouse_settings = g_settings_new ("org.gnome.desktop.a11y.mouse");
   priv->application_settings = g_settings_new ("org.gnome.desktop.a11y.applications");



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