summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxportmanager.cpp
authorulf69 <ulf69>2004-06-30 21:59:48 (UTC)
committer ulf69 <ulf69>2004-06-30 21:59:48 (UTC)
commit2de4aeb0272fa7d96a55332196a11e52b2f27539 (patch) (side-by-side diff)
treed455673832ac53a085cd3f280f60c11d12d45f83 /kaddressbook/xxportmanager.cpp
parente0e3d743a6b61eaac023c9f284362ab08337da05 (diff)
downloadkdepimpi-2de4aeb0272fa7d96a55332196a11e52b2f27539.zip
kdepimpi-2de4aeb0272fa7d96a55332196a11e52b2f27539.tar.gz
kdepimpi-2de4aeb0272fa7d96a55332196a11e52b2f27539.tar.bz2
preparations for dynamic import/export module loading
Diffstat (limited to 'kaddressbook/xxportmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxportmanager.cpp78
1 files changed, 27 insertions, 51 deletions
diff --git a/kaddressbook/xxportmanager.cpp b/kaddressbook/xxportmanager.cpp
index 6cfa9cb..20cde49 100644
--- a/kaddressbook/xxportmanager.cpp
+++ b/kaddressbook/xxportmanager.cpp
@@ -29,6 +29,7 @@ $Id$
*/
#include <qlayout.h>
+#include <qlist.h>
#include <kabc/addressbook.h>
#include <kabc/resource.h>
@@ -40,9 +41,12 @@ $Id$
#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>
@@ -172,7 +176,7 @@ void XXPortManager::loadPlugins()
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;
@@ -185,6 +189,25 @@ void XXPortManager::loadPlugins()
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 ) {
@@ -197,53 +220,6 @@ void XXPortManager::loadPlugins()
}
}
-#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
-
}