From a3e46fcf743ccdac7c2461658898ca254bf64dd6 Mon Sep 17 00:00:00 2001 From: tpearson Date: Thu, 26 Aug 2010 19:26:36 +0000 Subject: [PATCH] Fixed 404 when deleting multiple contacts git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1168498 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kresources/carddav/writer.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/kresources/carddav/writer.cpp b/kresources/carddav/writer.cpp index 2216fb06..7141bf30 100644 --- a/kresources/carddav/writer.cpp +++ b/kresources/carddav/writer.cpp @@ -58,10 +58,15 @@ int CardDavWriter::runJob(runtime_info* RT) { res = pushObjects(mChanged, carddav_modify_object_by_uri, OK, RT); if (OK == res) { kdDebug() << "pushing deleted objects"; - if (getUseURI() == false) - res = pushObjects(mDeleted, carddav_delete_object, OK, RT); - else - res = pushObjects(mDeleted, carddav_delete_object_by_uri, OK, RT); + while (mDeleted.contains("BEGIN:VCARD", TRUE) > 0) { + int endLocation = mDeleted.find("END:VCARD", 0, TRUE); + TQString deletedCurSeq = mDeleted.mid(0, endLocation+9); + mDeleted = mDeleted.remove(0, endLocation+9); + if (getUseURI() == false) + res = pushObjects(deletedCurSeq, carddav_delete_object, OK, RT); + else + res = pushObjects(deletedCurSeq, carddav_delete_object_by_uri, OK, RT); + } } #else // if USE_CARDDAV_MODIFY kdDebug() << "pushing changed objects (delete)"; @@ -77,10 +82,15 @@ int CardDavWriter::runJob(runtime_info* RT) { res = pushObjects(mChanged, carddav_add_object, OK, RT); if (OK == res) { kdDebug() << "pushing deleted objects"; - if (getUseURI() == false) - res = pushObjects(mDeleted, carddav_delete_object, OK, RT); - else - res = pushObjects(mDeleted, carddav_delete_object_by_uri, OK, RT); + while (mDeleted.contains("BEGIN:VCARD", TRUE) > 0) { + int endLocation = mDeleted.find("END:VCARD", 0, TRUE); + TQString deletedCurSeq = mDeleted.mid(0, endLocation+9); + mDeleted = mDeleted.remove(0, endLocation+9); + if (getUseURI() == false) + res = pushObjects(deletedCurSeq, carddav_delete_object, OK, RT); + else + res = pushObjects(deletedCurSeq, carddav_delete_object_by_uri, OK, RT); + } } } #endif // if USE_CARDDAV_MODIFY