File indexing completed on 2026-06-07 05:41:21

0001 /*
0002     SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 #pragma once
0007 
0008 #include <KDecoration2/DecorationThemeProvider>
0009 #include <QAbstractListModel>
0010 
0011 namespace KDecoration2
0012 {
0013 
0014 namespace Configuration
0015 {
0016 
0017 class DecorationsModel : public QAbstractListModel
0018 {
0019     Q_OBJECT
0020 public:
0021     enum DecorationRole {
0022         PluginNameRole = Qt::UserRole + 1,
0023         ThemeNameRole,
0024         ConfigurationRole,
0025         RecommendedBorderSizeRole,
0026         KcmoduleNameRole,
0027     };
0028 
0029 public:
0030     explicit DecorationsModel(QObject *parent = nullptr);
0031     ~DecorationsModel() override;
0032 
0033     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0034     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0035     QHash<int, QByteArray> roleNames() const override;
0036 
0037     QModelIndex findDecoration(const QString &pluginName, const QString &themeName = QString()) const;
0038 
0039     QStringList knsProviders() const
0040     {
0041         return m_knsProviders;
0042     }
0043 
0044 public Q_SLOTS:
0045     void init();
0046 
0047 private:
0048     std::vector<KDecoration2::DecorationThemeMetaData> m_plugins;
0049     QStringList m_knsProviders;
0050 };
0051 
0052 }
0053 }