-rw-r--r-- | kabc/addressbook.cpp | 42 | ||||
-rw-r--r-- | kabc/addressbook.h | 4 | ||||
-rw-r--r-- | kaddressbook/kabcore.cpp | 6 | ||||
-rw-r--r-- | kaddressbook/kabcore.h | 2 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.cpp | 4 |
5 files changed, 41 insertions, 17 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index e04f4b1..bdc2762 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp | |||
@@ -422,174 +422,198 @@ bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName ) | |||
422 | for ( it = begin(); it != end(); ++it ) { | 422 | for ( it = begin(); it != end(); ++it ) { |
423 | // for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { | 423 | // for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { |
424 | if ( ! all ) { | 424 | if ( ! all ) { |
425 | if ( ! ( uids.contains((*it).uid() ) )) | 425 | if ( ! ( uids.contains((*it).uid() ) )) |
426 | continue; | 426 | continue; |
427 | } | 427 | } |
428 | KABC::Addressee a = ( *it ); | 428 | KABC::Addressee a = ( *it ); |
429 | if ( a.isEmpty() ) | 429 | if ( a.isEmpty() ) |
430 | continue; | 430 | continue; |
431 | if ( all && a.resource() && !a.resource()->includeInSync() ) | 431 | if ( all && a.resource() && !a.resource()->includeInSync() ) |
432 | continue; | 432 | continue; |
433 | a.simplifyEmails(); | 433 | a.simplifyEmails(); |
434 | a.simplifyPhoneNumbers(); | 434 | a.simplifyPhoneNumbers(); |
435 | a.simplifyPhoneNumberTypes(); | 435 | a.simplifyPhoneNumberTypes(); |
436 | a.simplifyAddresses(); | 436 | a.simplifyAddresses(); |
437 | 437 | ||
438 | QString vcard; | 438 | QString vcard; |
439 | QString vcardnew; | 439 | QString vcardnew; |
440 | converter.addresseeToVCard( a, vcard ); | 440 | converter.addresseeToVCard( a, vcard ); |
441 | int start = 0; | 441 | int start = 0; |
442 | int next; | 442 | int next; |
443 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { | 443 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { |
444 | int semi = vcard.find(";", next); | 444 | int semi = vcard.find(";", next); |
445 | int dopp = vcard.find(":", next); | 445 | int dopp = vcard.find(":", next); |
446 | int sep; | 446 | int sep; |
447 | if ( semi < dopp && semi >= 0 ) | 447 | if ( semi < dopp && semi >= 0 ) |
448 | sep = semi ; | 448 | sep = semi ; |
449 | else | 449 | else |
450 | sep = dopp; | 450 | sep = dopp; |
451 | vcardnew +=vcard.mid( start, next - start); | 451 | vcardnew +=vcard.mid( start, next - start); |
452 | vcardnew +=vcard.mid( next+5,sep -next -5 ).upper(); | 452 | vcardnew +=vcard.mid( next+5,sep -next -5 ).upper(); |
453 | start = sep; | 453 | start = sep; |
454 | } | 454 | } |
455 | vcardnew += vcard.mid( start,vcard.length() ); | 455 | vcardnew += vcard.mid( start,vcard.length() ); |
456 | vcard = ""; | 456 | vcard = ""; |
457 | start = 0; | 457 | start = 0; |
458 | while ( (next = vcardnew.find("ADR", start) )>= 0 ) { | 458 | while ( (next = vcardnew.find("ADR", start) )>= 0 ) { |
459 | int sep = vcardnew.find(":", next); | 459 | int sep = vcardnew.find(":", next); |
460 | vcard +=vcardnew.mid( start, next - start+3); | 460 | vcard +=vcardnew.mid( start, next - start+3); |
461 | start = sep; | 461 | start = sep; |
462 | } | 462 | } |
463 | vcard += vcardnew.mid( start,vcardnew.length() ); | 463 | vcard += vcardnew.mid( start,vcardnew.length() ); |
464 | vcard.replace ( QRegExp(";;;") , "" ); | 464 | vcard.replace ( QRegExp(";;;") , "" ); |
465 | vcard.replace ( QRegExp(";;") , "" ); | 465 | vcard.replace ( QRegExp(";;") , "" ); |
466 | datastream += vcard; | 466 | datastream += vcard; |
467 | 467 | ||
468 | } | 468 | } |
469 | 469 | ||
470 | QFile outFile(fileName); | 470 | QFile outFile(fileName); |
471 | if ( outFile.open(IO_WriteOnly) ) { | 471 | if ( outFile.open(IO_WriteOnly) ) { |
472 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); | 472 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); |
473 | QTextStream t( &outFile ); // use a text stream | 473 | QTextStream t( &outFile ); // use a text stream |
474 | t.setEncoding( QTextStream::UnicodeUTF8 ); | 474 | t.setEncoding( QTextStream::UnicodeUTF8 ); |
475 | t <<datastream; | 475 | t <<datastream; |
476 | t << "\r\n\r\n"; | 476 | t << "\r\n\r\n"; |
477 | outFile.close(); | 477 | outFile.close(); |
478 | 478 | ||
479 | } else { | 479 | } else { |
480 | qDebug("Error open temp file "); | 480 | qDebug("Error open temp file "); |
481 | return false; | 481 | return false; |
482 | } | 482 | } |
483 | return true; | 483 | return true; |
484 | 484 | ||
485 | } | 485 | } |
486 | int AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld ) | 486 | int AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld, QString resource ) |
487 | { | 487 | { |
488 | 488 | ||
489 | if ( removeOld ) | 489 | if ( removeOld ) |
490 | setUntagged( true ); | 490 | setUntagged( true, resource ); |
491 | KABC::Addressee::List list; | 491 | KABC::Addressee::List list; |
492 | QFile file( fileName ); | 492 | QFile file( fileName ); |
493 | file.open( IO_ReadOnly ); | 493 | file.open( IO_ReadOnly ); |
494 | QByteArray rawData = file.readAll(); | 494 | QByteArray rawData = file.readAll(); |
495 | file.close(); | 495 | file.close(); |
496 | QString data; | 496 | QString data; |
497 | if ( replaceLabel ) { | 497 | if ( replaceLabel ) { |
498 | data = QString::fromLatin1( rawData.data(), rawData.size() + 1 ); | 498 | data = QString::fromLatin1( rawData.data(), rawData.size() + 1 ); |
499 | data.replace ( QRegExp("LABEL") , "ADR" ); | 499 | data.replace ( QRegExp("LABEL") , "ADR" ); |
500 | data.replace ( QRegExp("CHARSET=ISO-8859-1") , "" ); | 500 | data.replace ( QRegExp("CHARSET=ISO-8859-1") , "" ); |
501 | } else | 501 | } else |
502 | data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); | 502 | data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); |
503 | KABC::VCardTool tool; | 503 | KABC::VCardTool tool; |
504 | list = tool.parseVCards( data ); | 504 | list = tool.parseVCards( data ); |
505 | KABC::Addressee::List::Iterator it; | 505 | KABC::Addressee::List::Iterator it; |
506 | |||
507 | Resource * setRes = 0; | ||
508 | if ( !resource.isEmpty() ) { | ||
509 | KRES::Manager<Resource>::ActiveIterator it; | ||
510 | KRES::Manager<Resource> *manager = d->mManager; | ||
511 | for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { | ||
512 | qDebug("SaveAB::checking resource..." ); | ||
513 | if ( (*it)->name() == resource ) { | ||
514 | setRes = (*it); | ||
515 | qDebug("Inserting imported contacs to resource %s", resource.latin1()); | ||
516 | break; | ||
517 | } | ||
518 | } | ||
519 | } | ||
506 | for ( it = list.begin(); it != list.end(); ++it ) { | 520 | for ( it = list.begin(); it != list.end(); ++it ) { |
507 | QString id = (*it).custom( "KADDRESSBOOK", "X-ExternalID" ); | 521 | QString id = (*it).custom( "KADDRESSBOOK", "X-ExternalID" ); |
508 | if ( !id.isEmpty() ) | 522 | if ( !id.isEmpty() ) |
509 | (*it).setIDStr(id ); | 523 | (*it).setIDStr(id ); |
510 | (*it).setResource( 0 ); | 524 | (*it).setResource( setRes ); |
511 | if ( replaceLabel ) | 525 | if ( replaceLabel ) |
512 | (*it).removeVoice(); | 526 | (*it).removeVoice(); |
513 | if ( removeOld ) | 527 | if ( removeOld ) |
514 | (*it).setTagged( true ); | 528 | (*it).setTagged( true ); |
515 | insertAddressee( (*it), false, true ); | 529 | insertAddressee( (*it), false, true ); |
516 | } | 530 | } |
517 | if ( removeOld ) | 531 | if ( removeOld ) |
518 | removeUntagged(); | 532 | removeUntagged(); |
519 | return list.count(); | 533 | return list.count(); |
520 | } | 534 | } |
521 | void AddressBook::setUntagged(bool setNonSyncTagged) // = false) | 535 | void AddressBook::setUntagged(bool setNonSyncTagged, QString resource) // = false , "") |
522 | { | 536 | { |
523 | Iterator ait; | 537 | Iterator ait; |
524 | for ( ait = begin(); ait != end(); ++ait ) { | 538 | if ( !resource.isEmpty() ) { |
525 | if ( setNonSyncTagged ) { | 539 | for ( ait = begin(); ait != end(); ++ait ) { |
526 | if ( (*ait).resource() && ! (*ait).resource()->includeInSync() ) { | 540 | if ( (*ait).resource() && (*ait).resource()->name() == resource ) { |
541 | (*ait).setTagged( false ); | ||
542 | } | ||
543 | else | ||
527 | (*ait).setTagged( true ); | 544 | (*ait).setTagged( true ); |
545 | } | ||
546 | } else { | ||
547 | for ( ait = begin(); ait != end(); ++ait ) { | ||
548 | if ( setNonSyncTagged ) { | ||
549 | if ( (*ait).resource() && ! (*ait).resource()->includeInSync() ) { | ||
550 | (*ait).setTagged( true ); | ||
551 | } else | ||
552 | (*ait).setTagged( false ); | ||
528 | } else | 553 | } else |
529 | (*ait).setTagged( false ); | 554 | (*ait).setTagged( false ); |
530 | } else | 555 | } |
531 | (*ait).setTagged( false ); | ||
532 | } | 556 | } |
533 | } | 557 | } |
534 | void AddressBook::removeUntagged() | 558 | void AddressBook::removeUntagged() |
535 | { | 559 | { |
536 | Iterator ait; | 560 | Iterator ait; |
537 | bool todelete = false; | 561 | bool todelete = false; |
538 | Iterator todel; | 562 | Iterator todel; |
539 | for ( ait = begin(); ait != end(); ++ait ) { | 563 | for ( ait = begin(); ait != end(); ++ait ) { |
540 | if ( todelete ) | 564 | if ( todelete ) |
541 | removeAddressee( todel ); | 565 | removeAddressee( todel ); |
542 | if (!(*ait).tagged()) { | 566 | if (!(*ait).tagged()) { |
543 | todelete = true; | 567 | todelete = true; |
544 | todel = ait; | 568 | todel = ait; |
545 | } else | 569 | } else |
546 | todelete = false; | 570 | todelete = false; |
547 | } | 571 | } |
548 | if ( todelete ) | 572 | if ( todelete ) |
549 | removeAddressee( todel ); | 573 | removeAddressee( todel ); |
550 | deleteRemovedAddressees(); | 574 | deleteRemovedAddressees(); |
551 | } | 575 | } |
552 | void AddressBook::smplifyAddressees() | 576 | void AddressBook::smplifyAddressees() |
553 | { | 577 | { |
554 | Iterator ait; | 578 | Iterator ait; |
555 | for ( ait = begin(); ait != end(); ++ait ) { | 579 | for ( ait = begin(); ait != end(); ++ait ) { |
556 | (*ait).simplifyEmails(); | 580 | (*ait).simplifyEmails(); |
557 | (*ait).simplifyPhoneNumbers(); | 581 | (*ait).simplifyPhoneNumbers(); |
558 | (*ait).simplifyPhoneNumberTypes(); | 582 | (*ait).simplifyPhoneNumberTypes(); |
559 | (*ait).simplifyAddresses(); | 583 | (*ait).simplifyAddresses(); |
560 | } | 584 | } |
561 | } | 585 | } |
562 | void AddressBook::removeSyncInfo( QString syncProfile) | 586 | void AddressBook::removeSyncInfo( QString syncProfile) |
563 | { | 587 | { |
564 | Iterator ait; | 588 | Iterator ait; |
565 | for ( ait = begin(); ait != end(); ++ait ) { | 589 | for ( ait = begin(); ait != end(); ++ait ) { |
566 | (*ait).removeID( syncProfile ); | 590 | (*ait).removeID( syncProfile ); |
567 | } | 591 | } |
568 | if ( syncProfile.isEmpty() ) { | 592 | if ( syncProfile.isEmpty() ) { |
569 | Iterator it = begin(); | 593 | Iterator it = begin(); |
570 | Iterator it2 ; | 594 | Iterator it2 ; |
571 | while ( it != end() ) { | 595 | while ( it != end() ) { |
572 | if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { | 596 | if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { |
573 | it2 = it; | 597 | it2 = it; |
574 | //qDebug("removing %s ",(*it).uid().latin1() ); | 598 | //qDebug("removing %s ",(*it).uid().latin1() ); |
575 | ++it; | 599 | ++it; |
576 | removeAddressee( it2 ); | 600 | removeAddressee( it2 ); |
577 | } else { | 601 | } else { |
578 | //qDebug("skipping %s ",(*it).uid().latin1() ); | 602 | //qDebug("skipping %s ",(*it).uid().latin1() ); |
579 | ++it; | 603 | ++it; |
580 | } | 604 | } |
581 | } | 605 | } |
582 | } else { | 606 | } else { |
583 | Addressee lse; | 607 | Addressee lse; |
584 | lse = findByUid( "last-syncAddressee-"+ syncProfile ); | 608 | lse = findByUid( "last-syncAddressee-"+ syncProfile ); |
585 | if ( ! lse.isEmpty() ) | 609 | if ( ! lse.isEmpty() ) |
586 | removeAddressee( lse ); | 610 | removeAddressee( lse ); |
587 | } | 611 | } |
588 | 612 | ||
589 | } | 613 | } |
590 | void AddressBook::preparePhoneSync( QString currentSyncDevice, bool isPreSync ) | 614 | void AddressBook::preparePhoneSync( QString currentSyncDevice, bool isPreSync ) |
591 | { | 615 | { |
592 | Iterator ait; | 616 | Iterator ait; |
593 | for ( ait = begin(); ait != end(); ++ait ) { | 617 | for ( ait = begin(); ait != end(); ++ait ) { |
594 | QString id = (*ait).IDStr(); | 618 | QString id = (*ait).IDStr(); |
595 | (*ait).setIDStr( ":"); | 619 | (*ait).setIDStr( ":"); |
diff --git a/kabc/addressbook.h b/kabc/addressbook.h index 4a0d0a3..e6daa5e 100644 --- a/kabc/addressbook.h +++ b/kabc/addressbook.h | |||
@@ -87,130 +87,130 @@ class AddressBook : public QObject | |||
87 | @short Address Book Const Iterator | 87 | @short Address Book Const Iterator |
88 | 88 | ||
89 | This class provides a const iterator for address book entries. | 89 | This class provides a const iterator for address book entries. |
90 | */ | 90 | */ |
91 | class ConstIterator | 91 | class ConstIterator |
92 | { | 92 | { |
93 | public: | 93 | public: |
94 | ConstIterator(); | 94 | ConstIterator(); |
95 | ConstIterator( const ConstIterator & ); | 95 | ConstIterator( const ConstIterator & ); |
96 | ~ConstIterator(); | 96 | ~ConstIterator(); |
97 | 97 | ||
98 | ConstIterator &operator=( const ConstIterator & ); | 98 | ConstIterator &operator=( const ConstIterator & ); |
99 | const Addressee &operator*() const; | 99 | const Addressee &operator*() const; |
100 | const Addressee* operator->() const; | 100 | const Addressee* operator->() const; |
101 | ConstIterator &operator++(); | 101 | ConstIterator &operator++(); |
102 | ConstIterator &operator++(int); | 102 | ConstIterator &operator++(int); |
103 | ConstIterator &operator--(); | 103 | ConstIterator &operator--(); |
104 | ConstIterator &operator--(int); | 104 | ConstIterator &operator--(int); |
105 | bool operator==( const ConstIterator &it ); | 105 | bool operator==( const ConstIterator &it ); |
106 | bool operator!=( const ConstIterator &it ); | 106 | bool operator!=( const ConstIterator &it ); |
107 | 107 | ||
108 | struct ConstIteratorData; | 108 | struct ConstIteratorData; |
109 | ConstIteratorData *d; | 109 | ConstIteratorData *d; |
110 | }; | 110 | }; |
111 | 111 | ||
112 | /** | 112 | /** |
113 | Constructs a address book object. | 113 | Constructs a address book object. |
114 | 114 | ||
115 | @param format File format class. | 115 | @param format File format class. |
116 | */ | 116 | */ |
117 | AddressBook(); | 117 | AddressBook(); |
118 | AddressBook( const QString &config ); | 118 | AddressBook( const QString &config ); |
119 | AddressBook( const QString &config, const QString &family ); | 119 | AddressBook( const QString &config, const QString &family ); |
120 | virtual ~AddressBook(); | 120 | virtual ~AddressBook(); |
121 | 121 | ||
122 | /** | 122 | /** |
123 | Requests a ticket for saving the addressbook. Calling this function locks | 123 | Requests a ticket for saving the addressbook. Calling this function locks |
124 | the addressbook for all other processes. If the address book is already | 124 | the addressbook for all other processes. If the address book is already |
125 | locked the function returns 0. You need the returned @ref Ticket object | 125 | locked the function returns 0. You need the returned @ref Ticket object |
126 | for calling the @ref save() function. | 126 | for calling the @ref save() function. |
127 | 127 | ||
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 | bool saveABphone( QString fileName ); | 145 | bool saveABphone( QString fileName ); |
146 | void smplifyAddressees(); | 146 | void smplifyAddressees(); |
147 | void removeSyncInfo( QString syncProfile); | 147 | void removeSyncInfo( QString syncProfile); |
148 | void preparePhoneSync( QString currentSyncDevice, bool isPreSync ); | 148 | void preparePhoneSync( QString currentSyncDevice, bool isPreSync ); |
149 | void export2File( QString fileName, QString resourceName = "" ); | 149 | void export2File( QString fileName, QString resourceName = "" ); |
150 | bool export2PhoneFormat( QStringList uids ,QString fileName ); | 150 | bool export2PhoneFormat( QStringList uids ,QString fileName ); |
151 | int importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false ); | 151 | int importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false, QString resource = "" ); |
152 | void setUntagged( bool setNonSyncTagged = false ); | 152 | void setUntagged( bool setNonSyncTagged = false, QString resource = "" ); |
153 | void removeUntagged(); | 153 | void removeUntagged(); |
154 | void findNewExtIds( QString fileName, QString currentSyncDevice ); | 154 | void findNewExtIds( QString fileName, QString currentSyncDevice ); |
155 | /** | 155 | /** |
156 | Returns a iterator for first entry of address book. | 156 | Returns a iterator for first entry of address book. |
157 | */ | 157 | */ |
158 | Iterator begin(); | 158 | Iterator begin(); |
159 | 159 | ||
160 | /** | 160 | /** |
161 | Returns a const iterator for first entry of address book. | 161 | Returns a const iterator for first entry of address book. |
162 | */ | 162 | */ |
163 | ConstIterator begin() const; | 163 | ConstIterator begin() const; |
164 | 164 | ||
165 | /** | 165 | /** |
166 | Returns a iterator for first entry of address book. | 166 | Returns a iterator for first entry of address book. |
167 | */ | 167 | */ |
168 | Iterator end(); | 168 | Iterator end(); |
169 | 169 | ||
170 | /** | 170 | /** |
171 | Returns a const iterator for first entry of address book. | 171 | Returns a const iterator for first entry of address book. |
172 | */ | 172 | */ |
173 | ConstIterator end() const; | 173 | ConstIterator end() const; |
174 | 174 | ||
175 | /** | 175 | /** |
176 | Removes all entries from address book. | 176 | Removes all entries from address book. |
177 | */ | 177 | */ |
178 | void clear(); | 178 | void clear(); |
179 | 179 | ||
180 | /** | 180 | /** |
181 | Insert an Addressee object into address book. If an object with the same | 181 | Insert an Addressee object into address book. If an object with the same |
182 | unique id already exists in the address book it it replaced by the new | 182 | unique id already exists in the address book it it replaced by the new |
183 | one. If not the new object is appended to the address book. | 183 | one. If not the new object is appended to the address book. |
184 | */ | 184 | */ |
185 | void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false); | 185 | void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false); |
186 | 186 | ||
187 | /** | 187 | /** |
188 | Removes entry from the address book. | 188 | Removes entry from the address book. |
189 | */ | 189 | */ |
190 | void removeAddressee( const Addressee & ); | 190 | void removeAddressee( const Addressee & ); |
191 | 191 | ||
192 | /** | 192 | /** |
193 | This is like @ref removeAddressee() just above, with the difference that | 193 | This is like @ref removeAddressee() just above, with the difference that |
194 | the first element is a iterator, returned by @ref begin(). | 194 | the first element is a iterator, returned by @ref begin(). |
195 | */ | 195 | */ |
196 | void removeAddressee( const Iterator & ); | 196 | void removeAddressee( const Iterator & ); |
197 | 197 | ||
198 | /** | 198 | /** |
199 | Find the specified entry in address book. Returns end(), if the entry | 199 | Find the specified entry in address book. Returns end(), if the entry |
200 | couldn't be found. | 200 | couldn't be found. |
201 | */ | 201 | */ |
202 | Iterator find( const Addressee & ); | 202 | Iterator find( const Addressee & ); |
203 | 203 | ||
204 | /** | 204 | /** |
205 | Find the entry specified by an unique id. Returns an empty Addressee | 205 | Find the entry specified by an unique id. Returns an empty Addressee |
206 | object, if the address book does not contain an entry with this id. | 206 | object, if the address book does not contain an entry with this id. |
207 | */ | 207 | */ |
208 | Addressee findByUid( const QString & ); | 208 | Addressee findByUid( const QString & ); |
209 | 209 | ||
210 | 210 | ||
211 | /** | 211 | /** |
212 | Returns a list of all addressees in the address book. This list can | 212 | Returns a list of all addressees in the address book. This list can |
213 | be sorted with @ref KABC::AddresseeList for example. | 213 | be sorted with @ref KABC::AddresseeList for example. |
214 | */ | 214 | */ |
215 | Addressee::List allAddressees(); | 215 | Addressee::List allAddressees(); |
216 | 216 | ||
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 5d377bf..7d8586a 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -1876,129 +1876,129 @@ void KABCore::initGUI() | |||
1876 | #else | 1876 | #else |
1877 | if ( QApplication::desktop()->width() > 480 ) { | 1877 | if ( QApplication::desktop()->width() > 480 ) { |
1878 | topLayout = new QHBoxLayout( this ); | 1878 | topLayout = new QHBoxLayout( this ); |
1879 | mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); | 1879 | mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); |
1880 | mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); | 1880 | mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); |
1881 | } else { | 1881 | } else { |
1882 | 1882 | ||
1883 | topLayout = new QHBoxLayout( this ); | 1883 | topLayout = new QHBoxLayout( this ); |
1884 | mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); | 1884 | mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); |
1885 | mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); | 1885 | mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); |
1886 | } | 1886 | } |
1887 | 1887 | ||
1888 | topLayout->addWidget(mMiniSplitter ); | 1888 | topLayout->addWidget(mMiniSplitter ); |
1889 | mViewManager = new ViewManager( this, mMiniSplitter ); | 1889 | mViewManager = new ViewManager( this, mMiniSplitter ); |
1890 | mDetails = new ViewContainer( mMiniSplitter ); | 1890 | mDetails = new ViewContainer( mMiniSplitter ); |
1891 | 1891 | ||
1892 | 1892 | ||
1893 | mExtensionManager = new ExtensionManager( this, mMiniSplitter ); | 1893 | mExtensionManager = new ExtensionManager( this, mMiniSplitter ); |
1894 | #endif | 1894 | #endif |
1895 | //eh->hide(); | 1895 | //eh->hide(); |
1896 | // topLayout->addWidget(mExtensionManager ); | 1896 | // topLayout->addWidget(mExtensionManager ); |
1897 | 1897 | ||
1898 | 1898 | ||
1899 | /*US | 1899 | /*US |
1900 | #ifndef KAB_NOSPLITTER | 1900 | #ifndef KAB_NOSPLITTER |
1901 | QHBoxLayout *topLayout = new QHBoxLayout( this ); | 1901 | QHBoxLayout *topLayout = new QHBoxLayout( this ); |
1902 | //US topLayout->setSpacing( KDialogBase::spacingHint() ); | 1902 | //US topLayout->setSpacing( KDialogBase::spacingHint() ); |
1903 | topLayout->setSpacing( 10 ); | 1903 | topLayout->setSpacing( 10 ); |
1904 | 1904 | ||
1905 | mDetailsSplitter = new QSplitter( this ); | 1905 | mDetailsSplitter = new QSplitter( this ); |
1906 | 1906 | ||
1907 | QVBox *viewSpace = new QVBox( mDetailsSplitter ); | 1907 | QVBox *viewSpace = new QVBox( mDetailsSplitter ); |
1908 | 1908 | ||
1909 | mViewManager = new ViewManager( this, viewSpace ); | 1909 | mViewManager = new ViewManager( this, viewSpace ); |
1910 | viewSpace->setStretchFactor( mViewManager, 1 ); | 1910 | viewSpace->setStretchFactor( mViewManager, 1 ); |
1911 | 1911 | ||
1912 | mDetails = new ViewContainer( mDetailsSplitter ); | 1912 | mDetails = new ViewContainer( mDetailsSplitter ); |
1913 | 1913 | ||
1914 | topLayout->addWidget( mDetailsSplitter ); | 1914 | topLayout->addWidget( mDetailsSplitter ); |
1915 | topLayout->setStretchFactor( mDetailsSplitter, 100 ); | 1915 | topLayout->setStretchFactor( mDetailsSplitter, 100 ); |
1916 | #else //KAB_NOSPLITTER | 1916 | #else //KAB_NOSPLITTER |
1917 | QHBoxLayout *topLayout = new QHBoxLayout( this ); | 1917 | QHBoxLayout *topLayout = new QHBoxLayout( this ); |
1918 | //US topLayout->setSpacing( KDialogBase::spacingHint() ); | 1918 | //US topLayout->setSpacing( KDialogBase::spacingHint() ); |
1919 | topLayout->setSpacing( 10 ); | 1919 | topLayout->setSpacing( 10 ); |
1920 | 1920 | ||
1921 | // mDetailsSplitter = new QSplitter( this ); | 1921 | // mDetailsSplitter = new QSplitter( this ); |
1922 | 1922 | ||
1923 | QVBox *viewSpace = new QVBox( this ); | 1923 | QVBox *viewSpace = new QVBox( this ); |
1924 | 1924 | ||
1925 | mViewManager = new ViewManager( this, viewSpace ); | 1925 | mViewManager = new ViewManager( this, viewSpace ); |
1926 | viewSpace->setStretchFactor( mViewManager, 1 ); | 1926 | viewSpace->setStretchFactor( mViewManager, 1 ); |
1927 | 1927 | ||
1928 | mDetails = new ViewContainer( this ); | 1928 | mDetails = new ViewContainer( this ); |
1929 | 1929 | ||
1930 | topLayout->addWidget( viewSpace ); | 1930 | topLayout->addWidget( viewSpace ); |
1931 | // topLayout->setStretchFactor( mDetailsSplitter, 100 ); | 1931 | // topLayout->setStretchFactor( mDetailsSplitter, 100 ); |
1932 | topLayout->addWidget( mDetails ); | 1932 | topLayout->addWidget( mDetails ); |
1933 | #endif //KAB_NOSPLITTER | 1933 | #endif //KAB_NOSPLITTER |
1934 | */ | 1934 | */ |
1935 | 1935 | ||
1936 | syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); | 1936 | syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); |
1937 | syncManager->setBlockSave(false); | 1937 | syncManager->setBlockSave(false); |
1938 | 1938 | ||
1939 | connect(syncManager , SIGNAL( request_file(const QString &) ), this, SLOT( syncFileRequest(const QString &) ) ); | 1939 | connect(syncManager , SIGNAL( request_file(const QString &) ), this, SLOT( syncFileRequest(const QString &) ) ); |
1940 | connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); | 1940 | connect(syncManager , SIGNAL( getFile( bool ,const QString &)), this, SLOT(getFile( bool ,const QString &) ) ); |
1941 | QString sync_file = sentSyncFile(); | 1941 | QString sync_file = sentSyncFile(); |
1942 | //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); | 1942 | //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); |
1943 | syncManager->setDefaultFileName( sync_file ); | 1943 | syncManager->setDefaultFileName( sync_file ); |
1944 | //connect(syncManager , SIGNAL( ), this, SLOT( ) ); | 1944 | //connect(syncManager , SIGNAL( ), this, SLOT( ) ); |
1945 | 1945 | ||
1946 | #endif //KAB_EMBEDDED | 1946 | #endif //KAB_EMBEDDED |
1947 | initActions(); | 1947 | initActions(); |
1948 | 1948 | ||
1949 | #ifdef KAB_EMBEDDED | 1949 | #ifdef KAB_EMBEDDED |
1950 | addActionsManually(); | 1950 | addActionsManually(); |
1951 | //US make sure the export and import menues are initialized before creating the xxPortManager. | 1951 | //US make sure the export and import menues are initialized before creating the xxPortManager. |
1952 | mXXPortManager = new XXPortManager( this, this ); | 1952 | mXXPortManager = new XXPortManager( this, this ); |
1953 | 1953 | ||
1954 | // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); | 1954 | // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); |
1955 | //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); | 1955 | //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); |
1956 | // mActionQuit->plug ( mMainWindow->toolBar()); | 1956 | // mActionQuit->plug ( mMainWindow->toolBar()); |
1957 | //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); | 1957 | //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); |
1958 | //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); | 1958 | //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); |
1959 | // mIncSearchWidget->hide(); | 1959 | // mIncSearchWidget->hide(); |
1960 | connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), | 1960 | connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), |
1961 | SLOT( incrementalSearch( const QString& ) ) ); | 1961 | SLOT( incrementalSearch( const QString& ) ) ); |
1962 | connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); | 1962 | connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); |
1963 | connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); | 1963 | connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); |
1964 | 1964 | ||
1965 | mJumpButtonBar = new JumpButtonBar( this, this ); | 1965 | mJumpButtonBar = new JumpButtonBar( this, this ); |
1966 | 1966 | ||
1967 | topLayout->addWidget( mJumpButtonBar ); | 1967 | topLayout->addWidget( mJumpButtonBar ); |
1968 | //US topLayout->setStretchFactor( mJumpButtonBar, 10 ); | 1968 | //US topLayout->setStretchFactor( mJumpButtonBar, 10 ); |
1969 | 1969 | ||
1970 | // mMainWindow->getIconToolBar()->raise(); | 1970 | // mMainWindow->getIconToolBar()->raise(); |
1971 | 1971 | ||
1972 | #endif //KAB_EMBEDDED | 1972 | #endif //KAB_EMBEDDED |
1973 | 1973 | ||
1974 | } | 1974 | } |
1975 | void KABCore::initActions() | 1975 | void KABCore::initActions() |
1976 | { | 1976 | { |
1977 | //US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); | 1977 | //US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); |
1978 | 1978 | ||
1979 | #ifndef KAB_EMBEDDED | 1979 | #ifndef KAB_EMBEDDED |
1980 | connect( QApplication::clipboard(), SIGNAL( dataChanged() ), | 1980 | connect( QApplication::clipboard(), SIGNAL( dataChanged() ), |
1981 | SLOT( clipboardDataChanged() ) ); | 1981 | SLOT( clipboardDataChanged() ) ); |
1982 | #endif //KAB_EMBEDDED | 1982 | #endif //KAB_EMBEDDED |
1983 | 1983 | ||
1984 | // file menu | 1984 | // file menu |
1985 | 1985 | ||
1986 | mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); | 1986 | mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); |
1987 | //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); | 1987 | //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); |
1988 | mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, | 1988 | mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, |
1989 | SLOT( printView() ), actionCollection(), "kaddressbook_print" ); | 1989 | SLOT( printView() ), actionCollection(), "kaddressbook_print" ); |
1990 | 1990 | ||
1991 | 1991 | ||
1992 | mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, | 1992 | mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, |
1993 | SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); | 1993 | SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); |
1994 | 1994 | ||
1995 | mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, | 1995 | mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, |
1996 | SLOT( save() ), actionCollection(), "file_sync" ); | 1996 | SLOT( save() ), actionCollection(), "file_sync" ); |
1997 | 1997 | ||
1998 | mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, | 1998 | mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, |
1999 | SLOT( newContact() ), actionCollection(), "file_new_contact" ); | 1999 | SLOT( newContact() ), actionCollection(), "file_new_contact" ); |
2000 | 2000 | ||
2001 | mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, | 2001 | mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, |
2002 | this, SLOT( mailVCard() ), | 2002 | this, SLOT( mailVCard() ), |
2003 | actionCollection(), "file_mail_vcard"); | 2003 | actionCollection(), "file_mail_vcard"); |
2004 | 2004 | ||
@@ -3399,102 +3399,102 @@ bool KABCore::syncExternal(KSyncManager* manager, QString resource) | |||
3399 | if ( syncOK ) { | 3399 | if ( syncOK ) { |
3400 | if ( syncManager->mWriteBackFile ) { | 3400 | if ( syncManager->mWriteBackFile ) { |
3401 | abLocal.removeSyncAddressees( false ); | 3401 | abLocal.removeSyncAddressees( false ); |
3402 | message(i18n("Saving DTM address data..."),false); | 3402 | message(i18n("Saving DTM address data..."),false); |
3403 | abLocal.saveAB(); | 3403 | abLocal.saveAB(); |
3404 | message(i18n("Sync postprocessing..."),false); | 3404 | message(i18n("Sync postprocessing..."),false); |
3405 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); | 3405 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); |
3406 | } | 3406 | } |
3407 | } else | 3407 | } else |
3408 | message( i18n("Sync cancelled or failed.") ); | 3408 | message( i18n("Sync cancelled or failed.") ); |
3409 | setModified(); | 3409 | setModified(); |
3410 | } | 3410 | } |
3411 | abLocal.removeResources(); | 3411 | abLocal.removeResources(); |
3412 | if ( syncOK ) { | 3412 | if ( syncOK ) { |
3413 | mViewManager->refreshView(); | 3413 | mViewManager->refreshView(); |
3414 | message(i18n("DTM syncing finished.")); | 3414 | message(i18n("DTM syncing finished.")); |
3415 | } | 3415 | } |
3416 | disableBR( false ); | 3416 | disableBR( false ); |
3417 | return syncOK; | 3417 | return syncOK; |
3418 | 3418 | ||
3419 | } | 3419 | } |
3420 | void KABCore::message( QString m, bool startTimer) | 3420 | void KABCore::message( QString m, bool startTimer) |
3421 | { | 3421 | { |
3422 | topLevelWidget()->setCaption( m ); | 3422 | topLevelWidget()->setCaption( m ); |
3423 | qApp->processEvents(); | 3423 | qApp->processEvents(); |
3424 | if ( startTimer ) | 3424 | if ( startTimer ) |
3425 | mMessageTimer->start( 15000, true ); | 3425 | mMessageTimer->start( 15000, true ); |
3426 | else | 3426 | else |
3427 | mMessageTimer->stop(); | 3427 | mMessageTimer->stop(); |
3428 | } | 3428 | } |
3429 | bool KABCore::syncPhone() | 3429 | bool KABCore::syncPhone() |
3430 | { | 3430 | { |
3431 | QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); | 3431 | QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); |
3432 | QString fileName = getPhoneFile(); | 3432 | QString fileName = getPhoneFile(); |
3433 | if ( !PhoneAccess::readFromPhone( fileName) ) { | 3433 | if ( !PhoneAccess::readFromPhone( fileName) ) { |
3434 | message(i18n("Phone access failed!")); | 3434 | message(i18n("Phone access failed!")); |
3435 | return false; | 3435 | return false; |
3436 | } | 3436 | } |
3437 | AddressBook abLocal( fileName,"syncContact"); | 3437 | AddressBook abLocal( fileName,"syncContact"); |
3438 | bool syncOK = false; | 3438 | bool syncOK = false; |
3439 | { | 3439 | { |
3440 | abLocal.importFromFile( fileName ); | 3440 | abLocal.importFromFile( fileName ); |
3441 | qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); | 3441 | qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); |
3442 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3442 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3443 | abLocal.preparePhoneSync( mCurrentSyncDevice, true ); | 3443 | abLocal.preparePhoneSync( mCurrentSyncDevice, true ); |
3444 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); | 3444 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); |
3445 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); | 3445 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); |
3446 | syncManager->hideProgressBar(); | 3446 | syncManager->hideProgressBar(); |
3447 | if ( syncOK ) { | 3447 | if ( syncOK ) { |
3448 | if ( syncManager->mWriteBackFile ) { | 3448 | if ( syncManager->mWriteBackFile ) { |
3449 | abLocal.removeSyncAddressees( true ); | 3449 | abLocal.removeSyncAddressees( true ); |
3450 | abLocal.saveABphone( fileName ); | 3450 | abLocal.saveABphone( fileName ); |
3451 | abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); | 3451 | abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); |
3452 | //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); | 3452 | //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); |
3453 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); | 3453 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); |
3454 | } | 3454 | } |
3455 | } | 3455 | } |
3456 | setModified(); | 3456 | setModified(); |
3457 | } | 3457 | } |
3458 | abLocal.removeResources(); | 3458 | abLocal.removeResources(); |
3459 | if ( syncOK ) | 3459 | if ( syncOK ) |
3460 | mViewManager->refreshView(); | 3460 | mViewManager->refreshView(); |
3461 | return syncOK; | 3461 | return syncOK; |
3462 | } | 3462 | } |
3463 | void KABCore::getFile( bool success ) | 3463 | void KABCore::getFile( bool success ,const QString & resource) |
3464 | { | 3464 | { |
3465 | if ( ! success ) { | 3465 | if ( ! success ) { |
3466 | message( i18n("Error receiving file. Nothing changed!") ); | 3466 | message( i18n("Error receiving file. Nothing changed!") ); |
3467 | return; | 3467 | return; |
3468 | } | 3468 | } |
3469 | int count = mAddressBook->importFromFile( sentSyncFile() , false, true ); | 3469 | int count = mAddressBook->importFromFile( sentSyncFile() , false, true ,resource); |
3470 | if ( count ) | 3470 | if ( count ) |
3471 | setModified( true ); | 3471 | setModified( true ); |
3472 | message( i18n("Pi-Sync successful!") ); | 3472 | message( i18n("Pi-Sync successful!") ); |
3473 | mViewManager->refreshView(); | 3473 | mViewManager->refreshView(); |
3474 | } | 3474 | } |
3475 | void KABCore::syncFileRequest(const QString & resource) | 3475 | void KABCore::syncFileRequest(const QString & resource) |
3476 | { | 3476 | { |
3477 | if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { | 3477 | if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { |
3478 | syncManager->slotSyncMenu( 999 ); | 3478 | syncManager->slotSyncMenu( 999 ); |
3479 | } | 3479 | } |
3480 | 3480 | ||
3481 | if ( resource == "ALL" ) { | 3481 | if ( resource == "ALL" ) { |
3482 | mAddressBook->export2File( sentSyncFile() ); | 3482 | mAddressBook->export2File( sentSyncFile() ); |
3483 | } | 3483 | } |
3484 | else | 3484 | else |
3485 | mAddressBook->export2File( sentSyncFile(), resource); | 3485 | mAddressBook->export2File( sentSyncFile(), resource); |
3486 | } | 3486 | } |
3487 | QString KABCore::sentSyncFile() | 3487 | QString KABCore::sentSyncFile() |
3488 | { | 3488 | { |
3489 | #ifdef DESKTOP_VERSION | 3489 | #ifdef DESKTOP_VERSION |
3490 | return locateLocal( "tmp", "copysyncab.vcf" ); | 3490 | return locateLocal( "tmp", "copysyncab.vcf" ); |
3491 | #else | 3491 | #else |
3492 | return QString( "/tmp/copysyncab.vcf" ); | 3492 | return QString( "/tmp/copysyncab.vcf" ); |
3493 | #endif | 3493 | #endif |
3494 | } | 3494 | } |
3495 | 3495 | ||
3496 | void KABCore::setCaptionBack() | 3496 | void KABCore::setCaptionBack() |
3497 | { | 3497 | { |
3498 | mMessageTimer->stop(); | 3498 | mMessageTimer->stop(); |
3499 | topLevelWidget()->setCaption( i18n("KA/Pi") ); | 3499 | topLevelWidget()->setCaption( i18n("KA/Pi") ); |
3500 | } | 3500 | } |
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h index 2d1505f..e69cb60 100644 --- a/kaddressbook/kabcore.h +++ b/kaddressbook/kabcore.h | |||
@@ -295,129 +295,129 @@ class KABCore : public QWidget, public KSyncInterface | |||
295 | */ | 295 | */ |
296 | 296 | ||
297 | /** | 297 | /** |
298 | Saves the contents of the AddressBook back to disk. | 298 | Saves the contents of the AddressBook back to disk. |
299 | */ | 299 | */ |
300 | void save(); | 300 | void save(); |
301 | 301 | ||
302 | /** | 302 | /** |
303 | Undos the last command using the undo stack. | 303 | Undos the last command using the undo stack. |
304 | */ | 304 | */ |
305 | void undo(); | 305 | void undo(); |
306 | 306 | ||
307 | /** | 307 | /** |
308 | Redos the last command that was undone, using the redo stack. | 308 | Redos the last command that was undone, using the redo stack. |
309 | */ | 309 | */ |
310 | void redo(); | 310 | void redo(); |
311 | 311 | ||
312 | /** | 312 | /** |
313 | Shows the edit dialog for the given uid. If the uid is QString::null, | 313 | Shows the edit dialog for the given uid. If the uid is QString::null, |
314 | the method will try to find a selected addressee in the view. | 314 | the method will try to find a selected addressee in the view. |
315 | */ | 315 | */ |
316 | void editContact( const QString &uid /*US = QString::null*/ ); | 316 | void editContact( const QString &uid /*US = QString::null*/ ); |
317 | //US added a second method without defaultparameter | 317 | //US added a second method without defaultparameter |
318 | void editContact2(); | 318 | void editContact2(); |
319 | 319 | ||
320 | /** | 320 | /** |
321 | Shows or edits the detail view for the given uid. If the uid is QString::null, | 321 | Shows or edits the detail view for the given uid. If the uid is QString::null, |
322 | the method will try to find a selected addressee in the view. | 322 | the method will try to find a selected addressee in the view. |
323 | */ | 323 | */ |
324 | void executeContact( const QString &uid /*US = QString::null*/ ); | 324 | void executeContact( const QString &uid /*US = QString::null*/ ); |
325 | 325 | ||
326 | /** | 326 | /** |
327 | Launches the configuration dialog. | 327 | Launches the configuration dialog. |
328 | */ | 328 | */ |
329 | void openConfigDialog(); | 329 | void openConfigDialog(); |
330 | void openConfigGlobalDialog(); | 330 | void openConfigGlobalDialog(); |
331 | 331 | ||
332 | /** | 332 | /** |
333 | Launches the ldap search dialog. | 333 | Launches the ldap search dialog. |
334 | */ | 334 | */ |
335 | void openLDAPDialog(); | 335 | void openLDAPDialog(); |
336 | 336 | ||
337 | /** | 337 | /** |
338 | Creates a KAddressBookPrinter, which will display the print | 338 | Creates a KAddressBookPrinter, which will display the print |
339 | dialog and do the printing. | 339 | dialog and do the printing. |
340 | */ | 340 | */ |
341 | void print(); | 341 | void print(); |
342 | 342 | ||
343 | /** | 343 | /** |
344 | Registers a new GUI client, so plugins can register its actions. | 344 | Registers a new GUI client, so plugins can register its actions. |
345 | */ | 345 | */ |
346 | void addGUIClient( KXMLGUIClient *client ); | 346 | void addGUIClient( KXMLGUIClient *client ); |
347 | 347 | ||
348 | void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid); | 348 | void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid); |
349 | void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid); | 349 | void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid); |
350 | void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid); | 350 | void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid); |
351 | 351 | ||
352 | 352 | ||
353 | signals: | 353 | signals: |
354 | void contactSelected( const QString &name ); | 354 | void contactSelected( const QString &name ); |
355 | void contactSelected( const QPixmap &pixmap ); | 355 | void contactSelected( const QPixmap &pixmap ); |
356 | public slots: | 356 | public slots: |
357 | void loadDataAfterStart(); | 357 | void loadDataAfterStart(); |
358 | void recieve(QString cmsg ); | 358 | void recieve(QString cmsg ); |
359 | void getFile( bool success ); | 359 | void getFile( bool success,const QString & ); |
360 | void syncFileRequest(const QString &); | 360 | void syncFileRequest(const QString &); |
361 | void setDetailsVisible( bool visible ); | 361 | void setDetailsVisible( bool visible ); |
362 | void setDetailsToState(); | 362 | void setDetailsToState(); |
363 | 363 | ||
364 | void saveSettings(); | 364 | void saveSettings(); |
365 | 365 | ||
366 | private slots: | 366 | private slots: |
367 | void updateToolBar(); | 367 | void updateToolBar(); |
368 | void updateMainWindow(); | 368 | void updateMainWindow(); |
369 | void receive( const QCString& cmsg, const QByteArray& data ); | 369 | void receive( const QCString& cmsg, const QByteArray& data ); |
370 | void receiveStart( const QCString& cmsg, const QByteArray& data ); | 370 | void receiveStart( const QCString& cmsg, const QByteArray& data ); |
371 | void toggleBeamReceive( ); | 371 | void toggleBeamReceive( ); |
372 | void disableBR(bool); | 372 | void disableBR(bool); |
373 | void setJumpButtonBarVisible( bool visible ); | 373 | void setJumpButtonBarVisible( bool visible ); |
374 | void setJumpButtonBar( bool visible ); | 374 | void setJumpButtonBar( bool visible ); |
375 | void setCaptionBack(); | 375 | void setCaptionBack(); |
376 | void resizeAndCallContactdialog(); | 376 | void resizeAndCallContactdialog(); |
377 | void callContactdialog(); | 377 | void callContactdialog(); |
378 | void doRingSync(); | 378 | void doRingSync(); |
379 | 379 | ||
380 | void importFromOL(); | 380 | void importFromOL(); |
381 | void extensionModified( const KABC::Addressee::List &list ); | 381 | void extensionModified( const KABC::Addressee::List &list ); |
382 | void extensionChanged( int id ); | 382 | void extensionChanged( int id ); |
383 | void clipboardDataChanged(); | 383 | void clipboardDataChanged(); |
384 | void updateActionMenu(); | 384 | void updateActionMenu(); |
385 | void configureKeyBindings(); | 385 | void configureKeyBindings(); |
386 | void removeVoice(); | 386 | void removeVoice(); |
387 | void setFormattedName(); | 387 | void setFormattedName(); |
388 | #ifdef KAB_EMBEDDED | 388 | #ifdef KAB_EMBEDDED |
389 | void configureResources(); | 389 | void configureResources(); |
390 | #endif //KAB_EMBEDDED | 390 | #endif //KAB_EMBEDDED |
391 | 391 | ||
392 | void slotEditorDestroyed( const QString &uid ); | 392 | void slotEditorDestroyed( const QString &uid ); |
393 | void configurationChanged(); | 393 | void configurationChanged(); |
394 | void addressBookChanged(); | 394 | void addressBookChanged(); |
395 | 395 | ||
396 | private: | 396 | private: |
397 | QCString mCStringMess; | 397 | QCString mCStringMess; |
398 | QByteArray mByteData; | 398 | QByteArray mByteData; |
399 | QString mEmailSourceChannel; | 399 | QString mEmailSourceChannel; |
400 | QString mEmailSourceUID; | 400 | QString mEmailSourceUID; |
401 | void resizeEvent(QResizeEvent* e ); | 401 | void resizeEvent(QResizeEvent* e ); |
402 | bool mBRdisabled; | 402 | bool mBRdisabled; |
403 | #ifndef DESKTOP_VERSION | 403 | #ifndef DESKTOP_VERSION |
404 | QCopChannel* infrared; | 404 | QCopChannel* infrared; |
405 | #endif | 405 | #endif |
406 | QTimer *mMessageTimer; | 406 | QTimer *mMessageTimer; |
407 | void initGUI(); | 407 | void initGUI(); |
408 | void initActions(); | 408 | void initActions(); |
409 | QString getPhoneFile(); | 409 | QString getPhoneFile(); |
410 | 410 | ||
411 | AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, | 411 | AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, |
412 | const char *name = 0 ); | 412 | const char *name = 0 ); |
413 | 413 | ||
414 | KXMLGUIClient *mGUIClient; | 414 | KXMLGUIClient *mGUIClient; |
415 | 415 | ||
416 | KABC::AddressBook *mAddressBook; | 416 | KABC::AddressBook *mAddressBook; |
417 | 417 | ||
418 | ViewManager *mViewManager; | 418 | ViewManager *mViewManager; |
419 | // QSplitter *mDetailsSplitter; | 419 | // QSplitter *mDetailsSplitter; |
420 | KDGanttMinimizeSplitter *mExtensionBarSplitter; | 420 | KDGanttMinimizeSplitter *mExtensionBarSplitter; |
421 | ViewContainer *mDetails; | 421 | ViewContainer *mDetails; |
422 | KDGanttMinimizeSplitter* mMiniSplitter; | 422 | KDGanttMinimizeSplitter* mMiniSplitter; |
423 | XXPortManager *mXXPortManager; | 423 | XXPortManager *mXXPortManager; |
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index e615cbe..7197b30 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp | |||
@@ -380,130 +380,130 @@ void KSyncManager::enableQuick( bool ask ) | |||
380 | QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); | 380 | QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); |
381 | #endif | 381 | #endif |
382 | lay.addWidget( &syncdesktop); | 382 | lay.addWidget( &syncdesktop); |
383 | #else | 383 | #else |
384 | mPrefs->mPassiveSyncWithDesktop = false; | 384 | mPrefs->mPassiveSyncWithDesktop = false; |
385 | QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); | 385 | QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); |
386 | syncdesktop.hide(); | 386 | syncdesktop.hide(); |
387 | #endif | 387 | #endif |
388 | syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); | 388 | syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); |
389 | 389 | ||
390 | QPushButton pb ( "OK", &dia); | 390 | QPushButton pb ( "OK", &dia); |
391 | lay.addWidget( &pb ); | 391 | lay.addWidget( &pb ); |
392 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | 392 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); |
393 | dia.resize( 230,120 ); | 393 | dia.resize( 230,120 ); |
394 | dia.setCaption( i18n("Enter port for Pi-Sync") ); | 394 | dia.setCaption( i18n("Enter port for Pi-Sync") ); |
395 | dia.show(); | 395 | dia.show(); |
396 | #ifndef DESKTOP_VERSION | 396 | #ifndef DESKTOP_VERSION |
397 | int dw = QApplication::desktop()->width(); | 397 | int dw = QApplication::desktop()->width(); |
398 | int dh = QApplication::desktop()->height(); | 398 | int dh = QApplication::desktop()->height(); |
399 | dia.move( (dw-dia.width())/2, (dh - dia.height() )/2 ); | 399 | dia.move( (dw-dia.width())/2, (dh - dia.height() )/2 ); |
400 | #endif | 400 | #endif |
401 | if ( ! dia.exec() ) | 401 | if ( ! dia.exec() ) |
402 | return; | 402 | return; |
403 | dia.hide(); | 403 | dia.hide(); |
404 | qApp->processEvents(); | 404 | qApp->processEvents(); |
405 | if ( mPrefs->mPassiveSyncPw != lepw.text() ) { | 405 | if ( mPrefs->mPassiveSyncPw != lepw.text() ) { |
406 | changed = true; | 406 | changed = true; |
407 | mPrefs->mPassiveSyncPw = lepw.text(); | 407 | mPrefs->mPassiveSyncPw = lepw.text(); |
408 | } | 408 | } |
409 | if ( mPrefs->mPassiveSyncPort != lab.text() ) { | 409 | if ( mPrefs->mPassiveSyncPort != lab.text() ) { |
410 | mPrefs->mPassiveSyncPort = lab.text(); | 410 | mPrefs->mPassiveSyncPort = lab.text(); |
411 | changed = true; | 411 | changed = true; |
412 | } | 412 | } |
413 | autoStart = autostart.isChecked(); | 413 | autoStart = autostart.isChecked(); |
414 | if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { | 414 | if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { |
415 | changed = true; | 415 | changed = true; |
416 | mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); | 416 | mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); |
417 | } | 417 | } |
418 | } | 418 | } |
419 | else | 419 | else |
420 | autoStart = mPrefs->mPassiveSyncAutoStart; | 420 | autoStart = mPrefs->mPassiveSyncAutoStart; |
421 | if ( autoStart != mPrefs->mPassiveSyncAutoStart ) | 421 | if ( autoStart != mPrefs->mPassiveSyncAutoStart ) |
422 | changed = true; | 422 | changed = true; |
423 | bool ok; | 423 | bool ok; |
424 | mPrefs->mPassiveSyncAutoStart = false; | 424 | mPrefs->mPassiveSyncAutoStart = false; |
425 | Q_UINT32 port_t = mPrefs->mPassiveSyncPort.toUInt(&ok); | 425 | Q_UINT32 port_t = mPrefs->mPassiveSyncPort.toUInt(&ok); |
426 | if ( ! ok || port_t > 65535 ) { | 426 | if ( ! ok || port_t > 65535 ) { |
427 | KMessageBox::information( 0, i18n("No valid port number:\n%1").arg ( mPrefs->mPassiveSyncPort ), i18n("Pi-Sync Port Error")); | 427 | KMessageBox::information( 0, i18n("No valid port number:\n%1").arg ( mPrefs->mPassiveSyncPort ), i18n("Pi-Sync Port Error")); |
428 | return; | 428 | return; |
429 | } | 429 | } |
430 | Q_UINT16 port = port_t; | 430 | Q_UINT16 port = port_t; |
431 | //qDebug("port %d ", port); | 431 | //qDebug("port %d ", port); |
432 | mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); | 432 | mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); |
433 | mServerSocket->setFileName( defaultFileName() );//bbb | 433 | mServerSocket->setFileName( defaultFileName() );//bbb |
434 | if ( !mServerSocket->ok() ) { | 434 | if ( !mServerSocket->ok() ) { |
435 | QTimer::singleShot( 2000, this, SLOT ( displayErrorPort() ) ); | 435 | QTimer::singleShot( 2000, this, SLOT ( displayErrorPort() ) ); |
436 | delete mServerSocket; | 436 | delete mServerSocket; |
437 | mServerSocket = 0; | 437 | mServerSocket = 0; |
438 | return; | 438 | return; |
439 | } | 439 | } |
440 | mPrefs->mPassiveSyncAutoStart = autoStart; | 440 | mPrefs->mPassiveSyncAutoStart = autoStart; |
441 | if ( changed ) { | 441 | if ( changed ) { |
442 | mPrefs->writeConfig(); | 442 | mPrefs->writeConfig(); |
443 | } | 443 | } |
444 | connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); | 444 | //connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); |
445 | connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); | 445 | //connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); |
446 | connect( mServerSocket, SIGNAL ( request_file(const QString &) ),this, SIGNAL ( request_file(const QString &) ) ); | 446 | connect( mServerSocket, SIGNAL ( request_file(const QString &) ),this, SIGNAL ( request_file(const QString &) ) ); |
447 | connect( mServerSocket, SIGNAL ( file_received( bool ,const QString &) ), this, SIGNAL ( getFile( bool,const QString & ) ) ); | 447 | connect( mServerSocket, SIGNAL ( file_received( bool ,const QString &) ), this, SIGNAL ( getFile( bool,const QString & ) ) ); |
448 | } | 448 | } |
449 | void KSyncManager::displayErrorPort() | 449 | void KSyncManager::displayErrorPort() |
450 | { | 450 | { |
451 | KMessageBox::information( 0, i18n("<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?").arg( mPrefs->mPassiveSyncPort) , i18n("Pi-Sync Port Error")); | 451 | KMessageBox::information( 0, i18n("<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?").arg( mPrefs->mPassiveSyncPort) , i18n("Pi-Sync Port Error")); |
452 | } | 452 | } |
453 | void KSyncManager::syncLocalFile() | 453 | void KSyncManager::syncLocalFile() |
454 | { | 454 | { |
455 | 455 | ||
456 | QString fn =mPrefs->mLastSyncedLocalFile; | 456 | QString fn =mPrefs->mLastSyncedLocalFile; |
457 | QString ext; | 457 | QString ext; |
458 | 458 | ||
459 | switch(mTargetApp) | 459 | switch(mTargetApp) |
460 | { | 460 | { |
461 | case (KAPI): | 461 | case (KAPI): |
462 | ext = "(*.vcf)"; | 462 | ext = "(*.vcf)"; |
463 | break; | 463 | break; |
464 | case (KOPI): | 464 | case (KOPI): |
465 | ext = "(*.ics/*.vcs)"; | 465 | ext = "(*.ics/*.vcs)"; |
466 | break; | 466 | break; |
467 | case (PWMPI): | 467 | case (PWMPI): |
468 | ext = "(*.pwm)"; | 468 | ext = "(*.pwm)"; |
469 | break; | 469 | break; |
470 | default: | 470 | default: |
471 | qDebug("KSM::syncLocalFile: invalid apptype selected"); | 471 | qDebug("KSM::syncLocalFile: invalid apptype selected"); |
472 | break; | 472 | break; |
473 | 473 | ||
474 | } | 474 | } |
475 | 475 | ||
476 | fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); | 476 | fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); |
477 | if ( fn == "" ) | 477 | if ( fn == "" ) |
478 | return; | 478 | return; |
479 | if ( syncWithFile( fn, false ) ) { | 479 | if ( syncWithFile( fn, false ) ) { |
480 | qDebug("KSM::syncLocalFile() successful "); | 480 | qDebug("KSM::syncLocalFile() successful "); |
481 | } | 481 | } |
482 | 482 | ||
483 | } | 483 | } |
484 | 484 | ||
485 | bool KSyncManager::syncWithFile( QString fn , bool quick ) | 485 | bool KSyncManager::syncWithFile( QString fn , bool quick ) |
486 | { | 486 | { |
487 | bool ret = false; | 487 | bool ret = false; |
488 | QFileInfo info; | 488 | QFileInfo info; |
489 | info.setFile( fn ); | 489 | info.setFile( fn ); |
490 | QString mess; | 490 | QString mess; |
491 | if ( !info. exists() ) { | 491 | if ( !info. exists() ) { |
492 | mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); | 492 | mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); |
493 | QMessageBox::warning( mParent, i18n("Warning!"), | 493 | QMessageBox::warning( mParent, i18n("Warning!"), |
494 | mess ); | 494 | mess ); |
495 | return ret; | 495 | return ret; |
496 | } | 496 | } |
497 | int result = 0; | 497 | int result = 0; |
498 | if ( !quick ) { | 498 | if ( !quick ) { |
499 | mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); | 499 | mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); |
500 | result = QMessageBox::warning( mParent, i18n("Warning!"), | 500 | result = QMessageBox::warning( mParent, i18n("Warning!"), |
501 | mess, | 501 | mess, |
502 | i18n("Sync"), i18n("Cancel"), 0, | 502 | i18n("Sync"), i18n("Cancel"), 0, |
503 | 0, 1 ); | 503 | 0, 1 ); |
504 | if ( result ) | 504 | if ( result ) |
505 | return false; | 505 | return false; |
506 | } | 506 | } |
507 | if ( mAskForPreferences ) | 507 | if ( mAskForPreferences ) |
508 | if ( !edit_sync_options()) { | 508 | if ( !edit_sync_options()) { |
509 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | 509 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); |