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 /src | |
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 'src')
-rw-r--r-- | src/empathy-account-assistant.c | 1 | ||||
-rw-r--r-- | src/empathy-accounts-dialog.c | 16 | ||||
-rw-r--r-- | src/empathy-auto-salut-account-helper.c | 1 | ||||
-rw-r--r-- | src/empathy-chat-window.c | 37 | ||||
-rw-r--r-- | src/empathy-event-manager.c | 21 | ||||
-rw-r--r-- | src/empathy-ft-manager.c | 1 | ||||
-rw-r--r-- | src/empathy-main-window.c | 160 | ||||
-rw-r--r-- | src/empathy-migrate-butterfly-logs.c | 22 | ||||
-rw-r--r-- | src/empathy-preferences.c | 676 | ||||
-rw-r--r-- | src/empathy-status-icon.c | 34 | ||||
-rw-r--r-- | src/empathy.c | 46 |
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 (); |