feat: advanced -> tokens

This commit is contained in:
2 * r + 2 * t 2026-04-11 15:09:59 +10:00
parent 4ff97c8306
commit f4b851b5b3
5 changed files with 79 additions and 106 deletions

View file

@ -4,7 +4,7 @@ qml_module(caelestia-config
config.cpp
configobject.cpp
appearanceconfig.cpp
advancedconfig.hpp
tokensconfig.hpp
backgroundconfig.hpp
barconfig.hpp
borderconfig.hpp

View file

@ -1,5 +1,5 @@
#include "appearanceconfig.hpp"
#include "advancedconfig.hpp"
#include "tokensconfig.hpp"
#include <qmetaobject.h>

View file

@ -34,21 +34,21 @@ GlobalConfig::GlobalConfig(QObject* parent)
, m_sidebar(new SidebarConfig(this))
, m_services(new ServiceConfig(this))
, m_paths(new UserPaths(this))
, m_advanced(new AdvancedConfig(this)) {
, m_tokens(new TokenConfig(this)) {
// Set global instance
s_instance = this;
// Bind token base values from advanced config to appearance computed properties
auto* adv = m_advanced->appearance();
m_appearance->rounding()->bindTokens(adv->rounding());
m_appearance->spacing()->bindTokens(adv->spacing());
m_appearance->padding()->bindTokens(adv->padding());
m_appearance->font()->size()->bindTokens(adv->fontSize());
m_appearance->anim()->durations()->bindTokens(adv->animDurations());
// Bind token base values from token config to appearance computed properties
auto* appearance = m_tokens->appearance();
m_appearance->rounding()->bindTokens(appearance->rounding());
m_appearance->spacing()->bindTokens(appearance->spacing());
m_appearance->padding()->bindTokens(appearance->padding());
m_appearance->font()->size()->bindTokens(appearance->fontSize());
m_appearance->anim()->durations()->bindTokens(appearance->animDurations());
// Each has its own file backend
setupFileBackend(configDir() + QStringLiteral("shell.json"));
m_advanced->setupFileBackend(configDir() + QStringLiteral("advanced.json"));
m_tokens->setupFileBackend(configDir() + QStringLiteral("shell-tokens.json"));
}
GlobalConfig::~GlobalConfig() {

View file

@ -3,7 +3,6 @@
#include <qqmlintegration.h>
#include <qquickitem.h>
#include "advancedconfig.hpp"
#include "appearanceconfig.hpp"
#include "backgroundconfig.hpp"
#include "barconfig.hpp"
@ -18,6 +17,7 @@
#include "serviceconfig.hpp"
#include "sessionconfig.hpp"
#include "sidebarconfig.hpp"
#include "tokensconfig.hpp"
#include "userpaths.hpp"
#include "utilitiesconfig.hpp"
#include "winfoconfig.hpp"
@ -46,14 +46,14 @@ class GlobalConfig : public ConfigObject {
CONFIG_SUBOBJECT(SidebarConfig, sidebar)
CONFIG_SUBOBJECT(ServiceConfig, services)
CONFIG_SUBOBJECT(UserPaths, paths)
// advanced is NOT a CONFIG_SUBOBJECT — it has its own file backend
Q_PROPERTY(AdvancedConfig* advanced READ advanced CONSTANT)
// tokens is NOT a CONFIG_SUBOBJECT — it has its own file backend
Q_PROPERTY(TokenConfig* tokens READ tokens CONSTANT)
public:
static GlobalConfig* instance();
static GlobalConfig* create(QQmlEngine*, QJSEngine*);
[[nodiscard]] AdvancedConfig* advanced() const { return m_advanced; }
[[nodiscard]] TokenConfig* tokens() const { return m_tokens; }
Q_INVOKABLE void save();
Q_INVOKABLE void reload();
@ -63,7 +63,7 @@ public:
private:
explicit GlobalConfig(QObject* parent = nullptr);
AdvancedConfig* m_advanced = nullptr;
TokenConfig* m_tokens = nullptr;
};
class Config : public QQuickItem {

View file

@ -111,7 +111,7 @@ public:
: ConfigObject(parent) {}
};
class AdvancedAppearance : public ConfigObject {
class AppearanceTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -123,7 +123,7 @@ class AdvancedAppearance : public ConfigObject {
CONFIG_SUBOBJECT(AnimDurationTokens, animDurations)
public:
explicit AdvancedAppearance(QObject* parent = nullptr)
explicit AppearanceTokens(QObject* parent = nullptr)
: ConfigObject(parent)
, m_curves(new AnimCurves(this))
, m_rounding(new RoundingTokens(this))
@ -133,7 +133,7 @@ public:
, m_animDurations(new AnimDurationTokens(this)) {}
};
class BarSizes : public ConfigObject {
class BarTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -145,11 +145,11 @@ class BarSizes : public ConfigObject {
CONFIG_PROPERTY(int, kbLayoutWidth, 320)
public:
explicit BarSizes(QObject* parent = nullptr)
explicit BarTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class AdvancedDashboard : public ConfigObject {
class DashboardTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -157,53 +157,26 @@ class AdvancedDashboard : public ConfigObject {
CONFIG_PROPERTY(bool, showMedia, true)
CONFIG_PROPERTY(bool, showPerformance, true)
CONFIG_PROPERTY(bool, showWeather, true)
Q_PROPERTY(int tabIndicatorHeight READ tabIndicatorHeight CONSTANT)
Q_PROPERTY(int tabIndicatorSpacing READ tabIndicatorSpacing CONSTANT)
Q_PROPERTY(int infoWidth READ infoWidth CONSTANT)
Q_PROPERTY(int infoIconSize READ infoIconSize CONSTANT)
Q_PROPERTY(int dateTimeWidth READ dateTimeWidth CONSTANT)
Q_PROPERTY(int mediaWidth READ mediaWidth CONSTANT)
Q_PROPERTY(int mediaProgressSweep READ mediaProgressSweep CONSTANT)
Q_PROPERTY(int mediaProgressThickness READ mediaProgressThickness CONSTANT)
Q_PROPERTY(int resourceProgessThickness READ resourceProgessThickness CONSTANT)
Q_PROPERTY(int weatherWidth READ weatherWidth CONSTANT)
Q_PROPERTY(int mediaCoverArtSize READ mediaCoverArtSize CONSTANT)
Q_PROPERTY(int mediaVisualiserSize READ mediaVisualiserSize CONSTANT)
Q_PROPERTY(int resourceSize READ resourceSize CONSTANT)
CONFIG_PROPERTY(int, tabIndicatorHeight, 3)
CONFIG_PROPERTY(int, tabIndicatorSpacing, 5)
CONFIG_PROPERTY(int, infoWidth, 200)
CONFIG_PROPERTY(int, infoIconSize, 25)
CONFIG_PROPERTY(int, dateTimeWidth, 110)
CONFIG_PROPERTY(int, mediaWidth, 200)
CONFIG_PROPERTY(int, mediaProgressSweep, 180)
CONFIG_PROPERTY(int, mediaProgressThickness, 8)
CONFIG_PROPERTY(int, resourceProgressThickness, 10)
CONFIG_PROPERTY(int, weatherWidth, 250)
CONFIG_PROPERTY(int, mediaCoverArtSize, 150)
CONFIG_PROPERTY(int, mediaVisualiserSize, 80)
CONFIG_PROPERTY(int, resourceSize, 200)
public:
explicit AdvancedDashboard(QObject* parent = nullptr)
explicit DashboardTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
[[nodiscard]] static int tabIndicatorHeight() { return 3; }
[[nodiscard]] static int tabIndicatorSpacing() { return 5; }
[[nodiscard]] static int infoWidth() { return 200; }
[[nodiscard]] static int infoIconSize() { return 25; }
[[nodiscard]] static int dateTimeWidth() { return 110; }
[[nodiscard]] static int mediaWidth() { return 200; }
[[nodiscard]] static int mediaProgressSweep() { return 180; }
[[nodiscard]] static int mediaProgressThickness() { return 8; }
[[nodiscard]] static int resourceProgessThickness() { return 10; }
[[nodiscard]] static int weatherWidth() { return 250; }
[[nodiscard]] static int mediaCoverArtSize() { return 150; }
[[nodiscard]] static int mediaVisualiserSize() { return 80; }
[[nodiscard]] static int resourceSize() { return 200; }
};
class LauncherSizes : public ConfigObject {
class LauncherTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -213,11 +186,11 @@ class LauncherSizes : public ConfigObject {
CONFIG_PROPERTY(int, wallpaperHeight, 200)
public:
explicit LauncherSizes(QObject* parent = nullptr)
explicit LauncherTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class NotifsSizes : public ConfigObject {
class NotifsTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -226,11 +199,11 @@ class NotifsSizes : public ConfigObject {
CONFIG_PROPERTY(int, badge, 20)
public:
explicit NotifsSizes(QObject* parent = nullptr)
explicit NotifsTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class OsdSizes : public ConfigObject {
class OsdTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -238,33 +211,33 @@ class OsdSizes : public ConfigObject {
CONFIG_PROPERTY(int, sliderHeight, 150)
public:
explicit OsdSizes(QObject* parent = nullptr)
explicit OsdTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class SessionSizes : public ConfigObject {
class SessionTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, button, 80)
public:
explicit SessionSizes(QObject* parent = nullptr)
explicit SessionTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class SidebarSizes : public ConfigObject {
class SidebarTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, width, 430)
public:
explicit SidebarSizes(QObject* parent = nullptr)
explicit SidebarTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class UtilitiesSizes : public ConfigObject {
class UtilitiesTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -272,11 +245,11 @@ class UtilitiesSizes : public ConfigObject {
CONFIG_PROPERTY(int, toastWidth, 430)
public:
explicit UtilitiesSizes(QObject* parent = nullptr)
explicit UtilitiesTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class LockSizes : public ConfigObject {
class LockTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -285,11 +258,11 @@ class LockSizes : public ConfigObject {
CONFIG_PROPERTY(int, centerWidth, 600)
public:
explicit LockSizes(QObject* parent = nullptr)
explicit LockTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class WInfoSizes : public ConfigObject {
class WInfoTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -297,11 +270,11 @@ class WInfoSizes : public ConfigObject {
CONFIG_PROPERTY(qreal, detailsWidth, 500)
public:
explicit WInfoSizes(QObject* parent = nullptr)
explicit WInfoTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class ControlCenterSizes : public ConfigObject {
class ControlCenterTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
@ -309,42 +282,42 @@ class ControlCenterSizes : public ConfigObject {
CONFIG_PROPERTY(qreal, ratio, 16.0 / 9.0)
public:
explicit ControlCenterSizes(QObject* parent = nullptr)
explicit ControlCenterTokens(QObject* parent = nullptr)
: ConfigObject(parent) {}
};
class AdvancedConfig : public ConfigObject {
class TokenConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(AdvancedAppearance, appearance)
CONFIG_SUBOBJECT(BarSizes, bar)
CONFIG_SUBOBJECT(AdvancedDashboard, dashboard)
CONFIG_SUBOBJECT(LauncherSizes, launcher)
CONFIG_SUBOBJECT(NotifsSizes, notifs)
CONFIG_SUBOBJECT(OsdSizes, osd)
CONFIG_SUBOBJECT(SessionSizes, session)
CONFIG_SUBOBJECT(SidebarSizes, sidebar)
CONFIG_SUBOBJECT(UtilitiesSizes, utilities)
CONFIG_SUBOBJECT(LockSizes, lock)
CONFIG_SUBOBJECT(WInfoSizes, winfo)
CONFIG_SUBOBJECT(ControlCenterSizes, controlCenter)
CONFIG_SUBOBJECT(AppearanceTokens, appearance)
CONFIG_SUBOBJECT(BarTokens, bar)
CONFIG_SUBOBJECT(DashboardTokens, dashboard)
CONFIG_SUBOBJECT(LauncherTokens, launcher)
CONFIG_SUBOBJECT(NotifsTokens, notifs)
CONFIG_SUBOBJECT(OsdTokens, osd)
CONFIG_SUBOBJECT(SessionTokens, session)
CONFIG_SUBOBJECT(SidebarTokens, sidebar)
CONFIG_SUBOBJECT(UtilitiesTokens, utilities)
CONFIG_SUBOBJECT(LockTokens, lock)
CONFIG_SUBOBJECT(WInfoTokens, winfo)
CONFIG_SUBOBJECT(ControlCenterTokens, controlCenter)
public:
explicit AdvancedConfig(QObject* parent = nullptr)
explicit TokenConfig(QObject* parent = nullptr)
: ConfigObject(parent)
, m_appearance(new AdvancedAppearance(this))
, m_bar(new BarSizes(this))
, m_dashboard(new AdvancedDashboard(this))
, m_launcher(new LauncherSizes(this))
, m_notifs(new NotifsSizes(this))
, m_osd(new OsdSizes(this))
, m_session(new SessionSizes(this))
, m_sidebar(new SidebarSizes(this))
, m_utilities(new UtilitiesSizes(this))
, m_lock(new LockSizes(this))
, m_winfo(new WInfoSizes(this))
, m_controlCenter(new ControlCenterSizes(this)) {}
, m_appearance(new AppearanceTokens(this))
, m_bar(new BarTokens(this))
, m_dashboard(new DashboardTokens(this))
, m_launcher(new LauncherTokens(this))
, m_notifs(new NotifsTokens(this))
, m_osd(new OsdTokens(this))
, m_session(new SessionTokens(this))
, m_sidebar(new SidebarTokens(this))
, m_utilities(new UtilitiesTokens(this))
, m_lock(new LockTokens(this))
, m_winfo(new WInfoTokens(this))
, m_controlCenter(new ControlCenterTokens(this)) {}
};
} // namespace caelestia::config