File indexing completed on 2024-05-05 05:30:25

0001 /*
0002     SPDX-FileCopyrightText: 2019 Roman Gilg <subdiff@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include <kscreen/config.h>
0009 
0010 #include <QOrientationReading>
0011 
0012 #include <memory>
0013 
0014 class ControlConfig;
0015 
0016 class Config : public QObject
0017 {
0018     Q_OBJECT
0019 public:
0020     explicit Config(KScreen::ConfigPtr config, QObject *parent = nullptr);
0021     ~Config() = default;
0022 
0023     QString id() const;
0024 
0025     bool fileExists() const;
0026     std::unique_ptr<Config> readFile();
0027     std::unique_ptr<Config> readOpenLidFile();
0028     bool writeFile();
0029     bool writeOpenLidFile();
0030     static QString configsDirPath();
0031 
0032     KScreen::ConfigPtr data() const
0033     {
0034         return m_data;
0035     }
0036 
0037     void activateControlWatching();
0038     void log();
0039 
0040     void setValidityFlags(KScreen::Config::ValidityFlags flags)
0041     {
0042         m_validityFlags = flags;
0043     }
0044 
0045     bool canBeApplied() const;
0046 
0047 Q_SIGNALS:
0048     void controlChanged();
0049 
0050 private:
0051     friend class TestConfig;
0052 
0053     QString filePath() const;
0054     std::unique_ptr<Config> readFile(const QString &fileName);
0055     bool writeFile(const QString &filePath);
0056 
0057     bool canBeApplied(KScreen::ConfigPtr config) const;
0058 
0059     KScreen::ConfigPtr m_data;
0060     KScreen::Config::ValidityFlags m_validityFlags;
0061     ControlConfig *m_control;
0062 
0063     static QString s_configsDirName;
0064     static QString s_fixedConfigFileName;
0065 };