QskAspect::States introduced to be more accurate about state vs. states

This commit is contained in:
Uwe Rathmann 2021-09-14 13:05:56 +02:00
parent 52e917ec2f
commit 139f40067b
17 changed files with 404 additions and 337 deletions

View File

@ -342,7 +342,7 @@ void Editor::setupPushButton()
for ( auto state2 : { A::NoState, Q::Hovered } ) for ( auto state2 : { A::NoState, Q::Hovered } )
{ {
for ( auto state3 : { Q::Pressed, Q::Checked, Q::Checked | Q::Pressed } ) for ( auto state3 : { Q::Pressed | A::NoState, Q::Checked | A::NoState, Q::Checked | Q::Pressed } )
{ {
const auto states = state1 | state2 | state3; const auto states = state1 | state2 | state3;
@ -393,7 +393,7 @@ void Editor::setupDialogButton()
for ( auto state2 : { A::NoState, Q::Hovered } ) for ( auto state2 : { A::NoState, Q::Hovered } )
{ {
for ( auto state3 : { Q::Pressed, Q::Checked, Q::Checked | Q::Pressed } ) for ( auto state3 : { Q::Pressed | A::NoState, Q::Checked | A::NoState, Q::Checked | Q::Pressed } )
{ {
const auto states = state1 | state2 | state3; const auto states = state1 | state2 | state3;
@ -467,12 +467,12 @@ void Editor::setupSlider()
setGradient( Q::Handle, m_pal.accentColor ); setGradient( Q::Handle, m_pal.accentColor );
setGradient( Q::Handle | Q::Pressed, m_pal.accentColor ); setGradient( Q::Handle | Q::Pressed, m_pal.accentColor );
for ( auto state : { A::NoState, Q::Pressed, Q::Pressed | Q::Hovered } ) for ( auto state : { A::States(), Q::Pressed | A::NoState, Q::Pressed | Q::Hovered } )
{ {
setBoxBorderColors( Q::Handle | state, m_pal.accentColor ); setBoxBorderColors( Q::Handle | state, m_pal.accentColor );
} }
for ( auto state : { A::NoState, Q::Pressed, Q::Pressed | Q::Hovered } ) for ( auto state : { A::States(), Q::Pressed | A::NoState, Q::Pressed | Q::Hovered } )
{ {
const auto aspect = Q::Handle | Q::Minimum | state; const auto aspect = Q::Handle | Q::Minimum | state;
setGradient( aspect, Grey300 ); setGradient( aspect, Grey300 );

View File

@ -507,7 +507,7 @@ void Editor::setupTabButton()
setGradient( Q::Panel | placement, setGradient( Q::Panel | placement,
QskGradient( Qt::Vertical, m_pal.lighter125, m_pal.lighter110 ) ); QskGradient( Qt::Vertical, m_pal.lighter125, m_pal.lighter110 ) );
for ( const auto state : { Q::Checked, Q::Checked | Q::Pressed } ) for ( const auto state : { Q::Checked | A::NoState, Q::Checked | Q::Pressed } )
{ {
setGradient( Q::Panel | placement | state, m_pal.lighter125 ); setGradient( Q::Panel | placement | state, m_pal.lighter125 );
setColor( Q::Text | placement | state, m_pal.themeForeground ); setColor( Q::Text | placement | state, m_pal.themeForeground );
@ -518,7 +518,7 @@ void Editor::setupTabButton()
{ {
setGradient( Q::Panel | placement, m_pal.lighter125 ); setGradient( Q::Panel | placement, m_pal.lighter125 );
for ( const auto state : { Q::Checked, Q::Checked | Q::Pressed } ) for ( const auto state : { Q::Checked | A::NoState, Q::Checked | Q::Pressed } )
{ {
setGradient( Q::Panel | placement | state, m_pal.highlighted ); setGradient( Q::Panel | placement | state, m_pal.highlighted );
setColor( Q::Text | placement | state, m_pal.highlightedText ); setColor( Q::Text | placement | state, m_pal.highlightedText );
@ -580,7 +580,7 @@ void Editor::setupTabButton()
setMargin( aspect, margins0 ); setMargin( aspect, margins0 );
for ( const auto state : { Q::Checked, Q::Checked | Q::Pressed } ) for ( const auto state : { Q::Checked | A::NoState, Q::Checked | Q::Pressed } )
setMargin( aspect | state, margins1 ); setMargin( aspect | state, margins1 );
setPadding( aspect, padding ); setPadding( aspect, padding );

View File

@ -172,17 +172,17 @@ static QByteArray qskStateKey( const QMetaObject* metaObject, quint16 state )
return QByteArray(); return QByteArray();
} }
static QByteArray qskStateString( static QByteArray qskStatesToString(
const QMetaObject* metaObject, QskAspect::State state ) const QMetaObject* metaObject, QskAspect::States states )
{ {
if ( state == 0 ) if ( states == 0 )
{ {
return "NoState"; return "NoState";
} }
if ( metaObject == nullptr ) if ( metaObject == nullptr )
{ {
const std::bitset< 16 > stateBits( state ); const std::bitset< 16 > stateBits( states );
return stateBits.to_string().c_str(); return stateBits.to_string().c_str();
} }
@ -196,7 +196,7 @@ static QByteArray qskStateString(
{ {
const quint16 mask = 1 << i; const quint16 mask = 1 << i;
if ( state & mask ) if ( states & mask )
{ {
if ( first ) if ( first )
first = false; first = false;
@ -206,7 +206,7 @@ static QByteArray qskStateString(
const auto key = qskStateKey( metaObject, mask ); const auto key = qskStateKey( metaObject, mask );
if ( key.isEmpty() ) if ( key.isEmpty() )
{ {
const std::bitset< 16 > stateBits( state ); const std::bitset< 16 > stateBits( states );
stateString += stateBits.to_string().c_str(); stateString += stateBits.to_string().c_str();
} }
else else
@ -255,9 +255,9 @@ QDebug operator<<( QDebug debug, QskAspect::Placement placement )
return debug; return debug;
} }
QDebug operator<<( QDebug debug, QskAspect::State state ) QDebug operator<<( QDebug debug, QskAspect::States states )
{ {
qskDebugState( debug, nullptr, state ); qskDebugStates( debug, nullptr, states );
return debug; return debug;
} }
@ -267,7 +267,8 @@ QDebug operator<<( QDebug debug, QskAspect aspect )
return debug; return debug;
} }
void qskDebugState( QDebug debug, const QMetaObject* metaObject, QskAspect::State state ) void qskDebugStates( QDebug debug,
const QMetaObject* metaObject, QskAspect::States states )
{ {
QDebugStateSaver saver( debug ); QDebugStateSaver saver( debug );
@ -275,7 +276,7 @@ void qskDebugState( QDebug debug, const QMetaObject* metaObject, QskAspect::Stat
debug.noquote(); debug.noquote();
debug.nospace(); debug.nospace();
debug << "QskAspect::State( " << qskStateString( metaObject, state ) << " )"; debug << "QskAspect::States( " << qskStatesToString( metaObject, states ) << " )";
} }
void qskDebugAspect( QDebug debug, const QMetaObject* metaObject, QskAspect aspect ) void qskDebugAspect( QDebug debug, const QMetaObject* metaObject, QskAspect aspect )
@ -322,8 +323,8 @@ void qskDebugAspect( QDebug debug, const QMetaObject* metaObject, QskAspect aspe
if ( aspect.placement() != QskAspect::NoPlacement ) if ( aspect.placement() != QskAspect::NoPlacement )
debug << ", " << qskEnumString( "Placement", aspect.placement() ); debug << ", " << qskEnumString( "Placement", aspect.placement() );
if ( aspect.state() ) if ( aspect.hasStates() )
debug << ", " << qskStateString( metaObject, aspect.state() ); debug << ", " << qskStatesToString( metaObject, aspect.states() );
debug << " )"; debug << " )";
} }

View File

@ -7,7 +7,6 @@
#define QSK_ASPECT_H #define QSK_ASPECT_H
#include "QskGlobal.h" #include "QskGlobal.h"
#include "QskFlags.h"
#include <qmetaobject.h> #include <qmetaobject.h>
#include <qnamespace.h> #include <qnamespace.h>
@ -89,6 +88,7 @@ class QSK_EXPORT QskAspect
AllStates = 0xFFFF AllStates = 0xFFFF
}; };
Q_ENUM( State ) Q_ENUM( State )
Q_DECLARE_FLAGS( States, State )
constexpr QskAspect() noexcept; constexpr QskAspect() noexcept;
constexpr QskAspect( Subcontrol ) noexcept; constexpr QskAspect( Subcontrol ) noexcept;
@ -110,6 +110,7 @@ class QSK_EXPORT QskAspect
constexpr QskAspect operator|( Primitive ) const noexcept; constexpr QskAspect operator|( Primitive ) const noexcept;
constexpr QskAspect operator|( Placement ) const noexcept; constexpr QskAspect operator|( Placement ) const noexcept;
constexpr QskAspect operator|( State ) const noexcept; constexpr QskAspect operator|( State ) const noexcept;
constexpr QskAspect operator|( States ) const noexcept;
constexpr QskAspect stateless() const noexcept; constexpr QskAspect stateless() const noexcept;
constexpr QskAspect trunk() const noexcept; constexpr QskAspect trunk() const noexcept;
@ -132,14 +133,15 @@ class QSK_EXPORT QskAspect
constexpr Placement placement() const noexcept; constexpr Placement placement() const noexcept;
void setPlacement( Placement ) noexcept; void setPlacement( Placement ) noexcept;
constexpr State state() const noexcept; constexpr States states() const noexcept;
State topState() const noexcept; constexpr bool hasStates() const noexcept;
void setState( State ) noexcept; State topState() const noexcept;
void addState( State ) noexcept;
constexpr bool hasState() const noexcept;
void clearState( State ) noexcept; void clearState( State ) noexcept;
void clearStates() noexcept;
void setStates( States ) noexcept;
void addStates( States ) noexcept;
void clearStates( States = AllStates ) noexcept;
constexpr Primitive primitive() const noexcept; constexpr Primitive primitive() const noexcept;
void setPrimitive( Type, Primitive primitive ) noexcept; void setPrimitive( Type, Primitive primitive ) noexcept;
@ -189,7 +191,20 @@ class QSK_EXPORT QskAspect
}; };
}; };
QSK_DECLARE_OPERATORS_FOR_FLAGS( QskAspect::State ) Q_DECLARE_TYPEINFO( QskAspect, Q_MOVABLE_TYPE );
Q_DECLARE_OPERATORS_FOR_FLAGS( QskAspect::States )
constexpr inline QskAspect::State operator<<( QskAspect::State a, const int b ) noexcept
{
using underlying = typename std::underlying_type< QskAspect::State >::type;
return static_cast< QskAspect::State >( static_cast< underlying >( a ) << b );
}
constexpr inline QskAspect::State operator>>( QskAspect::State a, const int b ) noexcept
{
using underlying = typename std::underlying_type< QskAspect::State >::type;
return static_cast< QskAspect::State >( static_cast< underlying >( a ) >> b );
}
inline constexpr QskAspect::QskAspect() noexcept inline constexpr QskAspect::QskAspect() noexcept
: QskAspect( Control, Flag, NoPlacement ) : QskAspect( Control, Flag, NoPlacement )
@ -268,6 +283,12 @@ inline constexpr QskAspect QskAspect::operator|( State state ) const noexcept
m_bits.primitive, m_bits.placement, m_bits.states | state ); m_bits.primitive, m_bits.placement, m_bits.states | state );
} }
inline constexpr QskAspect QskAspect::operator|( States states ) const noexcept
{
return QskAspect( m_bits.subControl, m_bits.type, m_bits.isAnimator,
m_bits.primitive, m_bits.placement, m_bits.states | states );
}
inline constexpr QskAspect QskAspect::stateless() const noexcept inline constexpr QskAspect QskAspect::stateless() const noexcept
{ {
return QskAspect( m_bits.subControl, m_bits.type, m_bits.isAnimator, return QskAspect( m_bits.subControl, m_bits.type, m_bits.isAnimator,
@ -330,22 +351,22 @@ inline constexpr bool QskAspect::isFlag() const noexcept
return type() == Flag; return type() == Flag;
} }
inline constexpr QskAspect::State QskAspect::state() const noexcept inline constexpr QskAspect::States QskAspect::states() const noexcept
{ {
return static_cast< State >( m_bits.states ); return static_cast< States >( m_bits.states );
} }
inline void QskAspect::setState( State state ) noexcept inline void QskAspect::setStates( States states ) noexcept
{ {
m_bits.states = state; m_bits.states = states;
} }
inline void QskAspect::addState( State state ) noexcept inline void QskAspect::addStates( States states ) noexcept
{ {
m_bits.states |= state; m_bits.states |= states;
} }
inline constexpr bool QskAspect::hasState() const noexcept inline constexpr bool QskAspect::hasStates() const noexcept
{ {
return m_bits.states; return m_bits.states;
} }
@ -355,9 +376,9 @@ inline void QskAspect::clearState( State state ) noexcept
m_bits.states &= ~state; m_bits.states &= ~state;
} }
inline void QskAspect::clearStates() noexcept inline void QskAspect::clearStates( States states ) noexcept
{ {
m_bits.states = 0; m_bits.states &= ~states;
} }
inline constexpr QskAspect::Primitive QskAspect::primitive() const noexcept inline constexpr QskAspect::Primitive QskAspect::primitive() const noexcept
@ -410,6 +431,12 @@ inline constexpr QskAspect operator|(
return aspect | state; return aspect | state;
} }
inline constexpr QskAspect operator|(
QskAspect::States states, const QskAspect& aspect ) noexcept
{
return aspect | states;
}
inline constexpr QskAspect operator|( inline constexpr QskAspect operator|(
QskAspect::Subcontrol subControl, const QskAspect& aspect ) noexcept QskAspect::Subcontrol subControl, const QskAspect& aspect ) noexcept
{ {
@ -446,6 +473,12 @@ inline constexpr QskAspect operator|(
return QskAspect( subControl ) | state; return QskAspect( subControl ) | state;
} }
inline constexpr QskAspect operator|(
QskAspect::Subcontrol subControl, QskAspect::States states ) noexcept
{
return QskAspect( subControl ) | states;
}
inline constexpr QskAspect operator|( inline constexpr QskAspect operator|(
QskAspect::Type type, QskAspect::Placement placement ) noexcept QskAspect::Type type, QskAspect::Placement placement ) noexcept
{ {
@ -464,6 +497,12 @@ inline constexpr QskAspect operator|(
return subControl | state; return subControl | state;
} }
inline constexpr QskAspect operator|(
QskAspect::States states, QskAspect::Subcontrol subControl ) noexcept
{
return subControl | states;
}
inline constexpr QskAspect operator|( inline constexpr QskAspect operator|(
QskAspect::Subcontrol subControl, QskAspect::Primitive primitive ) noexcept QskAspect::Subcontrol subControl, QskAspect::Primitive primitive ) noexcept
{ {
@ -499,8 +538,6 @@ namespace std
}; };
} }
Q_DECLARE_TYPEINFO( QskAspect, Q_MOVABLE_TYPE );
#ifndef QT_NO_DEBUG_STREAM #ifndef QT_NO_DEBUG_STREAM
class QDebug; class QDebug;
@ -510,9 +547,9 @@ QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Type );
QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Subcontrol ); QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Subcontrol );
QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Primitive ); QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Primitive );
QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Placement ); QSK_EXPORT QDebug operator<<( QDebug, QskAspect::Placement );
QSK_EXPORT QDebug operator<<( QDebug, QskAspect::State ); QSK_EXPORT QDebug operator<<( QDebug, QskAspect::States );
QSK_EXPORT void qskDebugState( QDebug, const QMetaObject*, QskAspect::State ); QSK_EXPORT void qskDebugStates( QDebug, const QMetaObject*, QskAspect::States );
QSK_EXPORT void qskDebugAspect( QDebug, const QMetaObject*, QskAspect ); QSK_EXPORT void qskDebugAspect( QDebug, const QMetaObject*, QskAspect );
#endif #endif

View File

@ -1,87 +0,0 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_FLAGS_H_
#define QSK_FLAGS_H_
#include "QskGlobal.h"
#include <functional>
#define QSK_DECLARE_OPERATORS_FOR_FLAGS( Flags ) \
constexpr inline Flags operator|( const Flags& a, const Flags& b ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< Flags >( \
static_cast< underlying >( a ) \
| static_cast< underlying >( b ) ); \
} \
\
inline Flags& operator|=( Flags& a, const Flags& b ) noexcept \
{ \
return ( a = a | b ); \
} \
\
constexpr inline Flags operator&( const Flags& a, const Flags& b ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< Flags >( \
static_cast< underlying >( a ) & static_cast< underlying >( b ) ); \
} \
\
inline Flags& operator&=( Flags& a, const Flags& b ) noexcept \
{ \
return ( a = static_cast< Flags >( a & b ) ); \
} \
\
constexpr inline Flags operator~( const Flags& a ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< Flags >( \
~static_cast< underlying >( a ) ); \
} \
\
constexpr inline Flags operator^( const Flags& a, const Flags& b ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< Flags >( \
static_cast< underlying >( a ) ^ static_cast< underlying >( b ) ); \
} \
\
inline Flags& operator^=( Flags& a, const Flags& b ) noexcept \
{ \
return ( a = a ^ b ); \
} \
\
constexpr inline Flags operator<<( const Flags& a, const int& b ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< Flags >( static_cast< underlying >( a ) << b ); \
} \
\
constexpr inline Flags operator>>( const Flags& a, const int& b ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< Flags >( static_cast< underlying >( a ) >> b ); \
} \
\
constexpr bool operator!( const Flags& a ) noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return !static_cast< underlying >( a ); \
} \
\
namespace std \
{ \
template< > struct hash< Flags > \
{ \
constexpr size_t operator()( const Flags& element ) const noexcept \
{ \
using underlying = typename std::underlying_type< Flags >::type; \
return static_cast< underlying >( element ); \
} \
}; \
}
#endif

View File

@ -0,0 +1,14 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#include "QskStateCombination.h"
static void qskRegisterStateCombination()
{
qRegisterMetaType< QskStateCombination >();
}
Q_CONSTRUCTOR_FUNCTION( qskRegisterStateCombination )

View File

@ -0,0 +1,93 @@
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_STATE_COMBINATION_H
#define QSK_STATE_COMBINATION_H
#include "QskAspect.h"
class QSK_EXPORT QskStateCombination
{
public:
enum Type
{
Combination,
CombinationNoState
};
constexpr QskStateCombination( QskAspect::State ) noexcept;
constexpr QskStateCombination( QskAspect::States = QskAspect::States() ) noexcept;
constexpr QskStateCombination( Type, QskAspect::States = QskAspect::States() ) noexcept;
constexpr bool isNull() const noexcept;
void setType( Type ) noexcept;
constexpr Type type() const noexcept;
void setStates( QskAspect::States ) noexcept;
void setState( QskAspect::State, bool on = true ) noexcept;
constexpr QskAspect::States states() const noexcept;
private:
Type m_type;
QskAspect::States m_states;
};
Q_DECLARE_TYPEINFO( QskStateCombination, Q_MOVABLE_TYPE );
Q_DECLARE_METATYPE( QskStateCombination )
constexpr inline QskStateCombination::QskStateCombination(
QskAspect::State state ) noexcept
: QskStateCombination( QskAspect::States( state ) )
{
}
constexpr inline QskStateCombination::QskStateCombination(
QskAspect::States states ) noexcept
: QskStateCombination( Combination, states )
{
}
constexpr inline QskStateCombination::QskStateCombination(
Type type, QskAspect::States states ) noexcept
: m_type( type )
, m_states( states )
{
}
constexpr bool QskStateCombination::isNull() const noexcept
{
return ( m_type == Combination ) && ( m_states == QskAspect::States() );
}
inline void QskStateCombination::setType( Type type ) noexcept
{
m_type = type;
}
constexpr inline QskStateCombination::Type QskStateCombination::type() const noexcept
{
return m_type;
}
inline void QskStateCombination::setStates( QskAspect::States states ) noexcept
{
m_states = states;
}
inline void QskStateCombination::setState( QskAspect::State state, bool on ) noexcept
{
if ( on )
m_states |= state;
else
m_states &= ~state;
}
constexpr inline QskAspect::States QskStateCombination::states() const noexcept
{
return m_states;
}
#endif

View File

@ -125,7 +125,7 @@ class QskSkin::PrivateData
std::unordered_map< const QMetaObject*, SkinletData > skinletMap; std::unordered_map< const QMetaObject*, SkinletData > skinletMap;
QskSkinHintTable hintTable; QskSkinHintTable hintTable;
QskAspect::State stateMask = QskAspect::AllStates; QskAspect::States stateMask = QskAspect::AllStates;
std::unordered_map< int, QFont > fonts; std::unordered_map< int, QFont > fonts;
std::unordered_map< int, QskColorFilter > graphicFilters; std::unordered_map< int, QskColorFilter > graphicFilters;
@ -331,7 +331,7 @@ const int* QskSkin::dialogButtonLayout( Qt::Orientation orientation ) const
return QPlatformDialogHelper::buttonLayout( orientation, policy ); return QPlatformDialogHelper::buttonLayout( orientation, policy );
} }
void QskSkin::setStateMask( QskAspect::State mask ) void QskSkin::setStateMask( QskAspect::States mask )
{ {
for ( auto state : { QskControl::Disabled, QskControl::Hovered, QskControl::Focused } ) for ( auto state : { QskControl::Disabled, QskControl::Hovered, QskControl::Focused } )
{ {
@ -342,7 +342,7 @@ void QskSkin::setStateMask( QskAspect::State mask )
} }
} }
QskAspect::State QskSkin::stateMask() const QskAspect::States QskSkin::stateMask() const
{ {
return m_data->stateMask; return m_data->stateMask;
} }

View File

@ -76,8 +76,8 @@ class QSK_EXPORT QskSkin : public QObject
virtual const int* dialogButtonLayout( Qt::Orientation ) const; virtual const int* dialogButtonLayout( Qt::Orientation ) const;
void setStateMask( QskAspect::State ); void setStateMask( QskAspect::States );
QskAspect::State stateMask() const; QskAspect::States stateMask() const;
QskSkinlet* skinlet( const QMetaObject* ); QskSkinlet* skinlet( const QMetaObject* );

View File

@ -36,7 +36,7 @@ inline const QVariant* qskResolvedHint( QskAspect aspect,
*/ */
if ( const auto topState = aspect.topState() ) if ( const auto topState = aspect.topState() )
{ {
aspect.clearState( topState ); aspect.clearStates( topState );
continue; continue;
} }
#else #else
@ -126,7 +126,7 @@ bool QskSkinHintTable::setHint( QskAspect aspect, const QVariant& skinHint )
QSK_ASSERT_COUNTER( m_animatorCount ); QSK_ASSERT_COUNTER( m_animatorCount );
} }
if ( aspect.hasState() ) if ( aspect.hasStates() )
{ {
m_statefulCount++; m_statefulCount++;
QSK_ASSERT_COUNTER( m_statefulCount ); QSK_ASSERT_COUNTER( m_statefulCount );
@ -158,7 +158,7 @@ bool QskSkinHintTable::removeHint( QskAspect aspect )
if ( aspect.isAnimator() ) if ( aspect.isAnimator() )
m_animatorCount--; m_animatorCount--;
if ( aspect.hasState() ) if ( aspect.hasStates() )
m_statefulCount--; m_statefulCount--;
if ( m_hints->empty() ) if ( m_hints->empty() )
@ -184,7 +184,7 @@ QVariant QskSkinHintTable::takeHint( QskAspect aspect )
if ( aspect.isAnimator() ) if ( aspect.isAnimator() )
m_animatorCount--; m_animatorCount--;
if ( aspect.hasState() ) if ( aspect.hasStates() )
m_statefulCount--; m_statefulCount--;
if ( m_hints->empty() ) if ( m_hints->empty() )
@ -243,7 +243,7 @@ QskAspect QskSkinHintTable::resolvedAnimator(
} }
if ( const auto topState = aspect.topState() ) if ( const auto topState = aspect.topState() )
aspect.clearState( topState ); aspect.clearStates( topState );
else else
break; break;
} }
@ -290,14 +290,14 @@ bool QskSkinHintTable::isResolutionMatching(
if ( hasHint( aspect1 ) ) if ( hasHint( aspect1 ) )
return false; return false;
aspect1.clearState( s1 ); aspect1.clearStates( s1 );
} }
else if ( s2 > s1 ) else if ( s2 > s1 )
{ {
if ( hasHint( aspect2 ) ) if ( hasHint( aspect2 ) )
return false; return false;
aspect2.clearState( s2 ); aspect2.clearStates( s2 );
} }
else else
{ {
@ -325,8 +325,8 @@ bool QskSkinHintTable::isResolutionMatching(
return false; return false;
} }
aspect1.clearState( s1 ); aspect1.clearStates( s1 );
aspect2.clearState( s2 ); aspect2.clearStates( s2 );
} }
} }
} }

View File

@ -14,7 +14,7 @@
namespace namespace
{ {
inline QskAspect::State lowestState( QskAspect::State mask ) inline QskAspect::State lowestState( QskAspect::States mask )
{ {
using StateInt = typename std::underlying_type< QskAspect::State >::type; using StateInt = typename std::underlying_type< QskAspect::State >::type;
@ -24,42 +24,42 @@ namespace
inline void setHintStateMask( inline void setHintStateMask(
QskSkinHintTable* table, QskAspect aspect, const QVariant& hint, QskSkinHintTable* table, QskAspect aspect, const QVariant& hint,
QskAspect::State state, QskAspect::State mask ) bool noState, QskAspect::States states, QskAspect::States mask )
{ {
if ( mask == 0 ) if ( mask == 0 )
{ {
if ( state != 0 ) if ( noState || states != 0 )
table->setHint( aspect | state, hint ); table->setHint( aspect | states, hint );
return; return;
} }
const auto stateBit = lowestState( mask ); const auto stateLow = lowestState( mask );
mask &= ~stateBit; mask &= ~stateLow;
setHintStateMask( table, aspect, hint, state, mask ); setHintStateMask( table, aspect, hint, noState, states, mask );
setHintStateMask( table, aspect, hint, state | stateBit, mask ); setHintStateMask( table, aspect, hint, noState, states | stateLow, mask );
} }
inline bool removeHintStateMask( inline bool removeHintStateMask(
QskSkinHintTable* table, QskAspect aspect, QskSkinHintTable* table, QskAspect aspect,
QskAspect::State state, QskAspect::State mask ) bool noState, QskAspect::States states, QskAspect::States mask )
{ {
if ( mask == 0 ) if ( mask == 0 )
{ {
if ( state != 0 ) if ( noState || states != 0 )
return table->removeHint( aspect | state ); return table->removeHint( aspect | states );
return false; return false;
} }
const auto stateBit = lowestState( mask ); const auto stateLow = lowestState( mask );
mask &= ~stateBit;
bool ret = removeHintStateMask( table, aspect, state, mask ); mask &= ~stateLow;
ret |= removeHintStateMask( table, aspect, state | stateBit, mask );
bool ret = removeHintStateMask( table, aspect, noState, states, mask );
ret |= removeHintStateMask( table, aspect, noState, states | stateLow, mask );
return ret; return ret;
} }
@ -126,37 +126,43 @@ QskSkinHintTable* QskSkinHintTableEditor::table() const
} }
void QskSkinHintTableEditor::setHint( QskAspect aspect, void QskSkinHintTableEditor::setHint( QskAspect aspect,
const QVariant& hint, QskAspect::State combinationMask ) const QVariant& hint, QskStateCombination combination )
{ {
if ( combinationMask == QskAspect::NoState ) if ( combination.isNull() )
{ {
m_table->setHint( aspect, hint ); m_table->setHint( aspect, hint );
} }
else else
{ {
const bool noState =
( combination.type() == QskStateCombination::CombinationNoState );
setHintStateMask( m_table, aspect, hint, setHintStateMask( m_table, aspect, hint,
QskAspect::NoState, combinationMask ); noState, QskAspect::States(), combination.states() );
} }
} }
bool QskSkinHintTableEditor::removeHint( bool QskSkinHintTableEditor::removeHint(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
if ( combinationMask == QskAspect::NoState ) if ( combination.isNull() )
{ {
return m_table->removeHint( aspect ); return m_table->removeHint( aspect );
} }
else else
{ {
const bool noState =
( combination.type() == QskStateCombination::CombinationNoState );
return removeHintStateMask( m_table, aspect, return removeHintStateMask( m_table, aspect,
QskAspect::NoState, combinationMask ); noState, QskAspect::States(), combination.states() );
} }
} }
void QskSkinHintTableEditor::setFlag( void QskSkinHintTableEditor::setFlag(
QskAspect aspect, int flag, QskAspect::State combinationMask ) QskAspect aspect, int flag, QskStateCombination combination )
{ {
setFlagHint( aspect, flag, combinationMask ); setFlagHint( aspect, flag, combination );
} }
int QskSkinHintTableEditor::flag( QskAspect aspect ) const int QskSkinHintTableEditor::flag( QskAspect aspect ) const
@ -165,9 +171,9 @@ int QskSkinHintTableEditor::flag( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setMetric( void QskSkinHintTableEditor::setMetric(
QskAspect aspect, qreal metric, QskAspect::State combinationMask ) QskAspect aspect, qreal metric, QskStateCombination combination )
{ {
setMetricHint( aspect, metric, combinationMask ); setMetricHint( aspect, metric, combination );
} }
qreal QskSkinHintTableEditor::metric( QskAspect aspect ) const qreal QskSkinHintTableEditor::metric( QskAspect aspect ) const
@ -176,21 +182,21 @@ qreal QskSkinHintTableEditor::metric( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setColor( void QskSkinHintTableEditor::setColor(
QskAspect aspect, Qt::GlobalColor color, QskAspect::State combinationMask ) QskAspect aspect, Qt::GlobalColor color, QskStateCombination combination )
{ {
setColorHint( aspect, QColor( color ), combinationMask ); setColorHint( aspect, QColor( color ), combination );
} }
void QskSkinHintTableEditor::setColor( void QskSkinHintTableEditor::setColor(
QskAspect aspect, QRgb rgb, QskAspect::State combinationMask ) QskAspect aspect, QRgb rgb, QskStateCombination combination )
{ {
setColorHint( aspect, QColor::fromRgba( rgb ), combinationMask ); setColorHint( aspect, QColor::fromRgba( rgb ), combination );
} }
void QskSkinHintTableEditor::setColor( void QskSkinHintTableEditor::setColor(
QskAspect aspect, const QColor& color, QskAspect::State combinationMask ) QskAspect aspect, const QColor& color, QskStateCombination combination )
{ {
setColorHint( aspect, color, combinationMask ); setColorHint( aspect, color, combination );
} }
QColor QskSkinHintTableEditor::color( QskAspect aspect ) const QColor QskSkinHintTableEditor::color( QskAspect aspect ) const
@ -200,25 +206,25 @@ QColor QskSkinHintTableEditor::color( QskAspect aspect ) const
void QskSkinHintTableEditor::setHGradient( void QskSkinHintTableEditor::setHGradient(
QskAspect aspect, const QColor& color1, const QColor& color2, QskAspect aspect, const QColor& color1, const QColor& color2,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
const QskGradient gradient( QskGradient::Horizontal, color1, color2 ); const QskGradient gradient( QskGradient::Horizontal, color1, color2 );
setGradient( aspect, gradient, combinationMask ); setGradient( aspect, gradient, combination );
} }
void QskSkinHintTableEditor::setVGradient( void QskSkinHintTableEditor::setVGradient(
QskAspect aspect, const QColor& color1, const QColor& color2, QskAspect aspect, const QColor& color1, const QColor& color2,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
const QskGradient gradient( QskGradient::Vertical, color1, color2 ); const QskGradient gradient( QskGradient::Vertical, color1, color2 );
setGradient( aspect, gradient, combinationMask ); setGradient( aspect, gradient, combination );
} }
void QskSkinHintTableEditor::setGradient( void QskSkinHintTableEditor::setGradient(
QskAspect aspect, const QskGradient& gradient, QskAspect aspect, const QskGradient& gradient,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
setColorHint( aspect, gradient, combinationMask ); setColorHint( aspect, gradient, combination );
} }
QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const
@ -227,22 +233,22 @@ QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setStrutSize( void QskSkinHintTableEditor::setStrutSize(
QskAspect aspect, const QSizeF& size, QskAspect::State combinationMask ) QskAspect aspect, const QSizeF& size, QskStateCombination combination )
{ {
setMetricHint( aspectStrutSize( aspect ), size, combinationMask ); setMetricHint( aspectStrutSize( aspect ), size, combination );
} }
void QskSkinHintTableEditor::setStrutSize( void QskSkinHintTableEditor::setStrutSize(
QskAspect aspect, qreal width, qreal height, QskAspect::State combinationMask ) QskAspect aspect, qreal width, qreal height, QskStateCombination combination )
{ {
setMetricHint( aspectStrutSize( aspect ), setMetricHint( aspectStrutSize( aspect ),
QSizeF( width, height ), combinationMask ); QSizeF( width, height ), combination );
} }
void QskSkinHintTableEditor::removeStrutSize( void QskSkinHintTableEditor::removeStrutSize(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeMetricHint( aspectStrutSize( aspect ), combinationMask ); removeMetricHint( aspectStrutSize( aspect ), combination );
} }
QSizeF QskSkinHintTableEditor::strutSize( QskAspect aspect ) const QSizeF QskSkinHintTableEditor::strutSize( QskAspect aspect ) const
@ -251,23 +257,23 @@ QSizeF QskSkinHintTableEditor::strutSize( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setMargin( void QskSkinHintTableEditor::setMargin(
QskAspect aspect, const QskMargins& margins, QskAspect::State combinationMask ) QskAspect aspect, const QskMargins& margins, QskStateCombination combination )
{ {
setMetricHint( aspectMargin( aspect ), margins, combinationMask ); setMetricHint( aspectMargin( aspect ), margins, combination );
} }
void QskSkinHintTableEditor::setMargin( QskAspect aspect, void QskSkinHintTableEditor::setMargin( QskAspect aspect,
qreal left, qreal top, qreal right, qreal bottom, qreal left, qreal top, qreal right, qreal bottom,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
const QskMargins margins( left, top, right, bottom ); const QskMargins margins( left, top, right, bottom );
setMetricHint( aspectMargin( aspect ), margins, combinationMask ); setMetricHint( aspectMargin( aspect ), margins, combination );
} }
void QskSkinHintTableEditor::removeMargin( void QskSkinHintTableEditor::removeMargin(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeMetricHint( aspectMargin( aspect ), combinationMask ); removeMetricHint( aspectMargin( aspect ), combination );
} }
QskMargins QskSkinHintTableEditor::margin( QskAspect aspect ) const QskMargins QskSkinHintTableEditor::margin( QskAspect aspect ) const
@ -277,23 +283,23 @@ QskMargins QskSkinHintTableEditor::margin( QskAspect aspect ) const
void QskSkinHintTableEditor::setPadding( void QskSkinHintTableEditor::setPadding(
QskAspect aspect, const QskMargins& padding, QskAspect aspect, const QskMargins& padding,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
setMetricHint( aspectPadding( aspect ), padding, combinationMask ); setMetricHint( aspectPadding( aspect ), padding, combination );
} }
void QskSkinHintTableEditor::setPadding( QskAspect aspect, void QskSkinHintTableEditor::setPadding( QskAspect aspect,
qreal left, qreal top, qreal right, qreal bottom, qreal left, qreal top, qreal right, qreal bottom,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
QskMargins padding( left, top, right, bottom ); QskMargins padding( left, top, right, bottom );
setMetricHint( aspectPadding( aspect ), padding, combinationMask ); setMetricHint( aspectPadding( aspect ), padding, combination );
} }
void QskSkinHintTableEditor::removePadding( void QskSkinHintTableEditor::removePadding(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeMetricHint( aspectPadding( aspect ), combinationMask ); removeMetricHint( aspectPadding( aspect ), combination );
} }
QskMargins QskSkinHintTableEditor::padding( QskAspect aspect ) const QskMargins QskSkinHintTableEditor::padding( QskAspect aspect ) const
@ -302,15 +308,15 @@ QskMargins QskSkinHintTableEditor::padding( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setSpacing( void QskSkinHintTableEditor::setSpacing(
QskAspect aspect, qreal spacing, QskAspect::State combinationMask ) QskAspect aspect, qreal spacing, QskStateCombination combination )
{ {
setMetricHint( aspectSpacing( aspect ), spacing, combinationMask ); setMetricHint( aspectSpacing( aspect ), spacing, combination );
} }
void QskSkinHintTableEditor::removeSpacing( void QskSkinHintTableEditor::removeSpacing(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeMetricHint( aspectSpacing( aspect ), combinationMask ); removeMetricHint( aspectSpacing( aspect ), combination );
} }
qreal QskSkinHintTableEditor::spacing( QskAspect aspect ) const qreal QskSkinHintTableEditor::spacing( QskAspect aspect ) const
@ -319,16 +325,16 @@ qreal QskSkinHintTableEditor::spacing( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setAlignment( void QskSkinHintTableEditor::setAlignment(
QskAspect aspect, Qt::Alignment alignment, QskAspect::State combinationMask ) QskAspect aspect, Qt::Alignment alignment, QskStateCombination combination )
{ {
setFlagHint( aspectAlignment( aspect ), setFlagHint( aspectAlignment( aspect ),
static_cast< int >( alignment ), combinationMask ); static_cast< int >( alignment ), combination );
} }
void QskSkinHintTableEditor::removeAlignment( void QskSkinHintTableEditor::removeAlignment(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
return removeFlagHint( aspectAlignment( aspect ), combinationMask ); return removeFlagHint( aspectAlignment( aspect ), combination );
} }
Qt::Alignment QskSkinHintTableEditor::alignment( QskAspect aspect ) const Qt::Alignment QskSkinHintTableEditor::alignment( QskAspect aspect ) const
@ -337,15 +343,15 @@ Qt::Alignment QskSkinHintTableEditor::alignment( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setFontRole( void QskSkinHintTableEditor::setFontRole(
QskAspect aspect, int fontRole, QskAspect::State combinationMask ) QskAspect aspect, int fontRole, QskStateCombination combination )
{ {
setFlagHint( aspectFontRole( aspect ), fontRole, combinationMask ); setFlagHint( aspectFontRole( aspect ), fontRole, combination );
} }
void QskSkinHintTableEditor::removeFontRole( void QskSkinHintTableEditor::removeFontRole(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
return removeFlagHint( aspectFontRole( aspect ), combinationMask ); return removeFlagHint( aspectFontRole( aspect ), combination );
} }
int QskSkinHintTableEditor::fontRole( QskAspect aspect ) const int QskSkinHintTableEditor::fontRole( QskAspect aspect ) const
@ -354,15 +360,15 @@ int QskSkinHintTableEditor::fontRole( QskAspect aspect ) const
} }
void QskSkinHintTableEditor::setGraphicRole( void QskSkinHintTableEditor::setGraphicRole(
QskAspect aspect, int graphicRole, QskAspect::State combinationMask ) QskAspect aspect, int graphicRole, QskStateCombination combination )
{ {
setFlagHint( aspectGraphicRole( aspect ), graphicRole, combinationMask ); setFlagHint( aspectGraphicRole( aspect ), graphicRole, combination );
} }
void QskSkinHintTableEditor::removeGraphicRole( void QskSkinHintTableEditor::removeGraphicRole(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
return removeFlagHint( aspectGraphicRole( aspect ), combinationMask ); return removeFlagHint( aspectGraphicRole( aspect ), combination );
} }
int QskSkinHintTableEditor::graphicRole( QskAspect aspect ) const int QskSkinHintTableEditor::graphicRole( QskAspect aspect ) const
@ -386,15 +392,16 @@ void QskSkinHintTableEditor::setBoxShape( QskAspect aspect,
} }
void QskSkinHintTableEditor::setBoxShape( void QskSkinHintTableEditor::setBoxShape(
QskAspect aspect, const QskBoxShapeMetrics& shape, QskAspect::State combinationMask ) QskAspect aspect, const QskBoxShapeMetrics& shape,
QskStateCombination combination )
{ {
setMetricHint( aspectShape( aspect ), shape, combinationMask ); setMetricHint( aspectShape( aspect ), shape, combination );
} }
void QskSkinHintTableEditor::removeBoxShape( void QskSkinHintTableEditor::removeBoxShape(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
return removeMetricHint( aspectShape( aspect ), combinationMask ); return removeMetricHint( aspectShape( aspect ), combination );
} }
QskBoxShapeMetrics QskSkinHintTableEditor::boxShape( QskAspect aspect ) const QskBoxShapeMetrics QskSkinHintTableEditor::boxShape( QskAspect aspect ) const
@ -418,15 +425,15 @@ void QskSkinHintTableEditor::setBoxBorderMetrics( QskAspect aspect,
void QskSkinHintTableEditor::setBoxBorderMetrics( void QskSkinHintTableEditor::setBoxBorderMetrics(
QskAspect aspect, const QskBoxBorderMetrics& borderMetrics, QskAspect aspect, const QskBoxBorderMetrics& borderMetrics,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
setMetricHint( aspectBorder( aspect ), borderMetrics, combinationMask ); setMetricHint( aspectBorder( aspect ), borderMetrics, combination );
} }
void QskSkinHintTableEditor::removeBoxBorderMetric( void QskSkinHintTableEditor::removeBoxBorderMetric(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
return removeMetricHint( aspectBorder( aspect ), combinationMask ); return removeMetricHint( aspectBorder( aspect ), combination );
} }
QskBoxBorderMetrics QskSkinHintTableEditor::boxBorderMetrics( QskAspect aspect ) const QskBoxBorderMetrics QskSkinHintTableEditor::boxBorderMetrics( QskAspect aspect ) const
@ -436,24 +443,24 @@ QskBoxBorderMetrics QskSkinHintTableEditor::boxBorderMetrics( QskAspect aspect )
void QskSkinHintTableEditor::setBoxBorderColors( void QskSkinHintTableEditor::setBoxBorderColors(
QskAspect aspect, const QskBoxBorderColors& borderColors, QskAspect aspect, const QskBoxBorderColors& borderColors,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
setColorHint( aspectBorder( aspect ), borderColors, combinationMask ); setColorHint( aspectBorder( aspect ), borderColors, combination );
} }
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,
QskAspect::State combinationMask ) QskStateCombination combination )
{ {
setColorHint( aspectBorder( aspect ), setColorHint( aspectBorder( aspect ),
QskBoxBorderColors( left, top, right, bottom ), QskBoxBorderColors( left, top, right, bottom ),
combinationMask ); combination );
} }
void QskSkinHintTableEditor::removeBoxBorderColors( void QskSkinHintTableEditor::removeBoxBorderColors(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
return removeColorHint( aspectBorder( aspect ), combinationMask ); return removeColorHint( aspectBorder( aspect ), combination );
} }
QskBoxBorderColors QskSkinHintTableEditor::boxBorderColors( QskAspect aspect ) const QskBoxBorderColors QskSkinHintTableEditor::boxBorderColors( QskAspect aspect ) const

View File

@ -9,6 +9,7 @@
#include "QskAspect.h" #include "QskAspect.h"
#include "QskSkinHintTable.h" #include "QskSkinHintTable.h"
#include "QskAnimationHint.h" #include "QskAnimationHint.h"
#include "QskStateCombination.h"
#include <qcolor.h> #include <qcolor.h>
#include <qvariant.h> #include <qvariant.h>
@ -30,15 +31,15 @@ class QSK_EXPORT QskSkinHintTableEditor
// generic access // generic access
void setHint( QskAspect, const QVariant&, void setHint( QskAspect, const QVariant&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
template< typename T > void setHint( template< typename T > void setHint(
QskAspect, const T&, QskAspect::State = QskAspect::NoState ); QskAspect, const T&, QskStateCombination = QskStateCombination() );
const QVariant& hint( QskAspect ) const; const QVariant& hint( QskAspect ) const;
template< typename T > T hint( QskAspect ) const; template< typename T > T hint( QskAspect ) const;
bool removeHint( QskAspect, QskAspect::State = QskAspect::NoState ); bool removeHint( QskAspect, QskStateCombination = QskStateCombination() );
QVariant takeHint( QskAspect ); QVariant takeHint( QskAspect );
bool hasHint( QskAspect ) const; bool hasHint( QskAspect ) const;
@ -46,19 +47,19 @@ class QSK_EXPORT QskSkinHintTableEditor
// animation hints // animation hints
void setAnimation( QskAspect, QskAnimationHint, void setAnimation( QskAspect, QskAnimationHint,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
QskAnimationHint animation( QskAspect ) const; QskAnimationHint animation( QskAspect ) const;
// flag // flag
void setFlagHint( QskAspect, const QVariant&, void setFlagHint( QskAspect, const QVariant&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
template< typename T > void setFlagHint( QskAspect, const T&, template< typename T > void setFlagHint( QskAspect, const T&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void removeFlagHint( QskAspect, QskAspect::State = QskAspect::NoState ); void removeFlagHint( QskAspect, QskStateCombination = QskStateCombination() );
QVariant flagHint( QskAspect ) const; QVariant flagHint( QskAspect ) const;
template< typename T > T flagHint( QskAspect ) const; template< typename T > T flagHint( QskAspect ) const;
@ -66,12 +67,12 @@ class QSK_EXPORT QskSkinHintTableEditor
// metric // metric
void setMetricHint( QskAspect, const QVariant&, void setMetricHint( QskAspect, const QVariant&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
template< typename T > void setMetricHint( template< typename T > void setMetricHint(
QskAspect, const T&, QskAspect::State = QskAspect::NoState ); QskAspect, const T&, QskStateCombination = QskStateCombination() );
void removeMetricHint( QskAspect, QskAspect::State = QskAspect::NoState ); void removeMetricHint( QskAspect, QskStateCombination = QskStateCombination() );
QVariant metricHint( QskAspect ) const; QVariant metricHint( QskAspect ) const;
template< typename T > T metricHint( QskAspect ) const; template< typename T > T metricHint( QskAspect ) const;
@ -79,103 +80,103 @@ class QSK_EXPORT QskSkinHintTableEditor
// color // color
void setColorHint( QskAspect, const QVariant&, void setColorHint( QskAspect, const QVariant&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
template< typename T > void setColorHint( template< typename T > void setColorHint(
QskAspect, const T&, QskAspect::State = QskAspect::NoState ); QskAspect, const T&, QskStateCombination = QskStateCombination() );
void removeColorHint( QskAspect, QskAspect::State = QskAspect::NoState ); void removeColorHint( QskAspect, QskStateCombination = QskStateCombination() );
QVariant colorHint( QskAspect ) const; QVariant colorHint( QskAspect ) const;
template< typename T > T colorHint( QskAspect ) const; template< typename T > T colorHint( QskAspect ) const;
// type specific // type specific
void setFlag( QskAspect, int, QskAspect::State = QskAspect::NoState ); void setFlag( QskAspect, int, QskStateCombination = QskStateCombination() );
int flag( QskAspect ) const; int flag( QskAspect ) const;
void setMetric( QskAspect, qreal metric, QskAspect::State = QskAspect::NoState ); void setMetric( QskAspect, qreal metric, QskStateCombination = QskStateCombination() );
qreal metric( QskAspect ) const; qreal metric( QskAspect ) const;
void setColor( QskAspect, Qt::GlobalColor, QskAspect::State = QskAspect::NoState ); void setColor( QskAspect, Qt::GlobalColor, QskStateCombination = QskStateCombination() );
void setColor( QskAspect, QRgb, QskAspect::State = QskAspect::NoState ); void setColor( QskAspect, QRgb, QskStateCombination = QskStateCombination() );
void setColor( QskAspect, const QColor&, QskAspect::State = QskAspect::NoState ); void setColor( QskAspect, const QColor&, QskStateCombination = QskStateCombination() );
QColor color( QskAspect ) const; QColor color( QskAspect ) const;
// gradients // gradients
void setHGradient( QskAspect, const QColor&, const QColor&, void setHGradient( QskAspect, const QColor&, const QColor&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void setVGradient( QskAspect, const QColor&, const QColor&, void setVGradient( QskAspect, const QColor&, const QColor&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void setGradient( QskAspect, const QskGradient&, void setGradient( QskAspect, const QskGradient&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
QskGradient gradient( QskAspect ) const; QskGradient gradient( QskAspect ) const;
// strutSize // strutSize
void setStrutSize( QskAspect, const QSizeF&, void setStrutSize( QskAspect, const QSizeF&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void setStrutSize( QskAspect, qreal width, qreal height, void setStrutSize( QskAspect, qreal width, qreal height,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void removeStrutSize( QskAspect, QskAspect::State = QskAspect::NoState ); void removeStrutSize( QskAspect, QskStateCombination = QskStateCombination() );
QSizeF strutSize( QskAspect ) const; QSizeF strutSize( QskAspect ) const;
// margin // margin
void setMargin( QskAspect, const QskMargins&, void setMargin( QskAspect, const QskMargins&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void setMargin( QskAspect, void setMargin( QskAspect,
qreal left, qreal top, qreal right, qreal bottom, qreal left, qreal top, qreal right, qreal bottom,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void removeMargin( QskAspect, QskAspect::State = QskAspect::NoState ); void removeMargin( QskAspect, QskStateCombination = QskStateCombination() );
QskMargins margin( QskAspect ) const; QskMargins margin( QskAspect ) const;
// padding // padding
void setPadding( QskAspect, const QskMargins&, void setPadding( QskAspect, const QskMargins&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void setPadding( QskAspect, void setPadding( QskAspect,
qreal left, qreal top, qreal right, qreal bottom, qreal left, qreal top, qreal right, qreal bottom,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void removePadding( QskAspect, QskAspect::State = QskAspect::NoState ); void removePadding( QskAspect, QskStateCombination = QskStateCombination() );
QskMargins padding( QskAspect ) const; QskMargins padding( QskAspect ) const;
// spacing // spacing
void setSpacing( QskAspect, qreal, QskAspect::State = QskAspect::NoState ); void setSpacing( QskAspect, qreal, QskStateCombination = QskStateCombination() );
void removeSpacing( QskAspect, QskAspect::State = QskAspect::NoState ); void removeSpacing( QskAspect, QskStateCombination = QskStateCombination() );
qreal spacing( QskAspect ) const; qreal spacing( QskAspect ) const;
// alignment // alignment
void setAlignment( QskAspect, Qt::Alignment, QskAspect::State = QskAspect::NoState ); void setAlignment( QskAspect, Qt::Alignment, QskStateCombination = QskStateCombination() );
void removeAlignment( QskAspect, QskAspect::State = QskAspect::NoState ); void removeAlignment( QskAspect, QskStateCombination = QskStateCombination() );
Qt::Alignment alignment( QskAspect ) const; Qt::Alignment alignment( QskAspect ) const;
// fontRole // fontRole
void setFontRole( QskAspect, int, QskAspect::State = QskAspect::NoState ); void setFontRole( QskAspect, int, QskStateCombination = QskStateCombination() );
void removeFontRole( QskAspect, QskAspect::State = QskAspect::NoState ); void removeFontRole( QskAspect, QskStateCombination = QskStateCombination() );
int fontRole( QskAspect ) const; int fontRole( QskAspect ) const;
// graphicRole // graphicRole
void setGraphicRole( QskAspect, int, QskAspect::State = QskAspect::NoState ); void setGraphicRole( QskAspect, int, QskStateCombination = QskStateCombination() );
void removeGraphicRole( QskAspect, QskAspect::State = QskAspect::NoState ); void removeGraphicRole( QskAspect, QskStateCombination = QskStateCombination() );
int graphicRole( QskAspect ) const; int graphicRole( QskAspect ) const;
// boxShape // boxShape
@ -186,9 +187,9 @@ class QSK_EXPORT QskSkinHintTableEditor
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&,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void removeBoxShape( QskAspect, QskAspect::State = QskAspect::NoState ); void removeBoxShape( QskAspect, QskStateCombination = QskStateCombination() );
QskBoxShapeMetrics boxShape( QskAspect ) const; QskBoxShapeMetrics boxShape( QskAspect ) const;
@ -201,22 +202,22 @@ class QSK_EXPORT QskSkinHintTableEditor
qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize ); qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize );
void setBoxBorderMetrics( QskAspect, void setBoxBorderMetrics( QskAspect,
const QskBoxBorderMetrics&, QskAspect::State = QskAspect::NoState ); const QskBoxBorderMetrics&, QskStateCombination = QskStateCombination() );
void removeBoxBorderMetric( QskAspect, QskAspect::State = QskAspect::NoState ); void removeBoxBorderMetric( QskAspect, QskStateCombination = QskStateCombination() );
QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const; QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const;
// boxBorderColors // boxBorderColors
void setBoxBorderColors( QskAspect, void setBoxBorderColors( QskAspect,
const QskBoxBorderColors&, QskAspect::State = QskAspect::NoState ); const QskBoxBorderColors&, QskStateCombination = QskStateCombination() );
void setBoxBorderColors( QskAspect, void setBoxBorderColors( QskAspect,
const QColor& left, const QColor& top, const QColor& right, const QColor& bottom, const QColor& left, const QColor& top, const QColor& right, const QColor& bottom,
QskAspect::State = QskAspect::NoState ); QskStateCombination = QskStateCombination() );
void removeBoxBorderColors( QskAspect, QskAspect::State = QskAspect::NoState ); void removeBoxBorderColors( QskAspect, QskStateCombination = QskStateCombination() );
QskBoxBorderColors boxBorderColors( QskAspect ) const; QskBoxBorderColors boxBorderColors( QskAspect ) const;
private: private:
@ -227,9 +228,9 @@ class QSK_EXPORT QskSkinHintTableEditor
template< typename T > template< typename T >
inline void QskSkinHintTableEditor::setHint( inline void QskSkinHintTableEditor::setHint(
QskAspect aspect, const T& hint, QskAspect::State combinationMask ) QskAspect aspect, const T& hint, QskStateCombination combination )
{ {
setHint( aspect, QVariant::fromValue( hint ), combinationMask ); setHint( aspect, QVariant::fromValue( hint ), combination );
} }
template< typename T > template< typename T >
@ -256,22 +257,22 @@ inline bool QskSkinHintTableEditor::hasHint( QskAspect aspect ) const
// --- flag --- // --- flag ---
inline void QskSkinHintTableEditor::setFlagHint( inline void QskSkinHintTableEditor::setFlagHint(
QskAspect aspect, const QVariant& hint, QskAspect::State combinationMask ) QskAspect aspect, const QVariant& hint, QskStateCombination combination )
{ {
setHint( aspect | QskAspect::Flag, hint, combinationMask ); setHint( aspect | QskAspect::Flag, hint, combination );
} }
template< typename T > template< typename T >
inline void QskSkinHintTableEditor::setFlagHint( inline void QskSkinHintTableEditor::setFlagHint(
QskAspect aspect, const T& hint, QskAspect::State combinationMask ) QskAspect aspect, const T& hint, QskStateCombination combination )
{ {
setHint( aspect | QskAspect::Flag, hint, combinationMask ); setHint( aspect | QskAspect::Flag, hint, combination );
} }
inline void QskSkinHintTableEditor::removeFlagHint( inline void QskSkinHintTableEditor::removeFlagHint(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeHint( aspect | QskAspect::Flag, combinationMask ); removeHint( aspect | QskAspect::Flag, combination );
} }
inline QVariant QskSkinHintTableEditor::flagHint( QskAspect aspect ) const inline QVariant QskSkinHintTableEditor::flagHint( QskAspect aspect ) const
@ -288,22 +289,22 @@ inline T QskSkinHintTableEditor::flagHint( QskAspect aspect ) const
// --- metric --- // --- metric ---
inline void QskSkinHintTableEditor::setMetricHint( inline void QskSkinHintTableEditor::setMetricHint(
QskAspect aspect, const QVariant& hint, QskAspect::State combinationMask ) QskAspect aspect, const QVariant& hint, QskStateCombination combination )
{ {
setHint( aspect | QskAspect::Metric, hint, combinationMask ); setHint( aspect | QskAspect::Metric, hint, combination );
} }
template< typename T > template< typename T >
inline void QskSkinHintTableEditor::setMetricHint( inline void QskSkinHintTableEditor::setMetricHint(
QskAspect aspect, const T& hint, QskAspect::State combinationMask ) QskAspect aspect, const T& hint, QskStateCombination combination )
{ {
setHint( aspect | QskAspect::Metric, hint, combinationMask ); setHint( aspect | QskAspect::Metric, hint, combination );
} }
inline void QskSkinHintTableEditor::removeMetricHint( inline void QskSkinHintTableEditor::removeMetricHint(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeHint( aspect | QskAspect::Metric, combinationMask ); removeHint( aspect | QskAspect::Metric, combination );
} }
inline QVariant QskSkinHintTableEditor::metricHint( QskAspect aspect ) const inline QVariant QskSkinHintTableEditor::metricHint( QskAspect aspect ) const
@ -320,22 +321,22 @@ inline T QskSkinHintTableEditor::metricHint( QskAspect aspect ) const
// --- color --- // --- color ---
inline void QskSkinHintTableEditor::setColorHint( inline void QskSkinHintTableEditor::setColorHint(
QskAspect aspect, const QVariant& hint, QskAspect::State combinationMask ) QskAspect aspect, const QVariant& hint, QskStateCombination combination )
{ {
setHint( aspect | QskAspect::Color, hint, combinationMask ); setHint( aspect | QskAspect::Color, hint, combination );
} }
template< typename T > template< typename T >
inline void QskSkinHintTableEditor::setColorHint( inline void QskSkinHintTableEditor::setColorHint(
QskAspect aspect, const T& hint, QskAspect::State combinationMask ) QskAspect aspect, const T& hint, QskStateCombination combination )
{ {
setHint( aspect | QskAspect::Color, hint, combinationMask ); setHint( aspect | QskAspect::Color, hint, combination );
} }
inline void QskSkinHintTableEditor::removeColorHint( inline void QskSkinHintTableEditor::removeColorHint(
QskAspect aspect, QskAspect::State combinationMask ) QskAspect aspect, QskStateCombination combination )
{ {
removeHint( aspect | QskAspect::Color, combinationMask ); removeHint( aspect | QskAspect::Color, combination );
} }
inline QVariant QskSkinHintTableEditor::colorHint( QskAspect aspect ) const inline QVariant QskSkinHintTableEditor::colorHint( QskAspect aspect ) const
@ -357,10 +358,10 @@ inline QskAnimationHint QskSkinHintTableEditor::animation( QskAspect aspect ) co
} }
inline void QskSkinHintTableEditor::setAnimation( inline void QskSkinHintTableEditor::setAnimation(
QskAspect aspect, QskAnimationHint hint, QskAspect::State combinationMask ) QskAspect aspect, QskAnimationHint hint, QskStateCombination combination )
{ {
aspect.setAnimator( true ); aspect.setAnimator( true );
setHint( aspect, hint, combinationMask ); setHint( aspect, hint, combination );
} }
#endif #endif

View File

@ -344,7 +344,7 @@ namespace
} }
auto a = candidate.aspect; auto a = candidate.aspect;
a.setState( control->skinState() ); a.setStates( control->skinStates() );
const auto requestState = control->hintStatus( a ); const auto requestState = control->hintStatus( a );

View File

@ -187,14 +187,14 @@ static inline void qskTriggerUpdates( QskAspect aspect, QskControl* control )
static inline QskAspect qskSubstitutedAspect( static inline QskAspect qskSubstitutedAspect(
const QskSkinnable* skinnable, QskAspect aspect ) const QskSkinnable* skinnable, QskAspect aspect )
{ {
if ( aspect.hasState() ) if ( aspect.hasStates() )
{ {
qWarning() << "QskSkinnable::(re)setSkinHint: setting hints with states " qWarning() << "QskSkinnable::(re)setSkinHint: setting hints with states "
"is discouraged - use QskSkinTableEditor if you are " "is discouraged - use QskSkinTableEditor if you are "
"sure, that you need this."; "sure, that you need this.";
qWarning() << "QskAspect:" << aspect.stateless() qWarning() << "QskAspect:" << aspect.stateless()
<< skinnable->skinStateAsPrintable( aspect.state() ); << skinnable->skinStatesAsPrintable( aspect.states() );
#if 0 #if 0
aspect.clearStates(); aspect.clearStates();
@ -227,7 +227,7 @@ class QskSkinnable::PrivateData
const QskSkinlet* skinlet = nullptr; const QskSkinlet* skinlet = nullptr;
QskAspect::State skinState = QskAspect::NoState; QskAspect::States skinStates = QskAspect::NoState;
bool hasLocalSkinlet = false; bool hasLocalSkinlet = false;
}; };
@ -582,7 +582,7 @@ QskColorFilter QskSkinnable::effectiveGraphicFilter( QskAspect aspect ) const
QskSkinHintStatus status; QskSkinHintStatus status;
const auto hint = storedHint( aspect | skinState(), &status ); const auto hint = storedHint( aspect | skinStates(), &status );
if ( status.isValid() ) if ( status.isValid() )
{ {
// we need to know about how the aspect gets resolved // we need to know about how the aspect gets resolved
@ -634,14 +634,14 @@ QskAnimationHint QskSkinnable::animationHint(
QskAnimationHint QskSkinnable::effectiveAnimation( QskAnimationHint QskSkinnable::effectiveAnimation(
QskAspect::Type type, QskAspect::Subcontrol subControl, QskAspect::Type type, QskAspect::Subcontrol subControl,
QskAspect::State state, QskSkinHintStatus* status ) const QskAspect::States states, QskSkinHintStatus* status ) const
{ {
#if 0 #if 0
// TODO ... // TODO ...
subControl = effectiveSubcontrol( aspect.subControl() ); subControl = effectiveSubcontrol( aspect.subControl() );
#endif #endif
auto aspect = subControl | type | state; auto aspect = subControl | type | states;
aspect.setAnimator( true ); aspect.setAnimator( true );
QskAnimationHint hint; QskAnimationHint hint;
@ -721,8 +721,8 @@ QVariant QskSkinnable::effectiveSkinHint(
if ( v.isValid() ) if ( v.isValid() )
return v; return v;
if ( !aspect.hasState() ) if ( !aspect.hasStates() )
aspect.setState( skinState() ); aspect.setStates( skinStates() );
return storedHint( aspect, status ); return storedHint( aspect, status );
} }
@ -741,7 +741,7 @@ QVariant QskSkinnable::animatedValue(
{ {
QVariant v; QVariant v;
if ( !aspect.hasState() ) if ( !aspect.hasStates() )
{ {
/* /*
The local animators were invented to be stateless The local animators were invented to be stateless
@ -765,8 +765,8 @@ QVariant QskSkinnable::animatedValue(
if ( const auto control = owningControl() ) if ( const auto control = owningControl() )
{ {
if ( aspect.state() == QskAspect::NoState ) if ( !aspect.hasStates() )
aspect = aspect | skinState(); aspect.setStates( skinStates() );
const auto a = aspect; const auto a = aspect;
@ -813,7 +813,7 @@ const QVariant& QskSkinnable::storedHint(
const auto skin = effectiveSkin(); const auto skin = effectiveSkin();
// clearing all state bits not being handled from the skin // clearing all state bits not being handled from the skin
aspect.clearState( ~skin->stateMask() ); aspect.clearStates( ~skin->stateMask() );
QskAspect resolvedAspect; QskAspect resolvedAspect;
@ -891,25 +891,25 @@ const QVariant& QskSkinnable::storedHint(
bool QskSkinnable::hasSkinState( QskAspect::State state ) const bool QskSkinnable::hasSkinState( QskAspect::State state ) const
{ {
return ( m_data->skinState & state ) == state; return ( m_data->skinStates & state ) == state;
} }
QskAspect::State QskSkinnable::skinState() const QskAspect::States QskSkinnable::skinStates() const
{ {
return m_data->skinState; return m_data->skinStates;
} }
const char* QskSkinnable::skinStateAsPrintable() const const char* QskSkinnable::skinStatesAsPrintable() const
{ {
return skinStateAsPrintable( skinState() ); return skinStatesAsPrintable( skinStates() );
} }
const char* QskSkinnable::skinStateAsPrintable( QskAspect::State state ) const const char* QskSkinnable::skinStatesAsPrintable( QskAspect::States states ) const
{ {
QString tmp; QString tmp;
QDebug debug( &tmp ); QDebug debug( &tmp );
qskDebugState( debug, metaObject(), state ); qskDebugStates( debug, metaObject(), states );
// we should find a better way // we should find a better way
static QByteArray bytes[ 10 ]; static QByteArray bytes[ 10 ];
@ -1088,20 +1088,20 @@ void QskSkinnable::startHintTransition( QskAspect aspect,
void QskSkinnable::setSkinStateFlag( QskAspect::State stateFlag, bool on ) void QskSkinnable::setSkinStateFlag( QskAspect::State stateFlag, bool on )
{ {
const auto newState = on const auto newState = on
? ( m_data->skinState | stateFlag ) ? ( m_data->skinStates | stateFlag )
: ( m_data->skinState & ~stateFlag ); : ( m_data->skinStates & ~stateFlag );
setSkinState( newState, true ); setSkinStates( newState, true );
} }
void QskSkinnable::replaceSkinState( QskAspect::State newState ) void QskSkinnable::replaceSkinStates( QskAspect::States newStates )
{ {
m_data->skinState = newState; m_data->skinStates = newStates;
} }
void QskSkinnable::setSkinState( QskAspect::State newState, bool animated ) void QskSkinnable::setSkinStates( QskAspect::States newStates, bool animated )
{ {
if ( m_data->skinState == newState ) if ( m_data->skinStates == newStates )
return; return;
auto control = owningControl(); auto control = owningControl();
@ -1117,11 +1117,11 @@ void QskSkinnable::setSkinState( QskAspect::State newState, bool animated )
if ( skin ) if ( skin )
{ {
const auto mask = skin->stateMask(); const auto mask = skin->stateMask();
if ( ( newState & mask ) == ( m_data->skinState & mask ) ) if ( ( newStates & mask ) == ( m_data->skinStates & mask ) )
{ {
// the modified bits are not handled by the skin // the modified bits are not handled by the skin
m_data->skinState = newState; m_data->skinStates = newStates;
return; return;
} }
} }
@ -1142,7 +1142,7 @@ void QskSkinnable::setSkinState( QskAspect::State newState, bool animated )
{ {
const auto type = static_cast< QskAspect::Type >( i ); const auto type = static_cast< QskAspect::Type >( i );
const auto hint = effectiveAnimation( type, subControl, newState ); const auto hint = effectiveAnimation( type, subControl, newStates );
if ( hint.duration > 0 ) if ( hint.duration > 0 )
{ {
@ -1156,8 +1156,8 @@ void QskSkinnable::setSkinState( QskAspect::State newState, bool animated )
const auto primitive = static_cast< QskAspect::Primitive >( i ); const auto primitive = static_cast< QskAspect::Primitive >( i );
aspect.setPrimitive( type, primitive ); aspect.setPrimitive( type, primitive );
auto a1 = aspect | m_data->skinState; auto a1 = aspect | m_data->skinStates;
auto a2 = aspect | newState; auto a2 = aspect | newStates;
bool doTransition = true; bool doTransition = true;
@ -1186,7 +1186,7 @@ void QskSkinnable::setSkinState( QskAspect::State newState, bool animated )
} }
} }
m_data->skinState = newState; m_data->skinStates = newStates;
if ( control->flags() & QQuickItem::ItemHasContents ) if ( control->flags() & QQuickItem::ItemHasContents )
control->update(); control->update();
@ -1262,7 +1262,7 @@ void QskSkinnable::debug( QDebug debug, QskAspect aspect ) const
void QskSkinnable::debug( QDebug debug, QskAspect::State state ) const void QskSkinnable::debug( QDebug debug, QskAspect::State state ) const
{ {
qskDebugState( debug, metaObject(), state ); qskDebugStates( debug, metaObject(), state );
} }
void QskSkinnable::debug( QskAspect aspect ) const void QskSkinnable::debug( QskAspect aspect ) const
@ -1272,7 +1272,7 @@ void QskSkinnable::debug( QskAspect aspect ) const
void QskSkinnable::debug( QskAspect::State state ) const void QskSkinnable::debug( QskAspect::State state ) const
{ {
qskDebugState( qDebug(), metaObject(), state ); qskDebugStates( qDebug(), metaObject(), state );
} }
#ifndef QT_NO_DEBUG_STREAM #ifndef QT_NO_DEBUG_STREAM

View File

@ -90,7 +90,7 @@ class QSK_EXPORT QskSkinnable
bool resetSkinHint( QskAspect ); bool resetSkinHint( QskAspect );
QskAnimationHint effectiveAnimation( QskAspect::Type, QskAspect::Subcontrol, QskAnimationHint effectiveAnimation( QskAspect::Type, QskAspect::Subcontrol,
QskAspect::State, QskSkinHintStatus* status = nullptr ) const; QskAspect::States, QskSkinHintStatus* status = nullptr ) const;
QVariant effectiveSkinHint( QskAspect, QskSkinHintStatus* = nullptr ) const; QVariant effectiveSkinHint( QskAspect, QskSkinHintStatus* = nullptr ) const;
virtual QskAspect::Placement effectivePlacement() const; virtual QskAspect::Placement effectivePlacement() const;
@ -127,16 +127,16 @@ class QSK_EXPORT QskSkinnable
void debug( QDebug, QskAspect ) const; void debug( QDebug, QskAspect ) const;
void debug( QDebug, QskAspect::State ) const; void debug( QDebug, QskAspect::State ) const;
void setSkinState( QskAspect::State, bool animated = true ); void setSkinStates( QskAspect::States, bool animated = true );
void setSkinStateFlag( QskAspect::State, bool on = true ); void setSkinStateFlag( QskAspect::State, bool on = true );
void replaceSkinState( QskAspect::State ); void replaceSkinStates( QskAspect::States );
bool hasSkinState( QskAspect::State ) const; bool hasSkinState( QskAspect::State ) const;
QskAspect::State skinState() const; QskAspect::States skinStates() const;
const char* skinStateAsPrintable() const; const char* skinStatesAsPrintable() const;
const char* skinStateAsPrintable( QskAspect::State ) const; const char* skinStatesAsPrintable( QskAspect::States ) const;
// type aware methods for accessing skin hints // type aware methods for accessing skin hints

View File

@ -227,7 +227,7 @@ qreal QskSlider::handlePosition() const
void QskSlider::moveHandle() void QskSlider::moveHandle()
{ {
const auto aspect = Handle | QskAspect::Metric | QskAspect::Position; const auto aspect = Handle | QskAspect::Metric | QskAspect::Position;
moveHandleTo( value(), animationHint( aspect | skinState() ) ); moveHandleTo( value(), animationHint( aspect | skinStates() ) );
} }
void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint ) void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )

View File

@ -17,7 +17,6 @@ HEADERS += \
common/QskBoxBorderMetrics.h \ common/QskBoxBorderMetrics.h \
common/QskBoxShapeMetrics.h \ common/QskBoxShapeMetrics.h \
common/QskCorner.h \ common/QskCorner.h \
common/QskFlags.h \
common/QskFunctions.h \ common/QskFunctions.h \
common/QskGlobal.h \ common/QskGlobal.h \
common/QskGradient.h \ common/QskGradient.h \
@ -34,6 +33,7 @@ HEADERS += \
common/QskScaleTickmarks.h \ common/QskScaleTickmarks.h \
common/QskShadowMetrics.h \ common/QskShadowMetrics.h \
common/QskSizePolicy.h \ common/QskSizePolicy.h \
common/QskStateCombination.h \
common/QskTextColors.h \ common/QskTextColors.h \
common/QskTextOptions.h common/QskTextOptions.h
@ -56,6 +56,7 @@ SOURCES += \
common/QskScaleTickmarks.cpp \ common/QskScaleTickmarks.cpp \
common/QskShadowMetrics.cpp \ common/QskShadowMetrics.cpp \
common/QskSizePolicy.cpp \ common/QskSizePolicy.cpp \
common/QskStateCombination.cpp \
common/QskTextColors.cpp \ common/QskTextColors.cpp \
common/QskTextOptions.cpp common/QskTextOptions.cpp