summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-18 16:07:07 (UTC)
committer zautrix <zautrix>2004-09-18 16:07:07 (UTC)
commitbf18a7b4edb4121fd2ea974ac1ec634167c9b993 (patch) (unidiff)
tree056e62659f8bc5a5b20dc24dcaa73c38f4515cd5
parentca8fcf3fd4dc068747d8f31e2189145b22853d55 (diff)
downloadkdepimpi-bf18a7b4edb4121fd2ea974ac1ec634167c9b993.zip
kdepimpi-bf18a7b4edb4121fd2ea974ac1ec634167c9b993.tar.gz
kdepimpi-bf18a7b4edb4121fd2ea974ac1ec634167c9b993.tar.bz2
more AB sync
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp5
-rw-r--r--kabc/addressbook.h2
-rw-r--r--kabc/addressee.cpp1
-rw-r--r--kaddressbook/kabcore.cpp200
-rw-r--r--kaddressbook/kabcore.h1
5 files changed, 171 insertions, 38 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 6e8d027..3ec0795 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -400,112 +400,113 @@ AddressBook::ConstIterator AddressBook::begin() const
400{ 400{
401 ConstIterator it = ConstIterator(); 401 ConstIterator it = ConstIterator();
402 it.d->mIt = d->mAddressees.begin(); 402 it.d->mIt = d->mAddressees.begin();
403 return it; 403 return it;
404} 404}
405 405
406AddressBook::Iterator AddressBook::end() 406AddressBook::Iterator AddressBook::end()
407{ 407{
408 Iterator it = Iterator(); 408 Iterator it = Iterator();
409 it.d->mIt = d->mAddressees.end(); 409 it.d->mIt = d->mAddressees.end();
410 return it; 410 return it;
411} 411}
412 412
413AddressBook::ConstIterator AddressBook::end() const 413AddressBook::ConstIterator AddressBook::end() const
414{ 414{
415 ConstIterator it = ConstIterator(); 415 ConstIterator it = ConstIterator();
416 it.d->mIt = d->mAddressees.end(); 416 it.d->mIt = d->mAddressees.end();
417 return it; 417 return it;
418} 418}
419 419
420void AddressBook::clear() 420void AddressBook::clear()
421{ 421{
422 d->mAddressees.clear(); 422 d->mAddressees.clear();
423} 423}
424 424
425Ticket *AddressBook::requestSaveTicket( Resource *resource ) 425Ticket *AddressBook::requestSaveTicket( Resource *resource )
426{ 426{
427 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 427 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
428 428
429 if ( !resource ) 429 if ( !resource )
430 { 430 {
431 qDebug("AddressBook::requestSaveTicket no resource" ); 431 qDebug("AddressBook::requestSaveTicket no resource" );
432 resource = standardResource(); 432 resource = standardResource();
433 } 433 }
434 434
435 KRES::Manager<Resource>::ActiveIterator it; 435 KRES::Manager<Resource>::ActiveIterator it;
436 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 436 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
437 if ( (*it) == resource ) { 437 if ( (*it) == resource ) {
438 if ( (*it)->readOnly() || !(*it)->isOpen() ) 438 if ( (*it)->readOnly() || !(*it)->isOpen() )
439 return 0; 439 return 0;
440 else 440 else
441 return (*it)->requestSaveTicket(); 441 return (*it)->requestSaveTicket();
442 } 442 }
443 } 443 }
444 444
445 return 0; 445 return 0;
446} 446}
447 447
448void AddressBook::insertAddressee( const Addressee &a ) 448void AddressBook::insertAddressee( const Addressee &a, bool setRev )
449{ 449{
450 Addressee::List::Iterator it; 450 Addressee::List::Iterator it;
451 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 451 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
452 if ( a.uid() == (*it).uid() ) { 452 if ( a.uid() == (*it).uid() ) {
453 bool changed = false; 453 bool changed = false;
454 Addressee addr = a; 454 Addressee addr = a;
455 if ( addr != (*it) ) 455 if ( addr != (*it) )
456 changed = true; 456 changed = true;
457 457
458 (*it) = a; 458 (*it) = a;
459 if ( (*it).resource() == 0 ) 459 if ( (*it).resource() == 0 )
460 (*it).setResource( standardResource() ); 460 (*it).setResource( standardResource() );
461 461
462 if ( changed ) { 462 if ( changed ) {
463 (*it).setRevision( QDateTime::currentDateTime() ); 463 if ( setRev )
464 (*it).setRevision( QDateTime::currentDateTime() );
464 (*it).setChanged( true ); 465 (*it).setChanged( true );
465 } 466 }
466 467
467 return; 468 return;
468 } 469 }
469 } 470 }
470 d->mAddressees.append( a ); 471 d->mAddressees.append( a );
471 Addressee& addr = d->mAddressees.last(); 472 Addressee& addr = d->mAddressees.last();
472 if ( addr.resource() == 0 ) 473 if ( addr.resource() == 0 )
473 addr.setResource( standardResource() ); 474 addr.setResource( standardResource() );
474 475
475 addr.setChanged( true ); 476 addr.setChanged( true );
476} 477}
477 478
478void AddressBook::removeAddressee( const Addressee &a ) 479void AddressBook::removeAddressee( const Addressee &a )
479{ 480{
480 Iterator it; 481 Iterator it;
481 for ( it = begin(); it != end(); ++it ) { 482 for ( it = begin(); it != end(); ++it ) {
482 if ( a.uid() == (*it).uid() ) { 483 if ( a.uid() == (*it).uid() ) {
483 removeAddressee( it ); 484 removeAddressee( it );
484 return; 485 return;
485 } 486 }
486 } 487 }
487} 488}
488 489
489void AddressBook::removeAddressee( const Iterator &it ) 490void AddressBook::removeAddressee( const Iterator &it )
490{ 491{
491 d->mRemovedAddressees.append( (*it) ); 492 d->mRemovedAddressees.append( (*it) );
492 d->mAddressees.remove( it.d->mIt ); 493 d->mAddressees.remove( it.d->mIt );
493} 494}
494 495
495AddressBook::Iterator AddressBook::find( const Addressee &a ) 496AddressBook::Iterator AddressBook::find( const Addressee &a )
496{ 497{
497 Iterator it; 498 Iterator it;
498 for ( it = begin(); it != end(); ++it ) { 499 for ( it = begin(); it != end(); ++it ) {
499 if ( a.uid() == (*it).uid() ) { 500 if ( a.uid() == (*it).uid() ) {
500 return it; 501 return it;
501 } 502 }
502 } 503 }
503 return end(); 504 return end();
504} 505}
505 506
506Addressee AddressBook::findByUid( const QString &uid ) 507Addressee AddressBook::findByUid( const QString &uid )
507{ 508{
508 Iterator it; 509 Iterator it;
509 for ( it = begin(); it != end(); ++it ) { 510 for ( it = begin(); it != end(); ++it ) {
510 if ( uid == (*it).uid() ) { 511 if ( uid == (*it).uid() ) {
511 return *it; 512 return *it;
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index 650a638..253de68 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -128,97 +128,97 @@ class AddressBook : public QObject
128 @see save() 128 @see save()
129 */ 129 */
130 Ticket *requestSaveTicket( Resource *resource=0 ); 130 Ticket *requestSaveTicket( Resource *resource=0 );
131 131
132 /** 132 /**
133 Load address book from file. 133 Load address book from file.
134 */ 134 */
135 bool load(); 135 bool load();
136 136
137 /** 137 /**
138 Save address book. The address book is saved to the file, the Ticket 138 Save address book. The address book is saved to the file, the Ticket
139 object has been requested for by @ref requestSaveTicket(). 139 object has been requested for by @ref requestSaveTicket().
140 140
141 @param ticket a ticket object returned by @ref requestSaveTicket() 141 @param ticket a ticket object returned by @ref requestSaveTicket()
142 */ 142 */
143 bool save( Ticket *ticket ); 143 bool save( Ticket *ticket );
144 bool saveAB( ); 144 bool saveAB( );
145 145
146 /** 146 /**
147 Returns a iterator for first entry of address book. 147 Returns a iterator for first entry of address book.
148 */ 148 */
149 Iterator begin(); 149 Iterator begin();
150 150
151 /** 151 /**
152 Returns a const iterator for first entry of address book. 152 Returns a const iterator for first entry of address book.
153 */ 153 */
154 ConstIterator begin() const; 154 ConstIterator begin() const;
155 155
156 /** 156 /**
157 Returns a iterator for first entry of address book. 157 Returns a iterator for first entry of address book.
158 */ 158 */
159 Iterator end(); 159 Iterator end();
160 160
161 /** 161 /**
162 Returns a const iterator for first entry of address book. 162 Returns a const iterator for first entry of address book.
163 */ 163 */
164 ConstIterator end() const; 164 ConstIterator end() const;
165 165
166 /** 166 /**
167 Removes all entries from address book. 167 Removes all entries from address book.
168 */ 168 */
169 void clear(); 169 void clear();
170 170
171 /** 171 /**
172 Insert an Addressee object into address book. If an object with the same 172 Insert an Addressee object into address book. If an object with the same
173 unique id already exists in the address book it it replaced by the new 173 unique id already exists in the address book it it replaced by the new
174 one. If not the new object is appended to the address book. 174 one. If not the new object is appended to the address book.
175 */ 175 */
176 void insertAddressee( const Addressee & ); 176 void insertAddressee( const Addressee &, bool setRev = true );
177 177
178 /** 178 /**
179 Removes entry from the address book. 179 Removes entry from the address book.
180 */ 180 */
181 void removeAddressee( const Addressee & ); 181 void removeAddressee( const Addressee & );
182 182
183 /** 183 /**
184 This is like @ref removeAddressee() just above, with the difference that 184 This is like @ref removeAddressee() just above, with the difference that
185 the first element is a iterator, returned by @ref begin(). 185 the first element is a iterator, returned by @ref begin().
186 */ 186 */
187 void removeAddressee( const Iterator & ); 187 void removeAddressee( const Iterator & );
188 188
189 /** 189 /**
190 Find the specified entry in address book. Returns end(), if the entry 190 Find the specified entry in address book. Returns end(), if the entry
191 couldn't be found. 191 couldn't be found.
192 */ 192 */
193 Iterator find( const Addressee & ); 193 Iterator find( const Addressee & );
194 194
195 /** 195 /**
196 Find the entry specified by an unique id. Returns an empty Addressee 196 Find the entry specified by an unique id. Returns an empty Addressee
197 object, if the address book does not contain an entry with this id. 197 object, if the address book does not contain an entry with this id.
198 */ 198 */
199 Addressee findByUid( const QString & ); 199 Addressee findByUid( const QString & );
200 200
201 201
202 /** 202 /**
203 Returns a list of all addressees in the address book. This list can 203 Returns a list of all addressees in the address book. This list can
204 be sorted with @ref KABC::AddresseeList for example. 204 be sorted with @ref KABC::AddresseeList for example.
205 */ 205 */
206 Addressee::List allAddressees(); 206 Addressee::List allAddressees();
207 207
208 /** 208 /**
209 Find all entries with the specified name in the address book. Returns 209 Find all entries with the specified name in the address book. Returns
210 an empty list, if no entries could be found. 210 an empty list, if no entries could be found.
211 */ 211 */
212 Addressee::List findByName( const QString & ); 212 Addressee::List findByName( const QString & );
213 213
214 /** 214 /**
215 Find all entries with the specified email address in the address book. 215 Find all entries with the specified email address in the address book.
216 Returns an empty list, if no entries could be found. 216 Returns an empty list, if no entries could be found.
217 */ 217 */
218 Addressee::List findByEmail( const QString & ); 218 Addressee::List findByEmail( const QString & );
219 219
220 /** 220 /**
221 Find all entries wich have the specified category in the address book. 221 Find all entries wich have the specified category in the address book.
222 Returns an empty list, if no entries could be found. 222 Returns an empty list, if no entries could be found.
223 */ 223 */
224 Addressee::List findByCategory( const QString & ); 224 Addressee::List findByCategory( const QString & );
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index fb32f6e..7f04d8f 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -48,96 +48,97 @@ struct Addressee::AddresseeData : public KShared
48{ 48{
49 QString uid; 49 QString uid;
50 QString name; 50 QString name;
51 QString formattedName; 51 QString formattedName;
52 QString familyName; 52 QString familyName;
53 QString givenName; 53 QString givenName;
54 QString additionalName; 54 QString additionalName;
55 QString prefix; 55 QString prefix;
56 QString suffix; 56 QString suffix;
57 QString nickName; 57 QString nickName;
58 QDateTime birthday; 58 QDateTime birthday;
59 QString mailer; 59 QString mailer;
60 TimeZone timeZone; 60 TimeZone timeZone;
61 Geo geo; 61 Geo geo;
62 QString title; 62 QString title;
63 QString role; 63 QString role;
64 QString organization; 64 QString organization;
65 QString note; 65 QString note;
66 QString productId; 66 QString productId;
67 QDateTime revision; 67 QDateTime revision;
68 QString sortString; 68 QString sortString;
69 KURL url; 69 KURL url;
70 Secrecy secrecy; 70 Secrecy secrecy;
71 Picture logo; 71 Picture logo;
72 Picture photo; 72 Picture photo;
73 Sound sound; 73 Sound sound;
74 Agent agent; 74 Agent agent;
75 QString mExternalId; 75 QString mExternalId;
76 PhoneNumber::List phoneNumbers; 76 PhoneNumber::List phoneNumbers;
77 Address::List addresses; 77 Address::List addresses;
78 Key::List keys; 78 Key::List keys;
79 QStringList emails; 79 QStringList emails;
80 QStringList categories; 80 QStringList categories;
81 QStringList custom; 81 QStringList custom;
82 82
83 Resource *resource; 83 Resource *resource;
84 84
85 bool empty :1; 85 bool empty :1;
86 bool changed :1; 86 bool changed :1;
87}; 87};
88 88
89Addressee::Addressee() 89Addressee::Addressee()
90{ 90{
91 mData = new AddresseeData; 91 mData = new AddresseeData;
92 mData->empty = true; 92 mData->empty = true;
93 mData->changed = false; 93 mData->changed = false;
94 mData->resource = 0; 94 mData->resource = 0;
95 mData->mExternalId = ":"; 95 mData->mExternalId = ":";
96 mData->revision = QDateTime ( QDate( 2004,1,1));
96 mTempSyncStat = SYNC_TEMPSTATE_INITIAL; 97 mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
97} 98}
98 99
99Addressee::~Addressee() 100Addressee::~Addressee()
100{ 101{
101} 102}
102 103
103Addressee::Addressee( const Addressee &a ) 104Addressee::Addressee( const Addressee &a )
104{ 105{
105 mData = a.mData; 106 mData = a.mData;
106 mTempSyncStat = SYNC_TEMPSTATE_INITIAL; 107 mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
107} 108}
108 109
109Addressee &Addressee::operator=( const Addressee &a ) 110Addressee &Addressee::operator=( const Addressee &a )
110{ 111{
111 mData = a.mData; 112 mData = a.mData;
112 return (*this); 113 return (*this);
113} 114}
114 115
115Addressee Addressee::copy() 116Addressee Addressee::copy()
116{ 117{
117 Addressee a; 118 Addressee a;
118 *(a.mData) = *mData; 119 *(a.mData) = *mData;
119 return a; 120 return a;
120} 121}
121 122
122void Addressee::detach() 123void Addressee::detach()
123{ 124{
124 if ( mData.count() == 1 ) return; 125 if ( mData.count() == 1 ) return;
125 *this = copy(); 126 *this = copy();
126} 127}
127 128
128bool Addressee::operator==( const Addressee &a ) const 129bool Addressee::operator==( const Addressee &a ) const
129{ 130{
130 if ( uid() != a.uid() ) return false; 131 if ( uid() != a.uid() ) return false;
131 if ( mData->name != a.mData->name ) return false; 132 if ( mData->name != a.mData->name ) return false;
132 if ( mData->formattedName != a.mData->formattedName ) return false; 133 if ( mData->formattedName != a.mData->formattedName ) return false;
133 if ( mData->familyName != a.mData->familyName ) return false; 134 if ( mData->familyName != a.mData->familyName ) return false;
134 if ( mData->givenName != a.mData->givenName ) return false; 135 if ( mData->givenName != a.mData->givenName ) return false;
135 if ( mData->additionalName != a.mData->additionalName ) return false; 136 if ( mData->additionalName != a.mData->additionalName ) return false;
136 if ( mData->prefix != a.mData->prefix ) return false; 137 if ( mData->prefix != a.mData->prefix ) return false;
137 if ( mData->suffix != a.mData->suffix ) return false; 138 if ( mData->suffix != a.mData->suffix ) return false;
138 if ( mData->nickName != a.mData->nickName ) return false; 139 if ( mData->nickName != a.mData->nickName ) return false;
139 if ( mData->birthday != a.mData->birthday ) return false; 140 if ( mData->birthday != a.mData->birthday ) return false;
140 if ( mData->mailer != a.mData->mailer ) return false; 141 if ( mData->mailer != a.mData->mailer ) return false;
141 if ( mData->timeZone != a.mData->timeZone ) return false; 142 if ( mData->timeZone != a.mData->timeZone ) return false;
142 if ( mData->geo != a.mData->geo ) return false; 143 if ( mData->geo != a.mData->geo ) return false;
143 if ( mData->title != a.mData->title ) return false; 144 if ( mData->title != a.mData->title ) return false;
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index f497541..226d5e4 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2478,376 +2478,506 @@ void KABCore::edit_sync_options()
2478 break; 2478 break;
2479 case 5: 2479 case 5:
2480 f_rem.setChecked( true); 2480 f_rem.setChecked( true);
2481 break; 2481 break;
2482 case 6: 2482 case 6:
2483 // both.setChecked( true); 2483 // both.setChecked( true);
2484 break; 2484 break;
2485 default: 2485 default:
2486 break; 2486 break;
2487 } 2487 }
2488 if ( dia.exec() ) { 2488 if ( dia.exec() ) {
2489 KABPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 2489 KABPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
2490 } 2490 }
2491 2491
2492 2492
2493} 2493}
2494QString KABCore::getPassword( ) 2494QString KABCore::getPassword( )
2495{ 2495{
2496 QString retfile = ""; 2496 QString retfile = "";
2497 QDialog dia ( this, "input-dialog", true ); 2497 QDialog dia ( this, "input-dialog", true );
2498 QLineEdit lab ( &dia ); 2498 QLineEdit lab ( &dia );
2499 lab.setEchoMode( QLineEdit::Password ); 2499 lab.setEchoMode( QLineEdit::Password );
2500 QVBoxLayout lay( &dia ); 2500 QVBoxLayout lay( &dia );
2501 lay.setMargin(7); 2501 lay.setMargin(7);
2502 lay.setSpacing(7); 2502 lay.setSpacing(7);
2503 lay.addWidget( &lab); 2503 lay.addWidget( &lab);
2504 dia.setFixedSize( 230,50 ); 2504 dia.setFixedSize( 230,50 );
2505 dia.setCaption( i18n("Enter password") ); 2505 dia.setCaption( i18n("Enter password") );
2506 QPushButton pb ( "OK", &dia); 2506 QPushButton pb ( "OK", &dia);
2507 lay.addWidget( &pb ); 2507 lay.addWidget( &pb );
2508 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2508 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2509 dia.show(); 2509 dia.show();
2510 int res = dia.exec(); 2510 int res = dia.exec();
2511 if ( res ) 2511 if ( res )
2512 retfile = lab.text(); 2512 retfile = lab.text();
2513 dia.hide(); 2513 dia.hide();
2514 qApp->processEvents(); 2514 qApp->processEvents();
2515 return retfile; 2515 return retfile;
2516 2516
2517} 2517}
2518#include <libkcal/syncdefines.h> 2518#include <libkcal/syncdefines.h>
2519 2519
2520KABC::Addressee KABCore::getLastSyncAddressee() 2520KABC::Addressee KABCore::getLastSyncAddressee()
2521{ 2521{
2522 Addressee lse; 2522 Addressee lse;
2523 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2523 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2524 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2524 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2525 if (lse.isEmpty()) { 2525 if (lse.isEmpty()) {
2526 lse.setUid( "last-syncEvent-"+mCurrentSyncDevice ); 2526 qDebug("Creating new last-syncAddressee ");
2527 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2527 QString sum = ""; 2528 QString sum = "";
2528 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 2529 if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
2529 sum = "E: "; 2530 sum = "E: ";
2530 lse.setFamilyName(sum+mCurrentSyncDevice + i18n(" - sync event")); 2531 lse.setFamilyName(sum+mCurrentSyncDevice + i18n(" - sync event"));
2531 lse.setRevision( mLastAddressbookSync ); 2532 lse.setRevision( mLastAddressbookSync );
2532 lse.setCategories( i18n("SyncEvent") ); 2533 lse.setCategories( i18n("SyncEvent") );
2533 mAddressBook->insertAddressee( lse ); 2534 mAddressBook->insertAddressee( lse );
2534 } 2535 }
2535 return lse; 2536 return lse;
2536} 2537}
2537 2538int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2539{
2540
2541 //void setZaurusId(int id);
2542 // int zaurusId() const;
2543 // void setZaurusUid(int id);
2544 // int zaurusUid() const;
2545 // void setZaurusStat(int id);
2546 // int zaurusStat() const;
2547 // 0 equal
2548 // 1 take local
2549 // 2 take remote
2550 // 3 cancel
2551 QDateTime lastSync = mLastAddressbookSync;
2552 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2553 bool remCh, locCh;
2554 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2555 //if ( remCh )
2556 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2557 locCh = ( local->revision() > mLastAddressbookSync );
2558 if ( !remCh && ! locCh ) {
2559 //qDebug("both not changed ");
2560 lastSync = local->revision().addDays(1);
2561 } else {
2562 if ( locCh ) {
2563 //qDebug("loc changed %d %s %s", local->revision() , local->lastModified().toString().latin1(), mLastCalendarSync.toString().latin1());
2564 lastSync = local->revision().addDays( -1 );
2565 if ( !remCh )
2566 remote->setRevision( lastSync.addDays( -1 ) );
2567 } else {
2568 //qDebug(" not loc changed ");
2569 lastSync = local->revision().addDays( 1 );
2570 if ( remCh )
2571 remote->setRevision( lastSync.addDays( 1 ) );
2572
2573 }
2574 }
2575 full = true;
2576 if ( mode < SYNC_PREF_ASK )
2577 mode = SYNC_PREF_ASK;
2578 } else {
2579 if ( local->revision() == remote->revision() )
2580 return 0;
2581
2582 }
2583 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
2584
2585 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
2586 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
2587 //full = true; //debug only
2588 if ( full ) {
2589 bool equ = ( (*local) == (*remote) );
2590 if ( equ ) {
2591 //qDebug("equal ");
2592 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2593 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2594 }
2595 if ( mode < SYNC_PREF_FORCE_LOCAL )
2596 return 0;
2597
2598 }//else //debug only
2599 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2600 }
2601 int result;
2602 bool localIsNew;
2603 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2604
2605 if ( full && mode < SYNC_PREF_NEWEST )
2606 mode = SYNC_PREF_ASK;
2607
2608 switch( mode ) {
2609 case SYNC_PREF_LOCAL:
2610 if ( lastSync > remote->revision() )
2611 return 1;
2612 if ( lastSync > local->revision() )
2613 return 2;
2614 return 1;
2615 break;
2616 case SYNC_PREF_REMOTE:
2617 if ( lastSync > remote->revision() )
2618 return 1;
2619 if ( lastSync > local->revision() )
2620 return 2;
2621 return 2;
2622 break;
2623 case SYNC_PREF_NEWEST:
2624 if ( local->revision() > remote->revision() )
2625 return 1;
2626 else
2627 return 2;
2628 break;
2629 case SYNC_PREF_ASK:
2630 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() );
2631 if ( lastSync > remote->revision() )
2632 return 1;
2633 if ( lastSync > local->revision() )
2634 return 2;
2635 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->revision().toString().latin1(), remote->revision().toString().latin1() );
2636 localIsNew = local->revision() >= remote->revision();
2637#if 0
2638 if ( localIsNew )
2639 getEventViewerDialog()->setColorMode( 1 );
2640 else
2641 getEventViewerDialog()->setColorMode( 2 );
2642 getEventViewerDialog()->setIncidence(local);
2643 if ( localIsNew )
2644 getEventViewerDialog()->setColorMode( 2 );
2645 else
2646 getEventViewerDialog()->setColorMode( 1 );
2647 getEventViewerDialog()->addIncidence(remote);
2648 getEventViewerDialog()->setColorMode( 0 );
2649 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
2650 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
2651 getEventViewerDialog()->showMe();
2652 result = getEventViewerDialog()->executeS( localIsNew );
2653#endif
2654 qDebug("conflict! ************************************** ");
2655 result = 1;
2656 return result;
2657
2658 break;
2659 case SYNC_PREF_FORCE_LOCAL:
2660 return 1;
2661 break;
2662 case SYNC_PREF_FORCE_REMOTE:
2663 return 2;
2664 break;
2665
2666 default:
2667 // SYNC_PREF_TAKE_BOTH not implemented
2668 break;
2669 }
2670 return 0;
2671}
2538bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2672bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2539{ 2673{
2540 bool syncOK = true; 2674 bool syncOK = true;
2541 int addedAddressee = 0; 2675 int addedAddressee = 0;
2542 int addedAddresseeR = 0; 2676 int addedAddresseeR = 0;
2543 int deletedAddresseeR = 0; 2677 int deletedAddresseeR = 0;
2544 int deletedAddresseeL = 0; 2678 int deletedAddresseeL = 0;
2545 int changedLocal = 0; 2679 int changedLocal = 0;
2546 int changedRemote = 0; 2680 int changedRemote = 0;
2547 //QPtrList<Addressee> el = local->rawAddressees(); 2681 //QPtrList<Addressee> el = local->rawAddressees();
2548 Addressee addresseeR; 2682 Addressee addresseeR;
2549 QString uid; 2683 QString uid;
2550 int take; 2684 int take;
2551 Addressee addresseeL; 2685 Addressee addresseeL;
2552 Addressee addresseeRSync; 2686 Addressee addresseeRSync;
2553 Addressee addresseeLSync; 2687 Addressee addresseeLSync;
2554 KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2688 KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2555 KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2689 KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2556 bool fullDateRange = false; 2690 bool fullDateRange = false;
2557 local->resetTempSyncStat(); 2691 local->resetTempSyncStat();
2558 mLastAddressbookSync = QDateTime::currentDateTime(); 2692 mLastAddressbookSync = QDateTime::currentDateTime();
2559 QDateTime modifiedCalendar = mLastAddressbookSync;; 2693 QDateTime modifiedCalendar = mLastAddressbookSync;;
2560 addresseeLSync = getLastSyncAddressee(); 2694 addresseeLSync = getLastSyncAddressee();
2695 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2561 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2696 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2562 if ( !addresseeR.isEmpty() ) { 2697 if ( !addresseeR.isEmpty() ) {
2563 addresseeRSync = addresseeR; 2698 addresseeRSync = addresseeR;
2564 remote->removeAddressee(addresseeR ); 2699 remote->removeAddressee(addresseeR );
2565 2700
2566 } else { 2701 } else {
2567 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2702 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2568 addresseeRSync = addresseeLSync ; 2703 addresseeRSync = addresseeLSync ;
2569 } else { 2704 } else {
2705 qDebug("FULLDATE 1");
2570 fullDateRange = true; 2706 fullDateRange = true;
2571 Addressee newAdd; 2707 Addressee newAdd;
2572 addresseeRSync = newAdd; 2708 addresseeRSync = newAdd;
2573 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2709 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2574 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2710 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2575 addresseeRSync.setRevision( mLastAddressbookSync ); 2711 addresseeRSync.setRevision( mLastAddressbookSync );
2576 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2712 addresseeRSync.setCategories( i18n("SyncAddressee") );
2577 } 2713 }
2578 } 2714 }
2579 if ( addresseeLSync.revision() == mLastAddressbookSync ) 2715 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2716 qDebug("FULLDATE 2");
2580 fullDateRange = true; 2717 fullDateRange = true;
2718 }
2581 if ( ! fullDateRange ) { 2719 if ( ! fullDateRange ) {
2582 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2720 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2583 2721
2584 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2722 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2585 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2723 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2586 fullDateRange = true; 2724 fullDateRange = true;
2725 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2587 } 2726 }
2588 } 2727 }
2589 if ( fullDateRange ) 2728 if ( fullDateRange )
2590 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2729 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2591 else 2730 else
2592 mLastAddressbookSync = addresseeLSync.revision(); 2731 mLastAddressbookSync = addresseeLSync.revision();
2593 // for resyncing if own file has changed 2732 // for resyncing if own file has changed
2594 // PENDING fixme later when implemented 2733 // PENDING fixme later when implemented
2595#if 0 2734#if 0
2596 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2735 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2597 mLastAddressbookSync = loadedFileVersion; 2736 mLastAddressbookSync = loadedFileVersion;
2598 qDebug("setting mLastAddressbookSync "); 2737 qDebug("setting mLastAddressbookSync ");
2599 } 2738 }
2600#endif 2739#endif
2601 2740
2602 //qDebug("*************************** "); 2741 //qDebug("*************************** ");
2603 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2742 qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2604 QStringList er = remote->uidList(); 2743 QStringList er = remote->uidList();
2605 Addressee inR ;//= er.first(); 2744 Addressee inR ;//= er.first();
2606 Addressee inL; 2745 Addressee inL;
2607 QProgressBar bar( er.count(),0 ); 2746 QProgressBar bar( er.count(),0 );
2608 bar.setCaption (i18n("Syncing - close to abort!") ); 2747 bar.setCaption (i18n("Syncing - close to abort!") );
2609 2748
2610 int w = 300; 2749 int w = 300;
2611 if ( QApplication::desktop()->width() < 320 ) 2750 if ( QApplication::desktop()->width() < 320 )
2612 w = 220; 2751 w = 220;
2613 int h = bar.sizeHint().height() ; 2752 int h = bar.sizeHint().height() ;
2614 int dw = QApplication::desktop()->width(); 2753 int dw = QApplication::desktop()->width();
2615 int dh = QApplication::desktop()->height(); 2754 int dh = QApplication::desktop()->height();
2616 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2755 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2617 bar.show(); 2756 bar.show();
2618 int modulo = (er.count()/10)+1; 2757 int modulo = (er.count()/10)+1;
2619 int incCounter = 0; 2758 int incCounter = 0;
2620 while ( incCounter < er.count()) { 2759 while ( incCounter < er.count()) {
2621 if ( ! bar.isVisible() ) 2760 if ( ! bar.isVisible() )
2622 return false; 2761 return false;
2623 if ( incCounter % modulo == 0 ) 2762 if ( incCounter % modulo == 0 )
2624 bar.setProgress( incCounter ); 2763 bar.setProgress( incCounter );
2625 uid = er[ incCounter ]; 2764 uid = er[ incCounter ];
2626 bool skipIncidence = false; 2765 bool skipIncidence = false;
2627 if ( uid.left(20) == QString("last-syncAddressee-") ) 2766 if ( uid.left(20) == QString("last-syncAddressee-") )
2628 skipIncidence = true; 2767 skipIncidence = true;
2629 QString idS; 2768 QString idS;
2630 qApp->processEvents(); 2769 qApp->processEvents();
2631 if ( !skipIncidence ) { 2770 if ( !skipIncidence ) {
2632 inL = local->findByUid( uid ); 2771 inL = local->findByUid( uid );
2633 inR = remote->findByUid( uid ); 2772 inR = remote->findByUid( uid );
2634 //inL.setResource( 0 ); 2773 //inL.setResource( 0 );
2635 //inR.setResource( 0 ); 2774 //inR.setResource( 0 );
2636 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2775 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2637 // pending if ( (take = takeAddressee( inL, inR, mode, fullDateRange )) > 0 ) { 2776 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2638 if ( true ) {
2639 //qDebug("take %d %s ", take, inL.summary().latin1()); 2777 //qDebug("take %d %s ", take, inL.summary().latin1());
2640 if ( take == 3 ) 2778 if ( take == 3 )
2641 return false; 2779 return false;
2642 if ( take == 1 ) {// take local 2780 if ( take == 1 ) {// take local
2643 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2644 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2782 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2645 local->insertAddressee( inL ); 2783 local->insertAddressee( inL, false );
2646 } 2784 }
2647 else 2785 else
2648 idS = inR.IDStr(); 2786 idS = inR.IDStr();
2649 remote->removeAddressee( inR ); 2787 remote->removeAddressee( inR );
2650 inR = inL; 2788 inR = inL;
2651 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2789 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2652 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 2790 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
2653 inR.setIDStr( idS ); 2791 inR.setIDStr( idS );
2654 inR.setResource( 0 ); 2792 inR.setResource( 0 );
2655 remote->insertAddressee( inR ); 2793 remote->insertAddressee( inR , false);
2656 ++changedRemote; 2794 ++changedRemote;
2657 } else { 2795 } else {
2658 idS = inL.IDStr(); 2796 idS = inL.IDStr();
2659 local->removeAddressee( inL ); 2797 local->removeAddressee( inL );
2660 inL = inR; 2798 inL = inR;
2661 inL.setIDStr( idS ); 2799 inL.setIDStr( idS );
2662 inL.setResource( 0 ); 2800 inL.setResource( 0 );
2663 local->insertAddressee( inL ); 2801 local->insertAddressee( inL , false );
2664 ++changedLocal; 2802 ++changedLocal;
2665 } 2803 }
2666 } 2804 }
2667 } else { // no conflict 2805 } else { // no conflict
2668 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2669 QString des = addresseeLSync.note(); 2807 QString des = addresseeLSync.note();
2670 QString pref = "a"; 2808 QString pref = "a";
2671 if ( des.find(pref+ inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 2809 if ( des.find(pref+ inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
2672 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 2810 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
2673 ++deletedAddresseeR; 2811 ++deletedAddresseeR;
2674 } else { 2812 } else {
2675 inR.setRevision( modifiedCalendar ); 2813 inR.setRevision( modifiedCalendar );
2676 remote->insertAddressee( inR ); 2814 remote->insertAddressee( inR, false );
2677 inL = inR; 2815 inL = inR;
2678 inL.setResource( 0 ); 2816 inL.setResource( 0 );
2679 local->insertAddressee( inL ); 2817 local->insertAddressee( inL , false);
2680 ++addedAddressee; 2818 ++addedAddressee;
2681 } 2819 }
2682 } else { 2820 } else {
2683 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 2821 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
2684 inR.setRevision( modifiedCalendar ); 2822 inR.setRevision( modifiedCalendar );
2685 remote->insertAddressee( inR ); 2823 remote->insertAddressee( inR, false );
2686 inR.setResource( 0 ); 2824 inR.setResource( 0 );
2687 local->insertAddressee( inR ); 2825 local->insertAddressee( inR, false );
2688 ++addedAddressee; 2826 ++addedAddressee;
2689 } else { 2827 } else {
2690 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 2828 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
2691 remote->removeAddressee( inR ); 2829 remote->removeAddressee( inR );
2692 ++deletedAddresseeR; 2830 ++deletedAddresseeR;
2693 } 2831 }
2694 } 2832 }
2695 } 2833 }
2696 } 2834 }
2697 ++incCounter; 2835 ++incCounter;
2698 } 2836 }
2699 er.clear(); 2837 er.clear();
2700 QStringList el = remote->uidList(); 2838 QStringList el = remote->uidList();
2701 modulo = (el.count()/10)+1; 2839 modulo = (el.count()/10)+1;
2702 bar.setCaption (i18n("Add / remove addressees") ); 2840 bar.setCaption (i18n("Add / remove addressees") );
2703 bar.setTotalSteps ( el.count() ) ; 2841 bar.setTotalSteps ( el.count() ) ;
2704 bar.show(); 2842 bar.show();
2705 incCounter = 0; 2843 incCounter = 0;
2706 while ( incCounter < el.count()) { 2844 while ( incCounter < el.count()) {
2707 2845
2708 qApp->processEvents(); 2846 qApp->processEvents();
2709 if ( ! bar.isVisible() ) 2847 if ( ! bar.isVisible() )
2710 return false; 2848 return false;
2711 if ( incCounter % modulo == 0 ) 2849 if ( incCounter % modulo == 0 )
2712 bar.setProgress( incCounter ); 2850 bar.setProgress( incCounter );
2713 uid = el[ incCounter ]; 2851 uid = el[ incCounter ];
2714 bool skipIncidence = false; 2852 bool skipIncidence = false;
2715 if ( uid.left(20) == QString("last-syncAddressee-") ) 2853 if ( uid.left(20) == QString("last-syncAddressee-") )
2716 skipIncidence = true; 2854 skipIncidence = true;
2717 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2855 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2718 skipIncidence = true; 2856 skipIncidence = true;
2719 if ( !skipIncidence ) { 2857 if ( !skipIncidence ) {
2720 inL = local->findByUid( uid ); 2858 inL = local->findByUid( uid );
2721 inR = remote->findByUid( uid ); 2859 inR = remote->findByUid( uid );
2722 if ( inR.isEmpty() ) { 2860 if ( inR.isEmpty() ) {
2723 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2861 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2724 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 2862 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
2725 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2863 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2726 local->removeAddressee( inL ); 2864 local->removeAddressee( inL );
2727 ++deletedAddresseeL; 2865 ++deletedAddresseeL;
2728 } else { 2866 } else {
2729 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) { 2867 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) {
2730 inL.removeID(mCurrentSyncDevice ); 2868 inL.removeID(mCurrentSyncDevice );
2731 ++addedAddresseeR; 2869 ++addedAddresseeR;
2732 //qDebug("remote added Incidence %s ", inL.summary().latin1()); 2870 //qDebug("remote added Incidence %s ", inL.summary().latin1());
2733 inL.setRevision( modifiedCalendar ); 2871 inL.setRevision( modifiedCalendar );
2734 local->insertAddressee( inL ); 2872 local->insertAddressee( inL, false );
2735 inR = inL; 2873 inR = inL;
2736 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2874 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2737 inR.setResource( 0 ); 2875 inR.setResource( 0 );
2738 remote->insertAddressee( inR ); 2876 remote->insertAddressee( inR, false );
2739 } 2877 }
2740 } 2878 }
2741 } else { 2879 } else {
2742 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 2880 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
2743 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2881 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2744 local->removeAddressee( inL ); 2882 local->removeAddressee( inL );
2745 ++deletedAddresseeL; 2883 ++deletedAddresseeL;
2746 } else { 2884 } else {
2747 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) { 2885 if ( ! KABPrefs::instance()->mWriteBackExistingOnly ) {
2748 ++addedAddresseeR; 2886 ++addedAddresseeR;
2749 inL.setRevision( modifiedCalendar ); 2887 inL.setRevision( modifiedCalendar );
2750 local->insertAddressee( inL ); 2888 local->insertAddressee( inL, false );
2751 inR = inL; 2889 inR = inL;
2752 inR.setResource( 0 ); 2890 inR.setResource( 0 );
2753 remote->insertAddressee( inR ); 2891 remote->insertAddressee( inR, false );
2754 } 2892 }
2755 } 2893 }
2756 } 2894 }
2757 } 2895 }
2758 } 2896 }
2759 ++incCounter; 2897 ++incCounter;
2760 } 2898 }
2761 el.clear(); 2899 el.clear();
2762 int delFut = 0;
2763 2900
2764 #if 0 2901
2765 2902
2766 bar.hide(); 2903 bar.hide();
2767 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 2904 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
2768 addresseeLSync.setRevision( mLastAddressbookSync ); 2905 addresseeLSync.setRevision( mLastAddressbookSync );
2769 addresseeRSync.setRevision( mLastAddressbookSync ); 2906 addresseeRSync.setRevision( mLastAddressbookSync );
2770 addresseeRSync.setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 2907 addresseeRSync.setGivenName( i18n("Remote from: ")+mCurrentSyncName ) ;
2771 addresseeLSync.setLocation(i18n("Local from: ") + mCurrentSyncName ); 2908 addresseeLSync.setGivenName(i18n("Local from: ") + mCurrentSyncName );
2772 addresseeLSync.setReadOnly( true );
2773 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2909 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2774 remote->addAddressee( addresseeRSync ); 2910 remote->insertAddressee( addresseeRSync, false );
2911 local->insertAddressee( addresseeLSync, false );
2775 QString mes; 2912 QString mes;
2776 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR ); 2913 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR );
2777 QString delmess; 2914 if ( KABPrefs::instance()->mShowSyncSummary ) {
2778 if ( delFut ) {
2779 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture );
2780 mes += delmess;
2781 }
2782 if ( KOPrefs::instance()->mShowSyncSummary ) {
2783 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 2915 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
2784 } 2916 }
2785 qDebug( mes ); 2917 qDebug( mes );
2786 mCalendar->checkAlarmForIncidence( 0, true );
2787 return syncOK; 2918 return syncOK;
2788#endif
2789 return false;
2790} 2919}
2920
2791bool KABCore::syncAB(QString filename, int mode) 2921bool KABCore::syncAB(QString filename, int mode)
2792{ 2922{
2793 2923
2794 //pending prepare addresseeview for output 2924 //pending prepare addresseeview for output
2795 //pending detect, if remote file has REV field. if not switch to external sync 2925 //pending detect, if remote file has REV field. if not switch to external sync
2796 mGlobalSyncMode = SYNC_MODE_NORMAL; 2926 mGlobalSyncMode = SYNC_MODE_NORMAL;
2797 AddressBook abLocal(filename,"syncContact"); 2927 AddressBook abLocal(filename,"syncContact");
2798 bool syncOK = false; 2928 bool syncOK = false;
2799 if ( abLocal.load() ) { 2929 if ( abLocal.load() ) {
2800 qDebug("AB loaded %s mode %d",filename.latin1(), mode ); 2930 qDebug("AB loaded %s mode %d",filename.latin1(), mode );
2801 AddressBook::Iterator it; 2931 AddressBook::Iterator it;
2802 QStringList vcards; 2932 //QStringList vcards;
2803 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2933 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2804 qDebug("Name %s ", (*it).familyName().latin1()); 2934 // qDebug("Name %s ", (*it).familyName().latin1());
2805 } 2935 //}
2806 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2936 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
2807 if ( syncOK ) { 2937 if ( syncOK ) {
2808 if ( KABPrefs::instance()->mWriteBackFile ) 2938 if ( KABPrefs::instance()->mWriteBackFile )
2809 { 2939 {
2810 qDebug("saving remote AB "); 2940 qDebug("saving remote AB ");
2811 abLocal.saveAB(); 2941 abLocal.saveAB();
2812 } 2942 }
2813 } 2943 }
2814 setModified(); 2944 setModified();
2815 2945
2816 } 2946 }
2817 if ( syncOK ) 2947 if ( syncOK )
2818 mViewManager->refreshView(); 2948 mViewManager->refreshView();
2819 return syncOK; 2949 return syncOK;
2820#if 0 2950#if 0
2821 2951
2822 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 2952 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
2823 getEventViewerDialog()->setSyncMode( true ); 2953 getEventViewerDialog()->setSyncMode( true );
2824 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 2954 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
2825 getEventViewerDialog()->setSyncMode( false ); 2955 getEventViewerDialog()->setSyncMode( false );
2826 if ( syncOK ) { 2956 if ( syncOK ) {
2827 if ( KOPrefs::instance()->mWriteBackFile ) 2957 if ( KOPrefs::instance()->mWriteBackFile )
2828 { 2958 {
2829 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2959 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2830 storage->save(); 2960 storage->save();
2831 } 2961 }
2832 } 2962 }
2833 setModified(); 2963 setModified();
2834 } 2964 }
2835 2965
2836#endif 2966#endif
2837} 2967}
2838 2968
2839 2969
2840void KABCore::confSync() 2970void KABCore::confSync()
2841{ 2971{
2842 static KSyncPrefsDialog* sp = 0; 2972 static KSyncPrefsDialog* sp = 0;
2843 if ( ! sp ) { 2973 if ( ! sp ) {
2844 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 2974 sp = new KSyncPrefsDialog( this, "syncprefs", true );
2845 } 2975 }
2846 sp->usrReadConfig(); 2976 sp->usrReadConfig();
2847#ifndef DESKTOP_VERSION 2977#ifndef DESKTOP_VERSION
2848 sp->showMaximized(); 2978 sp->showMaximized();
2849#else 2979#else
2850 sp->show(); 2980 sp->show();
2851#endif 2981#endif
2852 sp->exec(); 2982 sp->exec();
2853 KABPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 2983 KABPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index c67cee6..f01f306 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -429,55 +429,56 @@ class KABCore : public QWidget
429 KAction *mActionFaq; 429 KAction *mActionFaq;
430 430
431 KAction *mActionDeleteView; 431 KAction *mActionDeleteView;
432 432
433 QPopupMenu *viewMenu; 433 QPopupMenu *viewMenu;
434 QPopupMenu *filterMenu; 434 QPopupMenu *filterMenu;
435 QPopupMenu *settingsMenu; 435 QPopupMenu *settingsMenu;
436 QPopupMenu *changeMenu; 436 QPopupMenu *changeMenu;
437//US QAction *mActionSave; 437//US QAction *mActionSave;
438 QPopupMenu *ImportMenu; 438 QPopupMenu *ImportMenu;
439 QPopupMenu *ExportMenu; 439 QPopupMenu *ExportMenu;
440 //LR additional methods 440 //LR additional methods
441 KAction *mActionRemoveVoice; 441 KAction *mActionRemoveVoice;
442 KAction * mActionImportOL; 442 KAction * mActionImportOL;
443 443
444#ifndef KAB_EMBEDDED 444#ifndef KAB_EMBEDDED
445 KAddressBookService *mAddressBookService; 445 KAddressBookService *mAddressBookService;
446#endif //KAB_EMBEDDED 446#endif //KAB_EMBEDDED
447 447
448 class KABCorePrivate; 448 class KABCorePrivate;
449 KABCorePrivate *d; 449 KABCorePrivate *d;
450 bool mBlockSaveFlag; 450 bool mBlockSaveFlag;
451 451
452#ifdef KAB_EMBEDDED 452#ifdef KAB_EMBEDDED
453 KAddressBookMain *mMainWindow; // should be the same like mGUIClient 453 KAddressBookMain *mMainWindow; // should be the same like mGUIClient
454#endif //KAB_EMBEDDED 454#endif //KAB_EMBEDDED
455 // LR ******************************* 455 // LR *******************************
456 // sync stuff! 456 // sync stuff!
457 QPopupMenu *syncMenu; 457 QPopupMenu *syncMenu;
458 void fillSyncMenu(); 458 void fillSyncMenu();
459 QString mCurrentSyncDevice; 459 QString mCurrentSyncDevice;
460 QString mCurrentSyncName; 460 QString mCurrentSyncName;
461 void quickSyncLocalFile(); 461 void quickSyncLocalFile();
462 bool syncWithFile( QString fn , bool quick ); 462 bool syncWithFile( QString fn , bool quick );
463 void KABCore::syncLocalFile(); 463 void KABCore::syncLocalFile();
464 void KABCore::syncPhone(); 464 void KABCore::syncPhone();
465 void KABCore::syncSharp(); 465 void KABCore::syncSharp();
466 void multiSync( bool askforPrefs ); 466 void multiSync( bool askforPrefs );
467 int mCurrentSyncProfile ; 467 int mCurrentSyncProfile ;
468 void syncRemote( KSyncProfile* prof, bool ask = true); 468 void syncRemote( KSyncProfile* prof, bool ask = true);
469 void edit_sync_options(); 469 void edit_sync_options();
470 bool syncAB(QString filename, int mode); 470 bool syncAB(QString filename, int mode);
471 int ringSync(); 471 int ringSync();
472 QString getPassword( ); 472 QString getPassword( );
473 int mGlobalSyncMode; 473 int mGlobalSyncMode;
474 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode); 474 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode);
475 KABC::Addressee getLastSyncAddressee(); 475 KABC::Addressee getLastSyncAddressee();
476 QDateTime mLastAddressbookSync; 476 QDateTime mLastAddressbookSync;
477 int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full );
477 public slots: 478 public slots:
478 void confSync(); 479 void confSync();
479 // ********************* 480 // *********************
480 481
481}; 482};
482 483
483#endif 484#endif