new-calendar-page: Implement new designs
This looks soooooo much better =) https://gitlab.gnome.org/GNOME/gnome-calendar/issues/388
This commit is contained in:
+136
-18
@@ -2,20 +2,109 @@
|
|||||||
<interface>
|
<interface>
|
||||||
<template class="GcalNewCalendarPage" parent="GtkBox">
|
<template class="GcalNewCalendarPage" parent="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">12</property>
|
||||||
|
<property name="margin-top">24</property>
|
||||||
|
<property name="margin-bottom">24</property>
|
||||||
|
<property name="margin-start">12</property>
|
||||||
|
<property name="margin-end">12</property>
|
||||||
|
|
||||||
|
<!-- Local calendar -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="margin-bottom">18</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<style>
|
||||||
|
<class name="view" />
|
||||||
|
<class name="frame" />
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Calendar name -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="margin">12</property>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="label" translatable="yes">Calendar Name</property>
|
||||||
|
<property name="xalign">0.0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="local_calendar_name_entry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="placeholder-text" translatable="yes">Calendar Name</property>
|
||||||
|
<signal name="notify::text" handler="on_local_calendar_name_entry_text_changed_cb" object="GcalNewCalendarPage" swapped="no" />
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparator">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Color -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="margin">12</property>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="label" translatable="yes">Color</property>
|
||||||
|
<property name="xalign">0.0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkColorButton" id="local_calendar_color_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="label" translatable="yes">Import a Calendar</property>
|
||||||
|
<property name="xalign">0.0</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="scale" value="1.3" />
|
||||||
|
<attribute name="weight" value="bold" />
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid">
|
<object class="GtkGrid">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="border_width">18</property>
|
<property name="row_spacing">12</property>
|
||||||
<property name="row_spacing">16</property>
|
|
||||||
<property name="column_spacing">12</property>
|
<property name="column_spacing">12</property>
|
||||||
|
|
||||||
|
<!-- Online Accounts reference label-->
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="web_description_label">
|
<object class="GtkLabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="label" translatable="yes">Enter the address of the calendar that you want to add. If the calendar belongs to one of your online accounts, you can add it through the <a href="GOA">online account settings</a>.</property>
|
<property name="label" translatable="yes">Alternatively, enter the web address of an online calendar you want to import, or open a supported calendar file.</property>
|
||||||
<property name="use_markup">True</property>
|
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<signal name="activate-link" handler="description_label_link_activated" object="GcalNewCalendarPage" swapped="no" />
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
@@ -23,33 +112,37 @@
|
|||||||
<property name="width">2</property>
|
<property name="width">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<!-- URL entry -->
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="calendar_address_label">
|
<object class="GtkEntry" id="calendar_address_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="label" translatable="yes">Calendar Address</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="xalign">1</property>
|
<property name="hexpand">True</property>
|
||||||
<style>
|
<property name="placeholder-text">https://example.com/calendar.ics</property>
|
||||||
<class name="dim-label" />
|
<signal name="notify::text" handler="on_url_entry_text_changed_cb" object="GcalNewCalendarPage" swapped="no" />
|
||||||
</style>
|
<signal name="activate" handler="on_calendar_address_activated_cb" object="GcalNewCalendarPage" swapped="no" />
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
<property name="top_attach">1</property>
|
<property name="top_attach">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<!-- File Chooser button -->
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="calendar_address_entry">
|
<object class="GtkFileChooserButton" id="calendar_file_chooser_button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<!-- <property name="filter">calendar_file_filter</property> -->
|
||||||
<property name="hexpand">True</property>
|
<property name="title" translatable="yes">Open a File</property>
|
||||||
<signal name="notify::text" handler="on_url_entry_text_changed_cb" object="GcalNewCalendarPage" swapped="no" />
|
<signal name="file-set" handler="on_file_chooser_button_file_set_cb" object="GcalNewCalendarPage" swapped="no" />
|
||||||
<signal name="activate" handler="on_calendar_address_activated_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
<property name="top_attach">1</property>
|
<property name="top_attach">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkRevealer" id="web_sources_revealer">
|
<object class="GtkRevealer" id="web_sources_revealer">
|
||||||
<property name="transition_type">crossfade</property>
|
<property name="transition_type">crossfade</property>
|
||||||
@@ -103,14 +196,32 @@
|
|||||||
<property name="width">2</property>
|
<property name="width">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<!-- Online Accounts reference label-->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="web_description_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">If the calendar belongs to one of your online accounts, you can add it through the <a href="GOA">online account settings</a>.</property>
|
||||||
|
<property name="use_markup">True</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<signal name="activate-link" handler="description_label_link_activated" object="GcalNewCalendarPage" swapped="no" />
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">3</property>
|
||||||
|
<property name="width">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- Credentials dialog -->
|
<!-- Credentials dialog -->
|
||||||
<object class="GtkDialog" id="credentials_dialog">
|
<object class="GtkDialog" id="credentials_dialog">
|
||||||
|
<property name="modal">True</property>
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<property name="transient_for">GcalNewCalendarPage</property>
|
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="credentials_headerbar">
|
<object class="GtkHeaderBar" id="credentials_headerbar">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@@ -211,6 +322,13 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
|
<!-- Calendar file filter -->
|
||||||
|
<object class="GtkFileFilter" id="calendar_file_filter">
|
||||||
|
<mime-types>
|
||||||
|
<mime-type>text/calendar</mime-type>
|
||||||
|
</mime-types>
|
||||||
|
</object>
|
||||||
|
|
||||||
<!-- Headerbar buttons -->
|
<!-- Headerbar buttons -->
|
||||||
<object class="GtkButton" id="cancel_button">
|
<object class="GtkButton" id="cancel_button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|||||||
@@ -35,12 +35,16 @@ struct _GcalNewCalendarPage
|
|||||||
|
|
||||||
GtkWidget *add_button;
|
GtkWidget *add_button;
|
||||||
GtkEntry *calendar_address_entry;
|
GtkEntry *calendar_address_entry;
|
||||||
|
GtkFileChooser *calendar_file_chooser_button;
|
||||||
|
GtkFileFilter *calendar_file_filter;
|
||||||
GtkWidget *cancel_button;
|
GtkWidget *cancel_button;
|
||||||
GtkWidget *credentials_cancel_button;
|
GtkWidget *credentials_cancel_button;
|
||||||
GtkWidget *credentials_connect_button;
|
GtkWidget *credentials_connect_button;
|
||||||
GtkWidget *credentials_dialog;
|
GtkWidget *credentials_dialog;
|
||||||
GtkEntry *credentials_password_entry;
|
GtkEntry *credentials_password_entry;
|
||||||
GtkEntry *credentials_user_entry;
|
GtkEntry *credentials_user_entry;
|
||||||
|
GtkColorChooser *local_calendar_color_button;
|
||||||
|
GtkEntry *local_calendar_name_entry;
|
||||||
GtkWidget *web_sources_listbox;
|
GtkWidget *web_sources_listbox;
|
||||||
GtkWidget *web_sources_revealer;
|
GtkWidget *web_sources_revealer;
|
||||||
|
|
||||||
@@ -49,6 +53,8 @@ struct _GcalNewCalendarPage
|
|||||||
GList *remote_sources;
|
GList *remote_sources;
|
||||||
guint validate_url_resource_id;
|
guint validate_url_resource_id;
|
||||||
|
|
||||||
|
ESource *local_source;
|
||||||
|
|
||||||
GcalContext *context;
|
GcalContext *context;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -152,11 +158,6 @@ prompt_credentials (GcalNewCalendarPage *self,
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Callbacks
|
|
||||||
*/
|
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
calendar_path_to_name_suggestion (GFile *file)
|
calendar_path_to_name_suggestion (GFile *file)
|
||||||
{
|
{
|
||||||
@@ -199,23 +200,73 @@ calendar_path_to_name_suggestion (GFile *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calendar_file_selected (GtkFileChooser *button,
|
update_add_button (GcalNewCalendarPage *self)
|
||||||
gpointer user_data)
|
{
|
||||||
|
gboolean valid;
|
||||||
|
|
||||||
|
valid = self->local_source != NULL || self->remote_sources != NULL;
|
||||||
|
gtk_widget_set_sensitive (self->add_button, valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_local_source (GcalNewCalendarPage *self)
|
||||||
|
{
|
||||||
|
g_autofree gchar *calendar_name = NULL;
|
||||||
|
|
||||||
|
g_clear_object (&self->local_source);
|
||||||
|
|
||||||
|
calendar_name = g_strdup (gtk_entry_get_text (self->local_calendar_name_entry));
|
||||||
|
calendar_name = g_strstrip (calendar_name);
|
||||||
|
|
||||||
|
if (calendar_name && g_utf8_strlen (calendar_name, -1) > 0)
|
||||||
|
{
|
||||||
|
g_autofree gchar *color_string = NULL;
|
||||||
|
ESourceExtension *ext;
|
||||||
|
ESource *source;
|
||||||
|
GdkRGBA color;
|
||||||
|
|
||||||
|
gtk_color_chooser_get_rgba (self->local_calendar_color_button, &color);
|
||||||
|
color_string = gdk_rgba_to_string (&color);
|
||||||
|
|
||||||
|
/* Create the new source and add the needed extensions */
|
||||||
|
source = e_source_new (NULL, NULL, NULL);
|
||||||
|
e_source_set_parent (source, "local-stub");
|
||||||
|
e_source_set_display_name (source, calendar_name);
|
||||||
|
|
||||||
|
ext = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR);
|
||||||
|
e_source_backend_set_backend_name (E_SOURCE_BACKEND (ext), "local");
|
||||||
|
e_source_selectable_set_color (E_SOURCE_SELECTABLE (ext), color_string);
|
||||||
|
|
||||||
|
e_source_backend_set_backend_name (E_SOURCE_BACKEND (ext), "local");
|
||||||
|
|
||||||
|
self->local_source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
update_add_button (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Callbacks
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_file_chooser_button_file_set_cb (GtkFileChooser *chooser,
|
||||||
|
GcalNewCalendarPage *self)
|
||||||
{
|
{
|
||||||
g_autofree gchar *display_name = NULL;
|
g_autofree gchar *display_name = NULL;
|
||||||
g_autoptr (ESource) source = NULL;
|
g_autoptr (ESource) source = NULL;
|
||||||
g_autoptr (GFile) file = NULL;
|
g_autoptr (GFile) file = NULL;
|
||||||
ESourceExtension *ext;
|
ESourceExtension *ext;
|
||||||
|
|
||||||
file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (button));
|
GCAL_ENTRY;
|
||||||
|
|
||||||
|
file = gtk_file_chooser_get_file (chooser);
|
||||||
|
|
||||||
if (!file)
|
if (!file)
|
||||||
return;
|
GCAL_RETURN ();
|
||||||
|
|
||||||
/**
|
/* Create the new source and add the needed extensions */
|
||||||
* Create the new source and add the needed
|
|
||||||
* extensions.
|
|
||||||
*/
|
|
||||||
source = e_source_new (NULL, NULL, NULL);
|
source = e_source_new (NULL, NULL, NULL);
|
||||||
e_source_set_parent (source, "local-stub");
|
e_source_set_parent (source, "local-stub");
|
||||||
|
|
||||||
@@ -228,59 +279,17 @@ calendar_file_selected (GtkFileChooser *button,
|
|||||||
/* update the source properties */
|
/* update the source properties */
|
||||||
display_name = calendar_path_to_name_suggestion (file);
|
display_name = calendar_path_to_name_suggestion (file);
|
||||||
e_source_set_display_name (source, display_name);
|
e_source_set_display_name (source, display_name);
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
/* TODO: report errors */
|
||||||
on_file_activated (GSimpleAction *action,
|
gcal_manager_save_source (gcal_context_get_manager (self->context), source);
|
||||||
GVariant *param,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
GtkWidget *dialog;
|
|
||||||
GtkFileFilter *filter;
|
|
||||||
gint response;
|
|
||||||
|
|
||||||
/* Dialog */
|
gcal_calendar_management_page_switch_page (GCAL_CALENDAR_MANAGEMENT_PAGE (self),
|
||||||
dialog = gtk_file_chooser_dialog_new (_("Select a calendar file"),
|
"calendars",
|
||||||
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (user_data))),
|
NULL);
|
||||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
|
||||||
_("Cancel"), GTK_RESPONSE_CANCEL,
|
|
||||||
_("Open"), GTK_RESPONSE_OK,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
g_signal_connect (dialog, "file-activated", G_CALLBACK (calendar_file_selected), user_data);
|
gtk_file_chooser_unselect_all (self->calendar_file_chooser_button);
|
||||||
|
|
||||||
/* File filter */
|
GCAL_EXIT;
|
||||||
filter = gtk_file_filter_new ();
|
|
||||||
gtk_file_filter_set_name (filter, _("Calendar files"));
|
|
||||||
gtk_file_filter_add_mime_type (filter, "text/calendar");
|
|
||||||
|
|
||||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
|
||||||
|
|
||||||
response = gtk_dialog_run (GTK_DIALOG (dialog));
|
|
||||||
|
|
||||||
if (response == GTK_RESPONSE_OK)
|
|
||||||
calendar_file_selected (GTK_FILE_CHOOSER (dialog), user_data);
|
|
||||||
|
|
||||||
gtk_widget_destroy (dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_local_activated (GSimpleAction *action,
|
|
||||||
GVariant *param,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
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"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -309,7 +318,7 @@ on_check_activated_cb (GtkWidget *check,
|
|||||||
else
|
else
|
||||||
self->remote_sources = g_list_remove (self->remote_sources, source);
|
self->remote_sources = g_list_remove (self->remote_sources, source);
|
||||||
|
|
||||||
//gtk_widget_set_sensitive (self->add_button, g_list_length (self->remote_sources) > 0);
|
update_add_button (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -447,6 +456,8 @@ validate_url_cb (GcalNewCalendarPage *self)
|
|||||||
const gchar *host, *path;
|
const gchar *host, *path;
|
||||||
gboolean is_file;
|
gboolean is_file;
|
||||||
|
|
||||||
|
GCAL_ENTRY;
|
||||||
|
|
||||||
self->validate_url_resource_id = 0;
|
self->validate_url_resource_id = 0;
|
||||||
soup_uri = NULL;
|
soup_uri = NULL;
|
||||||
host = path = NULL;
|
host = path = NULL;
|
||||||
@@ -471,7 +482,7 @@ validate_url_cb (GcalNewCalendarPage *self)
|
|||||||
uri = gtk_entry_get_text (self->calendar_address_entry);
|
uri = gtk_entry_get_text (self->calendar_address_entry);
|
||||||
soup_uri = soup_uri_new (uri);
|
soup_uri = soup_uri_new (uri);
|
||||||
if (!soup_uri)
|
if (!soup_uri)
|
||||||
return FALSE;
|
GCAL_RETURN (G_SOURCE_REMOVE);
|
||||||
|
|
||||||
host = soup_uri_get_host (soup_uri);
|
host = soup_uri_get_host (soup_uri);
|
||||||
path = soup_uri_get_path (soup_uri);
|
path = soup_uri_get_path (soup_uri);
|
||||||
@@ -504,16 +515,15 @@ validate_url_cb (GcalNewCalendarPage *self)
|
|||||||
{
|
{
|
||||||
self->remote_sources = g_list_append (self->remote_sources, source);
|
self->remote_sources = g_list_append (self->remote_sources, source);
|
||||||
gtk_widget_set_sensitive (self->add_button, source != NULL);
|
gtk_widget_set_sensitive (self->add_button, source != NULL);
|
||||||
return FALSE;
|
GCAL_RETURN (G_SOURCE_REMOVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pulse the entry while it performs the check */
|
/* Pulse the entry while it performs the check */
|
||||||
self->calendar_address_id = g_timeout_add (ENTRY_PROGRESS_TIMEOUT, (GSourceFunc) pulse_web_entry, self);
|
self->calendar_address_id = g_timeout_add (ENTRY_PROGRESS_TIMEOUT, (GSourceFunc) pulse_web_entry, self);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try to retrieve the sources without prompting
|
* Try to retrieve the sources without prompting username and password. If
|
||||||
* username and password. If we get any error,
|
* we get any error, then it prompts and retry.
|
||||||
* then it prompts and retry.
|
|
||||||
*/
|
*/
|
||||||
credentials = e_named_parameters_new ();
|
credentials = e_named_parameters_new ();
|
||||||
|
|
||||||
@@ -541,9 +551,10 @@ validate_url_cb (GcalNewCalendarPage *self)
|
|||||||
|
|
||||||
g_debug ("No credentials failed, retrying with user credentials...");
|
g_debug ("No credentials failed, retrying with user credentials...");
|
||||||
|
|
||||||
user = password = NULL;
|
|
||||||
response = prompt_credentials (self, &user, &password);
|
response = prompt_credentials (self, &user, &password);
|
||||||
|
|
||||||
|
g_message ("lalala");
|
||||||
|
|
||||||
if (response == GTK_RESPONSE_OK)
|
if (response == GTK_RESPONSE_OK)
|
||||||
{
|
{
|
||||||
e_named_parameters_set (credentials, E_SOURCE_CREDENTIAL_USERNAME, user);
|
e_named_parameters_set (credentials, E_SOURCE_CREDENTIAL_USERNAME, user);
|
||||||
@@ -561,7 +572,7 @@ validate_url_cb (GcalNewCalendarPage *self)
|
|||||||
|
|
||||||
e_named_parameters_free (credentials);
|
e_named_parameters_free (credentials);
|
||||||
|
|
||||||
return FALSE;
|
GCAL_RETURN (G_SOURCE_REMOVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -573,11 +584,11 @@ on_add_button_clicked_cb (GtkWidget *button,
|
|||||||
manager = gcal_context_get_manager (self->context);
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
/* Commit the new source */
|
/* Commit the new source */
|
||||||
//if (self->source != NULL)
|
if (self->local_source)
|
||||||
// gcal_manager_save_source (manager, self->source);
|
gcal_manager_save_source (manager, self->local_source);
|
||||||
|
|
||||||
/* Commit each new remote source */
|
/* Commit each new remote source */
|
||||||
if (self->remote_sources != NULL)
|
if (self->remote_sources)
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
@@ -661,6 +672,14 @@ on_cancel_button_clicked_cb (GtkWidget *button,
|
|||||||
gcal_calendar_management_page_switch_page (page, "calendars", NULL);
|
gcal_calendar_management_page_switch_page (page, "calendars", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_local_calendar_name_entry_text_changed_cb (GtkEntry *entry,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
GcalNewCalendarPage *self)
|
||||||
|
{
|
||||||
|
update_local_source (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GcalCalendarManagementPage iface
|
* GcalCalendarManagementPage iface
|
||||||
@@ -717,6 +736,9 @@ gcal_new_calendar_page_deactivate (GcalCalendarManagementPage *page)
|
|||||||
self->remote_sources = NULL;
|
self->remote_sources = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gtk_entry_set_text (self->local_calendar_name_entry, "");
|
||||||
|
gtk_entry_set_text (self->calendar_address_entry, "");
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -798,12 +820,16 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass)
|
|||||||
|
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, add_button);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, add_button);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, calendar_address_entry);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, calendar_address_entry);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, calendar_file_chooser_button);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, calendar_file_filter);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, cancel_button);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, cancel_button);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_cancel_button);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_cancel_button);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_connect_button);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_connect_button);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_dialog);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_dialog);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_password_entry);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_password_entry);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_user_entry);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_user_entry);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, local_calendar_color_button);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, local_calendar_name_entry);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, web_sources_listbox);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, web_sources_listbox);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, web_sources_revealer);
|
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, web_sources_revealer);
|
||||||
|
|
||||||
@@ -812,6 +838,8 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass)
|
|||||||
gtk_widget_class_bind_template_callback (widget_class, on_cancel_button_clicked_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_cancel_button_clicked_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_credential_button_clicked_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_credential_button_clicked_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_credential_entry_activate_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_credential_entry_activate_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, on_file_chooser_button_file_set_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, on_local_calendar_name_entry_text_changed_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_url_entry_text_changed_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_url_entry_text_changed_cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -819,4 +847,6 @@ static void
|
|||||||
gcal_new_calendar_page_init (GcalNewCalendarPage *self)
|
gcal_new_calendar_page_init (GcalNewCalendarPage *self)
|
||||||
{
|
{
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
|
|
||||||
|
gtk_file_filter_set_name (self->calendar_file_filter, _("Calendar files"));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user