From f5ce577b362cfbc0705b921fbacfe7eb8df0813c Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Thu, 4 Jun 2026 11:12:00 -0400 Subject: [PATCH] event-editor/date-time-chooser: Add "editable" property Part-of: --- .../event-editor/gcal-date-time-chooser.blp | 3 +++ src/gui/event-editor/gcal-date-time-chooser.c | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/gui/event-editor/gcal-date-time-chooser.blp b/src/gui/event-editor/gcal-date-time-chooser.blp index 218c8dd3..e18d0153 100644 --- a/src/gui/event-editor/gcal-date-time-chooser.blp +++ b/src/gui/event-editor/gcal-date-time-chooser.blp @@ -5,10 +5,12 @@ template $GcalDateTimeChooser: Adw.PreferencesGroup { $GcalDateChooserRow date_row { title: _("Date"); notify::date => $on_date_changed_cb(template); + editable: bind template.editable; } Adw.EntryRow time_row { title: _("Time"); + editable: bind template.editable; EventControllerFocus { notify::contains-focus => $on_time_row_contains_focus_changed_cb(template) not-swapped; @@ -18,6 +20,7 @@ template $GcalDateTimeChooser: Adw.PreferencesGroup { icon-name: "clock-alt-symbolic"; valign: center; tooltip-text: _("Edit Time"); + sensitive: bind template.editable; popover: Popover time_popover { position: bottom; diff --git a/src/gui/event-editor/gcal-date-time-chooser.c b/src/gui/event-editor/gcal-date-time-chooser.c index 344cb544..9b68d9de 100644 --- a/src/gui/event-editor/gcal-date-time-chooser.c +++ b/src/gui/event-editor/gcal-date-time-chooser.c @@ -41,6 +41,8 @@ struct _GcalDateTimeChooser GDateTime *date_time; GcalTimeFormat time_format; + + gboolean editable; }; G_DEFINE_TYPE (GcalDateTimeChooser, gcal_date_time_chooser, ADW_TYPE_PREFERENCES_GROUP); @@ -51,6 +53,7 @@ enum PROP_DATE_TIME, PROP_DATE_LABEL, PROP_TIME_LABEL, + PROP_EDITABLE, N_PROPS }; @@ -526,6 +529,10 @@ gcal_date_time_chooser_get_property (GObject *object, g_value_set_string (value, gcal_date_time_chooser_get_time_label (self)); break; + case PROP_EDITABLE: + g_value_set_boolean (value, self->editable); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -553,6 +560,10 @@ gcal_date_time_chooser_set_property (GObject *object, gcal_date_time_chooser_set_time_label (self, g_value_get_string (value)); break; + case PROP_EDITABLE: + self->editable = g_value_get_boolean (value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -603,6 +614,18 @@ gcal_date_time_chooser_class_init (GcalDateTimeChooserClass *klass) "", G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + /** + * GcalDateTimeChooser:editable: + * + * Whether the chooser is editable. + * + * This property is only meant to be bound with, for example, [method@GObject.Object.bind_property]. + */ + properties[PROP_EDITABLE] = + g_param_spec_boolean ("editable", NULL, NULL, + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (object_class, N_PROPS, properties); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/event-editor/gcal-date-time-chooser.ui");