From 5e9f7bf01ee91e85b39b0dbf9e8fc6f4e969c468 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Mon, 3 Jun 2019 23:20:12 -0300 Subject: [PATCH] new-calendar-page: Add "Cancel" and "Add" header buttons --- data/ui/calendar-management-dialog.ui | 27 ---------- data/ui/new-calendar-page.ui | 19 +++++++ .../gcal-calendar-management-dialog.c | 27 +--------- .../gcal-new-calendar-page.c | 50 +++++++++++++++++-- 4 files changed, 66 insertions(+), 57 deletions(-) diff --git a/data/ui/calendar-management-dialog.ui b/data/ui/calendar-management-dialog.ui index 4955e1a2..8b75a303 100644 --- a/data/ui/calendar-management-dialog.ui +++ b/data/ui/calendar-management-dialog.ui @@ -55,33 +55,6 @@ - - - Cancel - True - True - - - - 2 - - - - - Add - False - True - True - - - - - end - 1 - - diff --git a/data/ui/new-calendar-page.ui b/data/ui/new-calendar-page.ui index 0f307796..5c19659c 100644 --- a/data/ui/new-calendar-page.ui +++ b/data/ui/new-calendar-page.ui @@ -211,4 +211,23 @@ + + + True + Cancel + True + True + + + + True + Add + False + True + True + + + diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.c b/src/gui/calendar-management/gcal-calendar-management-dialog.c index a36c57d9..8f9e4669 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.c +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.c @@ -57,9 +57,7 @@ struct _GcalCalendarManagementDialog { GtkDialog parent; - GtkWidget *add_button; GtkWidget *back_button; - GtkWidget *cancel_button; GtkWidget *headerbar; GtkWidget *notebook; GtkWidget *stack; @@ -86,9 +84,6 @@ typedef enum GCAL_ACCOUNT_TYPE_NOT_SUPPORTED } GcalAccountType; -static void add_button_clicked (GtkWidget *button, - gpointer user_data); - static void action_widget_activated (GtkWidget *widget, gpointer user_data); @@ -102,10 +97,6 @@ static void calendar_visible_check_toggled (GObject *ob GParamSpec *pspec, gpointer user_data); -static void cancel_button_clicked (GtkWidget *button, - gpointer user_data); - - static void on_file_activated (GSimpleAction *action, GVariant *param, gpointer user_data); @@ -222,15 +213,6 @@ calendar_visible_check_toggled (GObject *object, gcal_calendar_set_visible (calendar, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object))); } -static void -cancel_button_clicked (GtkWidget *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 response_signal (GtkDialog *dialog, gint response_id, @@ -340,7 +322,7 @@ calendar_file_selected (GtkFileChooser *button, gcal_calendar_management_dialog_set_source (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), source); gcal_calendar_management_dialog_set_mode (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), GCAL_CALENDAR_MANAGEMENT_MODE_CREATE); - gtk_widget_set_sensitive (self->add_button, TRUE); + //gtk_widget_set_sensitive (self->add_button, TRUE); } static void @@ -404,7 +386,7 @@ on_local_activated (GSimpleAction *action, gcal_calendar_management_dialog_set_source (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), source); gcal_calendar_management_dialog_set_mode (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), GCAL_CALENDAR_MANAGEMENT_MODE_CREATE); - gtk_widget_set_sensitive (self->add_button, TRUE); + //gtk_widget_set_sensitive (self->add_button, TRUE); } static void @@ -598,9 +580,7 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k /* bind things for/from the template class */ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/calendar/calendar-management-dialog.ui"); - gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, add_button); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, back_button); - gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, cancel_button); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, headerbar); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, stack); @@ -609,7 +589,6 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k 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, cancel_button_clicked); gtk_widget_class_bind_template_callback (widget_class, response_signal); } @@ -645,8 +624,6 @@ gcal_calendar_management_dialog_set_mode (GcalCalendarManagementDialog *dial gtk_header_bar_set_subtitle (GTK_HEADER_BAR (dialog->headerbar), NULL); gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (dialog->headerbar), FALSE); gtk_stack_set_visible_child (GTK_STACK (dialog->stack), GTK_WIDGET (dialog->pages[GCAL_PAGE_NEW_CALENDAR])); - gtk_widget_set_visible (dialog->add_button, TRUE); - gtk_widget_set_visible (dialog->cancel_button, TRUE); break; case GCAL_CALENDAR_MANAGEMENT_MODE_EDIT: diff --git a/src/gui/calendar-management/gcal-new-calendar-page.c b/src/gui/calendar-management/gcal-new-calendar-page.c index 04aaf3ec..55c5968d 100644 --- a/src/gui/calendar-management/gcal-new-calendar-page.c +++ b/src/gui/calendar-management/gcal-new-calendar-page.c @@ -33,7 +33,9 @@ struct _GcalNewCalendarPage { GtkBox parent; + GtkWidget *add_button; GtkEntry *calendar_address_entry; + GtkWidget *cancel_button; GtkWidget *credentials_cancel_button; GtkWidget *credentials_connect_button; GtkWidget *credentials_dialog; @@ -210,7 +212,7 @@ discover_sources_cb (GObject *source, &error)) { /* Don't add an source with errors */ - //gtk_widget_set_sensitive (self->add_button, FALSE); + gtk_widget_set_sensitive (self->add_button, FALSE); /* * If it's the first try and things went wrong, retry with the user @@ -378,8 +380,7 @@ validate_url_cb (GcalNewCalendarPage *self) if (is_file) { 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; } @@ -501,6 +502,13 @@ on_url_entry_text_changed_cb (GtkEntry *entry, GCAL_EXIT; } +static void +on_cancel_button_clicked_cb (GtkWidget *button, + GcalCalendarManagementPage *page) +{ + gcal_calendar_management_page_switch_page (page, "calendars", NULL); +} + /* * GcalCalendarManagementPage iface @@ -518,18 +526,46 @@ gcal_new_calendar_page_get_title (GcalCalendarManagementPage *page) return _("New Calendar"); } +static void +gcal_new_calendar_page_activate (GcalCalendarManagementPage *page, + gpointer page_data) +{ + GcalNewCalendarPage *self; + GtkHeaderBar *headerbar; + + GCAL_ENTRY; + + self = GCAL_NEW_CALENDAR_PAGE (page); + headerbar = gcal_calendar_management_page_get_titlebar (page); + + gtk_header_bar_pack_start (headerbar, self->cancel_button); + gtk_header_bar_pack_end (headerbar, self->add_button); + gtk_header_bar_set_show_close_button (headerbar, FALSE); + + GCAL_EXIT; +} static void gcal_new_calendar_page_deactivate (GcalCalendarManagementPage *page) { - GcalNewCalendarPage *self = GCAL_NEW_CALENDAR_PAGE (page); + GcalNewCalendarPage *self; + GtkHeaderBar *headerbar; - //g_clear_object (&self->source); + GCAL_ENTRY; + + self = GCAL_NEW_CALENDAR_PAGE (page); + headerbar = gcal_calendar_management_page_get_titlebar (page); + + gtk_container_remove (GTK_CONTAINER (headerbar), self->cancel_button); + gtk_container_remove (GTK_CONTAINER (headerbar), self->add_button); + gtk_header_bar_set_show_close_button (headerbar, TRUE); if (self->remote_sources) { g_list_free_full (self->remote_sources, g_object_unref); self->remote_sources = NULL; } + + GCAL_EXIT; } static void @@ -537,6 +573,7 @@ gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *i { iface->get_name = gcal_new_calendar_page_get_name; iface->get_title = gcal_new_calendar_page_get_title; + iface->activate = gcal_new_calendar_page_activate; iface->deactivate = gcal_new_calendar_page_deactivate; } @@ -607,7 +644,9 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/new-calendar-page.ui"); + 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, 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_dialog); @@ -617,6 +656,7 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, web_sources_revealer); gtk_widget_class_bind_template_callback (widget_class, on_calendar_address_activated_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_entry_activate_cb); gtk_widget_class_bind_template_callback (widget_class, on_url_entry_text_changed_cb);