evolution r36940 - in trunk/calendar: . gui/dialogs



Author: abharath
Date: Mon Dec 29 05:57:28 2008
New Revision: 36940
URL: http://svn.gnome.org/viewvc/evolution?rev=36940&view=rev

Log:
2008-12-29  Bharath Acharya  <abharath novell com>

       ** Fix for bug #439998 (bnc)

       * gui/dialogs/comp-editor.c: (remove_event_dialog),
       (action_save_cb): Ask the user if he wants to remove the
        delegated events or keep a copy.


Modified:
   trunk/calendar/ChangeLog
   trunk/calendar/gui/dialogs/comp-editor.c

Modified: trunk/calendar/gui/dialogs/comp-editor.c
==============================================================================
--- trunk/calendar/gui/dialogs/comp-editor.c	(original)
+++ trunk/calendar/gui/dialogs/comp-editor.c	Mon Dec 29 05:57:28 2008
@@ -1102,6 +1102,24 @@
 	g_object_unref (comp);
 }
 
+static gboolean
+remove_event_dialog (ECal *client,
+		     ECalComponent *comp,
+		     GtkWindow *parent)
+{
+	GtkWidget *dialog;
+	gboolean ret;
+
+	g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), TRUE);
+
+	dialog = gtk_message_dialog_new (parent, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", _("Keep original item?"));
+	gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
+	ret = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES;
+	gtk_widget_destroy (dialog);
+
+	return ret;
+}
+
 static void
 action_save_cb (GtkAction *action,
                 CompEditor *editor)
@@ -1153,9 +1171,33 @@
 	if (!text.value)
 		if (!send_component_prompt_subject ((GtkWindow *) editor, priv->client, priv->comp))
 			return;
-	if (save_comp_with_send (editor))
-		close_dialog (editor);
 
+	if (save_comp_with_send (editor)) {
+		CompEditorFlags flags;
+		gboolean delegate;
+
+		flags = comp_editor_get_flags (editor);
+		delegate = flags & COMP_EDITOR_DELEGATE;
+
+		if (delegate && !remove_event_dialog (priv->client, priv->comp, GTK_WINDOW (editor))) {
+			const char *uid = NULL; 
+			GError *error = NULL;
+
+			e_cal_component_get_uid (priv->comp, &uid);
+
+			if (e_cal_component_is_instance (priv->comp) || e_cal_component_has_recurrences (priv->comp)) {
+				gchar *rid;
+				rid = e_cal_component_get_recurid_as_string (priv->comp);
+				e_cal_remove_object_with_mod (priv->client, uid, rid, priv->mod, &error);
+				g_free (rid);
+			} else
+				e_cal_remove_object (priv->client, uid, &error);
+
+			g_clear_error (&error);
+		}
+	}
+
+	close_dialog (editor);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]