aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-preferences.c
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2012-05-11 10:50:13 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2012-05-15 18:40:27 +0800
commit230d722d4ec8b4bc5e59819a1a6799cc52ec8414 (patch)
tree1a26a6b7ed3b1f358fa01746a194f558eac77253 /src/empathy-preferences.c
parent36bde0ca705740414897af5f59cc4cc3e4153df3 (diff)
downloadgsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.tar
gsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.tar.gz
gsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.tar.bz2
gsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.tar.lz
gsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.tar.xz
gsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.tar.zst
gsoc2013-empathy-230d722d4ec8b4bc5e59819a1a6799cc52ec8414.zip
preferences: add options removed from View into preferences
Diffstat (limited to 'src/empathy-preferences.c')
-rw-r--r--src/empathy-preferences.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index a120e641d..e02222191 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -86,6 +86,7 @@ struct _EmpathyPreferencesPriv {
GSettings *gsettings_sound;
GSettings *gsettings_ui;
GSettings *gsettings_logger;
+ GSettings *gsettings_contacts;
};
static void preferences_setup_widgets (EmpathyPreferences *preferences,
@@ -151,6 +152,36 @@ static SoundEventEntry sound_entries [] = {
{ N_("Account disconnected"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT }
};
+static gboolean
+sort_criterium_get_mapping (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ const char *s = g_variant_get_string (variant, NULL);
+
+ if (!tp_strdiff (s, "state"))
+ g_value_set_boolean (value, TRUE);
+ else if (!tp_strdiff (s, "name"))
+ g_value_set_boolean (value, FALSE);
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
+static GVariant *
+sort_criterium_set_mapping (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
+ gboolean b = g_value_get_boolean (value);
+
+ if (b)
+ return g_variant_new_string ("state");
+ else
+ return g_variant_new_string ("name");
+}
+
static void
preferences_setup_widgets (EmpathyPreferences *preferences,
GtkBuilder *gui)
@@ -177,10 +208,18 @@ preferences_setup_widgets (EmpathyPreferences *preferences,
BIND_ACTIVE (sound, SOUNDS_DISABLED_AWAY,
"checkbutton_sounds_disabled_away");
+ BIND_ACTIVE (ui, UI_SHOW_OFFLINE,
+ "checkbutton_show_offline");
+ BIND_ACTIVE (ui, UI_SHOW_PROTOCOLS,
+ "checkbutton_show_protocols");
BIND_ACTIVE (ui, UI_SEPARATE_CHAT_WINDOWS,
"radiobutton_chats_new_windows");
BIND_ACTIVE (ui, UI_EVENTS_NOTIFY_AREA,
"checkbutton_events_notif_area");
+ BIND_ACTIVE (ui, UI_SHOW_AVATARS,
+ "radiobutton_normal_size_avatars");
+ BIND_ACTIVE (ui, UI_COMPACT_CONTACT_LIST,
+ "radiobutton_compact_size");
BIND_ACTIVE (chat, CHAT_SHOW_SMILEYS,
"checkbutton_show_smileys");
@@ -244,6 +283,15 @@ preferences_setup_widgets (EmpathyPreferences *preferences,
"active",
G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind_with_mapping (priv->gsettings_contacts,
+ EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+ gtk_builder_get_object (gui,
+ "radiobutton_sort_by_status"),
+ "active",
+ G_SETTINGS_BIND_DEFAULT,
+ sort_criterium_get_mapping,
+ sort_criterium_set_mapping,
+ NULL, NULL);
}
static void
@@ -1029,6 +1077,7 @@ empathy_preferences_finalize (GObject *self)
g_object_unref (priv->gsettings_sound);
g_object_unref (priv->gsettings_ui);
g_object_unref (priv->gsettings_logger);
+ g_object_unref (priv->gsettings_contacts);
G_OBJECT_CLASS (empathy_preferences_parent_class)->finalize (self);
}
@@ -1093,6 +1142,7 @@ empathy_preferences_init (EmpathyPreferences *preferences)
priv->gsettings_sound = g_settings_new (EMPATHY_PREFS_SOUNDS_SCHEMA);
priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
priv->gsettings_logger = g_settings_new (EMPATHY_PREFS_LOGGER_SCHEMA);
+ priv->gsettings_contacts = g_settings_new (EMPATHY_PREFS_CONTACTS_SCHEMA);
/* Create chat theme preview, and track changes */
priv->theme_manager = empathy_theme_manager_dup_singleton ();