#pragma once #include "configobject.hpp" #include #include #include #include #include namespace ZShell::config { class AppearanceRounding : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY(qreal, extraSmall, 4) CFG_PROPERTY(qreal, full, 1000) CFG_PROPERTY(qreal, large, 24) CFG_PROPERTY(qreal, medium, 16) CFG_PROPERTY(qreal, normal, 18) CFG_PROPERTY(qreal, scale, 1) CFG_PROPERTY(qreal, small, 12) CFG_PROPERTY(qreal, smallest, 8) public: explicit AppearanceRounding(QObject* parent = nullptr) : ConfigObject(parent) {} }; class AppearancePadding : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY(qreal, extraLarge, 28) CFG_PROPERTY(qreal, extraLargeIncreased, 32) CFG_PROPERTY(qreal, extraSmall, 4) CFG_PROPERTY(qreal, large, 16) CFG_PROPERTY(qreal, largeIncreased, 20) CFG_PROPERTY(qreal, larger, 12) CFG_PROPERTY(qreal, normal, 8) CFG_PROPERTY(qreal, scale, 1) CFG_PROPERTY(qreal, small, 5) CFG_PROPERTY(qreal, smaller, 7) CFG_PROPERTY(qreal, smallest, 2) public: explicit AppearancePadding(QObject* parent = nullptr) : ConfigObject(parent) {} }; class AppearanceSpacing : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY(qreal, extraSmall, 4) CFG_PROPERTY(qreal, large, 20) CFG_PROPERTY(qreal, larger, 16) CFG_PROPERTY(qreal, normal, 12) CFG_PROPERTY(qreal, scale, 1) CFG_PROPERTY(qreal, small, 8) CFG_PROPERTY(qreal, smaller, 10) public: explicit AppearanceSpacing(QObject* parent = nullptr) : ConfigObject(parent) {} }; class FontSizeTokens : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY(qreal, extraLarge, 28) CFG_PROPERTY(qreal, large, 18) CFG_PROPERTY(qreal, larger, 16) CFG_PROPERTY(qreal, medium, 14) CFG_PROPERTY(qreal, normal, 13) CFG_PROPERTY(qreal, scale, 1) CFG_PROPERTY(qreal, small, 11) CFG_PROPERTY(qreal, smaller, 12) public: explicit FontSizeTokens(QObject* parent = nullptr) : ConfigObject(parent) {} }; class FontTokens : public ConfigObject { Q_OBJECT QML_ANONYMOUS CONFIG_SUBOBJECT(FontSizeTokens, size) public: explicit FontTokens(QObject* parent = nullptr) : ConfigObject(parent), m_size(new FontSizeTokens(this)) {} }; class AnimCurves : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY( QVariantList, emphasized, QVariantList{ 0.05, 0, 2.0 / 15.0, 0.06, 1.0 / 6.0, 0.4, 5.0 / 24.0, 0.82, 0.25, 1, 1, 1}) CFG_PROPERTY( QVariantList, emphasizedAccel, QVariantList{0.3, 0, 0.8, 0.15, 1, 1}) CFG_PROPERTY( QVariantList, emphasizedDecel, QVariantList{0.05, 0.7, 0.1, 1, 1, 1}) CFG_PROPERTY( QVariantList, expressiveDefaultEffects, QVariantList{0.34, 0.8, 0.34, 1, 1, 1}) CFG_PROPERTY( QVariantList, expressiveDefaultSpatial, QVariantList{0.38, 1.21, 0.22, 1, 1, 1}) CFG_PROPERTY( QVariantList, expressiveEffects, QVariantList{0.34, 0.8, 0.34, 1, 1, 1}) CFG_PROPERTY( QVariantList, expressiveFastEffects, QVariantList{0.31, 0.94, 0.34, 1, 1, 1}) CFG_PROPERTY( QVariantList, expressiveFastSpatial, QVariantList{0.42, 1.67, 0.21, 0.9, 1, 1}) CFG_PROPERTY( QVariantList, expressiveSlowEffects, QVariantList{0.34, 0.88, 0.34, 1, 1, 1}) CFG_PROPERTY( QVariantList, expressiveSlowSpatial, QVariantList{0.39, 1.29, 0.35, 0.98, 1, 1}) CFG_PROPERTY(QVariantList, standard, QVariantList{0.2, 0, 0, 1, 1, 1}) CFG_PROPERTY(QVariantList, standardAccel, QVariantList{0.3, 0, 1, 1, 1, 1}) CFG_PROPERTY(QVariantList, standardDecel, QVariantList{0, 0, 0, 1, 1, 1}) public: explicit AnimCurves(QObject* parent = nullptr) : ConfigObject(parent) {} }; class AnimDurations : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY(int, expressiveDefaultSpatial, 500) CFG_PROPERTY(int, expressiveEffects, 200) CFG_PROPERTY(int, expressiveFastEffects, 150) CFG_PROPERTY(int, expressiveFastSpatial, 350) CFG_PROPERTY(int, expressiveSlowEffects, 300) CFG_PROPERTY(int, extraLarge, 1000) CFG_PROPERTY(int, large, 600) CFG_PROPERTY(int, normal, 400) CFG_PROPERTY(qreal, scale, 1) CFG_PROPERTY(int, small, 200) public: explicit AnimDurations(QObject* parent = nullptr) : ConfigObject(parent) {} }; class AnimTokens : public ConfigObject { Q_OBJECT QML_ANONYMOUS CONFIG_SUBOBJECT(AnimCurves, curves) CONFIG_SUBOBJECT(AnimDurations, durations) public: explicit AnimTokens(QObject* parent = nullptr) : ConfigObject(parent) , m_curves(new AnimCurves(this)) , m_durations(new AnimDurations(this)) {} }; class BarTokens : public ConfigObject { Q_OBJECT QML_ANONYMOUS CFG_PROPERTY(int, innerSize, 28) public: explicit BarTokens(QObject* parent = nullptr) : ConfigObject(parent) {} }; class Tokens : public ConfigObject { Q_OBJECT QML_ELEMENT QML_SINGLETON CONFIG_SUBOBJECT(AppearanceRounding, rounding) CONFIG_SUBOBJECT(AppearancePadding, padding) CONFIG_SUBOBJECT(AppearanceSpacing, spacing) CONFIG_SUBOBJECT(FontTokens, font) CONFIG_SUBOBJECT(AnimTokens, anim) CONFIG_SUBOBJECT(BarTokens, bar) public: explicit Tokens(QObject* parent = nullptr) : ConfigObject(parent) , m_rounding(new AppearanceRounding(this)) , m_padding(new AppearancePadding(this)) , m_spacing(new AppearanceSpacing(this)) , m_font(new FontTokens(this)) , m_anim(new AnimTokens(this)) , m_bar(new BarTokens(this)) {} static Tokens* create(QQmlEngine*, QJSEngine*) { return new Tokens(); } }; } // namespace ZShell::config