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
-
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
+ 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
-
-
-
+
-
+
+
+
+
+
+
-
- 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
-
+
-
-
-
+
+
-
-
-
-
- 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
-
-
-