diff options
author | Chris Toshok <toshok@ximian.com> | 2004-08-20 04:33:11 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2004-08-20 04:33:11 +0800 |
commit | 5cb6605ddbb4e5f1157e242ca83808bce62f49cf (patch) | |
tree | 4abad6643293b5067af3a82c71219559cc6e0ce5 /addressbook/gui | |
parent | b2416ac03ed9c839fee54f0b63646e545e0624f1 (diff) | |
download | gsoc2013-evolution-5cb6605ddbb4e5f1157e242ca83808bce62f49cf.tar.gz gsoc2013-evolution-5cb6605ddbb4e5f1157e242ca83808bce62f49cf.tar.zst gsoc2013-evolution-5cb6605ddbb4e5f1157e242ca83808bce62f49cf.zip |
[ likely fixes #61500 ] remove the secondary text, since we don't have the
2004-08-19 Chris Toshok <toshok@ximian.com>
[ likely fixes #61500 ]
* addressbook-errors.xml (remove-addressbook): remove the
secondary text, since we don't have the gerror text to supply it
anymore.
* gui/component/addressbook-view.c (book_removed): new function,
move the error handling here.
(delete_addressbook_cb): create a closure with necessary data, and
call the e_book_async_remove instead of e_book_remove.
svn path=/trunk/; revision=26975
Diffstat (limited to 'addressbook/gui')
-rw-r--r-- | addressbook/gui/component/addressbook-view.c | 76 |
1 files changed, 57 insertions, 19 deletions
diff --git a/addressbook/gui/component/addressbook-view.c b/addressbook/gui/component/addressbook-view.c index bf1e5fff0a..179c9fbf26 100644 --- a/addressbook/gui/component/addressbook-view.c +++ b/addressbook/gui/component/addressbook-view.c @@ -648,6 +648,47 @@ add_popup_menu_item (GtkMenu *menu, const char *label, const char *pixmap, gtk_widget_show (item); } +typedef struct { + AddressbookView *view; + ESource *selected_source; + GtkWidget *toplevel; + GtkWidget *dialog; +} BookRemovedClosure; + +static void +book_removed (EBook *book, EBookStatus status, gpointer data) +{ + BookRemovedClosure *closure = data; + AddressbookView *view = closure->view; + AddressbookViewPrivate *priv = view->priv; + ESource *source = closure->selected_source; + GtkWidget *dialog = closure->dialog; + GtkWidget *toplevel = closure->toplevel; + + g_free (closure); + + g_object_unref (book); + + if (E_BOOK_ERROR_OK == status) { + /* Remove source */ + if (e_source_selector_source_is_selected (E_SOURCE_SELECTOR (priv->selector), + source)) + e_source_selector_unselect_source (E_SOURCE_SELECTOR (priv->selector), + source); + + e_source_group_remove_source (e_source_peek_group (source), source); + + e_source_list_sync (priv->source_list, NULL); + } + else { + e_error_run (GTK_WINDOW (toplevel), + "addressbook:remove-addressbook", + NULL); + } + + gtk_widget_destroy (dialog); +} + static void delete_addressbook_cb (GtkWidget *widget, AddressbookView *view) { @@ -655,7 +696,6 @@ delete_addressbook_cb (GtkWidget *widget, AddressbookView *view) ESource *selected_source; GtkWidget *dialog; EBook *book; - gboolean removed = FALSE; GError *error = NULL; selected_source = e_source_selector_peek_primary_selection (E_SOURCE_SELECTOR (priv->selector)); @@ -679,28 +719,26 @@ delete_addressbook_cb (GtkWidget *widget, AddressbookView *view) /* Remove local data */ book = e_book_new (selected_source, &error); - if (book) - removed = e_book_remove (book, &error); + if (book) { + BookRemovedClosure *closure = g_new (BookRemovedClosure, 1); - if (removed) { - /* Remove source */ - if (e_source_selector_source_is_selected (E_SOURCE_SELECTOR (priv->selector), - selected_source)) - e_source_selector_unselect_source (E_SOURCE_SELECTOR (priv->selector), - selected_source); - - e_source_group_remove_source (e_source_peek_group (selected_source), selected_source); + closure->toplevel = gtk_widget_get_toplevel (widget); + closure->view = view; + closure->selected_source = selected_source; + closure->dialog = dialog; - e_source_list_sync (priv->source_list, NULL); - } else { - e_error_run (GTK_WINDOW (gtk_widget_get_toplevel (widget)), - "addressbook:remove-addressbook", - error->message, NULL); - g_error_free (error); + if (e_book_async_remove (book, book_removed, closure)) { + e_error_run (GTK_WINDOW (gtk_widget_get_toplevel (widget)), + "addressbook:remove-addressbook", + NULL); + + g_free (closure); + + g_object_unref (book); + } } - g_object_unref (book); - gtk_widget_destroy (dialog); + gtk_widget_set_sensitive (dialog, FALSE); } static void |