aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/event-page.c
diff options
context:
space:
mode:
authorDamon Chaplin <damon@ximian.com>2001-10-30 20:59:28 +0800
committerDamon Chaplin <damon@src.gnome.org>2001-10-30 20:59:28 +0800
commit6cc1ca709616dafc050dc29e10f26686ac3e4caa (patch)
treee593984309d8f2ff05b729fd0fc1fb789b473ee3 /calendar/gui/dialogs/event-page.c
parent6d9d0b02aab0c899742a43002116bc0caf05324f (diff)
downloadgsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar
gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar.gz
gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar.bz2
gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar.lz
gsoc2013-evolution-6cc1ca709616dafc050dc29e10f26686ac3e4caa.tar.xz
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/gui/dialogs/event-page.c')
-rw-r--r--calendar/gui/dialogs/event-page.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 72b6fe9871..191f87e306 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -332,15 +332,15 @@ update_time (EventPage *epage, CalComponentDateTime *start_date, CalComponentDat
}
/* If both times are DATE values, we set the 'All Day Event' checkbox.
- If not, if the end time is a DATE we convert it to the end of the
- day. */
+ Also, if DTEND is after DTSTART, we subtract 1 day from it. */
all_day_event = FALSE;
start_tt = start_date->value;
end_tt = end_date->value;
if (start_tt->is_date && end_tt->is_date) {
all_day_event = TRUE;
- } else if (end_tt->is_date) {
- icaltime_adjust (end_tt, 1, 0, 0, 0);
+ if (icaltime_compare_date_only (*end_tt, *start_tt) > 0) {
+ icaltime_adjust (end_tt, -1, 0, 0, 0);
+ }
}
set_all_day (epage, all_day_event);
@@ -647,6 +647,9 @@ event_page_fill_component (CompEditorPage *page, CalComponent *comp)
if (all_day_event) {
start_tt.is_date = TRUE;
end_tt.is_date = TRUE;
+
+ /* We have to add 1 day to DTEND, as it is not inclusive. */
+ icaltime_adjust (&end_tt, 1, 0, 0, 0);
} else {
icaltimezone *start_zone, *end_zone;
@@ -805,6 +808,9 @@ summary_changed_cb (GtkEditable *editable, gpointer data)
}
+/* Note that this assumes that the start_tt and end_tt passed to it are the
+ dates visible to the user. For DATE values, we have to add 1 day to the
+ end_tt before emitting the signal. */
static void
notify_dates_changed (EventPage *epage, struct icaltimetype *start_tt,
struct icaltimetype *end_tt)
@@ -822,7 +828,11 @@ notify_dates_changed (EventPage *epage, struct icaltimetype *start_tt,
start_dt.value = start_tt;
end_dt.value = end_tt;
- if (!all_day_event) {
+ if (all_day_event) {
+ /* The actual DTEND is 1 day after the displayed date for
+ DATE values. */
+ icaltime_adjust (end_tt, 1, 0, 0, 0);
+ } else {
start_zone = e_timezone_entry_get_timezone (E_TIMEZONE_ENTRY (priv->start_timezone));
end_zone = e_timezone_entry_get_timezone (E_TIMEZONE_ENTRY (priv->end_timezone));
}
@@ -835,6 +845,7 @@ notify_dates_changed (EventPage *epage, struct icaltimetype *start_tt,
dates.due = NULL;
dates.complete = NULL;
+
comp_editor_page_notify_dates_changed (COMP_EDITOR_PAGE (epage),
&dates);
}