diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2010-06-10 12:16:00 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2010-06-18 09:34:19 +0800 |
commit | 96569c764125b9c80909c7cece9e37b65eb632ca (patch) | |
tree | 27afa60ac7dc1c6bce5195b8b9bcf645b6fe97a6 /libempathy-gtk | |
parent | f748067f6fa10635261313a28e0a0102168de91e (diff) | |
download | gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.tar gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.tar.gz gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.tar.bz2 gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.tar.lz gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.tar.xz gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.tar.zst gsoc2013-empathy-96569c764125b9c80909c7cece9e37b65eb632ca.zip |
Port Empathy code to GSettings, remove EmpathyConf
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/Makefile.am | 2 | ||||
-rw-r--r-- | libempathy-gtk/empathy-avatar-chooser.c | 21 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat-text-view.c | 53 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 72 | ||||
-rw-r--r-- | libempathy-gtk/empathy-conf.c | 371 | ||||
-rw-r--r-- | libempathy-gtk/empathy-conf.h | 135 | ||||
-rw-r--r-- | libempathy-gtk/empathy-location-manager.c | 84 | ||||
-rw-r--r-- | libempathy-gtk/empathy-notify-manager.c | 34 | ||||
-rw-r--r-- | libempathy-gtk/empathy-sound.c | 36 | ||||
-rw-r--r-- | libempathy-gtk/empathy-spell.c | 24 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 38 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-boxes.c | 1 | ||||
-rw-r--r-- | libempathy-gtk/empathy-theme-manager.c | 49 | ||||
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.c | 1 |
14 files changed, 219 insertions, 702 deletions
diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am index 377929adc..c8a4cbb6a 100644 --- a/libempathy-gtk/Makefile.am +++ b/libempathy-gtk/Makefile.am @@ -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 \ diff --git a/libempathy-gtk/empathy-avatar-chooser.c b/libempathy-gtk/empathy-avatar-chooser.c index 7a39f65f1..552e45dfe 100644 --- a/libempathy-gtk/empathy-avatar-chooser.c +++ b/libempathy-gtk/empathy-avatar-chooser.c @@ -29,10 +29,10 @@ #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); } /** diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c index 0f7400f1d..c05b92fb9 100644 --- a/libempathy-gtk/empathy-chat-text-view.c +++ b/libempathy-gtk/empathy-chat-text-view.c @@ -32,14 +32,15 @@ #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 diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index ae78b52cb..e68b91dbe 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -43,11 +43,11 @@ #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 index 62efa60c6..000000000 --- a/libempathy-gtk/empathy-conf.c +++ /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 index c418bb116..000000000 --- a/libempathy-gtk/empathy-conf.h +++ /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__ */ - diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c index 89e0a014b..1c09c358c 100644 --- a/libempathy-gtk/empathy-location-manager.c +++ b/libempathy-gtk/empathy-location-manager.c @@ -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 * diff --git a/libempathy-gtk/empathy-notify-manager.c b/libempathy-gtk/empathy-notify-manager.c index 8f7991166..d0e0aadec 100644 --- a/libempathy-gtk/empathy-notify-manager.c +++ b/libempathy-gtk/empathy-notify-manager.c @@ -25,10 +25,10 @@ #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; } diff --git a/libempathy-gtk/empathy-sound.c b/libempathy-gtk/empathy-sound.c index 74dcf6a2e..03f041916 100644 --- a/libempathy-gtk/empathy-sound.c +++ b/libempathy-gtk/empathy-sound.c @@ -27,15 +27,14 @@ #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; } diff --git a/libempathy-gtk/empathy-spell.c b/libempathy-gtk/empathy-spell.c index 17c7f100e..ff94bb053 100644 --- a/libempathy-gtk/empathy-spell.c +++ b/libempathy-gtk/empathy-spell.c @@ -33,10 +33,10 @@ #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; diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index ad174ce3b..e3582a7d4 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -32,12 +32,12 @@ #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); } diff --git a/libempathy-gtk/empathy-theme-boxes.c b/libempathy-gtk/empathy-theme-boxes.c index 29fb934f4..531f2baa6 100644 --- a/libempathy-gtk/empathy-theme-boxes.c +++ b/libempathy-gtk/empathy-theme-boxes.c @@ -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> diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c index 905e0bf1d..bcad60538 100644 --- a/libempathy-gtk/empathy-theme-manager.c +++ b/libempathy-gtk/empathy-theme-manager.c @@ -30,11 +30,12 @@ #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" @@ -48,10 +49,9 @@ #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); } diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index b5e37cade..6339a891d 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -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> |