Diffstat (limited to 'kaddressbook/xxportobject.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/xxportobject.cpp | 106 |
1 files changed, 103 insertions, 3 deletions
diff --git a/kaddressbook/xxportobject.cpp b/kaddressbook/xxportobject.cpp index bb985a6..4351753 100644 --- a/kaddressbook/xxportobject.cpp +++ b/kaddressbook/xxportobject.cpp @@ -33,11 +33,14 @@ $Id$ #include <kaction.h> #include <kmessagebox.h> +#include <factory.h> #include "kabcore.h" - +#include "addressee.h" +#include "tmpaddressbook.h" #include "xxportobject.h" + class XXPortObject::XXPortObjectPrivate { public: @@ -154,20 +157,117 @@ void XXPortObject::slotImportActivated( const QString &data ) XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) - : XXPortObject( ab, parent, name ), mResource(0) + : XXPortObject( ab, parent, name ), mFactory(0) { + mFactory = KRES::Factory::self( "tmpcontact" ); } XXPortResourceObject::~XXPortResourceObject() { + //do not delete the factory. It is a singleton, and selfcontained } bool XXPortResourceObject::isAvailable() { - return (mResource != 0); + return (mFactory != 0); } +bool XXPortResourceObject::_exportContacts( const KABC::AddresseeList &list, const QString& identifier, const QString& fileName ) +{ + //create new resource + KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0, false )); + + if (mResource == 0) + return false; + + if (fileName != QString::null) + mResource->setFileName( fileName ); + + + KABC::TmpAddressBook tmpAB; + + bool res = tmpAB.addResource( mResource ); + if (res == false) + { + delete mResource; + return false; + } + + res = tmpAB.load(); + if (res == false) + { + //removeResource deletes also the resource object, if the linkcount is 0 + tmpAB.removeResource( mResource ); + return false; + } + + + //Now check if the file has already entries, and ask the user if he wants to delete them first. + if (tmpAB.begin() != tmpAB.end()) + { + QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) ); + if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) { + // Clean the database.. + tmpAB.clear(); + } + } + + + KABC::Addressee::List::ConstIterator it; + for ( it = list.begin(); it != list.end(); ++it ) { + tmpAB.insertAddressee(*it); + } + + KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource); + + res = false; + if (ticket != 0) + res = tmpAB.save( ticket ); + + //removeResource deletes also the resource object, if the linkcount is 0 + tmpAB.removeResource( mResource ); + + return res; +} + + +KABC::AddresseeList XXPortResourceObject::_importContacts( const QString& identifier, const QString& fileName ) const +{ + + + KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0, false )); + + if (mResource == 0) + return KABC::AddresseeList(); + + KABC::AddresseeList adrlst; + + if (fileName != QString::null) + mResource->setFileName( fileName ); + + + KABC::TmpAddressBook tmpAB; + + bool res = tmpAB.addResource( mResource ); + if (res == false) + { + delete mResource; + return KABC::AddresseeList(); + } + + res = tmpAB.load(); + + adrlst = tmpAB.allAddressees(); + + //remove resource deletes also the Resourceobject, if the linkcount is 0 + tmpAB.removeResource( mResource ); + + return adrlst; +} + + + #ifndef KAB_EMBEDDED #include "xxportobject.moc" #endif //KAB_EMBEDDED |