aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/eventedit.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/eventedit.c')
-rw-r--r--calendar/gui/eventedit.c96
1 files changed, 40 insertions, 56 deletions
diff --git a/calendar/gui/eventedit.c b/calendar/gui/eventedit.c
index b4063bb17f..de5da85fa6 100644
--- a/calendar/gui/eventedit.c
+++ b/calendar/gui/eventedit.c
@@ -209,13 +209,6 @@ set_all_day (GtkToggleButton *toggle, EventEditor *ee)
gnome_date_edit_set_time (GNOME_DATE_EDIT (ee->end_time), mktime (tm));
}
-static void
-recur_check_toggled (GtkToggleButton *toggle, EventEditor *ee)
-{
- gtk_widget_set_sensitive (ee->recur_page_label, toggle->active);
- gtk_widget_set_sensitive (ee->recur_table, toggle->active);
-}
-
static GtkWidget *
event_editor_setup_time_frame (EventEditor *ee)
{
@@ -231,7 +224,12 @@ event_editor_setup_time_frame (EventEditor *ee)
gtk_container_add (GTK_CONTAINER (frame), ee->general_time_table);
/* 1. Start time */
+ if (ee->ical->dtstart == 0){
+ ee->ical->dtstart = time (NULL);
+ ee->ical->dtend = time_add_minutes (ee->ical->dtstart, 30);
+ }
ee->start_time = start_time = gnome_date_edit_new (ee->ical->dtstart, TRUE);
+ print_time_t (ee->ical->dtstart);
gnome_date_edit_set_popup_range ((GnomeDateEdit *) start_time, day_begin, day_end);
gtk_signal_connect (GTK_OBJECT (start_time), "date_changed",
GTK_SIGNAL_FUNC (check_dates), ee);
@@ -272,13 +270,6 @@ event_editor_setup_time_frame (EventEditor *ee)
4, 0);
ee_check_all_day (ee);
- /* 4. Recurring event checkbox */
- ee->general_recur = gtk_check_button_new_with_label (_("Recurring event"));
- gtk_table_attach (t, ee->general_recur, 3, 4, 2, 3,
- GTK_EXPAND | GTK_FILL | GTK_SHRINK,
- GTK_FILL | GTK_SHRINK,
- 4, 0);
-
return frame;
}
@@ -514,7 +505,7 @@ option_menu_active_number (GtkWidget *omenu)
return ni->num;
}
-static void
+static int
ee_store_recur_rule_to_ical (EventEditor *ee)
{
iCalObject *ical;
@@ -529,14 +520,21 @@ ee_store_recur_rule_to_ical (EventEditor *ee)
i = g_slist_length (ee->recur_rr_group) - i - 1; /* buttons are stored in reverse order of insertion */
+ /* NOne selected, no rule to be stored */
+ if (i == 0)
+ return 0;
+
+ if (!ical->recur)
+ ical->recur = g_new0 (Recurrence, 1);
+
switch (i) {
- case 0:
+ case 1:
/* Daily */
ical->recur->type = RECUR_DAILY;
ical->recur->interval = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (ee->recur_rr_day_period));
break;
- case 1:
+ case 2:
/* Weekly */
ical->recur->type = RECUR_WEEKLY;
ical->recur->interval = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (ee->recur_rr_week_period));
@@ -552,7 +550,7 @@ ee_store_recur_rule_to_ical (EventEditor *ee)
break;
- case 2:
+ case 3:
/* Monthly */
if (GTK_WIDGET_SENSITIVE (ee->recur_rr_month_date)) {
@@ -574,7 +572,7 @@ ee_store_recur_rule_to_ical (EventEditor *ee)
break;
- case 3:
+ case 4:
/* Yearly */
ical->recur->type = RECUR_YEARLY_BY_DAY;
/* FIXME: need to specify anything else? I am assuming the code will look at the dtstart
@@ -585,6 +583,7 @@ ee_store_recur_rule_to_ical (EventEditor *ee)
default:
g_assert_not_reached ();
}
+ return 1;
}
static void
@@ -668,16 +667,19 @@ ee_store_recur_exceptions_to_ical (EventEditor *ee)
static void
ee_store_recur_values_to_ical (EventEditor *ee)
{
- if (GTK_TOGGLE_BUTTON (ee->general_recur)->active) {
- if (!ee->ical->recur)
- ee->ical->recur = g_new0 (Recurrence, 1);
-
- ee_store_recur_rule_to_ical (ee);
+ if (ee_store_recur_rule_to_ical (ee)){
ee_store_recur_end_to_ical (ee);
ee_store_recur_exceptions_to_ical (ee);
} else if (ee->ical->recur) {
g_free (ee->ical->recur);
ee->ical->recur = NULL;
+ if (ee->ical->exdate){
+ GList *l = ee->ical->exdate;
+
+ for (; l; l = l->next)
+ g_free (l->data);
+ g_list_free (l);
+ }
}
}
@@ -844,6 +846,7 @@ ee_init_summary_page (EventEditor *ee)
struct {
char *name;
} recurrence_types [] = {
+ { N_("None") },
{ N_("Daily") },
{ N_("Weekly") },
{ N_("Monthly") },
@@ -862,7 +865,7 @@ recurrence_toggled (GtkRadioButton *radio, EventEditor *ee)
for (which = 0; list; list = list->next, which++) {
if (list->data == radio) {
- gtk_notebook_set_page (GTK_NOTEBOOK (ee->recur_rr_notebook), 3 - which);
+ gtk_notebook_set_page (GTK_NOTEBOOK (ee->recur_rr_notebook), 4 - which);
return;
}
}
@@ -933,7 +936,7 @@ ee_rp_init_rule (EventEditor *ee)
{
static char *day_names [] = { N_("Mon"), N_("Tue"), N_("Wed"), N_("Thu"), N_("Fri"), N_("Sat"), N_("Sun") };
GtkWidget *r, *re, *r1, *f, *vbox, *hbox, *b, *week_hbox, *week_day, *w;
- GtkWidget *daily, *weekly, *monthly, *yearly;
+ GtkWidget *none, *daily, *weekly, *monthly, *yearly;
GtkNotebook *notebook;
GSList *group;
int i, page, day_period, week_period, month_period, year_period;
@@ -973,37 +976,38 @@ ee_rp_init_rule (EventEditor *ee)
/* Determine which should be the default selection */
+ page = 0;
if (ee->ical->recur) {
enum RecurType type = ee->ical->recur->type;
int interval = ee->ical->recur->interval;
switch (type) {
case RECUR_DAILY:
- page = 0;
+ page = 1;
day_period = interval;
break;
case RECUR_WEEKLY:
- page = 1;
+ page = 2;
week_period = interval;
week_vector = ee->ical->recur->weekday;
break;
case RECUR_MONTHLY_BY_POS:
- page = 2;
+ page = 3;
month_period = interval;
def_pos = ee->ical->recur->u.month_pos;
default_day = ee->ical->recur->u.month_day;
break;
case RECUR_MONTHLY_BY_DAY:
- page = 2;
+ page = 3;
month_period = interval;
default_day = ee->ical->recur->u.month_day;
break;
case RECUR_YEARLY_BY_MONTH:
- page = 3;
+ page = 4;
year_period = interval;
break;
@@ -1028,6 +1032,9 @@ ee_rp_init_rule (EventEditor *ee)
ee->recur_rr_group = group;
+ /* 0. No recurrence */
+ none = gtk_label_new ("");
+
/* 1. The daily recurrence */
daily = gtk_vbox_new (FALSE, 0);
@@ -1123,6 +1130,7 @@ ee_rp_init_rule (EventEditor *ee)
/* Finish setting this up */
+ gtk_notebook_append_page (notebook, none, gtk_label_new (""));
gtk_notebook_append_page (notebook, daily, gtk_label_new (""));
gtk_notebook_append_page (notebook, weekly, gtk_label_new (""));
gtk_notebook_append_page (notebook, monthly, gtk_label_new (""));
@@ -1144,7 +1152,6 @@ ee_rp_init_rule (EventEditor *ee)
static void
sensitize_by_toggle (GtkToggleButton *toggle, gpointer data)
{
- gtk_widget_set_sensitive (GTK_WIDGET (data), toggle->active);
}
static void
@@ -1197,12 +1204,6 @@ ee_rp_init_ending_date (EventEditor *ee)
ee->recur_ed_end_on = widget = gnome_date_edit_new (enddate, FALSE);
gtk_box_pack_start (GTK_BOX (ihbox), widget, FALSE, FALSE, 0);
- gtk_signal_connect (GTK_OBJECT (radio1), "toggled",
- (GtkSignalFunc) sensitize_by_toggle,
- ihbox);
-
- gtk_widget_set_sensitive (ihbox, FALSE);
-
/* end after n occurrences */
hbox = gtk_hbox_new (FALSE, 0);
@@ -1226,12 +1227,6 @@ ee_rp_init_ending_date (EventEditor *ee)
widget = gtk_label_new (_("occurrence(s)"));
gtk_box_pack_start (GTK_BOX (ihbox), widget, FALSE, FALSE, 0);
- gtk_signal_connect (GTK_OBJECT (radio2), "toggled",
- (GtkSignalFunc) sensitize_by_toggle,
- ihbox);
-
- gtk_widget_set_sensitive (ihbox, FALSE);
-
/* Activate appropriate item */
if (ee->ical->recur) {
@@ -1412,17 +1407,6 @@ ee_init_recurrence_page (EventEditor *ee)
ee_rp_init_rule (ee);
ee_rp_init_ending_date (ee);
ee_rp_init_exceptions (ee);
-
- /* Make the recurrence button sensitize the recurrence page */
-
- recur_check_toggled (GTK_TOGGLE_BUTTON (ee->general_recur), ee);
-
- gtk_signal_connect (GTK_OBJECT (ee->general_recur), "toggled",
- (GtkSignalFunc) recur_check_toggled,
- ee);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (ee->general_recur),
- (ee->ical->recur != NULL));
}
static void
@@ -1484,7 +1468,7 @@ event_editor_new (GnomeCalendar *gcal, iCalObject *ical)
if (ical == 0){
ical = ical_new ("", user_name, "");
- ical->new = 1;
+ ical->new = 1;
}
ical->user_data = ee; /* so that the world can know we are editing it */