calendar-management: Rework page interface
Make GcalCalendarManagementPage require implementors to be AdwNavigationPages
This commit is contained in:
@@ -94,16 +94,14 @@ set_page (GcalCalendarManagementDialog *self,
|
||||
const gchar *page_name,
|
||||
GcalCalendar *calendar)
|
||||
{
|
||||
GcalCalendarManagementPage *next_page;
|
||||
AdwNavigationPage *page;
|
||||
|
||||
GCAL_TRACE_MSG ("Switching to page '%s'", page_name);
|
||||
|
||||
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));
|
||||
g_assert (GCAL_IS_CALENDAR_MANAGEMENT_PAGE (page));
|
||||
|
||||
gcal_calendar_management_page_activate (next_page, calendar);
|
||||
gcal_calendar_management_page_activate (GCAL_CALENDAR_MANAGEMENT_PAGE (page), calendar);
|
||||
|
||||
adw_navigation_view_pop (self->navigation_view);
|
||||
|
||||
@@ -129,16 +127,12 @@ 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);
|
||||
|
||||
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);
|
||||
adw_navigation_view_add (self->navigation_view, ADW_NAVIGATION_PAGE (page));
|
||||
|
||||
g_signal_connect_object (page,
|
||||
"switch-page",
|
||||
@@ -164,12 +158,9 @@ on_navigation_view_popped_cb (AdwNavigationView *navigation_view,
|
||||
AdwNavigationPage *popped_page,
|
||||
GcalCalendarManagementDialog *self)
|
||||
{
|
||||
GcalCalendarManagementPage *page;
|
||||
g_assert (GCAL_IS_CALENDAR_MANAGEMENT_PAGE (popped_page));
|
||||
|
||||
page = GCAL_CALENDAR_MANAGEMENT_PAGE (adw_navigation_page_get_child (popped_page));
|
||||
g_assert (page != NULL);
|
||||
|
||||
gcal_calendar_management_page_deactivate (page);
|
||||
gcal_calendar_management_page_deactivate (GCAL_CALENDAR_MANAGEMENT_PAGE (popped_page));
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "gcal-calendar-management-page.h"
|
||||
#include "gcal-context.h"
|
||||
|
||||
G_DEFINE_INTERFACE (GcalCalendarManagementPage, gcal_calendar_management_page, G_TYPE_OBJECT)
|
||||
G_DEFINE_INTERFACE (GcalCalendarManagementPage, gcal_calendar_management_page, ADW_TYPE_NAVIGATION_PAGE)
|
||||
|
||||
enum
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ G_BEGIN_DECLS
|
||||
|
||||
#define GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE (gcal_calendar_management_page_get_type ())
|
||||
|
||||
G_DECLARE_INTERFACE (GcalCalendarManagementPage, gcal_calendar_management_page, GCAL, CALENDAR_MANAGEMENT_PAGE, GtkWidget)
|
||||
G_DECLARE_INTERFACE (GcalCalendarManagementPage, gcal_calendar_management_page, GCAL, CALENDAR_MANAGEMENT_PAGE, AdwNavigationPage)
|
||||
|
||||
struct _GcalCalendarManagementPageInterface
|
||||
{
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
struct _GcalCalendarsPage
|
||||
{
|
||||
AdwBin parent;
|
||||
AdwNavigationPage parent;
|
||||
|
||||
GtkListBox *listbox;
|
||||
AdwToastOverlay *toast_overlay;
|
||||
@@ -47,7 +47,7 @@ static void on_calendar_color_changed_cb (GcalCalendar
|
||||
GParamSpec *pspec,
|
||||
GtkImage *icon);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalCalendarsPage, gcal_calendars_page, ADW_TYPE_BIN,
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalCalendarsPage, gcal_calendars_page, ADW_TYPE_NAVIGATION_PAGE,
|
||||
G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
|
||||
gcal_calendar_management_page_iface_init))
|
||||
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GCAL_TYPE_CALENDARS_PAGE (gcal_calendars_page_get_type())
|
||||
G_DECLARE_FINAL_TYPE (GcalCalendarsPage, gcal_calendars_page, GCAL, CALENDARS_PAGE, AdwBin)
|
||||
G_DECLARE_FINAL_TYPE (GcalCalendarsPage, gcal_calendars_page, GCAL, CALENDARS_PAGE, AdwNavigationPage)
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class="GcalCalendarsPage" parent="AdwBin">
|
||||
<child>
|
||||
<template class="GcalCalendarsPage" parent="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">Calendars</property>
|
||||
<property name="tag">calendars</property>
|
||||
|
||||
<property name="child">
|
||||
<object class="AdwToastOverlay" id="toast_overlay">
|
||||
|
||||
<child>
|
||||
@@ -80,6 +83,6 @@
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
struct _GcalEditCalendarPage
|
||||
{
|
||||
AdwBin parent;
|
||||
AdwNavigationPage parent;
|
||||
|
||||
AdwActionRow *account_row;
|
||||
GtkColorDialogButton *calendar_color_button;
|
||||
@@ -45,7 +45,7 @@ struct _GcalEditCalendarPage
|
||||
|
||||
static void gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalEditCalendarPage, gcal_edit_calendar_page, ADW_TYPE_BIN,
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalEditCalendarPage, gcal_edit_calendar_page, ADW_TYPE_NAVIGATION_PAGE,
|
||||
G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
|
||||
gcal_calendar_management_page_iface_init))
|
||||
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GCAL_TYPE_EDIT_CALENDAR_PAGE (gcal_edit_calendar_page_get_type())
|
||||
G_DECLARE_FINAL_TYPE (GcalEditCalendarPage, gcal_edit_calendar_page, GCAL, EDIT_CALENDAR_PAGE, AdwBin)
|
||||
G_DECLARE_FINAL_TYPE (GcalEditCalendarPage, gcal_edit_calendar_page, GCAL, EDIT_CALENDAR_PAGE, AdwNavigationPage)
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class="GcalEditCalendarPage" parent="AdwBin">
|
||||
<child>
|
||||
<template class="GcalEditCalendarPage" parent="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">Edit Calendar</property>
|
||||
<property name="tag">edit-calendar</property>
|
||||
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
|
||||
<child type="top">
|
||||
@@ -133,7 +136,7 @@
|
||||
</property>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</property>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ typedef enum
|
||||
|
||||
struct _GcalNewCalendarPage
|
||||
{
|
||||
AdwBin parent;
|
||||
AdwNavigationPage parent;
|
||||
|
||||
GtkWidget *add_button;
|
||||
GtkEntry *calendar_address_entry;
|
||||
@@ -77,7 +77,7 @@ static void sources_discovered_cb (GObject
|
||||
|
||||
static void gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalNewCalendarPage, gcal_new_calendar_page, ADW_TYPE_BIN,
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalNewCalendarPage, gcal_new_calendar_page, ADW_TYPE_NAVIGATION_PAGE,
|
||||
G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
|
||||
gcal_calendar_management_page_iface_init))
|
||||
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GCAL_TYPE_NEW_CALENDAR_PAGE (gcal_new_calendar_page_get_type())
|
||||
G_DECLARE_FINAL_TYPE (GcalNewCalendarPage, gcal_new_calendar_page, GCAL, NEW_CALENDAR_PAGE, AdwBin)
|
||||
G_DECLARE_FINAL_TYPE (GcalNewCalendarPage, gcal_new_calendar_page, GCAL, NEW_CALENDAR_PAGE, AdwNavigationPage)
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class="GcalNewCalendarPage" parent="AdwBin">
|
||||
<child>
|
||||
<template class="GcalNewCalendarPage" parent="AdwNavigationPage">
|
||||
<property name="title" translatable="yes">New Calendar</property>
|
||||
<property name="tag">new-calendar</property>
|
||||
|
||||
<property name="child">
|
||||
<object class="AdwToolbarView">
|
||||
|
||||
<child type="top">
|
||||
@@ -204,7 +207,7 @@
|
||||
</property>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
</property>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user