File indexing completed on 2024-05-12 17:07:12

0001 /*
0002     SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <kde@pbroulik.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QAbstractListModel>
0010 #include <QString>
0011 #include <QVector>
0012 
0013 #include "kcmkded.h"
0014 
0015 struct ModulesModelData {
0016     QString display;
0017     QString description;
0018     KDEDConfig::ModuleType type;
0019     bool autoloadEnabled;
0020     QString moduleName;
0021     bool immutable;
0022     bool savedAutoloadEnabled;
0023 };
0024 Q_DECLARE_TYPEINFO(ModulesModelData, Q_MOVABLE_TYPE);
0025 
0026 class ModulesModel : public QAbstractListModel
0027 {
0028     Q_OBJECT
0029 
0030 public:
0031     ModulesModel(QObject *parent);
0032     ~ModulesModel() override;
0033 
0034     enum Roles {
0035         DescriptionRole = Qt::UserRole + 1,
0036         TypeRole,
0037         AutoloadEnabledRole,
0038         StatusRole,
0039         ModuleNameRole,
0040         ImmutableRole,
0041     };
0042 
0043     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0044     QVariant data(const QModelIndex &index, int role) const override;
0045     bool setData(const QModelIndex &index, const QVariant &value, int role) override;
0046     QHash<int, QByteArray> roleNames() const override;
0047 
0048     void load();
0049 
0050     bool runningModulesKnown() const;
0051     void setRunningModulesKnown(bool known);
0052 
0053     QStringList runningModules() const;
0054     void setRunningModules(const QStringList &runningModules);
0055 
0056     bool representsDefault() const;
0057     bool needsSave() const;
0058     void refreshAutoloadEnabledSavedState();
0059 
0060 Q_SIGNALS:
0061     void autoloadedModulesChanged();
0062 
0063 private:
0064     QVector<ModulesModelData> m_data;
0065 
0066     bool m_runningModulesKnown = false;
0067     QStringList m_runningModules;
0068 };