File indexing completed on 2026-07-12 16:17:49
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 <KPluginMetaData> 0011 #include <KPluginModel> 0012 #include <KQuickAddons/ConfigModule> 0013 #include <kpluginmetadata.h> 0014 0015 class KJob; 0016 class KWinScriptsData; 0017 0018 class Module : public KQuickAddons::ConfigModule 0019 { 0020 Q_OBJECT 0021 0022 Q_PROPERTY(QAbstractItemModel *model READ model CONSTANT) 0023 Q_PROPERTY(QList<KPluginMetaData> pendingDeletions READ pendingDeletions NOTIFY pendingDeletionsChanged) 0024 Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY messageChanged) 0025 Q_PROPERTY(QString infoMessage READ infoMessage NOTIFY messageChanged) 0026 public: 0027 explicit Module(QObject *parent, const KPluginMetaData &data, const QVariantList &args); 0028 0029 void load() override; 0030 void save() override; 0031 void defaults() override; 0032 0033 QAbstractItemModel *model() const 0034 { 0035 return m_model; 0036 } 0037 0038 Q_INVOKABLE void togglePendingDeletion(const KPluginMetaData &data); 0039 Q_INVOKABLE bool canDeleteEntry(const KPluginMetaData &data) 0040 { 0041 return QFileInfo(data.metaDataFileName()).isWritable(); 0042 } 0043 0044 QList<KPluginMetaData> pendingDeletions() 0045 { 0046 return m_pendingDeletions; 0047 } 0048 0049 QString errorMessage() const 0050 { 0051 return m_errorMessage; 0052 } 0053 QString infoMessage() const 0054 { 0055 return m_infoMessage; 0056 } 0057 void setErrorMessage(const QString &message) 0058 { 0059 m_infoMessage.clear(); 0060 m_errorMessage = message; 0061 Q_EMIT messageChanged(); 0062 } 0063 0064 /** 0065 * Called when the import script button is clicked. 0066 */ 0067 Q_INVOKABLE void importScript(); 0068 Q_INVOKABLE void onGHNSEntriesChanged(); 0069 0070 Q_INVOKABLE void configure(const KPluginMetaData &data); 0071 0072 Q_SIGNALS: 0073 void messageChanged(); 0074 void pendingDeletionsChanged(); 0075 0076 private: 0077 void importScriptInstallFinished(KJob *job); 0078 0079 KWinScriptsData *m_kwinScriptsData; 0080 QList<KPluginMetaData> m_pendingDeletions; 0081 KPluginModel *m_model; 0082 QString m_errorMessage; 0083 QString m_infoMessage; 0084 };