aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/event-editor.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/event-editor.c')
-rw-r--r--calendar/gui/event-editor.c813
1 files changed, 0 insertions, 813 deletions
diff --git a/calendar/gui/event-editor.c b/calendar/gui/event-editor.c
deleted file mode 100644
index a25028c456..0000000000
--- a/calendar/gui/event-editor.c
+++ /dev/null
@@ -1,813 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include <config.h>
-#include <gnome.h>
-#include <cal-util/timeutil.h>
-#include <gui/event-editor-utils.h>
-#include <gui/event-editor.h>
-
-typedef struct {
- GladeXML *gui;
- GtkWidget *dialog;
- GnomeCalendar *gnome_cal;
- iCalObject *ical;
-} EventEditorDialog;
-
-
-extern int day_begin, day_end;
-extern char *user_name;
-extern int am_pm_flag;
-extern int week_starts_on_monday;
-
-
-static void append_exception (EventEditorDialog *dialog, time_t t);
-static void check_all_day (EventEditorDialog *dialog);
-static void alarm_toggle (GtkToggleButton *toggle, EventEditorDialog *dialog);
-
-static void
-fill_in_dialog_from_ical (EventEditorDialog *dialog)
-{
- iCalObject *ical = dialog->ical;
- GladeXML *gui = dialog->gui;
- GList *list;
- GtkWidget *alarm_display, *alarm_program, *alarm_audio, *alarm_mail;
-
- store_to_editable (gui, "general-owner",
- dialog->ical->organizer->addr ?
- dialog->ical->organizer->addr : _("?"));
-
- store_to_editable (gui, "general-summary", ical->summary);
-
- /* start and end time */
- store_to_gnome_dateedit (gui, "start-time", ical->dtstart);
- store_to_gnome_dateedit (gui, "end-time", ical->dtend);
-
- check_all_day (dialog);
-
- /* alarms */
- alarm_display = glade_xml_get_widget (dialog->gui, "alarm-display");
- alarm_program = glade_xml_get_widget (dialog->gui, "alarm-program");
- alarm_audio = glade_xml_get_widget (dialog->gui, "alarm-audio");
- alarm_mail = glade_xml_get_widget (dialog->gui, "alarm-mail");
-
- store_to_toggle (gui, "alarm-display", ical->dalarm.enabled);
- store_to_toggle (gui, "alarm-program", ical->palarm.enabled);
- store_to_toggle (gui, "alarm-audio", ical->aalarm.enabled);
- store_to_toggle (gui, "alarm-mail", ical->malarm.enabled);
- alarm_toggle (GTK_TOGGLE_BUTTON (alarm_display), dialog);
- alarm_toggle (GTK_TOGGLE_BUTTON (alarm_program), dialog);
- alarm_toggle (GTK_TOGGLE_BUTTON (alarm_audio), dialog);
- alarm_toggle (GTK_TOGGLE_BUTTON (alarm_mail), dialog);
- gtk_signal_connect (GTK_OBJECT (alarm_display), "toggled", GTK_SIGNAL_FUNC (alarm_toggle), dialog);
- gtk_signal_connect (GTK_OBJECT (alarm_program), "toggled", GTK_SIGNAL_FUNC (alarm_toggle), dialog);
- gtk_signal_connect (GTK_OBJECT (alarm_audio), "toggled", GTK_SIGNAL_FUNC (alarm_toggle), dialog);
- gtk_signal_connect (GTK_OBJECT (alarm_mail), "toggled", GTK_SIGNAL_FUNC (alarm_toggle), dialog);
-
- /* alarm counts */
- store_to_spin (gui, "alarm-display-amount", ical->dalarm.count);
- store_to_spin (gui, "alarm-audio-amount", ical->aalarm.count);
- store_to_spin (gui, "alarm-program-amount", ical->palarm.count);
- store_to_spin (gui, "alarm-mail-amount", ical->malarm.count);
-
- store_to_alarm_unit (gui, "alarm-display-unit", ical->dalarm.units);
- store_to_alarm_unit (gui, "alarm-audio-unit", ical->aalarm.units);
- store_to_alarm_unit (gui, "alarm-program-unit", ical->palarm.units);
- store_to_alarm_unit (gui, "alarm-mail-unit", ical->malarm.units);
-
- store_to_editable (gui, "run-program", ical->palarm.data);
- store_to_editable (gui, "mail-to", ical->malarm.data);
-
- /* classification */
- if (strcmp (ical->class, "PUBLIC") == 0)
- store_to_toggle (gui, "classification-public", TRUE);
- if (strcmp (ical->class, "PRIVATE") == 0)
- store_to_toggle (gui, "classification-private", TRUE);
- if (strcmp (ical->class, "CONFIDENTIAL") == 0)
- store_to_toggle (gui, "classification-confidential", TRUE);
-
- /* recurrence rules */
-
- if (! ical->recur)
- return;
-
- switch (ical->recur->type) {
- case RECUR_DAILY:
- store_to_toggle (gui, "recurrence-rule-daily", TRUE);
- store_to_spin (gui, "recurrence-rule-daily-days", ical->recur->interval);
- break;
- case RECUR_WEEKLY:
- store_to_toggle (gui, "recurrence-rule-weekly", TRUE);
- store_to_spin (gui, "recurrence-rule-weekly-weeks", ical->recur->interval);
- if (ical->recur->weekday & (1 << 0))
- store_to_toggle (gui, "recurrence-rule-weekly-sun", TRUE);
- if (ical->recur->weekday & (1 << 1))
- store_to_toggle (gui, "recurrence-rule-weekly-mon", TRUE);
- if (ical->recur->weekday & (1 << 2))
- store_to_toggle (gui, "recurrence-rule-weekly-tue", TRUE);
- if (ical->recur->weekday & (1 << 3))
- store_to_toggle (gui, "recurrence-rule-weekly-wed", TRUE);
- if (ical->recur->weekday & (1 << 4))
- store_to_toggle (gui, "recurrence-rule-weekly-thu", TRUE);
- if (ical->recur->weekday & (1 << 5))
- store_to_toggle (gui, "recurrence-rule-weekly-fri", TRUE);
- if (ical->recur->weekday & (1 << 6))
- store_to_toggle (gui, "recurrence-rule-weekly-sat", TRUE);
- break;
- case RECUR_MONTHLY_BY_DAY:
- store_to_toggle (gui, "recurrence-rule-monthly", TRUE);
- store_to_toggle (gui, "recurrence-rule-monthly-on-day", TRUE);
- store_to_spin (gui, "recurrence-rule-monthly-day", ical->recur->u.month_day);
- store_to_spin (gui, "recurrence-rule-monthly-every-n-months", ical->recur->interval);
- break;
- case RECUR_MONTHLY_BY_POS:
- store_to_toggle (gui, "recurrence-rule-monthly", TRUE);
- store_to_toggle (gui, "recurrence-rule-monthly-weekday", TRUE);
- store_to_option (gui, "recurrence-rule-monthly-week", ical->recur->u.month_pos);
- store_to_option (gui, "recurrence-rule-monthly-day", ical->recur->weekday);
- store_to_spin (gui, "recurrence-rule-monthly-every-n-months", ical->recur->interval);
- break;
- case RECUR_YEARLY_BY_DAY:
- case RECUR_YEARLY_BY_MONTH:
- store_to_toggle (gui, "recurrence-rule-yearly", TRUE);
- store_to_spin (gui, "recurrence-rule-yearly-every-n-years", ical->recur->interval);
- break;
- }
-
-
- if (ical->recur->_enddate == 0) {
- if (ical->recur->duration == 0)
- store_to_toggle (gui, "recurrence-ending-date-repeat-forever", TRUE);
- else {
- store_to_toggle (gui, "recurrence-ending-date-end-after", TRUE);
- store_to_spin (gui, "recurrence-ending-date-end-after-count", ical->recur->duration);
- }
- } else {
- store_to_toggle (gui, "recurrence-ending-date-end-on", TRUE);
- /* Shorten by one day, as we store end-on date a day ahead */
- /* FIX ME is this correct? */
- store_to_gnome_dateedit (gui, "recurrence-ending-date-end-on-date", ical->recur->enddate - 86400);
- }
-
- /* fill the exceptions list */
- for (list = ical->exdate; list; list = list->next)
- append_exception (dialog, *((time_t *) list->data));
-}
-
-
-static void
-fill_in_dialog_from_defaults (EventEditorDialog *dialog)
-{
- time_t now = time (NULL);
- time_t soon = time_add_minutes (now, 30);
-
- store_to_editable (dialog->gui, "general-owner", "?");
-
- /* start and end time */
- store_to_gnome_dateedit (dialog->gui, "start-time", now);
- store_to_gnome_dateedit (dialog->gui, "end-time", soon);
-}
-
-
-static void
-free_exdate (iCalObject *ical)
-{
- GList *list;
-
- if (!ical->exdate)
- return;
-
- for (list = ical->exdate; list; list = list->next)
- g_free (list->data);
-
- g_list_free (ical->exdate);
- ical->exdate = NULL;
-}
-
-
-static void
-dialog_to_ical (EventEditorDialog *dialog)
-{
- iCalObject *ical = dialog->ical;
- gboolean all_day_event;
- GladeXML *gui = dialog->gui;
-
- /* general event information */
-
- if (ical->summary)
- g_free (ical->summary);
- ical->summary = extract_from_editable (gui, "general-summary");
-
- ical->dtstart = extract_from_gnome_dateedit (gui, "start-time");
- ical->dtend = extract_from_gnome_dateedit (gui, "end-time");
-
- all_day_event = extract_from_toggle (gui, "all-day-event");
-
- ical->dalarm.enabled = extract_from_toggle (gui, "alarm-display");
- ical->aalarm.enabled = extract_from_toggle (gui, "alarm-program");
- ical->palarm.enabled = extract_from_toggle (gui, "alarm-audio");
- ical->malarm.enabled = extract_from_toggle (gui, "alarm-mail");
-
- ical->dalarm.count = extract_from_spin (gui, "alarm-display-amount");
- ical->aalarm.count = extract_from_spin (gui, "alarm-audio-amount");
- ical->palarm.count = extract_from_spin (gui, "alarm-program-amount");
- ical->malarm.count = extract_from_spin (gui, "alarm-mail-amount");
-
- ical->dalarm.units = extract_from_alarm_unit (gui, "alarm-display-unit");
- ical->aalarm.units = extract_from_alarm_unit (gui, "alarm-audio-unit");
- ical->palarm.units = extract_from_alarm_unit (gui, "alarm-program-unit");
- ical->malarm.units = extract_from_alarm_unit (gui, "alarm-mail-unit");
-
- ical->palarm.data = g_strdup (extract_from_editable (gui, "run-program"));
- ical->malarm.data = g_strdup (extract_from_editable (gui, "mail-to"));
-
- if (extract_from_toggle (gui, "classification-public"))
- ical->class = g_strdup ("PUBLIC");
- else if (extract_from_toggle (gui, "classification-private"))
- ical->class = g_strdup ("PRIVATE");
- else /* "classification-confidential" */
- ical->class = g_strdup ("CONFIDENTIAL");
-
-
- /* recurrence information */
-
- if (extract_from_toggle (gui, "recurrence-rule-none"))
- return; /* done */
- if (!ical->recur)
- ical->recur = g_new0 (Recurrence, 1);
-
- if (extract_from_toggle (gui, "recurrence-rule-daily")) {
- ical->recur->type = RECUR_DAILY;
- ical->recur->interval = extract_from_spin (gui, "recurrence-rule-daily-days");
- }
- if (extract_from_toggle (gui, "recurrence-rule-weekly")) {
- ical->recur->type = RECUR_WEEKLY;
- ical->recur->interval = extract_from_spin (gui, "recurrence-rule-weekly-weeks");
- ical->recur->weekday = 0;
-
- if (extract_from_toggle (gui, "recurrence-rule-weekly-sun"))
- ical->recur->weekday |= 1 << 0;
- if (extract_from_toggle (gui, "recurrence-rule-weekly-mon"))
- ical->recur->weekday |= 1 << 1;
- if (extract_from_toggle (gui, "recurrence-rule-weekly-tue"))
- ical->recur->weekday |= 1 << 2;
- if (extract_from_toggle (gui, "recurrence-rule-weekly-wed"))
- ical->recur->weekday |= 1 << 3;
- if (extract_from_toggle (gui, "recurrence-rule-weekly-thu"))
- ical->recur->weekday |= 1 << 4;
- if (extract_from_toggle (gui, "recurrence-rule-weekly-fri"))
- ical->recur->weekday |= 1 << 5;
- if (extract_from_toggle (gui, "recurrence-rule-weekly-sat"))
- ical->recur->weekday |= 1 << 6;
- }
- if (extract_from_toggle (gui, "recurrence-rule-monthly")) {
- if (extract_from_toggle (gui, "recurrence-rule-monthly-on-day")) {
- /* by day of in the month (ex: the 5th) */
- ical->recur->type = RECUR_MONTHLY_BY_DAY;
- ical->recur->u.month_day = extract_from_spin (gui, "recurrence-rule-monthly-day");
-
- }
- else { /* "recurrence-rule-monthly-weekday" is TRUE */
- /* by position on the calender (ex: 2nd monday) */
- ical->recur->type = RECUR_MONTHLY_BY_POS;
- ical->recur->u.month_pos = extract_from_option (gui, "recurrence-rule-monthly-week");
- ical->recur->weekday = extract_from_option (gui, "recurrence-rule-monthly-day");
- }
- ical->recur->interval = extract_from_spin (gui, "recurrence-rule-monthly-every-n-months");
- }
- if (extract_from_toggle (gui, "recurrence-rule-yearly")) {
- ical->recur->type = RECUR_YEARLY_BY_DAY;
- ical->recur->interval = extract_from_spin (gui, "recurrence-rule-yearly-every-n-years");
- /* FIXME: need to specify anything else? I am assuming the code will look at the dtstart
- * to figure out when to recur. - Federico
- */
- }
-
- /* recurrence ending date */
- if (extract_from_toggle (gui, "recurrence-ending-date-repeat-forever")) {
- ical->recur->_enddate = 0;
- ical->recur->enddate = 0;
- ical->recur->duration = 0;
- }
- if (extract_from_toggle (gui, "recurrence-ending-date-end-on")) {
- /* Also here, to ensure that the event is used, we add 86400 secs to get
- get next day, in accordance to the RFC */
- ical->recur->_enddate = extract_from_gnome_dateedit (gui, "recurrence-ending-date-end-on-date") + 86400;
- ical->recur->enddate = ical->recur->_enddate;
- ical->recur->duration = 0;
- }
- if (extract_from_toggle (gui, "recurrence-ending-date-end-after")) {
- ical->recur->duration = extract_from_spin (gui, "recurrence-ending-date-end-after-count");
- ical_object_compute_end (ical);
- }
-
-
- /* get exceptions from clist into ical->exdate */
- {
- int i;
- time_t *t;
- GtkCList *exception_list = GTK_CLIST (glade_xml_get_widget (dialog->gui, "recurrence-exceptions-list"));
-
- free_exdate (ical);
-
- for (i = 0; i < exception_list->rows; i++) {
- t = gtk_clist_get_row_data (exception_list, i);
- ical->exdate = g_list_prepend (ical->exdate, t);
- }
- }
-}
-
-
-static void
-ee_ok (GtkWidget *widget, EventEditorDialog *dialog)
-{
- dialog_to_ical (dialog);
-
- if (dialog->ical->new)
- gnome_calendar_add_object (dialog->gnome_cal, dialog->ical);
- else
- gnome_calendar_object_changed (dialog->gnome_cal,
- dialog->ical,
- CHANGE_ALL);
- dialog->ical->new = 0;
-}
-
-
-static void
-ee_cancel (GtkWidget *widget, EventEditorDialog *dialog)
-{
- if (dialog->ical) {
- ical_object_unref (dialog->ical);
- dialog->ical = NULL;
- }
-}
-
-
-static void
-alarm_toggle (GtkToggleButton *toggle, EventEditorDialog *dialog)
-{
- GtkWidget *alarm_display = glade_xml_get_widget (dialog->gui, "alarm-display");
- GtkWidget *alarm_program = glade_xml_get_widget (dialog->gui, "alarm-program");
- GtkWidget *alarm_audio = glade_xml_get_widget (dialog->gui, "alarm-audio");
- GtkWidget *alarm_mail = glade_xml_get_widget (dialog->gui, "alarm-mail");
- GtkWidget *alarm_amount, *alarm_unit;
-
- if (GTK_WIDGET (toggle) == alarm_display) {
- alarm_amount = glade_xml_get_widget (dialog->gui, "alarm-display-amount");
- alarm_unit = glade_xml_get_widget (dialog->gui, "alarm-display-unit");
- }
- if (GTK_WIDGET (toggle) == alarm_audio) {
- alarm_amount = glade_xml_get_widget (dialog->gui, "alarm-audio-amount");
- alarm_unit = glade_xml_get_widget (dialog->gui, "alarm-audio-unit");
- }
- if (GTK_WIDGET (toggle) == alarm_program) {
- GtkWidget *run_program;
- alarm_amount = glade_xml_get_widget (dialog->gui, "alarm-program-amount");
- alarm_unit = glade_xml_get_widget (dialog->gui, "alarm-program-unit");
- run_program = glade_xml_get_widget (dialog->gui, "run-program-file-entry");
- gtk_widget_set_sensitive (run_program, toggle->active);
- }
- if (GTK_WIDGET (toggle) == alarm_mail) {
- GtkWidget *mail_to;
- alarm_amount = glade_xml_get_widget (dialog->gui, "alarm-mail-amount");
- alarm_unit = glade_xml_get_widget (dialog->gui, "alarm-mail-unit");
- mail_to = glade_xml_get_widget (dialog->gui, "mail-to");
- gtk_widget_set_sensitive (mail_to, toggle->active);
- }
-
- gtk_widget_set_sensitive (alarm_amount, toggle->active);
- gtk_widget_set_sensitive (alarm_unit, toggle->active);
-}
-
-
-
-/*
- * Checks if the day range occupies all the day, and if so, check the
- * box accordingly
- */
-static void
-check_all_day (EventEditorDialog *dialog)
-{
- time_t ev_start = extract_from_gnome_dateedit (dialog->gui, "start-time");
- time_t ev_end = extract_from_gnome_dateedit (dialog->gui, "end-time");
-
- /* all day event checkbox */
- if (get_time_t_hour (ev_start) <= day_begin &&
- get_time_t_hour (ev_end) >= day_end)
- store_to_toggle (dialog->gui, "all-day-event", TRUE);
- else
- store_to_toggle (dialog->gui, "all-day-event", FALSE);
-}
-
-
-/*
- * Callback: all day event box clicked
- */
-static void
-set_all_day (GtkToggleButton *toggle, EventEditorDialog *dialog)
-{
- struct tm tm;
- time_t start_t;
-
- start_t = extract_from_gnome_dateedit (dialog->gui, "start-time");
- tm = *localtime (&start_t);
- tm.tm_hour = day_begin;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- store_to_gnome_dateedit (dialog->gui, "start-time", mktime (&tm));
-
- if (toggle->active)
- tm.tm_hour = day_end;
- else
- tm.tm_hour++;
-
- store_to_gnome_dateedit (dialog->gui, "end-time", mktime (&tm));
-}
-
-
-/*
- * Callback: checks that the dates are start < end
- */
-static void
-check_dates (GnomeDateEdit *gde, EventEditorDialog *dialog)
-{
- time_t start, end;
- struct tm tm_start, tm_end;
- GtkWidget *start_time = glade_xml_get_widget (dialog->gui, "start-time");
- GtkWidget *end_time = glade_xml_get_widget (dialog->gui, "end-time");
-
-
- //start = gnome_date_edit_get_date (GNOME_DATE_EDIT (ee->start_time));
- start = extract_from_gnome_dateedit (dialog->gui, "start-time");
- //end = gnome_date_edit_get_date (GNOME_DATE_EDIT (ee->end_time));
- end = extract_from_gnome_dateedit (dialog->gui, "end-time");
-
- if (start > end) {
- tm_start = *localtime (&start);
- tm_end = *localtime (&end);
-
- if (GTK_WIDGET (gde) == start_time) {
- tm_end.tm_year = tm_start.tm_year;
- tm_end.tm_mon = tm_start.tm_mon;
- tm_end.tm_mday = tm_start.tm_mday;
-
- gnome_date_edit_set_time (GNOME_DATE_EDIT (end_time), mktime (&tm_end));
- } else if (GTK_WIDGET (gde) == end_time) {
- tm_start.tm_year = tm_end.tm_year;
- tm_start.tm_mon = tm_end.tm_mon;
- tm_start.tm_mday = tm_end.tm_mday;
-
- //gnome_date_edit_set_time (GNOME_DATE_EDIT (ee->start_time), mktime (&tm_start));
- }
- }
-}
-
-
-/*
- * Callback: checks that start_time < end_time and whether the
- * selected hour range spans all of the day
- */
-static void
-check_times (GnomeDateEdit *gde, EventEditorDialog *dialog)
-{
- time_t start, end;
- struct tm tm_start, tm_end;
- GtkWidget *start_time = glade_xml_get_widget (dialog->gui, "start-time");
- GtkWidget *end_time = glade_xml_get_widget (dialog->gui, "end-time");
-
-
- gdk_pointer_ungrab (GDK_CURRENT_TIME);
- gdk_flush ();
-
- start = gnome_date_edit_get_date (GNOME_DATE_EDIT (start_time));
- end = gnome_date_edit_get_date (GNOME_DATE_EDIT (end_time));
-
- if (start >= end) {
- tm_start = *localtime (&start);
- tm_end = *localtime (&end);
-
- if (GTK_WIDGET (gde) == start_time) {
- tm_end.tm_min = tm_start.tm_min;
- tm_end.tm_sec = tm_start.tm_sec;
-
- tm_end.tm_hour = tm_start.tm_hour + 1;
-
- if (tm_end.tm_hour >= 24) {
- tm_end.tm_hour = 24; /* mktime() will bump the day */
- tm_end.tm_min = 0;
- tm_end.tm_sec = 0;
- }
-
- gnome_date_edit_set_time (GNOME_DATE_EDIT (end_time), mktime (&tm_end));
- } else if (GTK_WIDGET (gde) == end_time) {
- tm_start.tm_min = tm_end.tm_min;
- tm_start.tm_sec = tm_end.tm_sec;
-
- tm_start.tm_hour = tm_end.tm_hour - 1;
-
- if (tm_start.tm_hour < 0) {
- tm_start.tm_hour = 0;
- tm_start.tm_min = 0;
- tm_start.tm_min = 0;
- }
-
- gnome_date_edit_set_time (GNOME_DATE_EDIT (start_time), mktime (&tm_start));
- }
- }
-
- /* Check whether the event spans the whole day */
-
- check_all_day (dialog);
-}
-
-
-static void
-recurrence_toggled (GtkWidget *radio, EventEditorDialog *dialog)
-{
- GtkWidget *recurrence_rule_notebook = glade_xml_get_widget (dialog->gui, "recurrence-rule-notebook");
-
- GtkWidget *recurrence_rule_none = glade_xml_get_widget (dialog->gui, "recurrence-rule-none");
- GtkWidget *recurrence_rule_daily = glade_xml_get_widget (dialog->gui, "recurrence-rule-daily");
- GtkWidget *recurrence_rule_weekly = glade_xml_get_widget (dialog->gui, "recurrence-rule-weekly");
- GtkWidget *recurrence_rule_monthly = glade_xml_get_widget (dialog->gui, "recurrence-rule-monthly");
- GtkWidget *recurrence_rule_yearly = glade_xml_get_widget (dialog->gui, "recurrence-rule-yearly");
-
- if (radio == recurrence_rule_none)
- gtk_notebook_set_page (GTK_NOTEBOOK (recurrence_rule_notebook), 0);
- if (radio == recurrence_rule_daily)
- gtk_notebook_set_page (GTK_NOTEBOOK (recurrence_rule_notebook), 1);
- if (radio == recurrence_rule_weekly)
- gtk_notebook_set_page (GTK_NOTEBOOK (recurrence_rule_notebook), 2);
- if (radio == recurrence_rule_monthly)
- gtk_notebook_set_page (GTK_NOTEBOOK (recurrence_rule_notebook), 3);
- if (radio == recurrence_rule_yearly)
- gtk_notebook_set_page (GTK_NOTEBOOK (recurrence_rule_notebook), 4);
-}
-
-
-static char *
-get_exception_string (time_t t)
-{
- static char buf[256];
-
- strftime (buf, sizeof(buf), _("%a %b %d %Y"), localtime (&t));
- return buf;
-}
-
-
-static void
-append_exception (EventEditorDialog *dialog, time_t t)
-{
- time_t *tt;
- char *c[1];
- int i;
- GtkCList *exception_list = GTK_CLIST (glade_xml_get_widget (dialog->gui, "recurrence-exceptions-list"));
-
- c[0] = get_exception_string (t);
-
- tt = g_new (time_t, 1);
- *tt = t;
-
- i = gtk_clist_append (exception_list, c);
- gtk_clist_set_row_data (exception_list, i, tt);
- gtk_clist_select_row (exception_list, i, 0);
-
- //gtk_widget_set_sensitive (ee->recur_ex_vbox, TRUE);
-}
-
-
-static void
-recurrence_exception_added (GtkWidget *widget, EventEditorDialog *dialog)
-{
- //GtkWidget *exception_date = glade_xml_get_widget (dialog->gui, "recurrence-exceptions-date");
- time_t t = extract_from_gnome_dateedit (dialog->gui, "recurrence-exceptions-date");
- append_exception (dialog, t);
-}
-
-
-static void
-recurrence_exception_deleted (GtkWidget *widget, EventEditorDialog *dialog)
-{
- GtkCList *clist;
- int sel, length;
-
- clist = GTK_CLIST (glade_xml_get_widget (dialog->gui, "recurrence-exceptions-list"));
- if (! clist->selection)
- return;
- sel = GPOINTER_TO_INT(clist->selection->data);
-
- g_free (gtk_clist_get_row_data (clist, sel)); /* free the time_t stored there */
-
- gtk_clist_remove (clist, sel);
- length = g_list_length(clist->row_list);
- if (sel >= length)
- sel--;
- gtk_clist_select_row (clist, sel, 0);
-
- //if (clist->rows == 0)
- // gtk_widget_set_sensitive (ee->recur_ex_vbox, FALSE);
-}
-
-
-static void
-recurrence_exception_changed (GtkWidget *widget, EventEditorDialog *dialog)
-{
- GtkCList *clist;
- time_t *t;
- int sel;
-
- clist = GTK_CLIST (glade_xml_get_widget (dialog->gui, "recurrence-exceptions-list"));
- if (! clist->selection)
- return;
-
- sel = GPOINTER_TO_INT(clist->selection->data);
-
- t = gtk_clist_get_row_data (clist, sel);
- *t = extract_from_gnome_dateedit (dialog->gui, "recurrence-exceptions-date");
-
- gtk_clist_set_text (clist, sel, 0, get_exception_string (*t));
-}
-
-
-
-GtkWidget *event_editor_new (GnomeCalendar *gcal, iCalObject *ical)
-{
- EventEditorDialog *dialog = g_new0 (EventEditorDialog, 1);
-
- dialog->ical = ical;
- dialog->gnome_cal = gcal;
-
- printf ("glade_xml_new (%s, NULL)\n",
- EVOLUTION_GLADEDIR "/event-editor-dialog.glade");
-
- dialog->gui = glade_xml_new (EVOLUTION_GLADEDIR
- "/event-editor-dialog.glade",
- NULL);
-
- dialog->dialog = glade_xml_get_widget (dialog->gui,
- "event-editor-dialog");
-
- gnome_dialog_button_connect (GNOME_DIALOG (dialog->dialog),
- 0, GTK_SIGNAL_FUNC(ee_ok), dialog);
- gnome_dialog_button_connect (GNOME_DIALOG (dialog->dialog),
- 1, GTK_SIGNAL_FUNC(ee_cancel), dialog);
-
-
- {
- GtkWidget *start_time = glade_xml_get_widget (dialog->gui, "start-time");
- GtkWidget *end_time = glade_xml_get_widget (dialog->gui, "end-time");
-
- gtk_signal_connect (GTK_OBJECT (start_time), "date_changed",
- GTK_SIGNAL_FUNC (check_dates), dialog);
- gtk_signal_connect (GTK_OBJECT (start_time), "time_changed",
- GTK_SIGNAL_FUNC (check_times), dialog);
-
- gtk_signal_connect (GTK_OBJECT (end_time), "date_changed",
- GTK_SIGNAL_FUNC (check_dates), dialog);
- gtk_signal_connect (GTK_OBJECT (end_time), "time_changed",
- GTK_SIGNAL_FUNC (check_times), dialog);
- }
-
-
- {
- GtkWidget *all_day_checkbox = glade_xml_get_widget (dialog->gui, "all-day-event");
- gtk_signal_connect (GTK_OBJECT (all_day_checkbox), "toggled", GTK_SIGNAL_FUNC (set_all_day), dialog);
- }
-
-
- {
- GtkWidget *recurrence_rule_none = glade_xml_get_widget (dialog->gui, "recurrence-rule-none");
- GtkWidget *recurrence_rule_daily = glade_xml_get_widget (dialog->gui, "recurrence-rule-daily");
- GtkWidget *recurrence_rule_weekly = glade_xml_get_widget (dialog->gui, "recurrence-rule-weekly");
- GtkWidget *recurrence_rule_monthly = glade_xml_get_widget (dialog->gui, "recurrence-rule-monthly");
- GtkWidget *recurrence_rule_yearly = glade_xml_get_widget (dialog->gui, "recurrence-rule-yearly");
-
- gtk_signal_connect (GTK_OBJECT (recurrence_rule_none), "toggled",
- GTK_SIGNAL_FUNC (recurrence_toggled), dialog);
- gtk_signal_connect (GTK_OBJECT (recurrence_rule_daily), "toggled",
- GTK_SIGNAL_FUNC (recurrence_toggled), dialog);
- gtk_signal_connect (GTK_OBJECT (recurrence_rule_weekly), "toggled",
- GTK_SIGNAL_FUNC (recurrence_toggled), dialog);
- gtk_signal_connect (GTK_OBJECT (recurrence_rule_monthly), "toggled",
- GTK_SIGNAL_FUNC (recurrence_toggled), dialog);
- gtk_signal_connect (GTK_OBJECT (recurrence_rule_yearly), "toggled",
- GTK_SIGNAL_FUNC (recurrence_toggled), dialog);
-
- }
-
-
- {
- GtkWidget *recurrence_exception_add = glade_xml_get_widget (dialog->gui, "recurrence-exceptions-add");
- GtkWidget *recurrence_exception_delete = glade_xml_get_widget (dialog->gui, "recurrence-exceptions-delete");
- GtkWidget *recurrence_exception_change = glade_xml_get_widget (dialog->gui, "recurrence-exceptions-change");
-
- gtk_signal_connect (GTK_OBJECT (recurrence_exception_add), "clicked",
- GTK_SIGNAL_FUNC (recurrence_exception_added), dialog);
- gtk_signal_connect (GTK_OBJECT (recurrence_exception_delete), "clicked",
- GTK_SIGNAL_FUNC (recurrence_exception_deleted), dialog);
- gtk_signal_connect (GTK_OBJECT (recurrence_exception_change), "clicked",
- GTK_SIGNAL_FUNC (recurrence_exception_changed), dialog);
- }
-
-
-
- if (ical->new)
- fill_in_dialog_from_defaults (dialog);
- else
- fill_in_dialog_from_ical (dialog);
-
-
- gnome_dialog_run (GNOME_DIALOG(dialog->dialog));
-
- gnome_dialog_close (GNOME_DIALOG(dialog->dialog));
-
- return dialog->dialog;
-}
-
-
-void event_editor_new_whole_day (GnomeCalendar *owner, time_t day)
-{
- struct tm tm;
- iCalObject *ico;
- GtkWidget *ee;
-
- g_return_if_fail (owner != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (owner));
-
- ico = ical_new ("", user_name, "");
- ico->new = TRUE;
-
- tm = *localtime (&day);
-
- /* Set the start time of the event to the beginning of the day */
-
- tm.tm_hour = day_begin;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- ico->dtstart = mktime (&tm);
-
- /* Set the end time of the event to the end of the day */
-
- tm.tm_hour = day_end;
- ico->dtend = mktime (&tm);
-
- /* Launch the event editor */
-
- ee = event_editor_new (owner, ico);
-}
-
-
-
-GtkWidget *make_date_edit (void)
-{
- return date_edit_new (time (NULL), FALSE);
-}
-
-
-GtkWidget *make_date_edit_with_time (void)
-{
- return date_edit_new (time (NULL), TRUE);
-}
-
-
-GtkWidget *date_edit_new (time_t the_time, int show_time)
-{
- return gnome_date_edit_new_flags (the_time,
- ((show_time ? GNOME_DATE_EDIT_SHOW_TIME : 0)
- | (am_pm_flag ? 0 : GNOME_DATE_EDIT_24_HR)
- | (week_starts_on_monday
- ? GNOME_DATE_EDIT_WEEK_STARTS_ON_MONDAY
- : 0)));
-}
-
-
-
-GtkWidget *
-make_spin_button (int val, int low, int high)
-{
- GtkAdjustment *adj;
- GtkWidget *spin;
-
- adj = GTK_ADJUSTMENT (gtk_adjustment_new (val, low, high, 1, 10, 10));
- spin = gtk_spin_button_new (adj, 0.5, 0);
- gtk_widget_set_usize (spin, 60, 0);
-
- return spin;
-}
-
-
-/* todo
-
- build some of the recur stuff by hand to take into account
- the start-on-monday preference?
-
- get the apply button to work right
-
- make the properties stuff unglobal
-
- figure out why alarm units aren't sticking between edits
-
- closing the dialog window with the wm caused a crash
- Gtk-WARNING **: invalid cast from `(unknown)' to `GnomeDialog'
- on line 669: gnome_dialog_close (GNOME_DIALOG(dialog->dialog));
- */
-