initial commit for media widget update + anim tokens restructure
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 20s
JS/TS / lint (pull_request) Successful in 22s
Python / static (pull_request) Successful in 57s
Rust / fmt (pull_request) Successful in 1m2s
C++ / build (pull_request) Successful in 2m10s
Rust / build (pull_request) Successful in 1m50s
Rust / clippy (pull_request) Successful in 1m25s
Python / verify (pull_request) Successful in 2m58s
C++ / clang-tidy (pull_request) Successful in 7m8s

This commit is contained in:
2026-08-18 16:14:41 +02:00
parent 8ec454306f
commit 7d6f3cc275
162 changed files with 1385 additions and 1080 deletions
+1
View File
@@ -5,6 +5,7 @@ qml_module(ZShell-config
configobject.hpp configobject.cpp
configlist.hpp configlist.cpp
config.hpp config.cpp
anim.hpp anim.cpp
tokens.hpp
appearance.hpp
background.hpp
+47
View File
@@ -0,0 +1,47 @@
#include "anim.hpp"
#include "tokens.hpp"
#include <qpoint.h>
namespace ZShell::config {
QEasingCurve AnimEasing::buildCurve(const QList<qreal>& points) {
QEasingCurve curve(QEasingCurve::BezierSpline);
for (int i = 0; i + 5 < points.size(); i += 6) {
QPointF c1(points[i], points[i + 1]);
QPointF c2(points[i + 2], points[i + 3]);
QPointF end(points[i + 4], points[i + 5]);
curve.addCubicBezierSegment(c1, c2, end);
}
return curve;
}
void AnimEasing::bindCurves(AnimCurves* curves) {
m_curves = curves;
connect(
curves,
&AnimCurves::propertiesChanged,
this,
&AnimEasing::rebuildCurves);
rebuildCurves();
}
void AnimEasing::rebuildCurves() {
if (!m_curves) return;
m_emphasized = buildCurve(m_curves->emphasized());
m_emphasizedAccel = buildCurve(m_curves->emphasizedAccel());
m_emphasizedDecel = buildCurve(m_curves->emphasizedDecel());
m_standard = buildCurve(m_curves->standard());
m_standardAccel = buildCurve(m_curves->standardAccel());
m_standardDecel = buildCurve(m_curves->standardDecel());
m_expressiveFastSpatial = buildCurve(m_curves->expressiveFastSpatial());
m_expressiveDefaultSpatial =
buildCurve(m_curves->expressiveDefaultSpatial());
m_expressiveSlowSpatial = buildCurve(m_curves->expressiveSlowSpatial());
m_expressiveFastEffects = buildCurve(m_curves->expressiveFastEffects());
m_expressiveDefaultEffects =
buildCurve(m_curves->expressiveDefaultEffects());
m_expressiveSlowEffects = buildCurve(m_curves->expressiveSlowEffects());
emit curvesChanged();
}
} // namespace ZShell::config
+95
View File
@@ -0,0 +1,95 @@
#pragma once
#include <qeasingcurve.h>
#include <qobject.h>
#include <qqmlintegration.h>
namespace ZShell::config {
class AnimCurves;
class AnimDurations;
class AnimEasing : public QObject {
Q_OBJECT
QML_ANONYMOUS
Q_PROPERTY(QEasingCurve emphasized READ emphasized NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve emphasizedAccel READ emphasizedAccel NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve emphasizedDecel READ emphasizedDecel NOTIFY curvesChanged)
Q_PROPERTY(QEasingCurve standard READ standard NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve standardAccel READ standardAccel NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve standardDecel READ standardDecel NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveFastSpatial READ expressiveFastSpatial NOTIFY
curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveDefaultSpatial READ expressiveDefaultSpatial
NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveSlowSpatial READ expressiveSlowSpatial NOTIFY
curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveFastEffects READ expressiveFastEffects NOTIFY
curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveDefaultEffects READ expressiveDefaultEffects
NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveSlowEffects READ expressiveSlowEffects NOTIFY
curvesChanged)
public:
explicit AnimEasing(QObject* parent = nullptr) : QObject(parent) {}
void bindCurves(AnimCurves* curves);
[[nodiscard]] QEasingCurve emphasized() const { return m_emphasized; }
[[nodiscard]] QEasingCurve emphasizedAccel() const {
return m_emphasizedAccel;
}
[[nodiscard]] QEasingCurve emphasizedDecel() const {
return m_emphasizedDecel;
}
[[nodiscard]] QEasingCurve standard() const { return m_standard; }
[[nodiscard]] QEasingCurve standardAccel() const { return m_standardAccel; }
[[nodiscard]] QEasingCurve standardDecel() const { return m_standardDecel; }
[[nodiscard]] QEasingCurve expressiveFastSpatial() const {
return m_expressiveFastSpatial;
}
[[nodiscard]] QEasingCurve expressiveDefaultSpatial() const {
return m_expressiveDefaultSpatial;
}
[[nodiscard]] QEasingCurve expressiveSlowSpatial() const {
return m_expressiveSlowSpatial;
}
[[nodiscard]] QEasingCurve expressiveFastEffects() const {
return m_expressiveFastEffects;
}
[[nodiscard]] QEasingCurve expressiveDefaultEffects() const {
return m_expressiveDefaultEffects;
}
[[nodiscard]] QEasingCurve expressiveSlowEffects() const {
return m_expressiveSlowEffects;
}
signals:
void curvesChanged();
private:
static QEasingCurve buildCurve(const QList<qreal>& points);
void rebuildCurves();
AnimCurves* m_curves = nullptr;
QEasingCurve m_emphasized, m_emphasizedAccel, m_emphasizedDecel;
QEasingCurve m_standard, m_standardAccel, m_standardDecel;
QEasingCurve m_expressiveFastSpatial, m_expressiveDefaultSpatial,
m_expressiveSlowSpatial;
QEasingCurve m_expressiveFastEffects, m_expressiveDefaultEffects,
m_expressiveSlowEffects;
};
} // namespace ZShell::config
+162 -105
View File
@@ -1,12 +1,15 @@
#pragma once
#include "configobject.hpp"
#include "anim.hpp"
#include <QVariantList>
#include <limits>
#include <qobject.h>
#include <qqmlengine.h>
#include <qqmlintegration.h>
#include <qqmlregistration.h>
#include <qtypes.h>
namespace ZShell::config {
@@ -15,13 +18,15 @@ class AppearanceRounding : public ConfigObject {
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, 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, 12)
CFG_PROPERTY(qreal, smallest, 8)
CFG_PROPERTY(qreal, small, 8)
public:
explicit AppearanceRounding(QObject* parent = nullptr)
@@ -32,17 +37,15 @@ 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)
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)
@@ -53,13 +56,14 @@ 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)
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)
@@ -70,14 +74,12 @@ 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)
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) {}
@@ -98,86 +100,63 @@ 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})
CFG_PROPERTY(QList<qreal>, emphasized)
CFG_PROPERTY(QList<qreal>, emphasizedAccel)
CFG_PROPERTY(QList<qreal>, emphasizedDecel)
CFG_PROPERTY(QList<qreal>, standard)
CFG_PROPERTY(QList<qreal>, standardAccel)
CFG_PROPERTY(QList<qreal>, standardDecel)
CFG_PROPERTY(QList<qreal>, expressiveFastSpatial)
CFG_PROPERTY(QList<qreal>, expressiveDefaultSpatial)
CFG_PROPERTY(QList<qreal>, expressiveSlowSpatial)
CFG_PROPERTY(QList<qreal>, expressiveFastEffects)
CFG_PROPERTY(QList<qreal>, expressiveDefaultEffects)
CFG_PROPERTY(QList<qreal>, expressiveSlowEffects)
public:
explicit AnimCurves(QObject* parent = nullptr) : ConfigObject(parent) {}
explicit AnimCurves(QObject* parent = nullptr)
: ConfigObject(parent)
, m_emphasized(
{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})
, m_emphasizedAccel({0.3, 0, 0.8, 0.15, 1, 1})
, m_emphasizedDecel({0.05, 0.7, 0.1, 1, 1, 1})
, m_standard({0.2, 0, 0, 1, 1, 1})
, m_standardAccel({0.3, 0, 1, 1, 1, 1})
, m_standardDecel({0, 0, 0, 1, 1, 1})
, m_expressiveFastSpatial({0.42, 1.67, 0.21, 0.9, 1, 1})
, m_expressiveDefaultSpatial({0.38, 1.21, 0.22, 1, 1, 1})
, m_expressiveSlowSpatial({0.39, 1.29, 0.35, 0.98, 1, 1})
, m_expressiveFastEffects({0.31, 0.94, 0.34, 1, 1, 1})
, m_expressiveDefaultEffects({0.34, 0.8, 0.34, 1, 1, 1})
, m_expressiveSlowEffects({0.34, 0.88, 0.34, 1, 1, 1}) {}
};
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)
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) {}
@@ -187,14 +166,92 @@ class AnimTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(AnimCurves, curves)
CONFIG_SUBOBJECT(AnimDurations, durations)
Q_PROPERTY(QEasingCurve emphasized READ emphasized NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve emphasizedAccel READ emphasizedAccel NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve emphasizedDecel READ emphasizedDecel NOTIFY curvesChanged)
Q_PROPERTY(QEasingCurve standard READ standard NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve standardAccel READ standardAccel NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve standardDecel READ standardDecel NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveFastSpatial READ expressiveFastSpatial NOTIFY
curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveDefaultSpatial READ expressiveDefaultSpatial
NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveSlowSpatial READ expressiveSlowSpatial NOTIFY
curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveFastEffects READ expressiveFastEffects NOTIFY
curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveDefaultEffects READ expressiveDefaultEffects
NOTIFY curvesChanged)
Q_PROPERTY(
QEasingCurve expressiveSlowEffects READ expressiveSlowEffects NOTIFY
curvesChanged)
public:
explicit AnimTokens(QObject* parent = nullptr)
: ConfigObject(parent)
, m_curves(new AnimCurves(this))
, m_durations(new AnimDurations(this)) {}
, m_durations(new AnimDurations(this))
, m_easing(new AnimEasing(this)) {
connect(
m_easing,
&AnimEasing::curvesChanged,
this,
&AnimTokens::curvesChanged);
m_easing->bindCurves(m_curves);
}
[[nodiscard]] QEasingCurve emphasized() const {
return m_easing->emphasized();
}
[[nodiscard]] QEasingCurve emphasizedAccel() const {
return m_easing->emphasizedAccel();
}
[[nodiscard]] QEasingCurve emphasizedDecel() const {
return m_easing->emphasizedDecel();
}
[[nodiscard]] QEasingCurve standard() const { return m_easing->standard(); }
[[nodiscard]] QEasingCurve standardAccel() const {
return m_easing->standardAccel();
}
[[nodiscard]] QEasingCurve standardDecel() const {
return m_easing->standardDecel();
}
[[nodiscard]] QEasingCurve expressiveFastSpatial() const {
return m_easing->expressiveFastSpatial();
}
[[nodiscard]] QEasingCurve expressiveDefaultSpatial() const {
return m_easing->expressiveDefaultSpatial();
}
[[nodiscard]] QEasingCurve expressiveSlowSpatial() const {
return m_easing->expressiveSlowSpatial();
}
[[nodiscard]] QEasingCurve expressiveFastEffects() const {
return m_easing->expressiveFastEffects();
}
[[nodiscard]] QEasingCurve expressiveDefaultEffects() const {
return m_easing->expressiveDefaultEffects();
}
[[nodiscard]] QEasingCurve expressiveSlowEffects() const {
return m_easing->expressiveSlowEffects();
}
signals:
void curvesChanged();
private:
AnimCurves* m_curves;
AnimEasing* m_easing;
};
class BarTokens : public ConfigObject {