author | zautrix <zautrix> | 2004-09-19 20:14:28 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-09-19 20:14:28 (UTC) |
commit | afa28a62314117555d6b32291188eedd1a576284 (patch) (unidiff) | |
tree | ea97a247de30a7a34480bc395e1996ab99247361 | |
parent | e0d8e062c9d8092e47dcadd88b30614ebff43c0c (diff) | |
download | kdepimpi-afa28a62314117555d6b32291188eedd1a576284.zip kdepimpi-afa28a62314117555d6b32291188eedd1a576284.tar.gz kdepimpi-afa28a62314117555d6b32291188eedd1a576284.tar.bz2 |
more AB sync
-rw-r--r-- | kabc/addressee.cpp | 13 | ||||
-rw-r--r-- | kabc/addressee.h | 2 | ||||
-rw-r--r-- | kabc/plugins/qtopia/qtopiaE.pro | 2 | ||||
-rw-r--r-- | kabc/plugins/qtopia/qtopiaconverter.cpp | 7 | ||||
-rw-r--r-- | kabc/plugins/qtopia/qtopiaconverter.h | 1 | ||||
-rw-r--r-- | kabc/plugins/qtopia/resourceqtopia.cpp | 42 | ||||
-rw-r--r-- | kaddressbook/kabcore.cpp | 49 | ||||
-rw-r--r-- | libkcal/sharpformat.cpp | 6 | ||||
-rw-r--r-- | libkcal/syncdefines.h | 2 |
9 files changed, 104 insertions, 20 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index 3a2dc5f..fda62f1 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp | |||
@@ -67,6 +67,7 @@ struct Addressee::AddresseeData : public KShared | |||
67 | QDateTime revision; | 67 | QDateTime revision; |
68 | QString sortString; | 68 | QString sortString; |
69 | QString externalUID; | 69 | QString externalUID; |
70 | QString originalExternalUID; | ||
70 | KURL url; | 71 | KURL url; |
71 | Secrecy secrecy; | 72 | Secrecy secrecy; |
72 | Picture logo; | 73 | Picture logo; |
@@ -373,6 +374,18 @@ QString Addressee::externalUID() const | |||
373 | { | 374 | { |
374 | return mData->externalUID; | 375 | return mData->externalUID; |
375 | } | 376 | } |
377 | void Addressee::setOriginalExternalUID( const QString &id ) | ||
378 | { | ||
379 | if ( id == mData->originalExternalUID ) return; | ||
380 | detach(); | ||
381 | mData->empty = false; | ||
382 | mData->originalExternalUID = id; | ||
383 | } | ||
384 | |||
385 | QString Addressee::originalExternalUID() const | ||
386 | { | ||
387 | return mData->originalExternalUID; | ||
388 | } | ||
376 | 389 | ||
377 | void Addressee::setUid( const QString &id ) | 390 | void Addressee::setUid( const QString &id ) |
378 | { | 391 | { |
diff --git a/kabc/addressee.h b/kabc/addressee.h index 3ba7777..8baa888 100644 --- a/kabc/addressee.h +++ b/kabc/addressee.h | |||
@@ -114,6 +114,8 @@ class Addressee | |||
114 | bool isEmpty() const; | 114 | bool isEmpty() const; |
115 | void setExternalUID( const QString &id ); | 115 | void setExternalUID( const QString &id ); |
116 | QString externalUID() const; | 116 | QString externalUID() const; |
117 | void setOriginalExternalUID( const QString &id ); | ||
118 | QString originalExternalUID() const; | ||
117 | void mergeContact( const Addressee& ad ); | 119 | void mergeContact( const Addressee& ad ); |
118 | /** | 120 | /** |
119 | Set unique identifier. | 121 | Set unique identifier. |
diff --git a/kabc/plugins/qtopia/qtopiaE.pro b/kabc/plugins/qtopia/qtopiaE.pro index 148da2a..c0aa960 100644 --- a/kabc/plugins/qtopia/qtopiaE.pro +++ b/kabc/plugins/qtopia/qtopiaE.pro | |||
@@ -3,7 +3,7 @@ CONFIG += qt warn_on | |||
3 | 3 | ||
4 | TARGET = microkabc_qtopia | 4 | TARGET = microkabc_qtopia |
5 | 5 | ||
6 | INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include | 6 | INCLUDEPATH += $(KDEPIMDIR) $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include |
7 | 7 | ||
8 | OBJECTS_DIR = obj/$(PLATFORM) | 8 | OBJECTS_DIR = obj/$(PLATFORM) |
9 | MOC_DIR = moc/$(PLATFORM) | 9 | MOC_DIR = moc/$(PLATFORM) |
diff --git a/kabc/plugins/qtopia/qtopiaconverter.cpp b/kabc/plugins/qtopia/qtopiaconverter.cpp index 7d00a3f..de45e63 100644 --- a/kabc/plugins/qtopia/qtopiaconverter.cpp +++ b/kabc/plugins/qtopia/qtopiaconverter.cpp | |||
@@ -32,6 +32,7 @@ $Id$ | |||
32 | #include "qtopiaconverter.h" | 32 | #include "qtopiaconverter.h" |
33 | 33 | ||
34 | #include <qpe/categories.h> | 34 | #include <qpe/categories.h> |
35 | #include <libkdepim/ksyncprofile.h> | ||
35 | //US #include <qpe/categoryselect.h> | 36 | //US #include <qpe/categoryselect.h> |
36 | 37 | ||
37 | 38 | ||
@@ -75,7 +76,10 @@ bool QtopiaConverter::qtopiaToAddressee( const PimContact &contact, Addressee &a | |||
75 | addr.setAdditionalName( contact.middleName() ); | 76 | addr.setAdditionalName( contact.middleName() ); |
76 | addr.setPrefix( contact.nameTitle() ); | 77 | addr.setPrefix( contact.nameTitle() ); |
77 | addr.setSuffix( contact.suffix() ); | 78 | addr.setSuffix( contact.suffix() ); |
79 | |||
80 | addr.setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); | ||
78 | QString exuid = contact.uid().toString(); | 81 | QString exuid = contact.uid().toString(); |
82 | addr.setOriginalExternalUID( exuid ); | ||
79 | int ente = exuid.find( "-0000"); | 83 | int ente = exuid.find( "-0000"); |
80 | if ( exuid.left(1) == "{" ) | 84 | if ( exuid.left(1) == "{" ) |
81 | exuid = exuid.mid(1); | 85 | exuid = exuid.mid(1); |
@@ -251,6 +255,9 @@ bool QtopiaConverter::qtopiaToAddressee( const PimContact &contact, Addressee &a | |||
251 | 255 | ||
252 | bool QtopiaConverter::addresseeToQtopia( const Addressee &addr, PimContact &contact ) | 256 | bool QtopiaConverter::addresseeToQtopia( const Addressee &addr, PimContact &contact ) |
253 | { | 257 | { |
258 | |||
259 | |||
260 | |||
254 | // name | 261 | // name |
255 | contact.setLastName(addr.familyName()); | 262 | contact.setLastName(addr.familyName()); |
256 | contact.setFirstName(addr.givenName()); | 263 | contact.setFirstName(addr.givenName()); |
diff --git a/kabc/plugins/qtopia/qtopiaconverter.h b/kabc/plugins/qtopia/qtopiaconverter.h index 8f4c698..012a6e2 100644 --- a/kabc/plugins/qtopia/qtopiaconverter.h +++ b/kabc/plugins/qtopia/qtopiaconverter.h | |||
@@ -31,6 +31,7 @@ $Id$ | |||
31 | 31 | ||
32 | #include "addressee.h" | 32 | #include "addressee.h" |
33 | #include <qpe/pim/contact.h> | 33 | #include <qpe/pim/contact.h> |
34 | #include <qpe/quuid.h> | ||
34 | 35 | ||
35 | class Categories; | 36 | class Categories; |
36 | 37 | ||
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp index 48a9f22..935a1cf 100644 --- a/kabc/plugins/qtopia/resourceqtopia.cpp +++ b/kabc/plugins/qtopia/resourceqtopia.cpp | |||
@@ -52,6 +52,8 @@ $Id$ | |||
52 | #include "syncprefwidget.h" | 52 | #include "syncprefwidget.h" |
53 | 53 | ||
54 | #include "resourceqtopia.h" | 54 | #include "resourceqtopia.h" |
55 | #include <libkdepim/ksyncprofile.h> | ||
56 | #include <qpe/quuid.h> | ||
55 | 57 | ||
56 | using namespace KABC; | 58 | using namespace KABC; |
57 | extern "C" | 59 | extern "C" |
@@ -197,19 +199,41 @@ bool ResourceQtopia::save( Ticket *ticket ) | |||
197 | bool res; | 199 | bool res; |
198 | 200 | ||
199 | for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { | 201 | for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { |
200 | PimContact c; | 202 | //KABC::Addressee addressee = (*it); |
201 | KABC::Addressee addressee = (*it); | 203 | if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { |
202 | 204 | QUuid uid( (*it).originalExternalUID() ); | |
205 | bool ok; | ||
206 | PimContact c = mAccess->contactForId( uid, &ok ); | ||
203 | res = mConverter->addresseeToQtopia( *it, c ); | 207 | res = mConverter->addresseeToQtopia( *it, c ); |
204 | if (res == true) | 208 | if (res == true) { |
205 | { | 209 | if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) { |
206 | mAccess->addContact(c); | 210 | mAccess->addContact(c); |
207 | // if (res == false) | 211 | KABC::Addressee addressee; |
208 | // qDebug("Unable to append Contact %s", c.fullName().latin1()); | 212 | mConverter->qtopiaToAddressee( c, addressee ); |
213 | addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); | ||
214 | addressBook()->insertAddressee( addressee ); | ||
215 | |||
216 | } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { | ||
217 | if ( ok ) | ||
218 | mAccess->removeContact(c); | ||
219 | else | ||
220 | qDebug("Error revoe contact from qtopia "); | ||
221 | } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { | ||
222 | if ( ok ) { | ||
223 | mAccess->updateContact(c); | ||
224 | KABC::Addressee addressee; | ||
225 | mConverter->qtopiaToAddressee( c, addressee ); | ||
226 | addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM ); | ||
227 | addressBook()->insertAddressee( addressee ); | ||
209 | } | 228 | } |
210 | else | 229 | else |
211 | { | 230 | qDebug("Error update contact from qtopia "); |
212 | qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1()); | 231 | |
232 | } | ||
233 | |||
234 | } else { | ||
235 | qDebug("Unable to convert Addressee %s", (*it).formattedName().latin1()); | ||
236 | } | ||
213 | } | 237 | } |
214 | } | 238 | } |
215 | 239 | ||
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index d6482fb..b3d88de 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -2752,7 +2752,7 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo | |||
2752 | bool skipIncidence = false; | 2752 | bool skipIncidence = false; |
2753 | if ( uid.left(19) == QString("last-syncAddressee-") ) | 2753 | if ( uid.left(19) == QString("last-syncAddressee-") ) |
2754 | skipIncidence = true; | 2754 | skipIncidence = true; |
2755 | QString idS; | 2755 | QString idS,OidS; |
2756 | qApp->processEvents(); | 2756 | qApp->processEvents(); |
2757 | if ( !skipIncidence ) { | 2757 | if ( !skipIncidence ) { |
2758 | inL = local->findByUid( uid ); | 2758 | inL = local->findByUid( uid ); |
@@ -2768,18 +2768,24 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo | |||
2768 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 2768 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2769 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); | 2769 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); |
2770 | local->insertAddressee( inL, false ); | 2770 | local->insertAddressee( inL, false ); |
2771 | idS = inR.externalUID(); | ||
2772 | OidS = inR.originalExternalUID(); | ||
2771 | } | 2773 | } |
2772 | else | 2774 | else |
2773 | idS = inR.IDStr(); | 2775 | idS = inR.IDStr(); |
2774 | remote->removeAddressee( inR ); | 2776 | remote->removeAddressee( inR ); |
2775 | inR = inL; | 2777 | inR = inL; |
2776 | inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); | 2778 | inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); |
2777 | if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) | 2779 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2780 | inR.setOriginalExternalUID( OidS ); | ||
2781 | inR.setExternalUID( idS ); | ||
2782 | } else { | ||
2778 | inR.setIDStr( idS ); | 2783 | inR.setIDStr( idS ); |
2784 | } | ||
2779 | inR.setResource( 0 ); | 2785 | inR.setResource( 0 ); |
2780 | remote->insertAddressee( inR , false); | 2786 | remote->insertAddressee( inR , false); |
2781 | ++changedRemote; | 2787 | ++changedRemote; |
2782 | } else { | 2788 | } else { // take == 2 take remote |
2783 | idS = inL.IDStr(); | 2789 | idS = inL.IDStr(); |
2784 | local->removeAddressee( inL ); | 2790 | local->removeAddressee( inL ); |
2785 | inL = inR; | 2791 | inL = inR; |
@@ -2854,7 +2860,7 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo | |||
2854 | inL.setRevision( modifiedCalendar ); | 2860 | inL.setRevision( modifiedCalendar ); |
2855 | local->insertAddressee( inL, false ); | 2861 | local->insertAddressee( inL, false ); |
2856 | inR = inL; | 2862 | inR = inL; |
2857 | inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); | 2863 | inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); |
2858 | inR.setResource( 0 ); | 2864 | inR.setResource( 0 ); |
2859 | remote->insertAddressee( inR, false ); | 2865 | remote->insertAddressee( inR, false ); |
2860 | } | 2866 | } |
@@ -2919,6 +2925,17 @@ bool KABCore::syncAB(QString filename, int mode) | |||
2919 | if ( abLocal.load() ) { | 2925 | if ( abLocal.load() ) { |
2920 | qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode ); | 2926 | qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode ); |
2921 | bool external = false; | 2927 | bool external = false; |
2928 | |||
2929 | if ( filename.right(4) == ".xml") { | ||
2930 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | ||
2931 | AddressBook::Iterator it; | ||
2932 | for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | ||
2933 | (*it).setID( mCurrentSyncDevice, (*it).externalUID() ); | ||
2934 | (*it).computeCsum( mCurrentSyncDevice ); | ||
2935 | } | ||
2936 | abLocal.mergeAB( mAddressBook ,mCurrentSyncDevice ); | ||
2937 | |||
2938 | } else { | ||
2922 | Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); | 2939 | Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); |
2923 | if ( ! lse.isEmpty() ) { | 2940 | if ( ! lse.isEmpty() ) { |
2924 | if ( lse.familyName().left(4) == "!E: " ) | 2941 | if ( lse.familyName().left(4) == "!E: " ) |
@@ -2945,21 +2962,39 @@ bool KABCore::syncAB(QString filename, int mode) | |||
2945 | (*it).computeCsum( mCurrentSyncDevice ); | 2962 | (*it).computeCsum( mCurrentSyncDevice ); |
2946 | } | 2963 | } |
2947 | } | 2964 | } |
2965 | } | ||
2948 | //AddressBook::Iterator it; | 2966 | //AddressBook::Iterator it; |
2949 | //QStringList vcards; | 2967 | //QStringList vcards; |
2950 | //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | 2968 | //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { |
2951 | // qDebug("Name %s ", (*it).familyName().latin1()); | 2969 | // qDebug("Name %s ", (*it).familyName().latin1()); |
2952 | //} | 2970 | //} |
2953 | if ( filename.right(4) == ".xml") | ||
2954 | abLocal.mergeAB( mAddressBook ,mCurrentSyncDevice ); | ||
2955 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); | 2971 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); |
2956 | if ( syncOK ) { | 2972 | if ( syncOK ) { |
2957 | if ( KABPrefs::instance()->mWriteBackFile ) | 2973 | if ( KABPrefs::instance()->mWriteBackFile ) |
2958 | { | 2974 | { |
2959 | if ( external ) | 2975 | if ( external && filename.right(4) != ".xml") |
2960 | abLocal.removeDeletedAddressees(); | 2976 | abLocal.removeDeletedAddressees(); |
2961 | qDebug("Saving remote AB "); | 2977 | qDebug("Saving remote AB "); |
2962 | abLocal.saveAB(); | 2978 | abLocal.saveAB(); |
2979 | if ( external && filename.right(4) == ".xml") { | ||
2980 | // afterwrite processing | ||
2981 | AddressBook::Iterator it; | ||
2982 | for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | ||
2983 | if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || | ||
2984 | (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) { | ||
2985 | Addressee ad = mAddressBook->findByUid( ( (*it).uid() )); | ||
2986 | if ( ad.isEmpty() ) { | ||
2987 | qDebug("ERROR ad empty "); | ||
2988 | } else { | ||
2989 | (*it).computeCsum( mCurrentSyncDevice ); | ||
2990 | if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) | ||
2991 | ad.setID( mCurrentSyncDevice, (*it).externalUID() ); | ||
2992 | ad.setCsum( mCurrentSyncDevice, (*it).getCsum( mCurrentSyncDevice ) ); | ||
2993 | mAddressBook->insertAddressee( ad ); | ||
2994 | } | ||
2995 | } | ||
2996 | } | ||
2997 | } | ||
2963 | } | 2998 | } |
2964 | } | 2999 | } |
2965 | setModified(); | 3000 | setModified(); |
diff --git a/libkcal/sharpformat.cpp b/libkcal/sharpformat.cpp index e7fc670..d56eab6 100644 --- a/libkcal/sharpformat.cpp +++ b/libkcal/sharpformat.cpp | |||
@@ -546,9 +546,9 @@ bool SharpFormat::save( Calendar *calendar) | |||
546 | fileIn.close(); | 546 | fileIn.close(); |
547 | //command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; | 547 | //command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; |
548 | command = "(cat /tmp/kopitempin | db2file datebook -w -g -c " + codec+ ") > "+ fileName; | 548 | command = "(cat /tmp/kopitempin | db2file datebook -w -g -c " + codec+ ") > "+ fileName; |
549 | qDebug("command ++++++++ "); | 549 | //qDebug("command ++++++++ "); |
550 | qDebug("%s ",command.latin1()); | 550 | //qDebug("%s ",command.latin1()); |
551 | qDebug("command -------- "); | 551 | //qDebug("command -------- "); |
552 | system ( command.utf8() ); | 552 | system ( command.utf8() ); |
553 | QFile file( fileName ); | 553 | QFile file( fileName ); |
554 | if (!file.open( IO_ReadOnly ) ) { | 554 | if (!file.open( IO_ReadOnly ) ) { |
diff --git a/libkcal/syncdefines.h b/libkcal/syncdefines.h index 57642ec..704a670 100644 --- a/libkcal/syncdefines.h +++ b/libkcal/syncdefines.h | |||
@@ -14,9 +14,11 @@ | |||
14 | #define SYNC_MODE_EXTERNAL 1 | 14 | #define SYNC_MODE_EXTERNAL 1 |
15 | 15 | ||
16 | #define SYNC_TEMPSTATE_INITIAL 0 | 16 | #define SYNC_TEMPSTATE_INITIAL 0 |
17 | #define SYNC_TEMPSTATE_ADDED_EXTERNAL -1 | ||
17 | #define SYNC_TEMPSTATE_NEW_EXTERNAL -2 | 18 | #define SYNC_TEMPSTATE_NEW_EXTERNAL -2 |
18 | #define SYNC_TEMPSTATE_DELETE -3 | 19 | #define SYNC_TEMPSTATE_DELETE -3 |
19 | #define SYNC_TEMPSTATE_NEW_ID -4 | 20 | #define SYNC_TEMPSTATE_NEW_ID -4 |
21 | #define SYNC_TEMPSTATE_NEW_CSUM -5 | ||
20 | 22 | ||
21 | 23 | ||
22 | #endif | 24 | #endif |