diff options
Diffstat (limited to 'framework/src/extensionmodel.cpp')
-rw-r--r-- | framework/src/extensionmodel.cpp | 24 |
1 files changed, 20 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); |