From 037f05547391ca23e4f05a048da31baaa9bed36b Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 29 Aug 2012 16:14:33 +0200 Subject: [PATCH] QmlDesigner: Remove PluginManagerPrivate Change-Id: Ieb10bb6e3f5733bb123514adecbd251496aa4b34 Reviewed-by: Alessandro Portale --- .../pluginmanager/pluginmanager.cpp | 79 +++---------------- .../components/pluginmanager/pluginmanager.h | 12 +-- .../components/pluginmanager/pluginpath.cpp | 2 + .../components/pluginmanager/pluginpath.h | 6 +- 4 files changed, 21 insertions(+), 78 deletions(-) diff --git a/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.cpp b/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.cpp index da62796daa4..b3c76a68e47 100644 --- a/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.cpp +++ b/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.cpp @@ -30,7 +30,6 @@ #include "pluginmanager.h" #include "iplugin.h" -#include "pluginpath.h" #include #include @@ -56,90 +55,30 @@ enum { debug = 0 }; namespace QmlDesigner { -// Initialize and create instance of a plugin from scratch, -// that is, make sure the library is loaded and has an instance -// of the IPlugin type. Once something fails, mark it as failed -// ignore it from then on. -//static IPlugin *instance(PluginData &p) -//{ -// // Go stale once something fails -// if (p.failed) -// return 0; -// // Pull up the plugin, retrieve IPlugin instance. -// if (!p.instanceGuard) { -// p.instance = 0; -// QPluginLoader loader(p.path); -// if (!(loader.isLoaded() || loader.load())) { -// p.failed = true; -// p.errorMessage = loader.errorString(); -// return 0; -// } -// QObject *object = loader.instance(); -// if (!object) { -// p.failed = true; -// p.errorMessage = QCoreApplication::translate("PluginManager", "Failed to create instance."); -// return 0; -// } -// IPlugin *iplugin = qobject_cast(object); -// if (!iplugin) { -// p.failed = true; -// p.errorMessage = QCoreApplication::translate("PluginManager", "Not a QmlDesigner plugin."); -// delete object; -// return 0; -// } -// p.instanceGuard = object; -// p.instance = iplugin; -// } -// // Ensure it is initialized -// if (!p.instance->isInitialized()) { -// if (!p.instance->initialize(&p.errorMessage)) { -// p.failed = true; -// delete p.instance; -// p.instance = 0; -// return 0; -// } -// } -// return p.instance; -//} - - -// ---- PluginManager[Private] -class PluginManagerPrivate { -public: - typedef QList PluginPathList; - PluginPathList m_paths; -}; - -PluginManager::PluginManager() : - d(new PluginManagerPrivate) -{ -} - -PluginManager::~PluginManager() -{ - delete d; -} - PluginManager::IPluginList PluginManager::instances() { if (debug) qDebug() << '>' << Q_FUNC_INFO << QLibraryInfo::buildKey(); IPluginList rc; - const PluginManagerPrivate::PluginPathList::iterator end = d->m_paths.end(); - for (PluginManagerPrivate::PluginPathList::iterator it = d->m_paths.begin(); it != end; ++it) + const PluginPathList::iterator end = m_paths.end(); + for (PluginPathList::iterator it = m_paths.begin(); it != end; ++it) it->getInstances(&rc); if (debug) qDebug() << '<' << Q_FUNC_INFO << rc.size(); return rc; } +PluginManager::PluginManager() +{ +} + void PluginManager::setPluginPaths(const QStringList &paths) { foreach (const QString &path, paths) { const QDir dir(path); if (!dir.exists()) continue; - d->m_paths.push_back(PluginPath(dir)); + m_paths.push_back(PluginPath(dir)); } // also register path in widgetpluginmanager @@ -149,8 +88,8 @@ void PluginManager::setPluginPaths(const QStringList &paths) QAbstractItemModel *PluginManager::createModel(QObject *parent) { QStandardItemModel *model = new QStandardItemModel(parent); - const PluginManagerPrivate::PluginPathList::iterator end = d->m_paths.end(); - for (PluginManagerPrivate::PluginPathList::iterator it = d->m_paths.begin(); it != end; ++it) + const PluginPathList::iterator end = m_paths.end(); + for (PluginPathList::iterator it = m_paths.begin(); it != end; ++it) model->appendRow(it->createModelItem()); return model; } diff --git a/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.h b/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.h index 95a44af4525..9213e5a1da2 100644 --- a/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.h +++ b/src/plugins/qmldesigner/components/pluginmanager/pluginmanager.h @@ -31,6 +31,7 @@ #ifndef PLUGINMANAGER_H #define PLUGINMANAGER_H +#include "pluginpath.h" #include #include @@ -45,8 +46,6 @@ namespace QmlDesigner { class IPlugin; -class PluginManagerPrivate; - // PluginManager: Loads the plugin libraries on demand "as lazy as // possible", that is, directories are scanned and // instances are created only when instances() is called. @@ -54,11 +53,13 @@ class PluginManagerPrivate; class PluginManager { Q_DISABLE_COPY(PluginManager) + + typedef QList PluginPathList; + public: typedef QList IPluginList; PluginManager(); - ~PluginManager(); void setPluginPaths(const QStringList &paths); @@ -66,12 +67,13 @@ public: QDialog *createAboutPluginDialog(QWidget *parent); -private: +private: // functions // Convenience to create a model for an "About Plugins" // dialog. Forces plugin initialization. QAbstractItemModel *createModel(QObject *parent = 0); - PluginManagerPrivate *d; +private: // variables + PluginPathList m_paths; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp b/src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp index 7cc5238f4f2..08d9a6d95c8 100644 --- a/src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp +++ b/src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp @@ -29,6 +29,8 @@ **************************************************************************/ #include "pluginpath.h" +#include "pluginmanager.h" + #include #include #include diff --git a/src/plugins/qmldesigner/components/pluginmanager/pluginpath.h b/src/plugins/qmldesigner/components/pluginmanager/pluginpath.h index d5bb2d2740c..e70b2b1ef2c 100644 --- a/src/plugins/qmldesigner/components/pluginmanager/pluginpath.h +++ b/src/plugins/qmldesigner/components/pluginmanager/pluginpath.h @@ -31,8 +31,6 @@ #ifndef PLUGINPATH_H #define PLUGINPATH_H -#include "pluginmanager.h" - #include #include #include @@ -72,11 +70,13 @@ struct PluginData { // IPlugins. class PluginPath { + + typedef QList IPluginList; public: explicit PluginPath(const QDir &path); - void getInstances(PluginManager::IPluginList *list); + void getInstances(IPluginList *list); QDir path() const { return m_path; }