summaryrefslogtreecommitdiffabout
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
parente0e3d743a6b61eaac023c9f284362ab08337da05 (diff)
downloadkdepimpi-2de4aeb0272fa7d96a55332196a11e52b2f27539.zip
kdepimpi-2de4aeb0272fa7d96a55332196a11e52b2f27539.tar.gz
kdepimpi-2de4aeb0272fa7d96a55332196a11e52b2f27539.tar.bz2
preparations for dynamic import/export module loading
Diffstat (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
@@ -20,38 +20,42 @@
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 <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"
#include "xxportselectdialog.h"
#include "xxportmanager.h"
KURL XXPortManager::importURL = KURL();
QString XXPortManager::importData = QString::null;
@@ -163,96 +167,68 @@ void XXPortManager::slotExport( const QString &identifier, const QString &data )
}
void XXPortManager::loadPlugins()
{
mXXPortObjects.clear();
#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,
name, true, true )
{
QWidget *page = plainPage();
QVBoxLayout *layout = new QVBoxLayout( page, marginHint(), spacingHint() );
KPIM::AddresseeView *view = new KPIM::AddresseeView( page );
diff --git a/kaddressbook/xxportobject.h b/kaddressbook/xxportobject.h
index d697700..fddc219 100644
--- a/kaddressbook/xxportobject.h
+++ b/kaddressbook/xxportobject.h
@@ -27,27 +27,25 @@ Copyright (c) 2004 Ulf Schenk
$Id$
*/
#ifndef XXPORTOBJECT_H
#define XXPORTOBJECT_H
#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
public:
XXPortObject( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
~XXPortObject();
/**
Returns the unique identifier of this xxport modul, it should
@@ -113,45 +111,27 @@ class XXPortObject : public QObject, virtual public KXMLGUIClient
private slots:
void slotImportActivated( const QString& );
void slotExportActivated( const QString& );
private:
KABC::AddressBook *mAddressBook;
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;
protected:
virtual QObject* createObject( QObject*, const char*, const char*,
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