aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-day-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/e-day-view.c')
-rw-r--r--calendar/gui/e-day-view.c85
1 files changed, 71 insertions, 14 deletions
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index 6dae27fa18..6ad72a5765 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -42,6 +42,7 @@
#include "dialogs/cancel-comp.h"
#include "dialogs/recur-comp.h"
#include "dialogs/goto-dialog.h"
+#include "dialogs/save-comp.h"
#include "calendar-config.h"
#include "comp-util.h"
@@ -4788,6 +4789,10 @@ e_day_view_finish_resize (EDayView *day_view)
ESourceRegistry *registry;
CalObjModType mod = CALOBJ_MOD_ALL;
GtkWindow *toplevel;
+ GtkResponseType send = GTK_RESPONSE_NO;
+ gboolean modified;
+ gboolean only_new_attendees = FALSE;
+ gboolean strip_alarms = TRUE;
model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view));
registry = e_cal_model_get_registry (model);
@@ -4822,6 +4827,18 @@ e_day_view_finish_resize (EDayView *day_view)
return;
}
+ toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view)));
+
+ if ((itip_organizer_is_user (registry, comp, client) ||
+ itip_sentby_is_user (registry, comp, client)))
+ send = send_dragged_or_resized_component_dialog (
+ toplevel, client, comp, &strip_alarms, &only_new_attendees);
+
+ if (send == GTK_RESPONSE_CANCEL) {
+ e_day_view_abort_resize (day_view);
+ goto out;
+ }
+
date.value = &itt;
date.tzid = icaltimezone_get_tzid (e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view)));
@@ -4854,7 +4871,7 @@ e_day_view_finish_resize (EDayView *day_view)
if (e_cal_component_has_recurrences (comp)) {
if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) {
- gtk_widget_queue_draw (day_view->top_canvas);
+ gtk_widget_queue_draw (day_view->main_canvas);
goto out;
}
@@ -4883,13 +4900,14 @@ e_day_view_finish_resize (EDayView *day_view)
} else if (e_cal_component_is_instance (comp))
mod = CALOBJ_MOD_THIS;
- toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view)));
-
e_cal_component_commit_sequence (comp);
- e_calendar_view_modify_and_send (
- E_CALENDAR_VIEW (day_view),
- comp, client, mod, toplevel, TRUE);
+ modified = e_calendar_view_modify (E_CALENDAR_VIEW (day_view), comp, client, mod);
+
+ if (modified && send == GTK_RESPONSE_YES)
+ e_calendar_view_send (
+ E_CALENDAR_VIEW (day_view),
+ comp, client, mod, toplevel, strip_alarms, only_new_attendees);
out:
g_object_unref (comp);
@@ -8339,6 +8357,10 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget,
const guchar *data;
gint format, length;
gint days_shown;
+ GtkResponseType send = GTK_RESPONSE_NO;
+ gboolean modified;
+ gboolean only_new_attendees = FALSE;
+ gboolean strip_alarms = TRUE;
data = gtk_selection_data_get_data (selection_data);
format = gtk_selection_data_get_format (selection_data);
@@ -8426,6 +8448,19 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget,
return;
}
+ toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view)));
+
+ if ((itip_organizer_is_user (registry, comp, client) ||
+ itip_sentby_is_user (registry, comp, client)))
+ send = send_dragged_or_resized_component_dialog (
+ toplevel, client, comp, &strip_alarms, &only_new_attendees);
+
+ if (send == GTK_RESPONSE_CANCEL) {
+ e_day_view_abort_resize (day_view);
+ g_object_unref (comp);
+ return;
+ }
+
if (start_offset == 0 && end_offset == 0)
all_day_event = TRUE;
else
@@ -8477,6 +8512,7 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget,
e_cal_component_commit_sequence (comp);
if (e_cal_component_has_recurrences (comp)) {
if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) {
+ gtk_widget_queue_draw (day_view->top_canvas);
g_object_unref (comp);
return;
}
@@ -8493,11 +8529,13 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget,
} else if (e_cal_component_is_instance (comp))
mod = CALOBJ_MOD_THIS;
- toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view)));
- e_calendar_view_modify_and_send (
- E_CALENDAR_VIEW (day_view),
- comp, client, mod, toplevel, FALSE);
+ modified = e_calendar_view_modify (E_CALENDAR_VIEW (day_view), comp, client, mod);
+
+ if (modified && send == GTK_RESPONSE_YES)
+ e_calendar_view_send (
+ E_CALENDAR_VIEW (day_view),
+ comp, client, mod, toplevel, strip_alarms, only_new_attendees);
g_object_unref (comp);
@@ -8603,6 +8641,10 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget,
gboolean drag_from_same_window;
const guchar *data;
gint format, length;
+ GtkResponseType send = GTK_RESPONSE_NO;
+ gboolean modified;
+ gboolean only_new_attendees = FALSE;
+ gboolean strip_alarms = TRUE;
cal_view = E_CALENDAR_VIEW (day_view);
model = e_calendar_view_get_model (cal_view);
@@ -8693,6 +8735,19 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget,
return;
}
+ toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view)));
+
+ if ((itip_organizer_is_user (registry, comp, client) ||
+ itip_sentby_is_user (registry, comp, client)))
+ send = send_dragged_or_resized_component_dialog (
+ toplevel, client, comp, &strip_alarms, &only_new_attendees);
+
+ if (send == GTK_RESPONSE_CANCEL) {
+ e_day_view_abort_resize (day_view);
+ g_object_unref (comp);
+ return;
+ }
+
date.value = &itt;
date.tzid = icaltimezone_get_tzid (e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view)));
@@ -8719,6 +8774,7 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget,
e_cal_component_commit_sequence (comp);
if (e_cal_component_has_recurrences (comp)) {
if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) {
+ gtk_widget_queue_draw (day_view->main_canvas);
g_object_unref (comp);
return;
}
@@ -8735,11 +8791,12 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget,
} else if (e_cal_component_is_instance (comp))
mod = CALOBJ_MOD_THIS;
- toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view)));
+ modified = e_calendar_view_modify (E_CALENDAR_VIEW (day_view), comp, client, mod);
- e_calendar_view_modify_and_send (
- E_CALENDAR_VIEW (day_view),
- comp, client, mod, toplevel, FALSE);
+ if (modified && send == GTK_RESPONSE_YES)
+ e_calendar_view_send (
+ E_CALENDAR_VIEW (day_view),
+ comp, client, mod, toplevel, strip_alarms, only_new_attendees);
g_object_unref (comp);