summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorulf69 <ulf69>2004-08-03 20:49:15 (UTC)
committer ulf69 <ulf69>2004-08-03 20:49:15 (UTC)
commitbe52d7d03e57620919b23cb0cbb33ac22d0920e0 (patch) (side-by-side diff)
tree34e8e29a221c828424126694f865d702c7635f97 /kaddressbook
parentd5358380edce9a2c39f3eea4df741a148338880c (diff)
downloadkdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.zip
kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.tar.gz
kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.tar.bz2
hopefully last modifications of resource based export/import functionality
for opie, qtopia and sharpdtm
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/opie_xxport.cpp120
-rw-r--r--kaddressbook/xxport/opie_xxport.h4
-rw-r--r--kaddressbook/xxport/qtopia_xxport.cpp225
-rw-r--r--kaddressbook/xxport/sharpdtm_xxport.cpp228
-rw-r--r--kaddressbook/xxport/sharpdtm_xxport.h2
-rw-r--r--kaddressbook/xxportobject.cpp106
-rw-r--r--kaddressbook/xxportobject.h9
7 files changed, 137 insertions, 557 deletions
diff --git a/kaddressbook/xxport/opie_xxport.cpp b/kaddressbook/xxport/opie_xxport.cpp
index 192b803..7b29b0a 100644
--- a/kaddressbook/xxport/opie_xxport.cpp
+++ b/kaddressbook/xxport/opie_xxport.cpp
@@ -22,53 +22,27 @@
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <qdir.h>
#include <kfiledialog.h>
-#include <kmessagebox.h>
-
-//US #include <opie/ocontactaccess.h>
-//US #include <opie/ocontactaccessbackend_xml.h>
-
-//US #include "stdaddressbook.h"
-#include "resource.h"
-#include "tmpaddressbook.h"
-
-/*US
-#include <qfile.h>
-#include <qtextstream.h>
-
-#include <kabc/vcardconverter.h>
-#ifndef KAB_EMBEDDED
-#include <kio/netaccess.h>
-#endif //KAB_EMBEDDED
-
-#include <klocale.h>
-#include <kmessagebox.h>
-#include <ktempfile.h>
-#include <kurl.h>
-*/
-
-#include <factory.h>
-
+#include "addressee.h"
#include "xxportmanager.h"
-
#include "opie_xxport.h"
/*US
class OpieXXPortFactory : public XXPortFactory
{
public:
XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
{
return new OpieXXPort( ab, parent, name );
}
};
*/
@@ -79,117 +53,39 @@ extern "C"
void *init_microkaddrbk_opie_xxport()
{
return ( new OpieXXPortFactory() );
}
}
OpieXXPort::OpieXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
: XXPortResourceObject( ab, parent, name )
{
defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
- KRES::Factory* mFactory = KRES::Factory::self( "contact" );
-
- if ( mFactory )
+ if ( mFactory && !mFactory->typeName( "opie" ).isEmpty() )
{
- mResource = (KABC::Resource*)(mFactory->resource( "opie", 0, false ));
-
- if ( mResource )
- {
- createImportAction( i18n( "Import Opie..." ) );
- createExportAction( i18n( "Export Opie..." ) );
- }
+ createImportAction( i18n( "Import Opie..." ) );
+ createExportAction( i18n( "Export Opie..." ) );
}
}
-bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
+bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString &identifier )
{
- if (mResource == 0)
- return false;
-
QString fileName = KFileDialog::getSaveFileName( defaultFileName, i18n("Save file"), parentWidget() );
if ( fileName.isEmpty() )
return false;
- mResource->setFileName( fileName );
-
-
- KABC::TmpAddressBook tmpAB;
-
- tmpAB.addResource( mResource );
-
- qDebug("11111");
-
- //Now check if the file has already entries, and ask the user if he wants to delete them first.
- KABC::AddressBook::Iterator it2 = tmpAB.begin();
- for ( it2 = tmpAB.begin(); it2 != tmpAB.end(); ++it2 ) {
- KABC::Addressee addressee = (*it2);
- qDebug("found %s", addressee.formattedName().latin1());
- }
-
- if (it2 != 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();
- }
- }
- qDebug("22222");
-
-//US debug
- QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
- QPtrListIterator<KABC::Resource> resIt( kabcResources );
- KABC::Resource *resource;
- while ( ( resource = resIt.current() ) != 0 ) {
- ++resIt;
- qDebug("tmpAB has resource: %s", resource->identifier().latin1());
- }
-
-
- KABC::Addressee::List::ConstIterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- tmpAB.insertAddressee(*it);
- }
-
- bool res = false;
- KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource);
-
- if (ticket != 0)
- res = tmpAB.save( ticket );
-
- tmpAB.removeResource( mResource );
-
- return res;
+ return _exportContacts( list, identifier, fileName );
}
-KABC::AddresseeList OpieXXPort::importContacts( const QString& ) const
+KABC::AddresseeList OpieXXPort::importContacts( const QString &identifier ) const
{
- if (mResource == 0)
- return KABC::AddresseeList();
-
- KABC::AddresseeList adrlst;
-
QString fileName = KFileDialog::getOpenFileName( defaultFileName, i18n("Load file"), parentWidget() );
if ( fileName.isEmpty() )
return KABC::AddresseeList();
- mResource->setFileName( fileName );
-
-
- KABC::TmpAddressBook tmpAB;
-
- tmpAB.addResource( mResource );
-
- bool res = tmpAB.load();
-
- adrlst = tmpAB.allAddressees();
-
- tmpAB.removeResource( mResource );
-
- return adrlst;
-
+ return _importContacts( identifier, fileName );
}
diff --git a/kaddressbook/xxport/opie_xxport.h b/kaddressbook/xxport/opie_xxport.h
index 106f38b..d2b55cd 100644
--- a/kaddressbook/xxport/opie_xxport.h
+++ b/kaddressbook/xxport/opie_xxport.h
@@ -37,26 +37,26 @@ $Id$
class KABC::Resource;
class OpieXXPort : public XXPortResourceObject
{
Q_OBJECT
public:
OpieXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
QString identifier() const { return "opie"; }
public slots:
- bool exportContacts( const KABC::AddresseeList &list, const QString &data );
- KABC::AddresseeList importContacts( const QString &data ) const;
+ bool exportContacts( const KABC::AddresseeList &list, const QString &identifier );
+ KABC::AddresseeList importContacts( const QString &identifier ) const;
private:
QString defaultFileName;
};
class OpieXXPortFactory : public XXPortFactory
{
public:
XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
{
diff --git a/kaddressbook/xxport/qtopia_xxport.cpp b/kaddressbook/xxport/qtopia_xxport.cpp
index 8377cd5..0cf6546 100644
--- a/kaddressbook/xxport/qtopia_xxport.cpp
+++ b/kaddressbook/xxport/qtopia_xxport.cpp
@@ -21,49 +21,26 @@
without including the source code for Qt in the source distribution.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <qdir.h>
-#include <kfiledialog.h>
-#include <kmessagebox.h>
-
-//US #include <qpe/pim/addressbookaccess.h>
-
-#include "addressbook.h"
-
-/*US
-#include <qfile.h>
-#include <qtextstream.h>
-
-#include <kabc/vcardconverter.h>
-#ifndef KAB_EMBEDDED
-#include <kio/netaccess.h>
-#endif //KAB_EMBEDDED
-
-#include <klocale.h>
-#include <kmessagebox.h>
-#include <ktempfile.h>
-#include <kurl.h>
-*/
-
+#include "addressee.h"
#include "xxportmanager.h"
-//US #include "qtopiaconverter.h"
-
#include "qtopia_xxport.h"
/*US
class QtopiaXXPortFactory : public XXPortFactory
{
public:
XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
{
return new QtopiaXXPort( ab, parent, name );
}
};
*/
@@ -74,214 +51,28 @@ extern "C"
{
return ( new QtopiaXXPortFactory() );
}
}
QtopiaXXPort::QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
: XXPortResourceObject( ab, parent, name )
{
defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
- KRES::Factory* mFactory = KRES::Factory::self( "contact" );
-
- if ( mFactory )
+ if ( mFactory && !mFactory->typeName( "qtopia" ).isEmpty() )
{
- mResource = (KABC::Resource*)(mFactory->resource( "qtopia", 0, false ));
-
- if ( mResource )
- {
- createImportAction( i18n( "Import Qtopia..." ) );
- createExportAction( i18n( "Export Qtopia..." ) );
- }
+ createImportAction( i18n( "Import Qtopia..." ) );
+ createExportAction( i18n( "Export Qtopia..." ) );
}
}
-bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
+bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &identifier )
{
-/*US
- // we can not choose the filename. Therefore use the default to display
- QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
-
- AddressBookAccess* access = new AddressBookAccess();
-
- if ( !access ) {
- QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
- qDebug(text.latin1());
- KMessageBox::error( parentWidget(), text );
- addressBook()->error( text );
- return false;
- }
-
- KABC::QtopiaConverter mConverter;
-
- bool res = mConverter.init();
- if (!res)
- {
- QString text( i18n( "Unable to initialize qtopia converter.<br>Most likely a problem with the category file." ) );
- qDebug(text);
- KMessageBox::error( parentWidget(), text );
- delete access;
- return false;
- }
-
- //Now check if the file has already entries, and ask the user if he wants to delete them first.
- { //create a new scope
- AddressBookIterator it(*access);
- const PimContact* firstcontact = it.toFirst();
- if (firstcontact)
- {
- 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..
-
- AddressBookIterator it2(*access);
- for (it2.toFirst(); it2.current(); ++it2) {
- access->removeContact(*it2.current());
- }
- }
- }
- }
-
- KABC::Addressee::List::ConstIterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- PimContact c;
-
- res = mConverter.addresseeToQtopia( *it, c );
- if (res == true)
- {
- access->addContact(c);
- }
- }
-
- delete access;
-
- return true;
-*/
-
- if (mResource == 0)
- return false;
-
- QString fileName = defaultFileName;
-
-
- mResource->setFileName( fileName );
-
- //Now check if the file has already entries, and ask the user if he wants to delete them first.
- if (mResource->count() > 0)
- {
- 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.
- mResource->clear();
- }
- }
-
- KABC::AddressBook tmpAB;
-
- tmpAB.addResource( mResource );
-
-//US debug
- QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
- QPtrListIterator<KABC::Resource> resIt( kabcResources );
- KABC::Resource *resource;
- while ( ( resource = resIt.current() ) != 0 ) {
- ++resIt;
- qDebug("tmpAB has resource: %s", resource->identifier().latin1());
- }
-
-
- KABC::Addressee::List::ConstIterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- tmpAB.insertAddressee(*it);
- }
-
- KABC::Ticket * ticket = mResource->requestSaveTicket();
- return tmpAB.save( ticket );
-
-
-
+ return _exportContacts( list, identifier, defaultFileName );
}
-KABC::AddresseeList QtopiaXXPort::importContacts( const QString& ) const
+KABC::AddresseeList QtopiaXXPort::importContacts( const QString &identifier ) const
{
-/*US
- KABC::AddresseeList adrlst;
-
- QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
-
- AddressBookAccess* access = new AddressBookAccess();
-
- if ( !access ) {
- QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
- qDebug(text.latin1());
- addressBook()->error( text );
- KMessageBox::error( parentWidget(), text );
- return KABC::AddresseeList();
- }
-
- KABC::QtopiaConverter mConverter;
-
- bool res = mConverter.init();
- if (!res)
- {
- QString text( i18n( "Unable to initialize qtopia converter.<br>Most likely a problem with the category file." ) );
- qDebug(text);
- KMessageBox::error( parentWidget(), text );
- delete access;
- return KABC::AddresseeList();
- }
-
-
-
- { //create a new scope
- AddressBookIterator it(*access);
-
- for (it.toFirst(); it.current(); ++it) {
- const PimContact*contact = it.current();
-
- KABC::Addressee addressee;
-
- res = mConverter.qtopiaToAddressee( (*contact), addressee );
-
- if ( !addressee.isEmpty() && res )
- {
- adrlst.append( addressee );
- }
- }
- }
-
- delete access;
-//US the deletion of the access object deletes the backend object as well.
-
- return adrlst;
-*/
-
- if (mResource == 0)
- return KABC::AddresseeList();
-
- KABC::AddresseeList adrlst;
-
- QString fileName = defaultFileName;
-
- mResource->setFileName( fileName );
-
-
- KABC::AddressBook tmpAB;
-
- tmpAB.addResource( mResource );
-
-//US debug
- QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
- QPtrListIterator<KABC::Resource> resIt( kabcResources );
- KABC::Resource *resource;
- while ( ( resource = resIt.current() ) != 0 ) {
- ++resIt;
- qDebug("tmpAB has resource: %s", resource->identifier().latin1());
- }
-
- bool res = tmpAB.load();
-
- return tmpAB.allAddressees();
-
+ return _importContacts( identifier, defaultFileName );
}
diff --git a/kaddressbook/xxport/sharpdtm_xxport.cpp b/kaddressbook/xxport/sharpdtm_xxport.cpp
index 8c2e07a..130bc00 100644
--- a/kaddressbook/xxport/sharpdtm_xxport.cpp
+++ b/kaddressbook/xxport/sharpdtm_xxport.cpp
@@ -19,266 +19,54 @@
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
-#include <qdir.h>
-
-#include <kfiledialog.h>
-#include <kmessagebox.h>
-
-//US #include <sl/slzdb.h>
-
-#include "addressbook.h"
-
-/*US
-#include <qfile.h>
-#include <qtextstream.h>
-
-#include <kabc/vcardconverter.h>
-#ifndef KAB_EMBEDDED
-#include <kio/netaccess.h>
-#endif //KAB_EMBEDDED
-
-#include <klocale.h>
-#include <kmessagebox.h>
-#include <ktempfile.h>
-#include <kurl.h>
-*/
-
+#include "addressee.h"
#include "xxportmanager.h"
-
#include "sharpdtm_xxport.h"
/*US
class SharpDTMXXPortFactory : public XXPortFactory
{
public:
XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
{
return new SharpDTMXXPort( ab, parent, name );
}
};
*/
extern "C"
{
void *init_microkaddrbk_sharpdtm_xxport()
{
return ( new SharpDTMXXPortFactory() );
}
}
SharpDTMXXPort::SharpDTMXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
: XXPortResourceObject( ab, parent, name )
{
- KRES::Factory* mFactory = KRES::Factory::self( "contact" );
-
- if ( mFactory )
+ if ( mFactory && !mFactory->typeName( "sharpdtm" ).isEmpty() )
{
- mResource = (KABC::Resource*)(mFactory->resource( "sharpdtm", 0, false ));
- if ( mResource )
- {
- createImportAction( i18n( "Import Sharp..." ) );
- createExportAction( i18n( "Export Sharp..." ) );
- }
+ createImportAction( i18n( "Import Sharp..." ) );
+ createExportAction( i18n( "Export Sharp..." ) );
}
}
-bool SharpDTMXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
+bool SharpDTMXXPort::exportContacts( const KABC::AddresseeList &list, const QString &identifier )
{
-/*US
- // we can not choose the filename. Therefore use the default to display
- QString fileName = SlZDataBase::addressbookFileName();
-
- SlZDataBase* access = new SlZDataBase(fileName,
- SlZDataBase::addressbookItems());
-
- if ( !access ) {
- QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
- qDebug(text.latin1());
- KMessageBox::error( parentWidget(), text );
- addressBook()->error( text );
- return false;
- }
-
- KABC::SharpDTMConverter mConverter;
-
- bool res = mConverter.init();
- if (!res)
- {
- QString text( i18n( "Unable to initialize sharpdtm converter.<br>Most likely a problem with the category file." ) );
- qDebug(text);
- KMessageBox::error( parentWidget(), text );
- delete access;
- return false;
- }
-
- //Now check if the file has already entries, and ask the user if he wants to delete them first.
- if (access->count() > 0)
- {
- 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..
- access->deleteCard(0, SlZDataBase::AllCard );
- }
- }
-
- KABC::Addressee::List::ConstIterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- CardId c;
- res = access->editNewCard();
-
- if (res == true)
- {
- res = mConverter.addresseeToSharp( *it, access, c );
-
- if (res == true)
- access->finishEditCard(&c);
- else
- access->cancelEditCard();
- }
- }
-
- delete access;
-
- return true;
-*/
-
- if (mResource == 0)
- return false;
-
- // we can not choose the filename. Therefore use the default to display
- QString fileName = mResource->fileName();
-
- if ( fileName.isEmpty() )
- return false;
-
- //Now check if the file has already entries, and ask the user if he wants to delete them first.
- if (mResource->count() > 0)
- {
- 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..
- mResource->clear();
- }
- }
-
- KABC::AddressBook tmpAB;
-
- tmpAB.addResource( mResource );
-
-//US debug
- QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
- QPtrListIterator<KABC::Resource> resIt( kabcResources );
- KABC::Resource *resource;
- while ( ( resource = resIt.current() ) != 0 ) {
- ++resIt;
- qDebug("tmpAB has resource: %s", resource->identifier().latin1());
- }
-
-
- KABC::Addressee::List::ConstIterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- tmpAB.insertAddressee(*it);
- }
-
- KABC::Ticket * ticket = mResource->requestSaveTicket();
- return tmpAB.save( ticket );
-
-
+ return _exportContacts( list, identifier, QString::null );
}
-KABC::AddresseeList SharpDTMXXPort::importContacts( const QString& ) const
+KABC::AddresseeList SharpDTMXXPort::importContacts( const QString &identifier ) const
{
-/*US
- KABC::AddresseeList adrlst;
-
- QString fileName = SlZDataBase::addressbookFileName();
-
- // the last parameter in the SlZDataBase constructor means "readonly"
- SlZDataBase* access = new SlZDataBase(fileName,
- SlZDataBase::addressbookItems(), NULL, true);
-
-
- if ( !access ) {
- QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
- qDebug(text.latin1());
- addressBook()->error( text );
- KMessageBox::error( parentWidget(), text );
- return KABC::AddresseeList();
- }
-
- KABC::SharpDTMConverter mConverter;
-
- bool res = mConverter.init();
- if (!res)
- {
- QString text( i18n( "Unable to initialize sharp converter.<br>Most likely a problem with the category file." ) );
- qDebug(text);
- KMessageBox::error( parentWidget(), text );
- delete access;
- return KABC::AddresseeList();
- }
-
-
- { //create a new scope
- CardId id;
-
- for (bool res=access->first(); res == true; res=access->next()) {
- id = access->cardId();
-
- KABC::Addressee addressee;
-
- res = mConverter.sharpToAddressee( id, access, addressee );
-
- if ( !addressee.isEmpty() && res )
- {
- adrlst.append( addressee );
- }
- }
- }
-
- delete access;
-
- return adrlst;
-*/
-
- if (mResource == 0)
- return KABC::AddresseeList();
-
- KABC::AddresseeList adrlst;
-
- QString fileName = mResource->fileName();
-
- if ( fileName.isEmpty() )
- return KABC::AddresseeList();
-
- mResource->setFileName( fileName );
-
-
- KABC::AddressBook tmpAB;
-
- tmpAB.addResource( mResource );
-
-//US debug
- QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
- QPtrListIterator<KABC::Resource> resIt( kabcResources );
- KABC::Resource *resource;
- while ( ( resource = resIt.current() ) != 0 ) {
- ++resIt;
- qDebug("tmpAB has resource: %s", resource->identifier().latin1());
- }
-
- bool res = tmpAB.load();
-
- return tmpAB.allAddressees();
-
-
+ return _importContacts( identifier, QString::null );
}
diff --git a/kaddressbook/xxport/sharpdtm_xxport.h b/kaddressbook/xxport/sharpdtm_xxport.h
index 43fd434..0797b01 100644
--- a/kaddressbook/xxport/sharpdtm_xxport.h
+++ b/kaddressbook/xxport/sharpdtm_xxport.h
@@ -31,25 +31,25 @@ $Id$
#ifndef SHARPDTM_XXPORT_H
#define SHARPDTM_XXPORT_H
#include <xxportobject.h>
class SharpDTMXXPort : public XXPortResourceObject
{
Q_OBJECT
public:
SharpDTMXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
- QString identifier() const { return "qtopia"; }
+ QString identifier() const { return "sharpdtm"; }
public slots:
bool exportContacts( const KABC::AddresseeList &list, const QString &data );
KABC::AddresseeList importContacts( const QString &data ) const;
};
class SharpDTMXXPortFactory : public XXPortFactory
{
public:
XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
{
diff --git a/kaddressbook/xxportobject.cpp b/kaddressbook/xxportobject.cpp
index bb985a6..4351753 100644
--- a/kaddressbook/xxportobject.cpp
+++ b/kaddressbook/xxportobject.cpp
@@ -24,29 +24,32 @@
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <qmap.h>
#include <qsignalmapper.h>
#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:
QSignalMapper *mExportMapper;
QSignalMapper *mImportMapper;
};
XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent,
const char *name )
: QObject( parent, name ), mAddressBook( ab ), mParentWidget( parent ),
d( new XXPortObjectPrivate )
{
@@ -145,29 +148,126 @@ void XXPortObject::slotExportActivated( const QString &data )
void XXPortObject::slotImportActivated( const QString &data )
{
emit importActivated( identifier(), ( data == "<empty>" ? QString::null : 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
diff --git a/kaddressbook/xxportobject.h b/kaddressbook/xxportobject.h
index d547855..de39b9f 100644
--- a/kaddressbook/xxportobject.h
+++ b/kaddressbook/xxportobject.h
@@ -31,25 +31,25 @@ $Id$
#ifndef XXPORTOBJECT_H
#define XXPORTOBJECT_H
#include <qobject.h>
#include <kabc/addressbook.h>
#include <kabc/addresseelist.h>
#include <kabc/resource.h>
#include <kxmlguiclient.h>
#include <klibloader.h>
-
+class KRES::Factory;
class XXPortObject : public QObject, virtual public KXMLGUIClient
{
Q_OBJECT
public:
XXPortObject( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
~XXPortObject();
/**
Returns the unique identifier of this xxport modul, it should
@@ -137,26 +137,31 @@ class XXPortResourceObject : public XXPortObject
{
Q_OBJECT
public:
XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
~XXPortResourceObject();
/**
Returns true if the XXPortObject can be used.
One case it can not be used is for example if a needed lib could not be loaded.
*/
virtual bool isAvailable();
+
+ protected:
+ bool _exportContacts( const KABC::AddresseeList &list, const QString& identifier, const QString& fileName );
+ KABC::AddresseeList _importContacts( const QString& identifier, const QString& fileName ) const;
+
protected:
- KABC::Resource* mResource;
+ KRES::Factory* mFactory;
};
class XXPortFactory : public KLibFactory
{
public:
virtual XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent,
const char *name = 0 ) = 0;
protected: