summaryrefslogtreecommitdiffstats
path: root/framework/src
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src')
-rw-r--r--framework/src/extensionmodel.cpp24
-rw-r--r--framework/src/extensionmodel.h5
2 files changed, 25 insertions, 4 deletions
diff --git a/framework/src/extensionmodel.cpp b/framework/src/extensionmodel.cpp
index e3fab7d8..5f42aa7a 100644
--- a/framework/src/extensionmodel.cpp
+++ b/framework/src/extensionmodel.cpp
@@ -47,12 +47,17 @@ QHash<int, QByteArray> ExtensionModel::roleNames() const
47 47
48void ExtensionModel::load() 48void ExtensionModel::load()
49{ 49{
50 auto model = new QStandardItemModel(this); 50 if (auto m = sourceModel()) {
51 51 setSourceModel(nullptr);
52 delete m;
53 }
52 auto engine = qmlEngine(this); 54 auto engine = qmlEngine(this);
53 Q_ASSERT(engine); 55 if (!engine) {
56 return;
57 }
58 auto model = new QStandardItemModel(this);
54 for (const auto &path : engine->importPathList()) { 59 for (const auto &path : engine->importPathList()) {
55 QDir dir{path + "/org/kube/views"}; 60 QDir dir{path + "/org/kube/" + mExtensionPoint};
56 for (const auto &pluginName : dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { 61 for (const auto &pluginName : dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
57 const auto pluginPath = dir.path() + "/" + pluginName; 62 const auto pluginPath = dir.path() + "/" + pluginName;
58 mPaths.insert(pluginName, pluginPath); 63 mPaths.insert(pluginName, pluginPath);
@@ -101,6 +106,17 @@ QVariantList ExtensionModel::sortOrder() const
101 return {}; 106 return {};
102} 107}
103 108
109void ExtensionModel::setExtensionPoint(const QString &extensionPoint)
110{
111 mExtensionPoint = extensionPoint;
112 QTimer::singleShot(0, this, &ExtensionModel::load);
113}
114
115QString ExtensionModel::extensionPoint() const
116{
117 return mExtensionPoint;
118}
119
104QVariant ExtensionModel::data(const QModelIndex &idx, int role) const 120QVariant ExtensionModel::data(const QModelIndex &idx, int role) const
105{ 121{
106 return QSortFilterProxyModel::data(idx, role); 122 return QSortFilterProxyModel::data(idx, role);
diff --git a/framework/src/extensionmodel.h b/framework/src/extensionmodel.h
index 5360cc2f..07601e57 100644
--- a/framework/src/extensionmodel.h
+++ b/framework/src/extensionmodel.h
@@ -29,6 +29,7 @@ class ExtensionModel : public QSortFilterProxyModel
29 Q_OBJECT 29 Q_OBJECT
30 30
31 Q_PROPERTY(QVariantList sortOrder WRITE setSortOrder READ sortOrder) 31 Q_PROPERTY(QVariantList sortOrder WRITE setSortOrder READ sortOrder)
32 Q_PROPERTY(QString extensionPoint WRITE setExtensionPoint READ extensionPoint)
32public: 33public:
33 34
34 ExtensionModel(QObject *parent = Q_NULLPTR); 35 ExtensionModel(QObject *parent = Q_NULLPTR);
@@ -49,6 +50,9 @@ public:
49 void setSortOrder(const QVariantList &order); 50 void setSortOrder(const QVariantList &order);
50 QVariantList sortOrder() const; 51 QVariantList sortOrder() const;
51 52
53 void setExtensionPoint(const QString &order);
54 QString extensionPoint() const;
55
52 Q_INVOKABLE QString findSource(const QString &extensionName, const QString &sourceName); 56 Q_INVOKABLE QString findSource(const QString &extensionName, const QString &sourceName);
53 57
54private slots: 58private slots:
@@ -57,6 +61,7 @@ private slots:
57private: 61private:
58 QStringList mSortOrder; 62 QStringList mSortOrder;
59 QHash<QString, QString> mPaths; 63 QHash<QString, QString> mPaths;
64 QString mExtensionPoint;
60}; 65};
61 66
62} 67}