File indexing completed on 2024-05-12 05:36:15

0001 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include <QObject>
0007 
0008 #include <KConfigGroup>
0009 #include <KConfigWatcher>
0010 #include <KSharedConfig>
0011 
0012 class Settings : public QObject
0013 {
0014     Q_OBJECT
0015 
0016 public:
0017     Settings(QObject *parent = nullptr);
0018     static Settings &self();
0019 
0020     // apply the configuration
0021     void applyConfiguration();
0022 
0023 private:
0024     // loads the saved configuration, so it can be restored on desktop
0025     void loadSavedConfiguration();
0026 
0027     // applies our mobile configuration
0028     void applyMobileConfiguration();
0029 
0030     void writeKeys(const QString &fileName, KSharedConfig::Ptr &config, const QMap<QString, QMap<QString, QVariant>> &settings, bool overwriteOnlyIfEmpty);
0031     void loadKeys(const QString &fileName, KSharedConfig::Ptr &config, const QMap<QString, QMap<QString, QVariant>> &settings);
0032     void saveConfigSetting(const QString &fileName, const QString &group, const QString &key, const QVariant value);
0033     const QString loadSavedConfigSetting(KSharedConfig::Ptr &config, const QString &fileName, const QString &group, const QString &key, bool write = true);
0034 
0035     void reloadKWinConfig();
0036 
0037     // whether this is Plasma Mobile
0038     bool m_isMobilePlatform;
0039 
0040     KSharedConfig::Ptr m_mobileConfig;
0041     KSharedConfig::Ptr m_kwinrcConfig;
0042     KSharedConfig::Ptr m_appBlacklistConfig;
0043     KSharedConfig::Ptr m_kdeglobalsConfig;
0044 
0045     KConfigWatcher::Ptr m_configWatcher;
0046 };