From a4e9116570c5bc6fee8368d9ce16a24547026cba Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 2 Sep 2025 11:20:54 +0200 Subject: ... --- accounts/gkleen@sif/shell/quickshell-plugins/Chrono.cpp | 12 ++++-------- accounts/gkleen@sif/shell/quickshell-plugins/Chrono.hpp | 11 ++++------- accounts/gkleen@sif/shell/quickshell/Clock.qml | 17 +++++------------ 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.cpp b/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.cpp index 929b7be6..df0c5781 100644 --- a/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.cpp +++ b/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.cpp @@ -75,14 +75,10 @@ void Chrono::schedule(const std::chrono::time_point& this->timer.start(delay); } -QString Chrono::format() const { return this->mFormat; } -void Chrono::setFormat(QString format) { - if (format == this->mFormat) return; - this->mFormat = format; - emit this->formatChanged(); - this->update(); +QString Chrono::format(const QString& fmt) const { + return QString::fromStdString(std::format(std::runtime_format(fmt.toStdString()), std::chrono::zoned_time(std::chrono::current_zone(), std::chrono::time_point_cast(this->currentTime)))); } -QString Chrono::date() const { - return QString::fromStdString(std::format(std::runtime_format(this->mFormat.toStdString()), std::chrono::zoned_time(std::chrono::current_zone(), std::chrono::time_point_cast(this->currentTime)))); +QDateTime Chrono::date() const { + return QDateTime::fromStdTimePoint(std::chrono::time_point_cast(this->currentTime)); } diff --git a/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.hpp b/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.hpp index 788fa88e..4d06007d 100644 --- a/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.hpp +++ b/accounts/gkleen@sif/shell/quickshell-plugins/Chrono.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -10,8 +11,7 @@ class Chrono : public QObject { Q_OBJECT; Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged); Q_PROPERTY(Chrono::Precision precision READ precision WRITE setPrecision NOTIFY precisionChanged); - Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged); - Q_PROPERTY(QString date READ date NOTIFY dateChanged); + Q_PROPERTY(QDateTime date READ date NOTIFY dateChanged) QML_ELEMENT; public: @@ -30,15 +30,13 @@ public: Chrono::Precision precision() const; void setPrecision(Chrono::Precision precision); - QString format() const; - void setFormat (QString format); + Q_INVOKABLE QString format(const QString& fmt) const; - QString date() const; + QDateTime date() const; signals: void enabledChanged(); void precisionChanged(); - void formatChanged(); void dateChanged(); private slots: @@ -47,7 +45,6 @@ private slots: private: bool mEnabled = true; Chrono::Precision mPrecision = Chrono::Seconds; - QString mFormat = "{:%c}"; QTimer timer; std::chrono::time_point currentTime, targetTime; diff --git a/accounts/gkleen@sif/shell/quickshell/Clock.qml b/accounts/gkleen@sif/shell/quickshell/Clock.qml index 744b187f..a1872ff5 100644 --- a/accounts/gkleen@sif/shell/quickshell/Clock.qml +++ b/accounts/gkleen@sif/shell/quickshell/Clock.qml @@ -43,10 +43,9 @@ Item { Custom.Chrono { id: chrono - format: "W{0:%V-%u} {0:%F} {0:%H:%M:%S%Ez}" - } - text: chrono.date + onDateChanged: clock.text = format("W{0:%V-%u} {0:%F} {0:%H:%M:%S%Ez}") + } font.pointSize: 10 font.family: "Fira Sans" @@ -79,7 +78,7 @@ Item { color: "black" onVisibleChanged: { - yearCalendar.year = systemClock.date.getFullYear(); + yearCalendar.year = chrono.date.getFullYear(); clockMouseArea.angleRem = 0; } @@ -117,7 +116,7 @@ Item { } GridLayout { - property int year: systemClock.date.getFullYear() + property int year: chrono.date.getFullYear() id: yearCalendar @@ -128,12 +127,6 @@ Item { Layout.alignment: Qt.AlignHCenter Layout.fillWidth: false - SystemClock { - id: systemClock - - precision: SystemClock.Minutes - } - Repeater { model: 12 @@ -244,7 +237,7 @@ Item { font.family: "Fira Sans" font.features: { "tnum": 1 } - property bool today: systemClock.date.getFullYear() == model.year && systemClock.date.getMonth() == model.month && systemClock.date.getDate() == model.day + property bool today: chrono.date.getFullYear() == model.year && chrono.date.getMonth() == model.month && chrono.date.getDate() == model.day text: model.day color: today ? "#ff6699" : "white" -- cgit v1.2.3