feat: fontbuilder to streamline font styling
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 34s
Rust / build (pull_request) Successful in 1m10s
Python / verify (pull_request) Successful in 1m53s
Rust / fmt (pull_request) Successful in 34s
Rust / clippy (pull_request) Successful in 57s

This commit is contained in:
2026-09-21 15:37:45 +02:00
parent 84d5abcaab
commit 25bee293b0
134 changed files with 1813 additions and 1011 deletions
+25 -112
View File
@@ -2,6 +2,9 @@
#include "configobject.hpp"
#include "anim.hpp"
#include "appearance.hpp"
#include "config.hpp"
#include "font.hpp"
#include <QVariantList>
#include <limits>
@@ -13,89 +16,6 @@
namespace ZShell::config {
class AppearanceRounding : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CFG_PROPERTY(qreal, extraSmall, 4)
CFG_PROPERTY(qreal, full, std::numeric_limits<int>::max())
CFG_PROPERTY(qreal, large, 16)
CFG_PROPERTY(qreal, largeIncreased, 20)
CFG_PROPERTY(qreal, extraLarge, 28)
CFG_PROPERTY(qreal, extraLargeIncreased, 32)
CFG_PROPERTY(qreal, extraExtraLarge, 48)
CFG_PROPERTY(qreal, medium, 12)
CFG_PROPERTY(qreal, scale, 1)
CFG_PROPERTY(qreal, small, 8)
public:
explicit AppearanceRounding(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class AppearancePadding : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CFG_PROPERTY(int, extraSmall, 4)
CFG_PROPERTY(int, smaller, 5)
CFG_PROPERTY(int, small, 8)
CFG_PROPERTY(int, medium, 12)
CFG_PROPERTY(int, large, 16)
CFG_PROPERTY(int, largeIncreased, 20)
CFG_PROPERTY(int, extraLarge, 28)
CFG_PROPERTY(int, extraLargeIncreased, 32)
CFG_PROPERTY(int, extraExtraLarge, 48)
public:
explicit AppearancePadding(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class AppearanceSpacing : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CFG_PROPERTY(int, extraSmall, 4)
CFG_PROPERTY(int, small, 8)
CFG_PROPERTY(int, medium, 12)
CFG_PROPERTY(int, large, 16)
CFG_PROPERTY(int, largeIncreased, 20)
CFG_PROPERTY(int, extraLarge, 28)
CFG_PROPERTY(int, extraLargeIncreased, 32)
CFG_PROPERTY(int, extraExtraLarge, 48)
public:
explicit AppearanceSpacing(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class FontSizeTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CFG_PROPERTY(int, small, 11)
CFG_PROPERTY(int, smaller, 12)
CFG_PROPERTY(int, normal, 13)
CFG_PROPERTY(int, larger, 15)
CFG_PROPERTY(int, large, 18)
CFG_PROPERTY(int, extraLarge, 28)
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
@@ -142,31 +62,11 @@ class AnimCurves : public ConfigObject {
, m_expressiveSlowEffects({0.34, 0.88, 0.34, 1, 1, 1}) {}
};
class AnimDurations : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CFG_PROPERTY(int, small, 200)
CFG_PROPERTY(int, scale, 1)
CFG_PROPERTY(int, normal, 400)
CFG_PROPERTY(int, large, 600)
CFG_PROPERTY(int, extraLarge, 1000)
CFG_PROPERTY(int, expressiveFastSpatial, 350)
CFG_PROPERTY(int, expressiveDefaultSpatial, 500)
CFG_PROPERTY(int, expressiveSlowSpatial, 650)
CFG_PROPERTY(int, expressiveFastEffects, 150)
CFG_PROPERTY(int, expressiveDefaultEffects, 200)
CFG_PROPERTY(int, expressiveSlowEffects, 300)
public:
explicit AnimDurations(QObject* parent = nullptr) : ConfigObject(parent) {}
};
class AnimTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(AnimDurations, durations)
Q_PROPERTY(ZShell::config::AnimDurations* durations READ durations CONSTANT)
Q_PROPERTY(QEasingCurve emphasized READ emphasized NOTIFY curvesChanged)
Q_PROPERTY(
@@ -201,7 +101,6 @@ class AnimTokens : public ConfigObject {
explicit AnimTokens(QObject* parent = nullptr)
: ConfigObject(parent)
, m_curves(new AnimCurves(this))
, m_durations(new AnimDurations(this))
, m_easing(new AnimEasing(this)) {
connect(
m_easing,
@@ -211,6 +110,10 @@ class AnimTokens : public ConfigObject {
m_easing->bindCurves(m_curves);
}
[[nodiscard]] AnimDurations* durations() const {
return Config::instance()->appearance()->anim()->durations();
}
[[nodiscard]] QEasingCurve emphasized() const {
return m_easing->emphasized();
}
@@ -269,9 +172,10 @@ class Tokens : public ConfigObject {
QML_ELEMENT
QML_SINGLETON
CONFIG_SUBOBJECT(AppearanceRounding, rounding)
CONFIG_SUBOBJECT(AppearancePadding, padding)
CONFIG_SUBOBJECT(AppearanceSpacing, spacing)
Q_PROPERTY(
ZShell::config::AppearanceRounding* rounding READ rounding CONSTANT)
Q_PROPERTY(ZShell::config::AppearancePadding* padding READ padding CONSTANT)
Q_PROPERTY(ZShell::config::AppearanceSpacing* spacing READ spacing CONSTANT)
CONFIG_SUBOBJECT(FontTokens, font)
CONFIG_SUBOBJECT(AnimTokens, anim)
CONFIG_SUBOBJECT(BarTokens, bar)
@@ -279,12 +183,21 @@ class Tokens : public ConfigObject {
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)) {}
, m_bar(new BarTokens(this)) {
if (!Config::instance()) new Config();
}
[[nodiscard]] AppearanceRounding* rounding() const {
return Config::instance()->appearance()->rounding();
}
[[nodiscard]] AppearancePadding* padding() const {
return Config::instance()->appearance()->padding();
}
[[nodiscard]] AppearanceSpacing* spacing() const {
return Config::instance()->appearance()->spacing();
}
static Tokens* create(QQmlEngine*, QJSEngine*) { return new Tokens(); }
};