2017-07-21 18:21:34 +02:00
|
|
|
#include "Slider.h"
|
|
|
|
#include "SliderSkinlet.h"
|
|
|
|
|
2018-08-03 08:15:28 +02:00
|
|
|
#include <QskAnimationHint.h>
|
2017-07-21 18:21:34 +02:00
|
|
|
#include <QskAspect.h>
|
2017-10-20 20:26:39 +02:00
|
|
|
#include <QskBoxShapeMetrics.h>
|
|
|
|
#include <QskGradient.h>
|
2018-08-03 08:15:28 +02:00
|
|
|
#include <QskRgbValue.h>
|
2017-07-21 18:21:34 +02:00
|
|
|
|
|
|
|
QSK_SUBCONTROL( Slider, Scale )
|
|
|
|
QSK_SUBCONTROL( Slider, Decoration )
|
|
|
|
|
2018-08-03 08:15:28 +02:00
|
|
|
Slider::Slider( QQuickItem* parentItem )
|
|
|
|
: QskSlider( parentItem )
|
2017-07-21 18:21:34 +02:00
|
|
|
{
|
|
|
|
using namespace QskAspect;
|
|
|
|
|
2017-10-17 17:34:00 +02:00
|
|
|
setMetric( QskSlider::Handle | Size, 80 );
|
2017-07-21 18:21:34 +02:00
|
|
|
|
2017-10-20 20:26:39 +02:00
|
|
|
#if 0
|
|
|
|
const QskGradient fillGradient( QskGradient::Horizontal,
|
|
|
|
QskRgbValue::Grey700, QskRgbValue::Grey500 );
|
|
|
|
#else
|
|
|
|
const QskGradient fillGradient( QskRgbValue::Grey700 );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
setBoxShapeHint( Fill, 0 );
|
|
|
|
setGradientHint( Fill, fillGradient );
|
2017-10-17 17:34:00 +02:00
|
|
|
setColor( Scale, qRgb( 178, 178, 178 ) ); // for the ticks
|
2017-07-21 18:21:34 +02:00
|
|
|
|
|
|
|
setColor( QskSlider::Handle, QskRgbValue::Grey800 );
|
|
|
|
|
|
|
|
for ( auto state : { Pressed, Focused | Hovered, Hovered, Focused } )
|
2017-10-17 17:34:00 +02:00
|
|
|
setColor( QskSlider::Handle | Color | state, QskRgbValue::Orange600 );
|
2017-07-21 18:21:34 +02:00
|
|
|
|
2017-10-17 17:34:00 +02:00
|
|
|
setAnimation( QskSlider::Handle | Color, 1000 );
|
|
|
|
for ( auto state : { Focused | Hovered, Hovered, Focused } )
|
|
|
|
setAnimation( QskSlider::Handle | Color | state, 300 );
|
2017-07-21 18:21:34 +02:00
|
|
|
|
|
|
|
// using an individual skinlet, not known by the skin
|
|
|
|
|
|
|
|
auto skinlet = new SliderSkinlet();
|
|
|
|
skinlet->setOwnedBySkinnable( true );
|
|
|
|
|
|
|
|
setSkinlet( skinlet );
|
2018-01-19 10:15:29 +01:00
|
|
|
|
|
|
|
connect( this, &QskRangeControl::valueChanged,
|
|
|
|
this, &QskControl::focusIndicatorRectChanged );
|
2017-07-21 18:21:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
QSizeF Slider::contentsSizeHint() const
|
|
|
|
{
|
|
|
|
const qreal extra = 40;
|
2017-10-17 17:34:00 +02:00
|
|
|
return Inherited::contentsSizeHint() + QSizeF( 0, extra );
|
2017-07-21 18:21:34 +02:00
|
|
|
}
|
|
|
|
|
2018-01-19 10:15:29 +01:00
|
|
|
QRectF Slider::focusIndicatorRect() const
|
|
|
|
{
|
|
|
|
return subControlRect( QskSlider::Handle );
|
|
|
|
}
|