[gnome-calendar/gbsneto/range: 9/12] timeline-subscriber: Use GcalRange



commit 8ab90009fb217a2ab34723b2ebe771522faaa574
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Mon Apr 13 19:42:54 2020 -0300

    timeline-subscriber: Use GcalRange
    
    Much more semantic!

 src/core/gcal-shell-search-provider.c | 17 +++------
 src/core/gcal-timeline-subscriber.c   | 28 ++++-----------
 src/core/gcal-timeline-subscriber.h   |  8 ++---
 src/core/gcal-timeline.c              | 68 ++++++++++-------------------------
 src/search/gcal-search-model.c        | 19 +++-------
 src/views/gcal-month-view.c           | 28 +++++++--------
 src/views/gcal-week-view.c            | 18 +++-------
 src/views/gcal-year-view.c            | 25 ++++++-------
 8 files changed, 64 insertions(+), 147 deletions(-)
---
diff --git a/src/core/gcal-shell-search-provider.c b/src/core/gcal-shell-search-provider.c
index a9391f00..f93c1c46 100644
--- a/src/core/gcal-shell-search-provider.c
+++ b/src/core/gcal-shell-search-provider.c
@@ -384,20 +384,12 @@ on_manager_calendar_removed_cb (GcalManager             *manager,
  * GcalTimelineSubscriber iface
  */
 
-static GDateTime*
-gcal_shell_search_provider_get_range_start (GcalTimelineSubscriber *subscriber)
+static GcalRange*
+gcal_shell_search_provider_get_range (GcalTimelineSubscriber *subscriber)
 {
   GcalShellSearchProvider *self = GCAL_SHELL_SEARCH_PROVIDER (subscriber);
 
-  return g_date_time_ref (self->range_start);
-}
-
-static GDateTime*
-gcal_shell_search_provider_get_range_end (GcalTimelineSubscriber *subscriber)
-{
-  GcalShellSearchProvider *self = GCAL_SHELL_SEARCH_PROVIDER (subscriber);
-
-  return g_date_time_ref (self->range_end);
+  return gcal_range_new (self->range_start, self->range_end);
 }
 
 static void
@@ -437,8 +429,7 @@ gcal_shell_search_provider_remove_event (GcalTimelineSubscriber *subscriber,
 static void
 gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
 {
-  iface->get_range_start = gcal_shell_search_provider_get_range_start;
-  iface->get_range_end = gcal_shell_search_provider_get_range_end;
+  iface->get_range = gcal_shell_search_provider_get_range;
   iface->add_event = gcal_shell_search_provider_add_event;
   iface->update_event = gcal_shell_search_provider_update_event;
   iface->remove_event = gcal_shell_search_provider_remove_event;
diff --git a/src/core/gcal-timeline-subscriber.c b/src/core/gcal-timeline-subscriber.c
index 5a907ab4..f4f979e2 100644
--- a/src/core/gcal-timeline-subscriber.c
+++ b/src/core/gcal-timeline-subscriber.c
@@ -48,35 +48,19 @@ gcal_timeline_subscriber_default_init (GcalTimelineSubscriberInterface *iface)
 }
 
 /**
- * gcal_timeline_subscriber_get_range_start:
+ * gcal_timeline_subscriber_get_range:
  * @self: a #GcalTimelineSubscriber
  *
- * Retrieves the start of the range of @self.
+ * Retrieves the range of @self.
  *
- * Returns: (transfer full): a #GDateTime
+ * Returns: (transfer full): a #GcalRange
  */
-GDateTime*
-gcal_timeline_subscriber_get_range_start (GcalTimelineSubscriber *self)
+GcalRange*
+gcal_timeline_subscriber_get_range (GcalTimelineSubscriber *self)
 {
   g_return_val_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (self), NULL);
 
-  return GCAL_TIMELINE_SUBSCRIBER_GET_IFACE (self)->get_range_start (self);
-}
-
-/**
- * gcal_timeline_subscriber_get_range_end:
- * @self: a #GcalTimelineSubscriber
- *
- * Retrieves the end of the range of @self.
- *
- * Returns: (transfer full): a #GDateTime
- */
-GDateTime*
-gcal_timeline_subscriber_get_range_end (GcalTimelineSubscriber *self)
-{
-  g_return_val_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (self), NULL);
-
-  return GCAL_TIMELINE_SUBSCRIBER_GET_IFACE (self)->get_range_end (self);
+  return GCAL_TIMELINE_SUBSCRIBER_GET_IFACE (self)->get_range (self);
 }
 
 /**
diff --git a/src/core/gcal-timeline-subscriber.h b/src/core/gcal-timeline-subscriber.h
index f916953e..2ad5966c 100644
--- a/src/core/gcal-timeline-subscriber.h
+++ b/src/core/gcal-timeline-subscriber.h
@@ -25,6 +25,7 @@
 #define LIBICAL_GLIB_UNSTABLE_API
 #include <libical-glib/libical-glib.h>
 
+#include "gcal-range.h"
 #include "gcal-types.h"
 
 G_BEGIN_DECLS
@@ -37,8 +38,7 @@ struct _GcalTimelineSubscriberInterface
 {
   GTypeInterface parent;
 
-  GDateTime*         (*get_range_start)                          (GcalTimelineSubscriber *self);
-  GDateTime*         (*get_range_end)                            (GcalTimelineSubscriber *self);
+  GcalRange*         (*get_range)                                (GcalTimelineSubscriber *self);
 
   void               (*add_event)                                (GcalTimelineSubscriber *self,
                                                                   GcalEvent              *event);
@@ -50,9 +50,7 @@ struct _GcalTimelineSubscriberInterface
                                                                   GcalEvent              *event);
 };
 
-GDateTime*           gcal_timeline_subscriber_get_range_start      (GcalTimelineSubscriber  *self);
-
-GDateTime*           gcal_timeline_subscriber_get_range_end        (GcalTimelineSubscriber  *self);
+GcalRange*           gcal_timeline_subscriber_get_range            (GcalTimelineSubscriber  *self);
 
 void                 gcal_timeline_subscriber_range_changed        (GcalTimelineSubscriber *self);
 
diff --git a/src/core/gcal-timeline.c b/src/core/gcal-timeline.c
index bb321f85..6e10efc4 100644
--- a/src/core/gcal-timeline.c
+++ b/src/core/gcal-timeline.c
@@ -57,12 +57,6 @@ typedef struct
   GcalTimeline       *timeline;
 } TimelineSource;
 
-typedef struct
-{
-  GDateTime          *range_start;
-  GDateTime          *range_end;
-} SubscriberData;
-
 struct _GcalTimeline
 {
   GObject             parent_instance;
@@ -163,26 +157,6 @@ increase_completed_calendars (GcalTimeline *self)
     g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COMPLETE]);
 }
 
-static SubscriberData*
-subscriber_data_new (GcalTimelineSubscriber *subscriber)
-{
-  SubscriberData *subscriber_data;
-
-  subscriber_data = g_new0 (SubscriberData, 1);
-  subscriber_data->range_start = gcal_timeline_subscriber_get_range_start (subscriber);
-  subscriber_data->range_end = gcal_timeline_subscriber_get_range_end (subscriber);
-
-  return g_steal_pointer (&subscriber_data);
-}
-
-static void
-subscriber_data_free (SubscriberData *subscriber_data)
-{
-  gcal_clear_date_time (&subscriber_data->range_start);
-  gcal_clear_date_time (&subscriber_data->range_end);
-  g_free (subscriber_data);
-}
-
 static void
 add_event_to_subscriber (GcalTimelineSubscriber *subscriber,
                          GcalEvent              *event)
@@ -223,9 +197,11 @@ subscriber_contains_event (GcalTimelineSubscriber *subscriber,
 {
   g_autoptr (GDateTime) subscriber_range_start = NULL;
   g_autoptr (GDateTime) subscriber_range_end = NULL;
+  g_autoptr (GcalRange) subscriber_range = NULL;
 
-  subscriber_range_start = gcal_timeline_subscriber_get_range_start (subscriber);
-  subscriber_range_end = gcal_timeline_subscriber_get_range_end (subscriber);
+  subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
+  subscriber_range_start = gcal_range_get_start (subscriber_range);
+  subscriber_range_end = gcal_range_get_end (subscriber_range);
 
   return gcal_event_is_within_range (event, subscriber_range_start, subscriber_range_end);
 }
@@ -250,11 +226,13 @@ update_range (GcalTimeline *self)
       g_hash_table_iter_init (&iter, self->subscribers);
       while (g_hash_table_iter_next (&iter, (gpointer*) &subscriber, NULL))
         {
+          g_autoptr (GcalRange) subscriber_range = NULL;
           g_autoptr (GDateTime) subscriber_start = NULL;
           g_autoptr (GDateTime) subscriber_end = NULL;
 
-          subscriber_start = gcal_timeline_subscriber_get_range_start (subscriber);
-          subscriber_end = gcal_timeline_subscriber_get_range_end (subscriber);
+          subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
+          subscriber_start = gcal_range_get_start (subscriber_range);
+          subscriber_end = gcal_range_get_end (subscriber_range);
 
           if (!new_range_start || g_date_time_compare (subscriber_start, new_range_start) < 0)
             {
@@ -427,9 +405,9 @@ add_cached_events_to_subscriber (GcalTimeline           *self,
 
   GCAL_ENTRY;
 
-  subscriber_start = gcal_timeline_subscriber_get_range_start (subscriber);
-  subscriber_end = gcal_timeline_subscriber_get_range_end (subscriber);
-  subscriber_range = gcal_range_new (subscriber_start, subscriber_end);
+  subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
+  subscriber_start = gcal_range_get_start (subscriber_range);
+  subscriber_end = gcal_range_get_end (subscriber_range);
 
   events_to_add = gcal_range_tree_get_data_at_range (self->events, subscriber_range);
 
@@ -460,17 +438,13 @@ update_subscriber_range (GcalTimeline           *self,
 {
   g_autoptr (GcalRange) old_range = NULL;
   g_autoptr (GcalRange) new_range = NULL;
-  SubscriberData *subscriber_data;
-
 
   GCAL_ENTRY;
 
-  subscriber_data = g_hash_table_lookup (self->subscribers, subscriber);
-  g_assert (subscriber_data != NULL);
+  old_range = g_hash_table_lookup (self->subscribers, subscriber);
+  g_assert (old_range != NULL);
 
-  old_range = gcal_range_new (subscriber_data->range_start, subscriber_data->range_end);
-  new_range = gcal_range_new_take (gcal_timeline_subscriber_get_range_start (subscriber),
-                                   gcal_timeline_subscriber_get_range_end (subscriber));
+  new_range = gcal_timeline_subscriber_get_range (subscriber);
 
   /* Diff new and old event ranges */
   calculate_changed_events (self, subscriber, old_range, new_range);
@@ -479,11 +453,7 @@ update_subscriber_range (GcalTimeline           *self,
   gcal_range_tree_remove_data (self->subscriber_ranges, subscriber);
   gcal_range_tree_add_range (self->subscriber_ranges, new_range, subscriber);
 
-  gcal_clear_date_time (&subscriber_data->range_start);
-  subscriber_data->range_start = gcal_range_get_start (new_range);
-
-  gcal_clear_date_time (&subscriber_data->range_end);
-  subscriber_data->range_end = gcal_range_get_end (new_range);
+  g_hash_table_insert (self->subscribers, g_object_ref (subscriber), g_steal_pointer (&new_range));
 
   GCAL_EXIT;
 }
@@ -860,7 +830,7 @@ gcal_timeline_init (GcalTimeline *self)
   self->cancellable = g_cancellable_new ();
   self->events = gcal_range_tree_new_with_free_func (g_object_unref);
   self->calendars = g_hash_table_new_full (NULL, NULL, NULL, g_object_unref);
-  self->subscribers = g_hash_table_new_full (NULL, NULL, g_object_unref, (GDestroyNotify) 
subscriber_data_free);
+  self->subscribers = g_hash_table_new_full (NULL, NULL, g_object_unref, (GDestroyNotify) gcal_range_unref);
   self->subscriber_ranges = gcal_range_tree_new ();
   self->event_queue = g_queue_new ();
 
@@ -951,7 +921,7 @@ void
 gcal_timeline_add_subscriber (GcalTimeline           *self,
                               GcalTimelineSubscriber *subscriber)
 {
-  SubscriberData *subscriber_data;
+  g_autoptr (GcalRange) subscriber_range = NULL;
 
   g_return_if_fail (GCAL_IS_TIMELINE (self));
   g_return_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (subscriber));
@@ -963,9 +933,9 @@ gcal_timeline_add_subscriber (GcalTimeline           *self,
 
   g_debug ("Adding subscriber %s to timeline %p", G_OBJECT_TYPE_NAME (subscriber), self);
 
-  subscriber_data = subscriber_data_new (subscriber);
+  subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
 
-  g_hash_table_insert (self->subscribers, g_object_ref (subscriber), g_steal_pointer (&subscriber_data));
+  g_hash_table_insert (self->subscribers, g_object_ref (subscriber), gcal_range_ref (subscriber_range));
   g_signal_connect_object (subscriber,
                            "range-changed",
                            G_CALLBACK (on_subscriber_range_changed_cb),
diff --git a/src/search/gcal-search-model.c b/src/search/gcal-search-model.c
index bf4f0932..d302607b 100644
--- a/src/search/gcal-search-model.c
+++ b/src/search/gcal-search-model.c
@@ -1,6 +1,6 @@
 /* gcal-search-model.c
  *
- * Copyright 2019 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright 2019-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -96,20 +96,12 @@ compare_search_hits_cb (gconstpointer a,
   return gcal_search_hit_compare (hit_a, hit_b);
 }
 
-static GDateTime*
-gcal_search_model_get_range_start (GcalTimelineSubscriber *subscriber)
+static GcalRange*
+gcal_search_model_get_range (GcalTimelineSubscriber *subscriber)
 {
   GcalSearchModel *self = GCAL_SEARCH_MODEL (subscriber);
 
-  return g_date_time_ref (self->range_start);
-}
-
-static GDateTime*
-gcal_search_model_get_range_end (GcalTimelineSubscriber *subscriber)
-{
-  GcalSearchModel *self = GCAL_SEARCH_MODEL (subscriber);
-
-  return g_date_time_ref (self->range_end);
+  return gcal_range_new (self->range_start, self->range_end);
 }
 
 static void
@@ -149,8 +141,7 @@ gcal_search_model_remove_event (GcalTimelineSubscriber *subscriber,
 static void
 gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
 {
-  iface->get_range_start = gcal_search_model_get_range_start;
-  iface->get_range_end = gcal_search_model_get_range_end;
+  iface->get_range = gcal_search_model_get_range;
   iface->add_event = gcal_search_model_add_event;
   iface->update_event = gcal_search_model_update_event;
   iface->remove_event = gcal_search_model_remove_event;
diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c
index c231a291..17d683e4 100644
--- a/src/views/gcal-month-view.c
+++ b/src/views/gcal-month-view.c
@@ -1263,23 +1263,20 @@ gtk_buildable_interface_init (GtkBuildableIface *iface)
  * GcalTimelineSubscriber iface
  */
 
-static GDateTime*
-gcal_month_view_get_range_start (GcalTimelineSubscriber *subscriber)
-{
-  GcalMonthView *self = GCAL_MONTH_VIEW (subscriber);
-
-  return g_date_time_new_local (g_date_time_get_year (self->date),
-                                g_date_time_get_month (self->date),
-                                1, 0, 0, 0);
-}
-
-static GDateTime*
-gcal_month_view_get_range_end (GcalTimelineSubscriber *subscriber)
+static GcalRange*
+gcal_month_view_get_range (GcalTimelineSubscriber *subscriber)
 {
   g_autoptr (GDateTime) month_start = NULL;
+  g_autoptr (GDateTime) month_end = NULL;
+  GcalMonthView *self;
+
+  self = GCAL_MONTH_VIEW (subscriber);
+  month_start = g_date_time_new_local (g_date_time_get_year (self->date),
+                                       g_date_time_get_month (self->date),
+                                       1, 0, 0, 0);
+  month_end = g_date_time_add_months (month_start, 1);
 
-  month_start = gcal_month_view_get_range_start (subscriber);
-  return g_date_time_add_months (month_start, 1);
+  return gcal_range_new (month_start, month_end);
 }
 
 static void
@@ -1371,8 +1368,7 @@ gcal_month_view_remove_event (GcalTimelineSubscriber *subscriber,
 static void
 gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
 {
-  iface->get_range_start = gcal_month_view_get_range_start;
-  iface->get_range_end = gcal_month_view_get_range_end;
+  iface->get_range = gcal_month_view_get_range;
   iface->add_event = gcal_month_view_add_event;
   iface->update_event = gcal_month_view_update_event;
   iface->remove_event = gcal_month_view_remove_event;
diff --git a/src/views/gcal-week-view.c b/src/views/gcal-week-view.c
index 87067cb3..8e77ef5c 100644
--- a/src/views/gcal-week-view.c
+++ b/src/views/gcal-week-view.c
@@ -318,20 +318,13 @@ update_hours_sidebar_size (GcalWeekView *self)
  * GcalTimelineSubscriber iface
  */
 
-static GDateTime*
-gcal_week_view_get_range_start (GcalTimelineSubscriber *subscriber)
-{
-  GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
-
-  return gcal_date_time_get_start_of_week (self->date);
-}
-
-static GDateTime*
-gcal_week_view_get_range_end (GcalTimelineSubscriber *subscriber)
+static GcalRange*
+gcal_week_view_get_range (GcalTimelineSubscriber *subscriber)
 {
   GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
 
-  return gcal_date_time_get_end_of_week (self->date);
+  return gcal_range_new_take (gcal_date_time_get_start_of_week (self->date),
+                              gcal_date_time_get_end_of_week (self->date));
 }
 
 static void
@@ -386,8 +379,7 @@ gcal_week_view_remove_event (GcalTimelineSubscriber *subscriber,
 static void
 gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
 {
-  iface->get_range_start = gcal_week_view_get_range_start;
-  iface->get_range_end = gcal_week_view_get_range_end;
+  iface->get_range = gcal_week_view_get_range;
   iface->add_event = gcal_week_view_add_event;
   iface->update_event = gcal_week_view_update_event;
   iface->remove_event = gcal_week_view_remove_event;
diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c
index d47efdaf..39604811 100644
--- a/src/views/gcal-year-view.c
+++ b/src/views/gcal-year-view.c
@@ -1569,22 +1569,18 @@ navigator_drag_leave_cb (GcalYearView   *self,
  * GcalTimelineSubscriber implementation
  */
 
-static GDateTime*
-gcal_year_view_get_range_start (GcalTimelineSubscriber *subscriber)
+static GcalRange*
+gcal_year_view_get_range (GcalTimelineSubscriber *subscriber)
 {
-  GcalYearView *self = GCAL_YEAR_VIEW (subscriber);
-
-  return g_date_time_new_local (g_date_time_get_year (self->date),
-                                1, 1, 0, 0, 0);
-}
+  g_autoptr (GDateTime) start = NULL;
+  g_autoptr (GDateTime) end = NULL;
+  GcalYearView *self;
 
-static GDateTime*
-gcal_year_view_get_range_end (GcalTimelineSubscriber *subscriber)
-{
-  GcalYearView *self = GCAL_YEAR_VIEW (subscriber);
+  self = GCAL_YEAR_VIEW (subscriber);
+  start = g_date_time_new_local (g_date_time_get_year (self->date), 1, 1, 0, 0, 0);
+  end = g_date_time_add_years (start, 1);
 
-  return g_date_time_new_local (g_date_time_get_year (self->date) + 1,
-                                1, 1, 0, 0, 0);
+  return gcal_range_new (start, end);
 }
 
 static void
@@ -1714,8 +1710,7 @@ gcal_year_view_update_event (GcalTimelineSubscriber *subscriber,
 static void
 gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
 {
-  iface->get_range_start = gcal_year_view_get_range_start;
-  iface->get_range_end = gcal_year_view_get_range_end;
+  iface->get_range = gcal_year_view_get_range;
   iface->add_event = gcal_year_view_add_event;
   iface->remove_event = gcal_year_view_remove_event;
   iface->update_event = gcal_year_view_update_event;


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