diff options
author | Jonathan Tellier <jonathan.tellier@gmail.com> | 2009-08-13 08:56:02 -0400 |
---|---|---|
committer | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2009-08-22 16:46:40 +0100 |
commit | adc79c5d0574f548cfe2b89cb0e04d74a5d1e40e (patch) | |
tree | 0d709a920dcba9c23e59b6028f228852213b438b /libempathy/empathy-account-settings.c | |
parent | 165945e35293556ba6d133f5f90a7251de8d8e4b (diff) |
First part of an overhaul of the accounts dialog
Diffstat (limited to 'libempathy/empathy-account-settings.c')
-rw-r--r-- | libempathy/empathy-account-settings.c | 49 |
1 files changed, 39 insertions, 10 deletions
diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c index ce0ba1bfa..6129570c2 100644 --- a/libempathy/empathy-account-settings.c +++ b/libempathy/empathy-account-settings.c @@ -40,6 +40,7 @@ enum { PROP_CM_NAME, PROP_PROTOCOL, PROP_DISPLAY_NAME, + PROP_DISPLAY_NAME_OVERRIDDEN, PROP_READY }; @@ -61,6 +62,7 @@ struct _EmpathyAccountSettingsPriv gchar *protocol; gchar *display_name; gchar *icon_name; + gboolean display_name_overridden; gboolean ready; GHashTable *parameters; @@ -86,7 +88,7 @@ empathy_account_settings_init (EmpathyAccountSettings *obj) priv->account_manager = empathy_account_manager_dup_singleton (); priv->parameters = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify) tp_g_value_slice_free); + g_free, (GDestroyNotify) tp_g_value_slice_free); priv->unset_parameters = g_array_new (TRUE, FALSE, sizeof (gchar *)); } @@ -121,6 +123,9 @@ empathy_account_settings_set_property (GObject *object, case PROP_DISPLAY_NAME: priv->display_name = g_value_dup_string (value); break; + case PROP_DISPLAY_NAME_OVERRIDDEN: + priv->display_name_overridden = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -150,6 +155,9 @@ empathy_account_settings_get_property (GObject *object, case PROP_DISPLAY_NAME: g_value_set_string (value, priv->display_name); break; + case PROP_DISPLAY_NAME_OVERRIDDEN: + g_value_set_boolean (value, priv->display_name_overridden); + break; case PROP_READY: g_value_set_boolean (value, priv->ready); break; @@ -240,6 +248,13 @@ empathy_account_settings_class_init ( NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, PROP_DISPLAY_NAME_OVERRIDDEN, + g_param_spec_boolean ("display-name-overridden", + "display-name-overridden", + "Whether the display name for this account has been manually overridden", + FALSE, + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_READY, g_param_spec_boolean ("ready", "Ready", @@ -560,9 +575,6 @@ empathy_account_settings_get_dbus_signature (EmpathyAccountSettings *settings, p = empathy_account_settings_get_tp_param (settings, param); - if (p == NULL) - return NULL; - return p->dbus_signature; } @@ -610,6 +622,21 @@ empathy_account_settings_unset (EmpathyAccountSettings *settings, g_hash_table_remove (priv->parameters, param); } +void +empathy_account_settings_discard_changes (EmpathyAccountSettings *settings) +{ + EmpathyAccountSettingsPriv *priv = GET_PRIV (settings); + + if (g_hash_table_size (priv->parameters) > 0) + g_hash_table_remove_all (priv->parameters); + + if (priv->unset_parameters->len > 0) + { + g_array_remove_range (priv->unset_parameters, 0, + priv->unset_parameters->len); + } +} + const gchar * empathy_account_settings_get_string (EmpathyAccountSettings *settings, const gchar *param) @@ -960,13 +987,9 @@ empathy_account_settings_created_cb (GObject *source, EMPATHY_ACCOUNT_MANAGER (source), result, &error); if (account == NULL) - { - g_simple_async_result_set_from_error (priv->apply_result, error); - } + g_simple_async_result_set_from_error (priv->apply_result, error); else - { - priv->account = g_object_ref (account); - } + priv->account = g_object_ref (account); r = priv->apply_result; priv->apply_result = NULL; @@ -1065,6 +1088,12 @@ empathy_account_settings_apply_async (EmpathyAccountSettings *settings, if (priv->account == NULL) { + const gchar *default_display_name; + default_display_name = empathy_account_settings_get_string (settings, + "account"); + empathy_account_settings_set_display_name_async (settings, + default_display_name, NULL, NULL); + if (empathy_account_manager_is_ready (priv->account_manager)) empathy_account_settings_do_create_account (settings); else |