allow registration of skinlet for skinnables ( not only controls )
This commit is contained in:
parent
b2738f4bb6
commit
33b3ddb5e3
|
@ -363,6 +363,20 @@ const int* QskSkin::dialogButtonLayout( Qt::Orientation orientation ) const
|
||||||
return QPlatformDialogHelper::buttonLayout( orientation, policy );
|
return QPlatformDialogHelper::buttonLayout( orientation, policy );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QMetaObject* QskSkin::skinletMetaObject( const QMetaObject* metaObject ) const
|
||||||
|
{
|
||||||
|
while ( metaObject )
|
||||||
|
{
|
||||||
|
auto it = m_data->skinletMap.find( metaObject );
|
||||||
|
if ( it != m_data->skinletMap.cend() )
|
||||||
|
return it->second.metaObject;
|
||||||
|
|
||||||
|
metaObject = metaObject->superClass();
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
QskSkinlet* QskSkin::skinlet( const QMetaObject* metaObject )
|
QskSkinlet* QskSkin::skinlet( const QMetaObject* metaObject )
|
||||||
{
|
{
|
||||||
while ( metaObject )
|
while ( metaObject )
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
class QskControl;
|
class QskSkinnable;
|
||||||
class QskSkinlet;
|
class QskSkinlet;
|
||||||
|
|
||||||
class QskColorFilter;
|
class QskColorFilter;
|
||||||
|
@ -76,6 +76,7 @@ class QSK_EXPORT QskSkin : public QObject
|
||||||
virtual QString dialogButtonText( int button ) const;
|
virtual QString dialogButtonText( int button ) const;
|
||||||
|
|
||||||
QskSkinlet* skinlet( const QMetaObject* );
|
QskSkinlet* skinlet( const QMetaObject* );
|
||||||
|
const QMetaObject* skinletMetaObject( const QMetaObject* ) const;
|
||||||
|
|
||||||
const QskSkinHintTable& hintTable() const;
|
const QskSkinHintTable& hintTable() const;
|
||||||
QskSkinHintTable& hintTable();
|
QskSkinHintTable& hintTable();
|
||||||
|
@ -84,19 +85,19 @@ class QSK_EXPORT QskSkin : public QObject
|
||||||
const std::unordered_map< int, QskColorFilter >& graphicFilters() const;
|
const std::unordered_map< int, QskColorFilter >& graphicFilters() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void declareSkinlet( const QMetaObject* controlMetaObject,
|
void declareSkinlet( const QMetaObject* metaObject,
|
||||||
const QMetaObject* skinMetaObject );
|
const QMetaObject* skinletMetaObject );
|
||||||
|
|
||||||
class PrivateData;
|
class PrivateData;
|
||||||
std::unique_ptr< PrivateData > m_data;
|
std::unique_ptr< PrivateData > m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
template< typename Control, typename Skinlet >
|
template< typename Skinnable, typename Skinlet >
|
||||||
inline void QskSkin::declareSkinlet()
|
inline void QskSkin::declareSkinlet()
|
||||||
{
|
{
|
||||||
Q_STATIC_ASSERT( ( std::is_base_of< QskControl, Control >::value ) );
|
Q_STATIC_ASSERT( ( std::is_base_of< QskSkinnable, Skinnable >::value ) );
|
||||||
Q_STATIC_ASSERT( ( std::is_base_of< QskSkinlet, Skinlet >::value ) );
|
Q_STATIC_ASSERT( ( std::is_base_of< QskSkinlet, Skinlet >::value ) );
|
||||||
declareSkinlet( &Control::staticMetaObject, &Skinlet::staticMetaObject );
|
declareSkinlet( &Skinnable::staticMetaObject, &Skinlet::staticMetaObject );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue