From 70bf3ed08bad8a50e198ee2212ac9555088ca6d1 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 7 Apr 2021 13:24:29 +0200 Subject: [PATCH] style light intensity --- .../iot-dashboard/CircularProgressBar.cpp | 2 +- examples/iot-dashboard/LightIntensity.cpp | 24 +++++++++++-------- examples/iot-dashboard/LightIntensity.h | 6 +++-- examples/iot-dashboard/Skin.cpp | 4 ++++ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/examples/iot-dashboard/CircularProgressBar.cpp b/examples/iot-dashboard/CircularProgressBar.cpp index cd3cfc79..5f5fa0de 100644 --- a/examples/iot-dashboard/CircularProgressBar.cpp +++ b/examples/iot-dashboard/CircularProgressBar.cpp @@ -7,7 +7,7 @@ CircularProgressBar::CircularProgressBar( const QskGradient& gradient, int progr , m_progress( progress ) { // This is a bit hackish, but let's do this properly - // once QSkinny has an arch renderer in place + // once QSkinny has an arc renderer in place QLinearGradient g( 0, 0, 30, 0 ); QGradientStop stop1( 0.0, gradient.colorAt( 0 ) ); QGradientStop stop2( 1.0, gradient.colorAt( 1 ) ); diff --git a/examples/iot-dashboard/LightIntensity.cpp b/examples/iot-dashboard/LightIntensity.cpp index 6b7a9a7a..84a5905d 100644 --- a/examples/iot-dashboard/LightIntensity.cpp +++ b/examples/iot-dashboard/LightIntensity.cpp @@ -12,6 +12,8 @@ #include QSK_SUBCONTROL( LightDisplay, Panel ) +QSK_SUBCONTROL( LightDisplay, ColdPart ) +QSK_SUBCONTROL( LightDisplay, WarmPart ) namespace { @@ -72,8 +74,10 @@ class DimmerAnimator : public QskAnimator LightDimmer* m_dimmer; }; -LightDimmer::LightDimmer( QQuickItem* parent ) +LightDimmer::LightDimmer( const QskGradient& coldGradient, const QskGradient& warmGradient, QQuickItem* parent ) : QQuickPaintedItem( parent ) + , m_coldGradient( coldGradient ) + , m_warmGradient( warmGradient ) { connect( this, &QQuickPaintedItem::contentsSizeChanged, [this]() { @@ -107,17 +111,17 @@ void LightDimmer::paint( QPainter* painter ) int middleAngle = 16 * -90; int endAngle = 16 * -90; - QLinearGradient blueGradient( {thickness(), 0.0}, {thickness(), thickness()} ); - blueGradient.setColorAt( 0, "#a7b0ff" ); - blueGradient.setColorAt( 1, "#6776ff" ); - painter->setBrush( blueGradient ); + QLinearGradient coldGradient( {thickness(), 0.0}, {thickness(), thickness()} ); + coldGradient.setColorAt( 0, m_coldGradient.colorAt( 0 ) ); + coldGradient.setColorAt( 1, m_coldGradient.colorAt( 1 ) ); + painter->setBrush( coldGradient ); painter->setPen( Qt::transparent ); painter->drawPie( outerRect, startAngle, middleAngle ); - QLinearGradient redGradient( {thickness(), 0.0}, {thickness(), thickness()} ); - redGradient.setColorAt( 0, "#feeeb7" ); - redGradient.setColorAt( 1, "#ff3122" ); - painter->setBrush( redGradient ); + QLinearGradient warmGradient( {thickness(), 0.0}, {thickness(), thickness()} ); + warmGradient.setColorAt( 0, m_warmGradient.colorAt( 0 ) ); + warmGradient.setColorAt( 1, m_warmGradient.colorAt( 1 ) ); + painter->setBrush( warmGradient ); painter->drawPie( outerRect, 16 * 90, endAngle ); painter->setBrush( m_backgroundColor ); @@ -136,7 +140,7 @@ LightDisplay::LightDisplay( QQuickItem* parent ) , m_leftLabel( new QskTextLabel( QString::number( 0 ), this ) ) , m_centreLabel( new QskTextLabel( QString::number( 50 ) + "%", this ) ) , m_rightLabel( new QskTextLabel( QString::number( 100 ), this ) ) - , m_dimmer( new LightDimmer( this ) ) + , m_dimmer( new LightDimmer( gradientHint( ColdPart ), gradientHint( WarmPart ), this ) ) , m_animator( new DimmerAnimator( this, m_dimmer ) ) { m_leftLabel->setSizePolicy( Qt::Horizontal, QskSizePolicy::Maximum ); diff --git a/examples/iot-dashboard/LightIntensity.h b/examples/iot-dashboard/LightIntensity.h index 247af070..5d1af890 100644 --- a/examples/iot-dashboard/LightIntensity.h +++ b/examples/iot-dashboard/LightIntensity.h @@ -14,7 +14,7 @@ class LightDimmer: public QQuickPaintedItem Q_OBJECT public: - LightDimmer( QQuickItem* parent ); + LightDimmer( const QskGradient& coldGradient, const QskGradient& warmGradient, QQuickItem* parent ); double thickness() const { @@ -50,6 +50,8 @@ class LightDimmer: public QQuickPaintedItem double m_thickness = 17.57; QColor m_backgroundColor; QRadialGradient m_ringGradient; + QskGradient m_coldGradient; + QskGradient m_warmGradient; virtual void paint( QPainter* painter ) override; }; @@ -59,7 +61,7 @@ class LightDisplay : public QskControl Q_OBJECT public: - QSK_SUBCONTROLS( Panel ) + QSK_SUBCONTROLS( Panel, ColdPart, WarmPart ) LightDisplay( QQuickItem* parent ); diff --git a/examples/iot-dashboard/Skin.cpp b/examples/iot-dashboard/Skin.cpp index a32dc1cc..edb6fcef 100644 --- a/examples/iot-dashboard/Skin.cpp +++ b/examples/iot-dashboard/Skin.cpp @@ -126,6 +126,10 @@ void Skin::initHints( const Palette& palette ) ed.setPadding( CaptionBox::Panel, {10, 10, 20, 0} ); + // light intensity: + ed.setGradient( LightDisplay::ColdPart, { Qt::Horizontal, "#a7b0ff", "#6776ff" } ); + ed.setGradient( LightDisplay::WarmPart, { Qt::Horizontal, "#feeeb7", "#ff3122" } ); + // palette dependent skin hints: ed.setGradient( MenuBar::Panel, palette.menuBar ); ed.setGradient( MainContent::Panel, palette.mainContent );