summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-08-27 11:44:46 -0400
committerMatthew Barnes <mbarnes@redhat.com>2012-08-27 12:12:55 -0400
commit44d5f2152663d0854dec4b2ee1e73ddd99e93a41 (patch)
tree2800d25888e95c3fb2f6332b756dffad43221774 /services
parent52265c840a0f00526c60a349b5d78ae5002dbdb1 (diff)
downloadevolution-data-server-44d5f2152663d0854dec4b2ee1e73ddd99e93a41.tar.gz
ESourceWebdav: Add "resource-query" property.
Retain the query portion of a WebDAV URI, and update migration to preserve it from the old XML-based ESource URIs. Also reimplement the "soup-uri" property. Using bi-directional property bindings from one property to many properties results in feedback loops. Instead, listen for "notify" signals from URI component properties and emit a "notify::soup-uri" signal, but don't actually update the internal SoupURI until a copy is requested. This makes Facebook birthday calendars work again, which has the form: webcal://www.facebook.com/ical/b.php?uid=<<UID>>&key=<<KEY>>
Diffstat (limited to 'services')
-rw-r--r--services/evolution-source-registry/evolution-source-registry-migrate-sources.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/services/evolution-source-registry/evolution-source-registry-migrate-sources.c b/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
index cabc692c3..99f80258e 100644
--- a/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
+++ b/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
@@ -2254,6 +2254,12 @@ migrate_parse_caldav_source (ParseData *parse_data)
E_SOURCE_EXTENSION_WEBDAV_BACKEND,
"ResourcePath", parse_data->soup_uri->path);
+ if (parse_data->soup_uri->query != NULL)
+ g_key_file_set_string (
+ parse_data->key_file,
+ E_SOURCE_EXTENSION_WEBDAV_BACKEND,
+ "ResourceQuery", parse_data->soup_uri->query);
+
parse_data->property_func = migrate_parse_caldav_property;
}
@@ -2502,6 +2508,12 @@ migrate_parse_webcal_source (ParseData *parse_data)
E_SOURCE_EXTENSION_WEBDAV_BACKEND,
"ResourcePath", parse_data->soup_uri->path);
+ if (parse_data->soup_uri->query != NULL)
+ g_key_file_set_string (
+ parse_data->key_file,
+ E_SOURCE_EXTENSION_WEBDAV_BACKEND,
+ "ResourceQuery", parse_data->soup_uri->query);
+
/* Webcal Backend has no special properties to parse. */
}
@@ -2546,6 +2558,12 @@ migrate_parse_webdav_source (ParseData *parse_data)
E_SOURCE_EXTENSION_WEBDAV_BACKEND,
"ResourcePath", parse_data->soup_uri->path);
+ if (parse_data->soup_uri->query != NULL)
+ g_key_file_set_string (
+ parse_data->key_file,
+ E_SOURCE_EXTENSION_WEBDAV_BACKEND,
+ "ResourceQuery", parse_data->soup_uri->query);
+
parse_data->property_func = migrate_parse_webdav_property;
}