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