QskSkinnable::subcontrolProxy added

This commit is contained in:
Uwe Rathmann 2021-08-04 15:06:44 +02:00
parent d947920abe
commit 3606f61c65
5 changed files with 17 additions and 32 deletions

View File

@ -13,17 +13,20 @@
QSK_SUBCONTROL( ButtonBar, Indicator )
class IndicatorLabel final : public QskGraphicLabel
namespace
{
public:
IndicatorLabel( QQuickItem* parentItem = nullptr )
: QskGraphicLabel( parentItem )
class IndicatorLabel final : public QskGraphicLabel
{
// so the skins are able to colorize them
setGraphicRole( SkinFactory::Indicator );
setSubcontrolProxy( QskGraphicLabel::Graphic, ButtonBar::Indicator );
}
};
public:
IndicatorLabel( QQuickItem* parentItem = nullptr )
: QskGraphicLabel( parentItem )
{
// so the skins are able to colorize them
setGraphicRole( SkinFactory::Indicator );
setSubcontrolProxy( QskGraphicLabel::Graphic, ButtonBar::Indicator );
}
};
}
ButtonBar::ButtonBar( QQuickItem* parentItem )
: QskLinearBox( parentItem )

View File

@ -15,25 +15,13 @@ Box::Box( const QString& title, QQuickItem* parent )
{
setAutoAddChildren( true );
setAutoLayoutChildren( true );
setPanel( true );
setSubcontrolProxy( QskBox::Panel, Box::Panel );
auto label = new QskTextLabel( title, this );
label->setFontRole( Skin::TitleFont );
if( label->text().isEmpty() )
{
label->setVisible( false );
}
}
QskAspect::Subcontrol Box::substitutedSubcontrol( QskAspect::Subcontrol subControl ) const
{
if( subControl == QskBox::Panel )
{
return Box::Panel;
}
return subControl;
label->setVisible( !tite.isEmpty() );
}
#include "moc_Box.cpp"

View File

@ -17,9 +17,4 @@ class Box : public QskLinearBox
QSK_SUBCONTROLS( Panel )
Box( const QString& title, QQuickItem* parent = nullptr );
protected:
QskAspect::Subcontrol substitutedSubcontrol(
QskAspect::Subcontrol ) const override;
};

View File

@ -27,7 +27,7 @@ BoxWithButtons::BoxWithButtons( const QString& title, const QString& value,
setSizePolicy( Qt::Vertical, QskSizePolicy::Maximum );
auto layout = new QskLinearBox( Qt::Horizontal, this );
auto* layout = new QskLinearBox( Qt::Horizontal, this );
layout->setSpacing( 20 );
QString iconFile = title.toLower();

View File

@ -217,7 +217,6 @@ class QskSkinnable::PrivateData
}
QskSkinHintTable hintTable;
QskHintAnimatorTable animators;
typedef std::map< QskAspect::Subcontrol, QskAspect::Subcontrol > ProxyMap;
@ -297,7 +296,7 @@ void QskSkinnable::setSubcontrolProxy(
if ( m_data->subcontrolProxies == nullptr )
m_data->subcontrolProxies = new PrivateData::ProxyMap();
(*m_data->subcontrolProxies)[ subControl ] = proxy;
( *m_data->subcontrolProxies )[ subControl ] = proxy;
}
void QskSkinnable::resetSubcontrolProxy( QskAspect::Subcontrol subcontrol )