balsa r7941 - in trunk: . libbalsa/imap src
- From: pawels svn gnome org
- To: svn-commits-list gnome org
- Subject: balsa r7941 - in trunk: . libbalsa/imap src
- Date: Wed, 11 Jun 2008 21:17:54 +0000 (UTC)
Author: pawels
Date: Wed Jun 11 21:17:53 2008
New Revision: 7941
URL: http://svn.gnome.org/viewvc/balsa?rev=7941&view=rev
Log:
* libbalsa/imap/imap-handle.c: detect disconnect on write.
* src/ab-main.c: add "Delete Entry" menu entry.
Modified:
trunk/ChangeLog
trunk/libbalsa/imap/imap-handle.c
trunk/src/ab-main.c
Modified: trunk/libbalsa/imap/imap-handle.c
==============================================================================
--- trunk/libbalsa/imap/imap-handle.c (original)
+++ trunk/libbalsa/imap/imap-handle.c Wed Jun 11 21:17:53 2008
@@ -1983,7 +1983,11 @@
return IMR_SEVERED; /* irrecoverable connection error. */
if(ret_cmdno) *ret_cmdno = cmdno;
+ g_return_val_if_fail(handle->state != IMHS_DISCONNECTED && 1, IMR_BAD);
sio_flush(handle->sio);
+ if(handle->state == IMHS_DISCONNECTED)
+ return IMR_SEVERED;
+
do {
rc = imap_cmd_step (handle, cmdno);
} while (rc == IMR_UNTAGGED);
Modified: trunk/src/ab-main.c
==============================================================================
--- trunk/src/ab-main.c (original)
+++ trunk/src/ab-main.c Wed Jun 11 21:17:53 2008
@@ -1,6 +1,6 @@
/* -*-mode:c; c-style:k&r; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
- * Copyright (C) 1997-2002 Stuart Parmenter and others,
+ * Copyright (C) 1997-2008 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
@@ -487,6 +487,53 @@
focus_child);
}
+static LibBalsaABErr
+ab_remove_address(LibBalsaAddress* address)
+{
+ LibBalsaABErr err = LBABERR_OK;
+
+ g_return_val_if_fail(address, err);
+
+ libbalsa_address_book_remove_address(contacts_app.address_book, address);
+
+ if(err == LBABERR_OK) {
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ GtkTreeView *v = GTK_TREE_VIEW(contacts_app.entry_list);
+ GtkTreeModel *m;
+ selection = gtk_tree_view_get_selection(v);
+ if(gtk_tree_selection_get_selected(selection, &m, &iter))
+ gtk_list_store_remove(GTK_LIST_STORE(m), &iter);
+ if(address == contacts_app.displayed_address) {
+ ab_clear_edit_widget();
+ contacts_app.displayed_address = NULL;
+ }
+ } else
+ ab_warning("Cannot remove: %s\n",
+ libbalsa_address_book_strerror(contacts_app.address_book,
+ err));
+ return err;
+}
+
+static void
+edit_delete_entry_cb(GtkAction * action, gpointer user_data)
+{
+ GtkTreeView *v = GTK_TREE_VIEW(contacts_app.entry_list);
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(v);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
+ GValue gv = {0,};
+ LibBalsaAddress *address;
+
+ gtk_tree_model_get_value(model, &iter, LIST_COLUMN_ADDRESS, &gv);
+ address = LIBBALSA_ADDRESS(g_value_get_object(&gv));
+ if (address)
+ ab_remove_address(address);
+ }
+}
+
/* Normal items */
static GtkActionEntry entries[] = {
{"FileMenu", NULL, N_("_File")},
@@ -519,6 +566,8 @@
gtk_main_quit},
{"NewEntry", GTK_STOCK_NEW, N_("_New Entry"), "<shift><control>N",
N_("Add new entry"), G_CALLBACK(edit_new_entry_cb)},
+ {"DeleteEntry", GTK_STOCK_NEW, N_("_Delete Entry"), NULL,
+ N_("Delete entry"), G_CALLBACK(edit_delete_entry_cb)},
{"About",
#if GTK_CHECK_VERSION(2, 6, 0)
GTK_STOCK_ABOUT,
@@ -554,6 +603,7 @@
" </menu>"
" <menu action='EntryMenu'>"
" <menuitem action='NewEntry'/>"
+" <menuitem action='DeleteEntry'/>"
" </menu>"
" <menu action='HelpMenu'>"
" <menuitem action='About'/>"
@@ -831,25 +881,7 @@
static void
remove_button_cb(GtkWidget *w, gpointer data)
{
- LibBalsaABErr err = LBABERR_OK;
-
- if (contacts_app.displayed_address)
- libbalsa_address_book_remove_address(contacts_app.address_book,
- contacts_app.displayed_address);
- if(err == LBABERR_OK) {
- GtkTreeIter iter;
- GtkTreeSelection *selection;
- GtkTreeView *v = GTK_TREE_VIEW(contacts_app.entry_list);
- GtkTreeModel *m;
- selection = gtk_tree_view_get_selection(v);
- if(gtk_tree_selection_get_selected(selection, &m, &iter))
- gtk_list_store_remove(GTK_LIST_STORE(m), &iter);
- ab_clear_edit_widget();
- contacts_app.displayed_address = NULL;
- } else
- ab_warning("Cannot remove: %s\n",
- libbalsa_address_book_strerror(contacts_app.address_book,
- err));
+ ab_remove_address(contacts_app.displayed_address);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]