From 6cb57b0ad574bca334755af984ca8dcacb6aebc4 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Thu, 7 Apr 2022 11:16:44 +0200 Subject: [PATCH] date-chooser: Add the show-events property This allows showing events from the timeline via a dot. --- src/gui/event-editor/gcal-date-chooser.c | 43 ++++++++++++++++++++++ src/gui/event-editor/gcal-date-chooser.h | 5 +++ src/gui/event-editor/gcal-date-selector.ui | 1 + 3 files changed, 49 insertions(+) diff --git a/src/gui/event-editor/gcal-date-chooser.c b/src/gui/event-editor/gcal-date-chooser.c index b55277e3..f9f09ce2 100644 --- a/src/gui/event-editor/gcal-date-chooser.c +++ b/src/gui/event-editor/gcal-date-chooser.c @@ -57,6 +57,7 @@ struct _GcalDateChooser gboolean show_day_names; gboolean show_week_numbers; gboolean show_selected_week; + gboolean show_events; GcalRangeTree *events; @@ -84,6 +85,7 @@ enum PROP_SHOW_DAY_NAMES, PROP_SHOW_WEEK_NUMBERS, PROP_SHOW_SELECTED_WEEK, + PROP_SHOW_EVENTS, NUM_PROPERTIES }; @@ -477,6 +479,10 @@ calendar_set_property (GObject *obj, gcal_date_chooser_set_show_selected_week (self, g_value_get_boolean (value)); break; + case PROP_SHOW_EVENTS: + gcal_date_chooser_set_show_events (self, g_value_get_boolean (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec); break; @@ -513,6 +519,10 @@ calendar_get_property (GObject *obj, g_value_set_boolean (value, self->show_selected_week); break; + case PROP_SHOW_EVENTS: + g_value_set_boolean (value, self->show_events); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec); break; @@ -637,6 +647,12 @@ gcal_date_chooser_class_init (GcalDateChooserClass *class) TRUE, G_PARAM_READWRITE); + properties[PROP_SHOW_EVENTS] = g_param_spec_boolean ("show-events", + "Show Events", + "If TRUE, events are displayed", + TRUE, + G_PARAM_READWRITE); + g_object_class_install_properties (object_class, NUM_PROPERTIES, properties); signals[DAY_SELECTED] = g_signal_new ("day-selected", @@ -694,6 +710,7 @@ gcal_date_chooser_init (GcalDateChooser *self) self->show_day_names = TRUE; self->show_week_numbers = TRUE; self->show_selected_week = TRUE; + self->show_events = TRUE; self->date = g_date_time_new_now_local (); g_date_time_get_ymd (self->date, &self->this_year, NULL, NULL); @@ -793,6 +810,12 @@ gcal_date_chooser_init (GcalDateChooser *self) { self->days[row][col] = gcal_date_chooser_day_new (); + g_object_bind_property (self, + "show-events", + self->days[row][col], + "has-dot", + G_BINDING_SYNC_CREATE); + g_signal_connect_object (self->days[row][col], "clicked", G_CALLBACK (day_selected_cb), @@ -915,6 +938,26 @@ gcal_date_chooser_get_show_selected_week (GcalDateChooser *self) return self->show_selected_week; } +void +gcal_date_chooser_set_show_events (GcalDateChooser *self, + gboolean setting) +{ + if (self->show_events == setting) + return; + + self->show_events = setting; + + calendar_update_selected_day_display (self); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_EVENTS]); +} + +gboolean +gcal_date_chooser_get_show_events (GcalDateChooser *self) +{ + return self->show_events; +} + void gcal_date_chooser_set_date (GcalDateChooser *self, GDateTime *date) diff --git a/src/gui/event-editor/gcal-date-chooser.h b/src/gui/event-editor/gcal-date-chooser.h index a33e2576..c6f42fda 100644 --- a/src/gui/event-editor/gcal-date-chooser.h +++ b/src/gui/event-editor/gcal-date-chooser.h @@ -53,6 +53,11 @@ gboolean gcal_date_chooser_get_show_selected_week (GcalDateChoose void gcal_date_chooser_set_show_selected_week (GcalDateChooser *self, gboolean setting); +gboolean gcal_date_chooser_get_show_events (GcalDateChooser *self); + +void gcal_date_chooser_set_show_events (GcalDateChooser *self, + gboolean setting); + G_END_DECLS #endif /* __GCAL_DATE_CHOOSER_H__ */ diff --git a/src/gui/event-editor/gcal-date-selector.ui b/src/gui/event-editor/gcal-date-selector.ui index 864ed74a..250cfd2c 100644 --- a/src/gui/event-editor/gcal-date-selector.ui +++ b/src/gui/event-editor/gcal-date-selector.ui @@ -22,6 +22,7 @@ 12 + False False True