diff --git a/src/gcal-source-dialog.c b/src/gcal-source-dialog.c index 2977f410..2c984119 100644 --- a/src/gcal-source-dialog.c +++ b/src/gcal-source-dialog.c @@ -1376,7 +1376,7 @@ check_activated_cb (GtkWidget *check, source = g_object_get_data (G_OBJECT (row), "source"); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check))) - self->remote_sources = g_list_append (self->remote_sources, source); + self->remote_sources = g_list_prepend (self->remote_sources, source); else self->remote_sources = g_list_remove (self->remote_sources, source); @@ -1389,7 +1389,6 @@ discover_sources_cb (GObject *source, gpointer user_data) { GcalSourceDialog *self; - EWebDAVDiscoveredSource *src; GSList *discovered_sources, *user_addresses, *aux; GError *error; @@ -1417,7 +1416,10 @@ discover_sources_cb (GObject *source, * really want to retry things on unavailable * servers. */ - if (!self->prompt_password && error->code == 14) + if (!self->prompt_password && + (error->code == 14 || + error->code == 403 || + error->code == 405)) { self->prompt_password = TRUE; @@ -1447,16 +1449,18 @@ discover_sources_cb (GObject *source, /* TODO: show a list of calendars */ for (aux = discovered_sources; aux != NULL; aux = aux->next) { + EWebDAVDiscoveredSource *discovered_source; gchar *resource_path = NULL; gboolean uri_valid; - src = aux->data; + discovered_source = aux->data; /* Get the new resource path from the uri */ - uri_valid = uri_get_fields (src->href, NULL, NULL, &resource_path, NULL); + uri_valid = uri_get_fields (discovered_source->href, NULL, NULL, &resource_path, NULL); if (uri_valid) { + ESourceSelectable *selectable; ESourceWebdav *webdav; GtkWidget *row, *check; ESource *new_source; @@ -1464,20 +1468,24 @@ discover_sources_cb (GObject *source, /* build up the new source */ new_source = duplicate_source (E_SOURCE (source)); - e_source_set_display_name (E_SOURCE (new_source), src->display_name); + e_source_set_display_name (E_SOURCE (new_source), discovered_source->display_name); webdav = e_source_get_extension (new_source, E_SOURCE_EXTENSION_WEBDAV_BACKEND); e_source_webdav_set_resource_path (webdav, resource_path); - e_source_webdav_set_display_name (webdav, src->display_name); + e_source_webdav_set_display_name (webdav, discovered_source->display_name); if (user_addresses) e_source_webdav_set_email_address (webdav, user_addresses->data); + /* Setup the color */ + selectable = e_source_get_extension (new_source, E_SOURCE_EXTENSION_CALENDAR); + e_source_selectable_set_color (selectable, discovered_source->color); + /* create the new row */ row = gtk_list_box_row_new (); check = gtk_check_button_new (); - gtk_button_set_label (GTK_BUTTON (check), src->display_name); + gtk_button_set_label (GTK_BUTTON (check), discovered_source->display_name); g_signal_connect (check, "notify::active", G_CALLBACK (check_activated_cb), user_data); gtk_container_add (GTK_CONTAINER (row), check); @@ -1485,9 +1493,6 @@ discover_sources_cb (GObject *source, g_object_set_data (G_OBJECT (row), "parent-source", source); g_object_set_data (G_OBJECT (row), "source", new_source); - g_object_set_data_full (G_OBJECT (row), "source-url", g_strdup (src->href), g_free); - g_object_set_data_full (G_OBJECT (row), "source-color", g_strdup (src->color), g_free); - g_object_set_data_full (G_OBJECT (row), "source-display-name", g_strdup (src->display_name), g_free); gtk_widget_show_all (row); }