/* SPDX-FileCopyrightText: 2016 Martin Gräßlin SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #pragma once #include #include #include #include class KConfigLoader; namespace ScreenLocker { class WallpaperIntegration : public QQuickItem { Q_OBJECT Q_PROPERTY(QString pluginName READ pluginName NOTIFY packageChanged) Q_PROPERTY(KConfigPropertyMap *configuration READ configuration NOTIFY configurationChanged) Q_PROPERTY(QQmlListProperty contextualActions READ qmlContextualActions NOTIFY contextualActionsChanged) Q_PROPERTY(bool loading MEMBER m_loading NOTIFY isLoadingChanged) Q_PROPERTY(QColor accentColor READ accentColor WRITE setAccentColor NOTIFY accentColorChanged) public: explicit WallpaperIntegration(QQuickItem *parent = nullptr); ~WallpaperIntegration() override; void init(); void setConfig(const KSharedConfig::Ptr &config) { m_config = config; } QString pluginName() const { return m_pluginName; } void setPluginName(const QString &name); KPackage::Package package() const { return m_package; } KConfigPropertyMap *configuration() const { return m_configuration; } KConfigLoader *configScheme(); QQmlListProperty qmlContextualActions() { static QList list; return {this, &list}; } QColor accentColor() const; void setAccentColor(const QColor &newColor); Q_SIGNALS: void packageChanged(); void configurationChanged(); /** * This is to keep compatible with WallpaperInterface in plasma-framework. * It doesn't have any practical use. */ void isLoadingChanged(); void accentColorChanged(); void openUrlRequested(const QUrl &url); void contextualActionsChanged(const QList &actions); private: QString m_pluginName; KPackage::Package m_package; KSharedConfig::Ptr m_config; KConfigLoader *m_configLoader = nullptr; KConfigPropertyMap *m_configuration = nullptr; bool m_loading = false; }; }