File indexing completed on 2024-04-21 14:53:50

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