[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [plasma-workspace] shell: Reload list of wallpaper types on install/uninstall
From: David Edmundson <null () kde ! org>
Date: 2018-09-14 8:45:59
Message-ID: E1g0jjj-0001Fu-Hy () code ! kde ! org
[Download RAW message or body]
Git commit 5545214d4420eccc8013331697259974affc7283 by David Edmundson.
Committed on 14/09/2018 at 08:45.
Pushed by davidedmundson into branch 'master'.
Reload list of wallpaper types on install/uninstall
Summary: As requested in D12041.
Test Plan:
Opened dialog
With kpackagetool installed an awesome wallpaper that showed some fireworks
Combo box updated immediately
Uninstalled
Combobox updated
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: Zren, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D15178
M +36 -10 shell/containmentconfigview.cpp
https://commits.kde.org/plasma-workspace/5545214d4420eccc8013331697259974affc7283
diff --git a/shell/containmentconfigview.cpp b/shell/containmentconfigview.cpp
index 31e7ccbe..e3452f7e 100644
--- a/shell/containmentconfigview.cpp
+++ b/shell/containmentconfigview.cpp
@@ -33,6 +33,7 @@
#include <QQmlContext>
#include <QQmlEngine>
#include <QQmlComponent>
+#include <QDBusConnection>
#include <klocalizedstring.h>
@@ -44,6 +45,16 @@
#include <KPackage/Package>
#include <KPackage/PackageLoader>
+class WallpaperConfigModel: public PlasmaQuick::ConfigModel
+{
+ Q_OBJECT
+public:
+ WallpaperConfigModel(QObject *parent);
+public Q_SLOTS:
+ void repopulate();
+};
+
+
//////////////////////////////ContainmentConfigView
ContainmentConfigView::ContainmentConfigView(Plasma::Containment *cont, QWindow \
*parent) : ConfigView(cont, parent),
@@ -114,15 +125,12 @@ void ContainmentConfigView::setContainmentPlugin(const QString \
&plugin) PlasmaQuick::ConfigModel *ContainmentConfigView::wallpaperConfigModel()
{
if (!m_wallpaperConfigModel) {
- m_wallpaperConfigModel = new PlasmaQuick::ConfigModel(this);
-
- for (const KPluginMetaData &m : \
KPackage::PackageLoader::self()->listPackages(QStringLiteral("Plasma/Wallpaper"))) \
{
- KPackage::Package pkg = \
KPackage::PackageLoader::self()->loadPackage(QStringLiteral("Plasma/Wallpaper"), \
m.pluginId());
- if (!pkg.isValid()) {
- continue;
- }
- m_wallpaperConfigModel->appendCategory(pkg.metadata().iconName(), \
pkg.metadata().name(), pkg.fileUrl("ui", QStringLiteral("config.qml")).toString(), \
m.pluginId());
- }
+ m_wallpaperConfigModel = new WallpaperConfigModel(this);
+ QDBusConnection::sessionBus().connect(QString(), \
QStringLiteral("/KPackage/Plasma/Wallpaper"), \
QStringLiteral("org.kde.plasma.kpackage"), QStringLiteral("packageInstalled"), + \
m_wallpaperConfigModel, SLOT(repopulate())) ; + \
QDBusConnection::sessionBus().connect(QString(), \
QStringLiteral("/KPackage/Plasma/Wallpaper"), \
QStringLiteral("org.kde.plasma.kpackage"), QStringLiteral("packageUninstalled"), + \
m_wallpaperConfigModel, SLOT(repopulate())); +
}
return m_wallpaperConfigModel;
}
@@ -214,4 +222,22 @@ void ContainmentConfigView::syncWallpaperObjects()
m_currentWallpaperConfig = static_cast<KDeclarative::ConfigPropertyMap \
*>(wallpaperGraphicsObject->property("configuration").value<QObject *>()); }
-#include "moc_containmentconfigview.cpp"
+WallpaperConfigModel::WallpaperConfigModel(QObject *parent)
+ :PlasmaQuick::ConfigModel(parent)
+{
+ repopulate();
+}
+
+void WallpaperConfigModel::repopulate()
+{
+ clear();
+ for (const KPluginMetaData &m : \
KPackage::PackageLoader::self()->listPackages(QStringLiteral("Plasma/Wallpaper"))) { \
+ KPackage::Package pkg = \
KPackage::PackageLoader::self()->loadPackage(QStringLiteral("Plasma/Wallpaper"), \
m.pluginId()); + if (!pkg.isValid()) {
+ continue;
+ }
+ appendCategory(pkg.metadata().iconName(), pkg.metadata().name(), \
pkg.fileUrl("ui", QStringLiteral("config.qml")).toString(), m.pluginId()); + }
+}
+
+#include "containmentconfigview.moc"
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic