#pragma once #include #include #include #include #include #include #include "wallpaperservice.hpp" namespace ZShell::internal { class WallpaperObject : public QObject { Q_OBJECT QML_ELEMENT Q_PROPERTY( WallpaperService* service READ service WRITE setService NOTIFY serviceChanged) Q_PROPERTY(QString screen READ screen WRITE setScreen NOTIFY screenChanged) Q_PROPERTY(qreal cropX READ cropX WRITE setCropX NOTIFY cropXChanged) Q_PROPERTY(qreal cropY READ cropY WRITE setCropY NOTIFY cropYChanged) Q_PROPERTY( qreal cropWidth READ cropWidth WRITE setCropWidth NOTIFY cropWidthChanged) Q_PROPERTY( qreal cropHeight READ cropHeight WRITE setCropHeight NOTIFY cropHeightChanged) Q_PROPERTY(qreal zoom READ zoom WRITE setZoom NOTIFY zoomChanged) public: explicit WallpaperObject(QObject* parent = nullptr); ~WallpaperObject() override; WallpaperService* service() const { return m_service; } void setService(WallpaperService* service); QString screen() const { return m_screen; } void setScreen(const QString& screen); qreal cropX() const { return m_cropX; } void setCropX(qreal x); qreal cropY() const { return m_cropY; } void setCropY(qreal y); qreal cropWidth() const { return m_cropWidth; } void setCropWidth(qreal w); qreal cropHeight() const { return m_cropHeight; } void setCropHeight(qreal h); qreal zoom() const { return m_zoom; } void setZoom(qreal zoom); signals: void serviceChanged(); void screenChanged(); void cropXChanged(); void cropYChanged(); void cropWidthChanged(); void cropHeightChanged(); void zoomChanged(); private: void registerScreen(); void push(); QPointer m_service; QString m_screen; qreal m_cropX = 0.0; qreal m_cropY = 0.0; qreal m_cropWidth = 1.0; qreal m_cropHeight = 1.0; qreal m_zoom = 1.0; }; } // namespace ZShell::internal