source-dialog: add accounts when they're added

This commit is contained in:
Georges Basile Stavracas Neto
2015-05-25 12:35:57 -04:00
committed by Erick Pérez Castellanos
parent 10e032f510
commit 2f882d2b0b
+36 -20
View File
@@ -1954,22 +1954,12 @@ account_calendar_disable_changed (GObject *object,
gtk_label_set_label (GTK_LABEL (user_data), goa_account_get_calendar_disabled (account) ? _("Off") : _("On")); gtk_label_set_label (GTK_LABEL (user_data), goa_account_get_calendar_disabled (account) ? _("Off") : _("On"));
} }
static void static void
goa_client_ready_cb (GcalSourceDialog *dialog, add_goa_account (GcalSourceDialog *dialog,
GoaClient *client, GoaAccount *account)
gpointer user_data)
{ {
GcalSourceDialogPrivate *priv = dialog->priv; GcalSourceDialogPrivate *priv = dialog->priv;
GList *accounts, *l;
g_return_if_fail (GCAL_IS_SOURCE_DIALOG (dialog));
g_return_if_fail (GOA_IS_CLIENT (client));
accounts = goa_client_get_accounts (client);
for (l = accounts; l != NULL; l = l->next)
{
GoaAccount *account = goa_object_get_account (GOA_OBJECT (l->data));
GcalAccountType type = get_account_type (account); GcalAccountType type = get_account_type (account);
GtkBuilder *builder; GtkBuilder *builder;
GtkWidget *provider_label; GtkWidget *provider_label;
@@ -1977,9 +1967,11 @@ goa_client_ready_cb (GcalSourceDialog *dialog,
GtkWidget *enabled_label; GtkWidget *enabled_label;
GtkWidget *row; GtkWidget *row;
GtkWidget *icon; GtkWidget *icon;
gboolean should_add = TRUE;
gchar *icon_name; gchar *icon_name;
if (type == GCAL_ACCOUNT_TYPE_NOT_SUPPORTED)
return;
builder = gtk_builder_new_from_resource ("/org/gnome/calendar/online-account-row.ui"); builder = gtk_builder_new_from_resource ("/org/gnome/calendar/online-account-row.ui");
row = GTK_WIDGET (gtk_builder_get_object (builder, "row")); row = GTK_WIDGET (gtk_builder_get_object (builder, "row"));
icon = GTK_WIDGET (gtk_builder_get_object (builder, "icon")); icon = GTK_WIDGET (gtk_builder_get_object (builder, "icon"));
@@ -2005,12 +1997,9 @@ goa_client_ready_cb (GcalSourceDialog *dialog,
break; break;
case GCAL_ACCOUNT_TYPE_NOT_SUPPORTED: case GCAL_ACCOUNT_TYPE_NOT_SUPPORTED:
default: g_assert_not_reached ();
should_add = FALSE;
} }
if (should_add)
{
/* update fields */ /* update fields */
gtk_label_set_label (GTK_LABEL (provider_label), goa_account_get_provider_name (account)); gtk_label_set_label (GTK_LABEL (provider_label), goa_account_get_provider_name (account));
gtk_label_set_label (GTK_LABEL (account_label), goa_account_get_identity (account)); gtk_label_set_label (GTK_LABEL (account_label), goa_account_get_identity (account));
@@ -2024,10 +2013,37 @@ goa_client_ready_cb (GcalSourceDialog *dialog,
G_CALLBACK (account_calendar_disable_changed), enabled_label); G_CALLBACK (account_calendar_disable_changed), enabled_label);
gtk_list_box_insert (GTK_LIST_BOX (priv->online_accounts_listbox), row, 0); gtk_list_box_insert (GTK_LIST_BOX (priv->online_accounts_listbox), row, 0);
}
g_object_unref (builder); g_object_unref (builder);
} }
static void
goa_account_added_cb (GoaClient *client,
GoaObject *object,
gpointer user_data)
{
add_goa_account (GCAL_SOURCE_DIALOG (user_data), goa_object_get_account (object));
}
static void
goa_client_ready_cb (GcalSourceDialog *dialog,
GoaClient *client,
gpointer user_data)
{
GList *accounts, *l;
g_return_if_fail (GCAL_IS_SOURCE_DIALOG (dialog));
g_return_if_fail (GOA_IS_CLIENT (client));
/* Add already fetched accounts */
accounts = goa_client_get_accounts (client);
for (l = accounts; l != NULL; l = l->next)
add_goa_account (dialog, goa_object_get_account (l->data));
/* Be ready to other accounts */
g_signal_connect (client, "account-added", G_CALLBACK (goa_account_added_cb), user_data);
g_list_free (accounts); g_list_free (accounts);
} }