summaryrefslogtreecommitdiffstats
path: root/examples/uml
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-11-16 12:44:50 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-11-16 16:43:13 +0100
commitfcf55a471203ba7fe43a272b8874853be3b43b36 (patch)
tree010e8eb8723f75c44142752c10d052711d0c46e2 /examples/uml
parent8a6f1bc75e4694fa12b877b66c76b825e86502d4 (diff)
Simplify DuSE-MT plugin controller implementation
Change-Id: Iecbd1b0893893268f82b998c1f0fcb6a13a8015d Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
-rw-r--r--examples/uml/duse-mt/src/app/shell/mainwindow.cpp40
-rw-r--r--examples/uml/duse-mt/src/app/shell/plugincontroller.cpp18
-rw-r--r--examples/uml/duse-mt/src/app/shell/plugincontroller.h8
-rw-r--r--examples/uml/duse-mt/src/libs/duseinterfaces/iplugincontroller.h15
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;
}