aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui
diff options
context:
space:
mode:
authorHans Petter Jansson <hpj@ximian.com>2004-03-04 06:13:51 +0800
committerHans Petter <hansp@src.gnome.org>2004-03-04 06:13:51 +0800
commit98a32f514c568a8c1229e323d1609cb8f5a7ba1f (patch)
tree3274cc2e021bfb88c789f603a4d434c6360cd6be /addressbook/gui
parent8e0c48835a78f06aa33dff7b2d2c4c1792df1bbf (diff)
downloadgsoc2013-evolution-98a32f514c568a8c1229e323d1609cb8f5a7ba1f.tar.gz
gsoc2013-evolution-98a32f514c568a8c1229e323d1609cb8f5a7ba1f.tar.zst
gsoc2013-evolution-98a32f514c568a8c1229e323d1609cb8f5a7ba1f.zip
Remove local data, with error reporting on failure.
2004-03-03 Hans Petter Jansson <hpj@ximian.com> * gui/component/addressbook-component.c (delete_addressbook_cb): Remove local data, with error reporting on failure. svn path=/trunk/; revision=24952
Diffstat (limited to 'addressbook/gui')
-rw-r--r--addressbook/gui/component/addressbook-component.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c
index 6d84a84747..b9b84e2cf4 100644
--- a/addressbook/gui/component/addressbook-component.c
+++ b/addressbook/gui/component/addressbook-component.c
@@ -206,6 +206,9 @@ delete_addressbook_cb (GtkWidget *widget, AddressbookComponent *comp)
ESource *selected_source;
AddressbookComponentPrivate *priv;
GtkWidget *dialog;
+ EBook *book;
+ gboolean removed = FALSE;
+ GError *error;
priv = comp->priv;
@@ -222,7 +225,19 @@ delete_addressbook_cb (GtkWidget *widget, AddressbookComponent *comp)
_("Address book '%s' will be removed. Are you sure you want to continue?"),
e_source_peek_name (selected_source));
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES) {
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_YES) {
+ gtk_widget_destroy (dialog);
+ return;
+ }
+
+ /* Remove local data */
+ book = e_book_new ();
+ if (e_book_load_source (book, selected_source, TRUE, &error))
+ removed = e_book_remove (book, &error);
+
+ if (removed) {
+ /* Remove source */
if (e_source_selector_source_is_selected (E_SOURCE_SELECTOR (priv->source_selector),
selected_source))
e_source_selector_unselect_source (E_SOURCE_SELECTOR (priv->source_selector),
@@ -231,10 +246,22 @@ delete_addressbook_cb (GtkWidget *widget, AddressbookComponent *comp)
e_source_group_remove_source (e_source_peek_group (selected_source), selected_source);
e_source_list_sync (priv->source_list, NULL);
-
- /* FIXME: Remove local data */
+ } else {
+ GtkWidget *error_dialog;
+
+ error_dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (widget)),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "Error removing address book: %s",
+ error->message);
+ gtk_dialog_run (GTK_DIALOG (error_dialog));
+ gtk_widget_destroy (error_dialog);
+
+ g_error_free (error);
}
+ g_object_unref (book);
gtk_widget_destroy (dialog);
}