aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSushma Rai <rsushma@src.gnome.org>2005-08-03 16:34:02 +0800
committerSushma Rai <rsushma@src.gnome.org>2005-08-03 16:34:02 +0800
commit0c08ef49299caf0e6ae997451ba7a2d923931c42 (patch)
tree8a68fda2b4899b2b0114a282c7b8b7b75409d4e3
parentf81882412a602d2b19746dda3d013926021890bd (diff)
downloadgsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.tar
gsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.tar.gz
gsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.tar.bz2
gsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.tar.lz
gsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.tar.xz
gsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.tar.zst
gsoc2013-evolution-0c08ef49299caf0e6ae997451ba7a2d923931c42.zip
Not removing the contacts, if move fails because of destination address book
load/write error, and also if the move operation was cancelled on finding a duplicate contact. Fixes #311133, #273716. svn path=/trunk/; revision=29967
-rw-r--r--addressbook/ChangeLog18
-rw-r--r--addressbook/gui/widgets/eab-gui-util.c22
2 files changed, 31 insertions, 9 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index e92238559e..d45f2559fa 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,12 +1,22 @@
-2005-08-01 Srinivasa Ragavan <sragavan@novell.com>
+2005-03-03 Sushma Rai <rsushma@novell.com>
+
+ * gui/widgets/eab-gui-util.c (eab_transfer_contacts): Initialize the
+ flag status to FALSE.
+ (got_book_cb): Set status to TRUE on loading the address book.
+ (contact_added_cb): Set status to FALSE on error or cancel operation.
+ Set status to true on success. Call process_unref always.
+ (delete_contacts): Delete the contacts only on success.
+ Fixes #311133, #273716.
+
+2005-08-03 Srinivasa Ragavan <sragavan@novell.com>
* gui/widgets/eab-gui-util.c (eab_load_error_dialog): Made the error dialog
- for load-error nonmodal, since it block the UI along with popup menu.
+ for load-error nonmodal, since it blocks the UI along with popup menu.
* gui/component/addressbook-view.c (load_uri_for_selection)
(primary_source_selection_changed_callback) (addressbook_view_init):
- Checks whether the book is already selected. If so it doesnt reselect
- it on a r-click. Fixes the bug #309247
+ Checks whether the book is already selected. If so it doesn't reselect
+ it on a right-click. Fixes the bug #309247
2005-08-03 Frank Arnold <farnold@cvs.gnome.org>
diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c
index 646887a8cd..85a4e8d0f8 100644
--- a/addressbook/gui/widgets/eab-gui-util.c
+++ b/addressbook/gui/widgets/eab-gui-util.c
@@ -628,6 +628,7 @@ typedef void (*ContactCopyDone) (ContactCopyProcess *process);
struct ContactCopyProcess_ {
int count;
+ gboolean book_status;
GList *contacts;
EBook *source;
EBook *destination;
@@ -654,9 +655,11 @@ do_delete (gpointer data, gpointer user_data)
static void
delete_contacts (ContactCopyProcess *process)
{
- g_list_foreach (process->contacts,
- do_delete,
- process->source);
+ if (process->book_status == TRUE) {
+ g_list_foreach (process->contacts,
+ do_delete,
+ process->source);
+ }
}
static void
@@ -680,10 +683,17 @@ contact_added_cb (EBook* book, EBookStatus status, const char *id, gpointer user
ContactCopyProcess *process = user_data;
if (status != E_BOOK_ERROR_OK && status != E_BOOK_ERROR_CANCELLED) {
+ process->book_status = FALSE;
eab_error_dialog (_("Error adding contact"), status);
- } else {
- process_unref (process);
+ }
+ else if (status == E_BOOK_ERROR_CANCELLED) {
+ process->book_status = FALSE;
}
+ else {
+ /* success */
+ process->book_status = TRUE;
+ }
+ process_unref (process);
}
static void
@@ -709,6 +719,7 @@ got_book_cb (EBook *book, EBookStatus status, gpointer closure)
process = closure;
if (status == E_BOOK_ERROR_OK) {
process->destination = book;
+ process->book_status = TRUE;
g_object_ref (book);
g_list_foreach (process->contacts,
do_copy,
@@ -757,6 +768,7 @@ eab_transfer_contacts (EBook *source, GList *contacts /* adopted */, gboolean de
process = g_new (ContactCopyProcess, 1);
process->count = 1;
+ process->book_status = FALSE;
process->source = source;
g_object_ref (source);
process->contacts = contacts;