summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/Internal/arcgauge.hpp
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2026-03-12 22:51:07 +1100
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2026-03-12 22:51:07 +1100
commit27cb290423ba5c30c1856427609938c230fa9f32 (patch)
tree037e5ede085be567b0dec680eb7a10cb423682bd /plugin/src/Caelestia/Internal/arcgauge.hpp
parentnotifs: skip markdown parsing for plain text bodies (diff)
downloadcaelestia-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.hpp61
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