style light intensity

This commit is contained in:
Peter Hartmann 2021-04-07 13:24:29 +02:00
parent 45ad464cac
commit 70bf3ed08b
4 changed files with 23 additions and 13 deletions

View File

@ -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 ) );

View File

@ -12,6 +12,8 @@
#include <QRadialGradient>
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 );

View File

@ -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 );

View File

@ -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 );