[gnome-calendar] calendar-management-dialog: Response to page switch
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] calendar-management-dialog: Response to page switch
- Date: Tue, 25 Jun 2019 00:33:55 +0000 (UTC)
commit 375b9fc53c643af13f742eb2d643bad4a3aadda6
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sun Jun 2 15:39:21 2019 -0300
calendar-management-dialog: Response to page switch
.../gcal-calendar-management-dialog.c | 54 +++++++++++++++++++++-
1 file changed, 52 insertions(+), 2 deletions(-)
---
diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.c
b/src/gui/calendar-management/gcal-calendar-management-dialog.c
index 37521d36..5dd37a2d 100644
--- a/src/gui/calendar-management/gcal-calendar-management-dialog.c
+++ b/src/gui/calendar-management/gcal-calendar-management-dialog.c
@@ -1336,10 +1336,52 @@ remove_button_clicked (GtkWidget *button,
}
#endif
+static void
+set_page (GcalCalendarManagementDialog *self,
+ const gchar *page_name,
+ gpointer page_data)
+{
+ GcalCalendarManagementPage *current_page;
+ guint i;
+
+ GCAL_TRACE_MSG ("Switching to page '%s'", page_name);
+
+ current_page = (GcalCalendarManagementPage*) gtk_stack_get_visible_child (GTK_STACK (self->stack));
+
+ for (i = 0; i < N_PAGES; i++)
+ {
+ GcalCalendarManagementPage *page = self->pages[i];
+
+ if (g_strcmp0 (page_name, gcal_calendar_management_page_get_name (page)) != 0)
+ continue;
+
+ gtk_stack_set_visible_child (GTK_STACK (self->stack), GTK_WIDGET (page));
+ gtk_header_bar_set_title (GTK_HEADER_BAR (self->headerbar),
+ gcal_calendar_management_page_get_title (page));
+ gcal_calendar_management_page_activate (page, page_data);
+ break;
+ }
+
+ gcal_calendar_management_page_deactivate (current_page);
+}
+
/*
* Callbacks
*/
+static void
+on_page_switched_cb (GcalCalendarManagementPage *page,
+ const gchar *next_page,
+ gpointer page_data,
+ GcalCalendarManagementDialog *self)
+{
+ GCAL_ENTRY;
+
+ set_page (self, next_page, page_data);
+
+ GCAL_EXIT;
+}
+
static void
setup_context (GcalCalendarManagementDialog *self)
{
@@ -1353,7 +1395,7 @@ setup_context (GcalCalendarManagementDialog *self)
GCAL_ENTRY;
- for (i = 0; i < G_N_ELEMENTS (pages); i++)
+ for (i = 0; i < N_PAGES; i++)
{
GcalCalendarManagementPage *page;
@@ -1367,9 +1409,17 @@ setup_context (GcalCalendarManagementDialog *self)
gcal_calendar_management_page_get_name (page),
gcal_calendar_management_page_get_title (page));
- self->pages[pages[i].page_type] = page;
+ g_signal_connect_object (page,
+ "switch-page",
+ G_CALLBACK (on_page_switched_cb),
+ self,
+ 0);
+
+ self->pages[i] = page;
}
+ set_page (self, "calendars", NULL);
+
GCAL_EXIT;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]