diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2012-08-27 11:44:46 -0400 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2012-08-27 12:12:55 -0400 |
commit | 44d5f2152663d0854dec4b2ee1e73ddd99e93a41 (patch) | |
tree | 2800d25888e95c3fb2f6332b756dffad43221774 /services | |
parent | 52265c840a0f00526c60a349b5d78ae5002dbdb1 (diff) | |
download | evolution-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.c | 18 |
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; } |