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 };