File indexing completed on 2024-06-09 05:25:46
0001 /* 0002 SPDX-FileCopyrightText: 2020 Ismael Asensio <isma.af@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include "rulebookmodel.h" 0010 #include "rulesmodel.h" 0011 0012 #include <KQuickConfigModule> 0013 0014 namespace KWin 0015 { 0016 class RuleSettings; 0017 0018 class KCMKWinRules : public KQuickConfigModule 0019 { 0020 Q_OBJECT 0021 0022 Q_PROPERTY(RuleBookModel *ruleBookModel MEMBER m_ruleBookModel CONSTANT) 0023 Q_PROPERTY(RulesModel *rulesModel MEMBER m_rulesModel CONSTANT) 0024 Q_PROPERTY(int editIndex READ editIndex NOTIFY editIndexChanged) 0025 0026 public: 0027 explicit KCMKWinRules(QObject *parent, const KPluginMetaData &metaData, const QVariantList &arguments); 0028 0029 Q_INVOKABLE void setRuleDescription(int index, const QString &description); 0030 Q_INVOKABLE void editRule(int index); 0031 0032 Q_INVOKABLE void createRule(); 0033 Q_INVOKABLE void removeRule(int index); 0034 Q_INVOKABLE void moveRule(int sourceIndex, int destIndex); 0035 Q_INVOKABLE void duplicateRule(int index); 0036 0037 Q_INVOKABLE void exportToFile(const QUrl &path, const QList<int> &indexes); 0038 Q_INVOKABLE void importFromFile(const QUrl &path); 0039 0040 public Q_SLOTS: 0041 void load() override; 0042 void save() override; 0043 0044 Q_SIGNALS: 0045 void editIndexChanged(); 0046 0047 private Q_SLOTS: 0048 void updateNeedsSave(); 0049 0050 private: 0051 int editIndex() const; 0052 void parseArguments(const QStringList &args); 0053 void createRuleFromProperties(); 0054 0055 QModelIndex findRuleWithProperties(const QVariantMap &info, bool wholeApp) const; 0056 void fillSettingsFromProperties(RuleSettings *settings, const QVariantMap &info, bool wholeApp) const; 0057 0058 private: 0059 RuleBookModel *m_ruleBookModel; 0060 RulesModel *m_rulesModel; 0061 0062 QPersistentModelIndex m_editIndex; 0063 0064 bool m_alreadyLoaded = false; 0065 QVariantMap m_winProperties; 0066 bool m_wholeApp = false; 0067 }; 0068 0069 } // namespace