diff --git a/calendar/calendar.error.xml b/calendar/calendar.error.xml
index 5f3e2250c0..3d5140d03c 100644
--- a/calendar/calendar.error.xml
+++ b/calendar/calendar.error.xml
@@ -226,6 +226,13 @@
+
+ <_primary>Delete remote task list "{0}"?
+ <_secondary>This will permanently remove the task list "{0}" from the server. Are you sure you want to proceed?
+
+
+
+
<_primary>Are you sure you want to save the appointment without a summary?
<_secondary>Adding a meaningful summary to your appointment will give you an idea of what your appointment is about.
diff --git a/modules/calendar/e-task-shell-view-actions.c b/modules/calendar/e-task-shell-view-actions.c
index e29db39d11..e9898fe971 100644
--- a/modules/calendar/e-task-shell-view-actions.c
+++ b/modules/calendar/e-task-shell-view-actions.c
@@ -173,8 +173,8 @@ action_task_list_delete_cb (GtkAction *action,
ETaskShellSidebar *task_shell_sidebar;
EShellWindow *shell_window;
EShellView *shell_view;
- ESourceSelector *selector;
ESource *source;
+ ESourceSelector *selector;
gint response;
shell_view = E_SHELL_VIEW (task_shell_view);
@@ -182,28 +182,29 @@ action_task_list_delete_cb (GtkAction *action,
task_shell_sidebar = task_shell_view->priv->task_shell_sidebar;
selector = e_task_shell_sidebar_get_selector (task_shell_sidebar);
+
source = e_source_selector_ref_primary_selection (selector);
g_return_if_fail (source != NULL);
- /* Ask for confirmation. */
- response = e_alert_run_dialog_for_args (
- GTK_WINDOW (shell_window),
- "calendar:prompt-delete-task-list",
- e_source_get_display_name (source), NULL);
+ if (e_source_get_remote_deletable (source)) {
+ response = e_alert_run_dialog_for_args (
+ GTK_WINDOW (shell_window),
+ "calendar:prompt-delete-remote-task-list",
+ e_source_get_display_name (source), NULL);
- if (response != GTK_RESPONSE_YES) {
- g_object_unref (source);
- return;
+ if (response == GTK_RESPONSE_YES)
+ e_shell_view_remote_delete_source (shell_view, source);
+
+ } else {
+ response = e_alert_run_dialog_for_args (
+ GTK_WINDOW (shell_window),
+ "calendar:prompt-delete-task-list",
+ e_source_get_display_name (source), NULL);
+
+ if (response == GTK_RESPONSE_YES)
+ e_shell_view_remove_source (shell_view, source);
}
- if (e_source_selector_source_is_selected (selector, source)) {
- e_task_shell_sidebar_remove_source (
- task_shell_sidebar, source);
- e_source_selector_unselect_source (selector, source);
- }
-
- e_shell_view_remove_source (shell_view, source);
-
g_object_unref (source);
}