nosignal-shell/plugin/src/Caelestia/Config/backgroundconfig.hpp
2026-04-11 03:07:48 +10:00

84 lines
2.2 KiB
C++

#pragma once
#include "configobject.hpp"
#include <qstring.h>
namespace caelestia::config {
class DesktopClockBackground : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(qreal, opacity, 0.7)
CONFIG_PROPERTY(bool, blur, true)
public:
explicit DesktopClockBackground(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class DesktopClockShadow : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(qreal, opacity, 0.7)
CONFIG_PROPERTY(qreal, blur, 0.4)
public:
explicit DesktopClockShadow(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class DesktopClock : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(qreal, scale, 1.0)
CONFIG_PROPERTY(QString, position, QStringLiteral("bottom-right"))
CONFIG_PROPERTY(bool, invertColors, false)
CONFIG_SUBOBJECT(DesktopClockBackground, background)
CONFIG_SUBOBJECT(DesktopClockShadow, shadow)
public:
explicit DesktopClock(QObject* parent = nullptr)
: ConfigObject(parent)
, m_background(new DesktopClockBackground(this))
, m_shadow(new DesktopClockShadow(this)) {}
};
class BackgroundVisualiser : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(bool, autoHide, true)
CONFIG_PROPERTY(bool, blur, false)
CONFIG_PROPERTY(qreal, rounding, 1)
CONFIG_PROPERTY(qreal, spacing, 1)
public:
explicit BackgroundVisualiser(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class BackgroundConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(bool, wallpaperEnabled, true)
CONFIG_SUBOBJECT(DesktopClock, desktopClock)
CONFIG_SUBOBJECT(BackgroundVisualiser, visualiser)
public:
explicit BackgroundConfig(QObject* parent = nullptr)
: ConfigObject(parent)
, m_desktopClock(new DesktopClock(this))
, m_visualiser(new BackgroundVisualiser(this)) {}
};
} // namespace caelestia::config