File indexing completed on 2026-06-07 05:41:26
0001 /* 0002 SPDX-FileCopyrightText: 2011 Tamas Krutki <ktamasw@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KCModule> 0010 #include <KPackage/Package> 0011 #include <KPluginMetaData> 0012 #include <KPluginModel> 0013 #include <KQuickConfigModule> 0014 #include <QFileInfo> 0015 0016 class KJob; 0017 class KWinScriptsData; 0018 0019 class Module : public KQuickConfigModule 0020 { 0021 Q_OBJECT 0022 0023 Q_PROPERTY(QAbstractItemModel *model READ model CONSTANT) 0024 Q_PROPERTY(QList<KPluginMetaData> pendingDeletions READ pendingDeletions NOTIFY pendingDeletionsChanged) 0025 Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY messageChanged) 0026 Q_PROPERTY(QString infoMessage READ infoMessage NOTIFY messageChanged) 0027 public: 0028 explicit Module(QObject *parent, const KPluginMetaData &data); 0029 0030 void load() override; 0031 void save() override; 0032 void defaults() override; 0033 0034 QAbstractItemModel *model() const 0035 { 0036 return m_model; 0037 } 0038 0039 Q_INVOKABLE void togglePendingDeletion(const KPluginMetaData &data); 0040 Q_INVOKABLE bool canDeleteEntry(const KPluginMetaData &data) 0041 { 0042 return QFileInfo(data.fileName()).isWritable(); 0043 } 0044 0045 QList<KPluginMetaData> pendingDeletions() 0046 { 0047 return m_pendingDeletions; 0048 } 0049 0050 QString errorMessage() const 0051 { 0052 return m_errorMessage; 0053 } 0054 QString infoMessage() const 0055 { 0056 return m_infoMessage; 0057 } 0058 void setErrorMessage(const QString &message) 0059 { 0060 m_infoMessage.clear(); 0061 m_errorMessage = message; 0062 Q_EMIT messageChanged(); 0063 } 0064 0065 /** 0066 * Called when the import script button is clicked. 0067 */ 0068 Q_INVOKABLE void importScript(); 0069 Q_INVOKABLE void onGHNSEntriesChanged(); 0070 0071 Q_INVOKABLE void configure(const KPluginMetaData &data); 0072 0073 Q_SIGNALS: 0074 void messageChanged(); 0075 void pendingDeletionsChanged(); 0076 0077 private: 0078 KWinScriptsData *m_kwinScriptsData; 0079 QList<KPluginMetaData> m_pendingDeletions; 0080 KPluginModel *m_model; 0081 QString m_errorMessage; 0082 QString m_infoMessage; 0083 };