From f7df717e1bc693b624349a33d82161130128c988 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Sun, 23 Jun 2019 19:24:17 -0300 Subject: [PATCH] edit-calendar-page: Add back button And remove the remaining code (and a few extras) from the calendar management dialog. --- data/ui/edit-calendar-page.ui | 14 ++++ .../gcal-calendar-management-dialog.c | 68 ------------------- .../gcal-edit-calendar-page.c | 28 +++++++- 3 files changed, 40 insertions(+), 70 deletions(-) diff --git a/data/ui/edit-calendar-page.ui b/data/ui/edit-calendar-page.ui index 03c5d242..80c91540 100644 --- a/data/ui/edit-calendar-page.ui +++ b/data/ui/edit-calendar-page.ui @@ -211,4 +211,18 @@ + + + + True + True + True + + + + True + go-previous-symbolic + + + diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.c b/src/gui/calendar-management/gcal-calendar-management-dialog.c index 8f9e4669..7a765ea8 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.c +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.c @@ -84,12 +84,6 @@ typedef enum GCAL_ACCOUNT_TYPE_NOT_SUPPORTED } GcalAccountType; -static void action_widget_activated (GtkWidget *widget, - gpointer user_data); - -static void back_button_clicked (GtkButton *button, - gpointer user_data); - static void calendar_file_selected (GtkFileChooser *button, gpointer user_data); @@ -139,65 +133,6 @@ import_file_extensions[] = { ".vcs" }; -static void -add_button_clicked (GtkWidget *button, - gpointer user_data) -{ - GcalCalendarManagementDialog *self = GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data); - GcalManager *manager; - - manager = gcal_context_get_manager (self->context); - - if (self->source != NULL) - { - /* Commit the new source */ - gcal_manager_save_source (manager, self->source); - - self->source = NULL; - - gcal_calendar_management_dialog_set_mode (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), - GCAL_CALENDAR_MANAGEMENT_MODE_NORMAL); - } -#if 0 - if (self->remote_sources != NULL) - { - GList *l; - - /* Commit each new remote source */ - for (l = self->remote_sources; l != NULL; l = l->next) - gcal_manager_save_source (manager, l->data); - - g_list_free (self->remote_sources); - self->remote_sources = NULL; - - /* Go back to overview */ - gcal_calendar_management_dialog_set_mode (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), - GCAL_CALENDAR_MANAGEMENT_MODE_NORMAL); - } -#endif -} - -static void -action_widget_activated (GtkWidget *widget, - gpointer user_data) -{ - GcalCalendarManagementDialog *self = GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data); - gint response = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "response")); - - self->old_default_source = NULL; - - gtk_dialog_response (GTK_DIALOG (user_data), response); -} - -static void -back_button_clicked (GtkButton *button, - gpointer user_data) -{ - GcalCalendarManagementDialog *self = GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data); - - gcal_calendar_management_dialog_set_mode (self, GCAL_CALENDAR_MANAGEMENT_MODE_NORMAL); -} - static void calendar_visible_check_toggled (GObject *object, GParamSpec *pspec, @@ -584,9 +519,6 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, headerbar); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, stack); - gtk_widget_class_bind_template_callback (widget_class, add_button_clicked); - gtk_widget_class_bind_template_callback (widget_class, action_widget_activated); - gtk_widget_class_bind_template_callback (widget_class, back_button_clicked); gtk_widget_class_bind_template_callback (widget_class, calendar_file_selected); gtk_widget_class_bind_template_callback (widget_class, calendar_visible_check_toggled); gtk_widget_class_bind_template_callback (widget_class, response_signal); diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.c b/src/gui/calendar-management/gcal-edit-calendar-page.c index 396eb0c1..adedbeac 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.c +++ b/src/gui/calendar-management/gcal-edit-calendar-page.c @@ -33,6 +33,7 @@ struct _GcalEditCalendarPage GtkWidget *account_box; GtkLabel *account_label; GtkWidget *account_dim_label; + GtkWidget *back_button; GtkColorChooser *calendar_color_button; GtkToggleButton *calendar_visible_check; GtkWidget *calendar_url_button; @@ -227,6 +228,20 @@ update_calendar (GcalEditCalendarPage *self) * Callbacks */ +static void +on_back_button_clicked_cb (GtkButton *back_button, + GcalEditCalendarPage *self) +{ + GcalCalendarManagementPage *page; + + GCAL_ENTRY; + + page = GCAL_CALENDAR_MANAGEMENT_PAGE (self); + gcal_calendar_management_page_switch_page (page, "calendars", NULL); + + GCAL_EXIT; +} + static void on_remove_button_clicked_cb (GtkButton *button, GcalEditCalendarPage *self) @@ -292,13 +307,16 @@ gcal_edit_calendar_page_activate (GcalCalendarManagementPage *page, gpointer data) { GcalEditCalendarPage *self; + GtkHeaderBar *headerbar; GcalCalendar *calendar; g_assert (GCAL_IS_CALENDAR (data)); self = GCAL_EDIT_CALENDAR_PAGE (page); - calendar = GCAL_CALENDAR (data); + headerbar = gcal_calendar_management_page_get_titlebar (page); + gtk_header_bar_pack_start (headerbar, self->back_button); + calendar = GCAL_CALENDAR (data); setup_calendar (self, calendar); } @@ -306,14 +324,18 @@ static void gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page) { GcalEditCalendarPage *self; + GtkHeaderBar *headerbar; GcalManager *manager; GCAL_ENTRY; self = GCAL_EDIT_CALENDAR_PAGE (page); - manager = gcal_context_get_manager (self->context); + headerbar = gcal_calendar_management_page_get_titlebar (page); + gtk_container_remove (GTK_CONTAINER (headerbar), self->back_button); update_calendar (self); + + manager = gcal_context_get_manager (self->context); gcal_manager_save_source (manager, gcal_calendar_get_source (self->calendar)); g_clear_object (&self->calendar); @@ -401,6 +423,7 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, account_box); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, account_label); + gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, back_button); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, calendar_color_button); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, calendar_url_button); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, calendar_visible_check); @@ -409,6 +432,7 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, name_entry); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, remove_button); + gtk_widget_class_bind_template_callback (widget_class, on_back_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_remove_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_settings_button_clicked_cb); }