File indexing completed on 2024-05-05 17:32:16

0001 /*
0002 
0003     SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "module.h"
0009 
0010 #include <KPluginFactory>
0011 
0012 KQuickConfigModule *Module::kcm() const
0013 {
0014     return m_kcm;
0015 }
0016 
0017 QString Module::path() const
0018 {
0019     return m_path;
0020 }
0021 
0022 void Module::setPath(const QString &path)
0023 {
0024     if (m_path == path) {
0025         return;
0026     }
0027 
0028     // In case the user clicks from the UI we pass in the absolute path
0029     KPluginMetaData kcmMetaData(path);
0030     if (!kcmMetaData.isValid()) {
0031         // From the command line or DBus we usually get only the plugin id
0032         if (KPluginMetaData data(QStringLiteral("plasma/kcms/systemsettings/") + path); data.isValid()) {
0033             kcmMetaData = data;
0034         }
0035     }
0036 
0037     if (kcmMetaData.isValid()) {
0038         m_path = kcmMetaData.fileName();
0039         Q_EMIT pathChanged();
0040 
0041         m_kcm = KQuickConfigModuleLoader::loadModule(kcmMetaData, this).plugin;
0042         Q_EMIT kcmChanged();
0043         Q_EMIT nameChanged();
0044 
0045         m_valid = true;
0046         Q_EMIT validChanged();
0047     } else {
0048         qWarning() << "Unknown module" << path << "requested";
0049         m_valid = false;
0050         Q_EMIT validChanged();
0051     }
0052 }
0053 
0054 bool Module::valid()
0055 {
0056     return m_valid;
0057 }