aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/schedule-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/schedule-page.c
parent6d9d0b02aab0c899742a43002116bc0caf05324f (diff)
downloadgsoc2013-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/gui/dialogs/schedule-page.c')
-rw-r--r--calendar/gui/dialogs/schedule-page.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/calendar/gui/dialogs/schedule-page.c b/calendar/gui/dialogs/schedule-page.c
index 08cc57e48b..df7ca0c702 100644
--- a/calendar/gui/dialogs/schedule-page.c
+++ b/calendar/gui/dialogs/schedule-page.c
@@ -268,7 +268,14 @@ update_time (SchedulePage *spage, CalComponentDateTime *start_date, CalComponent
all_day = (start_tt.is_date && end_tt.is_date) ? TRUE : FALSE;
- /* For All-Day events, we set the time field to empty. */
+ /* For All Day Events, if DTEND is after DTSTART, we subtract 1 day
+ from it. */
+ if (all_day) {
+ if (icaltime_compare_date_only (end_tt, start_tt) > 0) {
+ icaltime_adjust (&end_tt, -1, 0, 0, 0);
+ }
+ }
+
e_date_edit_set_date (E_DATE_EDIT (priv->sel->start_date_edit), start_tt.year,
start_tt.month, start_tt.day);
e_date_edit_set_time_of_day (E_DATE_EDIT (priv->sel->start_date_edit),
@@ -484,7 +491,6 @@ time_changed_cb (GtkWidget *widget, gpointer data)
CalComponentDateTime start_dt, end_dt;
struct icaltimetype start_tt = icaltime_null_time ();
struct icaltimetype end_tt = icaltime_null_time ();
- gboolean start_time_set, end_time_set;
priv = spage->priv;
@@ -514,10 +520,12 @@ time_changed_cb (GtkWidget *widget, gpointer data)
start_dt.tzid = icaltimezone_get_tzid (priv->zone);
end_dt.tzid = start_dt.tzid;
} else {
- /* For All-Day Events, we set the timezone to NULL. */
+ /* For All-Day Events, we set the timezone to NULL, and add
+ 1 day to DTEND. */
start_dt.value->is_date = TRUE;
start_dt.tzid = NULL;
end_dt.value->is_date = TRUE;
+ icaltime_adjust (&end_tt, 1, 0, 0, 0);
end_dt.tzid = NULL;
}