diff options
author | Rodrigo Moya <rodrigo@novell.com> | 2005-05-06 11:29:56 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@src.gnome.org> | 2005-05-06 11:29:56 +0800 |
commit | a7891fc47c13de34909e29ef2ca2064608857dd1 (patch) | |
tree | b5d8abb1f559a0c44e5f8c35d8c44a5855f9b662 /calendar/gui/e-week-view.c | |
parent | 5f5c1d83b995e7144faff2236e83adcde79c71ef (diff) | |
download | gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.tar gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.tar.gz gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.tar.bz2 gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.tar.lz gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.tar.xz gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.tar.zst gsoc2013-evolution-a7891fc47c13de34909e29ef2ca2064608857dd1.zip |
Fixes #271679
2005-05-06 Rodrigo Moya <rodrigo@novell.com>
Fixes #271679
* gui/dialogs/comp-editor.c (save_comp):
* gui/e-week-view.c (e_week_view_on_editing_stopped,
e_week_view_change_event_time): set correct start/end times for
individual instances and remove all rules and exceptions.
(e_week_view_reshape_event_span): show recurrence icons for
detached instances also.
* gui/e-day-view.c (e_day_view_finish_resize,
e_day_view_finish_long_event_resize, e_day_view_on_editing_stopped,
e_day_view_on_top_canvas_drag_data_received,
e_day_view_on_main_canvas_drag_data_received,
e_day_view_change_event_time): set the correct start/end times when
modifying individual instances and remove all rules and exceptions.
(e_day_view_on_top_canvas_motion, e_day_view_on_main_canvas_motion):
disable D&D for recurring events.
(e_day_view_reshape_long_event, e_day_view_reshape_day_event):
check for detached instances and show recurrence icons for them also.
* gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons):
* gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event):
* gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event):
check for detached instances and show recurrence icons for them also.
* gui/e-cal-model.c (set_instance_times): don't use the RECURRENCE-ID
to get the datetime.
* gui/e-calendar-view.c (e_calendar_view_delete_selected_occurrence):
exceptions need to be date only.
(e_calendar_view_copy_clipboard): remove RECURRENCE-IDs from components
we copy to the clipboard.
(e_calendar_view_cut_clipboard): when cutting instances, remove only
the selected instances.
(on_unrecur_appointment): use MOD_ALL to modify the master object and
remove recurrence-id from detached event.
* gui/dialogs/recur-comp.c (recur_component_dialog): re-enabled.
svn path=/trunk/; revision=29276
Diffstat (limited to 'calendar/gui/e-week-view.c')
-rw-r--r-- | calendar/gui/e-week-view.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 684d278d84..36e81049e1 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -2581,7 +2581,7 @@ e_week_view_reshape_event_span (EWeekView *week_view, if (e_cal_component_has_alarms (comp)) num_icons++; - if (e_cal_component_has_recurrences (comp)) + if (e_cal_component_has_recurrences (comp) || e_cal_component_is_instance (comp)) num_icons++; if (e_cal_component_has_attachments (comp)) num_icons++; @@ -3193,6 +3193,13 @@ e_week_view_change_event_time (EWeekView *week_view, time_t start_dt, time_t end gtk_widget_queue_draw (week_view->main_canvas); goto out; } + + if (mod == CALOBJ_MOD_THIS) { + e_cal_component_set_rdate_list (comp, NULL); + e_cal_component_set_rrule_list (comp, NULL); + e_cal_component_set_exdate_list (comp, NULL); + e_cal_component_set_exrule_list (comp, NULL); + } } toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (week_view))); @@ -3320,6 +3327,45 @@ e_week_view_on_editing_stopped (EWeekView *week_view, if (!recur_component_dialog (client, comp, &mod, NULL)) { goto out; } + + if (mod == CALOBJ_MOD_THIS) { + ECalComponentDateTime dt; + + e_cal_component_get_dtstart (comp, &dt); + if (dt.value->zone) { + *dt.value = icaltime_from_timet_with_zone ( + event->comp_data->instance_start, + dt.value->is_date, + dt.value->zone); + } else { + *dt.value = icaltime_from_timet_with_zone ( + event->comp_data->instance_start, + dt.value->is_date, + e_calendar_view_get_timezone (E_CALENDAR_VIEW (week_view))); + } + e_cal_component_set_dtstart (comp, &dt); + + e_cal_component_get_dtend (comp, &dt); + if (dt.value->zone) { + *dt.value = icaltime_from_timet_with_zone ( + event->comp_data->instance_end, + dt.value->is_date, + dt.value->zone); + } else { + *dt.value = icaltime_from_timet_with_zone ( + event->comp_data->instance_end, + dt.value->is_date, + e_calendar_view_get_timezone (E_CALENDAR_VIEW (week_view))); + } + e_cal_component_set_dtend (comp, &dt); + + e_cal_component_set_rdate_list (comp, NULL); + e_cal_component_set_rrule_list (comp, NULL); + e_cal_component_set_exdate_list (comp, NULL); + e_cal_component_set_exrule_list (comp, NULL); + + e_cal_component_commit_sequence (comp); + } } /* FIXME When sending here, what exactly should we send? */ |