QskRangeControl -> QskBoundedValueControl

This commit is contained in:
Uwe Rathmann 2020-07-25 12:50:26 +02:00
parent 22230365b7
commit 2aadafc34c
9 changed files with 102 additions and 103 deletions

View File

@ -14,7 +14,7 @@ QSK_SUBCONTROL( Speedometer, NeedleHead )
QSK_SUBCONTROL( Speedometer, Needle ) QSK_SUBCONTROL( Speedometer, Needle )
Speedometer::Speedometer( QQuickItem* parent ) Speedometer::Speedometer( QQuickItem* parent )
: QskRangeControl( parent ) : QskBoundedValueControl( parent )
{ {
} }

View File

@ -6,9 +6,9 @@
#ifndef SPEEDOMETER_H #ifndef SPEEDOMETER_H
#define SPEEDOMETER_H #define SPEEDOMETER_H
#include <QskRangeControl.h> #include <QskBoundedValueControl.h>
class Speedometer : public QskRangeControl class Speedometer : public QskBoundedValueControl
{ {
Q_OBJECT Q_OBJECT

View File

@ -49,7 +49,7 @@ Slider::Slider( QQuickItem* parentItem )
setSkinlet( skinlet ); setSkinlet( skinlet );
connect( this, &QskRangeControl::valueChanged, connect( this, &QskSlider::valueChanged,
this, &QskControl::focusIndicatorRectChanged ); this, &QskControl::focusIndicatorRectChanged );
} }

View File

@ -191,7 +191,7 @@ QRectF SliderSkinlet::fillRect(
auto r = subControlRect( slider, contentsRect, Slider::Scale ); auto r = subControlRect( slider, contentsRect, Slider::Scale );
r.setTop( r.bottom() - qskMinorTick ); r.setTop( r.bottom() - qskMinorTick );
r.setWidth( r.width() * slider->position() ); r.setWidth( r.width() * slider->valueAsRatio() );
return r; return r;
} }
@ -238,7 +238,7 @@ QSGNode* SliderSkinlet::updateScaleNode(
if ( ticksNode == nullptr ) if ( ticksNode == nullptr )
ticksNode = new TicksNode( slider->color( Slider::Scale ) ); ticksNode = new TicksNode( slider->color( Slider::Scale ) );
const int tickCount = std::floor( slider->range() / slider->stepSize() ) + 1; const int tickCount = std::floor( slider->boundaryLength() / slider->stepSize() ) + 1;
auto geometry = ticksNode->geometry(); auto geometry = ticksNode->geometry();
geometry->allocate( tickCount * 2 ); geometry->allocate( tickCount * 2 );
@ -246,7 +246,7 @@ QSGNode* SliderSkinlet::updateScaleNode(
auto vertexData = geometry->vertexDataAsPoint2D(); auto vertexData = geometry->vertexDataAsPoint2D();
memset( vertexData, 0, geometry->vertexCount() ); memset( vertexData, 0, geometry->vertexCount() );
auto stepStride = slider->stepSize() / slider->range() * scaleRect.width(); auto stepStride = slider->stepSize() / slider->boundaryLength() * scaleRect.width();
auto x = scaleRect.x(); auto x = scaleRect.x();
const auto y = scaleRect.bottom(); const auto y = scaleRect.bottom();
@ -281,11 +281,11 @@ QSGNode* SliderSkinlet::updateDecorationNode(
if ( decorationNode == nullptr ) if ( decorationNode == nullptr )
decorationNode = new QSGTransformNode(); decorationNode = new QSGTransformNode();
const int tickCount = std::floor( slider->range() / slider->stepSize() ) + 1; const int tickCount = std::floor( slider->boundaryLength() / slider->stepSize() ) + 1;
auto labelNode = static_cast< QskTextNode* >( decorationNode->firstChild() ); auto labelNode = static_cast< QskTextNode* >( decorationNode->firstChild() );
auto stepStride = slider->stepSize() / slider->range() * decorationRect.width(); auto stepStride = slider->stepSize() / slider->boundaryLength() * decorationRect.width();
auto x = decorationRect.x(); auto x = decorationRect.x();
const auto y = decorationRect.y(); const auto y = decorationRect.y();

View File

@ -3,13 +3,13 @@
* This file may be used under the terms of the QSkinny License, Version 1.0 * This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/ *****************************************************************************/
#include "QskRangeControl.h" #include "QskBoundedValueControl.h"
#include "QskFunctions.h" #include "QskFunctions.h"
#include "QskIntervalF.h" #include "QskIntervalF.h"
QSK_SYSTEM_STATE( QskRangeControl, ReadOnly, ( QskAspect::FirstSystemState << 1 ) ) QSK_SYSTEM_STATE( QskBoundedValueControl, ReadOnly, ( QskAspect::FirstSystemState << 1 ) )
class QskRangeControl::PrivateData class QskBoundedValueControl::PrivateData
{ {
public: public:
PrivateData() PrivateData()
@ -30,7 +30,7 @@ class QskRangeControl::PrivateData
bool snap : 1; bool snap : 1;
}; };
QskRangeControl::QskRangeControl( QQuickItem* parent ) QskBoundedValueControl::QskBoundedValueControl( QQuickItem* parent )
: QskControl( parent ) : QskControl( parent )
, m_data( new PrivateData() ) , m_data( new PrivateData() )
{ {
@ -39,76 +39,66 @@ QskRangeControl::QskRangeControl( QQuickItem* parent )
setWheelEnabled( true ); setWheelEnabled( true );
} }
QskRangeControl::~QskRangeControl() QskBoundedValueControl::~QskBoundedValueControl()
{ {
} }
void QskRangeControl::setMinimum( qreal minimum ) void QskBoundedValueControl::setMinimum( qreal minimum )
{ {
if ( m_data->minimum == minimum ) if ( m_data->minimum == minimum )
return; return;
const auto oldRange = range();
m_data->minimum = minimum; m_data->minimum = minimum;
Q_EMIT minimumChanged( minimum ); Q_EMIT minimumChanged( minimum );
if ( isComponentComplete() ) if ( isComponentComplete() )
adjustRangeAndValue( false ); adjustBoundariesAndValue( false );
const auto newRange = range();
if ( oldRange != newRange )
Q_EMIT rangeChanged( newRange );
Q_EMIT boundariesChanged( boundaries() );
update(); update();
} }
qreal QskRangeControl::minimum() const qreal QskBoundedValueControl::minimum() const
{ {
return m_data->minimum; return m_data->minimum;
} }
void QskRangeControl::setMaximum( qreal maximum ) void QskBoundedValueControl::setMaximum( qreal maximum )
{ {
if ( m_data->maximum == maximum ) if ( m_data->maximum == maximum )
return; return;
const auto oldRange = range();
m_data->maximum = maximum; m_data->maximum = maximum;
Q_EMIT maximumChanged( maximum ); Q_EMIT maximumChanged( maximum );
if ( isComponentComplete() ) if ( isComponentComplete() )
adjustRangeAndValue( true ); adjustBoundariesAndValue( true );
const auto newRange = range();
if ( oldRange != newRange )
Q_EMIT rangeChanged( newRange );
Q_EMIT boundariesChanged( boundaries() );
update(); update();
} }
qreal QskRangeControl::maximum() const qreal QskBoundedValueControl::maximum() const
{ {
return m_data->maximum; return m_data->maximum;
} }
void QskRangeControl::setInterval( qreal min, qreal max ) void QskBoundedValueControl::setBoundaries( qreal min, qreal max )
{ {
if ( max < min ) if ( max < min )
max = min; max = min;
if ( min == m_data->minimum && max == m_data->maximum )
return;
const auto oldMin = m_data->minimum; const auto oldMin = m_data->minimum;
const auto oldMax = m_data->maximum; const auto oldMax = m_data->maximum;
if ( min == oldMin && max == oldMax )
return;
m_data->minimum = min; m_data->minimum = min;
m_data->maximum = max; m_data->maximum = max;
if ( isComponentComplete() ) if ( isComponentComplete() )
adjustRangeAndValue( false ); adjustBoundariesAndValue( false );
if ( m_data->minimum != oldMin ) if ( m_data->minimum != oldMin )
Q_EMIT minimumChanged( m_data->minimum ); Q_EMIT minimumChanged( m_data->minimum );
@ -116,24 +106,21 @@ void QskRangeControl::setInterval( qreal min, qreal max )
if ( m_data->maximum != oldMax ) if ( m_data->maximum != oldMax )
Q_EMIT maximumChanged( m_data->maximum ); Q_EMIT maximumChanged( m_data->maximum );
const auto newRange = range(); Q_EMIT boundariesChanged( boundaries() );
if ( newRange != oldMax - oldMin )
Q_EMIT rangeChanged( newRange );
update(); update();
} }
void QskRangeControl::setInterval( const QskIntervalF& interval ) void QskBoundedValueControl::setBoundaries( const QskIntervalF& boundaries )
{ {
setInterval( interval.lowerBound(), interval.upperBound() ); setBoundaries( boundaries.lowerBound(), boundaries.upperBound() );
} }
QskIntervalF QskRangeControl::interval() const QskIntervalF QskBoundedValueControl::boundaries() const
{ {
return QskIntervalF( m_data->minimum, m_data->maximum ); return QskIntervalF( m_data->minimum, m_data->maximum );
} }
void QskRangeControl::adjustRangeAndValue( bool increasing ) void QskBoundedValueControl::adjustBoundariesAndValue( bool increasing )
{ {
if ( m_data->maximum < m_data->minimum ) if ( m_data->maximum < m_data->minimum )
{ {
@ -163,22 +150,28 @@ void QskRangeControl::adjustRangeAndValue( bool increasing )
} }
} }
qreal QskRangeControl::range() const qreal QskBoundedValueControl::boundaryLength() const
{ {
return m_data->maximum - m_data->minimum; return m_data->maximum - m_data->minimum;
} }
qreal QskRangeControl::position() const qreal QskBoundedValueControl::fixupValue( qreal value ) const
{
return ( value() - minimum() ) / range();
}
qreal QskRangeControl::fixupValue( qreal value ) const
{ {
return value; return value;
} }
void QskRangeControl::setValue( qreal value ) void QskBoundedValueControl::setValueAsRatio( qreal ratio )
{
ratio = qBound( 0.0, ratio, 1.0 );
setValue( m_data->minimum + ratio * ( m_data->maximum - m_data->minimum ) );
}
qreal QskBoundedValueControl::valueAsRatio() const
{
return ( m_data->value - m_data->minimum ) / ( m_data->maximum - m_data->minimum );
}
void QskBoundedValueControl::setValue( qreal value )
{ {
if ( isComponentComplete() ) if ( isComponentComplete() )
{ {
@ -199,12 +192,12 @@ void QskRangeControl::setValue( qreal value )
} }
} }
qreal QskRangeControl::value() const qreal QskBoundedValueControl::value() const
{ {
return m_data->value; return m_data->value;
} }
void QskRangeControl::setStepSize( qreal stepSize ) void QskBoundedValueControl::setStepSize( qreal stepSize )
{ {
if ( qskFuzzyCompare( m_data->stepSize, stepSize ) ) if ( qskFuzzyCompare( m_data->stepSize, stepSize ) )
return; return;
@ -215,12 +208,12 @@ void QskRangeControl::setStepSize( qreal stepSize )
update(); update();
} }
qreal QskRangeControl::stepSize() const qreal QskBoundedValueControl::stepSize() const
{ {
return m_data->stepSize; return m_data->stepSize;
} }
void QskRangeControl::setPageSize( int pageSize ) void QskBoundedValueControl::setPageSize( int pageSize )
{ {
if ( m_data->pageSize == pageSize ) if ( m_data->pageSize == pageSize )
return; return;
@ -231,12 +224,12 @@ void QskRangeControl::setPageSize( int pageSize )
update(); update();
} }
int QskRangeControl::pageSize() const int QskBoundedValueControl::pageSize() const
{ {
return m_data->pageSize; return m_data->pageSize;
} }
void QskRangeControl::setSnap( bool snap ) void QskBoundedValueControl::setSnap( bool snap )
{ {
if ( m_data->snap == snap ) if ( m_data->snap == snap )
return; return;
@ -250,12 +243,12 @@ void QskRangeControl::setSnap( bool snap )
} }
} }
bool QskRangeControl::snap() const bool QskBoundedValueControl::snap() const
{ {
return m_data->snap; return m_data->snap;
} }
void QskRangeControl::setReadOnly( bool readOnly ) void QskBoundedValueControl::setReadOnly( bool readOnly )
{ {
if ( readOnly == isReadOnly() ) if ( readOnly == isReadOnly() )
return; return;
@ -270,32 +263,32 @@ void QskRangeControl::setReadOnly( bool readOnly )
Q_EMIT readOnlyChanged( readOnly ); Q_EMIT readOnlyChanged( readOnly );
} }
bool QskRangeControl::isReadOnly() const bool QskBoundedValueControl::isReadOnly() const
{ {
return skinState() & ReadOnly; return skinState() & ReadOnly;
} }
void QskRangeControl::stepUp() void QskBoundedValueControl::stepUp()
{ {
setValue( m_data->value + m_data->stepSize ); setValue( m_data->value + m_data->stepSize );
} }
void QskRangeControl::stepDown() void QskBoundedValueControl::stepDown()
{ {
setValue( m_data->value - m_data->stepSize ); setValue( m_data->value - m_data->stepSize );
} }
void QskRangeControl::pageUp() void QskBoundedValueControl::pageUp()
{ {
setValue( m_data->value + m_data->stepSize * m_data->pageSize ); setValue( m_data->value + m_data->stepSize * m_data->pageSize );
} }
void QskRangeControl::pageDown() void QskBoundedValueControl::pageDown()
{ {
setValue( m_data->value - m_data->stepSize * m_data->pageSize ); setValue( m_data->value - m_data->stepSize * m_data->pageSize );
} }
void QskRangeControl::keyPressEvent( QKeyEvent* event ) void QskBoundedValueControl::keyPressEvent( QKeyEvent* event )
{ {
if ( !isReadOnly() ) if ( !isReadOnly() )
{ {
@ -317,7 +310,7 @@ void QskRangeControl::keyPressEvent( QKeyEvent* event )
#ifndef QT_NO_WHEELEVENT #ifndef QT_NO_WHEELEVENT
void QskRangeControl::wheelEvent( QWheelEvent* event ) void QskBoundedValueControl::wheelEvent( QWheelEvent* event )
{ {
if ( isReadOnly() ) if ( isReadOnly() )
return; return;
@ -336,10 +329,10 @@ void QskRangeControl::wheelEvent( QWheelEvent* event )
#endif #endif
void QskRangeControl::componentComplete() void QskBoundedValueControl::componentComplete()
{ {
Inherited::componentComplete(); Inherited::componentComplete();
adjustRangeAndValue( true ); adjustBoundariesAndValue( true );
} }
#include "moc_QskRangeControl.cpp" #include "moc_QskBoundedValueControl.cpp"

View File

@ -3,20 +3,22 @@
* This file may be used under the terms of the QSkinny License, Version 1.0 * This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/ *****************************************************************************/
#ifndef QSK_RANGE_CONTROL_H #ifndef QSK_BOUNDED_VALUE_CONTROL_H
#define QSK_RANGE_CONTROL_H #define QSK_BOUNDED_VALUE_CONTROL_H
#include "QskControl.h" #include "QskControl.h"
class QskIntervalF; class QskIntervalF;
class QSK_EXPORT QskRangeControl : public QskControl class QSK_EXPORT QskBoundedValueControl : public QskControl
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY( qreal minimum READ minimum WRITE setMinimum NOTIFY minimumChanged ) Q_PROPERTY( qreal minimum READ minimum WRITE setMinimum NOTIFY minimumChanged )
Q_PROPERTY( qreal maximum READ maximum WRITE setMaximum NOTIFY maximumChanged ) Q_PROPERTY( qreal maximum READ maximum WRITE setMaximum NOTIFY maximumChanged )
Q_PROPERTY( qreal range READ range NOTIFY rangeChanged ) Q_PROPERTY( QskIntervalF boundaries READ boundaries
WRITE setBoundaries NOTIFY boundariesChanged )
Q_PROPERTY( qreal value READ value WRITE setValue NOTIFY valueChanged ) Q_PROPERTY( qreal value READ value WRITE setValue NOTIFY valueChanged )
Q_PROPERTY( qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged ) Q_PROPERTY( qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged )
@ -30,20 +32,22 @@ class QSK_EXPORT QskRangeControl : public QskControl
public: public:
QSK_STATES( ReadOnly ) QSK_STATES( ReadOnly )
QskRangeControl( QQuickItem* parent = nullptr ); QskBoundedValueControl( QQuickItem* parent = nullptr );
~QskRangeControl() override; ~QskBoundedValueControl() override;
qreal minimum() const; qreal minimum() const;
qreal maximum() const; qreal maximum() const;
void setInterval( qreal min, qreal max ); qreal boundaryLength() const;
QskIntervalF interval() const;
qreal range() const; void setBoundaries( qreal min, qreal max );
qreal position() const; QskIntervalF boundaries() const;
qreal value() const; qreal value() const;
// [0.0, 1.0]
qreal valueAsRatio() const;
qreal stepSize() const; qreal stepSize() const;
int pageSize() const; int pageSize() const;
@ -55,9 +59,12 @@ class QSK_EXPORT QskRangeControl : public QskControl
public Q_SLOTS: public Q_SLOTS:
void setValue( qreal ); void setValue( qreal );
void setValueAsRatio( qreal );
void setMinimum( qreal ); void setMinimum( qreal );
void setMaximum( qreal ); void setMaximum( qreal );
void setInterval( const QskIntervalF& ); void setBoundaries( const QskIntervalF& );
void setStepSize( qreal ); void setStepSize( qreal );
void setPageSize( int ); void setPageSize( int );
@ -67,13 +74,16 @@ class QSK_EXPORT QskRangeControl : public QskControl
void pageDown(); void pageDown();
Q_SIGNALS: Q_SIGNALS:
void valueChanged( qreal );
void minimumChanged( qreal ); void minimumChanged( qreal );
void maximumChanged( qreal ); void maximumChanged( qreal );
void rangeChanged( qreal ); void boundariesChanged( const QskIntervalF& );
void valueChanged( qreal );
void stepSizeChanged( qreal ); void stepSizeChanged( qreal );
void pageSizeChanged( qreal ); void pageSizeChanged( qreal );
void snapChanged( bool ); void snapChanged( bool );
void readOnlyChanged( bool ); void readOnlyChanged( bool );
protected: protected:
@ -87,7 +97,7 @@ class QSK_EXPORT QskRangeControl : public QskControl
void componentComplete() override; void componentComplete() override;
private: private:
void adjustRangeAndValue( bool ); void adjustBoundariesAndValue( bool );
class PrivateData; class PrivateData;
std::unique_ptr< PrivateData > m_data; std::unique_ptr< PrivateData > m_data;

View File

@ -50,13 +50,10 @@ QskSlider::QskSlider( Qt::Orientation orientation, QQuickItem* parent )
else else
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum ); initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
setMetric( QskSlider::Handle | QskAspect::Position, position() ); setMetric( QskSlider::Handle | QskAspect::Position, valueAsRatio() );
connect( this, &QskRangeControl::rangeChanged, connect( this, &QskSlider::boundariesChanged, [ this ]() { updatePosition(); } );
[ this ]( qreal ) { updatePosition(); } ); connect( this, &QskSlider::valueChanged, [ this ]() { updatePosition(); } );
connect( this, &QskRangeControl::valueChanged,
[ this ]( qreal ) { updatePosition(); } );
} }
QskSlider::~QskSlider() QskSlider::~QskSlider()
@ -173,12 +170,12 @@ void QskSlider::mouseMoveEvent( QMouseEvent* event )
if ( m_data->orientation == Qt::Horizontal ) if ( m_data->orientation == Qt::Horizontal )
{ {
const auto distance = event->localPos().x() - m_data->pressedPos.x(); const auto distance = event->localPos().x() - m_data->pressedPos.x();
newValue = m_data->pressedValue + distance / r.width() * range(); newValue = m_data->pressedValue + distance / r.width() * boundaryLength();
} }
else else
{ {
const auto distance = event->localPos().y() - m_data->pressedPos.y(); const auto distance = event->localPos().y() - m_data->pressedPos.y();
newValue = m_data->pressedValue - distance / r.height() * range(); newValue = m_data->pressedValue - distance / r.height() * boundaryLength();
} }
setValue( newValue ); setValue( newValue );
@ -199,14 +196,14 @@ void QskSlider::mouseReleaseEvent( QMouseEvent* event )
const qreal w = szHandle.width(); const qreal w = szHandle.width();
const qreal x = ( pos.x() - rect.x() - w * 0.5 ) / ( rect.width() - w ); const qreal x = ( pos.x() - rect.x() - w * 0.5 ) / ( rect.width() - w );
up = x > position(); up = x > valueAsRatio();
} }
else else
{ {
const qreal h = szHandle.height(); const qreal h = szHandle.height();
const qreal y = ( pos.y() - rect.y() - h * 0.5 ) / ( rect.height() - h ); const qreal y = ( pos.y() - rect.y() - h * 0.5 ) / ( rect.height() - h );
up = y < 1.0 - position(); up = y < 1.0 - valueAsRatio();
} }
if ( up ) if ( up )
@ -228,9 +225,8 @@ void QskSlider::updatePosition()
const Aspect aspect = QskSlider::Handle | Position | Metric; const Aspect aspect = QskSlider::Handle | Position | Metric;
const QskAnimationHint hint = animation( aspect | skinState() ); const auto hint = animation( aspect | skinState() );
const qreal pos = valueAsRatio();
const qreal pos = position();
if ( hint.duration > 0 ) if ( hint.duration > 0 )
{ {

View File

@ -6,12 +6,12 @@
#ifndef QSK_SLIDER_H #ifndef QSK_SLIDER_H
#define QSK_SLIDER_H #define QSK_SLIDER_H
#include "QskRangeControl.h" #include "QskBoundedValueControl.h"
class QSGNode; class QSGNode;
class QskSkin; class QskSkin;
class QSK_EXPORT QskSlider : public QskRangeControl class QSK_EXPORT QskSlider : public QskBoundedValueControl
{ {
Q_OBJECT Q_OBJECT
@ -22,7 +22,7 @@ class QSK_EXPORT QskSlider : public QskRangeControl
Q_PROPERTY( bool tracking READ isTracking WRITE setTracking NOTIFY trackingChanged ) Q_PROPERTY( bool tracking READ isTracking WRITE setTracking NOTIFY trackingChanged )
using Inherited = QskRangeControl; using Inherited = QskBoundedValueControl;
public: public:
QSK_SUBCONTROLS( Panel, Groove, Fill, Scale, Handle ) QSK_SUBCONTROLS( Panel, Groove, Fill, Scale, Handle )

View File

@ -110,6 +110,7 @@ HEADERS += \
controls/QskAbstractButton.h \ controls/QskAbstractButton.h \
controls/QskAnimationHint.h \ controls/QskAnimationHint.h \
controls/QskAnimator.h \ controls/QskAnimator.h \
controls/QskBoundedValueControl.h \
controls/QskBox.h \ controls/QskBox.h \
controls/QskBoxSkinlet.h \ controls/QskBoxSkinlet.h \
controls/QskControl.h \ controls/QskControl.h \
@ -138,7 +139,6 @@ HEADERS += \
controls/QskQuick.h \ controls/QskQuick.h \
controls/QskQuickItem.h \ controls/QskQuickItem.h \
controls/QskQuickItemPrivate.h \ controls/QskQuickItemPrivate.h \
controls/QskRangeControl.h \
controls/QskScrollArea.h \ controls/QskScrollArea.h \
controls/QskScrollBox.h \ controls/QskScrollBox.h \
controls/QskScrollView.h \ controls/QskScrollView.h \
@ -178,6 +178,7 @@ HEADERS += \
SOURCES += \ SOURCES += \
controls/QskAbstractButton.cpp \ controls/QskAbstractButton.cpp \
controls/QskAnimator.cpp \ controls/QskAnimator.cpp \
controls/QskBoundedValueControl.cpp \
controls/QskBox.cpp \ controls/QskBox.cpp \
controls/QskBoxSkinlet.cpp \ controls/QskBoxSkinlet.cpp \
controls/QskControl.cpp \ controls/QskControl.cpp \
@ -206,7 +207,6 @@ SOURCES += \
controls/QskQuick.cpp \ controls/QskQuick.cpp \
controls/QskQuickItem.cpp \ controls/QskQuickItem.cpp \
controls/QskQuickItemPrivate.cpp \ controls/QskQuickItemPrivate.cpp \
controls/QskRangeControl.cpp \
controls/QskScrollArea.cpp \ controls/QskScrollArea.cpp \
controls/QskScrollBox.cpp \ controls/QskScrollBox.cpp \
controls/QskScrollView.cpp \ controls/QskScrollView.cpp \