Diffstat (limited to 'kabc/plugins/qtopia/resourceqtopia.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kabc/plugins/qtopia/resourceqtopia.cpp | 101 |
1 files changed, 81 insertions, 20 deletions
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp index deb218b..b7263bb 100644 --- a/kabc/plugins/qtopia/resourceqtopia.cpp +++ b/kabc/plugins/qtopia/resourceqtopia.cpp @@ -32,2 +32,3 @@ $Id$ #include <qfile.h> +#include <qtextstream.h> #include <qfileinfo.h> @@ -92,4 +93,2 @@ ResourceQtopia::~ResourceQtopia() - if(mAccess != 0) - delete mAccess; } @@ -122,9 +121,2 @@ bool ResourceQtopia::doOpen() - mAccess = new AddressBookAccess(); - - if ( !mAccess ) { - qDebug("Unable to load file() %s", fileName().latin1()); - return false; - } - @@ -138,4 +130,2 @@ bool ResourceQtopia::doOpen() qDebug(msg); - delete mAccess; - mAccess = 0; return false; @@ -151,7 +141,3 @@ void ResourceQtopia::doClose() - if(mAccess) - { - delete mAccess; - mAccess = 0; - } + // it seems so, that deletion of access deletes backend as well @@ -164,2 +150,43 @@ bool ResourceQtopia::load() { + + QFile file( fileName() ); + if ( !file.open(IO_ReadOnly ) ) { + return false; + } + + QDomDocument doc("mydocument" ); + if ( !doc.setContent( &file ) ) { + file.close(); + return false; + } + bool res; + QDomElement docElem = doc.documentElement( ); + QDomNode n = docElem.firstChild(); + while ( !n.isNull() ) { + QDomElement e = n.toElement(); + if ( !e.isNull() ) { + if ( e.tagName() == QString::fromLatin1( "Contacts" ) ) { // we're looking for them + QDomNode no = e.firstChild(); + while ( !no.isNull() ) { + QDomElement el = no.toElement(); + if ( !el.isNull() ) { + KABC::Addressee addressee; + res = mConverter->qtopiaToAddressee( el, addressee ); + if ( !addressee.isEmpty() && res ) + { + addressee.setResource( this ); + addressBook()->insertAddressee( addressee ); + } + } + + no = no.nextSibling(); + } + } + } + + n = n.nextSibling(); + } + +#if 0 +/ old code qDebug("ResourceQtopia::load: %s", fileName().latin1()); @@ -176,3 +203,3 @@ bool ResourceQtopia::load() - res = mConverter->qtopiaToAddressee( (*contact), addressee ); + //LRres = mConverter->qtopiaToAddressee( (*contact), addressee ); @@ -184,3 +211,3 @@ bool ResourceQtopia::load() } - +#endif return true; @@ -190,2 +217,36 @@ bool ResourceQtopia::save( Ticket *ticket ) { + + mDirWatch.stopScan(); + KABC::AddressBook::Iterator it; + bool res; + //pending open file for stream + QTextStream *stream;// = tempFile->textStream(); + stream->setEncoding( QTextStream::UnicodeUTF8 ); + *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>" << endl; + *stream << " <Groups>" << endl; + *stream << " </Groups>" << endl; + *stream << " <Contacts> " << endl; + // for all entries + KABC::Addressee ab; + for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { + KABC::Addressee addressee = (*it); + res = mConverter->addresseeToQtopia( addressee, stream ); + if (!res == true) + { + qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1()); + } + } + + + *stream << "</Contacts>" << endl; + *stream << "</AddressBook>" << endl; + //pending close file + mDirWatch.startScan(); + + delete ticket; + unlock( fileName() ); + + +#if 0 + //old code qDebug("ResourceQtopia::save: %s", fileName().latin1()); @@ -201,3 +262,3 @@ bool ResourceQtopia::save( Ticket *ticket ) - res = mConverter->addresseeToQtopia( *it, c ); + //res = mConverter->addresseeToQtopia( *it, c ); if (res == true) @@ -220,3 +281,3 @@ bool ResourceQtopia::save( Ticket *ticket ) unlock( fileName() ); - +#endif return true; |