From 3b205698762afcd86ac79595960253d84aff5487 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 6 Mar 2013 20:27:31 -0500 Subject: Convert all "week-start-day" properties to GDateWeekday. --- calendar/gui/dialogs/comp-editor.c | 19 +++-- calendar/gui/dialogs/comp-editor.h | 4 +- calendar/gui/dialogs/recurrence-page.c | 126 ++++++++++++++++++++++++++++----- 3 files changed, 118 insertions(+), 31 deletions(-) (limited to 'calendar/gui/dialogs') diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index cb7de1f881..f36bebc694 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -108,7 +108,7 @@ struct _CompEditorPrivate { icaltimezone *zone; gboolean use_24_hour_format; - gint week_start_day; + GDateWeekday week_start_day; gint work_day_end_hour; gint work_day_end_minute; @@ -1428,7 +1428,7 @@ comp_editor_set_property (GObject *object, case PROP_WEEK_START_DAY: comp_editor_set_week_start_day ( COMP_EDITOR (object), - g_value_get_int (value)); + g_value_get_enum (value)); return; case PROP_WORK_DAY_END_HOUR: @@ -1515,7 +1515,7 @@ comp_editor_get_property (GObject *object, return; case PROP_WEEK_START_DAY: - g_value_set_int ( + g_value_set_enum ( value, comp_editor_get_week_start_day ( COMP_EDITOR (object))); return; @@ -1909,13 +1909,12 @@ comp_editor_class_init (CompEditorClass *class) g_object_class_install_property ( object_class, PROP_WEEK_START_DAY, - g_param_spec_int ( + g_param_spec_enum ( "week-start-day", "Week Start Day", NULL, - 0, /* Monday */ - 6, /* Sunday */ - 0, + E_TYPE_DATE_WEEKDAY, + G_DATE_MONDAY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -2557,7 +2556,7 @@ comp_editor_set_use_24_hour_format (CompEditor *editor, g_object_notify (G_OBJECT (editor), "use-24-hour-format"); } -gint +GDateWeekday comp_editor_get_week_start_day (CompEditor *editor) { g_return_val_if_fail (IS_COMP_EDITOR (editor), 0); @@ -2567,10 +2566,10 @@ comp_editor_get_week_start_day (CompEditor *editor) void comp_editor_set_week_start_day (CompEditor *editor, - gint week_start_day) + GDateWeekday week_start_day) { g_return_if_fail (IS_COMP_EDITOR (editor)); - g_return_if_fail (week_start_day >= 0 && week_start_day < 7); + g_return_if_fail (g_date_valid_weekday (week_start_day)); if (week_start_day == editor->priv->week_start_day) return; diff --git a/calendar/gui/dialogs/comp-editor.h b/calendar/gui/dialogs/comp-editor.h index b343081dcc..6721a87978 100644 --- a/calendar/gui/dialogs/comp-editor.h +++ b/calendar/gui/dialogs/comp-editor.h @@ -134,9 +134,9 @@ gboolean comp_editor_get_use_24_hour_format void comp_editor_set_use_24_hour_format (CompEditor *editor, gboolean use_24_hour_format); -gint comp_editor_get_week_start_day (CompEditor *editor); +GDateWeekday comp_editor_get_week_start_day (CompEditor *editor); void comp_editor_set_week_start_day (CompEditor *editor, - gint week_start_day); + GDateWeekday week_start_day); gint comp_editor_get_work_day_end_hour (CompEditor *editor); void comp_editor_set_work_day_end_hour diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c index 3dd6d7ce2c..3ceb08476e 100644 --- a/calendar/gui/dialogs/recurrence-page.c +++ b/calendar/gui/dialogs/recurrence-page.c @@ -748,8 +748,33 @@ simple_recur_to_comp (RecurrencePage *rpage, r.freq = e_dialog_combo_box_get (priv->interval_unit_combo, freq_map); r.interval = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON (priv->interval_value)); - r.week_start = ICAL_SUNDAY_WEEKDAY + - comp_editor_get_week_start_day (editor); + + switch (comp_editor_get_week_start_day (editor)) { + case G_DATE_MONDAY: + r.week_start = ICAL_MONDAY_WEEKDAY; + break; + case G_DATE_TUESDAY: + r.week_start = ICAL_TUESDAY_WEEKDAY; + break; + case G_DATE_WEDNESDAY: + r.week_start = ICAL_WEDNESDAY_WEEKDAY; + break; + case G_DATE_THURSDAY: + r.week_start = ICAL_THURSDAY_WEEKDAY; + break; + case G_DATE_FRIDAY: + r.week_start = ICAL_FRIDAY_WEEKDAY; + break; + case G_DATE_SATURDAY: + r.week_start = ICAL_SATURDAY_WEEKDAY; + break; + case G_DATE_SUNDAY: + r.week_start = ICAL_SUNDAY_WEEKDAY; + break; + default: + g_warn_if_reached (); + break; + } /* Frequency-specific data */ @@ -759,36 +784,35 @@ simple_recur_to_comp (RecurrencePage *rpage, break; case ICAL_WEEKLY_RECURRENCE: { - guint8 day_mask; + EWeekdayChooser *chooser; gint i; g_return_if_fail (gtk_bin_get_child (GTK_BIN (priv->special)) != NULL); g_return_if_fail (E_IS_WEEKDAY_CHOOSER (priv->weekday_chooser)); - day_mask = e_weekday_chooser_get_days ( - E_WEEKDAY_CHOOSER (priv->weekday_chooser)); + chooser = E_WEEKDAY_CHOOSER (priv->weekday_chooser); i = 0; - if (day_mask & (1 << 0)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_SUNDAY)) r.by_day[i++] = ICAL_SUNDAY_WEEKDAY; - if (day_mask & (1 << 1)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_MONDAY)) r.by_day[i++] = ICAL_MONDAY_WEEKDAY; - if (day_mask & (1 << 2)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_TUESDAY)) r.by_day[i++] = ICAL_TUESDAY_WEEKDAY; - if (day_mask & (1 << 3)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_WEDNESDAY)) r.by_day[i++] = ICAL_WEDNESDAY_WEEKDAY; - if (day_mask & (1 << 4)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_THURSDAY)) r.by_day[i++] = ICAL_THURSDAY_WEEKDAY; - if (day_mask & (1 << 5)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_FRIDAY)) r.by_day[i++] = ICAL_FRIDAY_WEEKDAY; - if (day_mask & (1 << 6)) + if (e_weekday_chooser_get_selected (chooser, E_DATE_SATURDAY)) r.by_day[i] = ICAL_SATURDAY_WEEKDAY; break; @@ -1058,7 +1082,27 @@ make_weekly_special (RecurrencePage *rpage) /* Set the weekdays */ - e_weekday_chooser_set_days (chooser, priv->weekday_day_mask); + e_weekday_chooser_set_selected ( + chooser, G_DATE_SUNDAY, + (priv->weekday_day_mask & (1 << 0)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_MONDAY, + (priv->weekday_day_mask & (1 << 1)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_TUESDAY, + (priv->weekday_day_mask & (1 << 2)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_WEDNESDAY, + (priv->weekday_day_mask & (1 << 3)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_THURSDAY, + (priv->weekday_day_mask & (1 << 4)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_FRIDAY, + (priv->weekday_day_mask & (1 << 5)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_SATURDAY, + (priv->weekday_day_mask & (1 << 6)) != 0); g_signal_connect_swapped ( chooser, "changed", @@ -2086,12 +2130,56 @@ recurrence_page_set_dates (CompEditorPage *page, priv->weekday_blocked_day_mask = mask; if (priv->weekday_chooser != NULL) { - e_weekday_chooser_set_days ( - E_WEEKDAY_CHOOSER (priv->weekday_chooser), - priv->weekday_day_mask); - e_weekday_chooser_set_blocked_days ( - E_WEEKDAY_CHOOSER (priv->weekday_chooser), - priv->weekday_blocked_day_mask); + EWeekdayChooser *chooser; + guint8 mask; + + chooser = E_WEEKDAY_CHOOSER (priv->weekday_chooser); + + mask = priv->weekday_day_mask; + e_weekday_chooser_set_selected ( + chooser, G_DATE_SUNDAY, + (mask & (1 << 0)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_MONDAY, + (mask & (1 << 1)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_TUESDAY, + (mask & (1 << 2)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_WEDNESDAY, + (mask & (1 << 3)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_THURSDAY, + (mask & (1 << 4)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_FRIDAY, + (mask & (1 << 5)) != 0); + e_weekday_chooser_set_selected ( + chooser, G_DATE_SATURDAY, + (mask & (1 << 6)) != 0); + + mask = priv->weekday_blocked_day_mask; + e_weekday_chooser_set_blocked ( + chooser, G_DATE_SUNDAY, + (mask & (1 << 0)) != 0); + e_weekday_chooser_set_blocked ( + chooser, G_DATE_MONDAY, + (mask & (1 << 1)) != 0); + e_weekday_chooser_set_blocked ( + chooser, G_DATE_TUESDAY, + (mask & (1 << 2)) != 0); + e_weekday_chooser_set_blocked ( + chooser, G_DATE_WEDNESDAY, + (mask & (1 << 3)) != 0); + e_weekday_chooser_set_blocked ( + chooser, G_DATE_THURSDAY, + (mask & (1 << 4)) != 0); + e_weekday_chooser_set_blocked ( + chooser, G_DATE_FRIDAY, + (mask & (1 << 5)) != 0); + e_weekday_chooser_set_blocked ( + chooser, G_DATE_SATURDAY, + (mask & (1 << 6)) != 0); } } -- cgit v1.2.3