aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui
diff options
context:
space:
mode:
authorSushma Rai <rsushma@src.gnome.org>2005-09-28 18:55:41 +0800
committerSushma Rai <rsushma@src.gnome.org>2005-09-28 18:55:41 +0800
commiteb8d2ad1f93e5e29897bbe015ae187d5c504495c (patch)
tree31cd22c1e41fe845f60d6b3ac27ce4fa16772057 /addressbook/gui
parentdb5aeac89568d5d0178c7ab6becfe15e3babfb54 (diff)
downloadgsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.tar
gsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.tar.gz
gsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.tar.bz2
gsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.tar.lz
gsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.tar.xz
gsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.tar.zst
gsoc2013-evolution-eb8d2ad1f93e5e29897bbe015ae187d5c504495c.zip
Allowing to delete address book folder using Del/Delete key.
Fixes #233424. Patch submitted by "Devashish Sharma <sdevashish@novell.com>" svn path=/trunk/; revision=30402
Diffstat (limited to 'addressbook/gui')
-rw-r--r--addressbook/gui/component/addressbook-view.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/addressbook/gui/component/addressbook-view.c b/addressbook/gui/component/addressbook-view.c
index 1801920fad..a532cd8a23 100644
--- a/addressbook/gui/component/addressbook-view.c
+++ b/addressbook/gui/component/addressbook-view.c
@@ -1085,6 +1085,53 @@ addressbook_view_class_init (AddressbookViewClass *klass)
}
static void
+source_selector_key_press_event_callback (GtkWidget *widget, GdkEventKey *event, AddressbookView *view)
+{
+ if (event->keyval == GDK_Delete) {
+ AddressbookViewPrivate *priv = view->priv;
+ ESource *selected_source;
+ EBook *book;
+ GError *error = NULL;
+ GtkWindow *toplevel;
+
+ selected_source = e_source_selector_peek_primary_selection (E_SOURCE_SELECTOR (priv->selector));
+ if (!selected_source)
+ return;
+
+ toplevel = (GtkWindow *) gtk_widget_get_toplevel (priv->notebook);
+
+ if (e_error_run (toplevel, "addressbook:ask-delete-addressbook",
+ e_source_peek_name(selected_source)) != GTK_RESPONSE_YES)
+ return;
+
+ /* Remove local data */
+ book = e_book_new (selected_source, &error);
+ if (book) {
+ if (e_book_remove (book, NULL)) {
+ 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);
+
+ e_source_list_sync (priv->source_list, NULL);
+ }
+ else {
+ e_error_run (toplevel, "addressbook:remove-addressbook", NULL);
+ }
+
+ g_object_unref (book);
+ }
+ else {
+ g_warning ("error removing addressbook : %s", error->message);
+ g_error_free (error);
+ }
+ }
+ return;
+}
+
+static void
addressbook_view_init (AddressbookView *view)
{
AddressbookViewPrivate *priv;
@@ -1161,6 +1208,9 @@ addressbook_view_init (AddressbookView *view)
g_signal_connect_object (priv->selector, "primary_selection_changed",
G_CALLBACK (primary_source_selection_changed_callback),
G_OBJECT (view), 0);
+ g_signal_connect_after (priv->selector, "key_press_event",
+ G_CALLBACK (source_selector_key_press_event_callback),
+ G_OBJECT (view));
g_signal_connect_object (priv->selector, "popup_event",
G_CALLBACK (popup_event_callback),
G_OBJECT (view), 0);