1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
/*
SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#pragma once
#include <KConfigPropertyMap>
#include <KPackage/Package>
#include <KSharedConfig>
#include <QQuickItem>
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<QAction> 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<QAction> qmlContextualActions()
{
static QList<QAction *> 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<QAction *> &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;
};
}
|