aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog23
-rw-r--r--calendar/cal-client/Makefile.am2
-rw-r--r--calendar/cal-util/Makefile.am2
-rw-r--r--calendar/gui/Makefile.am2
-rw-r--r--calendar/gui/alarm-notify/Makefile.am2
-rw-r--r--calendar/gui/dialogs/event-page.c5
-rw-r--r--calendar/gui/dialogs/meeting-page.glade2
-rw-r--r--calendar/gui/dialogs/schedule-page.c57
-rw-r--r--calendar/gui/e-itip-control.c30
-rw-r--r--calendar/gui/e-meeting-time-sel.c2
-rw-r--r--calendar/importers/Makefile.am2
11 files changed, 96 insertions, 33 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 3672346b8f..af77afeebc 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,26 @@
+2001-10-29 Damon Chaplin <damon@ximian.com>
+
+ * importers/Makefile.am (evolution_calendar_importer_LDADD):
+ * gui/Makefile.am (evolution_calendar_LDADD):
+ * cal-util/Makefile.am (test_recur_LDADD):
+ * cal-client/Makefile.am (client_test_LDADD): use libical-evolution.la
+
+ * gui/dialogs/schedule-page.c: save the timezone passed in for the
+ start time, so if our times are changed we use this. Also, if the
+ end time was passed in in a different timezone, convert it.
+ Also hide the time fields for DATE values. Note that DATE values still
+ do not work.
+
+ * gui/dialogs/meeting-page.glade: changed "Invite Others" to
+ "Invite Others..." to be consistent with the other page.
+
+ * gui/dialogs/event-page.c (times_updated):
+ (all_day_event_toggled_cb): set is_date if appropriate.
+
+ * gui/e-itip-control.c (write_label_piece): convert all UTC times to
+ the current timezone. Outlook sends simple, non-recurring, events as
+ UTC times, which isn't very useful.
+
2001-10-29 Federico Mena Quintero <federico@ximian.com>
* gui/main.c (launch_alarm_daemon): Launch the alarm daemon as
diff --git a/calendar/cal-client/Makefile.am b/calendar/cal-client/Makefile.am
index 28bab236ae..b172c9a395 100644
--- a/calendar/cal-client/Makefile.am
+++ b/calendar/cal-client/Makefile.am
@@ -80,7 +80,7 @@ client_test_LDADD = \
$(EXTRA_GNOME_LIBS) \
$(top_builddir)/calendar/cal-util/libcal-util.la \
$(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical.la \
+ $(top_builddir)/libical/src/libical/libical-evolution.la \
$(top_builddir)/libwombat/libwombat.la \
libcal-client.la
diff --git a/calendar/cal-util/Makefile.am b/calendar/cal-util/Makefile.am
index 80c8da2662..c0cbaf2bd7 100644
--- a/calendar/cal-util/Makefile.am
+++ b/calendar/cal-util/Makefile.am
@@ -45,5 +45,5 @@ test_recur_SOURCES = \
test_recur_LDADD = \
libcal-util.la \
$(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical.la \
+ $(top_builddir)/libical/src/libical/libical-evolution.la \
$(EXTRA_GNOME_LIBS)
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am
index 7a22f6abc7..20567ced8a 100644
--- a/calendar/gui/Makefile.am
+++ b/calendar/gui/Makefile.am
@@ -166,7 +166,7 @@ evolution_calendar_LDADD = \
$(top_builddir)/calendar/cal-util/libcal-util.la \
$(top_builddir)/e-util/libeutil.la \
$(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical.la \
+ $(top_builddir)/libical/src/libical/libical-evolution.la \
$(top_builddir)/libwombat/libwombat.la \
$(top_builddir)/addressbook/backend/ebook/libebook.la \
$(top_builddir)/camel/libcamel.la \
diff --git a/calendar/gui/alarm-notify/Makefile.am b/calendar/gui/alarm-notify/Makefile.am
index 5e4fb8d5ee..df2598b6bc 100644
--- a/calendar/gui/alarm-notify/Makefile.am
+++ b/calendar/gui/alarm-notify/Makefile.am
@@ -63,7 +63,7 @@ evolution_alarm_notify_LDADD = \
libalarm.a \
$(top_builddir)/calendar/cal-client/libcal-client.la \
$(top_builddir)/calendar/cal-util/libcal-util.la \
- $(top_builddir)/libical/src/libical/libical.la \
+ $(top_builddir)/libical/src/libical/libical-evolution.la \
$(top_builddir)/libwombat/libwombat.la \
$(top_builddir)/e-util/libeutil.la \
$(BONOBO_CONF_LIBS) \
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 44b6c0e711..72b6fe9871 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -930,6 +930,9 @@ times_updated (EventPage *epage, gboolean adjust_end_time)
set_start_date = TRUE;
}
}
+
+ start_tt.is_date = TRUE;
+ end_tt.is_date = TRUE;
} else {
/* For DATE-TIME events, we have to convert to the same
timezone before comparing. */
@@ -1099,6 +1102,7 @@ all_day_event_toggled_cb (GtkWidget *toggle, gpointer data)
start_tt.hour = 0;
start_tt.minute = 0;
start_tt.second = 0;
+ start_tt.is_date = TRUE;
/* Round down to the start of the day, or the start of the
previous day if it is midnight. */
@@ -1106,6 +1110,7 @@ all_day_event_toggled_cb (GtkWidget *toggle, gpointer data)
end_tt.hour = 0;
end_tt.minute = 0;
end_tt.second = 0;
+ end_tt.is_date = TRUE;
} else {
icaltimezone *start_zone, *end_zone;
diff --git a/calendar/gui/dialogs/meeting-page.glade b/calendar/gui/dialogs/meeting-page.glade
index 3aabf95102..f06f457d16 100644
--- a/calendar/gui/dialogs/meeting-page.glade
+++ b/calendar/gui/dialogs/meeting-page.glade
@@ -291,7 +291,7 @@
<class>GtkButton</class>
<name>invite</name>
<can_focus>True</can_focus>
- <label>_Invite Others</label>
+ <label>_Invite Others...</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<padding>0</padding>
diff --git a/calendar/gui/dialogs/schedule-page.c b/calendar/gui/dialogs/schedule-page.c
index e2bda140cd..08cc57e48b 100644
--- a/calendar/gui/dialogs/schedule-page.c
+++ b/calendar/gui/dialogs/schedule-page.c
@@ -66,6 +66,11 @@ struct _SchedulePagePrivate {
/* Selector */
EMeetingTimeSelector *sel;
+ /* The timezone we use. Note that we use the same timezone for the
+ start and end date. We convert the end date if it is passed in in
+ another timezone. */
+ icaltimezone *zone;
+
gboolean updating;
};
@@ -155,6 +160,8 @@ schedule_page_init (SchedulePage *spage)
priv->main = NULL;
+ priv->zone = NULL;
+
priv->updating = FALSE;
}
@@ -218,9 +225,10 @@ static void
update_time (SchedulePage *spage, CalComponentDateTime *start_date, CalComponentDateTime *end_date)
{
SchedulePagePrivate *priv;
- struct icaltimetype *start_tt, *end_tt;
+ struct icaltimetype start_tt, end_tt;
icaltimezone *start_zone = NULL, *end_zone = NULL;
CalClientGetStatus status;
+ gboolean all_day;
priv = spage->priv;
@@ -249,18 +257,32 @@ update_time (SchedulePage *spage, CalComponentDateTime *start_date, CalComponent
end_date->tzid ? end_date->tzid : "");
}
- start_tt = start_date->value;
- end_tt = end_date->value;
+ start_tt = *start_date->value;
+ end_tt = *end_date->value;
- e_date_edit_set_date (E_DATE_EDIT (priv->sel->start_date_edit), start_tt->year,
- start_tt->month, start_tt->day);
+ /* If the end zone is not the same as the start zone, we convert it. */
+ priv->zone = start_zone;
+ if (start_zone != end_zone) {
+ icaltimezone_convert_time (&end_tt, end_zone, start_zone);
+ }
+
+ all_day = (start_tt.is_date && end_tt.is_date) ? TRUE : FALSE;
+
+ /* For All-Day events, we set the time field to empty. */
+ 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),
- start_tt->hour, start_tt->minute);
+ start_tt.hour, start_tt.minute);
- e_date_edit_set_date (E_DATE_EDIT (priv->sel->end_date_edit), end_tt->year,
- end_tt->month, end_tt->day);
+ e_date_edit_set_date (E_DATE_EDIT (priv->sel->end_date_edit), end_tt.year,
+ end_tt.month, end_tt.day);
e_date_edit_set_time_of_day (E_DATE_EDIT (priv->sel->end_date_edit),
- end_tt->hour, end_tt->minute);
+ end_tt.hour, end_tt.minute);
+
+ e_date_edit_set_show_time (E_DATE_EDIT (priv->sel->start_date_edit),
+ !all_day);
+ e_date_edit_set_show_time (E_DATE_EDIT (priv->sel->end_date_edit),
+ !all_day);
}
@@ -460,7 +482,9 @@ time_changed_cb (GtkWidget *widget, gpointer data)
SchedulePagePrivate *priv;
CompEditorPageDates dates;
CalComponentDateTime start_dt, end_dt;
- struct icaltimetype start_tt, end_tt;
+ struct icaltimetype start_tt = icaltime_null_time ();
+ struct icaltimetype end_tt = icaltime_null_time ();
+ gboolean start_time_set, end_time_set;
priv = spage->priv;
@@ -485,8 +509,17 @@ time_changed_cb (GtkWidget *widget, gpointer data)
start_dt.value = &start_tt;
end_dt.value = &end_tt;
- start_dt.tzid = NULL;
- end_dt.tzid = NULL;
+ if (e_date_edit_get_show_time (E_DATE_EDIT (priv->sel->start_date_edit))) {
+ /* We set the start and end to the same timezone. */
+ 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. */
+ start_dt.value->is_date = TRUE;
+ start_dt.tzid = NULL;
+ end_dt.value->is_date = TRUE;
+ end_dt.tzid = NULL;
+ }
dates.start = &start_dt;
dates.end = &end_dt;
diff --git a/calendar/gui/e-itip-control.c b/calendar/gui/e-itip-control.c
index 04615b6852..f0e89d6eec 100644
--- a/calendar/gui/e-itip-control.c
+++ b/calendar/gui/e-itip-control.c
@@ -450,7 +450,7 @@ set_button_status (EItipControl *itip)
static void
write_label_piece (EItipControl *itip, CalComponentDateTime *dt,
char *buffer, int size,
- const char *stext, const char *etext, gboolean is_utc)
+ const char *stext, const char *etext)
{
EItipControlPrivate *priv;
struct tm tmp_tm;
@@ -460,9 +460,10 @@ write_label_piece (EItipControl *itip, CalComponentDateTime *dt,
priv = itip->priv;
- /* If we have been passed a UTC value, i.e. for the COMPLETED property,
- we convert it to the current timezone to display. */
- if (is_utc) {
+ /* UTC times get converted to the current timezone. This is done for
+ the COMPLETED property, which is always in UTC, and also because
+ Outlook sends simple events as UTC times. */
+ if (dt->value->is_utc) {
char *location = calendar_config_get_timezone ();
zone = icaltimezone_get_builtin_timezone (location);
icaltimezone_convert_time (dt->value, icaltimezone_get_utc_timezone (), zone);
@@ -482,7 +483,7 @@ write_label_piece (EItipControl *itip, CalComponentDateTime *dt,
strcat (buffer, time_utf8);
g_free (time_utf8);
- if (!is_utc && dt->tzid) {
+ if (!dt->value->is_utc && dt->tzid) {
zone = icalcomponent_get_timezone (priv->top_level, dt->tzid);
}
@@ -521,20 +522,20 @@ set_date_label (EItipControl *itip, GtkHTML *html, GtkHTMLStream *html_stream,
case CAL_COMPONENT_EVENT:
write_label_piece (itip, &datetime, buffer, 1024,
U_("Meeting begins: <b>"),
- "</b><br>", FALSE);
+ "</b><br>");
break;
case CAL_COMPONENT_TODO:
write_label_piece (itip, &datetime, buffer, 1024,
U_("Task begins: <b>"),
- "</b><br>", FALSE);
+ "</b><br>");
break;
case CAL_COMPONENT_FREEBUSY:
write_label_piece (itip, &datetime, buffer, 1024,
U_("Free/Busy info begins: <b>"),
- "</b><br>", FALSE);
+ "</b><br>");
break;
default:
- write_label_piece (itip, &datetime, buffer, 1024, U_("Begins: <b>"), "</b><br>", FALSE);
+ write_label_piece (itip, &datetime, buffer, 1024, U_("Begins: <b>"), "</b><br>");
}
gtk_html_write (html, html_stream, buffer, strlen(buffer));
wrote = TRUE;
@@ -546,14 +547,14 @@ set_date_label (EItipControl *itip, GtkHTML *html, GtkHTMLStream *html_stream,
if (datetime.value){
switch (type) {
case CAL_COMPONENT_EVENT:
- write_label_piece (itip, &datetime, buffer, 1024, U_("Meeting ends: <b>"), "</b><br>", FALSE);
+ write_label_piece (itip, &datetime, buffer, 1024, U_("Meeting ends: <b>"), "</b><br>");
break;
case CAL_COMPONENT_FREEBUSY:
write_label_piece (itip, &datetime, buffer, 1024, U_("Free/Busy info ends: <b>"),
- "</b><br>", FALSE);
+ "</b><br>");
break;
default:
- write_label_piece (itip, &datetime, buffer, 1024, U_("Ends: <b>"), "</b><br>", FALSE);
+ write_label_piece (itip, &datetime, buffer, 1024, U_("Ends: <b>"), "</b><br>");
}
gtk_html_write (html, html_stream, buffer, strlen (buffer));
wrote = TRUE;
@@ -566,7 +567,8 @@ set_date_label (EItipControl *itip, GtkHTML *html, GtkHTMLStream *html_stream,
if (type == CAL_COMPONENT_TODO && datetime.value) {
/* Pass TRUE as is_utc, so it gets converted to the current
timezone. */
- write_label_piece (itip, &datetime, buffer, 1024, U_("Task Completed: <b>"), "</b><br>", TRUE);
+ datetime.value->is_utc = TRUE;
+ write_label_piece (itip, &datetime, buffer, 1024, U_("Task Completed: <b>"), "</b><br>");
gtk_html_write (html, html_stream, buffer, strlen (buffer));
wrote = TRUE;
task_completed = TRUE;
@@ -576,7 +578,7 @@ set_date_label (EItipControl *itip, GtkHTML *html, GtkHTMLStream *html_stream,
buffer[0] = '\0';
cal_component_get_due (comp, &datetime);
if (type == CAL_COMPONENT_TODO && !task_completed && datetime.value) {
- write_label_piece (itip, &datetime, buffer, 1024, U_("Task Due: <b>"), "</b><br>", FALSE);
+ write_label_piece (itip, &datetime, buffer, 1024, U_("Task Due: <b>"), "</b><br>");
gtk_html_write (html, html_stream, buffer, strlen (buffer));
wrote = TRUE;
}
diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c
index e366b58378..2358ef2be8 100644
--- a/calendar/gui/e-meeting-time-sel.c
+++ b/calendar/gui/e-meeting-time-sel.c
@@ -608,7 +608,7 @@ e_meeting_time_selector_construct (EMeetingTimeSelector * mts, EMeetingModel *em
gtk_widget_show (menuitem);
/* Create the date entry fields on the right. */
- alignment = gtk_alignment_new (0.5, 0.5, 0, 0);
+ alignment = gtk_alignment_new (0.0, 0.5, 0, 0);
gtk_table_attach (GTK_TABLE (mts), alignment,
1, 4, 5, 6, GTK_FILL, 0, 0, 0);
gtk_widget_show (alignment);
diff --git a/calendar/importers/Makefile.am b/calendar/importers/Makefile.am
index 5f6f2361f6..22f3b41a80 100644
--- a/calendar/importers/Makefile.am
+++ b/calendar/importers/Makefile.am
@@ -25,7 +25,7 @@ evolution_calendar_importer_LDADD = \
$(top_builddir)/calendar/cal-util/libcal-util.la \
$(top_builddir)/calendar/cal-client/libcal-client.la \
$(top_builddir)/libwombat/libwombat.la \
- $(top_builddir)/libical/src/libical/libical.la \
+ $(top_builddir)/libical/src/libical/libical-evolution.la \
$(EXTRA_GNOME_LIBS)
oafdir = $(datadir)/oaf