aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2010-06-10 12:16:00 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2010-06-18 09:34:19 +0800
commit96569c764125b9c80909c7cece9e37b65eb632ca (patch)
tree27afa60ac7dc1c6bce5195b8b9bcf645b6fe97a6 /src
parentf748067f6fa10635261313a28e0a0102168de91e (diff)
downloadgsoc2013-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 'src')
-rw-r--r--src/empathy-account-assistant.c1
-rw-r--r--src/empathy-accounts-dialog.c16
-rw-r--r--src/empathy-auto-salut-account-helper.c1
-rw-r--r--src/empathy-chat-window.c37
-rw-r--r--src/empathy-event-manager.c21
-rw-r--r--src/empathy-ft-manager.c1
-rw-r--r--src/empathy-main-window.c160
-rw-r--r--src/empathy-migrate-butterfly-logs.c22
-rw-r--r--src/empathy-preferences.c676
-rw-r--r--src/empathy-status-icon.c34
-rw-r--r--src/empathy.c46
11 files changed, 360 insertions, 655 deletions
diff --git a/src/empathy-account-assistant.c b/src/empathy-account-assistant.c
index 060345a9e..6ad475652 100644
--- a/src/empathy-account-assistant.c
+++ b/src/empathy-account-assistant.c
@@ -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>
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index d81d3de2d..12ac5b244 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -39,14 +39,14 @@
#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
diff --git a/src/empathy-auto-salut-account-helper.c b/src/empathy-auto-salut-account-helper.c
index 0a96316f1..23484dd45 100644
--- a/src/empathy-auto-salut-account-helper.c
+++ b/src/empathy-auto-salut-account-helper.c
@@ -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>
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 8a0502b26..a80d3fee5 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -41,12 +41,12 @@
#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);
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 2f269f573..14c52981b 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -37,10 +37,10 @@
#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
diff --git a/src/empathy-ft-manager.c b/src/empathy-ft-manager.c
index e681f8441..34ac1adac 100644
--- a/src/empathy-ft-manager.c
+++ b/src/empathy-ft-manager.c
@@ -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>
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 998c024fe..3a6bf0ae4 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -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);
diff --git a/src/empathy-migrate-butterfly-logs.c b/src/empathy-migrate-butterfly-logs.c
index 9ee135ef0..4a8bf973c 100644
--- a/src/empathy-migrate-butterfly-logs.c
+++ b/src/empathy-migrate-butterfly-logs.c
@@ -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 (
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index 993cf77d4..8192049e7 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -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,
@@ -155,105 +144,149 @@ static SoundEventEntry sound_entries [] = {
};
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);
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index 81409696e..a002a7fb7 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -35,10 +35,10 @@
#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);
diff --git a/src/empathy.c b/src/empathy.c
index 9d59bba79..ac292fcff 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -61,10 +61,10 @@
#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 ();