methods for setting hints for state combinations added
This commit is contained in:
parent
9ebb5ae0a2
commit
eea001f831
|
@ -27,11 +27,25 @@ inline const QVariant* qskResolvedHint( QskAspect aspect,
|
||||||
return &it->second;
|
return &it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
/*
|
||||||
|
We intend to remove the obscure mechanism of resolving a hint
|
||||||
|
by dropping the state bits ony by one in the future. Instead we
|
||||||
|
will have methods in QskSkinHintTableEditor, that allow
|
||||||
|
to set combinations of states in one call.
|
||||||
|
*/
|
||||||
if ( const auto topState = aspect.topState() )
|
if ( const auto topState = aspect.topState() )
|
||||||
{
|
{
|
||||||
aspect.clearState( topState );
|
aspect.clearState( topState );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if ( aspect.hasState() )
|
||||||
|
{
|
||||||
|
aspect.clearStates();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if ( aspect.placement() )
|
if ( aspect.placement() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,6 +14,50 @@
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
inline void setHintForAllCombinations(
|
||||||
|
QskSkinHintTable* table, QskAspect aspect, const QVariant& hint,
|
||||||
|
QskAspect::State state, QskAspect::State mask )
|
||||||
|
{
|
||||||
|
if ( mask == 0 )
|
||||||
|
{
|
||||||
|
if ( state != 0 )
|
||||||
|
table->setHint( aspect | state, hint );
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto stateBit = static_cast< QskAspect::State >(
|
||||||
|
1 << qCountTrailingZeroBits( mask ) );
|
||||||
|
|
||||||
|
mask &= ~stateBit;
|
||||||
|
|
||||||
|
setHintForAllCombinations( table, aspect, hint, state, mask );
|
||||||
|
setHintForAllCombinations( table, aspect, hint, state | stateBit, mask );
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool removeHintForAllCombinations(
|
||||||
|
QskSkinHintTable* table, QskAspect aspect,
|
||||||
|
QskAspect::State state, QskAspect::State mask )
|
||||||
|
{
|
||||||
|
if ( mask == 0 )
|
||||||
|
{
|
||||||
|
if ( state != 0 )
|
||||||
|
return table->removeHint( aspect | state );
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto stateBit = static_cast< QskAspect::State >(
|
||||||
|
1 << qCountTrailingZeroBits( mask ) );
|
||||||
|
|
||||||
|
mask &= ~stateBit;
|
||||||
|
|
||||||
|
bool ret = removeHintForAllCombinations( table, aspect, state, mask );
|
||||||
|
ret |= removeHintForAllCombinations( table, aspect, state | stateBit, mask );
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
inline QskAspect aspectStrutSize( QskAspect aspect )
|
inline QskAspect aspectStrutSize( QskAspect aspect )
|
||||||
{
|
{
|
||||||
return aspect | QskAspect::StrutSize;
|
return aspect | QskAspect::StrutSize;
|
||||||
|
@ -75,6 +119,36 @@ QskSkinHintTable* QskSkinHintTableEditor::table() const
|
||||||
return m_table;
|
return m_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setHintForCombinations(
|
||||||
|
QskAspect aspect, const QVariant& hint, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
::setHintForAllCombinations( m_table, aspect, hint, QskAspect::NoState, stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QskSkinHintTableEditor::removeHintForCombinations(
|
||||||
|
QskAspect aspect, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
return ::removeHintForAllCombinations( m_table, aspect, QskAspect::NoState, stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setFlagHintForCombinations(
|
||||||
|
QskAspect aspect, const QVariant& hint, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setHintForCombinations( aspect | QskAspect::Flag, hint, stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setMetricHintForCombinations(
|
||||||
|
QskAspect aspect, const QVariant& hint, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setHintForCombinations( aspect | QskAspect::Metric, hint, stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setColorHintForCombinations(
|
||||||
|
QskAspect aspect, const QVariant& hint, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setHintForCombinations( aspect | QskAspect::Color, hint, stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::setFlag( QskAspect aspect, int flag )
|
void QskSkinHintTableEditor::setFlag( QskAspect aspect, int flag )
|
||||||
{
|
{
|
||||||
setFlagHint( aspect, flag );
|
setFlagHint( aspect, flag );
|
||||||
|
@ -132,6 +206,12 @@ void QskSkinHintTableEditor::setGradient( QskAspect aspect, const QskGradient& g
|
||||||
setColorHint( aspect, gradient );
|
setColorHint( aspect, gradient );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setGradientForCombinations(
|
||||||
|
QskAspect aspect, const QskGradient& gradient, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setColorHintForCombinations( aspect, QVariant::fromValue( gradient ), stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const
|
QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const
|
||||||
{
|
{
|
||||||
return colorHint< QskGradient >( aspect );
|
return colorHint< QskGradient >( aspect );
|
||||||
|
@ -279,6 +359,13 @@ void QskSkinHintTableEditor::setBoxShape(
|
||||||
setMetricHint( aspectShape( aspect ), shape );
|
setMetricHint( aspectShape( aspect ), shape );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setBoxShapeForCombinations(
|
||||||
|
QskAspect aspect, const QskBoxShapeMetrics& shape, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setMetricHintForCombinations(
|
||||||
|
aspectShape( aspect ), QVariant::fromValue( shape ), stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeBoxShape( QskAspect aspect )
|
void QskSkinHintTableEditor::removeBoxShape( QskAspect aspect )
|
||||||
{
|
{
|
||||||
return removeMetricHint( aspectShape( aspect ) );
|
return removeMetricHint( aspectShape( aspect ) );
|
||||||
|
@ -309,6 +396,13 @@ void QskSkinHintTableEditor::setBoxBorderMetrics(
|
||||||
setMetricHint( aspectBorder( aspect ), borderMetrics );
|
setMetricHint( aspectBorder( aspect ), borderMetrics );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setBoxBorderMetricsForCombinations(
|
||||||
|
QskAspect aspect, const QskBoxBorderMetrics& borderMetrics, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setMetricHintForCombinations( aspectBorder( aspect ),
|
||||||
|
QVariant::fromValue( borderMetrics ), stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::removeBoxBorderMetric( QskAspect aspect )
|
void QskSkinHintTableEditor::removeBoxBorderMetric( QskAspect aspect )
|
||||||
{
|
{
|
||||||
return removeMetricHint( aspectBorder( aspect ) );
|
return removeMetricHint( aspectBorder( aspect ) );
|
||||||
|
@ -325,6 +419,13 @@ void QskSkinHintTableEditor::setBoxBorderColors(
|
||||||
setColorHint( aspectBorder( aspect ), borderColors );
|
setColorHint( aspectBorder( aspect ), borderColors );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskSkinHintTableEditor::setBoxBorderColorsForCombinations(
|
||||||
|
QskAspect aspect, const QskBoxBorderColors& borderColors, QskAspect::State stateMask )
|
||||||
|
{
|
||||||
|
setColorHintForCombinations( aspectBorder( aspect ),
|
||||||
|
QVariant::fromValue( borderColors ), stateMask );
|
||||||
|
}
|
||||||
|
|
||||||
void QskSkinHintTableEditor::setBoxBorderColors( QskAspect aspect,
|
void QskSkinHintTableEditor::setBoxBorderColors( QskAspect aspect,
|
||||||
const QColor& left, const QColor& top, const QColor& right, const QColor& bottom )
|
const QColor& left, const QColor& top, const QColor& right, const QColor& bottom )
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,8 +31,11 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
|
|
||||||
void setHint( QskAspect, const QVariant& );
|
void setHint( QskAspect, const QVariant& );
|
||||||
const QVariant& hint( QskAspect ) const;
|
const QVariant& hint( QskAspect ) const;
|
||||||
|
void setHintForCombinations( QskAspect, const QVariant&, QskAspect::State );
|
||||||
|
|
||||||
bool removeHint( QskAspect );
|
bool removeHint( QskAspect );
|
||||||
|
bool removeHintForCombinations( QskAspect, QskAspect::State );
|
||||||
|
|
||||||
QVariant takeHint( QskAspect );
|
QVariant takeHint( QskAspect );
|
||||||
|
|
||||||
bool hasHint( QskAspect ) const;
|
bool hasHint( QskAspect ) const;
|
||||||
|
@ -48,6 +51,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
// flag/metric/color
|
// flag/metric/color
|
||||||
|
|
||||||
void setFlagHint( QskAspect, const QVariant& );
|
void setFlagHint( QskAspect, const QVariant& );
|
||||||
|
void setFlagHintForCombinations( QskAspect, const QVariant&, QskAspect::State );
|
||||||
void removeFlagHint( QskAspect );
|
void removeFlagHint( QskAspect );
|
||||||
QVariant flagHint( QskAspect ) const;
|
QVariant flagHint( QskAspect ) const;
|
||||||
|
|
||||||
|
@ -55,6 +59,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
template< typename T > T flagHint( QskAspect ) const;
|
template< typename T > T flagHint( QskAspect ) const;
|
||||||
|
|
||||||
void setMetricHint( QskAspect, const QVariant& );
|
void setMetricHint( QskAspect, const QVariant& );
|
||||||
|
void setMetricHintForCombinations( QskAspect, const QVariant&, QskAspect::State );
|
||||||
void removeMetricHint( QskAspect );
|
void removeMetricHint( QskAspect );
|
||||||
QVariant metricHint( QskAspect ) const;
|
QVariant metricHint( QskAspect ) const;
|
||||||
|
|
||||||
|
@ -62,6 +67,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
template< typename T > T metricHint( QskAspect ) const;
|
template< typename T > T metricHint( QskAspect ) const;
|
||||||
|
|
||||||
void setColorHint( QskAspect, const QVariant& );
|
void setColorHint( QskAspect, const QVariant& );
|
||||||
|
void setColorHintForCombinations( QskAspect, const QVariant&, QskAspect::State );
|
||||||
void removeColorHint( QskAspect );
|
void removeColorHint( QskAspect );
|
||||||
QVariant colorHint( QskAspect ) const;
|
QVariant colorHint( QskAspect ) const;
|
||||||
|
|
||||||
|
@ -84,6 +90,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setHGradient( QskAspect, const QColor&, const QColor& );
|
void setHGradient( QskAspect, const QColor&, const QColor& );
|
||||||
void setVGradient( QskAspect, const QColor&, const QColor& );
|
void setVGradient( QskAspect, const QColor&, const QColor& );
|
||||||
void setGradient( QskAspect, const QskGradient& );
|
void setGradient( QskAspect, const QskGradient& );
|
||||||
|
void setGradientForCombinations( QskAspect, const QskGradient&, QskAspect::State );
|
||||||
QskGradient gradient( QskAspect ) const;
|
QskGradient gradient( QskAspect ) const;
|
||||||
|
|
||||||
void setStrutSize( QskAspect, const QSizeF& );
|
void setStrutSize( QskAspect, const QSizeF& );
|
||||||
|
@ -123,6 +130,7 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setBoxShape( QskAspect, qreal topLeft, qreal topRight,
|
void setBoxShape( QskAspect, qreal topLeft, qreal topRight,
|
||||||
qreal bottomLeft, qreal bottomRight, Qt::SizeMode = Qt::AbsoluteSize );
|
qreal bottomLeft, qreal bottomRight, Qt::SizeMode = Qt::AbsoluteSize );
|
||||||
void setBoxShape( QskAspect, const QskBoxShapeMetrics& );
|
void setBoxShape( QskAspect, const QskBoxShapeMetrics& );
|
||||||
|
void setBoxShapeForCombinations( QskAspect, const QskBoxShapeMetrics&, QskAspect::State );
|
||||||
void removeBoxShape( QskAspect );
|
void removeBoxShape( QskAspect );
|
||||||
QskBoxShapeMetrics boxShape( QskAspect ) const;
|
QskBoxShapeMetrics boxShape( QskAspect ) const;
|
||||||
|
|
||||||
|
@ -131,10 +139,12 @@ class QSK_EXPORT QskSkinHintTableEditor
|
||||||
void setBoxBorderMetrics( QskAspect, qreal left, qreal top,
|
void setBoxBorderMetrics( QskAspect, qreal left, qreal top,
|
||||||
qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize );
|
qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize );
|
||||||
void setBoxBorderMetrics( QskAspect, const QskBoxBorderMetrics& );
|
void setBoxBorderMetrics( QskAspect, const QskBoxBorderMetrics& );
|
||||||
|
void setBoxBorderMetricsForCombinations( QskAspect, const QskBoxBorderMetrics&, QskAspect::State );
|
||||||
void removeBoxBorderMetric( QskAspect );
|
void removeBoxBorderMetric( QskAspect );
|
||||||
QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const;
|
QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const;
|
||||||
|
|
||||||
void setBoxBorderColors( QskAspect, const QskBoxBorderColors& );
|
void setBoxBorderColors( QskAspect, const QskBoxBorderColors& );
|
||||||
|
void setBoxBorderColorsForCombinations( QskAspect, const QskBoxBorderColors&, QskAspect::State );
|
||||||
void setBoxBorderColors( QskAspect, const QColor& left, const QColor& top,
|
void setBoxBorderColors( QskAspect, const QColor& left, const QColor& top,
|
||||||
const QColor& right, const QColor& bottom );
|
const QColor& right, const QColor& bottom );
|
||||||
void removeBoxBorderColors( QskAspect );
|
void removeBoxBorderColors( QskAspect );
|
||||||
|
|
Loading…
Reference in New Issue