diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-16 12:44:50 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-16 16:43:13 +0100 |
commit | fcf55a471203ba7fe43a272b8874853be3b43b36 (patch) | |
tree | 010e8eb8723f75c44142752c10d052711d0c46e2 /examples/uml | |
parent | 8a6f1bc75e4694fa12b877b66c76b825e86502d4 (diff) |
Simplify DuSE-MT plugin controller implementation
Change-Id: Iecbd1b0893893268f82b998c1f0fcb6a13a8015d
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
4 files changed, 39 insertions, 42 deletions
diff --git a/examples/uml/duse-mt/src/app/shell/mainwindow.cpp b/examples/uml/duse-mt/src/app/shell/mainwindow.cpp index d3f1dae3..e3af11d9 100644 --- a/examples/uml/duse-mt/src/app/shell/mainwindow.cpp +++ b/examples/uml/duse-mt/src/app/shell/mainwindow.cpp @@ -123,15 +123,14 @@ void MainWindow::on_actionFileNewModel_triggered() { _newModel->lneModel->clear(); _newModel->cboMetamodel->clear(); - typedef QPair<QMetaModelPlugin *, QJsonObject> MetaModelPluginPair; - foreach (const MetaModelPluginPair &pair, ICore::self()->pluginController()->metamodelPlugins().values()) - _newModel->cboMetamodel->addItem(pair.first->metaObject()->className()); + foreach (QMetaModelPlugin *metamodelPlugin, ICore::self()->pluginController()->metamodelPlugins().values()) + _newModel->cboMetamodel->addItem(metamodelPlugin->metaObject()->className()); _newModel->lneModel->setFocus(); if (_newModelDialog->exec() == QDialog::Accepted) { QMetaModelPlugin *metamodelPlugin; - foreach (const MetaModelPluginPair &pair, ICore::self()->pluginController()->metamodelPlugins().values()) { - if (pair.first->metaObject()->className() == _newModel->cboMetamodel->currentText()) - metamodelPlugin = pair.first; + foreach (QMetaModelPlugin *plugin, ICore::self()->pluginController()->metamodelPlugins().values()) { + if (plugin->metaObject()->className() == _newModel->cboMetamodel->currentText()) + metamodelPlugin = plugin; } if (ICore::self()->projectController()->createModel(_newModel->lneModel->text(), metamodelPlugin, _newModel->lstTopLevelContainers->currentItem()->text())) setWindowTitle(ICore::self()->projectController()->currentModelFileName() + " - DuSE-MT"); @@ -289,10 +288,9 @@ void MainWindow::metaModelChanged(QString newMetaModel) { _newModel->lstTopLevelContainers->clear(); QVariantList list; - typedef QPair<QMetaModelPlugin *, QJsonObject> MetaModelPluginPair; - foreach (const MetaModelPluginPair &pair, ICore::self()->pluginController()->metamodelPlugins()) { - if (pair.first->metaObject()->className() == newMetaModel) - list = pair.second.value("MetaModelTopLevelTypes").toArray().toVariantList(); + foreach (QMetaModelPlugin *metamodelPlugin, ICore::self()->pluginController()->metamodelPlugins()) { + if (metamodelPlugin->metaObject()->className() == newMetaModel) + list = metamodelPlugin->property("metadata").value<QJsonObject>().value("MetaModelTopLevelTypes").toArray().toVariantList(); } foreach (QVariant variant, list) _newModel->lstTopLevelContainers->addItem(variant.toString()); @@ -379,22 +377,22 @@ void MainWindow::populatePluginDialog() _aboutPlugins->loadedPlugins->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); _aboutPlugins->loadedPlugins->header()->setSectionResizeMode(2, QHeaderView::ResizeToContents); - typedef QPair<QMetaModelPlugin *, QJsonObject> MetaModelPluginPair; - foreach (const MetaModelPluginPair &pair, ICore::self()->pluginController()->metamodelPlugins()) { + foreach (QMetaModelPlugin *metamodelPlugin, ICore::self()->pluginController()->metamodelPlugins()) { + QJsonObject jsonObject = metamodelPlugin->property("metadata").value<QJsonObject>(); QTreeWidgetItem *metamodelItem = new QTreeWidgetItem(itemForCategory("Metamodels"), - QStringList() << pair.first->metaObject()->className() + QStringList() << metamodelPlugin->metaObject()->className() << QString() - << pair.second.value("Version").toString() - << pair.second.value("Vendor").toString()); + << jsonObject.value("Version").toString() + << jsonObject.value("Vendor").toString()); metamodelItem->setData(1, Qt::CheckStateRole, QVariant(Qt::Checked)); } - typedef QPair<DuSE::IPlugin *, QJsonObject> DuSEMTPluginPair; - foreach (const DuSEMTPluginPair &pair, ICore::self()->pluginController()->dusemtPlugins()) { - QTreeWidgetItem *dusemtItem = new QTreeWidgetItem(itemForCategory(pair.second.value("Category").toString()), - QStringList() << pair.first->metaObject()->className() + foreach (DuSE::IPlugin *dusePlugin, ICore::self()->pluginController()->dusemtPlugins()) { + QJsonObject jsonObject = dusePlugin->property("metadata").value<QJsonObject>(); + QTreeWidgetItem *dusemtItem = new QTreeWidgetItem(itemForCategory(jsonObject.value("Category").toString()), + QStringList() << dusePlugin->metaObject()->className() << QString() - << pair.second.value("Version").toString() - << pair.second.value("Vendor").toString()); + << jsonObject.value("Version").toString() + << jsonObject.value("Vendor").toString()); dusemtItem->setData(1, Qt::CheckStateRole, QVariant(Qt::Checked)); } diff --git a/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp b/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp index 83826586..bbf5fe01 100644 --- a/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp +++ b/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp @@ -77,10 +77,11 @@ bool PluginController::initialize() foreach (QString fileName, pluginsDir.entryList(QDir::Files)) { QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); QObject *plugin = loader.instance(); - QMetaModelPlugin *metaModelPlugin = 0; - if (plugin && (metaModelPlugin = qobject_cast<QMetaModelPlugin *>(plugin))) { + QMetaModelPlugin *metamodelPlugin = 0; + if (plugin && (metamodelPlugin = qobject_cast<QMetaModelPlugin *>(plugin))) { QJsonObject jsonObject = loader.metaData().value(QStringLiteral("MetaData")).toObject(); - _metamodelPlugins.insert(jsonObject.value(QStringLiteral("MetaModelNamespaceUri")).toString(), DuSE::IPluginController::MetamodelPluginPair(metaModelPlugin, jsonObject)); + metamodelPlugin->setProperty("metadata", jsonObject); + _metamodelPlugins.insert(jsonObject.value(QStringLiteral("MetaModelNamespaceUri")).toString(), metamodelPlugin); } } } @@ -115,8 +116,8 @@ bool PluginController::initialize() int dependencyCount = invertedDependency.values(dusePlugin->metaObject()->className()).count(); int loadedDependencies = 0; foreach (const QString &dependency, invertedDependency.values(dusePlugin->metaObject()->className())) { - foreach (const DuSE::IPluginController::DusemtPluginPair &pair, _dusemtPlugins) { - if (pair.first->metaObject()->className() == dependency) { + foreach (DuSE::IPlugin *dusePlugin, _dusemtPlugins) { + if (dusePlugin->metaObject()->className() == dependency) { ++loadedDependencies; break; } @@ -124,7 +125,8 @@ bool PluginController::initialize() } if (loadedDependencies == dependencyCount) { dusePlugin->initialize(core); - _dusemtPlugins << DuSE::IPluginController::DusemtPluginPair(dusePlugin, loader.metaData().value(QStringLiteral("MetaData")).toObject()); + dusePlugin->setProperty("metadata", loader.metaData().value(QStringLiteral("MetaData")).toObject()); + _dusemtPlugins << dusePlugin; pluginList.removeAll(pluginFileName); } } @@ -135,12 +137,12 @@ bool PluginController::initialize() return _errorStrings.isEmpty() ? true:false; } -const QHash<QString, DuSE::IPluginController::MetamodelPluginPair> &PluginController::metamodelPlugins() const +const QHash<QString, QMetaModelPlugin *> &PluginController::metamodelPlugins() const { return _metamodelPlugins; } -const QList<DuSE::IPluginController::DusemtPluginPair> &PluginController::dusemtPlugins() const +const QList<IPlugin *> &PluginController::dusemtPlugins() const { return _dusemtPlugins; } diff --git a/examples/uml/duse-mt/src/app/shell/plugincontroller.h b/examples/uml/duse-mt/src/app/shell/plugincontroller.h index b87a3e52..5e275d8f 100644 --- a/examples/uml/duse-mt/src/app/shell/plugincontroller.h +++ b/examples/uml/duse-mt/src/app/shell/plugincontroller.h @@ -63,13 +63,13 @@ public: virtual bool initialize(); - virtual const QHash<QString, DuSE::IPluginController::MetamodelPluginPair> &metamodelPlugins() const; - virtual const QList<DuSE::IPluginController::DusemtPluginPair> &dusemtPlugins() const; + virtual const QHash<QString, QMetaModelPlugin *> &metamodelPlugins() const; + virtual const QList<DuSE::IPlugin *> &dusemtPlugins() const; virtual QStringList errorStrings() const; private: - QHash<QString, DuSE::IPluginController::MetamodelPluginPair> _metamodelPlugins; - QList<DuSE::IPluginController::DusemtPluginPair> _dusemtPlugins; + QHash<QString, QMetaModelPlugin *> _metamodelPlugins; + QList<DuSE::IPlugin *> _dusemtPlugins; QStringList _errorStrings; }; diff --git a/examples/uml/duse-mt/src/libs/duseinterfaces/iplugincontroller.h b/examples/uml/duse-mt/src/libs/duseinterfaces/iplugincontroller.h index e5a250e5..075d832b 100644 --- a/examples/uml/duse-mt/src/libs/duseinterfaces/iplugincontroller.h +++ b/examples/uml/duse-mt/src/libs/duseinterfaces/iplugincontroller.h @@ -62,11 +62,8 @@ public: virtual bool initialize() = 0; - typedef QPair<QMetaModelPlugin *, QJsonObject> MetamodelPluginPair; - typedef QPair<IPlugin *, QJsonObject> DusemtPluginPair; - - virtual const QHash<QString, DuSE::IPluginController::MetamodelPluginPair> &metamodelPlugins() const = 0; - virtual const QList<DuSE::IPluginController::DusemtPluginPair> &dusemtPlugins() const = 0; + virtual const QHash<QString, QMetaModelPlugin *> &metamodelPlugins() const = 0; + virtual const QList<DuSE::IPlugin *> &dusemtPlugins() const = 0; virtual QStringList errorStrings() const = 0; @@ -74,10 +71,10 @@ public: QList<IPlugin *> pluginsByType() const { QList<IPlugin *> foundPlugins; - const QList<DusemtPluginPair> &plugins = dusemtPlugins(); - foreach (const DusemtPluginPair &pair, plugins) - if (dynamic_cast<T>(pair.first)) - foundPlugins << pair.first; + const QList<IPlugin *> &plugins = dusemtPlugins(); + foreach (IPlugin *dusePlugin, plugins) + if (dynamic_cast<T>(dusePlugin)) + foundPlugins << dusePlugin; return foundPlugins; } |