aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/itip-formatter/itip-view.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2009-01-19 21:56:42 +0800
committerMilan Crha <mcrha@src.gnome.org>2009-01-19 21:56:42 +0800
commit2be7cd3b2ab50047820da4a1e873785b53f41acd (patch)
tree50f07aacdc49a27e040e8470ad57e6fa21bdead5 /plugins/itip-formatter/itip-view.c
parentae26a9a5fb34beb48e4161c8f145b0fb2d3cb3a9 (diff)
downloadgsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.tar
gsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.tar.gz
gsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.tar.bz2
gsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.tar.lz
gsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.tar.xz
gsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.tar.zst
gsoc2013-evolution-2be7cd3b2ab50047820da4a1e873785b53f41acd.zip
** Fix for bug #225712
2009-01-19 Milan Crha <mcrha@redhat.com> ** Fix for bug #225712 * calendar/gui/dialogs/comp-editor.h: (CompEditorClass::send_comp), (comp_editor_send_comp): Changed function prototypes. * calendar/gui/dialogs/comp-editor.c: (real_send_comp), (save_comp_with_send), (comp_editor_send_comp): Strip alarms based on user's choice. * calendar/gui/dialogs/send-comp.h: (send_component_dialog): * calendar/gui/dialogs/send-comp.c: (have_nonprocedural_alarm), (send_component_dialog): Show option "Send my alarms with this event" when prompting to send event or not, but only if have any non-procedure alarms and if it the caller want to know user's opinion. Default is to strip all alarms. Procedure alarms are always strip out. * calendar/gui/dialogs/event-editor.c: (event_editor_send_comp): * calendar/gui/dialogs/task-editor.c: (task_editor_send_comp): Honor function prototype changes and use new parameter strip_alarms. * calendar/gui/itip-utils.h: (itip_send_comp): * calendar/gui/itip-utils.c: (comp_compliant), (itip_send_comp), (reply_to_calendar_comp): New parameter to strip all alarms or only procedure alarms. * calendar/gui/tasks-control.c: (tasks_control_forward_cmd): * calendar/gui/e-itip-control.c: (send_item), (send_freebusy), (ok_clicked_cb): * calendar/gui/e-calendar-table.c: (e_calendar_table_on_forward): * calendar/gui/e-memo-table.c: (e_memo_table_on_forward): * calendar/gui/e-calendar-view.c: (e_calendar_view_cut_clipboard), (delete_event), (e_calendar_view_delete_selected_occurrence), (on_forward): Always strip alarms when sending component. * calendar/gui/e-calendar-view.c: (e_calendar_view_add_event), (e_calendar_view_modify_and_send): * calendar/gui/e-cal-model-calendar.c: (ecmc_set_value_at): Strip alarms based on user's choice. * plugins/itip-formatter/itip-view.h: * plugins/itip-formatter/itip-view.c: (itip_view_set_show_keep_alarm_check), (itip_view_get_keep_alarm_check_state), (itip_view_set_show_inherit_alarm_check), (itip_view_get_inherit_alarm_check_state): New functions to new options to either inherit reminder from the incoming event or to preserve users reminders in already existing event in the calendar. * plugins/itip-formatter/itip-view.c: (struct _ItipViewPrivate), (alarm_check_toggled_cb), (itip_view_init): Properly initialize new option's members. * plugins/itip-formatter/itip-formatter.c: (find_cal_opened_cb), (update_item), (send_comp_to_attendee), (update_attendee_status), (send_item), (extract_itip_data), (view_response_cb), (format_itip_object): Setup new options based on the actual data. svn path=/trunk/; revision=37097
Diffstat (limited to 'plugins/itip-formatter/itip-view.c')
-rw-r--r--plugins/itip-formatter/itip-view.c77
1 files changed, 75 insertions, 2 deletions
diff --git a/plugins/itip-formatter/itip-view.c b/plugins/itip-formatter/itip-view.c
index 92a8460e48..8c36da53d3 100644
--- a/plugins/itip-formatter/itip-view.c
+++ b/plugins/itip-formatter/itip-view.c
@@ -121,6 +121,8 @@ struct _ItipViewPrivate {
GtkWidget *options_box;
GtkWidget *free_time_check;
+ GtkWidget *keep_alarm_check;
+ GtkWidget *inherit_alarm_check;
GtkWidget *button_box;
gboolean buttons_sensitive;
@@ -947,6 +949,18 @@ recur_toggled_cb (GtkWidget *widget, gpointer data)
itip_view_set_mode (view, priv->mode);
}
+/*
+ alarm_check_toggled_cb
+ check1 was changed, so make the second available based on state of the first check.
+*/
+static void
+alarm_check_toggled_cb (GtkWidget *check1, GtkWidget *check2)
+{
+ g_return_if_fail (check1 != NULL);
+ g_return_if_fail (check2 != NULL);
+
+ gtk_widget_set_sensitive (check2, !(GTK_WIDGET_VISIBLE (check1) && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check1))));
+}
static void
itip_view_init (ItipView *view)
@@ -1119,6 +1133,17 @@ itip_view_init (ItipView *view)
priv->free_time_check = gtk_check_button_new_with_mnemonic (_("Show time as _free"));
gtk_box_pack_start (GTK_BOX (priv->options_box), priv->free_time_check, FALSE, FALSE, 0);
+ priv->keep_alarm_check = gtk_check_button_new_with_mnemonic (_("_Preserve my reminder"));
+ /* default value is to keep user's alarms */
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->priv->keep_alarm_check), TRUE);
+ gtk_box_pack_start (GTK_BOX (priv->options_box), priv->keep_alarm_check, FALSE, FALSE, 0);
+
+ priv->inherit_alarm_check = gtk_check_button_new_with_mnemonic (_("_Inherit reminder"));
+ gtk_box_pack_start (GTK_BOX (priv->options_box), priv->inherit_alarm_check, FALSE, FALSE, 0);
+
+ g_signal_connect (priv->keep_alarm_check, "toggled", G_CALLBACK (alarm_check_toggled_cb), priv->inherit_alarm_check);
+ g_signal_connect (priv->inherit_alarm_check, "toggled", G_CALLBACK (alarm_check_toggled_cb), priv->keep_alarm_check);
+
/* The buttons for actions */
priv->button_box = gtk_hbutton_box_new ();
gtk_button_box_set_layout (GTK_BUTTON_BOX (priv->button_box), GTK_BUTTONBOX_START);
@@ -2118,7 +2143,7 @@ itip_view_set_show_recur_check (ItipView *view, gboolean show)
if (show)
gtk_widget_show (view->priv->recur_check);
- else {
+ else {
gtk_widget_hide (view->priv->recur_check);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->priv->recur_check), FALSE);
}
@@ -2132,7 +2157,7 @@ itip_view_set_show_free_time_check (ItipView *view, gboolean show)
if (show)
gtk_widget_show (view->priv->free_time_check);
- else {
+ else {
gtk_widget_hide (view->priv->free_time_check);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->priv->free_time_check), FALSE);
}
@@ -2145,3 +2170,51 @@ itip_view_get_free_time_check_state (ItipView *view)
return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view->priv->free_time_check));
}
+
+void
+itip_view_set_show_keep_alarm_check (ItipView *view, gboolean show)
+{
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (ITIP_IS_VIEW (view));
+
+ if (show)
+ gtk_widget_show (view->priv->keep_alarm_check);
+ else
+ gtk_widget_hide (view->priv->keep_alarm_check);
+
+ /* and update state of the second check */
+ alarm_check_toggled_cb (view->priv->keep_alarm_check, view->priv->inherit_alarm_check);
+}
+
+gboolean
+itip_view_get_keep_alarm_check_state (ItipView *view)
+{
+ g_return_val_if_fail (view != NULL, FALSE);
+
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view->priv->keep_alarm_check));
+}
+
+void
+itip_view_set_show_inherit_alarm_check (ItipView *view, gboolean show)
+{
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (ITIP_IS_VIEW (view));
+
+ if (show)
+ gtk_widget_show (view->priv->inherit_alarm_check);
+ else {
+ gtk_widget_hide (view->priv->inherit_alarm_check);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->priv->inherit_alarm_check), FALSE);
+ }
+
+ /* and update state of the second check */
+ alarm_check_toggled_cb (view->priv->inherit_alarm_check, view->priv->keep_alarm_check);
+}
+
+gboolean
+itip_view_get_inherit_alarm_check_state (ItipView *view)
+{
+ g_return_val_if_fail (view != NULL, FALSE);
+
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view->priv->inherit_alarm_check));
+}