summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxportobject.cpp
Side-by-side diff
Diffstat (limited to 'kaddressbook/xxportobject.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxportobject.cpp106
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