source-dialog: implement 'source.local' action

Local calendars can now be added.
This commit is contained in:
Georges Basile Stavracas Neto
2015-05-25 12:35:33 -04:00
committed by Erick Pérez Castellanos
parent b659d6a7cb
commit 855c4ddd1f
+42 -3
View File
@@ -164,6 +164,10 @@ static void on_file_activated (GSimpleAction *ac
GVariant *param,
gpointer user_data);
static void on_local_activated (GSimpleAction *action,
GVariant *param,
gpointer user_data);
static void remove_source (GcalManager *manager,
ESource *source,
gpointer user_data);
@@ -198,9 +202,9 @@ static void discover_sources_cb (GObject *so
G_DEFINE_TYPE_WITH_PRIVATE (GcalSourceDialog, gcal_source_dialog, GTK_TYPE_DIALOG)
GActionEntry actions[] = {
{"file", on_file_activated, NULL, NULL, NULL},
{"local", NULL, NULL, NULL, NULL},
{"web", NULL, NULL, NULL, NULL}
{"file", on_file_activated, NULL, NULL, NULL},
{"local", on_local_activated, NULL, NULL, NULL},
{"web", NULL, NULL, NULL, NULL}
};
@@ -1041,6 +1045,41 @@ on_file_activated (GSimpleAction *action,
gtk_widget_destroy (dialog);
}
/**
* on_local_activated:
*
* Creates a new local calendar, and let
* the user adjust the settings after.
*
* Returns:
*/
static void
on_local_activated (GSimpleAction *action,
GVariant *param,
gpointer user_data)
{
GcalSourceDialogPrivate *priv = GCAL_SOURCE_DIALOG (user_data)->priv;
ESourceExtension *ext;
ESource *source;
/**
* Create the new source and add the needed
* extensions.
*/
source = e_source_new (NULL, NULL, NULL);
e_source_set_parent (source, "local-stub");
ext = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR);
e_source_backend_set_backend_name (E_SOURCE_BACKEND (ext), "local");
/* update the source properties */
e_source_set_display_name (source, _("Unnamed Calendar"));
// Jump to the edit page
gcal_source_dialog_set_source (GCAL_SOURCE_DIALOG (user_data), source);
gcal_source_dialog_set_mode (GCAL_SOURCE_DIALOG (user_data), GCAL_SOURCE_DIALOG_MODE_CREATE);
}
/**
* validate_url_cb:
*