aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/recurrence-page.c
diff options
context:
space:
mode:
authorDamon Chaplin <damon@ximian.com>2001-10-26 07:28:15 +0800
committerDamon Chaplin <damon@src.gnome.org>2001-10-26 07:28:15 +0800
commite4e894969ece81b2ed434c7d66e4b2d1b42244d3 (patch)
tree2e496669781f0de409b5c18b711ffecc26f1a66d /calendar/gui/dialogs/recurrence-page.c
parent750c920dcdce2d34d7f9bce228ff897024808f26 (diff)
downloadgsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.gz
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.bz2
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.lz
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.xz
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.zst
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.zip
subtract 1 from any positive BYSETPOS value, since our array is 0-based.
2001-10-25 Damon Chaplin <damon@ximian.com> * cal-util/cal-recur.c (cal_obj_bysetpos_filter): subtract 1 from any positive BYSETPOS value, since our array is 0-based. * gui/dialogs/recurrence-page.c (simple_recur_to_comp): (recurrence_page_fill_widgets): Outlook (2000) will not accept monthly recurrences like BYDAY=2TU. Instead it uses BYDAY=TU;BYSETPOS=2. So to be compatable with it we now do the same, although we still accept and convert the old format. * cal-client/cal-client.c (cal_client_get_component_as_string): new function to return a complete VCALENDAR string containing a VEVENT or VTODO with all the VTIMEZONEs it uses. * gui/dialogs/comp-editor.c (save_as_ok): use above function so we save the VTIMEZONE data with the VEVENT/VTODO. Fixes bug #????. Also made sure we output "METHOD:PUBLISH" since Outlook (2000) will not import it otherwise. * gui/dialogs/comp-editor.c (page_mapped_cb): (page_unmapped_cb): install/uninstall the GtkAccelGroup for the page. (comp_editor_append_page): connect to the map/unmap signals to install/uninstall the accelerators. (This is all for bug #11609, though of course it doesn't work too well in GTK+ 1.2 anyway.) * gui/dialogs/task-page.c (get_widgets): * gui/dialogs/task-details-page.c (get_widgets): * gui/dialogs/schedule-page.c (get_widgets): * gui/dialogs/recurrence-page.c (get_widgets): * gui/dialogs/meeting-page.c (get_widgets): * gui/dialogs/event-page.c (get_widgets): * gui/dialogs/alarm-page.c (get_widgets): got the GtkAccelGroup from the original window, ref'ed it and placed it in the CompEditorPage struct. * gui/dialogs/comp-editor-page.c (comp_editor_page_destroy): unref any GtkAccelGroup for the page. * gui/dialogs/task-page.glade: changed '_Confidential' to 'Con_fidential' as it clashed with '_Contacts'. It now matches the event editor as well. * gui/dialogs/event-page.glade: * gui/dialogs/task-page.glade: Set CAN_FOCUS to TRUE for the custom EDateEdit widgets, and set them as the accel targets of the labels. svn path=/trunk/; revision=14108
Diffstat (limited to 'calendar/gui/dialogs/recurrence-page.c')
-rw-r--r--calendar/gui/dialogs/recurrence-page.c63
1 files changed, 46 insertions, 17 deletions
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index 28858bd950..c76b6dd970 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -582,8 +582,9 @@ sensitize_recur_widgets (RecurrencePage *rpage)
}
}
+#if 0
/* Encondes a position/weekday pair into the proper format for
- * icalrecurrencetype.by_day.
+ * icalrecurrencetype.by_day. Not needed at present.
*/
static short
nth_weekday (int pos, icalrecurrencetype_weekday weekday)
@@ -592,6 +593,7 @@ nth_weekday (int pos, icalrecurrencetype_weekday weekday)
return (pos << 3) | (int) weekday;
}
+#endif
/* Gets the simple recurrence data from the recurrence widgets and stores it in
* the calendar component.
@@ -678,39 +680,42 @@ simple_recur_to_comp (RecurrencePage *rpage, CalComponent *comp)
r.by_month_day[0] = day_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] = nth_weekday (day_index,
- ICAL_MONDAY_WEEKDAY);
+ r.by_day[0] = ICAL_MONDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
case MONTH_DAY_TUE:
- r.by_day[0] = nth_weekday (day_index,
- ICAL_TUESDAY_WEEKDAY);
+ r.by_day[0] = ICAL_TUESDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
case MONTH_DAY_WED:
- r.by_day[0] = nth_weekday (day_index,
- ICAL_WEDNESDAY_WEEKDAY);
+ r.by_day[0] = ICAL_WEDNESDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
case MONTH_DAY_THU:
- r.by_day[0] = nth_weekday (day_index,
- ICAL_THURSDAY_WEEKDAY);
+ r.by_day[0] = ICAL_THURSDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
case MONTH_DAY_FRI:
- r.by_day[0] = nth_weekday (day_index,
- ICAL_FRIDAY_WEEKDAY);
+ r.by_day[0] = ICAL_FRIDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
case MONTH_DAY_SAT:
- r.by_day[0] = nth_weekday (day_index,
- ICAL_SATURDAY_WEEKDAY);
+ r.by_day[0] = ICAL_SATURDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
case MONTH_DAY_SUN:
- r.by_day[0] = nth_weekday (day_index,
- ICAL_SUNDAY_WEEKDAY);
+ r.by_day[0] = ICAL_SUNDAY_WEEKDAY;
+ r.by_set_pos[0] = day_index;
break;
default:
@@ -1577,12 +1582,15 @@ recurrence_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
if (n_by_year_day != 0
|| n_by_week_no != 0
|| n_by_month != 0
- || n_by_set_pos != 0)
+ || n_by_set_pos > 1)
goto custom;
if (n_by_month_day == 1) {
int nth;
+ if (n_by_set_pos != 0)
+ goto custom;
+
nth = r->by_month_day[0];
if (nth < 1)
goto custom;
@@ -1594,11 +1602,20 @@ recurrence_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
int pos;
enum month_day_options month_day;
+ /* Outlook 2000 uses BYDAY=TU;BYSETPOS=2, and will not
+ accept BYDAY=2TU. So we now use the same as Outlook
+ by default. */
+
weekday = icalrecurrencetype_day_day_of_week (r->by_day[0]);
pos = icalrecurrencetype_day_position (r->by_day[0]);
- if (pos < 1)
+ if (pos == 0) {
+ if (n_by_set_pos != 1)
+ goto custom;
+ pos = r->by_set_pos[0];
+ } else if (pos < 0) {
goto custom;
+ }
switch (weekday) {
case ICAL_MONDAY_WEEKDAY:
@@ -1799,7 +1816,10 @@ recurrence_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates)
static gboolean
get_widgets (RecurrencePage *rpage)
{
+ CompEditorPage *page = COMP_EDITOR_PAGE (rpage);
RecurrencePagePrivate *priv;
+ GSList *accel_groups;
+ GtkWidget *toplevel;
priv = rpage->priv;
@@ -1809,6 +1829,15 @@ get_widgets (RecurrencePage *rpage)
if (!priv->main)
return FALSE;
+ /* Get the GtkAccelGroup from the toplevel window, so we can install
+ it when the notebook page is mapped. */
+ toplevel = gtk_widget_get_toplevel (priv->main);
+ accel_groups = gtk_accel_groups_from_object (GTK_OBJECT (toplevel));
+ if (accel_groups) {
+ page->accel_group = accel_groups->data;
+ gtk_accel_group_ref (page->accel_group);
+ }
+
gtk_widget_ref (priv->main);
gtk_widget_unparent (priv->main);