[evolution/wip/mcrha/eds-libical-glib] Finish e-comp-editor-page-recurrence.c to use libical-glib exclusively
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/mcrha/eds-libical-glib] Finish e-comp-editor-page-recurrence.c to use libical-glib exclusively
- Date: Tue, 9 Apr 2019 10:48:19 +0000 (UTC)
commit a0aed16f38efd0d58f3d089c7372e4b8e0509dae
Author: Milan Crha <mcrha redhat com>
Date: Tue Apr 9 12:49:34 2019 +0200
Finish e-comp-editor-page-recurrence.c to use libical-glib exclusively
src/calendar/gui/e-comp-editor-page-recurrence.c | 293 ++++++++++++-----------
1 file changed, 151 insertions(+), 142 deletions(-)
---
diff --git a/src/calendar/gui/e-comp-editor-page-recurrence.c
b/src/calendar/gui/e-comp-editor-page-recurrence.c
index 6104f2b04a..aacbe60eb9 100644
--- a/src/calendar/gui/e-comp-editor-page-recurrence.c
+++ b/src/calendar/gui/e-comp-editor-page-recurrence.c
@@ -92,10 +92,10 @@ enum recur_type {
};
static const gint freq_map[] = {
- ICAL_DAILY_RECURRENCE,
- ICAL_WEEKLY_RECURRENCE,
- ICAL_MONTHLY_RECURRENCE,
- ICAL_YEARLY_RECURRENCE,
+ I_CAL_DAILY_RECURRENCE,
+ I_CAL_WEEKLY_RECURRENCE,
+ I_CAL_MONTHLY_RECURRENCE,
+ I_CAL_YEARLY_RECURRENCE,
-1
};
@@ -148,7 +148,7 @@ struct _ECompEditorPageRecurrencePrivate {
/* For ending date, created by hand */
GtkWidget *ending_date_edit;
- struct icaltimetype ending_date_tt;
+ ICalTime *ending_date_tt;
/* For ending count of occurrences, created by hand */
GtkWidget *ending_count_spin;
@@ -863,7 +863,7 @@ ecep_recurrence_make_monthly_special (ECompEditorPageRecurrence *page_recurrence
static void
ecep_recurrence_make_recurrence_special (ECompEditorPageRecurrence *page_recurrence)
{
- icalrecurrencetype_frequency frequency;
+ ICalRecurrenceFrequency frequency;
GtkWidget *child;
g_return_if_fail (E_IS_COMP_EDITOR_PAGE_RECURRENCE (page_recurrence));
@@ -884,21 +884,21 @@ ecep_recurrence_make_recurrence_special (ECompEditorPageRecurrence *page_recurre
frequency = e_dialog_combo_box_get (page_recurrence->priv->recr_interval_unit_combo, freq_map);
switch (frequency) {
- case ICAL_DAILY_RECURRENCE:
+ case I_CAL_DAILY_RECURRENCE:
gtk_widget_hide (page_recurrence->priv->recr_interval_special_box);
break;
- case ICAL_WEEKLY_RECURRENCE:
+ case I_CAL_WEEKLY_RECURRENCE:
ecep_recurrence_make_weekly_special (page_recurrence);
gtk_widget_show (page_recurrence->priv->recr_interval_special_box);
break;
- case ICAL_MONTHLY_RECURRENCE:
+ case I_CAL_MONTHLY_RECURRENCE:
ecep_recurrence_make_monthly_special (page_recurrence);
gtk_widget_show (page_recurrence->priv->recr_interval_special_box);
break;
- case ICAL_YEARLY_RECURRENCE:
+ case I_CAL_YEARLY_RECURRENCE:
gtk_widget_hide (page_recurrence->priv->recr_interval_special_box);
break;
@@ -907,16 +907,21 @@ ecep_recurrence_make_recurrence_special (ECompEditorPageRecurrence *page_recurre
}
}
-/* Counts the elements in the by_xxx fields of an icalrecurrencetype */
+/* Counts the elements in the by_xxx fields of an ICalRecurrence */
static gint
-ecep_recurrence_count_by_xxx (gshort *field,
- gint max_elements)
+ecep_recurrence_count_by_xxx_and_free (GArray *array) /* gshort */
{
gint ii;
- for (ii = 0; ii < max_elements; ii++)
- if (field[ii] == ICAL_RECURRENCE_ARRAY_MAX)
+ if (!array)
+ return 0;
+
+ for (ii = 0; ii < array->len; ii++) {
+ if (g_array_index (array, gshort, ii) == I_CAL_RECURRENCE_ARRAY_MAX)
break;
+ }
+
+ g_array_unref (array);
return ii;
}
@@ -962,9 +967,9 @@ ecep_recurrence_make_ending_until_special (ECompEditorPageRecurrence *page_recur
e_date_edit_set_date (date_edit, i_cal_time_get_year (itt), i_cal_time_get_month (itt),
i_cal_time_get_day (itt));
} else {
e_date_edit_set_date (date_edit,
- page_recurrence->priv->ending_date_tt.year,
- page_recurrence->priv->ending_date_tt.month,
- page_recurrence->priv->ending_date_tt.day);
+ i_cal_time_get_year (page_recurrence->priv->ending_date_tt),
+ i_cal_time_get_month (page_recurrence->priv->ending_date_tt),
+ i_cal_time_get_day (page_recurrence->priv->ending_date_tt));
}
g_signal_connect_swapped (
@@ -1068,15 +1073,19 @@ ecep_recurrence_make_ending_special (ECompEditorPageRecurrence *page_recurrence)
*/
static void
ecep_recurrence_fill_ending_date (ECompEditorPageRecurrence *page_recurrence,
- struct icalrecurrencetype *rrule,
+ ICalRecurrence *rrule,
ICalComponent *component)
{
g_return_if_fail (E_IS_COMP_EDITOR_PAGE_RECURRENCE (page_recurrence));
g_signal_handlers_block_matched (page_recurrence->priv->recr_ending_combo, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, page_recurrence);
- if (rrule->count == 0) {
- if (rrule->until.year == 0) {
+ if (i_cal_recurrence_get_count (rrule) == 0) {
+ ICalTime *until;
+
+ until = i_cal_recurrence_get_until (rrule);
+
+ if (!until || i_cal_time_get_year (until) == 0) {
/* Forever */
e_dialog_combo_box_set (
@@ -1086,37 +1095,36 @@ ecep_recurrence_fill_ending_date (ECompEditorPageRecurrence *page_recurrence,
} else {
/* Ending date */
- if (!rrule->until.is_date) {
- icaltimezone *from_zone, *to_zone = NULL;
- ICalTimezone *izone;
+ if (!i_cal_time_is_date (until)) {
+ ICalTimezone *from_zone, *to_zone = NULL;
ICalTime *dtstart;
dtstart = i_cal_component_get_dtstart (component);
- from_zone = icaltimezone_get_utc_timezone ();
- izone = dtstart ? i_cal_time_get_timezone (dtstart) : NULL;
- if (izone)
- to_zone = i_cal_object_get_native (I_CAL_OBJECT (izone));
+ from_zone = i_cal_timezone_get_utc_timezone ();
+ to_zone = dtstart ? i_cal_time_get_timezone (dtstart) : NULL;
if (to_zone)
- icaltimezone_convert_time (&rrule->until, from_zone, to_zone);
+ i_cal_timezone_convert_time (until, from_zone, to_zone);
- rrule->until.hour = 0;
- rrule->until.minute = 0;
- rrule->until.second = 0;
- rrule->until.is_date = TRUE;
+ i_cal_time_set_time (until, 0, 0, 0);
+ i_cal_time_set_is_date (until, TRUE);
+ i_cal_recurrence_set_until (rrule, until);
}
- page_recurrence->priv->ending_date_tt = rrule->until;
+ g_clear_object (&page_recurrence->priv->ending_date_tt);
+ page_recurrence->priv->ending_date_tt = i_cal_recurrence_get_until (rrule);
e_dialog_combo_box_set (
page_recurrence->priv->recr_ending_combo,
ENDING_UNTIL,
ending_types_map);
}
+
+ g_clear_object (&until);
} else {
/* Count of occurrences */
- page_recurrence->priv->ending_count = rrule->count;
+ page_recurrence->priv->ending_count = i_cal_recurrence_get_count (rrule);
e_dialog_combo_box_set (
page_recurrence->priv->recr_ending_combo,
ENDING_FOR,
@@ -1200,7 +1208,8 @@ ecep_recurrence_clear_widgets (ECompEditorPageRecurrence *page_recurrence)
e_dialog_combo_box_set (page_recurrence->priv->recr_interval_unit_combo, ICAL_DAILY_RECURRENCE,
freq_map);
g_signal_handlers_unblock_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
- page_recurrence->priv->ending_date_tt = icaltime_today ();
+ g_clear_object (&page_recurrence->priv->ending_date_tt);
+ page_recurrence->priv->ending_date_tt = i_cal_time_today ();
page_recurrence->priv->ending_count = 2;
g_signal_handlers_block_matched (page_recurrence->priv->recr_ending_combo, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, page_recurrence);
@@ -1220,42 +1229,43 @@ static void
ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence,
ICalComponent *component)
{
- struct icalrecurrencetype r;
enum ending_type ending_type;
ICalProperty *prop;
ICalRecurrence *recur;
+ ICalTime *until;
gboolean date_set;
+ gint year, month, day;
g_return_if_fail (E_IS_COMP_EDITOR_PAGE_RECURRENCE (page_recurrence));
- icalrecurrencetype_clear (&r);
+ recur = i_cal_recurrence_new ();
/* Frequency, interval, week start */
- r.freq = e_dialog_combo_box_get (page_recurrence->priv->recr_interval_unit_combo, freq_map);
- r.interval = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
(page_recurrence->priv->recr_interval_value_spin));
+ i_cal_recurrence_set_freq (recur, e_dialog_combo_box_get
(page_recurrence->priv->recr_interval_unit_combo, freq_map));
+ i_cal_recurrence_set_interval (recur, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
(page_recurrence->priv->recr_interval_value_spin)));
switch (calendar_config_get_week_start_day ()) {
case G_DATE_MONDAY:
- r.week_start = ICAL_MONDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_MONDAY_WEEKDAY);
break;
case G_DATE_TUESDAY:
- r.week_start = ICAL_TUESDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_TUESDAY_WEEKDAY);
break;
case G_DATE_WEDNESDAY:
- r.week_start = ICAL_WEDNESDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_WEDNESDAY_WEEKDAY);
break;
case G_DATE_THURSDAY:
- r.week_start = ICAL_THURSDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_THURSDAY_WEEKDAY);
break;
case G_DATE_FRIDAY:
- r.week_start = ICAL_FRIDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_FRIDAY_WEEKDAY);
break;
case G_DATE_SATURDAY:
- r.week_start = ICAL_SATURDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_SATURDAY_WEEKDAY);
break;
case G_DATE_SUNDAY:
- r.week_start = ICAL_SUNDAY_WEEKDAY;
+ i_cal_recurrence_set_week_start (recur, I_CAL_SUNDAY_WEEKDAY);
break;
default:
g_warn_if_reached ();
@@ -1264,12 +1274,12 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
/* Frequency-specific data */
- switch (r.freq) {
- case ICAL_DAILY_RECURRENCE:
+ switch (i_cal_recurrence_get_freq (recur)) {
+ case I_CAL_DAILY_RECURRENCE:
/* Nothing else is required */
break;
- case ICAL_WEEKLY_RECURRENCE: {
+ case I_CAL_WEEKLY_RECURRENCE: {
EWeekdayChooser *chooser;
gint ii;
@@ -1281,25 +1291,27 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
ii = 0;
if (e_weekday_chooser_get_selected (chooser, G_DATE_SUNDAY))
- r.by_day[ii++] = ICAL_SUNDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_SUNDAY_WEEKDAY);
if (e_weekday_chooser_get_selected (chooser, G_DATE_MONDAY))
- r.by_day[ii++] = ICAL_MONDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_MONDAY_WEEKDAY);
if (e_weekday_chooser_get_selected (chooser, G_DATE_TUESDAY))
- r.by_day[ii++] = ICAL_TUESDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_TUESDAY_WEEKDAY);
if (e_weekday_chooser_get_selected (chooser, G_DATE_WEDNESDAY))
- r.by_day[ii++] = ICAL_WEDNESDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_WEDNESDAY_WEEKDAY);
if (e_weekday_chooser_get_selected (chooser, G_DATE_THURSDAY))
- r.by_day[ii++] = ICAL_THURSDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_THURSDAY_WEEKDAY);
if (e_weekday_chooser_get_selected (chooser, G_DATE_FRIDAY))
- r.by_day[ii++] = ICAL_FRIDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_FRIDAY_WEEKDAY);
if (e_weekday_chooser_get_selected (chooser, G_DATE_SATURDAY))
- r.by_day[ii] = ICAL_SATURDAY_WEEKDAY;
+ i_cal_recurrence_set_by_day (recur, ii++, I_CAL_SATURDAY_WEEKDAY);
+
+ i_cal_recurrence_set_by_day (recur, ii, I_CAL_RECURRENCE_ARRAY_MAX);
break;
}
@@ -1327,47 +1339,47 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
switch (month_day) {
case MONTH_DAY_NTH:
if (month_num == MONTH_NUM_INVALID)
- r.by_month_day[0] = -1;
+ i_cal_recurrence_set_by_month_day (recur, 0, -1);
else
- r.by_month_day[0] = page_recurrence->priv->month_index;
+ i_cal_recurrence_set_by_month_day (recur, 0,
page_recurrence->priv->month_index);
break;
/* Outlook 2000 uses BYDAY=TU;BYSETPOS=2, and will not
* accept BYDAY=2TU. So we now use the same as Outlook
* by default. */
case MONTH_DAY_MON:
- r.by_day[0] = ICAL_MONDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_MONDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
case MONTH_DAY_TUE:
- r.by_day[0] = ICAL_TUESDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_TUESDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
case MONTH_DAY_WED:
- r.by_day[0] = ICAL_WEDNESDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_WEDNESDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
case MONTH_DAY_THU:
- r.by_day[0] = ICAL_THURSDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_THURSDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
case MONTH_DAY_FRI:
- r.by_day[0] = ICAL_FRIDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_FRIDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
case MONTH_DAY_SAT:
- r.by_day[0] = ICAL_SATURDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_SATURDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
case MONTH_DAY_SUN:
- r.by_day[0] = ICAL_SUNDAY_WEEKDAY;
- r.by_set_pos[0] = month_num;
+ i_cal_recurrence_set_by_day (recur, 0, I_CAL_SUNDAY_WEEKDAY);
+ i_cal_recurrence_set_by_set_pos (recur, 0, month_num);
break;
default:
@@ -1377,7 +1389,7 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
break;
}
- case ICAL_YEARLY_RECURRENCE:
+ case I_CAL_YEARLY_RECURRENCE:
/* Nothing else is required */
break;
@@ -1394,8 +1406,8 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
g_return_if_fail (page_recurrence->priv->ending_count_spin != NULL);
g_return_if_fail (GTK_IS_SPIN_BUTTON (page_recurrence->priv->ending_count_spin));
- r.count = gtk_spin_button_get_value_as_int (
- GTK_SPIN_BUTTON (page_recurrence->priv->ending_count_spin));
+ i_cal_recurrence_set_count (recur, gtk_spin_button_get_value_as_int (
+ GTK_SPIN_BUTTON (page_recurrence->priv->ending_count_spin)));
break;
case ENDING_UNTIL:
@@ -1406,12 +1418,14 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
* since we don't support sub-day recurrences. */
date_set = e_date_edit_get_date (
E_DATE_EDIT (page_recurrence->priv->ending_date_edit),
- &r.until.year,
- &r.until.month,
- &r.until.day);
+ &year, &month, &day);
g_return_if_fail (date_set);
- r.until.is_date = 1;
+ until = i_cal_time_null_time ();
+ i_cal_time_set_date (until, year, month, day);
+ i_cal_time_set_is_date (until, 1);
+ i_cal_recurrence_set_until (recur, until);
+ g_clear_object (&until);
break;
@@ -1426,8 +1440,6 @@ ecep_recurrence_simple_recur_to_comp (ECompEditorPageRecurrence *page_recurrence
e_cal_util_component_remove_property_by_kind (component, I_CAL_RRULE_PROPERTY, TRUE);
/* Set the recurrence */
- recur = i_cal_object_construct (I_CAL_TYPE_RECURRENCE, &r, NULL, FALSE, NULL);
-
prop = i_cal_property_new_rrule (recur);
i_cal_component_take_property (component, prop);
@@ -1487,8 +1499,7 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
ICalComponent *component)
{
ECompEditorPageRecurrence *page_recurrence;
- struct icalrecurrencetype rrule;
- ICalRecurrence *recur;
+ ICalRecurrence *rrule = NULL;
ICalProperty *prop;
GtkAdjustment *adj;
gint n_by_second, n_by_minute, n_by_hour;
@@ -1560,13 +1571,8 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
prop = i_cal_component_get_first_property (component, I_CAL_RRULE_PROPERTY);
g_return_if_fail (prop != NULL);
- recur = i_cal_property_get_rrule (prop);
- if (recur && i_cal_object_get_native (I_CAL_OBJECT (recur))) {
- struct icalrecurrencetype *tmp_rrule;
-
- tmp_rrule = i_cal_object_get_native (I_CAL_OBJECT (recur));
- rrule = *tmp_rrule;
- } else {
+ rrule = i_cal_property_get_rrule (prop);
+ if (!rrule) {
g_clear_object (&prop);
g_return_if_reached ();
@@ -1576,36 +1582,34 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
/* Any lower frequency? */
- if (rrule.freq == ICAL_SECONDLY_RECURRENCE
- || rrule.freq == ICAL_MINUTELY_RECURRENCE
- || rrule.freq == ICAL_HOURLY_RECURRENCE)
+ if (i_cal_recurrence_get_freq (rrule) == I_CAL_SECONDLY_RECURRENCE ||
+ i_cal_recurrence_get_freq (rrule) == I_CAL_MINUTELY_RECURRENCE ||
+ i_cal_recurrence_get_freq (rrule) == I_CAL_HOURLY_RECURRENCE)
goto custom;
/* Any unusual values? */
-#define N_HAS_BY(field) (ecep_recurrence_count_by_xxx (field, G_N_ELEMENTS (field)))
-
- n_by_second = N_HAS_BY (rrule.by_second);
- n_by_minute = N_HAS_BY (rrule.by_minute);
- n_by_hour = N_HAS_BY (rrule.by_hour);
- n_by_day = N_HAS_BY (rrule.by_day);
- n_by_month_day = N_HAS_BY (rrule.by_month_day);
- n_by_year_day = N_HAS_BY (rrule.by_year_day);
- n_by_week_no = N_HAS_BY (rrule.by_week_no);
- n_by_month = N_HAS_BY (rrule.by_month);
- n_by_set_pos = N_HAS_BY (rrule.by_set_pos);
-
- if (n_by_second != 0
- || n_by_minute != 0
- || n_by_hour != 0)
+ n_by_second = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_second_array (rrule));
+ n_by_minute = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_minute_array (rrule));
+ n_by_hour = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_hour_array (rrule));
+ n_by_day = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_day_array (rrule));
+ n_by_month_day = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_month_day_array
(rrule));
+ n_by_year_day = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_year_day_array
(rrule));
+ n_by_week_no = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_week_no_array (rrule));
+ n_by_month = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_month_array (rrule));
+ n_by_set_pos = ecep_recurrence_count_by_xxx_and_free (i_cal_recurrence_get_by_set_pos_array (rrule));
+
+ if (n_by_second != 0 ||
+ n_by_minute != 0 ||
+ n_by_hour != 0)
goto custom;
/* Filter the funky shit based on the frequency; if there is nothing
* weird we can actually set the widgets.
*/
- switch (rrule.freq) {
- case ICAL_DAILY_RECURRENCE:
+ switch (i_cal_recurrence_get_freq (rrule)) {
+ case I_CAL_DAILY_RECURRENCE:
if (n_by_day != 0
|| n_by_month_day != 0
|| n_by_year_day != 0
@@ -1617,12 +1621,12 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
g_signal_handlers_block_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
e_dialog_combo_box_set (
page_recurrence->priv->recr_interval_unit_combo,
- ICAL_DAILY_RECURRENCE,
+ I_CAL_DAILY_RECURRENCE,
freq_map);
g_signal_handlers_unblock_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
break;
- case ICAL_WEEKLY_RECURRENCE: {
+ case I_CAL_WEEKLY_RECURRENCE: {
gint ii;
guint8 day_mask;
@@ -1635,42 +1639,42 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
day_mask = 0;
- for (ii = 0; ii < 8 && rrule.by_day[ii] != ICAL_RECURRENCE_ARRAY_MAX; ii++) {
- enum icalrecurrencetype_weekday weekday;
+ for (ii = 0; ii < 8 && i_cal_recurrence_get_by_day (rrule, ii) != I_CAL_RECURRENCE_ARRAY_MAX;
ii++) {
+ ICalRecurrenceWeekday weekday;
gint pos;
- weekday = icalrecurrencetype_day_day_of_week (rrule.by_day[ii]);
- pos = icalrecurrencetype_day_position (rrule.by_day[ii]);
+ weekday = i_cal_recurrence_day_day_of_week (i_cal_recurrence_get_by_day (rrule, ii));
+ pos = i_cal_recurrence_day_position (i_cal_recurrence_get_by_day (rrule, ii));
if (pos != 0)
goto custom;
switch (weekday) {
- case ICAL_SUNDAY_WEEKDAY:
+ case I_CAL_SUNDAY_WEEKDAY:
day_mask |= 1 << 0;
break;
- case ICAL_MONDAY_WEEKDAY:
+ case I_CAL_MONDAY_WEEKDAY:
day_mask |= 1 << 1;
break;
- case ICAL_TUESDAY_WEEKDAY:
+ case I_CAL_TUESDAY_WEEKDAY:
day_mask |= 1 << 2;
break;
- case ICAL_WEDNESDAY_WEEKDAY:
+ case I_CAL_WEDNESDAY_WEEKDAY:
day_mask |= 1 << 3;
break;
- case ICAL_THURSDAY_WEEKDAY:
+ case I_CAL_THURSDAY_WEEKDAY:
day_mask |= 1 << 4;
break;
- case ICAL_FRIDAY_WEEKDAY:
+ case I_CAL_FRIDAY_WEEKDAY:
day_mask |= 1 << 5;
break;
- case ICAL_SATURDAY_WEEKDAY:
+ case I_CAL_SATURDAY_WEEKDAY:
day_mask |= 1 << 6;
break;
@@ -1684,13 +1688,13 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
g_signal_handlers_block_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
e_dialog_combo_box_set (
page_recurrence->priv->recr_interval_unit_combo,
- ICAL_WEEKLY_RECURRENCE,
+ I_CAL_WEEKLY_RECURRENCE,
freq_map);
g_signal_handlers_unblock_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
break;
}
- case ICAL_MONTHLY_RECURRENCE:
+ case I_CAL_MONTHLY_RECURRENCE:
if (n_by_year_day != 0
|| n_by_week_no != 0
|| n_by_month != 0
@@ -1703,7 +1707,7 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
if (n_by_set_pos != 0)
goto custom;
- nth = rrule.by_month_day[0];
+ nth = i_cal_recurrence_get_by_month_day (rrule, 0);
if (nth < 1 && nth != -1)
goto custom;
@@ -1723,7 +1727,7 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
page_recurrence->priv->month_day = MONTH_DAY_NTH;
} else if (n_by_day == 1) {
- enum icalrecurrencetype_weekday weekday;
+ ICalRecurrenceWeekday weekday;
gint pos;
enum month_day_options month_day;
@@ -1731,43 +1735,43 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
* accept BYDAY=2TU. So we now use the same as Outlook
* by default. */
- weekday = icalrecurrencetype_day_day_of_week (rrule.by_day[0]);
- pos = icalrecurrencetype_day_position (rrule.by_day[0]);
+ weekday = i_cal_recurrence_day_day_of_week (i_cal_recurrence_get_by_day (rrule, 0));
+ pos = i_cal_recurrence_day_position (i_cal_recurrence_get_by_day (rrule, 0));
if (pos == 0) {
if (n_by_set_pos != 1)
goto custom;
- pos = rrule.by_set_pos[0];
+ pos = i_cal_recurrence_get_by_set_pos (rrule, 0);
} else if (pos < 0) {
goto custom;
}
switch (weekday) {
- case ICAL_MONDAY_WEEKDAY:
+ case I_CAL_MONDAY_WEEKDAY:
month_day = MONTH_DAY_MON;
break;
- case ICAL_TUESDAY_WEEKDAY:
+ case I_CAL_TUESDAY_WEEKDAY:
month_day = MONTH_DAY_TUE;
break;
- case ICAL_WEDNESDAY_WEEKDAY:
+ case I_CAL_WEDNESDAY_WEEKDAY:
month_day = MONTH_DAY_WED;
break;
- case ICAL_THURSDAY_WEEKDAY:
+ case I_CAL_THURSDAY_WEEKDAY:
month_day = MONTH_DAY_THU;
break;
- case ICAL_FRIDAY_WEEKDAY:
+ case I_CAL_FRIDAY_WEEKDAY:
month_day = MONTH_DAY_FRI;
break;
- case ICAL_SATURDAY_WEEKDAY:
+ case I_CAL_SATURDAY_WEEKDAY:
month_day = MONTH_DAY_SAT;
break;
- case ICAL_SUNDAY_WEEKDAY:
+ case I_CAL_SUNDAY_WEEKDAY:
month_day = MONTH_DAY_SUN;
break;
@@ -1786,7 +1790,7 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
g_signal_handlers_block_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
e_dialog_combo_box_set (
page_recurrence->priv->recr_interval_unit_combo,
- ICAL_MONTHLY_RECURRENCE,
+ I_CAL_MONTHLY_RECURRENCE,
freq_map);
g_signal_handlers_unblock_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
break;
@@ -1803,7 +1807,7 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
g_signal_handlers_block_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
e_dialog_combo_box_set (
page_recurrence->priv->recr_interval_unit_combo,
- ICAL_YEARLY_RECURRENCE,
+ I_CAL_YEARLY_RECURRENCE,
freq_map);
g_signal_handlers_unblock_matched (page_recurrence->priv->recr_interval_unit_combo,
G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
break;
@@ -1822,10 +1826,12 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON
(page_recurrence->priv->recr_interval_value_spin));
g_signal_handlers_block_matched (adj, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (page_recurrence->priv->recr_interval_value_spin),
rrule.interval);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (page_recurrence->priv->recr_interval_value_spin),
i_cal_recurrence_get_interval (rrule));
g_signal_handlers_unblock_matched (adj, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page_recurrence);
- ecep_recurrence_fill_ending_date (page_recurrence, &rrule, component);
+ ecep_recurrence_fill_ending_date (page_recurrence, rrule, component);
+
+ g_clear_object (&rrule);
return;
@@ -1835,6 +1841,8 @@ ecep_recurrence_fill_widgets (ECompEditorPage *page,
page_recurrence->priv->is_custom = TRUE;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (page_recurrence->priv->recr_check_box), TRUE);
g_signal_handlers_unblock_matched (page_recurrence->priv->recr_check_box, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, page_recurrence);
+
+ g_clear_object (&rrule);
}
static gboolean
@@ -2353,6 +2361,7 @@ ecep_recurrence_dispose (GObject *object)
}
g_clear_object (&page_recurrence->priv->exceptions_store);
+ g_clear_object (&page_recurrence->priv->ending_date_tt);
comp_editor = e_comp_editor_page_ref_editor (E_COMP_EDITOR_PAGE (page_recurrence));
if (comp_editor) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]