File indexing completed on 2024-04-28 05:36:11

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
0003  *  SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  *
0007  */
0008 
0009 #ifndef _KCM_PLYMOUTH_H
0010 #define _KCM_PLYMOUTH_H
0011 
0012 #include <KQuickConfigModule>
0013 #include <QDir>
0014 #include <QStandardItemModel>
0015 
0016 #include <KNSCore/Entry>
0017 
0018 class QQuickItem;
0019 
0020 class KCMPlymouth : public KQuickConfigModule
0021 {
0022     Q_OBJECT
0023     Q_PROPERTY(QStandardItemModel *themesModel READ themesModel CONSTANT)
0024     Q_PROPERTY(QString selectedPlugin READ selectedPlugin WRITE setSelectedPlugin NOTIFY selectedPluginChanged)
0025     Q_PROPERTY(int selectedPluginIndex READ selectedPluginIndex NOTIFY selectedPluginIndexChanged)
0026     Q_PROPERTY(bool busy READ busy WRITE setBusy NOTIFY busyChanged)
0027 
0028 public:
0029     enum Roles {
0030         DescriptionRole = Qt::UserRole + 1,
0031         PluginNameRole,
0032         ScreenhotRole,
0033         UninstallableRole,
0034     };
0035     explicit KCMPlymouth(QObject *parent, const KPluginMetaData &metaData);
0036     ~KCMPlymouth() override;
0037 
0038     QStandardItemModel *themesModel();
0039 
0040     QString selectedPlugin() const;
0041     void setSelectedPlugin(const QString &plugin);
0042 
0043     int selectedPluginIndex() const;
0044 
0045     bool busy() const;
0046     void setBusy(const bool &busy);
0047 
0048     Q_INVOKABLE void reloadModel();
0049     Q_INVOKABLE void onEntryEvent(const KNSCore::Entry &entry);
0050     Q_INVOKABLE void uninstall(const QString &plugin);
0051 
0052 public Q_SLOTS:
0053     void load() override;
0054     void save() override;
0055     void defaults() override;
0056 
0057 Q_SIGNALS:
0058     void selectedPluginChanged();
0059     void selectedPluginIndexChanged();
0060 
0061     void busyChanged();
0062 
0063     void showSuccessMessage(const QString &message);
0064     void showErrorMessage(const QString &message);
0065 
0066 private:
0067     QStandardItemModel *const m_model;
0068     QString m_selectedPlugin;
0069     bool m_busy = false;
0070 };
0071 
0072 #endif