]> git.0d.be Git - empathy.git/commitdiff
Port Empathy code to GSettings, remove EmpathyConf
authorDanielle Madeley <danielle.madeley@collabora.co.uk>
Thu, 10 Jun 2010 04:16:00 +0000 (14:16 +1000)
committerDanielle Madeley <danielle.madeley@collabora.co.uk>
Fri, 18 Jun 2010 01:34:19 +0000 (11:34 +1000)
27 files changed:
libempathy-gtk/Makefile.am
libempathy-gtk/empathy-avatar-chooser.c
libempathy-gtk/empathy-chat-text-view.c
libempathy-gtk/empathy-chat.c
libempathy-gtk/empathy-conf.c [deleted file]
libempathy-gtk/empathy-conf.h [deleted file]
libempathy-gtk/empathy-location-manager.c
libempathy-gtk/empathy-notify-manager.c
libempathy-gtk/empathy-sound.c
libempathy-gtk/empathy-spell.c
libempathy-gtk/empathy-theme-adium.c
libempathy-gtk/empathy-theme-boxes.c
libempathy-gtk/empathy-theme-manager.c
libempathy-gtk/empathy-ui-utils.c
libempathy/Makefile.am
libempathy/empathy-gsettings.h [new file with mode: 0644]
src/empathy-account-assistant.c
src/empathy-accounts-dialog.c
src/empathy-auto-salut-account-helper.c
src/empathy-chat-window.c
src/empathy-event-manager.c
src/empathy-ft-manager.c
src/empathy-main-window.c
src/empathy-migrate-butterfly-logs.c
src/empathy-preferences.c
src/empathy-status-icon.c
src/empathy.c

index 377929adcc46577f200739591b1a9484f2a1bb18..c8a4cbb6a0d14c2825cc297e1af0f2842cfc1e5c 100644 (file)
@@ -42,7 +42,6 @@ libempathy_gtk_handwritten_source =                   \
        empathy-chat-text-view.c                \
        empathy-chat-view.c                     \
        empathy-chat.c                          \
-       empathy-conf.c                          \
        empathy-contact-dialogs.c               \
        empathy-contact-list-store.c            \
        empathy-contact-list-view.c             \
@@ -89,7 +88,6 @@ libempathy_gtk_headers =                      \
        empathy-chat-text-view.h                \
        empathy-chat-view.h                     \
        empathy-chat.h                          \
-       empathy-conf.h                          \
        empathy-contact-dialogs.h               \
        empathy-contact-list-store.h            \
        empathy-contact-list-view.h             \
index 7a39f65f1b27a70b5b52fa966971b3e553c2d5aa..552e45dfecc9960374721079e29bb236accaf9d8 100644 (file)
 #include <gtk/gtk.h>
 #include <gio/gio.h>
 
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
 #include "empathy-avatar-chooser.h"
-#include "empathy-conf.h"
 #include "empathy-images.h"
 #include "empathy-ui-utils.h"
 
@@ -895,10 +895,14 @@ avatar_chooser_response_cb (GtkWidget            *widget,
 
                path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget));
                if (path) {
-                       empathy_conf_set_string (empathy_conf_get (),
-                                                EMPATHY_PREFS_UI_AVATAR_DIRECTORY,
-                                                path);
+                       GSettings *gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
+
+                       g_settings_set_string (gsettings_ui,
+                                              EMPATHY_PREFS_UI_AVATAR_DIRECTORY,
+                                              path);
+
                        g_free (path);
+                       g_object_unref (gsettings_ui);
                }
        }
        else if (response == GTK_RESPONSE_NO) {
@@ -919,6 +923,7 @@ avatar_chooser_clicked_cb (GtkWidget            *button,
        const gchar    *default_dir = DEFAULT_DIR;
        const gchar    *pics_dir;
        GtkFileFilter  *filter;
+       GSettings      *gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
        EmpathyAvatarChooserPriv *priv = GET_PRIV (chooser);
 
        if (priv->chooser_dialog) {
@@ -941,9 +946,9 @@ avatar_chooser_clicked_cb (GtkWidget            *button,
        gtk_window_set_destroy_with_parent (GTK_WINDOW (chooser_dialog), TRUE);
 
        /* Get special dirs */
-       empathy_conf_get_string (empathy_conf_get (),
-                                EMPATHY_PREFS_UI_AVATAR_DIRECTORY,
-                                &saved_dir);
+       saved_dir = g_settings_get_string (gsettings_ui,
+                                          EMPATHY_PREFS_UI_AVATAR_DIRECTORY);
+
        if (saved_dir && !g_file_test (saved_dir, G_FILE_TEST_IS_DIR)) {
                g_free (saved_dir);
                saved_dir = NULL;
@@ -1007,7 +1012,9 @@ avatar_chooser_clicked_cb (GtkWidget            *button,
                          chooser);
 
        gtk_widget_show (GTK_WIDGET (chooser_dialog));
+
        g_free (saved_dir);
+       g_object_unref (gsettings_ui);
 }
 
 /**
index 0f7400f1d19974570a25b845d66642f72e602a0a..c05b92fb96dfbc40c5b4cebb5312da0a3c44d360 100644 (file)
 
 #include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
+#include <gconf/gconf-client.h>
 
 #include <telepathy-glib/util.h>
 
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
 #include "empathy-chat-text-view.h"
 #include "empathy-chat.h"
-#include "empathy-conf.h"
 #include "empathy-ui-utils.h"
 #include "empathy-smiley-manager.h"
 #include "empathy-string-parser.h"
@@ -68,6 +69,7 @@ typedef struct {
        time_t                last_timestamp;
        gboolean              allow_scrolling;
        guint                 notify_system_fonts_id;
+       GConfClient          *gconf_client;
        EmpathySmileyManager *smiley_manager;
        gboolean              only_if_date;
 } EmpathyChatTextViewPriv;
@@ -203,17 +205,20 @@ chat_text_view_create_tags (EmpathyChatTextView *view)
 static void
 chat_text_view_system_font_update (EmpathyChatTextView *view)
 {
+       EmpathyChatTextViewPriv *priv = GET_PRIV (view);
        PangoFontDescription *font_description = NULL;
        gchar                *font_name;
 
-       if (empathy_conf_get_string (empathy_conf_get (),
-                                    "/desktop/gnome/interface/document_font_name",
-                                    &font_name) && font_name) {
-                                            font_description = pango_font_description_from_string (font_name);
-                                            g_free (font_name);
-                                    } else {
-                                            font_description = NULL;
-                                    }
+       font_name = gconf_client_get_string (priv->gconf_client,
+                       "/desktop/gnome/interface/document_font_name",
+                       NULL);
+
+       if (font_name != NULL) {
+               font_description = pango_font_description_from_string (font_name);
+               g_free (font_name);
+       } else {
+               font_description = NULL;
+       }
 
        gtk_widget_modify_font (GTK_WIDGET (view), font_description);
 
@@ -223,9 +228,10 @@ chat_text_view_system_font_update (EmpathyChatTextView *view)
 }
 
 static void
-chat_text_view_notify_system_font_cb (EmpathyConf *conf,
-                                     const gchar *key,
-                                     gpointer     user_data)
+chat_text_view_notify_system_font_cb (GConfClient *conf,
+                                     guint id,
+                                     GConfEntry *entry,
+                                     gpointer user_data)
 {
        EmpathyChatTextView *view = user_data;
 
@@ -559,7 +565,9 @@ chat_text_view_finalize (GObject *object)
 
        DEBUG ("%p", object);
 
-       empathy_conf_notify_remove (empathy_conf_get (), priv->notify_system_fonts_id);
+       gconf_client_notify_remove (priv->gconf_client,
+                                   priv->notify_system_fonts_id);
+       g_object_unref (priv->gconf_client);
 
        if (priv->last_contact) {
                g_object_unref (priv->last_contact);
@@ -634,11 +642,16 @@ empathy_chat_text_view_init (EmpathyChatTextView *view)
                      "cursor-visible", FALSE,
                      NULL);
 
+       priv->gconf_client = gconf_client_get_default ();
+       gconf_client_add_dir (priv->gconf_client,
+                             "/desktop/gnome/interface",
+                             GCONF_CLIENT_PRELOAD_ONELEVEL,
+                             NULL);
        priv->notify_system_fonts_id =
-               empathy_conf_notify_add (empathy_conf_get (),
+               gconf_client_notify_add (priv->gconf_client,
                                         "/desktop/gnome/interface/document_font_name",
                                         chat_text_view_notify_system_font_cb,
-                                        view);
+                                        view, NULL, NULL);
        chat_text_view_system_font_update (view);
        chat_text_view_create_tags (view);
 
@@ -1405,11 +1418,13 @@ empathy_chat_text_view_append_body (EmpathyChatTextView *view,
        GtkTextIter              start_iter;
        GtkTextIter              iter;
        GtkTextMark             *mark;
+       GSettings               *gsettings_chat;
 
        /* Check if we have to parse smileys */
-       empathy_conf_get_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
-                              &use_smileys);
+       gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
+       use_smileys = g_settings_get_boolean (gsettings_chat,
+                       EMPATHY_PREFS_CHAT_SHOW_SMILEYS);
+
        if (use_smileys)
                parsers = string_parsers_with_smiley;
        else
@@ -1434,6 +1449,8 @@ empathy_chat_text_view_append_body (EmpathyChatTextView *view,
                                           &iter);
 
        gtk_text_buffer_delete_mark (priv->buffer, mark);
+
+       g_object_unref (gsettings_chat);
 }
 
 void
index ae78b52cb2f1bf06bba9791322ffab3f20aec7b7..e68b91dbe8ff8f83064f438bfd828e0851b813f3 100644 (file)
 #include <libempathy/empathy-log-manager.h>
 #endif /* ENABLE_TPL */
 #include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-dispatcher.h>
 
 #include "empathy-chat.h"
-#include "empathy-conf.h"
 #include "empathy-spell.h"
 #include "empathy-contact-list-store.h"
 #include "empathy-contact-list-view.h"
@@ -77,6 +77,9 @@ typedef struct {
        EmpathyContact    *remote_contact;
        gboolean           show_contacts;
 
+       GSettings         *gsettings_chat;
+       GSettings         *gsettings_ui;
+
 #ifdef ENABLE_TPL
        TplLogManager     *log_manager;
 #else
@@ -104,10 +107,6 @@ typedef struct {
        gulong             delete_range_id;
        gulong             notify_cursor_position_id;
 
-       /* This stores the id for the spell checking configuration setting
-        * notification signal handler. */
-       guint              conf_notify_id;
-
        GtkWidget         *widget;
        GtkWidget         *hpaned;
        GtkWidget         *vbox_left;
@@ -1623,7 +1622,6 @@ chat_input_key_press_event_cb (GtkWidget   *widget,
                if (completed) {
                        guint        len;
                        const gchar *text;
-                       gchar       *complete_char = NULL;
                        GString     *message = NULL;
                        GList       *l;
 
@@ -1657,16 +1655,20 @@ chat_input_key_press_event_cb (GtkWidget   *widget,
 
                        gtk_text_buffer_insert_at_cursor (buffer, text, strlen (text));
 
-                       if (len == 1 && is_start_of_buffer &&
-                           empathy_conf_get_string (empathy_conf_get (),
-                                                    EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR,
-                                                    &complete_char) &&
-                           complete_char != NULL) {
+                       if (len == 1 && is_start_of_buffer) {
+                           gchar *complete_char;
+
+                           complete_char = g_settings_get_string (
+                                   priv->gsettings_chat,
+                                   EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR);
+
+                           if (complete_char != NULL) {
                                gtk_text_buffer_insert_at_cursor (buffer,
                                                                  complete_char,
                                                                  strlen (complete_char));
                                gtk_text_buffer_insert_at_cursor (buffer, " ", 1);
                                g_free (complete_char);
+                           }
                        }
 
                        g_free (completed);
@@ -2386,7 +2388,7 @@ update_misspelled_words (gpointer data)
 }
 
 static void
-conf_spell_checking_cb (EmpathyConf *conf,
+conf_spell_checking_cb (GSettings *gsettings_chat,
                        const gchar *key,
                        gpointer user_data)
 {
@@ -2398,8 +2400,8 @@ conf_spell_checking_cb (EmpathyConf *conf,
        if (strcmp (key, EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED) != 0)
                return;
 
-       empathy_conf_get_bool (conf, EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
-                               &spell_checker);
+       spell_checker = g_settings_get_boolean (gsettings_chat,
+                       EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED);
 
        if (!empathy_spell_supported ()) {
                spell_checker = FALSE;
@@ -2471,11 +2473,16 @@ conf_spell_checking_cb (EmpathyConf *conf,
 static gboolean
 chat_hpaned_pos_changed_cb (GtkWidget* hpaned, gpointer user_data)
 {
+       GSettings *gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
        gint hpaned_pos;
+
        hpaned_pos = gtk_paned_get_position (GTK_PANED(hpaned));
-       empathy_conf_set_int (empathy_conf_get (),
-                             EMPATHY_PREFS_UI_CHAT_WINDOW_PANED_POS,
-                             hpaned_pos);
+       g_settings_set_int (gsettings_chat,
+                           EMPATHY_PREFS_UI_CHAT_WINDOW_PANED_POS,
+                           hpaned_pos);
+
+       g_object_unref (gsettings_chat);
+
        return TRUE;
 }
 
@@ -2552,11 +2559,10 @@ chat_create_ui (EmpathyChat *chat)
        tp_g_signal_connect_object  (buffer, "changed",
                          G_CALLBACK (chat_input_text_buffer_changed_cb),
                          chat, 0);
-       priv->conf_notify_id =
-                       empathy_conf_notify_add (empathy_conf_get (),
-                                                EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
-                                                conf_spell_checking_cb, chat);
-       conf_spell_checking_cb (empathy_conf_get (),
+       tp_g_signal_connect_object (priv->gsettings_chat,
+                       "changed::" EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
+                       G_CALLBACK (conf_spell_checking_cb), chat, 0);
+       conf_spell_checking_cb (priv->gsettings_chat,
                                EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED, chat);
        gtk_container_add (GTK_CONTAINER (priv->scrolled_window_input),
                           chat->input_text_view);
@@ -2577,10 +2583,9 @@ chat_create_ui (EmpathyChat *chat)
                          NULL);
 
         /* Load the paned position */
-       if (empathy_conf_get_int (empathy_conf_get (),
-                                EMPATHY_PREFS_UI_CHAT_WINDOW_PANED_POS,
-                                &paned_pos)
-               && paned_pos)
+       paned_pos = g_settings_get_int (priv->gsettings_ui,
+                       EMPATHY_PREFS_UI_CHAT_WINDOW_PANED_POS);
+       if (paned_pos != 0)
                gtk_paned_set_position (GTK_PANED(priv->hpaned), paned_pos);
 
        /* Set widget focus order */
@@ -2661,11 +2666,8 @@ chat_finalize (GObject *object)
 
        DEBUG ("Finalized: %p", object);
 
-       if (priv->conf_notify_id != 0) {
-               empathy_conf_notify_remove (empathy_conf_get (),
-                                           priv->conf_notify_id);
-               priv->conf_notify_id = 0;
-       }
+       g_object_unref (priv->gsettings_chat);
+       g_object_unref (priv->gsettings_ui);
 
        g_list_foreach (priv->input_history, (GFunc) chat_input_history_entry_free, NULL);
        g_list_free (priv->input_history);
@@ -2876,6 +2878,9 @@ empathy_chat_init (EmpathyChat *chat)
 #else
        priv->log_manager = tpl_log_manager_dup_singleton ();
 #endif /* ENABLE_TPL */
+       priv->gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
+       priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
+
        priv->contacts_width = -1;
        priv->input_history = NULL;
        priv->input_history_current = NULL;
@@ -2884,9 +2889,8 @@ empathy_chat_init (EmpathyChat *chat)
        tp_account_manager_prepare_async (priv->account_manager, NULL,
                                          account_manager_prepared_cb, chat);
 
-       empathy_conf_get_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
-                              &priv->show_contacts);
+       priv->show_contacts = g_settings_get_boolean (priv->gsettings_chat,
+                       EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS);
 
        /* Block events for some time to avoid having "has come online" or
         * "joined" messages. */
diff --git a/libempathy-gtk/empathy-conf.c b/libempathy-gtk/empathy-conf.c
deleted file mode 100644 (file)
index 62efa60..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006 Imendio AB
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Richard Hult <richard@imendio.com>
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <gconf/gconf-client.h>
-
-#include <libempathy/empathy-utils.h>
-#include "empathy-conf.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
-#include <libempathy/empathy-debug.h>
-
-#define EMPATHY_CONF_ROOT       "/apps/empathy"
-#define DESKTOP_INTERFACE_ROOT  "/desktop/gnome/interface"
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyConf)
-typedef struct {
-       GConfClient *gconf_client;
-} EmpathyConfPriv;
-
-typedef struct {
-       EmpathyConf           *conf;
-       EmpathyConfNotifyFunc  func;
-       gpointer               user_data;
-} EmpathyConfNotifyData;
-
-static void conf_finalize (GObject *object);
-
-G_DEFINE_TYPE (EmpathyConf, empathy_conf, G_TYPE_OBJECT);
-
-static EmpathyConf *global_conf = NULL;
-
-static void
-empathy_conf_class_init (EmpathyConfClass *class)
-{
-       GObjectClass *object_class;
-
-       object_class = G_OBJECT_CLASS (class);
-
-       object_class->finalize = conf_finalize;
-
-       g_type_class_add_private (object_class, sizeof (EmpathyConfPriv));
-}
-
-static void
-empathy_conf_init (EmpathyConf *conf)
-{
-       EmpathyConfPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (conf,
-               EMPATHY_TYPE_CONF, EmpathyConfPriv);
-
-       conf->priv = priv;
-       priv->gconf_client = gconf_client_get_default ();
-
-       gconf_client_add_dir (priv->gconf_client,
-                             EMPATHY_CONF_ROOT,
-                             GCONF_CLIENT_PRELOAD_ONELEVEL,
-                             NULL);
-       gconf_client_add_dir (priv->gconf_client,
-                             DESKTOP_INTERFACE_ROOT,
-                             GCONF_CLIENT_PRELOAD_NONE,
-                             NULL);
-}
-
-static void
-conf_finalize (GObject *object)
-{
-       EmpathyConfPriv *priv;
-
-       priv = GET_PRIV (object);
-
-       gconf_client_remove_dir (priv->gconf_client,
-                                EMPATHY_CONF_ROOT,
-                                NULL);
-       gconf_client_remove_dir (priv->gconf_client,
-                                DESKTOP_INTERFACE_ROOT,
-                                NULL);
-
-       g_object_unref (priv->gconf_client);
-
-       G_OBJECT_CLASS (empathy_conf_parent_class)->finalize (object);
-}
-
-EmpathyConf *
-empathy_conf_get (void)
-{
-       if (!global_conf) {
-               global_conf = g_object_new (EMPATHY_TYPE_CONF, NULL);
-       }
-
-       return global_conf;
-}
-
-void
-empathy_conf_shutdown (void)
-{
-       if (global_conf) {
-               g_object_unref (global_conf);
-               global_conf = NULL;
-       }
-}
-
-gboolean
-empathy_conf_set_int (EmpathyConf  *conf,
-                    const gchar *key,
-                    gint         value)
-{
-       EmpathyConfPriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       DEBUG ("Setting int:'%s' to %d", key, value);
-
-       priv = GET_PRIV (conf);
-
-       return gconf_client_set_int (priv->gconf_client,
-                                    key,
-                                    value,
-                                    NULL);
-}
-
-gboolean
-empathy_conf_get_int (EmpathyConf  *conf,
-                    const gchar *key,
-                    gint        *value)
-{
-       EmpathyConfPriv *priv;
-       GError          *error = NULL;
-
-       *value = 0;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-       g_return_val_if_fail (value != NULL, FALSE);
-
-       priv = GET_PRIV (conf);
-
-       *value = gconf_client_get_int (priv->gconf_client,
-                                      key,
-                                      &error);
-
-       if (error) {
-               g_error_free (error);
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
-gboolean
-empathy_conf_set_bool (EmpathyConf  *conf,
-                     const gchar *key,
-                     gboolean     value)
-{
-       EmpathyConfPriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       DEBUG ("Setting bool:'%s' to %d ---> %s", key, value,
-               value ? "true" : "false");
-
-       priv = GET_PRIV (conf);
-
-       return gconf_client_set_bool (priv->gconf_client,
-                                     key,
-                                     value,
-                                     NULL);
-}
-
-gboolean
-empathy_conf_get_bool (EmpathyConf  *conf,
-                     const gchar *key,
-                     gboolean    *value)
-{
-       EmpathyConfPriv *priv;
-       GError          *error = NULL;
-
-       *value = FALSE;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-       g_return_val_if_fail (value != NULL, FALSE);
-
-       priv = GET_PRIV (conf);
-
-       *value = gconf_client_get_bool (priv->gconf_client,
-                                       key,
-                                       &error);
-
-       if (error) {
-               g_error_free (error);
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
-gboolean
-empathy_conf_set_string (EmpathyConf  *conf,
-                       const gchar *key,
-                       const gchar *value)
-{
-       EmpathyConfPriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       DEBUG ("Setting string:'%s' to '%s'", key, value);
-
-       priv = GET_PRIV (conf);
-
-       return gconf_client_set_string (priv->gconf_client,
-                                       key,
-                                       value,
-                                       NULL);
-}
-
-gboolean
-empathy_conf_get_string (EmpathyConf   *conf,
-                       const gchar  *key,
-                       gchar       **value)
-{
-       EmpathyConfPriv *priv;
-       GError          *error = NULL;
-
-       *value = NULL;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       priv = GET_PRIV (conf);
-
-       *value = gconf_client_get_string (priv->gconf_client,
-                                         key,
-                                         &error);
-
-       if (error) {
-               g_error_free (error);
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
-gboolean
-empathy_conf_set_string_list (EmpathyConf  *conf,
-                            const gchar *key,
-                            GSList      *value)
-{
-       EmpathyConfPriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       priv = GET_PRIV (conf);
-
-       return gconf_client_set_list (priv->gconf_client,
-                                     key,
-                                     GCONF_VALUE_STRING,
-                                     value,
-                                     NULL);
-}
-
-gboolean
-empathy_conf_get_string_list (EmpathyConf   *conf,
-                            const gchar  *key,
-                            GSList      **value)
-{
-       EmpathyConfPriv *priv;
-       GError          *error = NULL;
-
-       *value = NULL;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       priv = GET_PRIV (conf);
-
-       *value = gconf_client_get_list (priv->gconf_client,
-                                       key,
-                                       GCONF_VALUE_STRING,
-                                       &error);
-       if (error) {
-               g_error_free (error);
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
-static void
-conf_notify_data_free (EmpathyConfNotifyData *data)
-{
-       g_object_unref (data->conf);
-       g_slice_free (EmpathyConfNotifyData, data);
-}
-
-static void
-conf_notify_func (GConfClient *client,
-                 guint        id,
-                 GConfEntry  *entry,
-                 gpointer     user_data)
-{
-       EmpathyConfNotifyData *data;
-
-       data = user_data;
-
-       data->func (data->conf,
-                   gconf_entry_get_key (entry),
-                   data->user_data);
-}
-
-guint
-empathy_conf_notify_add (EmpathyConf           *conf,
-                       const gchar          *key,
-                       EmpathyConfNotifyFunc func,
-                       gpointer              user_data)
-{
-       EmpathyConfPriv       *priv;
-       guint                  id;
-       EmpathyConfNotifyData *data;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), 0);
-
-       priv = GET_PRIV (conf);
-
-       data = g_slice_new (EmpathyConfNotifyData);
-       data->func = func;
-       data->user_data = user_data;
-       data->conf = g_object_ref (conf);
-
-       id = gconf_client_notify_add (priv->gconf_client,
-                                     key,
-                                     conf_notify_func,
-                                     data,
-                                     (GFreeFunc) conf_notify_data_free,
-                                     NULL);
-
-       return id;
-}
-
-gboolean
-empathy_conf_notify_remove (EmpathyConf *conf,
-                          guint       id)
-{
-       EmpathyConfPriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
-
-       priv = GET_PRIV (conf);
-
-       gconf_client_notify_remove (priv->gconf_client, id);
-
-       return TRUE;
-}
-
diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h
deleted file mode 100644 (file)
index c418bb1..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006 Imendio AB
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- */
-
-#ifndef __EMPATHY_CONF_H__
-#define __EMPATHY_CONF_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_CONF         (empathy_conf_get_type ())
-#define EMPATHY_CONF(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONF, EmpathyConf))
-#define EMPATHY_CONF_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CONF, EmpathyConfClass))
-#define EMPATHY_IS_CONF(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONF))
-#define EMPATHY_IS_CONF_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONF))
-#define EMPATHY_CONF_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONF, EmpathyConfClass))
-
-typedef struct _EmpathyConf      EmpathyConf;
-typedef struct _EmpathyConfClass EmpathyConfClass;
-
-struct _EmpathyConf  {
-       GObject parent;
-       gpointer priv;
-};
-
-struct _EmpathyConfClass {
-       GObjectClass parent_class;
-};
-
-#define EMPATHY_PREFS_PATH "/apps/empathy"
-#define EMPATHY_PREFS_NOTIFICATIONS_ENABLED        EMPATHY_PREFS_PATH "/notifications/notifications_enabled"
-#define EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY  EMPATHY_PREFS_PATH "/notifications/notifications_disabled_away"
-#define EMPATHY_PREFS_NOTIFICATIONS_FOCUS          EMPATHY_PREFS_PATH "/notifications/notifications_focus"
-#define EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN EMPATHY_PREFS_PATH "/notifications/notifications_contact_signin"
-#define EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT EMPATHY_PREFS_PATH "/notifications/notifications_contact_signout"
-#define EMPATHY_PREFS_SOUNDS_ENABLED               EMPATHY_PREFS_PATH "/sounds/sounds_enabled"
-#define EMPATHY_PREFS_SOUNDS_DISABLED_AWAY         EMPATHY_PREFS_PATH "/sounds/sounds_disabled_away"
-#define EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE      EMPATHY_PREFS_PATH "/sounds/sounds_incoming_message"
-#define EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE      EMPATHY_PREFS_PATH "/sounds/sounds_outgoing_message"
-#define EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION      EMPATHY_PREFS_PATH "/sounds/sounds_new_conversation"
-#define EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN         EMPATHY_PREFS_PATH "/sounds/sounds_service_login"
-#define EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT        EMPATHY_PREFS_PATH "/sounds/sounds_service_logout"
-#define EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN         EMPATHY_PREFS_PATH "/sounds/sounds_contact_login"
-#define EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT        EMPATHY_PREFS_PATH "/sounds/sounds_contact_logout"
-#define EMPATHY_PREFS_POPUPS_WHEN_AVAILABLE        EMPATHY_PREFS_PATH "/notifications/popups_when_available"
-#define EMPATHY_PREFS_CHAT_SHOW_SMILEYS            EMPATHY_PREFS_PATH "/conversation/graphical_smileys"
-#define EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS  EMPATHY_PREFS_PATH "/conversation/show_contacts_in_rooms"
-#define EMPATHY_PREFS_CHAT_THEME                   EMPATHY_PREFS_PATH "/conversation/theme"
-#define EMPATHY_PREFS_CHAT_ADIUM_PATH              EMPATHY_PREFS_PATH "/conversation/adium_path"
-#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES EMPATHY_PREFS_PATH "/conversation/spell_checker_languages"
-#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED   EMPATHY_PREFS_PATH "/conversation/spell_checker_enabled"
-#define EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR    EMPATHY_PREFS_PATH "/conversation/nick_completion_char"
-#define EMPATHY_PREFS_CHAT_AVATAR_IN_ICON          EMPATHY_PREFS_PATH "/conversation/avatar_in_icon"
-#define EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS  EMPATHY_PREFS_PATH "/conversation/enable_webkit_developer_tools"
-#define EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS     EMPATHY_PREFS_PATH "/ui/separate_chat_windows"
-#define EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN        EMPATHY_PREFS_PATH "/ui/main_window_hidden"
-#define EMPATHY_PREFS_UI_AVATAR_DIRECTORY          EMPATHY_PREFS_PATH "/ui/avatar_directory"
-#define EMPATHY_PREFS_UI_SHOW_AVATARS              EMPATHY_PREFS_PATH "/ui/show_avatars"
-#define EMPATHY_PREFS_UI_SHOW_PROTOCOLS            EMPATHY_PREFS_PATH "/ui/show_protocols"
-#define EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST      EMPATHY_PREFS_PATH "/ui/compact_contact_list"
-#define EMPATHY_PREFS_UI_CHAT_WINDOW_PANED_POS     EMPATHY_PREFS_PATH "/ui/chat_window_paned_pos"
-#define EMPATHY_PREFS_UI_SHOW_OFFLINE              EMPATHY_PREFS_PATH "/ui/show_offline"
-#define EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM      EMPATHY_PREFS_PATH "/contacts/sort_criterium"
-#define EMPATHY_PREFS_HINTS_CLOSE_MAIN_WINDOW      EMPATHY_PREFS_PATH "/hints/close_main_window"
-#define EMPATHY_PREFS_USE_CONN                     EMPATHY_PREFS_PATH "/use_conn"
-#define EMPATHY_PREFS_AUTOCONNECT                  EMPATHY_PREFS_PATH "/autoconnect"
-#define EMPATHY_PREFS_AUTOAWAY                     EMPATHY_PREFS_PATH "/autoaway"
-#define EMPATHY_PREFS_IMPORT_ASKED                 EMPATHY_PREFS_PATH "/import_asked"
-#define EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED      EMPATHY_PREFS_PATH "/butterfly_logs_migrated"
-#define EMPATHY_PREFS_FILE_TRANSFER_DEFAULT_FOLDER EMPATHY_PREFS_PATH "/file_transfer/default_folder"
-#define EMPATHY_PREFS_LOCATION_PUBLISH             EMPATHY_PREFS_PATH "/location/publish"
-#define EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK    EMPATHY_PREFS_PATH "/location/resource_network"
-#define EMPATHY_PREFS_LOCATION_RESOURCE_CELL       EMPATHY_PREFS_PATH "/location/resource_cell"
-#define EMPATHY_PREFS_LOCATION_RESOURCE_GPS        EMPATHY_PREFS_PATH "/location/resource_gps"
-#define EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY     EMPATHY_PREFS_PATH "/location/reduce_accuracy"
-
-typedef void (*EmpathyConfNotifyFunc) (EmpathyConf  *conf,
-                                     const gchar *key,
-                                     gpointer     user_data);
-
-GType       empathy_conf_get_type        (void) G_GNUC_CONST;
-EmpathyConf *empathy_conf_get             (void);
-void        empathy_conf_shutdown        (void);
-guint       empathy_conf_notify_add      (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        EmpathyConfNotifyFunc   func,
-                                        gpointer               data);
-gboolean    empathy_conf_notify_remove   (EmpathyConf            *conf,
-                                        guint                  id);
-gboolean    empathy_conf_set_int         (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        gint                   value);
-gboolean    empathy_conf_get_int         (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        gint                  *value);
-gboolean    empathy_conf_set_bool        (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        gboolean               value);
-gboolean    empathy_conf_get_bool        (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        gboolean              *value);
-gboolean    empathy_conf_set_string      (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        const gchar           *value);
-gboolean    empathy_conf_get_string      (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        gchar                **value);
-gboolean    empathy_conf_set_string_list (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        GSList                *value);
-gboolean    empathy_conf_get_string_list (EmpathyConf            *conf,
-                                        const gchar           *key,
-                                        GSList              **value);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_CONF_H__ */
-
index 89e0a014b0427ed5621fb1799c524a002aa83ae2..1c09c358c0cec9602464353b865a10f48174fcf1 100644 (file)
@@ -34,9 +34,9 @@
 #include <extensions/extensions.h>
 
 #include "empathy-location-manager.h"
-#include "empathy-conf.h"
 
 #include "libempathy/empathy-enum-types.h"
+#include "libempathy/empathy-gsettings.h"
 #include "libempathy/empathy-location.h"
 #include "libempathy/empathy-utils.h"
 
@@ -56,6 +56,8 @@ typedef struct {
      */
     GHashTable *location;
 
+    GSettings *gsettings_loc;
+
     GeoclueResourceFlags resources;
     GeoclueMasterClient *gc_client;
     GeocluePosition *gc_position;
@@ -106,6 +108,12 @@ location_manager_dispose (GObject *object)
     priv->account_manager = NULL;
   }
 
+  if (priv->gsettings_loc != NULL)
+  {
+    g_object_unref (priv->gsettings_loc);
+    priv->gsettings_loc = NULL;
+  }
+
   if (priv->gc_client != NULL)
   {
     g_object_unref (priv->gc_client);
@@ -198,19 +206,14 @@ publish_location (EmpathyLocationManager *self,
 {
   EmpathyLocationManagerPriv *priv = GET_PRIV (self);
   guint connection_status = -1;
-  gboolean can_publish;
-  EmpathyConf *conf = empathy_conf_get ();
 
   if (!conn)
     return;
 
   if (!force_publication)
     {
-      if (!empathy_conf_get_bool (conf, EMPATHY_PREFS_LOCATION_PUBLISH,
-            &can_publish))
-        return;
-
-      if (!can_publish)
+      if (!g_settings_get_boolean (priv->gsettings_loc,
+            EMPATHY_PREFS_LOCATION_PUBLISH))
         return;
     }
 
@@ -599,21 +602,16 @@ setup_geoclue (EmpathyLocationManager *self)
 }
 
 static void
-publish_cb (EmpathyConf *conf,
+publish_cb (GSettings *gsettings_loc,
             const gchar *key,
             gpointer user_data)
 {
   EmpathyLocationManager *manager = EMPATHY_LOCATION_MANAGER (user_data);
   EmpathyLocationManagerPriv *priv = GET_PRIV (manager);
-  gboolean can_publish;
 
   DEBUG ("Publish Conf changed");
 
-
-  if (!empathy_conf_get_bool (conf, key, &can_publish))
-    return;
-
-  if (can_publish)
+  if (g_settings_get_boolean (gsettings_loc, key))
     {
       if (!priv->geoclue_is_setup)
         setup_geoclue (manager);
@@ -638,20 +636,16 @@ publish_cb (EmpathyConf *conf,
 }
 
 static void
-resource_cb (EmpathyConf  *conf,
+resource_cb (GSettings *gsettings_loc,
              const gchar *key,
              gpointer user_data)
 {
   EmpathyLocationManager *manager = EMPATHY_LOCATION_MANAGER (user_data);
   EmpathyLocationManagerPriv *priv = GET_PRIV (manager);
   GeoclueResourceFlags resource = 0;
-  gboolean resource_enabled;
 
   DEBUG ("%s changed", key);
 
-  if (!empathy_conf_get_bool (conf, key, &resource_enabled))
-    return;
-
   if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK))
     resource = GEOCLUE_RESOURCE_NETWORK;
   if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_CELL))
@@ -659,7 +653,7 @@ resource_cb (EmpathyConf  *conf,
   if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_GPS))
     resource = GEOCLUE_RESOURCE_GPS;
 
-  if (resource_enabled)
+  if (g_settings_get_boolean (gsettings_loc, key))
     priv->resources |= resource;
   else
     priv->resources &= ~resource;
@@ -669,20 +663,16 @@ resource_cb (EmpathyConf  *conf,
 }
 
 static void
-accuracy_cb (EmpathyConf  *conf,
+accuracy_cb (GSettings *gsettings_loc,
              const gchar *key,
              gpointer user_data)
 {
   EmpathyLocationManager *manager = EMPATHY_LOCATION_MANAGER (user_data);
   EmpathyLocationManagerPriv *priv = GET_PRIV (manager);
 
-  gboolean enabled;
-
   DEBUG ("%s changed", key);
 
-  if (!empathy_conf_get_bool (conf, key, &enabled))
-    return;
-  priv->reduce_accuracy = enabled;
+  priv->reduce_accuracy = g_settings_get_boolean (gsettings_loc, key);
 
   if (!priv->geoclue_is_setup)
     return;
@@ -724,7 +714,6 @@ account_manager_prepared_cb (GObject *source_object,
 static void
 empathy_location_manager_init (EmpathyLocationManager *self)
 {
-  EmpathyConf               *conf;
   EmpathyLocationManagerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
       EMPATHY_TYPE_LOCATION_MANAGER, EmpathyLocationManagerPriv);
 
@@ -732,6 +721,7 @@ empathy_location_manager_init (EmpathyLocationManager *self)
   priv->geoclue_is_setup = FALSE;
   priv->location = g_hash_table_new_full (g_direct_hash, g_direct_equal,
       g_free, (GDestroyNotify) tp_g_value_slice_free);
+  priv->gsettings_loc = g_settings_new (EMPATHY_PREFS_LOCATION_SCHEMA);
 
   /* Setup account status callbacks */
   priv->account_manager = tp_account_manager_dup ();
@@ -740,23 +730,29 @@ empathy_location_manager_init (EmpathyLocationManager *self)
       account_manager_prepared_cb, self);
 
   /* Setup settings status callbacks */
-  conf = empathy_conf_get ();
-  empathy_conf_notify_add (conf, EMPATHY_PREFS_LOCATION_PUBLISH, publish_cb,
+  g_signal_connect (priv->gsettings_loc,
+      "changed::" EMPATHY_PREFS_LOCATION_PUBLISH,
+      G_CALLBACK (publish_cb), self);
+  g_signal_connect (priv->gsettings_loc,
+      "changed::" EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK,
+      G_CALLBACK (resource_cb), self);
+  g_signal_connect (priv->gsettings_loc,
+      "changed::" EMPATHY_PREFS_LOCATION_RESOURCE_CELL,
+      G_CALLBACK (resource_cb), self);
+  g_signal_connect (priv->gsettings_loc,
+      "changed::" EMPATHY_PREFS_LOCATION_RESOURCE_GPS,
+      G_CALLBACK (resource_cb), self);
+  g_signal_connect (priv->gsettings_loc,
+      "changed::" EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY,
+      G_CALLBACK (accuracy_cb), self);
+
+  resource_cb (priv->gsettings_loc, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK,
+      self);
+  resource_cb (priv->gsettings_loc, EMPATHY_PREFS_LOCATION_RESOURCE_CELL, self);
+  resource_cb (priv->gsettings_loc, EMPATHY_PREFS_LOCATION_RESOURCE_GPS, self);
+  accuracy_cb (priv->gsettings_loc, EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY,
       self);
-  empathy_conf_notify_add (conf, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK,
-      resource_cb, self);
-  empathy_conf_notify_add (conf, EMPATHY_PREFS_LOCATION_RESOURCE_CELL,
-      resource_cb, self);
-  empathy_conf_notify_add (conf, EMPATHY_PREFS_LOCATION_RESOURCE_GPS,
-      resource_cb, self);
-  empathy_conf_notify_add (conf, EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY,
-      accuracy_cb, self);
-
-  resource_cb (conf, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK, self);
-  resource_cb (conf, EMPATHY_PREFS_LOCATION_RESOURCE_CELL, self);
-  resource_cb (conf, EMPATHY_PREFS_LOCATION_RESOURCE_GPS, self);
-  accuracy_cb (conf, EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY, self);
-  publish_cb (conf, EMPATHY_PREFS_LOCATION_PUBLISH, self);
+  publish_cb (priv->gsettings_loc, EMPATHY_PREFS_LOCATION_PUBLISH, self);
 }
 
 EmpathyLocationManager *
index 8f7991166044738a8f409ce9b811271dd56334ec..d0e0aadecf1aa62ba4500324df9a706097b91373 100644 (file)
 
 #include <telepathy-glib/account-manager.h>
 
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
 #include <libempathy-gtk/empathy-ui-utils.h>
-#include <libempathy-gtk/empathy-conf.h>
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include <libempathy/empathy-debug.h>
@@ -184,23 +184,20 @@ gboolean
 empathy_notify_manager_notification_is_enabled  (EmpathyNotifyManager *self)
 {
   EmpathyNotifyManagerPriv *priv = GET_PRIV (self);
-  EmpathyConf *conf;
-  gboolean res;
+  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
   TpConnectionPresenceType presence;
+  gboolean ret = FALSE;
 
-  conf = empathy_conf_get ();
-  res = FALSE;
-
-  empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_ENABLED, &res);
-
-  if (!res)
-    return FALSE;
+  if (!g_settings_get_boolean (gsettings, EMPATHY_PREFS_NOTIFICATIONS_ENABLED))
+    goto finally;
 
   if (!tp_account_manager_is_prepared (priv->account_manager,
         TP_ACCOUNT_MANAGER_FEATURE_CORE))
     {
       DEBUG ("account manager is not ready yet; display the notification");
-      return TRUE;
+      ret = TRUE;
+
+      goto finally;
     }
 
   presence = tp_account_manager_get_most_available_presence (
@@ -210,12 +207,15 @@ empathy_notify_manager_notification_is_enabled  (EmpathyNotifyManager *self)
   if (presence != TP_CONNECTION_PRESENCE_TYPE_AVAILABLE &&
       presence != TP_CONNECTION_PRESENCE_TYPE_UNSET)
     {
-      empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
-          &res);
-
-      if (res)
-        return FALSE;
+      if (!g_settings_get_boolean (gsettings,
+            EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY))
+        goto finally;
     }
 
-  return TRUE;
+  ret = TRUE;
+
+finally:
+  g_object_unref (gsettings);
+
+  return ret;
 }
index 74dcf6a2e852af681c81374299240b5353940997..03f04191637179ffcaa3d6dd7af03135d88ac73c 100644 (file)
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
-#include "empathy-conf.h"
-
 typedef struct {
   EmpathySound sound_id;
   const char * event_ca_id;
   const char * event_ca_description;
-  const char * gconf_key;
+  const char * key;
 } EmpathySoundEntry;
 
 typedef struct {
@@ -79,32 +78,37 @@ static gboolean
 empathy_sound_pref_is_enabled (EmpathySound sound_id)
 {
   EmpathySoundEntry *entry;
-  EmpathyConf *conf;
+  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_SOUNDS_SCHEMA);
   gboolean res;
 
   entry = &(sound_entries[sound_id]);
   g_return_val_if_fail (entry->sound_id == sound_id, FALSE);
 
-  if (entry->gconf_key == NULL)
-    return TRUE;
-
-  conf = empathy_conf_get ();
-  res = FALSE;
+  if (entry->key == NULL)
+    {
+      res = TRUE;
+      goto finally;
+    }
 
-  empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_ENABLED, &res);
+  res = g_settings_get_boolean (gsettings, EMPATHY_PREFS_SOUNDS_ENABLED);
 
   if (!res)
-    return FALSE;
+    goto finally;
 
   if (!empathy_check_available_state ())
     {
-      empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY, &res);
-
-      if (res)
-        return FALSE;
+      if (g_settings_get_boolean (gsettings,
+            EMPATHY_PREFS_SOUNDS_DISABLED_AWAY))
+        {
+          res = FALSE;
+          goto finally;
+        }
     }
 
-  empathy_conf_get_bool (conf, entry->gconf_key, &res);
+  res = g_settings_get_boolean (gsettings, entry->key);
+
+finally:
+  g_object_unref (gsettings);
 
   return res;
 }
index 17c7f100e303bff989e9c1e7338b22665107e00c..ff94bb0532d8a06ab77465f89ab1af728cab8c88 100644 (file)
 #endif
 
 #include "empathy-spell.h"
-#include "empathy-conf.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-gsettings.h>
 
 #ifdef HAVE_ENCHANT
 
@@ -50,7 +50,6 @@ typedef struct {
 
 static GHashTable  *iso_code_names = NULL;
 static GList       *languages = NULL;
-static gboolean     empathy_conf_notify_inited = FALSE;
 
 static void
 spell_iso_codes_parse_start_tag (GMarkupParseContext  *ctx,
@@ -159,7 +158,7 @@ spell_iso_code_names_init (void)
 }
 
 static void
-spell_notify_languages_cb (EmpathyConf  *conf,
+spell_notify_languages_cb (GSettings   *gsettings,
                           const gchar *key,
                           gpointer     user_data)
 {
@@ -186,23 +185,26 @@ spell_notify_languages_cb (EmpathyConf  *conf,
 static void
 spell_setup_languages (void)
 {
+       static GSettings *gsettings = NULL;
        gchar  *str;
 
-       if (!empathy_conf_notify_inited) {
-               empathy_conf_notify_add (empathy_conf_get (),
-                                        EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
-                                        spell_notify_languages_cb, NULL);
+       if (gsettings == NULL) {
+               /* FIXME: this is never uninitialised */
+               gsettings = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
 
-               empathy_conf_notify_inited = TRUE;
+               g_signal_connect (gsettings,
+                       "changed::" EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
+                       G_CALLBACK (spell_notify_languages_cb), NULL);
        }
 
        if (languages) {
                return;
        }
 
-       if (empathy_conf_get_string (empathy_conf_get (),
-                                    EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
-                                    &str) && str) {
+       str = g_settings_get_string (gsettings,
+                       EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES);
+
+       if (str != NULL) {
                gchar **strv;
                gint    i;
 
index ad174ce3b14e197d1527e546aff17748a67f42b5..e3582a7d40d9d876b65e83340b1475442b3a87f9 100644 (file)
 #include <pango/pango.h>
 #include <gdk/gdk.h>
 
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-time.h>
 #include <libempathy/empathy-utils.h>
 
 #include "empathy-theme-adium.h"
 #include "empathy-smiley-manager.h"
-#include "empathy-conf.h"
 #include "empathy-ui-utils.h"
 #include "empathy-plist.h"
 #include "empathy-string-parser.h"
@@ -63,8 +63,8 @@ typedef struct {
        gboolean              last_is_backlog;
        gboolean              page_loaded;
        GList                *message_queue;
-       guint                 notify_enable_webkit_developer_tools_id;
        GtkWidget            *inspector_window;
+       GSettings            *gsettings_chat;
 } EmpathyThemeAdiumPriv;
 
 struct _EmpathyAdiumData {
@@ -111,14 +111,13 @@ G_DEFINE_TYPE_WITH_CODE (EmpathyThemeAdium, empathy_theme_adium,
 static void
 theme_adium_update_enable_webkit_developer_tools (EmpathyThemeAdium *theme)
 {
+       EmpathyThemeAdiumPriv *priv = GET_PRIV (theme);
        WebKitWebView  *web_view = WEBKIT_WEB_VIEW (theme);
        gboolean        enable_webkit_developer_tools;
 
-       if (!empathy_conf_get_bool (empathy_conf_get (),
-                                   EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS,
-                                   &enable_webkit_developer_tools)) {
-               return;
-       }
+       enable_webkit_developer_tools = g_settings_get_boolean (
+                       priv->gsettings_chat,
+                       EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS);
 
        g_object_set (G_OBJECT (webkit_web_view_get_settings (web_view)),
                      "enable-developer-extras",
@@ -127,7 +126,7 @@ theme_adium_update_enable_webkit_developer_tools (EmpathyThemeAdium *theme)
 }
 
 static void
-theme_adium_notify_enable_webkit_developer_tools_cb (EmpathyConf *conf,
+theme_adium_notify_enable_webkit_developer_tools_cb (GSettings   *gsettings,
                                                     const gchar *key,
                                                     gpointer     user_data)
 {
@@ -257,13 +256,10 @@ theme_adium_parse_body (const gchar *text)
 {
        EmpathyStringParser *parsers;
        GString *string;
-       gboolean use_smileys;
+       GSettings *gsettings = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
 
        /* Check if we have to parse smileys */
-       empathy_conf_get_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
-                              &use_smileys);
-       if (use_smileys)
+       if (g_settings_get_boolean (gsettings, EMPATHY_PREFS_CHAT_SHOW_SMILEYS))
                parsers = string_parsers_with_smiley;
        else
                parsers = string_parsers;
@@ -274,6 +270,8 @@ theme_adium_parse_body (const gchar *text)
        string = g_string_sized_new (strlen (text));
        empathy_string_parser_substr (text, -1, parsers, string);
 
+       g_object_unref (gsettings);
+
        return g_string_free (string, FALSE);
 }
 
@@ -875,9 +873,7 @@ theme_adium_finalize (GObject *object)
        EmpathyThemeAdiumPriv *priv = GET_PRIV (object);
 
        empathy_adium_data_unref (priv->data);
-
-       empathy_conf_notify_remove (empathy_conf_get (),
-                                   priv->notify_enable_webkit_developer_tools_id);
+       g_object_unref (priv->gsettings_chat);
 
        G_OBJECT_CLASS (empathy_theme_adium_parent_class)->finalize (object);
 }
@@ -1154,11 +1150,11 @@ empathy_theme_adium_init (EmpathyThemeAdium *theme)
                          G_CALLBACK (theme_adium_navigation_policy_decision_requested_cb),
                          NULL);
 
-       priv->notify_enable_webkit_developer_tools_id =
-               empathy_conf_notify_add (empathy_conf_get (),
-                                        EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS,
-                                        theme_adium_notify_enable_webkit_developer_tools_cb,
-                                        theme);
+       priv->gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
+       g_signal_connect (priv->gsettings_chat,
+               "changed::" EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS,
+               G_CALLBACK (theme_adium_notify_enable_webkit_developer_tools_cb),
+               theme);
 
        theme_adium_update_enable_webkit_developer_tools (theme);
 }
index 29fb934f40731613b2d48286d10667d8686e9b5b..531f2baa6a109a5d7f76dc875a7721d66ea21356 100644 (file)
@@ -33,7 +33,6 @@
 #include <libempathy/empathy-utils.h>
 #include "empathy-theme-boxes.h"
 #include "empathy-ui-utils.h"
-#include "empathy-conf.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include <libempathy/empathy-debug.h>
index 905e0bf1dd936c8db21b1415a7c2d44593e182c6..bcad60538b49338266c8533a31fdd60cc7f366bf 100644 (file)
 #include <gtk/gtk.h>
 
 #include <telepathy-glib/util.h>
+
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
 #include "empathy-theme-manager.h"
 #include "empathy-chat-view.h"
-#include "empathy-conf.h"
 #include "empathy-chat-text-view.h"
 #include "empathy-theme-boxes.h"
 #include "empathy-theme-irc.h"
 
 #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyThemeManager)
 typedef struct {
+       GSettings   *gsettings_chat;
        gchar       *name;
-       guint        name_notify_id;
        gchar       *adium_path;
-       guint        adium_path_notify_id;
        GtkSettings *settings;
        GList       *boxes_views;
 } EmpathyThemeManagerPriv;
@@ -393,16 +393,17 @@ theme_manager_ensure_theme_exists (const gchar *name)
 }
 
 static void
-theme_manager_notify_name_cb (EmpathyConf *conf,
+theme_manager_notify_name_cb (GSettings   *gsettings_chat,
                              const gchar *key,
                              gpointer     user_data)
 {
        EmpathyThemeManager     *manager = EMPATHY_THEME_MANAGER (user_data);
        EmpathyThemeManagerPriv *priv = GET_PRIV (manager);
-       gchar                   *name = NULL;
+       gchar                   *name;
+
+       name = g_settings_get_string (gsettings_chat, key);
 
-       if (!empathy_conf_get_string (conf, key, &name) ||
-           !theme_manager_ensure_theme_exists (name) ||
+       if (!theme_manager_ensure_theme_exists (name) ||
            !tp_strdiff (priv->name, name)) {
                if (!priv->name) {
                        priv->name = g_strdup ("classic");
@@ -431,7 +432,7 @@ theme_manager_notify_name_cb (EmpathyConf *conf,
 }
 
 static void
-theme_manager_notify_adium_path_cb (EmpathyConf *conf,
+theme_manager_notify_adium_path_cb (GSettings   *gsettings_chat,
                                    const gchar *key,
                                    gpointer     user_data)
 {
@@ -439,8 +440,9 @@ theme_manager_notify_adium_path_cb (EmpathyConf *conf,
        EmpathyThemeManagerPriv *priv = GET_PRIV (manager);
        gchar                   *adium_path = NULL;
 
-       if (!empathy_conf_get_string (conf, key, &adium_path) ||
-           !tp_strdiff (priv->adium_path, adium_path)) {
+       adium_path = g_settings_get_string (gsettings_chat, key);
+
+       if (!tp_strdiff (priv->adium_path, adium_path)) {
                g_free (adium_path);
                return;
        }
@@ -457,9 +459,8 @@ theme_manager_finalize (GObject *object)
        EmpathyThemeManagerPriv *priv = GET_PRIV (object);
        GList                   *l;
 
-       empathy_conf_notify_remove (empathy_conf_get (), priv->name_notify_id);
+       g_object_unref (priv->gsettings_chat);
        g_free (priv->name);
-       empathy_conf_notify_remove (empathy_conf_get (), priv->adium_path_notify_id);
        g_free (priv->adium_path);
 
        for (l = priv->boxes_views; l; l = l->next) {
@@ -500,23 +501,23 @@ empathy_theme_manager_init (EmpathyThemeManager *manager)
 
        manager->priv = priv;
 
+       priv->gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
+
        /* Take the theme name and track changes */
-       priv->name_notify_id =
-               empathy_conf_notify_add (empathy_conf_get (),
-                                        EMPATHY_PREFS_CHAT_THEME,
-                                        theme_manager_notify_name_cb,
-                                        manager);
-       theme_manager_notify_name_cb (empathy_conf_get (),
+       g_signal_connect (priv->gsettings_chat,
+                         "changed::" EMPATHY_PREFS_CHAT_THEME,
+                         G_CALLBACK (theme_manager_notify_name_cb),
+                         manager);
+       theme_manager_notify_name_cb (priv->gsettings_chat,
                                      EMPATHY_PREFS_CHAT_THEME,
                                      manager);
 
        /* Take the adium path and track changes */
-       priv->adium_path_notify_id =
-               empathy_conf_notify_add (empathy_conf_get (),
-                                        EMPATHY_PREFS_CHAT_ADIUM_PATH,
-                                        theme_manager_notify_adium_path_cb,
-                                        manager);
-       theme_manager_notify_adium_path_cb (empathy_conf_get (),
+       g_signal_connect (priv->gsettings_chat,
+                         "changed::" EMPATHY_PREFS_CHAT_ADIUM_PATH,
+                         G_CALLBACK (theme_manager_notify_adium_path_cb),
+                         manager);
+       theme_manager_notify_adium_path_cb (priv->gsettings_chat,
                                            EMPATHY_PREFS_CHAT_ADIUM_PATH,
                                            manager);
 }
index b5e37cade5b0fe55b2d9a0dc0d795742487570f8..6339a891dac9aaacd37ad7caabaa4294df213aa8 100644 (file)
@@ -41,7 +41,6 @@
 #include "empathy-ui-utils.h"
 #include "empathy-images.h"
 #include "empathy-smiley-manager.h"
-#include "empathy-conf.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include <libempathy/empathy-debug.h>
index 6d596bedae85479da4d4ee03de4989e5703cfb43..c8d362952891fac2d53b69a1a93990a84c1851ad 100644 (file)
@@ -42,6 +42,7 @@ libempathy_headers =                          \
        empathy-dispatcher.h                    \
        empathy-ft-factory.h                    \
        empathy-ft-handler.h                    \
+       empathy-gsettings.h                     \
        empathy-handler.h                       \
        empathy-idle.h                          \
        empathy-irc-network-manager.h           \
diff --git a/libempathy/empathy-gsettings.h b/libempathy/empathy-gsettings.h
new file mode 100644 (file)
index 0000000..1aef1e3
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Authors: Danielle Madeley <danielle.madeley@collabora.co.uk>
+ */
+
+#ifndef __EMPATHY_GSETTINGS_H__
+#define __EMPATHY_GSETTINGS_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_PREFS_SCHEMA "org.gnome.Empathy"
+#define EMPATHY_PREFS_USE_CONN                     "use-conn"
+#define EMPATHY_PREFS_AUTOCONNECT                  "autoconnect"
+#define EMPATHY_PREFS_AUTOAWAY                     "autoaway"
+#define EMPATHY_PREFS_IMPORT_ASKED                 "import-asked"
+#define EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED      "butterfly-logs-migrated"
+#define EMPATHY_PREFS_FILE_TRANSFER_DEFAULT_FOLDER "file-transfer-default-folder"
+
+#define EMPATHY_PREFS_NOTIFICATIONS_SCHEMA EMPATHY_PREFS_SCHEMA ".notifications"
+#define EMPATHY_PREFS_NOTIFICATIONS_ENABLED        "notifications-enabled"
+#define EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY  "notifications-disabled-away"
+#define EMPATHY_PREFS_NOTIFICATIONS_FOCUS          "notifications-focus"
+#define EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN "notifications-contact-signin"
+#define EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT "notifications-contact-signout"
+#define EMPATHY_PREFS_NOTIFICATIONS_POPUPS_WHEN_AVAILABLE "popups-when-available"
+
+#define EMPATHY_PREFS_SOUNDS_SCHEMA EMPATHY_PREFS_SCHEMA ".sounds"
+#define EMPATHY_PREFS_SOUNDS_ENABLED               "sounds-enabled"
+#define EMPATHY_PREFS_SOUNDS_DISABLED_AWAY         "sounds-disabled-away"
+#define EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE      "sounds-incoming-message"
+#define EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE      "sounds-outgoing-message"
+#define EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION      "sounds-new-conversation"
+#define EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN         "sounds-service-login"
+#define EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT        "sounds-service-logout"
+#define EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN         "sounds-contact-login"
+#define EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT        "sounds-contact-logout"
+
+#define EMPATHY_PREFS_CHAT_SCHEMA EMPATHY_PREFS_SCHEMA ".conversation"
+#define EMPATHY_PREFS_CHAT_SHOW_SMILEYS            "graphical-smileys"
+#define EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS  "show-contacts-in-rooms"
+#define EMPATHY_PREFS_CHAT_THEME                   "theme"
+#define EMPATHY_PREFS_CHAT_ADIUM_PATH              "adium-path"
+#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES "spell-checker-languages"
+#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED   "spell-checker-enabled"
+#define EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR    "nick-completion-char"
+#define EMPATHY_PREFS_CHAT_AVATAR_IN_ICON          "avatar-in-icon"
+#define EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS  "enable-webkit-developer-tools"
+
+#define EMPATHY_PREFS_UI_SCHEMA EMPATHY_PREFS_SCHEMA ".ui"
+#define EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS     "separate-chat-windows"
+#define EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN        "main-window-hidden"
+#define EMPATHY_PREFS_UI_AVATAR_DIRECTORY          "avatar-directory"
+#define EMPATHY_PREFS_UI_SHOW_AVATARS              "show-avatars"
+#define EMPATHY_PREFS_UI_SHOW_PROTOCOLS            "show-protocols"
+#define EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST      "compact-contact-list"
+#define EMPATHY_PREFS_UI_CHAT_WINDOW_PANED_POS     "chat-window-paned-pos"
+#define EMPATHY_PREFS_UI_SHOW_OFFLINE              "show-offline"
+
+#define EMPATHY_PREFS_CONTACTS_SCHEMA EMPATHY_PREFS_SCHEMA ".contacts"
+#define EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM      "sort-criterium"
+
+#define EMPATHY_PREFS_HINTS_SCHEMA EMPATHY_PREFS_SCHEMA ".hints"
+#define EMPATHY_PREFS_HINTS_CLOSE_MAIN_WINDOW      "close-main-window"
+
+#define EMPATHY_PREFS_LOCATION_SCHEMA EMPATHY_PREFS_SCHEMA ".location"
+#define EMPATHY_PREFS_LOCATION_PUBLISH             "publish"
+#define EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK    "resource-network"
+#define EMPATHY_PREFS_LOCATION_RESOURCE_CELL       "resource-cell"
+#define EMPATHY_PREFS_LOCATION_RESOURCE_GPS        "resource-gps"
+#define EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY     "reduce-accuracy"
+
+G_END_DECLS
+
+#endif /* __EMPATHY_GSETTINGS_H__ */
+
index 060345a9e10ca55a4a9c5885f1d3513f27a68166..6ad4756522f5c815cb6a00023bd03bae0a97d4b4 100644 (file)
@@ -36,7 +36,6 @@
 #include <libempathy-gtk/empathy-account-widget.h>
 #include <libempathy-gtk/empathy-protocol-chooser.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
-#include <libempathy-gtk/empathy-conf.h>
 
 #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
 #include <libempathy/empathy-debug.h>
index d81d3de2ddb2c7a260f8de65b5fbc3217552bdb9..12ac5b24438282692c8fce4c2a210428d0d89096 100644 (file)
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-connection-managers.h>
 #include <libempathy/empathy-connectivity.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
+#include <libempathy/empathy-gsettings.h>
 
+#include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-protocol-chooser.h>
 #include <libempathy-gtk/empathy-account-widget.h>
 #include <libempathy-gtk/empathy-account-widget-irc.h>
 #include <libempathy-gtk/empathy-account-widget-sip.h>
 #include <libempathy-gtk/empathy-cell-renderer-activatable.h>
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-images.h>
 
 #include "empathy-accounts-dialog.h"
@@ -2219,8 +2219,8 @@ do_constructed (GObject *object)
 {
   EmpathyAccountsDialog *dialog = EMPATHY_ACCOUNTS_DIALOG (object);
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
-  gboolean import_asked;
   GtkTreeModel *model;
+  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
 
   accounts_dialog_build_ui (dialog);
   accounts_dialog_model_setup (dialog);
@@ -2237,19 +2237,15 @@ do_constructed (GObject *object)
   tp_account_manager_prepare_async (priv->account_manager, NULL,
       accounts_dialog_manager_ready_cb, dialog);
 
-  empathy_conf_get_bool (empathy_conf_get (),
-      EMPATHY_PREFS_IMPORT_ASKED, &import_asked);
-
   if (empathy_import_accounts_to_import ())
     {
       gtk_widget_show (priv->button_import);
 
-      if (!import_asked)
+      if (!g_settings_get_boolean (gsettings, EMPATHY_PREFS_IMPORT_ASKED))
         {
           GtkWidget *import_dialog;
 
-          empathy_conf_set_bool (empathy_conf_get (),
-              EMPATHY_PREFS_IMPORT_ASKED, TRUE);
+          g_settings_set_boolean (gsettings, EMPATHY_PREFS_IMPORT_ASKED, TRUE);
           import_dialog = empathy_import_dialog_new (GTK_WINDOW (dialog),
               FALSE);
           gtk_widget_show (import_dialog);
@@ -2257,6 +2253,8 @@ do_constructed (GObject *object)
     }
 
   priv->connectivity = empathy_connectivity_dup_singleton ();
+
+  g_object_unref (gsettings);
 }
 
 static void
index 0a96316f13a90cdbcb327482dd89c7c75533f4e9..23484dd457065d8d4e70385324010e10ea13ddd6 100644 (file)
@@ -29,7 +29,6 @@
 #include <libebook/e-book.h>
 
 #include <libempathy/empathy-account-settings.h>
-#include <libempathy-gtk/empathy-conf.h>
 
 #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
 #include <libempathy/empathy-debug.h>
index 8a0502b262e2bb2735016b45d3ff3a6cdd7f4907..a80d3fee5be7214e95cbabb457b93d92dcc4368b 100644 (file)
 #include <libempathy/empathy-contact.h>
 #include <libempathy/empathy-message.h>
 #include <libempathy/empathy-chatroom-manager.h>
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-tp-contact-factory.h>
 #include <libempathy/empathy-contact-list.h>
 
 #include <libempathy-gtk/empathy-images.h>
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-contact-dialogs.h>
 #include <libempathy-gtk/empathy-log-window.h>
 #include <libempathy-gtk/empathy-geometry.h>
@@ -519,9 +519,10 @@ chat_window_icon_update (EmpathyChatWindowPriv *priv)
                gtk_window_set_icon_name (GTK_WINDOW (priv->dialog),
                                          EMPATHY_IMAGE_MESSAGE);
        } else {
-               empathy_conf_get_bool (empathy_conf_get (),
-                                      EMPATHY_PREFS_CHAT_AVATAR_IN_ICON,
-                                      &avatar_in_icon);
+               GSettings *gsettings = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
+
+               avatar_in_icon = g_settings_get_boolean (gsettings,
+                               EMPATHY_PREFS_CHAT_AVATAR_IN_ICON);
 
                if (n_chats == 1 && avatar_in_icon) {
                        remote_contact = empathy_chat_get_remote_contact (priv->current_chat);
@@ -534,6 +535,8 @@ chat_window_icon_update (EmpathyChatWindowPriv *priv)
                } else {
                        gtk_window_set_icon_name (GTK_WINDOW (priv->dialog), NULL);
                }
+
+               g_object_unref (gsettings);
        }
 }
 
@@ -1264,8 +1267,14 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window,
        if (!empathy_notify_manager_notification_is_enabled (priv->notify_mgr)) {
                return;
        } else {
-               empathy_conf_get_bool (empathy_conf_get (),
-                                      EMPATHY_PREFS_NOTIFICATIONS_FOCUS, &res);
+               GSettings *gsettings = g_settings_new (
+                               EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
+
+               res = g_settings_get_boolean (gsettings,
+                               EMPATHY_PREFS_NOTIFICATIONS_FOCUS);
+
+               g_object_unref (gsettings);
+
                if (!res) {
                        return;
                }
@@ -2068,12 +2077,14 @@ empathy_chat_window_new (void)
 EmpathyChatWindow *
 empathy_chat_window_get_default (gboolean room)
 {
+       GSettings *gsettings = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
        GList    *l;
        gboolean  separate_windows = TRUE;
 
-       empathy_conf_get_bool (empathy_conf_get (),
-                             EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
-                             &separate_windows);
+       separate_windows = g_settings_get_boolean (gsettings,
+                       EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS);
+
+       g_object_unref (gsettings);
 
        if (separate_windows) {
                /* Always create a new window */
@@ -2141,12 +2152,14 @@ empathy_chat_window_add_chat (EmpathyChatWindow *window,
 
        /* If this window has just been created, position it */
        if (priv->chats == NULL) {
+               GSettings *gsettings = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
                const gchar *name = "chat-window";
                gboolean     separate_windows;
 
-               empathy_conf_get_bool (empathy_conf_get (),
-                                      EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
-                                      &separate_windows);
+               separate_windows = g_settings_get_boolean (gsettings,
+                               EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS);
+
+               g_object_unref (gsettings);
 
                if (separate_windows) {
                        name = empathy_chat_get_id (chat);
index 2f269f573b4a59d70fdc26c633e0c0e5ff33694c..14c52981b7823284555ea2895c94a249236b9528 100644 (file)
 #include <libempathy/empathy-tp-file.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-call-factory.h>
+#include <libempathy/empathy-gsettings.h>
 
 #include <extensions/extensions.h>
 
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-images.h>
 #include <libempathy-gtk/empathy-contact-dialogs.h>
 #include <libempathy-gtk/empathy-sound.h>
@@ -837,8 +837,8 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
 {
   TpAccount *account;
   gchar *header = NULL;
-  gboolean preference = FALSE;
   EmpathyIdle *idle;
+  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
 
   account = empathy_contact_get_account (contact);
   idle = empathy_idle_dup_singleton ();
@@ -847,7 +847,7 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
     goto out;
 
   if (tp_connection_presence_type_cmp_availability (previous,
-     TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
+        TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
     {
       /* contact was online */
       if (tp_connection_presence_type_cmp_availability (current,
@@ -857,9 +857,8 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
           empathy_sound_play (empathy_main_window_get (),
               EMPATHY_SOUND_CONTACT_DISCONNECTED);
 
-          empathy_conf_get_bool (empathy_conf_get (),
-              EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT, &preference);
-          if (preference)
+          if (g_settings_get_boolean (gsettings,
+                EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT))
             {
               header = g_strdup_printf (_("%s is now offline."),
                   empathy_contact_get_name (contact));
@@ -872,16 +871,15 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
   else
     {
       /* contact was offline */
-      if (preference && tp_connection_presence_type_cmp_availability (current,
-          TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
+      if (tp_connection_presence_type_cmp_availability (current,
+            TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
         {
           /* someone is logging in */
           empathy_sound_play (empathy_main_window_get (),
               EMPATHY_SOUND_CONTACT_CONNECTED);
 
-          empathy_conf_get_bool (empathy_conf_get (),
-              EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN, &preference);
-          if (preference)
+          if (g_settings_get_boolean (gsettings,
+                EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN))
             {
               header = g_strdup_printf (_("%s is now online."),
                   empathy_contact_get_name (contact));
@@ -895,6 +893,7 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
 
 out:
   g_object_unref (idle);
+  g_object_unref (gsettings);
 }
 
 static void
index e681f8441f1a76be01881779718afa66d3a3be38..34ac1adac583a8f1dfc7a102c4eb187cb61dc8c0 100644 (file)
@@ -40,7 +40,6 @@
 #include <libempathy/empathy-tp-file.h>
 #include <libempathy/empathy-utils.h>
 
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-geometry.h>
 #include <libempathy-gtk/empathy-images.h>
index 998c024fe20a94dbb20cbd35084671571c631ad6..3a6bf0ae4ab3c5beb084a451f50324152c90a1c7 100644 (file)
@@ -38,9 +38,9 @@
 #include <libempathy/empathy-chatroom.h>
 #include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-status-presets.h>
 
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-contact-dialogs.h>
 #include <libempathy-gtk/empathy-contact-list-store.h>
 #include <libempathy-gtk/empathy-contact-list-view.h>
@@ -91,6 +91,9 @@ typedef struct {
        guint                    flash_timeout_id;
        gboolean                 flash_on;
 
+       GSettings              *gsettings_ui;
+       GSettings              *gsettings_contacts;
+
        GtkWidget              *window;
        GtkWidget              *main_vbox;
        GtkWidget              *throbber;
@@ -622,6 +625,9 @@ main_window_destroy_cb (GtkWidget         *widget,
        g_object_unref (window->ui_manager);
        g_object_unref (window->chatroom_manager);
 
+       g_object_unref (window->gsettings_ui);
+       g_object_unref (window->gsettings_contacts);
+
        g_free (window);
 }
 
@@ -691,9 +697,9 @@ main_window_view_show_offline_cb (GtkToggleAction   *action,
        gboolean current;
 
        current = gtk_toggle_action_get_active (action);
-       empathy_conf_set_bool (empathy_conf_get (),
-                             EMPATHY_PREFS_UI_SHOW_OFFLINE,
-                             current);
+       g_settings_set_boolean (window->gsettings_ui,
+                               EMPATHY_PREFS_UI_SHOW_OFFLINE,
+                               current);
 
        /* Turn off sound just while we alter the contact list. */
        // FIXME: empathy_sound_set_enabled (FALSE);
@@ -702,13 +708,15 @@ main_window_view_show_offline_cb (GtkToggleAction   *action,
 }
 
 static void
-main_window_notify_sort_contact_cb (EmpathyConf       *conf,
+main_window_notify_sort_contact_cb (GSettings         *gsettings,
                                    const gchar       *key,
                                    EmpathyMainWindow *window)
 {
-       gchar *str = NULL;
+       gchar *str;
 
-       if (empathy_conf_get_string (conf, key, &str) && str) {
+       str = g_settings_get_string (gsettings, key);
+
+       if (str != NULL) {
                GType       type;
                GEnumClass *enum_class;
                GEnumValue *enum_value;
@@ -752,9 +760,9 @@ main_window_view_sort_contacts_cb (GtkRadioAction    *action,
                g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioAction index:%d",
                           g_slist_index (group, action));
        } else {
-               empathy_conf_set_string (empathy_conf_get (),
-                                        EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
-                                        enum_value->value_nick);
+               g_settings_set_string (window->gsettings_contacts,
+                                      EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+                                      enum_value->value_nick);
        }
        empathy_contact_list_store_set_sort_criterium (window->list_store, value);
 }
@@ -767,11 +775,11 @@ main_window_view_show_protocols_cb (GtkToggleAction   *action,
 
        value = gtk_toggle_action_get_active (action);
 
-       empathy_conf_set_bool (empathy_conf_get (),
-                                        EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
-                                        value == TRUE);
+       g_settings_set_boolean (window->gsettings_ui,
+                               EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
+                               value);
        empathy_contact_list_store_set_show_protocols (window->list_store,
-                                        value == TRUE);
+                                                      value);
 }
 
 /* Matches GtkRadioAction values set in empathy-main-window.ui */
@@ -788,12 +796,13 @@ main_window_view_contacts_list_size_cb (GtkRadioAction    *action,
 
        value = gtk_radio_action_get_current_value (action);
 
-       empathy_conf_set_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_UI_SHOW_AVATARS,
-                              value == CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS);
-       empathy_conf_set_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-                              value == CONTACT_LIST_COMPACT_SIZE);
+       g_settings_set_boolean (window->gsettings_ui,
+                               EMPATHY_PREFS_UI_SHOW_AVATARS,
+                               value == CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS);
+
+       g_settings_set_boolean (window->gsettings_ui,
+                               EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+                               value == CONTACT_LIST_COMPACT_SIZE);
 
        empathy_contact_list_store_set_show_avatars (window->list_store,
                                                     value == CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS);
@@ -801,44 +810,33 @@ main_window_view_contacts_list_size_cb (GtkRadioAction    *action,
                                                   value == CONTACT_LIST_COMPACT_SIZE);
 }
 
-static void main_window_notify_show_protocols_cb (EmpathyConf       *conf,
+static void main_window_notify_show_protocols_cb (GSettings         *gsettings,
                                                  const gchar       *key,
                                                  EmpathyMainWindow *window)
 {
-       gboolean show_protocols;
-
-       if (empathy_conf_get_bool (conf,
-                                  EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
-                                  &show_protocols)) {
-               gtk_toggle_action_set_active (window->show_protocols,
-                                             show_protocols);
-       }
+       gtk_toggle_action_set_active (window->show_protocols,
+                       g_settings_get_boolean (gsettings,
+                               EMPATHY_PREFS_UI_SHOW_PROTOCOLS));
 }
 
 
 static void
-main_window_notify_contact_list_size_cb (EmpathyConf       *conf,
+main_window_notify_contact_list_size_cb (GSettings         *gsettings,
                                         const gchar       *key,
                                         EmpathyMainWindow *window)
 {
-       gboolean show_avatars;
-       gboolean compact_contact_list;
        gint value = CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS;
 
-       if (empathy_conf_get_bool (conf,
-                                  EMPATHY_PREFS_UI_SHOW_AVATARS,
-                                  &show_avatars)
-           && empathy_conf_get_bool (conf,
-                                     EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-                                     &compact_contact_list)) {
-               if (compact_contact_list) {
-                       value = CONTACT_LIST_COMPACT_SIZE;
-               } else if (show_avatars) {
-                       value = CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS;
-               } else {
-                       value = CONTACT_LIST_NORMAL_SIZE;
-               }
+       if (g_settings_get_boolean (gsettings,
+                       EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST)) {
+               value = CONTACT_LIST_COMPACT_SIZE;
+       } else if (g_settings_get_boolean (gsettings,
+                       EMPATHY_PREFS_UI_SHOW_AVATARS)) {
+               value = CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS;
+       } else {
+               value = CONTACT_LIST_NORMAL_SIZE;
        }
+
        /* By changing the value of the GtkRadioAction,
           it emits a signal that calls main_window_view_contacts_list_size_cb
           which updates the contacts list */
@@ -1277,15 +1275,12 @@ main_window_account_validity_changed_cb (TpAccountManager  *manager,
 }
 
 static void
-main_window_notify_show_offline_cb (EmpathyConf *conf,
+main_window_notify_show_offline_cb (GSettings   *gsettings,
                                    const gchar *key,
                                    gpointer     toggle_action)
 {
-       gboolean show_offline;
-
-       if (empathy_conf_get_bool (conf, key, &show_offline)) {
-               gtk_toggle_action_set_active (toggle_action, show_offline);
-       }
+       gtk_toggle_action_set_active (toggle_action,
+                       g_settings_get_boolean (gsettings, key));
 }
 
 static void
@@ -1383,7 +1378,6 @@ empathy_main_window_show (void)
        EmpathyMainWindow        *window;
        EmpathyContactList       *list_iface;
        GtkBuilder               *gui;
-       EmpathyConf              *conf;
        GtkWidget                *sw;
        GtkToggleAction          *show_offline_widget;
        GtkAction                *show_map_widget;
@@ -1400,6 +1394,9 @@ empathy_main_window_show (void)
        main_window = g_new0 (EmpathyMainWindow, 1);
        window = main_window;
 
+       window->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
+       window->gsettings_contacts = g_settings_new (EMPATHY_PREFS_CONTACTS_SCHEMA);
+
        /* Set up interface */
        filename = empathy_file_lookup ("empathy-main-window.ui", "src");
        gui = empathy_builder_get_file (filename,
@@ -1572,50 +1569,47 @@ empathy_main_window_show (void)
                l = l->next;
        }
 
-       conf = empathy_conf_get ();
-
        /* Show offline ? */
-       empathy_conf_get_bool (conf,
-                             EMPATHY_PREFS_UI_SHOW_OFFLINE,
-                             &show_offline);
-       empathy_conf_notify_add (conf,
-                               EMPATHY_PREFS_UI_SHOW_OFFLINE,
-                               main_window_notify_show_offline_cb,
-                               show_offline_widget);
+       show_offline = g_settings_get_boolean (window->gsettings_ui,
+                                              EMPATHY_PREFS_UI_SHOW_OFFLINE);
+       g_signal_connect (window->gsettings_ui,
+                         "changed::" EMPATHY_PREFS_UI_SHOW_OFFLINE,
+                         G_CALLBACK (main_window_notify_show_offline_cb),
+                         show_offline_widget);
 
        gtk_toggle_action_set_active (show_offline_widget, show_offline);
 
        /* Show protocol ? */
-       empathy_conf_notify_add (conf,
-                                EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
-                                (EmpathyConfNotifyFunc) main_window_notify_show_protocols_cb,
-                                window);
+       g_signal_connect (window->gsettings_ui,
+                         "changed::" EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
+                         G_CALLBACK (main_window_notify_show_protocols_cb),
+                         window);
 
-       main_window_notify_show_protocols_cb (conf,
-                                           EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
-                                           window);
+       main_window_notify_show_protocols_cb (window->gsettings_ui,
+                                             EMPATHY_PREFS_UI_SHOW_PROTOCOLS,
+                                             window);
 
        /* Sort by name / by status ? */
-       empathy_conf_notify_add (conf,
-                                EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
-                                (EmpathyConfNotifyFunc) main_window_notify_sort_contact_cb,
-                                window);
+       g_signal_connect (window->gsettings_contacts,
+                         "changed::" EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+                         G_CALLBACK (main_window_notify_sort_contact_cb),
+                         window);
 
-       main_window_notify_sort_contact_cb (conf,
+       main_window_notify_sort_contact_cb (window->gsettings_contacts,
                                            EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
                                            window);
 
        /* Contacts list size */
-       empathy_conf_notify_add (conf,
-                                EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-                                (EmpathyConfNotifyFunc) main_window_notify_contact_list_size_cb,
-                                window);
-       empathy_conf_notify_add (conf,
-                                EMPATHY_PREFS_UI_SHOW_AVATARS,
-                                (EmpathyConfNotifyFunc) main_window_notify_contact_list_size_cb,
-                                window);
-
-       main_window_notify_contact_list_size_cb (conf,
+       g_signal_connect (window->gsettings_ui,
+                         "changed::" EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+                         G_CALLBACK (main_window_notify_contact_list_size_cb),
+                         window);
+       g_signal_connect (window->gsettings_ui,
+                         "changed::" EMPATHY_PREFS_UI_SHOW_AVATARS,
+                         G_CALLBACK (main_window_notify_contact_list_size_cb),
+                         window);
+
+       main_window_notify_contact_list_size_cb (window->gsettings_ui,
                                                 EMPATHY_PREFS_UI_SHOW_AVATARS,
                                                 window);
 
index 9ee135ef078f7c3b486201a88ee37d00b8e23602..4a8bf973ce2597094cb38162c1ad8678c3e96b37 100644 (file)
@@ -22,8 +22,7 @@
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 #include <libempathy/empathy-debug.h>
-
-#include <libempathy-gtk/empathy-conf.h>
+#include <libempathy/empathy-gsettings.h>
 
 #include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/util.h>
@@ -139,7 +138,7 @@ migration_account_manager_prepared_cb (GObject *source_object,
   TpAccountManager *am = TP_ACCOUNT_MANAGER (source_object);
   GError *error = NULL;
   GList *accounts, *l;
-  EmpathyConf *conf;
+  GSettings *gsettings;
 
   if (!tp_account_manager_prepare_finish (am, result, &error))
     {
@@ -175,8 +174,10 @@ migration_account_manager_prepared_cb (GObject *source_object,
 
   DEBUG ("Finished all migrating");
 
-  conf = empathy_conf_get ();
-  empathy_conf_set_bool (conf, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED, TRUE);
+  gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
+  g_settings_set_boolean (gsettings, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED,
+      TRUE);
+  g_object_unref (gsettings);
 
   g_list_free (accounts);
 }
@@ -199,22 +200,15 @@ migrate_logs (gpointer data)
 gboolean
 empathy_migrate_butterfly_logs (EmpathyContact *contact)
 {
-  EmpathyConf *conf;
-  gboolean logs_migrated;
+  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
   gchar *cm;
 
-  conf = empathy_conf_get ();
-
   /* Already in progress. */
   if (butterfly_log_migration_id != 0)
     return FALSE;
 
   /* Already done. */
-  if (!empathy_conf_get_bool (conf, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED,
-          &logs_migrated))
-    return FALSE;
-
-  if (logs_migrated)
+  if (g_settings_get_boolean (gsettings, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED))
     return FALSE;
 
   tp_account_parse_object_path (
index 993cf77d4a783b98dc7de03d064b3f03cce94b52..8192049e7afd60bb6a0c3937097be238780e4025 100644 (file)
@@ -31,9 +31,9 @@
 #include <telepathy-glib/dbus.h>
 #include <telepathy-glib/util.h>
 
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-theme-manager.h>
 #include <libempathy-gtk/empathy-spell.h>
@@ -75,7 +75,12 @@ typedef struct {
        GtkWidget *checkbutton_location_resource_cell;
        GtkWidget *checkbutton_location_resource_gps;
 
-       GList     *notify_ids;
+       GSettings *gsettings;
+       GSettings *gsettings_chat;
+       GSettings *gsettings_loc;
+       GSettings *gsettings_notify;
+       GSettings *gsettings_sound;
+       GSettings *gsettings_ui;
 } EmpathyPreferences;
 
 static void     preferences_setup_widgets                (EmpathyPreferences      *preferences);
@@ -94,22 +99,6 @@ static gboolean preferences_languages_load_foreach       (GtkTreeModel
 static void     preferences_languages_cell_toggled_cb    (GtkCellRendererToggle  *cell,
                                                          gchar                  *path_string,
                                                          EmpathyPreferences      *preferences);
-static void     preferences_widget_sync_bool             (const gchar            *key,
-                                                         GtkWidget              *widget);
-static void     preferences_notify_bool_cb               (EmpathyConf             *conf,
-                                                         const gchar            *key,
-                                                         gpointer                user_data);
-static void     preferences_notify_sensitivity_cb        (EmpathyConf             *conf,
-                                                         const gchar            *key,
-                                                         gpointer                user_data);
-static void     preferences_hookup_toggle_button         (EmpathyPreferences      *preferences,
-                                                         const gchar            *key,
-                                                         GtkWidget              *widget);
-static void     preferences_hookup_sensitivity           (EmpathyPreferences      *preferences,
-                                                         const gchar            *key,
-                                                         GtkWidget              *widget);
-static void     preferences_toggle_button_toggled_cb     (GtkWidget              *button,
-                                                         gpointer                user_data);
 static void     preferences_destroy_cb                   (GtkWidget              *widget,
                                                          EmpathyPreferences      *preferences);
 static void     preferences_response_cb                  (GtkWidget              *widget,
@@ -154,106 +143,150 @@ static SoundEventEntry sound_entries [] = {
        { N_("Account disconnected"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT }
 };
 
-static void
-preferences_add_id (EmpathyPreferences *preferences, guint id)
-{
-       preferences->notify_ids = g_list_prepend (preferences->notify_ids,
-                                                 GUINT_TO_POINTER (id));
-}
-
 static void
 preferences_setup_widgets (EmpathyPreferences *preferences)
 {
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
-                                         preferences->checkbutton_notifications_enabled);
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
-                                         preferences->checkbutton_notifications_disabled_away);
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_NOTIFICATIONS_FOCUS,
-                                         preferences->checkbutton_notifications_focus);
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN,
-                                         preferences->checkbutton_notifications_contact_signin);
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT,
-                                         preferences->checkbutton_notifications_contact_signout);
-
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
-                                       preferences->checkbutton_notifications_disabled_away);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
-                                       preferences->checkbutton_notifications_focus);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
-                                       preferences->checkbutton_notifications_contact_signin);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
-                                       preferences->checkbutton_notifications_contact_signout);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_SOUNDS_ENABLED,
-                                         preferences->checkbutton_sounds_enabled);
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_SOUNDS_DISABLED_AWAY,
-                                         preferences->checkbutton_sounds_disabled_away);
-
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_SOUNDS_ENABLED,
-                                       preferences->checkbutton_sounds_disabled_away);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_SOUNDS_ENABLED,
-                                       preferences->treeview_sounds);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
-                                         preferences->checkbutton_separate_chat_windows);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
-                                         preferences->checkbutton_show_smileys);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
-                                         preferences->checkbutton_show_contacts_in_rooms);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_AUTOCONNECT,
-                                         preferences->checkbutton_autoconnect);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_LOCATION_PUBLISH,
-                                         preferences->checkbutton_location_publish);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK,
-                                         preferences->checkbutton_location_resource_network);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_LOCATION_PUBLISH,
-                                       preferences->checkbutton_location_resource_network);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_LOCATION_RESOURCE_CELL,
-                                         preferences->checkbutton_location_resource_cell);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_LOCATION_PUBLISH,
-                                       preferences->checkbutton_location_resource_cell);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_LOCATION_RESOURCE_GPS,
-                                         preferences->checkbutton_location_resource_gps);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_LOCATION_PUBLISH,
-                                       preferences->checkbutton_location_resource_gps);
-
-       preferences_hookup_toggle_button (preferences,
-                                         EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY,
-                                         preferences->checkbutton_location_reduce_accuracy);
-       preferences_hookup_sensitivity (preferences,
-                                       EMPATHY_PREFS_LOCATION_PUBLISH,
-                                       preferences->checkbutton_location_reduce_accuracy);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+                        preferences->checkbutton_notifications_enabled,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
+                        preferences->checkbutton_notifications_disabled_away,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_FOCUS,
+                        preferences->checkbutton_notifications_focus,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN,
+                        preferences->checkbutton_notifications_contact_signin,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT,
+                        preferences->checkbutton_notifications_contact_signout,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+                        preferences->checkbutton_notifications_disabled_away,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+                        preferences->checkbutton_notifications_focus,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+                        preferences->checkbutton_notifications_contact_signin,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+       g_settings_bind (preferences->gsettings_notify,
+                        EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+                        preferences->checkbutton_notifications_contact_signout,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+
+       g_settings_bind (preferences->gsettings_sound,
+                        EMPATHY_PREFS_SOUNDS_ENABLED,
+                        preferences->checkbutton_sounds_enabled,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_sound,
+                        EMPATHY_PREFS_SOUNDS_DISABLED_AWAY,
+                        preferences->checkbutton_sounds_disabled_away,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+
+       g_settings_bind (preferences->gsettings_sound,
+                        EMPATHY_PREFS_SOUNDS_ENABLED,
+                        preferences->checkbutton_sounds_disabled_away,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+       g_settings_bind (preferences->gsettings_sound,
+                       EMPATHY_PREFS_SOUNDS_ENABLED,
+                       preferences->treeview_sounds,
+                       "sensitive",
+                       G_SETTINGS_BIND_GET);
+
+       g_settings_bind (preferences->gsettings_ui,
+                        EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
+                        preferences->checkbutton_separate_chat_windows,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+
+       g_settings_bind (preferences->gsettings_chat,
+                        EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
+                        preferences->checkbutton_show_smileys,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_chat,
+                        EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
+                        preferences->checkbutton_show_contacts_in_rooms,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+
+       g_settings_bind (preferences->gsettings,
+                        EMPATHY_PREFS_AUTOCONNECT,
+                        preferences->checkbutton_autoconnect,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_PUBLISH,
+                        preferences->checkbutton_location_publish,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK,
+                        preferences->checkbutton_location_resource_network,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_PUBLISH,
+                        preferences->checkbutton_location_resource_network,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_RESOURCE_CELL,
+                        preferences->checkbutton_location_resource_cell,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_PUBLISH,
+                        preferences->checkbutton_location_resource_cell,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_RESOURCE_GPS,
+                        preferences->checkbutton_location_resource_gps,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_PUBLISH,
+                        preferences->checkbutton_location_resource_gps,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
+
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_REDUCE_ACCURACY,
+                        preferences->checkbutton_location_reduce_accuracy,
+                        "active",
+                        G_SETTINGS_BIND_DEFAULT);
+       g_settings_bind (preferences->gsettings_loc,
+                        EMPATHY_PREFS_LOCATION_PUBLISH,
+                        preferences->checkbutton_location_reduce_accuracy,
+                        "sensitive",
+                        G_SETTINGS_BIND_GET);
 }
 
 static void
@@ -283,7 +316,7 @@ preferences_sound_cell_toggled_cb (GtkCellRendererToggle *toggle,
        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                            COL_SOUND_ENABLED, instore, -1);
 
-       empathy_conf_set_bool (empathy_conf_get (), key, instore);
+       g_settings_set_boolean (preferences->gsettings_sound, key, instore);
 
        g_free (key);
        gtk_tree_path_free (path);
@@ -297,14 +330,13 @@ preferences_sound_load (EmpathyPreferences *preferences)
        GtkListStore *store;
        GtkTreeIter iter;
        gboolean set;
-       EmpathyConf *conf;
 
        view = GTK_TREE_VIEW (preferences->treeview_sounds);
        store = GTK_LIST_STORE (gtk_tree_view_get_model (view));
-       conf = empathy_conf_get ();
 
        for (i = 0; i < G_N_ELEMENTS (sound_entries); i++) {
-               empathy_conf_get_bool (conf, sound_entries[i].key, &set);
+               set = g_settings_get_boolean (preferences->gsettings_sound,
+                                             sound_entries[i].key);
 
                gtk_list_store_insert_with_values (store, &iter, i,
                                                   COL_SOUND_NAME, gettext (sound_entries[i].name),
@@ -419,9 +451,9 @@ preferences_languages_add (EmpathyPreferences *preferences)
 
        codes = empathy_spell_get_language_codes ();
 
-       empathy_conf_set_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
-                              codes != NULL);
+       g_settings_set_boolean (preferences->gsettings_chat,
+                               EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
+                               codes != NULL);
        if (!codes) {
                gtk_widget_set_sensitive (preferences->treeview_spell_checker, FALSE);
        }
@@ -463,13 +495,13 @@ preferences_languages_save (EmpathyPreferences *preferences)
                                &languages);
 
        /* if user selects no languages, we don't want spell check */
-       empathy_conf_set_bool (empathy_conf_get (),
-                              EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
-                              languages != NULL);
+       g_settings_set_boolean (preferences->gsettings_chat,
+                               EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
+                               languages != NULL);
 
-       empathy_conf_set_string (empathy_conf_get (),
-                                EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
-                                languages ? languages : "");
+       g_settings_set_string (preferences->gsettings_chat,
+                              EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
+                              languages != NULL ? languages : "");
 
        g_free (languages);
 }
@@ -518,11 +550,11 @@ preferences_languages_load (EmpathyPreferences *preferences)
        gchar         *value;
        gchar        **vlanguages;
 
-       if (!empathy_conf_get_string (empathy_conf_get (),
-                                     EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
-                                     &value) || !value) {
+       value = g_settings_get_string (preferences->gsettings_chat,
+                                      EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES);
+
+       if (value == NULL)
                return;
-       }
 
        vlanguages = g_strsplit (value, ",", -1);
        g_free (value);
@@ -598,316 +630,7 @@ preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell,
 }
 
 static void
-preferences_widget_sync_bool (const gchar *key, GtkWidget *widget)
-{
-       gboolean value;
-
-       if (empathy_conf_get_bool (empathy_conf_get (), key, &value)) {
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-       }
-}
-
-#if 0
-static void
-preferences_widget_sync_string (const gchar *key, GtkWidget *widget)
-{
-       gchar *value;
-
-       if (empathy_conf_get_string (empathy_conf_get (), key, &value) && value) {
-               if (GTK_IS_ENTRY (widget)) {
-                       gtk_entry_set_text (GTK_ENTRY (widget), value);
-               } else if (GTK_IS_RADIO_BUTTON (widget)) {
-                       if (!tp_strdiff (key, EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM)) {
-                               GType        type;
-                               GEnumClass  *enum_class;
-                               GEnumValue  *enum_value;
-                               GSList      *list;
-                               GtkWidget   *toggle_widget;
-
-                               /* Get index from new string */
-                               type = empathy_contact_list_store_sort_get_type ();
-                               enum_class = G_ENUM_CLASS (g_type_class_peek (type));
-                               enum_value = g_enum_get_value_by_nick (enum_class, value);
-
-                               if (enum_value) {
-                                       list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget));
-                                       toggle_widget = g_slist_nth_data (list, enum_value->value);
-                                       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle_widget), TRUE);
-                               }
-                       } else {
-                               g_warning ("Unhandled key:'%s' just had string change", key);
-                       }
-               }
-
-               g_free (value);
-       }
-}
-
-static void
-preferences_notify_string_cb (EmpathyConf  *conf,
-                             const gchar *key,
-                             gpointer     user_data)
-{
-       preferences_widget_sync_string (key, user_data);
-}
-#endif
-
-static void
-preferences_notify_bool_cb (EmpathyConf  *conf,
-                           const gchar *key,
-                           gpointer     user_data)
-{
-       preferences_widget_sync_bool (key, user_data);
-}
-
-static void
-preferences_notify_sensitivity_cb (EmpathyConf  *conf,
-                                  const gchar *key,
-                                  gpointer     user_data)
-{
-       gboolean value;
-
-       if (empathy_conf_get_bool (conf, key, &value)) {
-               gtk_widget_set_sensitive (GTK_WIDGET (user_data), value);
-       }
-}
-
-#if 0
-static void
-preferences_widget_sync_int (const gchar *key, GtkWidget *widget)
-{
-       gint value;
-
-       if (empathy_conf_get_int (empathy_conf_get (), key, &value)) {
-               if (GTK_IS_SPIN_BUTTON (widget)) {
-                       gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value);
-               }
-       }
-}
-
-static void
-preferences_notify_int_cb (EmpathyConf  *conf,
-                          const gchar *key,
-                          gpointer     user_data)
-{
-       preferences_widget_sync_int (key, user_data);
-}
-
-static void
-preferences_hookup_spin_button (EmpathyPreferences *preferences,
-                               const gchar       *key,
-                               GtkWidget         *widget)
-{
-       guint id;
-
-       preferences_widget_sync_int (key, widget);
-
-       g_object_set_data_full (G_OBJECT (widget), "key",
-                               g_strdup (key), g_free);
-
-       g_signal_connect (widget,
-                         "value_changed",
-                         G_CALLBACK (preferences_spin_button_value_changed_cb),
-                         NULL);
-
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                     key,
-                                     preferences_notify_int_cb,
-                                     widget);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
-}
-
-static void
-preferences_hookup_entry (EmpathyPreferences *preferences,
-                         const gchar       *key,
-                         GtkWidget         *widget)
-{
-       guint id;
-
-       preferences_widget_sync_string (key, widget);
-
-       g_object_set_data_full (G_OBJECT (widget), "key",
-                               g_strdup (key), g_free);
-
-       g_signal_connect (widget,
-                         "changed",
-                         G_CALLBACK (preferences_entry_value_changed_cb),
-                         NULL);
-
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                     key,
-                                     preferences_notify_string_cb,
-                                     widget);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
-}
-
-static void
-preferences_spin_button_value_changed_cb (GtkWidget *button,
-                                         gpointer   user_data)
-{
-       const gchar *key;
-
-       key = g_object_get_data (G_OBJECT (button), "key");
-
-       empathy_conf_set_int (empathy_conf_get (),
-                             key,
-                             gtk_spin_button_get_value (GTK_SPIN_BUTTON (button)));
-}
-
-static void
-preferences_entry_value_changed_cb (GtkWidget *entry,
-                                   gpointer   user_data)
-{
-       const gchar *key;
-
-       key = g_object_get_data (G_OBJECT (entry), "key");
-
-       empathy_conf_set_string (empathy_conf_get (),
-                                key,
-                                gtk_entry_get_text (GTK_ENTRY (entry)));
-}
-#endif
-
-static void
-preferences_hookup_toggle_button (EmpathyPreferences *preferences,
-                                 const gchar       *key,
-                                 GtkWidget         *widget)
-{
-       guint id;
-
-       preferences_widget_sync_bool (key, widget);
-
-       g_object_set_data_full (G_OBJECT (widget), "key",
-                               g_strdup (key), g_free);
-
-       g_signal_connect (widget,
-                         "toggled",
-                         G_CALLBACK (preferences_toggle_button_toggled_cb),
-                         NULL);
-
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                    key,
-                                    preferences_notify_bool_cb,
-                                    widget);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
-}
-
-#if 0
-static void
-preferences_hookup_radio_button (EmpathyPreferences *preferences,
-                                const gchar       *key,
-                                GtkWidget         *widget)
-{
-       GSList *group, *l;
-       guint   id;
-
-       preferences_widget_sync_string (key, widget);
-
-       group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget));
-       for (l = group; l; l = l->next) {
-               g_signal_connect (l->data,
-                                 "toggled",
-                                 G_CALLBACK (preferences_radio_button_toggled_cb),
-                                 NULL);
-
-               g_object_set_data_full (G_OBJECT (l->data), "key",
-                                       g_strdup (key), g_free);
-       }
-
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                    key,
-                                    preferences_notify_string_cb,
-                                    widget);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
-}
-#endif
-
-static void
-preferences_hookup_sensitivity (EmpathyPreferences *preferences,
-                               const gchar       *key,
-                               GtkWidget         *widget)
-{
-       gboolean value;
-       guint    id;
-
-       if (empathy_conf_get_bool (empathy_conf_get (), key, &value)) {
-               gtk_widget_set_sensitive (widget, value);
-       }
-
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                     key,
-                                     preferences_notify_sensitivity_cb,
-                                     widget);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
-}
-
-static void
-preferences_toggle_button_toggled_cb (GtkWidget *button,
-                                     gpointer   user_data)
-{
-       const gchar *key;
-
-       key = g_object_get_data (G_OBJECT (button), "key");
-
-       empathy_conf_set_bool (empathy_conf_get (),
-                              key,
-                              gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)));
-}
-
-#if 0
-static void
-preferences_radio_button_toggled_cb (GtkWidget *button,
-                                    gpointer   user_data)
-{
-       const gchar *key;
-       const gchar *value = NULL;
-
-       if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
-               return;
-       }
-
-       key = g_object_get_data (G_OBJECT (button), "key");
-
-       if (!tp_strdiff (key, EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM)) {
-               GSList      *group;
-               GType        type;
-               GEnumClass  *enum_class;
-               GEnumValue  *enum_value;
-
-               group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
-
-               /* Get string from index */
-               type = empathy_contact_list_store_sort_get_type ();
-               enum_class = G_ENUM_CLASS (g_type_class_peek (type));
-               enum_value = g_enum_get_value (enum_class, g_slist_index (group, button));
-
-               if (!enum_value) {
-                       g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioButton index:%d",
-                                  g_slist_index (group, button));
-                       return;
-               }
-
-               value = enum_value->value_nick;
-       } else if (!tp_strdiff (key, EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM)) {
-           return;
-       }
-
-       empathy_conf_set_string (empathy_conf_get (), key, value);
-}
-#endif
-
-static void
-preferences_theme_notify_cb (EmpathyConf *conf,
+preferences_theme_notify_cb (GSettings   *gsettings,
                             const gchar *key,
                             gpointer     user_data)
 {
@@ -919,14 +642,8 @@ preferences_theme_notify_cb (EmpathyConf *conf,
        GtkTreeIter         iter;
        gboolean            found = FALSE;
 
-       if (!empathy_conf_get_string (conf, EMPATHY_PREFS_CHAT_THEME, &conf_name)) {
-               return;
-       }
-
-       if (!empathy_conf_get_string (conf, EMPATHY_PREFS_CHAT_ADIUM_PATH, &conf_path)) {
-               g_free (conf_name);
-               return;
-       }
+       conf_name = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_THEME);
+       conf_path = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_ADIUM_PATH);
 
        combo = GTK_COMBO_BOX (preferences->combobox_chat_theme);
        model = gtk_combo_box_get_model (combo);
@@ -988,13 +705,13 @@ preferences_theme_changed_cb (GtkComboBox        *combo,
                                    COL_COMBO_PATH, &path,
                                    -1);
 
-               empathy_conf_set_string (empathy_conf_get (),
-                                        EMPATHY_PREFS_CHAT_THEME,
-                                        name);
+               g_settings_set_string (preferences->gsettings_chat,
+                                      EMPATHY_PREFS_CHAT_THEME,
+                                      name);
                if (is_adium == TRUE)
-                       empathy_conf_set_string (empathy_conf_get (),
-                                                EMPATHY_PREFS_CHAT_ADIUM_PATH,
-                                                path);
+                       g_settings_set_string (preferences->gsettings_chat,
+                                              EMPATHY_PREFS_CHAT_ADIUM_PATH,
+                                              path);
                g_free (name);
                g_free (path);
        }
@@ -1010,7 +727,6 @@ preferences_themes_setup (EmpathyPreferences *preferences)
        const gchar  **themes;
        GList         *adium_themes;
        gint           i;
-       guint          id;
 
        combo = GTK_COMBO_BOX (preferences->combobox_chat_theme);
        cell_layout = GTK_CELL_LAYOUT (combo);
@@ -1071,24 +787,18 @@ preferences_themes_setup (EmpathyPreferences *preferences)
                          preferences);
 
        /* Select the theme from the gconf key and track changes */
-       preferences_theme_notify_cb (empathy_conf_get (),
+       preferences_theme_notify_cb (preferences->gsettings_chat,
                                     EMPATHY_PREFS_CHAT_THEME,
                                     preferences);
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                     EMPATHY_PREFS_CHAT_THEME,
-                                     preferences_theme_notify_cb,
-                                     preferences);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
+       g_signal_connect (preferences->gsettings_chat,
+                         "changed::" EMPATHY_PREFS_CHAT_THEME,
+                         G_CALLBACK (preferences_theme_notify_cb),
+                         preferences);
 
-       id = empathy_conf_notify_add (empathy_conf_get (),
-                                     EMPATHY_PREFS_CHAT_ADIUM_PATH,
-                                     preferences_theme_notify_cb,
-                                     preferences);
-       if (id) {
-               preferences_add_id (preferences, id);
-       }
+       g_signal_connect (preferences->gsettings_chat,
+                         "changed::" EMPATHY_PREFS_CHAT_ADIUM_PATH,
+                         G_CALLBACK (preferences_theme_notify_cb),
+                         preferences);
 }
 
 static void
@@ -1103,16 +813,13 @@ static void
 preferences_destroy_cb (GtkWidget         *widget,
                        EmpathyPreferences *preferences)
 {
-       GList *l;
+       g_object_unref (preferences->gsettings);
+       g_object_unref (preferences->gsettings_chat);
+       g_object_unref (preferences->gsettings_loc);
+       g_object_unref (preferences->gsettings_notify);
+       g_object_unref (preferences->gsettings_sound);
+       g_object_unref (preferences->gsettings_ui);
 
-       for (l = preferences->notify_ids; l; l = l->next) {
-               guint id;
-
-               id = GPOINTER_TO_UINT (l->data);
-               empathy_conf_notify_remove (empathy_conf_get (), id);
-       }
-
-       g_list_free (preferences->notify_ids);
        g_free (preferences);
 }
 
@@ -1166,6 +873,13 @@ empathy_preferences_show (GtkWindow *parent)
 
        g_object_add_weak_pointer (G_OBJECT (preferences->dialog), (gpointer) &preferences);
 
+       preferences->gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
+       preferences->gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
+       preferences->gsettings_loc = g_settings_new (EMPATHY_PREFS_LOCATION_SCHEMA);
+       preferences->gsettings_notify = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
+       preferences->gsettings_sound = g_settings_new (EMPATHY_PREFS_SOUNDS_SCHEMA);
+       preferences->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
+
        preferences_themes_setup (preferences);
 
        preferences_setup_widgets (preferences);
index 81409696e70e47af2915c43aec5f8e2ca889b0cf..a002a7fb78826d1e01e72b24c018ac9dc34f17e4 100644 (file)
 #include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/util.h>
 
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 
 #include <libempathy-gtk/empathy-presence-chooser.h>
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-images.h>
 #include <libempathy-gtk/empathy-new-message-dialog.h>
@@ -66,6 +66,7 @@ typedef struct {
        EmpathyEventManager *event_manager;
        EmpathyEvent        *event;
        NotifyNotification  *notification;
+       GSettings           *gsettings_ui;
 
        GtkWindow           *window;
        GtkUIManager        *ui_manager;
@@ -356,8 +357,9 @@ status_icon_set_visibility (EmpathyStatusIcon *icon,
        EmpathyStatusIconPriv *priv = GET_PRIV (icon);
 
        if (store) {
-               empathy_conf_set_bool (empathy_conf_get (),
-                                      EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN, !visible);
+               g_settings_set_boolean (priv->gsettings_ui,
+                                       EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN,
+                                       !visible);
        }
 
        if (!visible) {
@@ -368,16 +370,15 @@ status_icon_set_visibility (EmpathyStatusIcon *icon,
 }
 
 static void
-status_icon_notify_visibility_cb (EmpathyConf *conf,
+status_icon_notify_visibility_cb (GSettings   *gsettings,
                                  const gchar *key,
                                  gpointer     user_data)
 {
        EmpathyStatusIcon *icon = user_data;
        gboolean           hidden = FALSE;
 
-       if (empathy_conf_get_bool (conf, key, &hidden)) {
-               status_icon_set_visibility (icon, !hidden, FALSE);
-       }
+       hidden = g_settings_get_boolean (gsettings, key);
+       status_icon_set_visibility (icon, !hidden, FALSE);
 }
 
 static void
@@ -571,6 +572,7 @@ status_icon_finalize (GObject *object)
        g_object_unref (priv->event_manager);
        g_object_unref (priv->ui_manager);
        g_object_unref (priv->notify_mgr);
+       g_object_unref (priv->gsettings_ui);
 }
 
 static void
@@ -625,10 +627,11 @@ empathy_status_icon_init (EmpathyStatusIcon *icon)
            account_manager_prepared_cb, icon);
 
        /* make icon listen and respond to MAIN_WINDOW_HIDDEN changes */
-       empathy_conf_notify_add (empathy_conf_get (),
-                                EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN,
-                                status_icon_notify_visibility_cb,
-                                icon);
+       priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
+       g_signal_connect (priv->gsettings_ui,
+                         "changed::" EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN,
+                         G_CALLBACK (status_icon_notify_visibility_cb),
+                         icon);
 
        status_icon_create_menu (icon);
 
@@ -678,13 +681,8 @@ empathy_status_icon_new (GtkWindow *window, gboolean hide_contact_list)
                          G_CALLBACK (status_icon_delete_event_cb),
                          icon);
 
-       if (!hide_contact_list) {
-               empathy_conf_get_bool (empathy_conf_get (),
-                                      EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN,
-                                      &should_hide);
-       } else {
-               should_hide = TRUE;
-       }
+       should_hide = g_settings_get_boolean (priv->gsettings_ui,
+                       EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN);
 
        if (gtk_window_is_active (priv->window) == should_hide) {
                status_icon_set_visibility (icon, !should_hide, FALSE);
index 9d59bba79ec10eb1d78199b764b91f076205316c..ac292fcff4c816d9010a773e7a7df4bece59dcad 100644 (file)
 #include <libempathy/empathy-dispatcher.h>
 #include <libempathy/empathy-dispatch-operation.h>
 #include <libempathy/empathy-ft-factory.h>
+#include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-tp-chat.h>
 #include <libempathy/empathy-tp-call.h>
 
-#include <libempathy-gtk/empathy-conf.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-location-manager.h>
 
@@ -168,17 +168,14 @@ dispatch_cb (EmpathyDispatcher *dispatcher,
 }
 
 static void
-use_conn_notify_cb (EmpathyConf *conf,
+use_conn_notify_cb (GSettings *gsettings,
     const gchar *key,
     gpointer     user_data)
 {
   EmpathyConnectivity *connectivity = user_data;
-  gboolean     use_conn;
 
-  if (empathy_conf_get_bool (conf, key, &use_conn))
-    {
-      empathy_connectivity_set_use_conn (connectivity, use_conn);
-    }
+  empathy_connectivity_set_use_conn (connectivity,
+      g_settings_get_boolean (gsettings, key));
 }
 
 static void
@@ -353,8 +350,8 @@ account_manager_ready_cb (GObject *source_object,
   GError *error = NULL;
   EmpathyIdle *idle;
   EmpathyConnectivity *connectivity;
-  gboolean autoconnect = TRUE;
   TpConnectionPresenceType presence;
+  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
 
   if (!tp_account_manager_prepare_finish (manager, result, &error))
     {
@@ -370,9 +367,8 @@ account_manager_ready_cb (GObject *source_object,
   presence = tp_account_manager_get_most_available_presence (manager, NULL,
       NULL);
 
-  empathy_conf_get_bool (empathy_conf_get (),
-      EMPATHY_PREFS_AUTOCONNECT, &autoconnect);
-  if (autoconnect && !no_connect &&
+  if (g_settings_get_boolean (gsettings, EMPATHY_PREFS_AUTOCONNECT) &&
+      !no_connect &&
       tp_connection_presence_type_cmp_availability
           (presence, TP_CONNECTION_PRESENCE_TYPE_OFFLINE)
             <= 0)
@@ -387,6 +383,7 @@ account_manager_ready_cb (GObject *source_object,
 
   g_object_unref (idle);
   g_object_unref (connectivity);
+  g_object_unref (gsettings);
 }
 
 static EmpathyDispatcher *
@@ -561,15 +558,14 @@ chatroom_manager_ready_cb (EmpathyChatroomManager *chatroom_manager,
 }
 
 static void
-empathy_idle_set_auto_away_cb (EmpathyConf *conf,
+empathy_idle_set_auto_away_cb (GSettings *gsettings,
                                const gchar *key,
                                gpointer user_data)
 {
-       gboolean autoaway;
        EmpathyIdle *idle = user_data;
 
-       empathy_conf_get_bool (conf, key, &autoaway);
-       empathy_idle_set_auto_away (idle, autoaway);
+       empathy_idle_set_auto_away (idle,
+      g_settings_get_boolean (gsettings, key));
 }
 
 int
@@ -600,6 +596,7 @@ main (int argc, char *argv[])
 #ifdef ENABLE_DEBUG
   TpDebugSender *debug_sender;
 #endif
+  GSettings *gsettings;
 
   GOptionContext *optcontext;
   GOptionEntry options[] = {
@@ -666,22 +663,22 @@ main (int argc, char *argv[])
   /* Setting up Idle */
   idle = empathy_idle_dup_singleton ();
 
-  empathy_conf_get_bool (empathy_conf_get (),
-      EMPATHY_PREFS_AUTOAWAY, &autoaway);
+  gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
+  autoaway = g_settings_get_boolean (gsettings, EMPATHY_PREFS_AUTOAWAY);
 
-  empathy_conf_notify_add (empathy_conf_get (),
-                          EMPATHY_PREFS_AUTOAWAY,
-                          empathy_idle_set_auto_away_cb,
-                          idle);
+  g_signal_connect (gsettings,
+      "changed::" EMPATHY_PREFS_AUTOAWAY,
+      G_CALLBACK (empathy_idle_set_auto_away_cb), idle);
 
   empathy_idle_set_auto_away (idle, autoaway);
 
   /* Setting up Connectivity */
   connectivity = empathy_connectivity_dup_singleton ();
-  use_conn_notify_cb (empathy_conf_get (), EMPATHY_PREFS_USE_CONN,
+  use_conn_notify_cb (gsettings, EMPATHY_PREFS_USE_CONN,
       connectivity);
-  empathy_conf_notify_add (empathy_conf_get (), EMPATHY_PREFS_USE_CONN,
-      use_conn_notify_cb, connectivity);
+  g_signal_connect (gsettings,
+      "changed::" EMPATHY_PREFS_USE_CONN,
+      G_CALLBACK (use_conn_notify_cb), connectivity);
 
   /* account management */
   account_manager = tp_account_manager_dup ();
@@ -763,6 +760,7 @@ main (int argc, char *argv[])
 #endif
   g_object_unref (ft_factory);
   g_object_unref (unique_app);
+  g_object_unref (gsettings);
 
   notify_uninit ();
   xmlCleanupParser ();