diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2026-03-12 22:51:07 +1100 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2026-03-12 22:51:07 +1100 |
| commit | 27cb290423ba5c30c1856427609938c230fa9f32 (patch) | |
| tree | 037e5ede085be567b0dec680eb7a10cb423682bd /plugin/src/Caelestia/Internal/arcgauge.hpp | |
| parent | notifs: skip markdown parsing for plain text bodies (diff) | |
| download | caelestia-shell-27cb290423ba5c30c1856427609938c230fa9f32.tar.gz caelestia-shell-27cb290423ba5c30c1856427609938c230fa9f32.tar.bz2 caelestia-shell-27cb290423ba5c30c1856427609938c230fa9f32.zip | |
feat: replace canvas -> c++ component
Also add c++ ring buffer
Diffstat (limited to 'plugin/src/Caelestia/Internal/arcgauge.hpp')
| -rw-r--r-- | plugin/src/Caelestia/Internal/arcgauge.hpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/plugin/src/Caelestia/Internal/arcgauge.hpp b/plugin/src/Caelestia/Internal/arcgauge.hpp new file mode 100644 index 0000000..4ccb1fd --- /dev/null +++ b/plugin/src/Caelestia/Internal/arcgauge.hpp @@ -0,0 +1,61 @@ +#pragma once + +#include <qcolor.h> +#include <qobject.h> +#include <qqmlintegration.h> +#include <qquickpainteditem.h> + +namespace caelestia::internal { + +class ArcGauge : public QQuickPaintedItem { + Q_OBJECT + QML_ELEMENT + + Q_PROPERTY(qreal percentage READ percentage WRITE setPercentage NOTIFY percentageChanged) + Q_PROPERTY(QColor accentColor READ accentColor WRITE setAccentColor NOTIFY accentColorChanged) + Q_PROPERTY(QColor trackColor READ trackColor WRITE setTrackColor NOTIFY trackColorChanged) + Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged) + Q_PROPERTY(qreal sweepAngle READ sweepAngle WRITE setSweepAngle NOTIFY sweepAngleChanged) + Q_PROPERTY(qreal lineWidth READ lineWidth WRITE setLineWidth NOTIFY lineWidthChanged) + +public: + explicit ArcGauge(QQuickItem* parent = nullptr); + + void paint(QPainter* painter) override; + + [[nodiscard]] qreal percentage() const; + void setPercentage(qreal percentage); + + [[nodiscard]] QColor accentColor() const; + void setAccentColor(const QColor& color); + + [[nodiscard]] QColor trackColor() const; + void setTrackColor(const QColor& color); + + [[nodiscard]] qreal startAngle() const; + void setStartAngle(qreal angle); + + [[nodiscard]] qreal sweepAngle() const; + void setSweepAngle(qreal angle); + + [[nodiscard]] qreal lineWidth() const; + void setLineWidth(qreal width); + +signals: + void percentageChanged(); + void accentColorChanged(); + void trackColorChanged(); + void startAngleChanged(); + void sweepAngleChanged(); + void lineWidthChanged(); + +private: + qreal m_percentage = 0.0; + QColor m_accentColor; + QColor m_trackColor; + qreal m_startAngle = 0.75 * M_PI; + qreal m_sweepAngle = 1.5 * M_PI; + qreal m_lineWidth = 10.0; +}; + +} // namespace caelestia::internal |