[gnome-calendar] utils: gained compare API



commit 87d35dd4432da6a5df2fd369736c5728593c9635
Author: Erick Pérez Castellanos <erick red gmail com>
Date:   Mon Feb 16 17:13:02 2015 -0500

    utils: gained compare API

 src/gcal-utils.c |   37 +++++++++++++++++++++++++++++++++++++
 src/gcal-utils.h |    4 ++++
 2 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/src/gcal-utils.c b/src/gcal-utils.c
index e48979a..8a63542 100644
--- a/src/gcal-utils.c
+++ b/src/gcal-utils.c
@@ -409,6 +409,43 @@ icaltime_compare_date (const icaltimetype *date1,
            time_day_of_year (date2->day, date2->month - 1, date2->year);
 }
 
+gint
+icaltime_compare_with_current (const icaltimetype *date1,
+                               const icaltimetype *date2,
+                               time_t             *current_time_t)
+{
+  gint result;
+
+  time_t start1, start2, diff1, diff2;
+  start1 = icaltime_as_timet_with_zone (*date1, date1->zone != NULL ? date1->zone : 
e_cal_util_get_system_timezone ());
+  start2 = icaltime_as_timet_with_zone (*date2, date2->zone != NULL ? date2->zone : 
e_cal_util_get_system_timezone ());
+  diff1 = start1 - *current_time_t;
+  diff2 = start2 - *current_time_t;
+
+  if (diff1 == diff2)
+    {
+      result = 0;
+    }
+  else
+    {
+      if (diff1 == 0)
+        result = -1;
+      else if (diff2 == 0)
+        result = 1;
+
+      if (diff1 > 0 && diff2 < 0)
+        result = -1;
+      else if (diff2 > 0 && diff1 < 0)
+        result = 1;
+      else if (diff1 < 0 && diff2 < 0)
+        result = ABS (diff1) - ABS (diff2);
+      else if (diff1 > 0 && diff2 > 0)
+        result = diff1 - diff2;
+    }
+
+  return result;
+}
+
 /* Function to do a last minute fixup of the AM/PM stuff if the locale
  * and gettext haven't done it right. Most English speaking countries
  * except the USA use the 24 hour clock (UK, Australia etc). However
diff --git a/src/gcal-utils.h b/src/gcal-utils.h
index 72d810c..08f58f3 100644
--- a/src/gcal-utils.h
+++ b/src/gcal-utils.h
@@ -83,6 +83,10 @@ ECalComponent*  build_component_from_details                    (const gchar
 gint            icaltime_compare_date                           (const icaltimetype    *date1,
                                                                  const icaltimetype    *date2);
 
+gint            icaltime_compare_with_current                   (const icaltimetype    *date1,
+                                                                 const icaltimetype    *date2,
+                                                                 time_t                *current_time_t);
+
 /* code brought from evolution */
 gsize           e_strftime_fix_am_pm                            (gchar                 *str,
                                                                  gsize                  max,


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