diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.c b/src/gui/calendar-management/gcal-calendar-management-dialog.c index dadb1a2d..7e5ece84 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.c +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.c @@ -55,10 +55,7 @@ struct _GcalCalendarManagementDialog { AdwWindow parent; - GtkHeaderBar *headerbar; - GtkWidget *notebook; - GtkWidget *stack; - AdwWindowTitle *window_title; + AdwNavigationView *navigation_view; /* flags */ ESource *source; @@ -97,29 +94,21 @@ set_page (GcalCalendarManagementDialog *self, const gchar *page_name, GcalCalendar *calendar) { - GcalCalendarManagementPage *current_page; - guint i; + GcalCalendarManagementPage *next_page; + AdwNavigationPage *page; GCAL_TRACE_MSG ("Switching to page '%s'", page_name); - current_page = (GcalCalendarManagementPage*) gtk_stack_get_visible_child (GTK_STACK (self->stack)); + page = adw_navigation_view_find_page (self->navigation_view, page_name); + g_assert (page != NULL); + next_page = GCAL_CALENDAR_MANAGEMENT_PAGE (adw_navigation_page_get_child (page)); - for (i = 0; i < N_PAGES; i++) - { - GcalCalendarManagementPage *page = self->pages[i]; + gcal_calendar_management_page_activate (next_page, calendar); - if (g_strcmp0 (page_name, gcal_calendar_management_page_get_name (page)) != 0) - continue; + adw_navigation_view_pop (self->navigation_view); - gtk_stack_set_visible_child (GTK_STACK (self->stack), GTK_WIDGET (page)); - gcal_calendar_management_page_activate (page, calendar); - - adw_window_title_set_title (self->window_title, - gcal_calendar_management_page_get_title (page)); - break; - } - - gcal_calendar_management_page_deactivate (current_page); + if (page != adw_navigation_view_get_visible_page (self->navigation_view)) + adw_navigation_view_push (self->navigation_view, page); } static void @@ -140,16 +129,16 @@ setup_context (GcalCalendarManagementDialog *self) for (i = 0; i < N_PAGES; i++) { GcalCalendarManagementPage *page; + AdwNavigationPage *navigation_page; page = g_object_new (pages[i].gtype, "context", self->context, NULL); - gtk_widget_set_visible (GTK_WIDGET (page), TRUE); - gtk_stack_add_titled (GTK_STACK (self->stack), - GTK_WIDGET (page), - gcal_calendar_management_page_get_name (page), - gcal_calendar_management_page_get_title (page)); + navigation_page = adw_navigation_page_new (GTK_WIDGET (page), + gcal_calendar_management_page_get_title (page)); + adw_navigation_page_set_tag (navigation_page, gcal_calendar_management_page_get_name (page)); + adw_navigation_view_add (self->navigation_view, navigation_page); g_signal_connect_object (page, "switch-page", @@ -170,6 +159,19 @@ setup_context (GcalCalendarManagementDialog *self) * Callbacks */ +static void +on_navigation_view_popped_cb (AdwNavigationView *navigation_view, + AdwNavigationPage *popped_page, + GcalCalendarManagementDialog *self) +{ + GcalCalendarManagementPage *page; + + page = GCAL_CALENDAR_MANAGEMENT_PAGE (adw_navigation_page_get_child (popped_page)); + g_assert (page != NULL); + + gcal_calendar_management_page_deactivate (page); +} + static void on_page_switched_cb (GcalCalendarManagementPage *page, const gchar *next_page, @@ -266,9 +268,9 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-calendar-management-dialog.ui"); - 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_child (widget_class, GcalCalendarManagementDialog, window_title); + gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, navigation_view); + + gtk_widget_class_bind_template_callback (widget_class, on_navigation_view_popped_cb); } static void @@ -276,11 +278,3 @@ gcal_calendar_management_dialog_init (GcalCalendarManagementDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); } - -GtkHeaderBar* -gcal_calendar_management_dialog_get_titlebar (GcalCalendarManagementDialog *self) -{ - g_return_val_if_fail (GCAL_IS_CALENDAR_MANAGEMENT_DIALOG (self), NULL); - - return self->headerbar; -} diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.h b/src/gui/calendar-management/gcal-calendar-management-dialog.h index bcbde11f..9e0bdeeb 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.h +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.h @@ -36,6 +36,4 @@ G_DECLARE_FINAL_TYPE (GcalCalendarManagementDialog, GCAL, CALENDAR_MANAGEMENT_DIALOG, AdwWindow) -GtkHeaderBar* gcal_calendar_management_dialog_get_titlebar (GcalCalendarManagementDialog *self); - G_END_DECLS diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.ui b/src/gui/calendar-management/gcal-calendar-management-dialog.ui index aaa0755e..03b19ae6 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.ui +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.ui @@ -9,32 +9,8 @@ True True - - False - - - - - True - - - - - - - - - - - True - False - crossfade - - - - - - + + diff --git a/src/gui/calendar-management/gcal-calendar-management-page.c b/src/gui/calendar-management/gcal-calendar-management-page.c index 4575ddb2..afa305f0 100644 --- a/src/gui/calendar-management/gcal-calendar-management-page.c +++ b/src/gui/calendar-management/gcal-calendar-management-page.c @@ -107,14 +107,3 @@ gcal_calendar_management_page_switch_page (GcalCalendarManagementPage *self, g_signal_emit (self, signals[SWITCH_PAGE], 0, page_name, calendar); } - -GtkHeaderBar* -gcal_calendar_management_page_get_titlebar (GcalCalendarManagementPage *self) -{ - GtkNative *native; - - native = gtk_widget_get_native (GTK_WIDGET (self)); - g_assert (native != NULL); - - return gcal_calendar_management_dialog_get_titlebar (GCAL_CALENDAR_MANAGEMENT_DIALOG (native)); -} diff --git a/src/gui/calendar-management/gcal-calendar-management-page.h b/src/gui/calendar-management/gcal-calendar-management-page.h index b6bd6658..e9130fe7 100644 --- a/src/gui/calendar-management/gcal-calendar-management-page.h +++ b/src/gui/calendar-management/gcal-calendar-management-page.h @@ -61,6 +61,4 @@ void gcal_calendar_management_page_switch_page (GcalCalendarMa const gchar *page_name, GcalCalendar *calendar); -GtkHeaderBar* gcal_calendar_management_page_get_titlebar (GcalCalendarManagementPage *self); - G_END_DECLS diff --git a/src/gui/calendar-management/gcal-calendars-page.ui b/src/gui/calendar-management/gcal-calendars-page.ui index a7844887..fbb68e74 100644 --- a/src/gui/calendar-management/gcal-calendars-page.ui +++ b/src/gui/calendar-management/gcal-calendars-page.ui @@ -46,46 +46,64 @@ - - True - True - never - 600 - True + - - - 24 - 24 - 24 - 24 - start - none - - + + + True + + + Calendars + + + + + + + + True + True + never + 600 + True - + + 24 + 24 + 24 + 24 + start + none + + - - True - True - 0.5 - 0.5 - Add Calendar… + + + + + True + True + 0.5 + 0.5 + Add Calendar… + + + - + + diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.c b/src/gui/calendar-management/gcal-edit-calendar-page.c index cb8532ea..7d447c7e 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.c +++ b/src/gui/calendar-management/gcal-edit-calendar-page.c @@ -31,7 +31,6 @@ struct _GcalEditCalendarPage GtkBox parent; AdwActionRow *account_row; - GtkWidget *back_button; GtkColorDialogButton *calendar_color_button; AdwSwitchRow *calendar_visible_row; AdwActionRow *calendar_url_row; @@ -225,20 +224,6 @@ 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) @@ -303,28 +288,22 @@ static void gcal_edit_calendar_page_activate (GcalCalendarManagementPage *page, GcalCalendar *calendar) { - GcalEditCalendarPage *self; - GtkHeaderBar *headerbar; + GCAL_ENTRY; - self = GCAL_EDIT_CALENDAR_PAGE (page); - headerbar = gcal_calendar_management_page_get_titlebar (page); - gtk_header_bar_pack_start (headerbar, self->back_button); + setup_calendar (GCAL_EDIT_CALENDAR_PAGE (page), calendar); - setup_calendar (self, calendar); + GCAL_EXIT; } static void gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page) { GcalEditCalendarPage *self; - GtkHeaderBar *headerbar; GcalManager *manager; GCAL_ENTRY; self = GCAL_EDIT_CALENDAR_PAGE (page); - headerbar = gcal_calendar_management_page_get_titlebar (page); - gtk_header_bar_remove (headerbar, self->back_button); update_calendar (self); @@ -415,7 +394,6 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-edit-calendar-page.ui"); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, account_row); - 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_row); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, calendar_visible_row); @@ -423,7 +401,6 @@ 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); } diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.ui b/src/gui/calendar-management/gcal-edit-calendar-page.ui index 93dda3b8..9dc6f5ae 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.ui +++ b/src/gui/calendar-management/gcal-edit-calendar-page.ui @@ -4,124 +4,135 @@ vertical - - - + - + + + False + False + + + + + + + + - - Account - settings_button - + + - - Open in Settings - center - - + + Account + settings_button - - settings-symbolic + + Open in Settings + center + + + + + + + settings-symbolic + + + - - + + + + Location + 1 + + + + - - - - Location - 1 - - - - + + + + Calendar Name + + - - - - Calendar Name - - + + + + Color + calendar_color_button - - - - Color - calendar_color_button + + + center + + + True + False + + + + + + + + + + + + _Display Calendar + true + + - + + Default _Calendar + Add new events to this calendar by default. + true + + + + + + + _Remove Calendar + center center - - - True - False - - + 24 + true + + - - - - _Display Calendar - true - - - - - - Default _Calendar - Add new events to this calendar by default. - true - - - - - - - _Remove Calendar - center - center - 24 - true - - - - - - + + - - - go-previous-symbolic - Back - - diff --git a/src/gui/calendar-management/gcal-new-calendar-page.c b/src/gui/calendar-management/gcal-new-calendar-page.c index 3612195f..f90c4dde 100644 --- a/src/gui/calendar-management/gcal-new-calendar-page.c +++ b/src/gui/calendar-management/gcal-new-calendar-page.c @@ -48,10 +48,9 @@ struct _GcalNewCalendarPage GtkEntry *calendar_address_entry; EntryState calendar_address_entry_state; GcalFileChooserButton *calendar_file_chooser_button; - GtkWidget *cancel_button; GtkWidget *credentials_cancel_button; GtkWidget *credentials_connect_button; - AdwWindow *credentials_dialog; + GtkWindow *credentials_dialog; GtkEntry *credentials_password_entry; GtkEntry *credentials_user_entry; GtkColorDialogButton *local_calendar_color_button; @@ -466,13 +465,6 @@ 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); -} - static void on_local_calendar_name_row_text_changed_cb (AdwEntryRow *entry_row, GParamSpec *pspec, @@ -516,38 +508,14 @@ gcal_new_calendar_page_get_title (GcalCalendarManagementPage *page) return _("New Calendar"); } -static void -gcal_new_calendar_page_activate (GcalCalendarManagementPage *page, - GcalCalendar *calendar) -{ - 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_title_buttons (headerbar, FALSE); - - GCAL_EXIT; -} static void gcal_new_calendar_page_deactivate (GcalCalendarManagementPage *page) { GcalNewCalendarPage *self; - GtkHeaderBar *headerbar; GCAL_ENTRY; self = GCAL_NEW_CALENDAR_PAGE (page); - headerbar = gcal_calendar_management_page_get_titlebar (page); - - gtk_header_bar_remove (headerbar, self->cancel_button); - gtk_header_bar_remove (headerbar, self->add_button); - gtk_header_bar_set_show_title_buttons (headerbar, TRUE); g_clear_object (&self->local_source); g_clear_pointer (&self->remote_sources, g_ptr_array_unref); @@ -566,7 +534,6 @@ 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; } @@ -658,7 +625,6 @@ 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, 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, 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); @@ -671,7 +637,6 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) gtk_widget_class_bind_template_callback (widget_class, on_add_button_clicked_cb); 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_file_chooser_button_file_changed_cb); diff --git a/src/gui/calendar-management/gcal-new-calendar-page.ui b/src/gui/calendar-management/gcal-new-calendar-page.ui index fc7448d4..d13bd4ee 100644 --- a/src/gui/calendar-management/gcal-new-calendar-page.ui +++ b/src/gui/calendar-management/gcal-new-calendar-page.ui @@ -4,166 +4,197 @@ vertical - + - - - + + + False + False - - - - Calendar Name - + + + New Calendar - - - - - - Color - local_calendar_color_button - - - - center - - - True - False - - - - - + + + + Add + False + + - - + + + - - True - Import a Calendar - 0.0 - - - - + + + + + + Calendar Name + + + + + + + + Color + local_calendar_color_button + + + + center + + + True + False + + + + + + + + + - - 12 - 12 + - - Alternatively, enter the web address of an online calendar you want to import, or open a supported calendar file. - True - 0 - - 0 - 0 - 2 - - - - - - - True - https://example.com/calendar.ics - - - - 0 - 1 - - - - - - - - Open a File - - - Calendar files - - *.ical - *.icalendar - *.ics - *.ifb - *.vcs - - - - - - 1 - 1 - + Import a Calendar + 0.0 + + + + - - slide-down - 200 - - 0 - 2 - 2 - + + 12 + 12 + + - - vertical - 6 - - - Calendars - 0 - - - + + Alternatively, enter the web address of an online calendar you want to import, or open a supported calendar file. + True + 0 + + 0 + 0 + 2 + + + + + + + + True + https://example.com/calendar.ics + + + + 0 + 1 + + + + + + + + Open a File + + + Calendar files + + *.ical + *.icalendar + *.ics + *.ifb + *.vcs + - + + + + 1 + 1 + + + + + + + slide-down + 200 + + 0 + 2 + 2 + - - False - none - + + vertical + 6 + + + Calendars + 0 + + + + + + + + False + none + + + - - - - - - If the calendar belongs to one of your online accounts, you can add it through the <a href="GOA">online account settings</a>. - True - True - 0 - - - 0 - 3 - 2 - + + + + If the calendar belongs to one of your online accounts, you can add it through the <a href="GOA">online account settings</a>. + True + True + 0 + + + 0 + 3 + 2 + + + + @@ -171,8 +202,7 @@ - - + @@ -286,17 +316,4 @@ - - - Cancel - - - - Add - False - - -