PROP_PARENT = 1
};
+static void accounts_dialog_account_display_name_changed_cb (
+ EmpathyAccount *account,
+ GParamSpec *pspec,
+ gpointer user_data);
+
static EmpathyAccountSettings * accounts_dialog_model_get_selected_settings (
EmpathyAccountsDialog *dialog);
empathy_account_dialog_account_created_cb (EmpathyAccountWidget *widget_object,
EmpathyAccountsDialog *dialog)
{
+ const gchar *default_display_name;
EmpathyAccountSettings *settings =
accounts_dialog_model_get_selected_settings (dialog);
+
+ /* Setting the display name to the login ID. */
+ default_display_name = empathy_account_settings_get_string (settings,
+ "account");
+ empathy_account_settings_set_display_name_async (settings,
+ default_display_name, NULL, NULL);
+
accounts_dialog_update_settings (dialog, settings);
if (settings)
if (account != NULL)
{
+ g_signal_handlers_disconnect_by_func (account,
+ accounts_dialog_account_display_name_changed_cb, account_dialog);
empathy_account_remove_async (account, NULL, NULL);
g_object_unref (account);
}
dialog);
}
+static void
+accounts_dialog_account_display_name_changed_cb (EmpathyAccount *account,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ const gchar *display_name;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ EmpathyAccountSettings *settings;
+ EmpathyAccount *selected_account;
+ EmpathyAccountsDialog *dialog = EMPATHY_ACCOUNTS_DIALOG (user_data);
+ EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
+
+ display_name = empathy_account_get_display_name (account);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview));
+ settings = accounts_dialog_model_get_selected_settings (dialog);
+ selected_account = empathy_account_settings_get_account (settings);
+
+ if (accounts_dialog_get_account_iter (dialog, account, &iter))
+ {
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_NAME, display_name,
+ -1);
+ }
+
+ if (selected_account == account)
+ accounts_dialog_update_name_label (dialog, display_name);
+
+ g_object_unref (settings);
+}
+
static void
accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
EmpathyAccount *account)
TP_CONNECTION_STATUS_DISCONNECTED,
dialog);
+ g_signal_connect (account, "notify::display-name",
+ G_CALLBACK (accounts_dialog_account_display_name_changed_cb), dialog);
+
g_object_unref (settings);
}
EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
if (accounts_dialog_get_account_iter (dialog, account, &iter))
- gtk_list_store_remove (GTK_LIST_STORE (
+ {
+ g_signal_handlers_disconnect_by_func (account,
+ accounts_dialog_account_display_name_changed_cb, dialog);
+ gtk_list_store_remove (GTK_LIST_STORE (
gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview))), &iter);
+ }
}
static void