summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressbook.cpp15
-rw-r--r--kabc/addressbook.h2
-rw-r--r--kaddressbook/kabcore.cpp4
-rw-r--r--microkde/kresources/configdialog.cpp5
-rw-r--r--microkde/kresources/configdialog.h1
-rw-r--r--microkde/kresources/resource.cpp14
-rw-r--r--microkde/kresources/resource.h2
7 files changed, 38 insertions, 5 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 8882259..592d78d 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -373,12 +373,13 @@ bool AddressBook::save( Ticket *ticket )
373 deleteRemovedAddressees(); 373 deleteRemovedAddressees();
374 return ticket->resource()->save( ticket ); 374 return ticket->resource()->save( ticket );
375 } 375 }
376 376
377 return false; 377 return false;
378} 378}
379// exports all Addressees, which are syncable
379void AddressBook::export2File( QString fileName ) 380void AddressBook::export2File( QString fileName )
380{ 381{
381 382
382 QFile outFile( fileName ); 383 QFile outFile( fileName );
383 if ( !outFile.open( IO_WriteOnly ) ) { 384 if ( !outFile.open( IO_WriteOnly ) ) {
384 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" ); 385 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" );
@@ -388,21 +389,23 @@ void AddressBook::export2File( QString fileName )
388 QTextStream t( &outFile ); 389 QTextStream t( &outFile );
389 t.setEncoding( QTextStream::UnicodeUTF8 ); 390 t.setEncoding( QTextStream::UnicodeUTF8 );
390 Iterator it; 391 Iterator it;
391 KABC::VCardConverter::Version version; 392 KABC::VCardConverter::Version version;
392 version = KABC::VCardConverter::v3_0; 393 version = KABC::VCardConverter::v3_0;
393 for ( it = begin(); it != end(); ++it ) { 394 for ( it = begin(); it != end(); ++it ) {
395 if ( (*it).resource() && (*it).resource()->includeInSync() ) {
394 if ( !(*it).IDStr().isEmpty() ) { 396 if ( !(*it).IDStr().isEmpty() ) {
395 (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() ); 397 (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() );
396 } 398 }
397 KABC::VCardConverter converter; 399 KABC::VCardConverter converter;
398 QString vcard; 400 QString vcard;
399 //Resource *resource() const; 401 //Resource *resource() const;
400 converter.addresseeToVCard( *it, vcard, version ); 402 converter.addresseeToVCard( *it, vcard, version );
401 t << vcard << "\r\n"; 403 t << vcard << "\r\n";
402 } 404 }
405 }
403 t << "\r\n\r\n"; 406 t << "\r\n\r\n";
404 outFile.close(); 407 outFile.close();
405} 408}
406// if QStringList uids is empty, all are exported 409// if QStringList uids is empty, all are exported
407bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName ) 410bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName )
408{ 411{
@@ -416,12 +419,14 @@ bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName )
416 if ( ! ( uids.contains((*it).uid() ) )) 419 if ( ! ( uids.contains((*it).uid() ) ))
417 continue; 420 continue;
418 } 421 }
419 KABC::Addressee a = ( *it ); 422 KABC::Addressee a = ( *it );
420 if ( a.isEmpty() ) 423 if ( a.isEmpty() )
421 continue; 424 continue;
425 if ( all && a.resource() && !a.resource()->includeInSync() )
426 continue;
422 a.simplifyEmails(); 427 a.simplifyEmails();
423 a.simplifyPhoneNumbers(); 428 a.simplifyPhoneNumbers();
424 a.simplifyPhoneNumberTypes(); 429 a.simplifyPhoneNumberTypes();
425 a.simplifyAddresses(); 430 a.simplifyAddresses();
426 431
427 QString vcard; 432 QString vcard;
@@ -473,13 +478,13 @@ bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName )
473 478
474} 479}
475void AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld ) 480void AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld )
476{ 481{
477 482
478 if ( removeOld ) 483 if ( removeOld )
479 setUntagged(); 484 setUntagged( true );
480 KABC::Addressee::List list; 485 KABC::Addressee::List list;
481 QFile file( fileName ); 486 QFile file( fileName );
482 file.open( IO_ReadOnly ); 487 file.open( IO_ReadOnly );
483 QByteArray rawData = file.readAll(); 488 QByteArray rawData = file.readAll();
484 file.close(); 489 file.close();
485 QString data; 490 QString data;
@@ -503,16 +508,22 @@ void AddressBook::importFromFile( QString fileName, bool replaceLabel, bool rem
503 (*it).setTagged( true ); 508 (*it).setTagged( true );
504 insertAddressee( (*it), false, true ); 509 insertAddressee( (*it), false, true );
505 } 510 }
506 if ( removeOld ) 511 if ( removeOld )
507 removeUntagged(); 512 removeUntagged();
508} 513}
509void AddressBook::setUntagged() 514void AddressBook::setUntagged(bool setNonSyncTagged) // = false)
510{ 515{
511 Iterator ait; 516 Iterator ait;
512 for ( ait = begin(); ait != end(); ++ait ) { 517 for ( ait = begin(); ait != end(); ++ait ) {
518 if ( setNonSyncTagged ) {
519 if ( (*ait).resource() && ! (*ait).resource()->includeInSync() ) {
520 (*ait).setTagged( true );
521 } else
522 (*ait).setTagged( false );
523 } else
513 (*ait).setTagged( false ); 524 (*ait).setTagged( false );
514 } 525 }
515} 526}
516void AddressBook::removeUntagged() 527void AddressBook::removeUntagged()
517{ 528{
518 Iterator ait; 529 Iterator ait;
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index a6bf451..23bba02 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -145,13 +145,13 @@ class AddressBook : public QObject
145 bool saveABphone( QString fileName ); 145 bool saveABphone( QString fileName );
146 void smplifyAddressees(); 146 void smplifyAddressees();
147 void preparePhoneSync( QString currentSyncDevice, bool isPreSync ); 147 void preparePhoneSync( QString currentSyncDevice, bool isPreSync );
148 void export2File( QString fileName ); 148 void export2File( QString fileName );
149 bool export2PhoneFormat( QStringList uids ,QString fileName ); 149 bool export2PhoneFormat( QStringList uids ,QString fileName );
150 void importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false ); 150 void importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false );
151 void setUntagged(); 151 void setUntagged( bool setNonSyncTagged = false );
152 void removeUntagged(); 152 void removeUntagged();
153 void findNewExtIds( QString fileName, QString currentSyncDevice ); 153 void findNewExtIds( QString fileName, QString currentSyncDevice );
154 /** 154 /**
155 Returns a iterator for first entry of address book. 155 Returns a iterator for first entry of address book.
156 */ 156 */
157 Iterator begin(); 157 Iterator begin();
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index ea34be2..47ed858 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2548,12 +2548,13 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2548 if ( !skipIncidence ) { 2548 if ( !skipIncidence ) {
2549 inL = local->findByUid( uid ); 2549 inL = local->findByUid( uid );
2550 inR = remote->findByUid( uid ); 2550 inR = remote->findByUid( uid );
2551 //inL.setResource( 0 ); 2551 //inL.setResource( 0 );
2552 //inR.setResource( 0 ); 2552 //inR.setResource( 0 );
2553 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2553 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2554 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2554 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) { 2555 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2555 //qDebug("take %d %s ", take, inL.summary().latin1()); 2556 //qDebug("take %d %s ", take, inL.summary().latin1());
2556 if ( take == 3 ) 2557 if ( take == 3 )
2557 return false; 2558 return false;
2558 if ( take == 1 ) {// take local 2559 if ( take == 1 ) {// take local
2559 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2560 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
@@ -2592,12 +2593,13 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2592 } 2593 }
2593 inL.setResource( 0 ); 2594 inL.setResource( 0 );
2594 local->insertAddressee( inL , false ); 2595 local->insertAddressee( inL , false );
2595 ++changedLocal; 2596 ++changedLocal;
2596 } 2597 }
2597 } 2598 }
2599 }
2598 } else { // no conflict 2600 } else { // no conflict
2599 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2601 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2600 QString des = addresseeLSync.note(); 2602 QString des = addresseeLSync.note();
2601 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 2603 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
2602 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 2604 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
2603 remote->insertAddressee( inR, false ); 2605 remote->insertAddressee( inR, false );
@@ -2642,12 +2644,13 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2642 uid = el[ incCounter ]; 2644 uid = el[ incCounter ];
2643 bool skipIncidence = false; 2645 bool skipIncidence = false;
2644 if ( uid.left(19) == QString("last-syncAddressee-") ) 2646 if ( uid.left(19) == QString("last-syncAddressee-") )
2645 skipIncidence = true; 2647 skipIncidence = true;
2646 if ( !skipIncidence ) { 2648 if ( !skipIncidence ) {
2647 inL = local->findByUid( uid ); 2649 inL = local->findByUid( uid );
2650 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2648 inR = remote->findByUid( uid ); 2651 inR = remote->findByUid( uid );
2649 if ( inR.isEmpty() ) { 2652 if ( inR.isEmpty() ) {
2650 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2653 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2651 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 2654 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
2652 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2655 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2653 local->removeAddressee( inL ); 2656 local->removeAddressee( inL );
@@ -2679,12 +2682,13 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
2679 remote->insertAddressee( inR, false ); 2682 remote->insertAddressee( inR, false );
2680 } 2683 }
2681 } 2684 }
2682 } 2685 }
2683 } 2686 }
2684 } 2687 }
2688 }
2685 ++incCounter; 2689 ++incCounter;
2686 } 2690 }
2687 el.clear(); 2691 el.clear();
2688 syncManager->hideProgressBar(); 2692 syncManager->hideProgressBar();
2689 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 2693 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
2690 // get rid of micro seconds 2694 // get rid of micro seconds
diff --git a/microkde/kresources/configdialog.cpp b/microkde/kresources/configdialog.cpp
index f8240f9..030b547 100644
--- a/microkde/kresources/configdialog.cpp
+++ b/microkde/kresources/configdialog.cpp
@@ -72,14 +72,18 @@ ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily,
72 72
73 new QLabel( mResource->isSyncable()?i18n( "Profile Name:" ):i18n( "Name:" ), generalGroupBox ); 73 new QLabel( mResource->isSyncable()?i18n( "Profile Name:" ):i18n( "Name:" ), generalGroupBox );
74 74
75 mName = new KLineEdit( generalGroupBox ); 75 mName = new KLineEdit( generalGroupBox );
76 76
77 if (!mResource->isSyncable()) { 77 if (!mResource->isSyncable()) {
78 new QLabel("", generalGroupBox );
78 mReadOnly = new QCheckBox( i18n( "Read-only" ), generalGroupBox ); 79 mReadOnly = new QCheckBox( i18n( "Read-only" ), generalGroupBox );
79 mReadOnly->setChecked( mResource->readOnly() ); 80 mReadOnly->setChecked( mResource->readOnly() );
81 new QLabel("", generalGroupBox );
82 mIncludeInSync = new QCheckBox( i18n( "Include in sync" ), generalGroupBox );
83 mIncludeInSync->setChecked( mResource->includeInSync() );
80 } 84 }
81 85
82 mName->setText( mResource->resourceName() ); 86 mName->setText( mResource->resourceName() );
83 87
84 mainLayout->addWidget( generalGroupBox ); 88 mainLayout->addWidget( generalGroupBox );
85 89
@@ -217,12 +221,13 @@ void ConfigDialog::accept()
217 return; 221 return;
218 } 222 }
219 223
220 mResource->setResourceName( mName->text() ); 224 mResource->setResourceName( mName->text() );
221 if (!mResource->isSyncable()) 225 if (!mResource->isSyncable())
222 mResource->setReadOnly( mReadOnly->isChecked() ); 226 mResource->setReadOnly( mReadOnly->isChecked() );
227 mResource->setIncludeInSync( mIncludeInSync->isChecked() );
223 228
224 if ( mConfigWidget ) { 229 if ( mConfigWidget ) {
225 // First save generic information 230 // First save generic information
226 // Also save setting of specific resource type 231 // Also save setting of specific resource type
227 mConfigWidget->saveSettings( mResource ); 232 mConfigWidget->saveSettings( mResource );
228 } 233 }
diff --git a/microkde/kresources/configdialog.h b/microkde/kresources/configdialog.h
index 63cd4e9..ed3ecab 100644
--- a/microkde/kresources/configdialog.h
+++ b/microkde/kresources/configdialog.h
@@ -55,12 +55,13 @@ class ConfigDialog : public KDialogBase
55 SyncWidget *mSyncWidget_Conflicts; 55 SyncWidget *mSyncWidget_Conflicts;
56 SyncWidget *mSyncWidget_Remote; 56 SyncWidget *mSyncWidget_Remote;
57 Resource* mResource; 57 Resource* mResource;
58 58
59 KLineEdit *mName; 59 KLineEdit *mName;
60 QCheckBox *mReadOnly; 60 QCheckBox *mReadOnly;
61 QCheckBox *mIncludeInSync;
61//US add a persistent readonly flag. We need that for opie and qtopia addressbooks. 62//US add a persistent readonly flag. We need that for opie and qtopia addressbooks.
62 bool mPersistentReadOnly; 63 bool mPersistentReadOnly;
63}; 64};
64 65
65} 66}
66 67
diff --git a/microkde/kresources/resource.cpp b/microkde/kresources/resource.cpp
index 4f69540..f79bcd0 100644
--- a/microkde/kresources/resource.cpp
+++ b/microkde/kresources/resource.cpp
@@ -36,12 +36,13 @@ class Resource::ResourcePrivate
36 QMutex mMutex; 36 QMutex mMutex;
37#endif 37#endif
38 int mOpenCount; 38 int mOpenCount;
39 QString mType; 39 QString mType;
40 QString mIdentifier; 40 QString mIdentifier;
41 bool mReadOnly; 41 bool mReadOnly;
42 bool mIncludeInSync;
42 QString mName; 43 QString mName;
43 bool mActive; 44 bool mActive;
44 bool mIsOpen; 45 bool mIsOpen;
45}; 46};
46 47
47Resource::Resource( const KConfig* config ) 48Resource::Resource( const KConfig* config )
@@ -60,18 +61,20 @@ Resource::Resource( const KConfig* config )
60 if ( !cfg->tempGroup().isEmpty() ) 61 if ( !cfg->tempGroup().isEmpty() )
61 cfg->setGroup( cfg->tempGroup() ); 62 cfg->setGroup( cfg->tempGroup() );
62#endif 63#endif
63 d->mType = cfg->readEntry( "ResourceType" ); 64 d->mType = cfg->readEntry( "ResourceType" );
64 d->mName = cfg->readEntry( "ResourceName" ); 65 d->mName = cfg->readEntry( "ResourceName" );
65 d->mReadOnly = cfg->readBoolEntry( "ResourceIsReadOnly", false ); 66 d->mReadOnly = cfg->readBoolEntry( "ResourceIsReadOnly", false );
67 d->mIncludeInSync = cfg->readBoolEntry( "ResourceIncludeInSync", true );;
66 d->mActive = cfg->readBoolEntry( "ResourceIsActive", true ); 68 d->mActive = cfg->readBoolEntry( "ResourceIsActive", true );
67 d->mIdentifier = cfg->readEntry( "ResourceIdentifier" ); 69 d->mIdentifier = cfg->readEntry( "ResourceIdentifier" );
68 } else { 70 } else {
69 d->mType = "type"; 71 d->mType = "type";
70 d->mName = "resource-name"; 72 d->mName = "resource-name";
71 d->mReadOnly = false; 73 d->mReadOnly = false;
74 d->mIncludeInSync = true;
72 d->mActive = true; 75 d->mActive = true;
73 d->mIdentifier = KApplication::randomString( 10 ); 76 d->mIdentifier = KApplication::randomString( 10 );
74 } 77 }
75} 78}
76 79
77Resource::~Resource() 80Resource::~Resource()
@@ -79,17 +82,16 @@ Resource::~Resource()
79 delete d; 82 delete d;
80 d = 0; 83 d = 0;
81} 84}
82 85
83void Resource::writeConfig( KConfig* config ) 86void Resource::writeConfig( KConfig* config )
84{ 87{
85
86
87 config->writeEntry( "ResourceType", d->mType ); 88 config->writeEntry( "ResourceType", d->mType );
88 config->writeEntry( "ResourceName", d->mName ); 89 config->writeEntry( "ResourceName", d->mName );
89 config->writeEntry( "ResourceIsReadOnly", d->mReadOnly ); 90 config->writeEntry( "ResourceIsReadOnly", d->mReadOnly );
91 config->writeEntry( "ResourceIncludeInSync", d->mIncludeInSync );
90 config->writeEntry( "ResourceIsActive", d->mActive ); 92 config->writeEntry( "ResourceIsActive", d->mActive );
91 config->writeEntry( "ResourceIdentifier", d->mIdentifier ); 93 config->writeEntry( "ResourceIdentifier", d->mIdentifier );
92} 94}
93 95
94bool Resource::open() 96bool Resource::open()
95{ 97{
@@ -146,12 +148,20 @@ void Resource::setType( const QString& type )
146 148
147QString Resource::type() const 149QString Resource::type() const
148{ 150{
149 return d->mType; 151 return d->mType;
150} 152}
151 153
154void Resource::setIncludeInSync( bool value )
155{
156 d->mIncludeInSync = value;
157}
158bool Resource::includeInSync() const
159{
160 return d->mIncludeInSync;
161}
152void Resource::setReadOnly( bool value ) 162void Resource::setReadOnly( bool value )
153{ 163{
154 d->mReadOnly = value; 164 d->mReadOnly = value;
155} 165}
156 166
157bool Resource::readOnly() const 167bool Resource::readOnly() const
diff --git a/microkde/kresources/resource.h b/microkde/kresources/resource.h
index 580b5d1..70b5613 100644
--- a/microkde/kresources/resource.h
+++ b/microkde/kresources/resource.h
@@ -307,12 +307,14 @@ class Resource : public QObject
307 307
308 /** 308 /**
309 * Returns, if the resource is read-only. 309 * Returns, if the resource is read-only.
310 */ 310 */
311 virtual bool readOnly() const; 311 virtual bool readOnly() const;
312 312
313 void setIncludeInSync( bool value );
314 bool includeInSync() const;
313 /** 315 /**
314 * Set the name of resource.You can override this method, 316 * Set the name of resource.You can override this method,
315 * but also remember to call Resource::setResourceName(). 317 * but also remember to call Resource::setResourceName().
316 */ 318 */
317 virtual void setResourceName( const QString &name ); 319 virtual void setResourceName( const QString &name );
318 320