[gnome-calendar/gnome-3-24] source-dialog: improve validation of remote calendars
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/gnome-3-24] source-dialog: improve validation of remote calendars
- Date: Thu, 13 Apr 2017 12:53:49 +0000 (UTC)
commit 68ce21e641d56bca24bceb9cd94cf0cc286ecb22
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Apr 13 09:53:00 2017 -0300
source-dialog: improve validation of remote calendars
src/gcal-source-dialog.c | 27 ++++++++++++++++-----------
1 files changed, 16 insertions(+), 11 deletions(-)
---
diff --git a/src/gcal-source-dialog.c b/src/gcal-source-dialog.c
index 18737e5..0378850 100644
--- a/src/gcal-source-dialog.c
+++ b/src/gcal-source-dialog.c
@@ -1502,7 +1502,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);
@@ -1515,7 +1515,6 @@ discover_sources_cb (GObject *source,
gpointer user_data)
{
GcalSourceDialog *self;
- EWebDAVDiscoveredSource *src;
GSList *discovered_sources, *user_addresses, *aux;
GError *error;
@@ -1543,7 +1542,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;
@@ -1573,16 +1575,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;
@@ -1590,20 +1594,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);
@@ -1611,9 +1619,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);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]