event-editor/date-time-chooser: Add "editable" property

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
This commit is contained in:
Hari Rana
2026-06-26 09:48:54 -04:00
parent 59a5f5f7b5
commit f5ce577b36
2 changed files with 26 additions and 0 deletions
@@ -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;
@@ -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");