source-dialog: create a source from url

This commit is contained in:
Georges Basile Stavracas Neto
2015-05-25 12:35:29 -04:00
committed by Erick Pérez Castellanos
parent 38d7a83664
commit 16c5401c86
+53 -1
View File
@@ -495,12 +495,64 @@ static gboolean
validate_url_cb (GcalSourceDialog *dialog)
{
GcalSourceDialogPrivate *priv = dialog->priv;
ESourceAuthentication *auth;
ESourceExtension *ext;
ESourceWebdav *webdav;
ESource *source;
gchar *host, *path;
priv->validate_url_resource_id = 0;
host = path = NULL;
/**
* Remove any reminescent ESources
* cached before.
*/
if (priv->remote_source != NULL)
g_clear_pointer (&(priv->remote_source), g_object_unref);
// Get the hostname and file path from the server
uri_get_fields (gtk_entry_get_text (GTK_ENTRY (priv->calendar_address_entry)), NULL, &host, &path);
g_debug ("[source-dialog] host: '%s', path: '%s'", host, path);
if (path == NULL || host == NULL)
goto out;
// Pulse the entry while it performs the check
priv->calendar_address_id = g_timeout_add (ENTRY_PROGRESS_TIMEOUT, (GSourceFunc) pulse_web_entry, dialog);
g_message ("stub");
/**
* Create the new source and add the needed
* extensions.
*/
source = e_source_new (NULL, NULL, NULL);
e_source_set_parent (source, "webcal-stub");
ext = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR);
e_source_backend_set_backend_name (E_SOURCE_BACKEND (ext), "webcal");
// Authentication
auth = e_source_get_extension (source, E_SOURCE_EXTENSION_AUTHENTICATION);
e_source_authentication_set_host (auth, host);
// Webdav
webdav = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND);
e_source_webdav_set_resource_path (webdav, path);
/* Set the private source so it saves at closing */
priv->remote_source = source;
/* Update buttons */
gtk_widget_set_sensitive (priv->add_button, source != NULL);
setup_source_details (dialog, source);
out:
if (host)
g_free (host);
if (path)
g_free (path);
return FALSE;
}