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 config.cpp
configobject.cpp configobject.cpp
appearanceconfig.cpp appearanceconfig.cpp
advancedconfig.hpp tokensconfig.hpp
backgroundconfig.hpp backgroundconfig.hpp
barconfig.hpp barconfig.hpp
borderconfig.hpp borderconfig.hpp

View file

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

View file

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

View file

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

View file

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