gui/calendar-management: Replace "context" property with context getter method

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
This commit is contained in:
Hari Rana
2026-03-23 19:30:02 +00:00
committed by Marge Bot
parent 3f486c2ccc
commit 3c9a525710
7 changed files with 57 additions and 290 deletions
@@ -64,8 +64,6 @@ struct _GcalCalendarManagementDialog
/* auxiliary */
GcalCalendarManagementPage *pages[N_PAGES];
GcalContext *context;
};
static void on_page_switched_cb (GcalCalendarManagementPage *page,
@@ -75,15 +73,6 @@ static void on_page_switched_cb (GcalCalendarMa
G_DEFINE_TYPE (GcalCalendarManagementDialog, gcal_calendar_management_dialog, ADW_TYPE_DIALOG)
enum
{
PROP_0,
PROP_CONTEXT,
N_PROPS
};
static GParamSpec *properties[N_PROPS] = { NULL, };
/*
* Auxiliary methods
@@ -109,45 +98,6 @@ set_page (GcalCalendarManagementDialog *self,
adw_navigation_view_push (self->navigation_view, page);
}
static void
setup_context (GcalCalendarManagementDialog *self)
{
const struct {
GcalPageType page_type;
GType gtype;
} pages[] = {
{ GCAL_PAGE_CALENDARS, GCAL_TYPE_CALENDARS_PAGE },
{ GCAL_PAGE_NEW_CALENDAR, GCAL_TYPE_NEW_CALENDAR_PAGE },
{ GCAL_PAGE_EDIT_CALENDAR, GCAL_TYPE_EDIT_CALENDAR_PAGE },
};
gint i;
GCAL_ENTRY;
for (i = 0; i < N_PAGES; i++)
{
GcalCalendarManagementPage *page;
page = g_object_new (pages[i].gtype,
"context", self->context,
NULL);
adw_navigation_view_add (self->navigation_view, ADW_NAVIGATION_PAGE (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;
}
/*
* Callbacks
@@ -196,67 +146,15 @@ gcal_calendar_management_dialog_hide (GtkWidget *widget)
* GObject overrides
*/
static void
gcal_calendar_management_dialog_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
GcalCalendarManagementDialog *self = (GcalCalendarManagementDialog *) object;
switch (prop_id)
{
case PROP_CONTEXT:
g_value_set_object (value, self->context);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_calendar_management_dialog_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
GcalCalendarManagementDialog *self = (GcalCalendarManagementDialog *) object;
switch (prop_id)
{
case PROP_CONTEXT:
g_assert (self->context == NULL);
self->context = g_value_dup_object (value);
setup_context (self);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_ensure (E_TYPE_SOURCE_LOCAL);
object_class->get_property = gcal_calendar_management_dialog_get_property;
object_class->set_property = gcal_calendar_management_dialog_set_property;
widget_class->hide = gcal_calendar_management_dialog_hide;
properties[PROP_CONTEXT] = g_param_spec_object ("context",
"Context",
"The context object of the application",
GCAL_TYPE_CONTEXT,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_properties (object_class, N_PROPS, properties);
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, navigation_view);
@@ -267,7 +165,35 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k
static void
gcal_calendar_management_dialog_init (GcalCalendarManagementDialog *self)
{
const struct {
GcalPageType page_type;
GType gtype;
} pages[] = {
{ GCAL_PAGE_CALENDARS, GCAL_TYPE_CALENDARS_PAGE },
{ GCAL_PAGE_NEW_CALENDAR, GCAL_TYPE_NEW_CALENDAR_PAGE },
{ GCAL_PAGE_EDIT_CALENDAR, GCAL_TYPE_EDIT_CALENDAR_PAGE },
};
gtk_widget_init_template (GTK_WIDGET (self));
for (gint i = 0; i < N_PAGES; i++)
{
GcalCalendarManagementPage *page;
page = g_object_new (pages[i].gtype, NULL);
adw_navigation_view_add (self->navigation_view, ADW_NAVIGATION_PAGE (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);
}
/*
@@ -275,7 +201,7 @@ gcal_calendar_management_dialog_init (GcalCalendarManagementDialog *self)
*/
GcalCalendarManagementDialog*
gcal_calendar_management_dialog_new (GcalContext *context)
gcal_calendar_management_dialog_new (void)
{
return g_object_new (GCAL_TYPE_CALENDAR_MANAGEMENT_DIALOG, "context", context, NULL);
return g_object_new (GCAL_TYPE_CALENDAR_MANAGEMENT_DIALOG, NULL);
}
@@ -36,7 +36,7 @@ G_DECLARE_FINAL_TYPE (GcalCalendarManagementDialog,
GCAL, CALENDAR_MANAGEMENT_DIALOG,
AdwDialog)
GcalCalendarManagementDialog* gcal_calendar_management_dialog_new (GcalContext *context);
GcalCalendarManagementDialog* gcal_calendar_management_dialog_new (void);
G_END_DECLS
@@ -22,7 +22,6 @@
#include "gcal-calendar-management-dialog.h"
#include "gcal-calendar-management-page.h"
#include "gcal-context.h"
G_DEFINE_INTERFACE (GcalCalendarManagementPage, gcal_calendar_management_page, ADW_TYPE_NAVIGATION_PAGE)
@@ -37,13 +36,6 @@ static guint signals[N_SIGNALS] = { 0, };
static void
gcal_calendar_management_page_default_init (GcalCalendarManagementPageInterface *iface)
{
g_object_interface_install_property (iface,
g_param_spec_object ("context",
"Context",
"Context",
GCAL_TYPE_CONTEXT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
signals[SWITCH_PAGE] = g_signal_new ("switch-page",
GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
G_SIGNAL_RUN_LAST,
@@ -37,8 +37,6 @@ struct _GcalCalendarsPage
AdwToastOverlay *toast_overlay;
AdwToast *toast;
GcalContext *context;
};
static void gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *iface);
@@ -51,13 +49,6 @@ G_DEFINE_TYPE_WITH_CODE (GcalCalendarsPage, gcal_calendars_page, ADW_TYPE_NAVIGA
G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
gcal_calendar_management_page_iface_init))
enum
{
PROP_0,
PROP_CONTEXT,
N_PROPS
};
/*
* Auxiliary methods
@@ -382,64 +373,10 @@ gcal_calendars_page_finalize (GObject *object)
GcalCalendarsPage *self = (GcalCalendarsPage *)object;
g_clear_object (&self->toast);
g_clear_object (&self->context);
G_OBJECT_CLASS (gcal_calendars_page_parent_class)->finalize (object);
}
static void
gcal_calendars_page_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
GcalCalendarsPage *self = GCAL_CALENDARS_PAGE (object);
switch (prop_id)
{
case PROP_CONTEXT:
g_value_set_object (value, self->context);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_calendars_page_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
GcalCalendarsPage *self = GCAL_CALENDARS_PAGE (object);
switch (prop_id)
{
case PROP_CONTEXT:
{
g_autoptr (GList) calendars = NULL;
GcalManager *manager;
GList *l;
self->context = g_value_dup_object (value);
g_assert (self->context != NULL);
manager = gcal_context_get_manager (self->context);
g_signal_connect_object (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), self, 0);
g_signal_connect_object (manager, "calendar-removed", G_CALLBACK (on_manager_calendar_removed_cb), self, 0);
calendars = gcal_manager_get_calendars (manager);
for (l = calendars; l; l = l->next)
add_calendar (self, l->data);
}
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_calendars_page_class_init (GcalCalendarsPageClass *klass)
{
@@ -447,10 +384,6 @@ gcal_calendars_page_class_init (GcalCalendarsPageClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = gcal_calendars_page_finalize;
object_class->get_property = gcal_calendars_page_get_property;
object_class->set_property = gcal_calendars_page_set_property;
g_object_class_override_property (object_class, PROP_CONTEXT, "context");
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-calendars-page.ui");
@@ -464,10 +397,22 @@ gcal_calendars_page_class_init (GcalCalendarsPageClass *klass)
static void
gcal_calendars_page_init (GcalCalendarsPage *self)
{
GcalContext *context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
GcalManager *manager = gcal_context_get_manager (context);
g_autoptr (GList) calendars = NULL;
GList *l;
gtk_widget_init_template (GTK_WIDGET (self));
gtk_list_box_set_sort_func (self->listbox,
(GtkListBoxSortFunc) listbox_sort_func,
NULL,
NULL);
g_signal_connect_object (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), self, 0);
g_signal_connect_object (manager, "calendar-removed", G_CALLBACK (on_manager_calendar_removed_cb), self, 0);
calendars = gcal_manager_get_calendars (manager);
for (l = calendars; l; l = l->next)
add_calendar (self, l->data);
}
@@ -40,8 +40,6 @@ struct _GcalEditCalendarPage
GtkWidget *remove_button_row;
GcalCalendar *calendar;
GcalContext *context;
};
static void gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *iface);
@@ -50,13 +48,6 @@ G_DEFINE_TYPE_WITH_CODE (GcalEditCalendarPage, gcal_edit_calendar_page, ADW_TYPE
G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
gcal_calendar_management_page_iface_init))
enum
{
PROP_0,
PROP_CONTEXT,
N_PROPS
};
/*
* Auxiliary methods
@@ -67,12 +58,15 @@ is_goa_calendar (GcalEditCalendarPage *self,
GcalCalendar *calendar)
{
g_autoptr (ESource) parent = NULL;
GcalContext *context;
GcalManager *manager;
ESource *source;
g_assert (calendar && GCAL_IS_CALENDAR (calendar));
manager = gcal_context_get_manager (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
manager = gcal_context_get_manager (context);
source = gcal_calendar_get_source (calendar);
parent = gcal_manager_get_source (manager, e_source_get_parent (source));
@@ -374,13 +368,15 @@ on_settings_button_clicked_cb (GtkWidget *button,
{
g_autoptr (ESource) parent = NULL;
GApplication *app;
GcalContext *context;
GcalManager *manager;
ESourceGoa *goa;
ESource *source;
GCAL_ENTRY;
manager = gcal_context_get_manager (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
manager = gcal_context_get_manager (context);
source = gcal_calendar_get_source (self->calendar);
parent = gcal_manager_get_source (manager, e_source_get_parent (source));
@@ -415,6 +411,7 @@ static void
gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page)
{
GcalEditCalendarPage *self;
GcalContext *context;
GcalManager *manager;
GCAL_ENTRY;
@@ -423,7 +420,8 @@ gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page)
gcal_calendar_set_name (self->calendar, gtk_editable_get_text (GTK_EDITABLE (self->name_entry)));
manager = gcal_context_get_manager (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
manager = gcal_context_get_manager (context);
gcal_manager_save_source (manager, gcal_calendar_get_source (self->calendar));
g_clear_object (&self->calendar);
@@ -460,50 +458,10 @@ gcal_edit_calendar_page_finalize (GObject *object)
GcalEditCalendarPage *self = (GcalEditCalendarPage *)object;
g_clear_object (&self->calendar);
g_clear_object (&self->context);
G_OBJECT_CLASS (gcal_edit_calendar_page_parent_class)->finalize (object);
}
static void
gcal_edit_calendar_page_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
GcalEditCalendarPage *self = GCAL_EDIT_CALENDAR_PAGE (object);
switch (prop_id)
{
case PROP_CONTEXT:
g_value_set_object (value, self->context);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_edit_calendar_page_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
GcalEditCalendarPage *self = GCAL_EDIT_CALENDAR_PAGE (object);
switch (prop_id)
{
case PROP_CONTEXT:
self->context = g_value_dup_object (value);
g_assert (self->context != NULL);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass)
{
@@ -512,10 +470,6 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass)
object_class->dispose = gcal_edit_calendar_page_dispose;
object_class->finalize = gcal_edit_calendar_page_finalize;
object_class->get_property = gcal_edit_calendar_page_get_property;
object_class->set_property = gcal_edit_calendar_page_set_property;
g_object_class_override_property (object_class, PROP_CONTEXT, "context");
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-edit-calendar-page.ui");
@@ -63,8 +63,6 @@ struct _GcalNewCalendarPage
GCancellable *cancellable;
ESource *local_source;
GcalContext *context;
};
static gboolean pulse_web_entry (gpointer data);
@@ -81,12 +79,6 @@ G_DEFINE_TYPE_WITH_CODE (GcalNewCalendarPage, gcal_new_calendar_page, ADW_TYPE_N
G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE,
gcal_calendar_management_page_iface_init))
enum
{
PROP_0,
PROP_CONTEXT,
N_PROPS
};
/*
* Auxiliary methods
@@ -340,9 +332,11 @@ static void
on_add_button_clicked_cb (GtkWidget *button,
GcalNewCalendarPage *self)
{
GcalContext *context;
GcalManager *manager;
manager = gcal_context_get_manager (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
manager = gcal_context_get_manager (context);
/* Commit each new remote source */
if (self->remote_sources)
@@ -524,50 +518,10 @@ gcal_new_calendar_page_finalize (GObject *object)
g_cancellable_cancel (self->cancellable);
g_clear_object (&self->cancellable);
g_clear_object (&self->context);
G_OBJECT_CLASS (gcal_new_calendar_page_parent_class)->finalize (object);
}
static void
gcal_new_calendar_page_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
GcalNewCalendarPage *self = GCAL_NEW_CALENDAR_PAGE (object);
switch (prop_id)
{
case PROP_CONTEXT:
g_value_set_object (value, self->context);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_new_calendar_page_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
GcalNewCalendarPage *self = GCAL_NEW_CALENDAR_PAGE (object);
switch (prop_id)
{
case PROP_CONTEXT:
self->context = g_value_dup_object (value);
g_assert (self->context != NULL);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass)
{
@@ -576,10 +530,6 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass)
object_class->dispose = gcal_new_calendar_page_dispose;
object_class->finalize = gcal_new_calendar_page_finalize;
object_class->get_property = gcal_new_calendar_page_get_property;
object_class->set_property = gcal_new_calendar_page_set_property;
g_object_class_override_property (object_class, PROP_CONTEXT, "context");
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-new-calendar-page.ui");
+1 -1
View File
@@ -538,7 +538,7 @@ on_show_calendars_action_activated (GSimpleAction *action,
gpointer user_data)
{
GcalWindow *self = GCAL_WINDOW (user_data);
GcalCalendarManagementDialog *dialog = gcal_calendar_management_dialog_new (self->context);
GcalCalendarManagementDialog *dialog = gcal_calendar_management_dialog_new ();
adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (self));
}