aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/comp-editor-util.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/comp-editor-util.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/comp-editor-util.c')
-rw-r--r--calendar/gui/dialogs/comp-editor-util.c40
1 files changed, 25 insertions, 15 deletions
diff --git a/calendar/gui/dialogs/comp-editor-util.c b/calendar/gui/dialogs/comp-editor-util.c
index 751e23dbcf..34d4e71e81 100644
--- a/calendar/gui/dialogs/comp-editor-util.c
+++ b/calendar/gui/dialogs/comp-editor-util.c
@@ -112,11 +112,13 @@ comp_editor_free_dates (CompEditorPageDates *dates)
}
+/* dtstart is only passed in if tt is the dtend. */
static void
write_label_piece (struct icaltimetype *tt, char *buffer, int size,
- char *stext, char *etext)
+ char *stext, char *etext, struct icaltimetype *dtstart)
{
struct tm tmp_tm = { 0 };
+ struct icaltimetype tt_copy = *tt;
int len;
/* FIXME: May want to convert the time to an appropriate zone. */
@@ -124,20 +126,28 @@ write_label_piece (struct icaltimetype *tt, char *buffer, int size,
if (stext != NULL)
strcat (buffer, stext);
- tmp_tm.tm_year = tt->year - 1900;
- tmp_tm.tm_mon = tt->month - 1;
- tmp_tm.tm_mday = tt->day;
- tmp_tm.tm_hour = tt->hour;
- tmp_tm.tm_min = tt->minute;
- tmp_tm.tm_sec = tt->second;
+ /* If we are writing the DTEND (i.e. DTSTART is set), and
+ DTEND > DTSTART, subtract 1 day. The DTEND date is not inclusive. */
+ if (tt_copy.is_date && dtstart
+ && icaltime_compare_date_only (tt_copy, *dtstart) > 0) {
+ icaltime_adjust (&tt_copy, -1, 0, 0, 0);
+ }
+
+ tmp_tm.tm_year = tt_copy.year - 1900;
+ tmp_tm.tm_mon = tt_copy.month - 1;
+ tmp_tm.tm_mday = tt_copy.day;
+ tmp_tm.tm_hour = tt_copy.hour;
+ tmp_tm.tm_min = tt_copy.minute;
+ tmp_tm.tm_sec = tt_copy.second;
tmp_tm.tm_isdst = -1;
- tmp_tm.tm_wday = time_day_of_week (tt->day, tt->month - 1, tt->year);
+ tmp_tm.tm_wday = time_day_of_week (tt_copy.day, tt_copy.month - 1,
+ tt_copy.year);
len = strlen (buffer);
e_time_format_date_and_time (&tmp_tm,
calendar_config_get_24_hour_format (),
- FALSE, FALSE,
+ !tt_copy.is_date, FALSE,
&buffer[len], size - len);
if (etext != NULL)
strcat (buffer, etext);
@@ -171,24 +181,24 @@ comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label)
if (start_set)
write_label_piece (dates->start->value, buffer, 1024,
- NULL, NULL);
+ NULL, NULL, NULL);
if (start_set && end_set)
write_label_piece (dates->end->value, buffer, 1024,
- _(" to "), NULL);
+ _(" to "), NULL, dates->start->value);
if (complete_set) {
if (start_set)
- write_label_piece (dates->complete, buffer, 1024, _(" (Completed "), ")");
+ write_label_piece (dates->complete, buffer, 1024, _(" (Completed "), ")", NULL);
else
- write_label_piece (dates->complete, buffer, 1024, _("Completed "), NULL);
+ write_label_piece (dates->complete, buffer, 1024, _("Completed "), NULL, NULL);
}
if (due_set && dates->complete == NULL) {
if (start_set)
- write_label_piece (dates->due->value, buffer, 1024, _(" (Due "), ")");
+ write_label_piece (dates->due->value, buffer, 1024, _(" (Due "), ")", NULL);
else
- write_label_piece (dates->due->value, buffer, 1024, _("Due "), NULL);
+ write_label_piece (dates->due->value, buffer, 1024, _("Due "), NULL, NULL);
}
gtk_label_set_text (GTK_LABEL (label), buffer);