diff options
Diffstat (limited to 'framework/src')
-rw-r--r-- | framework/src/extensionmodel.cpp | 24 | ||||
-rw-r--r-- | framework/src/extensionmodel.h | 5 |
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 | ||
48 | void ExtensionModel::load() | 48 | void 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 | ||
109 | void ExtensionModel::setExtensionPoint(const QString &extensionPoint) | ||
110 | { | ||
111 | mExtensionPoint = extensionPoint; | ||
112 | QTimer::singleShot(0, this, &ExtensionModel::load); | ||
113 | } | ||
114 | |||
115 | QString ExtensionModel::extensionPoint() const | ||
116 | { | ||
117 | return mExtensionPoint; | ||
118 | } | ||
119 | |||
104 | QVariant ExtensionModel::data(const QModelIndex &idx, int role) const | 120 | QVariant 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) | ||
32 | public: | 33 | public: |
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 | ||
54 | private slots: | 58 | private slots: |
@@ -57,6 +61,7 @@ private slots: | |||
57 | private: | 61 | private: |
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 | } |