aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog8
-rw-r--r--calendar/gui/dialogs/cancel-comp.c26
2 files changed, 34 insertions, 0 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index df6d9bb77b..d345d3c0a6 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,11 @@
+2007-06-27 Milan Crha <mcrha@redhat.com>
+
+ ** Fix for bug #234294
+
+ * gui/dialogs/cancel-comp.c: (is_past_event): New helper function.
+ * gui/dialogs/cancel-comp.c: (cancel_component_dialog):
+ Returns FALSE to EVENTs in the past, based on date, not time part.
+
2007-07-09 Milan Crha <mcrha@redhat.com>
** Fix for bug #300584
diff --git a/calendar/gui/dialogs/cancel-comp.c b/calendar/gui/dialogs/cancel-comp.c
index de06b835ec..56547d52c1 100644
--- a/calendar/gui/dialogs/cancel-comp.c
+++ b/calendar/gui/dialogs/cancel-comp.c
@@ -32,6 +32,28 @@
+/* is_past_event:
+ *
+ * returns TRUE if @comp is in the past, FALSE otherwise.
+ * Comparision is based only on date part, time part is ignored.
+ */
+static gboolean
+is_past_event (ECalComponent *comp)
+{
+ ECalComponentDateTime end_date;
+ gboolean res;
+
+ if (!comp) return TRUE;
+
+ e_cal_component_get_dtend (comp, &end_date);
+ res = icaltime_compare_date_only (*end_date.value,
+ icaltime_current_time_with_zone (icaltime_get_timezone (*end_date.value))
+ ) == -1;
+ e_cal_component_free_datetime (&end_date);
+
+ return res;
+}
+
/**
* cancel_component_dialog:
*
@@ -53,6 +75,10 @@ cancel_component_dialog (GtkWindow *parent, ECal *client, ECalComponent *comp, g
switch (vtype) {
case E_CAL_COMPONENT_EVENT:
+ if (is_past_event (comp)) {
+ /* don't ask neither send notification to others on past events */
+ return FALSE;
+ }
if (deleting)
id = "calendar:prompt-cancel-meeting";
else