[evolution-data-server] Bug 793104 - COMPLETED in libical 3.0+ is DATE-TIME only



commit 996ebf445e3e05212935482cad11879a7c2b5522
Author: Milan Crha <mcrha redhat com>
Date:   Tue Feb 6 18:14:14 2018 +0100

    Bug 793104 - COMPLETED in libical 3.0+ is DATE-TIME only

 .../backends/gtasks/e-cal-backend-gtasks.c         |    2 +-
 src/calendar/libecal/e-cal-component.c             |   12 ++++++++++++
 src/calendar/libedata-cal/e-cal-backend-sexp.c     |    6 ++++++
 src/calendar/libedata-cal/e-cal-cache.c            |    4 ++--
 4 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/src/calendar/backends/gtasks/e-cal-backend-gtasks.c 
b/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
index c1a16ab..3c1fd5b 100644
--- a/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
+++ b/src/calendar/backends/gtasks/e-cal-backend-gtasks.c
@@ -137,7 +137,7 @@ ecb_gtasks_gdata_to_comp (GDataTasksTask *task)
        }
 
        if (gdata_tasks_task_get_completed (task) > 0) {
-               tt = icaltime_from_timet_with_zone (gdata_tasks_task_get_completed (task), 1, NULL);
+               tt = icaltime_from_timet_with_zone (gdata_tasks_task_get_completed (task), 0, 
icaltimezone_get_utc_timezone ());
                if (icaltime_is_valid_time (tt) && !icaltime_is_null_time (tt))
                        ecb_gtasks_update_ical_time_property (icomp, ICAL_COMPLETED_PROPERTY,
                                icalproperty_new_completed,
diff --git a/src/calendar/libecal/e-cal-component.c b/src/calendar/libecal/e-cal-component.c
index d96a5fb..825f770 100644
--- a/src/calendar/libecal/e-cal-component.c
+++ b/src/calendar/libecal/e-cal-component.c
@@ -2356,6 +2356,7 @@ e_cal_component_set_completed (ECalComponent *comp,
                                struct icaltimetype *t)
 {
        ECalComponentPrivate *priv;
+       struct icaltimetype tmp_tt;
 
        g_return_if_fail (comp != NULL);
        g_return_if_fail (E_IS_CAL_COMPONENT (comp));
@@ -2363,6 +2364,17 @@ e_cal_component_set_completed (ECalComponent *comp,
        priv = comp->priv;
        g_return_if_fail (priv->icalcomp != NULL);
 
+       if (t && t->is_date) {
+               tmp_tt = *t;
+               t = &tmp_tt;
+
+               tmp_tt.is_date = 0;
+               tmp_tt.hour = 0;
+               tmp_tt.minute = 0;
+               tmp_tt.second = 0;
+               tmp_tt.zone = icaltimezone_get_utc_timezone ();
+       }
+
        set_icaltimetype (
                comp, &priv->completed,
                icalproperty_new_completed,
diff --git a/src/calendar/libedata-cal/e-cal-backend-sexp.c b/src/calendar/libedata-cal/e-cal-backend-sexp.c
index 28b0fb8..cdbeb3c 100644
--- a/src/calendar/libedata-cal/e-cal-backend-sexp.c
+++ b/src/calendar/libedata-cal/e-cal-backend-sexp.c
@@ -1041,6 +1041,12 @@ func_is_completed (ESExp *esexp,
        if (t) {
                complete = TRUE;
                e_cal_component_free_icaltimetype (t);
+       } else {
+               icalproperty_status status = ICAL_STATUS_NONE;
+
+               e_cal_component_get_status (ctx->comp, &status);
+
+               complete = status == ICAL_STATUS_COMPLETED;
        }
 
        result = e_sexp_result_new (esexp, ESEXP_RES_BOOL);
diff --git a/src/calendar/libedata-cal/e-cal-cache.c b/src/calendar/libedata-cal/e-cal-cache.c
index c8ae546..f79d5ce 100644
--- a/src/calendar/libedata-cal/e-cal-cache.c
+++ b/src/calendar/libedata-cal/e-cal-cache.c
@@ -1384,8 +1384,8 @@ ecc_sexp_func_is_completed (ESExp *esexp,
        g_return_val_if_fail (ctx != NULL, NULL);
 
        result = e_sexp_result_new (esexp, ESEXP_RES_STRING);
-       result->value.string = g_strdup_printf ("%s NOT NULL",
-               ECC_COLUMN_COMPLETED);
+       result->value.string = g_strdup_printf ("%s NOT NULL OR (%s NOT NULL AND %s='%s')",
+               ECC_COLUMN_COMPLETED, ECC_COLUMN_STATUS, ECC_COLUMN_STATUS, ecc_get_status_as_string 
(ICAL_STATUS_COMPLETED));
 
        return result;
 }


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