gui/quick-add-popover: 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:01 +00:00
committed by Marge Bot
parent 9b4c166a18
commit 0e73034ffe
2 changed files with 29 additions and 72 deletions
+29 -71
View File
@@ -39,8 +39,6 @@ struct _GcalQuickAddPopover
GcalRange *range;
GListModel *read_write_calendars_model;
GcalContext *context;
};
G_DEFINE_TYPE (GcalQuickAddPopover, gcal_quick_add_popover, GTK_TYPE_POPOVER)
@@ -48,7 +46,6 @@ G_DEFINE_TYPE (GcalQuickAddPopover, gcal_quick_add_popover, GTK_TYPE_POPOVER)
enum {
PROP_0,
PROP_RANGE,
PROP_CONTEXT,
N_PROPS
};
@@ -95,13 +92,15 @@ create_row_func (gpointer data,
GcalCalendar *default_calendar;
GcalCalendar *calendar = data;
GcalQuickAddPopover *self = user_data;
GcalContext *context;
GcalManager *manager;
g_autoptr (GdkPaintable) paintable = NULL;
g_autofree gchar *parent_name = NULL;
g_autofree gchar *tooltip = NULL;
GtkWidget *first_row, *row, *check_button;
manager = gcal_context_get_manager (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
manager = gcal_context_get_manager (context);
default_calendar = gcal_manager_get_default_calendar (manager);
@@ -142,17 +141,6 @@ bind_model (GcalQuickAddPopover *self)
create_row_func, self, NULL);
}
static void
set_up_context (GcalQuickAddPopover *self)
{
GcalManager *manager;
manager = gcal_context_get_manager (self->context);
self->read_write_calendars_model = gcal_create_writable_calendars_model (manager);
bind_model (self);
}
static gint
get_number_of_days_from_today (GDateTime *day)
{
@@ -372,7 +360,7 @@ update_header (GcalQuickAddPopover *self)
g_autoptr (GDateTime) range_end = NULL;
g_autofree gchar *title_date = NULL;
gboolean multiday_or_timed;
GcalContext *context;
if (!self->range)
return;
@@ -403,7 +391,8 @@ update_header (GcalQuickAddPopover *self)
GcalTimeFormat time_format;
const gchar *hour_format;
time_format = gcal_context_get_time_format (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
time_format = gcal_context_get_time_format (context);
if (time_format == GCAL_TIME_FORMAT_24H)
hour_format = "%R";
@@ -455,6 +444,7 @@ edit_or_create_event (GcalQuickAddPopover *self,
ECalComponent *component;
GcalCalendar *calendar;
GtkListBoxRow *selected_row;
GcalContext *context;
GcalManager *manager;
GDateTime *date_start, *date_end;
GTimeZone *tz;
@@ -465,7 +455,8 @@ edit_or_create_event (GcalQuickAddPopover *self,
range_start = gcal_range_get_start (self->range);
range_end = gcal_range_get_end (self->range);
manager = gcal_context_get_manager (self->context);
context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
manager = gcal_context_get_manager (context);
selected_row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->calendars_list_box));
calendar = gcal_calendar_row_get_calendar (GCAL_CALENDAR_ROW (selected_row));
@@ -554,16 +545,6 @@ summary_entry_activated (AdwEntryRow *entry,
* Overrides
*/
static void
gcal_quick_add_popover_finalize (GObject *object)
{
GcalQuickAddPopover *self = (GcalQuickAddPopover *)object;
g_clear_object (&self->context);
G_OBJECT_CLASS (gcal_quick_add_popover_parent_class)->finalize (object);
}
static void
gcal_quick_add_popover_get_property (GObject *object,
guint prop_id,
@@ -578,10 +559,6 @@ gcal_quick_add_popover_get_property (GObject *object,
g_value_set_object (value, self->range);
break;
case PROP_CONTEXT:
g_value_set_object (value, self->context);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -601,31 +578,6 @@ gcal_quick_add_popover_set_property (GObject *object,
gcal_quick_add_popover_set_range (self, g_value_get_boxed (value));
break;
case PROP_CONTEXT:
{
GcalManager *manager;
g_assert (self->context == NULL);
self->context = g_value_dup_object (value);
manager = gcal_context_get_manager (self->context);
set_up_context (self);
/* Connect to the manager signals and keep the list updates */
g_signal_connect_object (manager,
"notify::default-calendar",
G_CALLBACK (bind_model),
self,
G_CONNECT_SWAPPED);
g_signal_connect_object (self->context,
"notify::time-format",
G_CALLBACK (update_header),
self,
G_CONNECT_SWAPPED);
}
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -658,7 +610,6 @@ gcal_quick_add_popover_class_init (GcalQuickAddPopoverClass *klass)
popover_class->closed = gcal_quick_add_popover_closed;
object_class->finalize = gcal_quick_add_popover_finalize;
object_class->get_property = gcal_quick_add_popover_get_property;
object_class->set_property = gcal_quick_add_popover_set_property;
@@ -690,19 +641,6 @@ gcal_quick_add_popover_class_init (GcalQuickAddPopoverClass *klass)
G_TYPE_DATE_TIME,
G_PARAM_READWRITE));
/**
* GcalQuickAddPopover::context:
*
* The context of the application.
*/
g_object_class_install_property (object_class,
PROP_CONTEXT,
g_param_spec_object ("context",
"Context of the application",
"The singleton context of the application",
GCAL_TYPE_CONTEXT,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/gcal-quick-add-popover.ui");
gtk_widget_class_bind_template_child (widget_class, GcalQuickAddPopover, add_button);
@@ -720,7 +658,27 @@ gcal_quick_add_popover_class_init (GcalQuickAddPopoverClass *klass)
static void
gcal_quick_add_popover_init (GcalQuickAddPopover *self)
{
GcalContext *context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION);
GcalManager *manager = gcal_context_get_manager (context);
gtk_widget_init_template (GTK_WIDGET (self));
self->read_write_calendars_model = gcal_create_writable_calendars_model (manager);
bind_model (self);
/* Connect to the manager signals and keep the list updates */
g_signal_connect_object (manager,
"notify::default-calendar",
G_CALLBACK (bind_model),
self,
G_CONNECT_SWAPPED);
g_signal_connect_object (context,
"notify::time-format",
G_CALLBACK (update_header),
self,
G_CONNECT_SWAPPED);
}
GtkWidget*
-1
View File
@@ -1225,7 +1225,6 @@ gcal_window_constructed (GObject *object)
* FIXME: this is a hack around the issue that happens when trying to bind
* these properties using the GtkBuilder .ui file.
*/
g_object_bind_property (self, "context", self->quick_add_popover, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
g_object_bind_property (self, "context", self->sync_indicator, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
g_object_bind_property (self, "context", self->search_button, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);