summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Side-by-side diff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxportmanager.cpp78
-rw-r--r--kaddressbook/xxportobject.h20
2 files changed, 27 insertions, 71 deletions
diff --git a/kaddressbook/xxportmanager.cpp b/kaddressbook/xxportmanager.cpp
index 6cfa9cb..20cde49 100644
--- a/kaddressbook/xxportmanager.cpp
+++ b/kaddressbook/xxportmanager.cpp
@@ -26,26 +26,30 @@ Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <qlayout.h>
+#include <qlist.h>
#include <kabc/addressbook.h>
#include <kabc/resource.h>
#include <kdebug.h>
#include <kdialogbase.h>
#include <klocale.h>
#include <kmessagebox.h>
#ifndef KAB_EMBEDDED
#include <ktrader.h>
#else //KAB_EMBEDDED
-#include "xxport/csv_xxport.h"
-#include "xxport/kde2_xxport.h"
-#include "xxport/vcard_xxport.h"
+extern "C"
+{
+ void* init_kaddrbk_csv_xxport();
+ void* init_kaddrbk_kde2_xxport();
+ void* init_kaddrbk_vcard_xxport();
+}
#endif //KAB_EMBEDDED
#include <libkdepim/addresseeview.h>
#include "kabcore.h"
#include "undocmds.h"
@@ -169,84 +173,56 @@ void XXPortManager::loadPlugins()
#ifndef KAB_EMBEDDED
KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/XXPort" );
KTrader::OfferList::ConstIterator it;
for ( it = plugins.begin(); it != plugins.end(); ++it ) {
if ( !(*it)->hasServiceType( "KAddressBook/XXPort" ) )
continue;
-
+
KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
if ( !factory ) {
kdDebug(5720) << "XXPortManager::loadExtensions(): Factory creation failed" << endl;
continue;
}
XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
if ( !xxportFactory ) {
kdDebug(5720) << "XXPortManager::loadExtensions(): Cast failed" << endl;
continue;
}
+
+#else //KAB_EMBEDDED
+ QList<XXPortFactory> factorylist;
+ factorylist.append(static_cast<XXPortFactory*>(init_kaddrbk_csv_xxport()));
+ factorylist.append(static_cast<XXPortFactory*>(init_kaddrbk_kde2_xxport()));
+ factorylist.append(static_cast<XXPortFactory*>(init_kaddrbk_vcard_xxport()));
+
+ //now add the opie import library dynamically
+ KLibFactory *factory = KLibLoader::self()->factory( "kaddrbk_opie_xxport" );
+ if ( factory ) {
+ XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
+ factorylist.append(xxportFactory);
+ }
+
+ QListIterator<XXPortFactory> it(factorylist);
+ for ( ; it.current(); ++it )
+ {
+ XXPortFactory *xxportFactory = it.current();
+#endif //KAB_EMBEDDED
XXPortObject *obj = xxportFactory->xxportObject( mCore->addressBook(), mCore );
if ( obj ) {
mCore->addGUIClient( obj );
mXXPortObjects.insert( obj->identifier(), obj );
connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ),
this, SLOT( slotExport( const QString&, const QString& ) ) );
connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ),
this, SLOT( slotImport( const QString&, const QString& ) ) );
}
}
-#else //KAB_EMBEDDED
-//lets load the export/import stubs directly. Is dynamic loading necessary for KA/Pi?
-
- // CVS import/export
- XXPortFactory *xxportFactory = new CSVXXPortFactory();
-
- XXPortObject *obj = xxportFactory->xxportObject( mCore->addressBook(), mCore );
- if ( obj ) {
- mCore->addGUIClient( obj );
- mXXPortObjects.insert( obj->identifier(), obj );
- connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ),
- this, SLOT( slotExport( const QString&, const QString& ) ) );
- connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ),
- this, SLOT( slotImport( const QString&, const QString& ) ) );
- }
-
-
-
- // KDE2 import/export
- xxportFactory = new KDE2XXPortFactory();
-
- obj = xxportFactory->xxportObject( mCore->addressBook(), mCore );
- if ( obj ) {
- mCore->addGUIClient( obj );
- mXXPortObjects.insert( obj->identifier(), obj );
- connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ),
- this, SLOT( slotExport( const QString&, const QString& ) ) );
- connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ),
- this, SLOT( slotImport( const QString&, const QString& ) ) );
- }
-
-
-
- // VCARD import/export
- xxportFactory = new VCardXXPortFactory();
-
- obj = xxportFactory->xxportObject( mCore->addressBook(), mCore );
- if ( obj ) {
- mCore->addGUIClient( obj );
- mXXPortObjects.insert( obj->identifier(), obj );
- connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ),
- this, SLOT( slotExport( const QString&, const QString& ) ) );
- connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ),
- this, SLOT( slotImport( const QString&, const QString& ) ) );
- }
-#endif //KAB_EMBEDDED
-
}
PreviewDialog::PreviewDialog( const KABC::Addressee &addr, QWidget *parent,
const char *name )
: KDialogBase( Plain, i18n( "Contact Preview" ), Ok | Cancel, Ok, parent,
diff --git a/kaddressbook/xxportobject.h b/kaddressbook/xxportobject.h
index d697700..fddc219 100644
--- a/kaddressbook/xxportobject.h
+++ b/kaddressbook/xxportobject.h
@@ -33,15 +33,13 @@ $Id$
#include <qobject.h>
#include <kabc/addressbook.h>
#include <kabc/addresseelist.h>
#include <kxmlguiclient.h>
-#ifndef KAB_EMBEDDED
#include <klibloader.h>
-#endif //KAB_EMBEDDED
class XXPortObject : public QObject, virtual public KXMLGUIClient
{
Q_OBJECT
@@ -119,13 +117,12 @@ class XXPortObject : public QObject, virtual public KXMLGUIClient
QWidget *mParentWidget;
class XXPortObjectPrivate;
XXPortObjectPrivate *d;
};
-#ifndef KAB_EMBEDDED
class XXPortFactory : public KLibFactory
{
public:
virtual XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent,
const char *name = 0 ) = 0;
@@ -134,24 +131,7 @@ class XXPortFactory : public KLibFactory
const QStringList & )
{
return 0;
}
};
-#else //KAB_EMBEDDED
-class XXPortFactory
-{
- public:
- virtual XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent,
- const char *name = 0 ) = 0;
-
- protected:
- virtual QObject* createObject( QObject*, const char*, const char*,
- const QStringList & )
- {
- return 0;
- }
-};
-#endif //KAB_EMBEDDED
-
-
#endif