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