File indexing completed on 2026-08-09 07:09:55

0001 /*
0002     SPDX-FileCopyrightText: 2020 Benjamin Port <benjamin.port@enioka.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #include "kcmoduledata.h"
0008 
0009 #include <QList>
0010 #include <QPointer>
0011 
0012 #include <KCoreConfigSkeleton>
0013 
0014 class KCModuleDataPrivate
0015 {
0016 public:
0017     explicit KCModuleDataPrivate(KCModuleData *probe)
0018         : _q(probe)
0019     {
0020     }
0021 
0022     KCModuleData *_q;
0023     QList<QPointer<KCoreConfigSkeleton>> _skeletons;
0024 };
0025 
0026 KCModuleData::KCModuleData(QObject *parent)
0027     : QObject(parent)
0028     , d(new KCModuleDataPrivate(this))
0029 {
0030     connect(this, &KCModuleData::aboutToLoad, this, &KCModuleData::loaded);
0031     QMetaObject::invokeMethod(
0032         this,
0033         [this] {
0034             aboutToLoad(QPrivateSignal());
0035         },
0036         Qt::QueuedConnection);
0037 }
0038 
0039 KCModuleData::~KCModuleData() = default;
0040 
0041 void KCModuleData::registerSkeleton(KCoreConfigSkeleton *skeleton)
0042 {
0043     if (!skeleton || d->_skeletons.contains(skeleton)) {
0044         return;
0045     }
0046 
0047     d->_skeletons.append(skeleton);
0048 }
0049 
0050 bool KCModuleData::isDefaults() const
0051 {
0052     bool defaults = true;
0053     for (const auto &skeleton : std::as_const(d->_skeletons)) {
0054         defaults &= skeleton->isDefaults();
0055     }
0056     return defaults;
0057 }
0058 
0059 void KCModuleData::revertToDefaults()
0060 {
0061     for (const auto &skeleton : std::as_const(d->_skeletons)) {
0062         skeleton->useDefaults(true);
0063         skeleton->save();
0064     }
0065 }
0066 
0067 void KCModuleData::autoRegisterSkeletons()
0068 {
0069     const auto skeletons = findChildren<KCoreConfigSkeleton *>();
0070     for (auto *skeleton : skeletons) {
0071         registerSkeleton(skeleton);
0072     }
0073 }
0074 
0075 bool KCModuleData::matchesQuery(const QString &query) const
0076 {
0077     // Currently not implemented, here for future use case
0078     Q_UNUSED(query)
0079     return false;
0080 }
0081 
0082 #include "moc_kcmoduledata.cpp"