[gnome-calendar] date-chooser: Add the show-events property



commit 6cb57b0ad574bca334755af984ca8dcacb6aebc4
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Thu Apr 7 11:16:44 2022 +0200

    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 @@
         <property name="margin-end">12</property>
         <child>
           <object class="GcalDateChooser" id="date_chooser">
+            <property name="show_events">False</property>
             <property name="show_selected_week">False</property>
             <property name="show_week_numbers">True</property>
             <signal name="day-selected" handler="calendar_day_selected" object="GcalDateSelector" 
swapped="yes"/>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]