author | zautrix <zautrix> | 2004-10-07 09:56:31 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-07 09:56:31 (UTC) |
commit | edd36b813763c304b104f276437c2c60ee9bd1f1 (patch) (side-by-side diff) | |
tree | da3a9f6fbd905fe876131af5025690806ce60704 /kabc/addressbook.cpp | |
parent | 9345818e9c291130691288e4b065190259eb4e01 (diff) | |
download | kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.zip kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.tar.gz kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.tar.bz2 |
sync fixes
-rw-r--r-- | kabc/addressbook.cpp | 64 |
1 files changed, 61 insertions, 3 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index 5fb49eb..295cf03 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -35,19 +35,24 @@ $Id$ #include <kinstance.h> #include <kstandarddirs.h> #include "errorhandler.h" */ #include <qptrlist.h> +#include <qtextstream.h> +#include <qfile.h> #include <kglobal.h> -#include <klocale.h> +#include <klocale.h>> +#include <kmessagebox.h> #include <kdebug.h> #include <libkcal/syncdefines.h> #include "addressbook.h" #include "resource.h" +#include "vcardconverter.h" +#include "vcardparser/vcardtool.h" //US #include "addressbook.moc" using namespace KABC; struct AddressBook::AddressBookData @@ -367,12 +372,60 @@ bool AddressBook::save( Ticket *ticket ) deleteRemovedAddressees(); return ticket->resource()->save( ticket ); } return false; } +void AddressBook::export2File( QString fileName ) +{ + + QFile outFile( fileName ); + if ( !outFile.open( IO_WriteOnly ) ) { + QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" ); + KMessageBox::error( 0, text.arg( fileName ) ); + return ; + } + QTextStream t( &outFile ); + t.setEncoding( QTextStream::UnicodeUTF8 ); + Iterator it; + KABC::VCardConverter::Version version; + version = KABC::VCardConverter::v3_0; + for ( it = begin(); it != end(); ++it ) { + if ( !(*it).IDStr().isEmpty() ) { + (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() ); + } + KABC::VCardConverter converter; + QString vcard; + //Resource *resource() const; + converter.addresseeToVCard( *it, vcard, version ); + t << vcard << "\r\n"; + } + outFile.close(); +} +void AddressBook::importFromFile( QString fileName ) +{ + + KABC::Addressee::List list; + QFile file( fileName ); + + file.open( IO_ReadOnly ); + QByteArray rawData = file.readAll(); + file.close(); + + QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); + KABC::VCardTool tool; + list = tool.parseVCards( data ); + + KABC::Addressee::List::Iterator it; + for ( it = list.begin(); it != list.end(); ++it ) { + (*it).setResource( 0 ); + insertAddressee( (*it), false, true ); + } + +} + bool AddressBook::saveAB() { bool ok = true; deleteRemovedAddressees(); Iterator ait; @@ -458,13 +511,13 @@ Ticket *AddressBook::requestSaveTicket( Resource *resource ) } } return 0; } -void AddressBook::insertAddressee( const Addressee &a, bool setRev ) +void AddressBook::insertAddressee( const Addressee &a, bool setRev, bool takeResource ) { if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { //qDebug("block insert "); return; } //qDebug("inserting.... %s ",a.uid().latin1() ); @@ -475,16 +528,21 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev ) bool changed = false; Addressee addr = a; if ( addr != (*it) ) changed = true; + if ( takeResource ) { + Resource * res = (*it).resource(); + (*it) = a; + (*it).setResource( res ); + } else { (*it) = a; if ( (*it).resource() == 0 ) (*it).setResource( standardResource() ); - + } if ( changed ) { if ( setRev ) { // get rid of micro seconds QDateTime dt = QDateTime::currentDateTime(); QTime t = dt.time(); |