File indexing completed on 2024-04-28 16:54:57

0001 /*
0002     SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <PlasmaQuick/ConfigModel>
0010 #include <PlasmaQuick/ConfigView>
0011 #include <QQmlPropertyMap>
0012 
0013 namespace Plasma
0014 {
0015 class Containment;
0016 }
0017 
0018 class QAbstractItemModel;
0019 class CurrentContainmentActionsModel;
0020 
0021 // TODO: out of the library?
0022 class ContainmentConfigView : public PlasmaQuick::ConfigView
0023 {
0024     Q_OBJECT
0025     Q_PROPERTY(PlasmaQuick::ConfigModel *containmentActionConfigModel READ containmentActionConfigModel CONSTANT)
0026     Q_PROPERTY(QAbstractItemModel *currentContainmentActionsModel READ currentContainmentActionsModel CONSTANT)
0027     Q_PROPERTY(PlasmaQuick::ConfigModel *wallpaperConfigModel READ wallpaperConfigModel CONSTANT)
0028     Q_PROPERTY(PlasmaQuick::ConfigModel *containmentPluginsConfigModel READ containmentPluginsConfigModel CONSTANT)
0029     Q_PROPERTY(QQmlPropertyMap *wallpaperConfiguration READ wallpaperConfiguration NOTIFY wallpaperConfigurationChanged)
0030     Q_PROPERTY(QString currentWallpaper READ currentWallpaper WRITE setCurrentWallpaper NOTIFY currentWallpaperChanged)
0031     Q_PROPERTY(QString containmentPlugin READ containmentPlugin WRITE setContainmentPlugin NOTIFY containmentPluginChanged)
0032 
0033 public:
0034     explicit ContainmentConfigView(Plasma::Containment *interface, QWindow *parent = nullptr);
0035     ~ContainmentConfigView() override;
0036 
0037     void init() override;
0038 
0039     PlasmaQuick::ConfigModel *containmentActionConfigModel();
0040     QAbstractItemModel *currentContainmentActionsModel();
0041     PlasmaQuick::ConfigModel *wallpaperConfigModel();
0042     PlasmaQuick::ConfigModel *containmentPluginsConfigModel();
0043     QString currentWallpaper() const;
0044     void setCurrentWallpaper(const QString &wallpaper);
0045     QQmlPropertyMap *wallpaperConfiguration() const;
0046     QString containmentPlugin() const;
0047     void setContainmentPlugin(const QString &plugin);
0048 
0049     Q_INVOKABLE void applyWallpaper();
0050 
0051 Q_SIGNALS:
0052     void currentWallpaperChanged();
0053     void wallpaperConfigurationChanged();
0054     void containmentPluginChanged();
0055 
0056 protected:
0057     void syncWallpaperObjects();
0058 
0059 private:
0060     Plasma::Containment *m_containment = nullptr;
0061     PlasmaQuick::ConfigModel *m_wallpaperConfigModel = nullptr;
0062     PlasmaQuick::ConfigModel *m_containmentActionConfigModel = nullptr;
0063     PlasmaQuick::ConfigModel *m_containmentPluginsConfigModel = nullptr;
0064     CurrentContainmentActionsModel *m_currentContainmentActionsModel = nullptr;
0065     QString m_currentWallpaper;
0066     QQmlPropertyMap *m_currentWallpaperConfig = nullptr;
0067     QQmlPropertyMap *m_ownWallpaperConfig = nullptr;
0068 };