diff options
author | Damon Chaplin <damon@ximian.com> | 2001-10-30 20:59:28 +0800 |
---|---|---|
committer | Damon Chaplin <damon@src.gnome.org> | 2001-10-30 20:59:28 +0800 |
commit | 6cc1ca709616dafc050dc29e10f26686ac3e4caa (patch) | |
tree | e593984309d8f2ff05b729fd0fc1fb789b473ee3 /calendar/cal-util | |
parent | 6d9d0b02aab0c899742a43002116bc0caf05324f (diff) | |
download | gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar.gz gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar.zst gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.zip |
updated code to handle DATE values.
2001-10-30 Damon Chaplin <damon@ximian.com>
* gui/dialogs/schedule-page.c:
* gui/dialogs/event-page.c:
* gui/dialogs/comp-editor-util.c: updated code to handle DATE values.
* gui/gnome-cal.c (gnome_calendar_new_appointment_for):
* gui/e-day-view.c (e_day_view_key_press): updated DATE code.
* gui/e-cell-date-edit-text.c:
* gui/calendar-model.c: updated to support DATE values.
* cal-util/cal-recur.c (cal_recur_generate_instances_of_rule): updated
to use DATE values in same way as Outlook - i.e. the DTEND date is
not included entirely. Though I did make it so that if the DTSTART
and DTEND used the same DATE value, it includes the entire day.
So 1-day events should be the same. Long All-Day events will be
1 day shorter.
* cal-util/cal-component.c (cal_component_get_start_plus_duration):
don't subtract a day from the end date.
* gui/tasks-control.c: updated the EPixmap paths for Cut/Copy etc.
Removed Print & Print Preview paths, since we don't have menu commands
for these any more.
svn path=/trunk/; revision=14456
Diffstat (limited to 'calendar/cal-util')
-rw-r--r-- | calendar/cal-util/cal-component.c | 5 | ||||
-rw-r--r-- | calendar/cal-util/cal-recur.c | 29 |
2 files changed, 26 insertions, 8 deletions
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c index 6e652b4851..5fc5addf19 100644 --- a/calendar/cal-util/cal-component.c +++ b/calendar/cal-util/cal-component.c @@ -2078,15 +2078,12 @@ cal_component_get_start_plus_duration (CalComponent *comp, /* If DTSTART is a DATE value, then we need to check if the DURATION includes any hours, minutes or seconds. If it does, we need to - make the DTEND/DUE a DATE-TIME value. If not, we need to subtract - one from the days, since the end date will be inclusive. */ + make the DTEND/DUE a DATE-TIME value. */ duration.days += duration.weeks * 7; if (dt->value->is_date) { if (duration.hours != 0 || duration.minutes != 0 || duration.seconds != 0) { dt->value->is_date = 0; - } else { - duration.days--; } } diff --git a/calendar/cal-util/cal-recur.c b/calendar/cal-util/cal-recur.c index d17c626274..cfccdaf19f 100644 --- a/calendar/cal-util/cal-recur.c +++ b/calendar/cal-util/cal-recur.c @@ -707,18 +707,38 @@ cal_recur_generate_instances_of_rule (CalComponent *comp, if (start == -1) start = dtstart_time; - /* If there is no DTEND, then use the same as the DTSTART. For - DATE-TIME values that means we will just have a single point in - time. For DATE values it means we end up with the entire day. */ - if (!dtend.value) + if (dtend.value) { + /* If both DTSTART and DTEND are DATE values, and they are the + same day, we add 1 day to DTEND. This means that most + events created with the old Evolution behavior will still + work OK. I'm not sure what Outlook does in this case. */ + if (dtstart.value->is_date && dtend.value->is_date) { + if (icaltime_compare_date_only (*dtstart.value, + *dtend.value) == 0) { + icaltime_adjust (dtend.value, 1, 0, 0, 0); + } + } + } else { + /* If there is no DTEND, then if DTSTART is a DATE-TIME value + we use the same time (so we have a single point in time). + If DTSTART is a DATE value we add 1 day. */ + dtend.value = g_new (struct icaltimetype, 1); *dtend.value = *dtstart.value; + if (dtstart.value->is_date) { + icaltime_adjust (dtend.value, 1, 0, 0, 0); + } + } + if (dtend.tzid && !dtend.value->is_date) { end_zone = (*tz_cb) (dtend.tzid, tz_cb_data); } else { end_zone = default_timezone; } + /* We don't do this any more, since Outlook assumes that the DTEND + date is not included. */ +#if 0 /* If DTEND is a DATE value, we add 1 day to it so that it includes the entire day. */ if (dtend.value->is_date) { @@ -727,6 +747,7 @@ cal_recur_generate_instances_of_rule (CalComponent *comp, dtend.value->second = 0; icaltime_adjust (dtend.value, 1, 0, 0, 0); } +#endif dtend_time = icaltime_as_timet_with_zone (*dtend.value, end_zone); /* If there is no recurrence, just call the callback if the event |