[kgraphviewer-devel] [PATCH] Port to KPluginFactory.

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sun Mar 2 01:31:22 UTC 2014


---
 src/kgraphviewer.cpp              |  5 +--
 src/part/kgraphviewer_interface.h |  4 +--
 src/part/kgraphviewer_part.cpp    | 75 ++++++---------------------------------
 src/part/kgraphviewer_part.h      | 18 +---------
 4 files changed, 17 insertions(+), 85 deletions(-)

diff --git a/src/kgraphviewer.cpp b/src/kgraphviewer.cpp
index 6fd8097..86270d5 100644
--- a/src/kgraphviewer.cpp
+++ b/src/kgraphviewer.cpp
@@ -139,14 +139,15 @@ void KGraphViewerWindow::reloadPreviousFiles()
 void KGraphViewerWindow::openUrl(const KUrl& url)
 {
   kDebug() << url;
-  KLibFactory *factory = KLibLoader::self()->factory("kgraphviewerpart");
+  KPluginFactory *factory = KPluginLoader("kgraphviewerpart").factory();
   if (factory)
   {
-    KParts::ReadOnlyPart* part = static_cast<KParts::ReadOnlyPart*>(factory->create(this, "kgraphviewerpart"));
+    KParts::ReadOnlyPart* part = factory->create<KParts::ReadOnlyPart>("kgraphviewerpart", this);
     KGraphViewer::KGraphViewerInterface* kgv = qobject_cast<KGraphViewer::KGraphViewerInterface*>( part );
     if( ! kgv )
     {
       // This should not happen
+      kError() << "Failed to get KPart" << endl;
       return;
     }
     kgv->setBackgroundColor(KGraphViewerSettings::backgroundColor());
diff --git a/src/part/kgraphviewer_interface.h b/src/part/kgraphviewer_interface.h
index ccc0633..778c3bd 100644
--- a/src/part/kgraphviewer_interface.h
+++ b/src/part/kgraphviewer_interface.h
@@ -46,9 +46,9 @@ namespace KGraphViewer
  * Use it like this:
  * \code
  *  // fetch the Part..
- *  KLibFactory *factory = KLibLoader::self()->factory("kgraphviewerpart");
+ *  KPluginFactory *factory = KPluginLoader("kgraphviewerpart").factory();
  *  if (factory) {
- *      part = factory->create<KParts::ReadOnlyPart>(this);
+ *      KParts::ReadOnlyPart* part = factory->create<KParts::ReadOnlyPart>("kgraphviewerpart", this);
  *
  *      // cast the part to the KGraphViewerInterface...
  *      KGraphViewerInterface* graph = qobject_cast<KGraphViewerInterface*>( part );
diff --git a/src/part/kgraphviewer_part.cpp b/src/part/kgraphviewer_part.cpp
index 7829b29..ce48c5c 100644
--- a/src/part/kgraphviewer_part.cpp
+++ b/src/part/kgraphviewer_part.cpp
@@ -46,6 +46,16 @@
 namespace KGraphViewer
 {
 
+K_PLUGIN_FACTORY(KGraphViewerPartFactory, registerPlugin<KGraphViewerPart>("kgraphviewerpart");)
+static KAboutData createAboutData()
+{
+    return KAboutData( "kgraphviewerpart", 0, ki18n("KGraphViewerPart"),
+                       "1.0", ki18n( "GraphViz dot files viewer" ),
+                       KAboutData::License_GPL,
+                       ki18n("(c) 2005-2006, Gaël de Chalendar <kleag at free.fr>"));
+}
+K_EXPORT_PLUGIN(KGraphViewerPartFactory(createAboutData()))
+
 class KGraphViewerPartPrivate
 {
 public:
@@ -65,7 +75,7 @@ public:
   
 };
 
-KGraphViewerPart::KGraphViewerPart( QWidget *parentWidget, QObject *parent)
+KGraphViewerPart::KGraphViewerPart( QWidget *parentWidget, QObject *parent, const QVariantList & )
 : KParts::ReadOnlyPart(parent), d(new KGraphViewerPartPrivate())
 {
   kDebug() ;
@@ -427,69 +437,6 @@ void KGraphViewerPart::slotRenameNode(const QString& oldNodeName, const QString&
   d->m_widget->graph()->renameNode(oldNodeName,newNodeName);
 }
 
-extern "C"
-{
-  /**
-  * This function is the 'main' function of this part.  It takes
-  * the form 'void *init_lib<library name>()  It always returns a
-  * new factory object
-  */
-  KDE_EXPORT void *init_kgraphviewerpart()
-  {
-    return new KGraphViewerPartFactory();
-  }
-}
-
-// KComponentData KGraphViewerPartFactory::s_instance = 0L;
-KAboutData* KGraphViewerPartFactory::s_about = new KAboutData(
-"kgraphviewerpart", 0, ki18n("KGraphViewerPart"),
-"1.0", ki18n( "GraphViz dot files viewer" ),
-KAboutData::License_GPL,
-ki18n("(c) 2005-2006, Gaël de Chalendar <kleag at free.fr>"));
-
-KComponentData KGraphViewerPartFactory::s_instance(s_about);
-
-KGraphViewerPartFactory::KGraphViewerPartFactory(QObject* parent)
-: KParts::Factory(parent)
-{
-}
-
-KGraphViewerPartFactory::~KGraphViewerPartFactory()
-{
-gvFreeContext(gvContext());
-delete s_about;
-}
-
-KParts::Part* KGraphViewerPartFactory::createPartObject( QWidget *parentWidget,
-QObject *parent,
-const char *classname,
-const QStringList &args )
-{
-  Q_UNUSED(classname);
-  Q_UNUSED(args);
-  //     Create an instance of our Part
-  KGraphViewerPart* obj = new KGraphViewerPart( parentWidget, parent);
-
-  //     See if we are to be read-write or not
-  //     if (QCString(classname) == "KParts::ReadOnlyPart")
-  //         obj->setReadWrite(false);
-
-  return obj;
-}
-
-KComponentData KGraphViewerPartFactory::componentData()
-{
-  /*    if( !s_instance )
-  {
-    s_about = new KAboutData( "kgraphviewerpart", 0, ki18n("KGraphViewerPart"),
-                              "1.0", ki18n( "GraphViz dot files viewer" ),
-                              KAboutData::License_GPL,
-                              ki18n("(c) 2005-2006, Gaël de Chalendar <kleag at free.fr>"));
-                              s_instance(s_about);
-  }*/
-  return s_instance;
-}
-                                                                                                                       
 }
 
 #include "kgraphviewer_part.moc"
diff --git a/src/part/kgraphviewer_part.h b/src/part/kgraphviewer_part.h
index ca3bad9..e66a0cf 100644
--- a/src/part/kgraphviewer_part.h
+++ b/src/part/kgraphviewer_part.h
@@ -67,7 +67,7 @@ public:
     /**
      * Default constructor
      */
-    KGraphViewerPart(QWidget *parentWidget, QObject *parent);
+    KGraphViewerPart(QWidget *parentWidget, QObject *parent, const QVariantList &);
 
     
     /**
@@ -153,21 +153,5 @@ private:
   
 };
 
-class KGraphViewerPartFactory : public KParts::Factory
-{
-    Q_OBJECT
-public:
-    KGraphViewerPartFactory(QObject* parent = 0);
-    ~KGraphViewerPartFactory();
-    virtual KParts::Part* createPartObject( QWidget *parentWidget,
-                                            QObject *parent,
-                                            const char *classname, const QStringList &args );
-    static KComponentData componentData();
-
-private:
-    static KComponentData s_instance;
-    static KAboutData* s_about;
-};
-
 }
 #endif // _KGRAPHVIEWERPART_H_
-- 
1.9.0



More information about the kgraphviewer-devel mailing list