ubcontro, substitution moved to setSkinHint/resetHint
This commit is contained in:
parent
788c18e99f
commit
bdc068c4d6
@ -30,9 +30,9 @@ CustomSlider::CustomSlider( QQuickItem* parentItem )
|
|||||||
for ( auto state : { Pressed, Focused | Hovered, Hovered, Focused } )
|
for ( auto state : { Pressed, Focused | Hovered, Hovered, Focused } )
|
||||||
setColor( Handle | state, Orange600 );
|
setColor( Handle | state, Orange600 );
|
||||||
|
|
||||||
setAnimation( QskSlider::Handle | QskAspect::Color, 1000 );
|
setAnimationHint( Handle | QskAspect::Color, 1000 );
|
||||||
for ( auto state : { Focused | Hovered, Hovered, Focused } )
|
for ( auto state : { Focused | Hovered, Hovered, Focused } )
|
||||||
setAnimation( QskSlider::Handle | QskAspect::Color | state, 300 );
|
setAnimationHint( Handle | QskAspect::Color | state, 300 );
|
||||||
|
|
||||||
// using an individual skinlet, not known by the skin
|
// using an individual skinlet, not known by the skin
|
||||||
|
|
||||||
|
@ -53,11 +53,9 @@ void QskBox::setPadding( const QMarginsF& padding )
|
|||||||
qMax( qreal( padding.right() ), qreal( 0.0 ) ),
|
qMax( qreal( padding.right() ), qreal( 0.0 ) ),
|
||||||
qMax( qreal( padding.bottom() ), qreal( 0.0 ) ) );
|
qMax( qreal( padding.bottom() ), qreal( 0.0 ) ) );
|
||||||
|
|
||||||
if ( pd != this->padding() )
|
if ( pd != paddingHint( Panel ) )
|
||||||
{
|
{
|
||||||
const auto subControl = effectiveSubcontrol( Panel );
|
setPaddingHint( Panel, pd );
|
||||||
|
|
||||||
setPaddingHint( subControl, pd );
|
|
||||||
resetImplicitSize();
|
resetImplicitSize();
|
||||||
|
|
||||||
if ( polishOnResize() || autoLayoutChildren() )
|
if ( polishOnResize() || autoLayoutChildren() )
|
||||||
|
@ -185,9 +185,7 @@ void QskControl::setMargins( const QMarginsF& margins )
|
|||||||
|
|
||||||
if ( m != this->margins() )
|
if ( m != this->margins() )
|
||||||
{
|
{
|
||||||
const auto subControl = effectiveSubcontrol( QskAspect::Control );
|
setMarginHint( QskAspect::Control, m );
|
||||||
|
|
||||||
setMarginHint( subControl, m );
|
|
||||||
resetImplicitSize();
|
resetImplicitSize();
|
||||||
|
|
||||||
Q_D( const QskControl );
|
Q_D( const QskControl );
|
||||||
|
@ -133,7 +133,7 @@ void QskGraphicLabel::setGraphicRole( int role )
|
|||||||
{
|
{
|
||||||
const int oldRole = graphicRole();
|
const int oldRole = graphicRole();
|
||||||
|
|
||||||
QskSkinnable::setGraphicRole( effectiveSubcontrol( Graphic ), role );
|
QskSkinnable::setGraphicRole( Graphic, role );
|
||||||
|
|
||||||
if ( role != oldRole )
|
if ( role != oldRole )
|
||||||
{
|
{
|
||||||
|
@ -388,8 +388,7 @@ void QskPopup::setOverlay( bool on )
|
|||||||
{
|
{
|
||||||
if ( hasOverlay() != on )
|
if ( hasOverlay() != on )
|
||||||
{
|
{
|
||||||
const auto subControl = effectiveSubcontrol( QskPopup::Overlay );
|
setFlagHint( Overlay | QskAspect::Style, on );
|
||||||
setFlagHint( subControl | QskAspect::Style, on );
|
|
||||||
|
|
||||||
update();
|
update();
|
||||||
Q_EMIT overlayChanged( on );
|
Q_EMIT overlayChanged( on );
|
||||||
|
@ -179,7 +179,7 @@ void QskProgressBar::resetBarGradient()
|
|||||||
{
|
{
|
||||||
using namespace QskAspect;
|
using namespace QskAspect;
|
||||||
|
|
||||||
if ( resetColor( Bar | Vertical ) || resetHint( Bar | Horizontal ) )
|
if ( resetColor( Bar | Vertical ) || resetColor( Bar | Horizontal ) )
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ void QskProgressBar::setExtent( qreal extent )
|
|||||||
{
|
{
|
||||||
extent = qMax( extent, 0.0 );
|
extent = qMax( extent, 0.0 );
|
||||||
|
|
||||||
const auto aspect = effectiveSubcontrol( Groove ) | QskAspect::Size;
|
const auto aspect = Groove | QskAspect::Size;
|
||||||
|
|
||||||
if ( extent != metric( aspect ) )
|
if ( extent != metric( aspect ) )
|
||||||
{
|
{
|
||||||
|
@ -60,12 +60,9 @@ QskPushButton::~QskPushButton()
|
|||||||
|
|
||||||
void QskPushButton::setCorner( const QskCorner& corner )
|
void QskPushButton::setCorner( const QskCorner& corner )
|
||||||
{
|
{
|
||||||
// effectiveSubcontrol TODO ...
|
if ( corner.metrics() != boxShapeHint( Panel ) )
|
||||||
const auto aspect = Panel | QskAspect::Shape;
|
|
||||||
|
|
||||||
if ( corner.metrics() != boxShapeHint( aspect ) )
|
|
||||||
{
|
{
|
||||||
setBoxShapeHint( aspect, corner.metrics() );
|
setBoxShapeHint( Panel, corner.metrics() );
|
||||||
|
|
||||||
update();
|
update();
|
||||||
Q_EMIT cornerChanged();
|
Q_EMIT cornerChanged();
|
||||||
@ -74,7 +71,7 @@ void QskPushButton::setCorner( const QskCorner& corner )
|
|||||||
|
|
||||||
QskCorner QskPushButton::corner() const
|
QskCorner QskPushButton::corner() const
|
||||||
{
|
{
|
||||||
const auto shape = boxShapeHint( Panel | QskAspect::Shape );
|
const auto shape = boxShapeHint( Panel );
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
QskCorner corner;
|
QskCorner corner;
|
||||||
|
@ -54,7 +54,7 @@ void QskSeparator::setExtent( qreal extent )
|
|||||||
{
|
{
|
||||||
extent = qMax( extent, 0.0 );
|
extent = qMax( extent, 0.0 );
|
||||||
|
|
||||||
const auto aspect = effectiveSubcontrol( Panel ) | QskAspect::Size;
|
const auto aspect = Panel | QskAspect::Size;
|
||||||
|
|
||||||
if ( extent != metric( aspect ) )
|
if ( extent != metric( aspect ) )
|
||||||
{
|
{
|
||||||
|
@ -111,6 +111,60 @@ static inline QVariant qskTypedNullValue( const QVariant& value )
|
|||||||
return QVariant( vType, nullptr );
|
return QVariant( vType, nullptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void qskSetFlag( QskSkinnable* skinnable,
|
||||||
|
const QskAspect::Aspect aspect, int flag )
|
||||||
|
{
|
||||||
|
skinnable->setSkinHint( aspect | QskAspect::Flag, QVariant( flag ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int qskFlag( const QskSkinnable* skinnable,
|
||||||
|
const QskAspect::Aspect aspect, QskSkinHintStatus* status = nullptr )
|
||||||
|
{
|
||||||
|
return skinnable->effectiveHint( aspect | QskAspect::Flag, status ).toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void qskSetMetric( QskSkinnable* skinnable,
|
||||||
|
const QskAspect::Aspect aspect, const QVariant& metric )
|
||||||
|
{
|
||||||
|
skinnable->setSkinHint( aspect | QskAspect::Metric, metric );
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
static inline void qskSetMetric( QskSkinnable* skinnable,
|
||||||
|
QskAspect::Aspect aspect, const T& metric )
|
||||||
|
{
|
||||||
|
qskSetMetric( skinnable, aspect, QVariant::fromValue( metric ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
static inline T qskMetric( const QskSkinnable* skinnable,
|
||||||
|
QskAspect::Aspect aspect, QskSkinHintStatus* status = nullptr )
|
||||||
|
{
|
||||||
|
return skinnable->effectiveHint(
|
||||||
|
aspect | QskAspect::Metric, status ).value< T >();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void qskSetColor( QskSkinnable* skinnable,
|
||||||
|
const QskAspect::Aspect aspect, const QVariant& color )
|
||||||
|
{
|
||||||
|
skinnable->setSkinHint( aspect | QskAspect::Color, color );
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
static inline void qskSetColor( QskSkinnable* skinnable,
|
||||||
|
const QskAspect::Aspect aspect, const T& color )
|
||||||
|
{
|
||||||
|
qskSetColor( skinnable, aspect, QVariant::fromValue( color ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
static inline T qskColor( const QskSkinnable* skinnable,
|
||||||
|
QskAspect::Aspect aspect, QskSkinHintStatus* status = nullptr )
|
||||||
|
{
|
||||||
|
return skinnable->effectiveHint(
|
||||||
|
aspect | QskAspect::Color, status ).value< T >();
|
||||||
|
}
|
||||||
|
|
||||||
class QskSkinnable::PrivateData
|
class QskSkinnable::PrivateData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -197,7 +251,7 @@ const QskSkinHintTable& QskSkinnable::hintTable() const
|
|||||||
|
|
||||||
void QskSkinnable::setFlagHint( QskAspect::Aspect aspect, int flag )
|
void QskSkinnable::setFlagHint( QskAspect::Aspect aspect, int flag )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setHint( aspect, QVariant( flag ) );
|
qskSetFlag( this, aspect, flag );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QskSkinnable::flagHint( QskAspect::Aspect aspect ) const
|
int QskSkinnable::flagHint( QskAspect::Aspect aspect ) const
|
||||||
@ -205,10 +259,9 @@ int QskSkinnable::flagHint( QskAspect::Aspect aspect ) const
|
|||||||
return effectiveHint( aspect ).toInt();
|
return effectiveHint( aspect ).toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setAlignmentHint(
|
void QskSkinnable::setAlignmentHint( QskAspect::Aspect aspect, Qt::Alignment alignment )
|
||||||
QskAspect::Aspect aspect, Qt::Alignment alignment )
|
|
||||||
{
|
{
|
||||||
setFlagHint( aspect | QskAspect::Alignment, alignment );
|
qskSetFlag( this, aspect | QskAspect::Alignment, alignment );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetAlignmentHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetAlignmentHint( QskAspect::Aspect aspect )
|
||||||
@ -218,138 +271,132 @@ bool QskSkinnable::resetAlignmentHint( QskAspect::Aspect aspect )
|
|||||||
|
|
||||||
void QskSkinnable::setColor( QskAspect::Aspect aspect, const QColor& color )
|
void QskSkinnable::setColor( QskAspect::Aspect aspect, const QColor& color )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setColor( aspect, color );
|
qskSetColor( this, aspect, color );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setColor( QskAspect::Aspect aspect, Qt::GlobalColor color )
|
void QskSkinnable::setColor( QskAspect::Aspect aspect, Qt::GlobalColor color )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setColor( aspect, color );
|
qskSetColor( this, aspect, QColor( color ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setColor( QskAspect::Aspect aspect, QRgb rgb )
|
void QskSkinnable::setColor( QskAspect::Aspect aspect, QRgb rgb )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setColor( aspect, rgb );
|
qskSetColor( this, aspect, QColor::fromRgba( rgb ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor QskSkinnable::color( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QColor QskSkinnable::color( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
return effectiveHint( aspect | QskAspect::Color, status ).value< QColor >();
|
return qskColor< QColor >( this, aspect, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setMetric( QskAspect::Aspect aspect, qreal metric )
|
void QskSkinnable::setMetric( QskAspect::Aspect aspect, qreal metric )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setMetric( aspect, metric );
|
qskSetMetric( this, aspect, metric );
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QskSkinnable::metric( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
qreal QskSkinnable::metric( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
return effectiveHint( aspect | QskAspect::Metric, status ).toReal();
|
return qskMetric< qreal >( this, aspect, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setStrutSizeHint(
|
void QskSkinnable::setStrutSizeHint(
|
||||||
QskAspect::Aspect aspect, qreal width, qreal height )
|
QskAspect::Aspect aspect, qreal width, qreal height )
|
||||||
{
|
{
|
||||||
setStrutSizeHint( aspect, QSizeF( width, height ) );
|
qskSetMetric( this, aspect, QSizeF( width, height ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setStrutSizeHint( const QskAspect::Aspect aspect, const QSizeF& strut )
|
void QskSkinnable::setStrutSizeHint( const QskAspect::Aspect aspect, const QSizeF& strut )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setStrutSize( aspect, strut );
|
qskSetMetric( this, aspect, strut );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetStrutSizeHint( const QskAspect::Aspect aspect )
|
bool QskSkinnable::resetStrutSizeHint( const QskAspect::Aspect aspect )
|
||||||
{
|
{
|
||||||
return resetHint( aspect | QskAspect::Metric | QskAspect::StrutSize );
|
return resetMetric( aspect | QskAspect::StrutSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
QSizeF QskSkinnable::strutSizeHint(
|
QSizeF QskSkinnable::strutSizeHint(
|
||||||
const QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
const QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::StrutSize;
|
return qskMetric< QSizeF >( this, aspect | QskAspect::StrutSize, status );
|
||||||
return effectiveHint( asp, status ).value< QSizeF >();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setMarginHint( QskAspect::Aspect aspect, qreal margins )
|
void QskSkinnable::setMarginHint( QskAspect::Aspect aspect, qreal margins )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setMargin( aspect, QskMargins( margins ) );
|
qskSetMetric( this, aspect | QskAspect::Margin, QskMargins( margins ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setMarginHint( QskAspect::Aspect aspect, const QMarginsF& margins )
|
void QskSkinnable::setMarginHint( QskAspect::Aspect aspect, const QMarginsF& margins )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setMargin( aspect, margins );
|
qskSetMetric( this, aspect | QskAspect::Margin, QskMargins( margins ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetMarginHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetMarginHint( QskAspect::Aspect aspect )
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Margin;
|
return resetMetric( aspect | QskAspect::Margin );
|
||||||
return resetHint( asp );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QMarginsF QskSkinnable::marginHint(
|
QMarginsF QskSkinnable::marginHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Margin;
|
return qskMetric< QskMargins >( this, aspect | QskAspect::Margin, status );
|
||||||
return effectiveHint( asp, status ).value< QskMargins >();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setPaddingHint( QskAspect::Aspect aspect, qreal padding )
|
void QskSkinnable::setPaddingHint( QskAspect::Aspect aspect, qreal padding )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setPadding( aspect, QskMargins( padding ) );
|
qskSetMetric( this, aspect | QskAspect::Padding, QskMargins( padding ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setPaddingHint( QskAspect::Aspect aspect, const QMarginsF& padding )
|
void QskSkinnable::setPaddingHint( QskAspect::Aspect aspect, const QMarginsF& padding )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setPadding( aspect, padding );
|
qskSetMetric( this, aspect | QskAspect::Padding, QskMargins( padding ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetPaddingHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetPaddingHint( QskAspect::Aspect aspect )
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Padding;
|
return resetMetric( aspect | QskAspect::Padding );
|
||||||
return resetHint( asp );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QMarginsF QskSkinnable::paddingHint(
|
QMarginsF QskSkinnable::paddingHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Padding;
|
return qskMetric< QskMargins >( this, aspect | QskAspect::Padding, status );
|
||||||
return effectiveHint( asp, status ).value< QskMargins >();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setGradientHint(
|
void QskSkinnable::setGradientHint(
|
||||||
QskAspect::Aspect aspect, const QskGradient& gradient )
|
QskAspect::Aspect aspect, const QskGradient& gradient )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setGradient( aspect, gradient );
|
qskSetColor( this, aspect, gradient );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskGradient QskSkinnable::gradientHint(
|
QskGradient QskSkinnable::gradientHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
return effectiveHint( aspect | QskAspect::Color, status ).value< QskGradient >();
|
return qskColor< QskGradient >( this, aspect, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setBoxShapeHint(
|
void QskSkinnable::setBoxShapeHint(
|
||||||
QskAspect::Aspect aspect, const QskBoxShapeMetrics& shape )
|
QskAspect::Aspect aspect, const QskBoxShapeMetrics& shape )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setBoxShape( aspect, shape );
|
qskSetMetric( this, aspect | QskAspect::Shape, shape );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetBoxShapeHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetBoxShapeHint( QskAspect::Aspect aspect )
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Shape;
|
return resetMetric( aspect | QskAspect::Shape );
|
||||||
return resetHint( asp );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QskBoxShapeMetrics QskSkinnable::boxShapeHint(
|
QskBoxShapeMetrics QskSkinnable::boxShapeHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Shape;
|
return qskMetric< QskBoxShapeMetrics >(
|
||||||
return effectiveHint( asp, status ).value< QskBoxShapeMetrics >();
|
this, aspect | QskAspect::Shape, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setBoxBorderMetricsHint(
|
void QskSkinnable::setBoxBorderMetricsHint(
|
||||||
QskAspect::Aspect aspect, const QskBoxBorderMetrics& border )
|
QskAspect::Aspect aspect, const QskBoxBorderMetrics& border )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setBoxBorder( aspect, border );
|
qskSetMetric( this, aspect | QskAspect::Border, border );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetBoxBorderMetricsHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetBoxBorderMetricsHint( QskAspect::Aspect aspect )
|
||||||
@ -361,45 +408,43 @@ bool QskSkinnable::resetBoxBorderMetricsHint( QskAspect::Aspect aspect )
|
|||||||
QskBoxBorderMetrics QskSkinnable::boxBorderMetricsHint(
|
QskBoxBorderMetrics QskSkinnable::boxBorderMetricsHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Metric | QskAspect::Border;
|
return qskMetric< QskBoxBorderMetrics >(
|
||||||
return effectiveHint( asp, status ).value< QskBoxBorderMetrics >();
|
this, aspect | QskAspect::Border, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setBoxBorderColorsHint(
|
void QskSkinnable::setBoxBorderColorsHint(
|
||||||
QskAspect::Aspect aspect, const QskBoxBorderColors& colors )
|
QskAspect::Aspect aspect, const QskBoxBorderColors& colors )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setBoxBorderColors( aspect, colors );
|
qskSetColor( this, aspect | QskAspect::Border, colors );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetBoxBorderColorsHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetBoxBorderColorsHint( QskAspect::Aspect aspect )
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Color | QskAspect::Border;
|
return resetColor( aspect | QskAspect::Border );
|
||||||
return resetHint( asp );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QskBoxBorderColors QskSkinnable::boxBorderColorsHint(
|
QskBoxBorderColors QskSkinnable::boxBorderColorsHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto asp = aspect | QskAspect::Color | QskAspect::Border;
|
return qskColor< QskBoxBorderColors >(
|
||||||
return effectiveHint( asp, status ).value< QskBoxBorderColors >();
|
this, aspect | QskAspect::Border, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setIntervalHint(
|
void QskSkinnable::setIntervalHint(
|
||||||
QskAspect::Aspect aspect, const QskIntervalF& interval )
|
QskAspect::Aspect aspect, const QskIntervalF& interval )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setInterval( aspect, interval );
|
qskSetMetric( this, aspect, interval );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskIntervalF QskSkinnable::intervalHint(
|
QskIntervalF QskSkinnable::intervalHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
const auto hint = effectiveHint( aspect | QskAspect::Metric, status );
|
return qskMetric< QskIntervalF >( this, aspect, status );
|
||||||
return hint.value< QskIntervalF >();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setSpacingHint( QskAspect::Aspect aspect, qreal spacing )
|
void QskSkinnable::setSpacingHint( QskAspect::Aspect aspect, qreal spacing )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setSpacing( aspect, spacing );
|
qskSetMetric( this, aspect | QskAspect::Spacing, spacing );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetSpacingHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetSpacingHint( QskAspect::Aspect aspect )
|
||||||
@ -410,18 +455,18 @@ bool QskSkinnable::resetSpacingHint( QskAspect::Aspect aspect )
|
|||||||
qreal QskSkinnable::spacingHint(
|
qreal QskSkinnable::spacingHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
return metric( aspect | QskAspect::Spacing, status );
|
return qskMetric< qreal >( this, aspect | QskAspect::Spacing, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setFontRole( QskAspect::Aspect aspect, int role )
|
void QskSkinnable::setFontRole( QskAspect::Aspect aspect, int role )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setFontRole( aspect, role );
|
qskSetFlag( this, aspect | QskAspect::FontRole, role );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QskSkinnable::fontRole(
|
int QskSkinnable::fontRole(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
return effectiveHint( aspect | QskAspect::FontRole, status ).toInt();
|
return qskFlag( this, aspect | QskAspect::FontRole, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
QFont QskSkinnable::effectiveFont( QskAspect::Aspect aspect ) const
|
QFont QskSkinnable::effectiveFont( QskAspect::Aspect aspect ) const
|
||||||
@ -431,13 +476,13 @@ QFont QskSkinnable::effectiveFont( QskAspect::Aspect aspect ) const
|
|||||||
|
|
||||||
void QskSkinnable::setGraphicRole( QskAspect::Aspect aspect, int role )
|
void QskSkinnable::setGraphicRole( QskAspect::Aspect aspect, int role )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setGraphicRole( aspect, role );
|
qskSetFlag( this, aspect | QskAspect::GraphicRole, role );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QskSkinnable::graphicRole(
|
int QskSkinnable::graphicRole(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
return effectiveHint( aspect | QskAspect::GraphicRole, status ).toInt();
|
return qskFlag( this, aspect | QskAspect::GraphicRole, status );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskColorFilter QskSkinnable::effectiveGraphicFilter(
|
QskColorFilter QskSkinnable::effectiveGraphicFilter(
|
||||||
@ -460,7 +505,7 @@ QskColorFilter QskSkinnable::effectiveGraphicFilter(
|
|||||||
|
|
||||||
if ( !aspect.isAnimator() )
|
if ( !aspect.isAnimator() )
|
||||||
{
|
{
|
||||||
QVariant v = animatedValue( aspect, nullptr );
|
auto v = animatedValue( aspect, nullptr );
|
||||||
if ( v.canConvert< QskColorFilter >() )
|
if ( v.canConvert< QskColorFilter >() )
|
||||||
return v.value< QskColorFilter >();
|
return v.value< QskColorFilter >();
|
||||||
|
|
||||||
@ -485,13 +530,13 @@ QskColorFilter QskSkinnable::effectiveGraphicFilter(
|
|||||||
return effectiveSkin()->graphicFilter( hint.toInt() );
|
return effectiveSkin()->graphicFilter( hint.toInt() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSkinnable::setAnimation(
|
void QskSkinnable::setAnimationHint(
|
||||||
QskAspect::Aspect aspect, QskAnimationHint animation )
|
QskAspect::Aspect aspect, QskAnimationHint animation )
|
||||||
{
|
{
|
||||||
m_data->hintTable.setAnimation( aspect, animation );
|
m_data->hintTable.setAnimation( aspect, animation );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskAnimationHint QskSkinnable::animation(
|
QskAnimationHint QskSkinnable::animationHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
aspect.setAnimator( true );
|
aspect.setAnimator( true );
|
||||||
@ -502,7 +547,7 @@ QskAnimationHint QskSkinnable::effectiveAnimation(
|
|||||||
QskAspect::Type type, QskAspect::Subcontrol subControl,
|
QskAspect::Type type, QskAspect::Subcontrol subControl,
|
||||||
QskAspect::State state, QskSkinHintStatus* status ) const
|
QskAspect::State state, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
QskAspect::Aspect aspect = subControl | type | state;
|
auto aspect = subControl | type | state;
|
||||||
aspect.setAnimator( true );
|
aspect.setAnimator( true );
|
||||||
|
|
||||||
QskAnimationHint hint;
|
QskAnimationHint hint;
|
||||||
@ -543,8 +588,16 @@ QskAnimationHint QskSkinnable::effectiveAnimation(
|
|||||||
return hint;
|
return hint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHint )
|
||||||
|
{
|
||||||
|
aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) );
|
||||||
|
m_data->hintTable.setHint( aspect, skinHint );
|
||||||
|
}
|
||||||
|
|
||||||
bool QskSkinnable::resetHint( QskAspect::Aspect aspect )
|
bool QskSkinnable::resetHint( QskAspect::Aspect aspect )
|
||||||
{
|
{
|
||||||
|
aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) );
|
||||||
|
|
||||||
if ( !m_data->hintTable.hasHint( aspect ) )
|
if ( !m_data->hintTable.hasHint( aspect ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -557,7 +610,6 @@ bool QskSkinnable::resetHint( QskAspect::Aspect aspect )
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
auto a = aspect;
|
auto a = aspect;
|
||||||
a.setSubControl( effectiveSubcontrol( a.subControl() ) );
|
|
||||||
a.setPlacement( effectivePlacement() );
|
a.setPlacement( effectivePlacement() );
|
||||||
|
|
||||||
if ( a.state() == QskAspect::NoState )
|
if ( a.state() == QskAspect::NoState )
|
||||||
@ -573,9 +625,7 @@ bool QskSkinnable::resetHint( QskAspect::Aspect aspect )
|
|||||||
QVariant QskSkinnable::effectiveHint(
|
QVariant QskSkinnable::effectiveHint(
|
||||||
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
QskAspect::Aspect aspect, QskSkinHintStatus* status ) const
|
||||||
{
|
{
|
||||||
if ( const auto subControl = aspect.subControl() )
|
aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) );
|
||||||
aspect.setSubControl( effectiveSubcontrol( subControl ) );
|
|
||||||
|
|
||||||
aspect.setPlacement( effectivePlacement() );
|
aspect.setPlacement( effectivePlacement() );
|
||||||
|
|
||||||
if ( aspect.isAnimator() )
|
if ( aspect.isAnimator() )
|
||||||
|
@ -143,9 +143,10 @@ class QSK_EXPORT QskSkinnable
|
|||||||
|
|
||||||
QskColorFilter effectiveGraphicFilter( QskAspect::Aspect ) const;
|
QskColorFilter effectiveGraphicFilter( QskAspect::Aspect ) const;
|
||||||
|
|
||||||
void setAnimation( QskAspect::Aspect, QskAnimationHint );
|
void setAnimationHint( QskAspect::Aspect, QskAnimationHint );
|
||||||
QskAnimationHint animation( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
|
QskAnimationHint animationHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const;
|
||||||
|
|
||||||
|
void setSkinHint( QskAspect::Aspect, const QVariant& );
|
||||||
bool resetHint( QskAspect::Aspect );
|
bool resetHint( QskAspect::Aspect );
|
||||||
|
|
||||||
QskAnimationHint effectiveAnimation( QskAspect::Type, QskAspect::Subcontrol,
|
QskAnimationHint effectiveAnimation( QskAspect::Type, QskAspect::Subcontrol,
|
||||||
|
@ -19,12 +19,6 @@ QSK_SYSTEM_STATE( QskSlider, Pressed, QskAspect::FirstSystemState << 2 )
|
|||||||
QSK_SYSTEM_STATE( QskSlider, Minimum, QskAspect::FirstSystemState << 3 )
|
QSK_SYSTEM_STATE( QskSlider, Minimum, QskAspect::FirstSystemState << 3 )
|
||||||
QSK_SYSTEM_STATE( QskSlider, Maximum, QskAspect::FirstSystemState << 4 )
|
QSK_SYSTEM_STATE( QskSlider, Maximum, QskAspect::FirstSystemState << 4 )
|
||||||
|
|
||||||
static inline QskAspect::Aspect qskAspectPosition( const QskSlider* slider )
|
|
||||||
{
|
|
||||||
const auto subControl = slider->effectiveSubcontrol( QskSlider::Handle );
|
|
||||||
return subControl | QskAspect::Position | QskAspect::Metric;
|
|
||||||
}
|
|
||||||
|
|
||||||
class QskSlider::PrivateData
|
class QskSlider::PrivateData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -113,7 +107,7 @@ bool QskSlider::isTracking() const
|
|||||||
|
|
||||||
void QskSlider::aboutToShow()
|
void QskSlider::aboutToShow()
|
||||||
{
|
{
|
||||||
setMetric( qskAspectPosition( this ), valueAsRatio() );
|
setMetric( Handle | QskAspect::Position, valueAsRatio() );
|
||||||
Inherited::aboutToShow();
|
Inherited::aboutToShow();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,13 +232,13 @@ void QskSlider::mouseReleaseEvent( QMouseEvent* event )
|
|||||||
|
|
||||||
qreal QskSlider::handlePosition() const
|
qreal QskSlider::handlePosition() const
|
||||||
{
|
{
|
||||||
return metric( qskAspectPosition( this ) );
|
return metric( Handle | QskAspect::Position );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSlider::moveHandle()
|
void QskSlider::moveHandle()
|
||||||
{
|
{
|
||||||
const auto hint = animation( qskAspectPosition( this ) | skinState() );
|
const auto aspect = Handle | QskAspect::Metric | QskAspect::Position;
|
||||||
moveHandleTo( value(), hint );
|
moveHandleTo( value(), animationHint( aspect | skinState() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
|
void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
|
||||||
@ -252,7 +246,8 @@ void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
|
|||||||
setSkinStateFlag( QskSlider::Minimum, value <= minimum() );
|
setSkinStateFlag( QskSlider::Minimum, value <= minimum() );
|
||||||
setSkinStateFlag( QskSlider::Maximum, value >= maximum() );
|
setSkinStateFlag( QskSlider::Maximum, value >= maximum() );
|
||||||
|
|
||||||
const auto aspect = qskAspectPosition( this );
|
auto aspect = Handle | QskAspect::Metric | QskAspect::Position;
|
||||||
|
|
||||||
const qreal pos = valueAsRatio( value );
|
const qreal pos = valueAsRatio( value );
|
||||||
|
|
||||||
if ( hint.duration > 0 )
|
if ( hint.duration > 0 )
|
||||||
@ -260,6 +255,10 @@ void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
|
|||||||
const qreal oldPos = metric( aspect );
|
const qreal oldPos = metric( aspect );
|
||||||
setMetric( aspect, pos );
|
setMetric( aspect, pos );
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
// startTransition should do this: TODO ...
|
||||||
|
aspect.setSubControl( effectiveSubcontrol( Handle ) );
|
||||||
|
#endif
|
||||||
startTransition( aspect, hint, oldPos, pos );
|
startTransition( aspect, hint, oldPos, pos );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -62,8 +62,7 @@ void QskSubWindow::setDecorated( bool on )
|
|||||||
if ( on == isDecorated() )
|
if ( on == isDecorated() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto subControl = effectiveSubcontrol( QskSubWindow::Panel );
|
setFlagHint( Panel | QskAspect::Decoration, on );
|
||||||
setFlagHint( subControl | QskAspect::Decoration, on );
|
|
||||||
|
|
||||||
resetImplicitSize(); // in case some parent wants to layout
|
resetImplicitSize(); // in case some parent wants to layout
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ QskTabView::QskTabView( Qsk::Position tabPosition, QQuickItem* parent )
|
|||||||
m_data->stackBox->setObjectName( QStringLiteral( "QskTabViewStackBox" ) );
|
m_data->stackBox->setObjectName( QStringLiteral( "QskTabViewStackBox" ) );
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
const auto hint = animation( Page );
|
const auto hint = animationHint( Page );
|
||||||
if ( hint.duration > 0 )
|
if ( hint.duration > 0 )
|
||||||
{
|
{
|
||||||
// When changing the skin, we have to update the animator. TODO ...
|
// When changing the skin, we have to update the animator. TODO ...
|
||||||
|
@ -526,16 +526,14 @@ int QskTextInput::fontRole() const
|
|||||||
|
|
||||||
void QskTextInput::setFontRole( int role )
|
void QskTextInput::setFontRole( int role )
|
||||||
{
|
{
|
||||||
const int oldRole = fontRole();
|
if ( role != fontRole() )
|
||||||
|
|
||||||
QskSkinnable::setFontRole( effectiveSubcontrol( Text ), role );
|
|
||||||
|
|
||||||
if ( oldRole != role )
|
|
||||||
{
|
{
|
||||||
|
QskSkinnable::setFontRole( Text, role );
|
||||||
|
|
||||||
polish();
|
polish();
|
||||||
resetImplicitSize();
|
resetImplicitSize();
|
||||||
|
|
||||||
Qt::InputMethodQueries queries = Qt::ImCursorRectangle | Qt::ImFont;
|
auto queries = Qt::ImCursorRectangle | Qt::ImFont;
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK( 5, 7, 0 )
|
#if QT_VERSION >= QT_VERSION_CHECK( 5, 7, 0 )
|
||||||
queries |= Qt::ImAnchorRectangle;
|
queries |= Qt::ImAnchorRectangle;
|
||||||
#endif
|
#endif
|
||||||
@ -549,9 +547,7 @@ void QskTextInput::setAlignment( Qt::Alignment alignment )
|
|||||||
{
|
{
|
||||||
if ( alignment != this->alignment() )
|
if ( alignment != this->alignment() )
|
||||||
{
|
{
|
||||||
const auto subControl = effectiveSubcontrol( Text );
|
setAlignmentHint( Text, alignment );
|
||||||
setAlignmentHint( subControl, alignment );
|
|
||||||
|
|
||||||
m_data->textInput->setAlignment( alignment );
|
m_data->textInput->setAlignment( alignment );
|
||||||
|
|
||||||
polish();
|
polish();
|
||||||
|
@ -171,7 +171,7 @@ void QskTextLabel::setFontRole( int role )
|
|||||||
{
|
{
|
||||||
const int oldRole = fontRole();
|
const int oldRole = fontRole();
|
||||||
|
|
||||||
QskSkinnable::setFontRole( effectiveSubcontrol( Text ), role );
|
QskSkinnable::setFontRole( Text, role );
|
||||||
|
|
||||||
if ( oldRole != role )
|
if ( oldRole != role )
|
||||||
{
|
{
|
||||||
@ -189,13 +189,13 @@ int QskTextLabel::fontRole() const
|
|||||||
|
|
||||||
void QskTextLabel::setTextColor( const QColor& color )
|
void QskTextLabel::setTextColor( const QColor& color )
|
||||||
{
|
{
|
||||||
const QColor oldColor = textColor();
|
if ( color != textColor() )
|
||||||
|
|
||||||
QskSkinnable::setColor( effectiveSubcontrol( Text ), color );
|
|
||||||
|
|
||||||
if ( oldColor != color )
|
|
||||||
{
|
{
|
||||||
update();
|
QskSkinnable::setColor( Text, color );
|
||||||
|
|
||||||
|
if ( !m_data->text.isEmpty() )
|
||||||
|
update();
|
||||||
|
|
||||||
Q_EMIT textColorChanged( color );
|
Q_EMIT textColorChanged( color );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -212,16 +212,15 @@ Qt::Alignment QskTextLabel::alignment() const
|
|||||||
|
|
||||||
void QskTextLabel::setAlignment( Qt::Alignment alignment )
|
void QskTextLabel::setAlignment( Qt::Alignment alignment )
|
||||||
{
|
{
|
||||||
if ( alignment == this->alignment() )
|
if ( alignment != this->alignment() )
|
||||||
return;
|
{
|
||||||
|
setAlignmentHint( Text, alignment );
|
||||||
|
|
||||||
const auto subControl = effectiveSubcontrol( Text );
|
if ( !m_data->text.isEmpty() )
|
||||||
setAlignmentHint( subControl, alignment );
|
update();
|
||||||
|
|
||||||
if ( m_data->text.isEmpty() )
|
Q_EMIT alignmentChanged();
|
||||||
update();
|
}
|
||||||
|
|
||||||
Q_EMIT alignmentChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QFont QskTextLabel::font() const
|
QFont QskTextLabel::font() const
|
||||||
|
Loading…
x
Reference in New Issue
Block a user