summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2004-10-07 09:56:31 (UTC)
committer zautrix <zautrix>2004-10-07 09:56:31 (UTC)
commitedd36b813763c304b104f276437c2c60ee9bd1f1 (patch) (side-by-side diff)
treeda3a9f6fbd905fe876131af5025690806ce60704 /kabc
parent9345818e9c291130691288e4b065190259eb4e01 (diff)
downloadkdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.zip
kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.tar.gz
kdepimpi-edd36b813763c304b104f276437c2c60ee9bd1f1.tar.bz2
sync fixes
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp70
-rw-r--r--kabc/addressbook.h5
2 files changed, 67 insertions, 8 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 5fb49eb..295cf03 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -37,15 +37,20 @@ $Id$
#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;
@@ -369,8 +374,56 @@ bool AddressBook::save( Ticket *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;
@@ -460,9 +513,9 @@ 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;
@@ -477,12 +530,17 @@ void AddressBook::insertAddressee( const Addressee &a, bool setRev )
Addressee addr = a;
if ( addr != (*it) )
changed = true;
- (*it) = a;
- if ( (*it).resource() == 0 )
- (*it).setResource( standardResource() );
-
+ 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
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index 8f62f0d..3603ec1 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -141,9 +141,10 @@ class AddressBook : public QObject
@param ticket a ticket object returned by @ref requestSaveTicket()
*/
bool save( Ticket *ticket );
bool saveAB( );
-
+ void export2File( QString fileName );
+ void importFromFile( QString fileName );
/**
Returns a iterator for first entry of address book.
*/
Iterator begin();
@@ -172,9 +173,9 @@ class AddressBook : public QObject
Insert an Addressee object into address book. If an object with the same
unique id already exists in the address book it it replaced by the new
one. If not the new object is appended to the address book.
*/
- void insertAddressee( const Addressee &, bool setRev = true );
+ void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false);
/**
Removes entry from the address book.
*/