[ConfigView] Honor KIOSK Control Module restrictions

Differential Revision: https://phabricator.kde.org/D4679
This commit is contained in:
Kai Uwe Broulik 2017-02-24 12:01:06 +01:00
parent 13054c0473
commit 1934475e48

View File

@ -32,6 +32,7 @@
#include <QQmlContext>
#include <QQuickItem>
#include <KAuthorized>
#include <klocalizedstring.h>
#include <kdeclarative/kdeclarative.h>
#include <packageurlinterceptor.h>
@ -141,7 +142,15 @@ void ConfigViewPrivate::init()
delete object;
}
const QStringList kcms = KPluginMetaData::readStringList(applet.data()->pluginMetaData().rawData(), QStringLiteral("X-Plasma-ConfigPlugins"));
QStringList kcms = KPluginMetaData::readStringList(applet.data()->pluginMetaData().rawData(), QStringLiteral("X-Plasma-ConfigPlugins"));
// filter out non-authorized KCMs
// KAuthorized expects KCMs with .desktop suffix, so we can't just pass everything
// to KAuthorized::authorizeControlModules verbatim
kcms.erase(std::remove_if(kcms.begin(), kcms.end(), [](const QString &kcm) {
return !KAuthorized::authorizeControlModule(kcm + QLatin1String(".desktop"));
}), kcms.end());
if (!kcms.isEmpty()) {
if (!configModel) {
configModel = new ConfigModel(q);