KDE/kdepim/kmobiletools/kmobiletools

View: New views
2 Messages — Rating Filter:   Alert me  

KDE/kdepim/kmobiletools/kmobiletools

by Jaroslaw Staniek-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

SVN commit 784004 by staniek:

Port plugin interface to KDE4 in KMobileTools and KitchenSync

Use KDE4's K_PLUGIN_FACTORY and K_EXPORT_PLUGIN instead of KDE3's
K_EXPORT_COMPONENT_FACTORY, what means not only porting but fixing bugs
related to loading KDE3-like plugins on Windows.

Also:
- simplify the code a bit in device loader and service loader using foreach()



 M  +2 -14     engines/at_engine/at_engine.cpp  
 M  +0 -13     engines/at_engine/at_engine.h  
 M  +8 -4      engines/fake_engine/fakeengine.cpp  
 M  +4 -2      engines/fake_engine/fakeengine.h  
 M  +11 -13    libkmobiletools/deviceloader.cpp  
 M  +5 -4      libkmobiletools/engine.cpp  
 M  +11 -10    libkmobiletools/serviceloader.cpp  
 M  +2 -2      mainpart/kmobiletools_mainpart.cpp  
 M  +8 -5      mainpart/services/addressbook/addressbook.cpp  
 M  +3 -2      mainpart/services/addressbook/addressbook.h  


--- trunk/KDE/kdepim/kmobiletools/kmobiletools/engines/at_engine/at_engine.cpp #784003:784004
@@ -78,23 +78,11 @@
         KMobileTools::Engine::queryClose();
 }
 
-K_EXPORT_COMPONENT_FACTORY( kmobiletools_at, AT_EngineFactory )
 
+K_PLUGIN_FACTORY( AT_EngineFactory, registerPlugin<AT_Engine>(); )
+K_EXPORT_PLUGIN( AT_EngineFactory("kmobiletools_at") )
 
-AT_EngineFactory::AT_EngineFactory()
-{
-}
-AT_EngineFactory::~AT_EngineFactory()
-{
-}
-AT_Engine *AT_EngineFactory::createObject(QObject *parent, const char * /*classname*/, const QStringList &/*args*/ )
-{
-    return new AT_Engine(parent); /// @TODO we have to specify engine name, perhaps in args
-}
 
-
-
-
 /*!
     \fn AT_Engine::probePhone()
  */
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/engines/at_engine/at_engine.h #784003:784004
@@ -133,17 +133,4 @@
     void foundDeviceData(FindDeviceDataJob*);
 };
 
-
-class AT_EngineFactory : public KLibFactory
-{
-   Q_OBJECT
-public:
-    AT_EngineFactory();
-    virtual ~AT_EngineFactory();
-    virtual AT_Engine* createObject( QObject *parent, const char *classname, const QStringList &args );
-
-private:
-};
-
-
 #endif
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/engines/fake_engine/fakeengine.cpp #784003:784004
@@ -307,9 +307,10 @@
     status( QString( "Enqueued addressee \"%1\" to be removed." ).arg( addressee.name() ) );
 }
 
-K_EXPORT_COMPONENT_FACTORY( kmobiletools_fake, FakeEngineFactory )
+K_EXPORT_PLUGIN( FakeEngineFactory )
 
 FakeEngineFactory::FakeEngineFactory()
+ : KPluginFactory("kmobiletools_fake")
 {
 }
 
@@ -317,10 +318,13 @@
 {
 }
 
-FakeEngine *FakeEngineFactory::createObject(QObject *parent, const char *classname, const QStringList& args)
+QObject *FakeEngineFactory::create(
+  const char *iface, QWidget *parentWidget, QObject *parent, const QVariantList &args, const QString &keyword )
 {
-    Q_UNUSED(classname)
-    QString deviceName = args.at( 0 );
+    Q_UNUSED(iface)
+    Q_UNUSED(parentWidget)
+    Q_UNUSED(keyword)
+    QString deviceName = args.at( 0 ).toString();
     return new FakeEngine( parent, deviceName );
 }
 
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/engines/fake_engine/fakeengine.h #784003:784004
@@ -163,13 +163,15 @@
 
 };
 
-class FakeEngineFactory : public KLibFactory
+class FakeEngineFactory : public KPluginFactory
 {
    Q_OBJECT
 public:
     FakeEngineFactory();
     virtual ~FakeEngineFactory();
-    virtual FakeEngine* createObject( QObject *parent, const char *classname, const QStringList &args );
+
+    vitual QObject *create(
+        const char *iface, QWidget *parentWidget, QObject *parent, const QVariantList &args, const QString &keyword );
 };
 
 #endif
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/libkmobiletools/deviceloader.cpp #784003:784004
@@ -85,33 +85,31 @@
         return false;
 
     // check if a there's a suitable engine service in the list
-    int serviceNumber = 0;
-    bool engineFound = false;
-    for( ; serviceNumber < d->m_engineOffers.size(); serviceNumber++ ) {
-        if( d->m_engineOffers.at( serviceNumber )->name() == engineName ) {
-            engineFound = true;
+    KService::Ptr engineService;
+    foreach( KService::Ptr engineOffer, d->m_engineOffers ) {
+        if( engineOffer->name() == engineName ) {
+            engineService = engineOffer;
             break;
         }
     }
 
     // no suitable engine available?
-    if( !engineFound )
+    if( engineService.isNull() )
         return false;
 
     // try to load the engine
-    QStringList argDeviceName( deviceName );
 
- // get a reference to the service
- const KService& engineService = *d->m_engineOffers.at( serviceNumber ).constData();
- KPluginLoader pluginLoader( engineService );
-
  // create the engine instance
- KMobileTools::EngineXP* engine = pluginLoader.factory()->create<KMobileTools::EngineXP>((QObject*)0, argDeviceName );
+    KPluginFactory *factory = KPluginLoader pluginLoader( *engineService ).factory();
+    if( !factory )
+        return false;
+    QStringList argDeviceName( deviceName );
+ KMobileTools::EngineXP* engine = factory->create<KMobileTools::EngineXP>((QObject*)0, argDeviceName );
     if( !engine )
         return false;
 
     // retrieve information about the engine
-    d->m_engineInformation.insert( deviceName, KPluginInfo( d->m_engineOffers.at( serviceNumber ) ) );
+    d->m_engineInformation.insert( deviceName, KPluginInfo( engineService ) );
 
     d->m_loadedDevices.insert( deviceName, engine );
     emit deviceLoaded( deviceName );
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/libkmobiletools/engine.cpp #784003:784004
@@ -214,13 +214,14 @@
 Engine *Engine::load(const QString &libname, QObject *parent)
 {
     kDebug() <<"Engine::load(" << libname <<")";
-    KLibFactory *factory=KLibLoader::self()->factory(qPrintable(libname));
+    KPluginLoader loader(libname);
+    KPluginFactory *factory=loader.factory();
     if(!factory) {
-        kDebug() <<"Error loading library:" << KLibLoader::self()->lastErrorMessage();
+        kDebug() <<"Error loading library:" << loader.errorString();
         return NULL;
     }
-    Engine *ret=static_cast<KMobileTools::Engine *>(factory->create(parent, "KMobileTools::Engine" ) );
-    if(parent) ret->setObjectName(parent->objectName());
+    Engine *ret=factory->create<KMobileTools::Engine>(parent);
+    if(ret && parent) ret->setObjectName(parent->objectName());
     return ret;
 }
 
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/libkmobiletools/serviceloader.cpp #784003:784004
@@ -86,27 +86,28 @@
         return;
 
     // iterate over the services and look which one we can use
-    KMobileTools::CoreService* service;
     QStringList deviceNameList;
     deviceNameList << deviceName;
-    for( int i=0; i<serviceOffers.size(); i++ ) {
- // get a reference to the service
- const KService& coreService = *serviceOffers.at( i ).constData();
- KPluginLoader pluginLoader( coreService );
-
- QObject* serviceObject = pluginLoader.factory()->create<KMobileTools::CoreService>((QObject*)0, deviceNameList );
+    foreach( KService::Ptr coreService, serviceOffers ) {
+        // get a reference to the service
+        KPluginFactory *factory = KPluginLoader( *coreService ).factory();
+        if( !factory )
+            continue;
+ QObject* serviceObject = factory->create<KMobileTools::CoreService>((QObject*)0, deviceNameList );
         if( !serviceObject )
             continue;
 
-        service = qobject_cast<KMobileTools::CoreService*>( serviceObject );
+        KMobileTools::CoreService* service = qobject_cast<KMobileTools::CoreService*>( serviceObject );
         if( !service )
             continue;
 
         bool fulfillsRequirements = true;
         QStringList requirements = service->requires();
-        for( int j=0; j<requirements.size(); j++ ) {
-            if( !engine->implements( requirements.at(i) ) )
+        foreach( const QString& requirement, requirements ) {
+            if( !engine->implements( requirement ) ) {
                 fulfillsRequirements = false;
+                break;
+            }
         }
 
         // service fulfills our requirements
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/mainpart/kmobiletools_mainpart.cpp #784003:784004
@@ -81,8 +81,8 @@
 #include "jobqueueview/jobqueueview.h"
 #include "jobqueueview/jobitem.h"
 
-typedef KParts::GenericFactory<kmobiletoolsMainPart> kmobiletoolsMainPartFactory;
-K_EXPORT_COMPONENT_FACTORY( kmobiletoolsmainpart, kmobiletoolsMainPartFactory )
+K_PLUGIN_FACTORY( kmobiletoolsMainPartFactory, registerPlugin<kmobiletoolsMainPart>(); )
+K_EXPORT_PLUGIN( kmobiletoolsMainPartFactory )
 
 KAboutData *kmobiletoolsMainPart::createAboutData()
 {
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/mainpart/services/addressbook/addressbook.cpp #784003:784004
@@ -319,9 +319,10 @@
     }
 }
 
-K_EXPORT_COMPONENT_FACTORY( libkmtaddressbook_service, AddressbookFactory )
+K_EXPORT_PLUGIN( AddressbookFactory )
 
 AddressbookFactory::AddressbookFactory()
+ : KPluginFactory("libkmtaddressbook_service")
 {
 }
 
@@ -329,11 +330,13 @@
 {
 }
 
-Addressbook *AddressbookFactory::createObject(QObject *parent, const char *classname, const QStringList& args)
+QObject *AddressbookFactory::create(
+  const char *iface, QWidget *parentWidget, QObject *parent, const QVariantList &args, const QString &keyword )
 {
-    Q_UNUSED(classname)
-    QStringList arguments( args );
-    return new Addressbook( parent, arguments.at(0) );
+    Q_UNUSED(iface)
+    Q_UNUSED(parentWidget)
+    Q_UNUSED(keyword)
+    return new Addressbook( parent, args.at(0).toString() );
 }
 
 #include "addressbook.moc"
--- trunk/KDE/kdepim/kmobiletools/kmobiletools/mainpart/services/addressbook/addressbook.h #784003:784004
@@ -155,13 +155,14 @@
     QAction* m_deleteContact;
 };
 
-class AddressbookFactory : public KLibFactory
+class AddressbookFactory : public KPluginFactory
 {
    Q_OBJECT
 public:
     AddressbookFactory();
     virtual ~AddressbookFactory();
-    virtual Addressbook* createObject( QObject *parent, const char *classname, const QStringList &args );
+    virtual QObject *create(
+        const char *iface, QWidget *parentWidget, QObject *parent, const QVariantList &args, const QString &keyword );
 };
 
 #endif
_______________________________________________
kmobiletools mailing list
kmobiletools@...
https://mail.kde.org/mailman/listinfo/kmobiletools

Parent Message unknown Re: KDE/kdepim/kmobiletools/kmobiletools

by Bugzilla from winter@kde.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Monday 10 March 2008 13:44:16 Kevin Krammer wrote:
> SVN commit 784128 by krake:
>
> compile++
>
Yay! Finally.

Now we need to figure out:
1) how to eliminate all the debug messages coming from Soprano::PluginManager
during the cmake phase
2) why akonadi/agents/nepomuk_contact_feeder and kleopatra always
rebuild themselves after cmake is run but no files inside those projects
are changed
_______________________________________________
kmobiletools mailing list
kmobiletools@...
https://mail.kde.org/mailman/listinfo/kmobiletools