QskCheckBox improvements

This commit is contained in:
Uwe Rathmann 2022-04-05 08:48:16 +02:00
parent 752a97524b
commit 6ef1f8a45d
4 changed files with 30 additions and 23 deletions

View File

@ -182,20 +182,23 @@ void Editor::setupControl()
void Editor::setupCheckBox() void Editor::setupCheckBox()
{ {
using A = QskAspect;
using Q = QskCheckBox; using Q = QskCheckBox;
const qreal radius = qskDpiScaled( 18 ); const qreal size = qskDpiScaled( 18 );
setMargin( QskCheckBox::Tick, QMarginsF( 3, 5, 3, 3 ) ); setStrutSize( Q::Panel, size, size );
setStrutSize( Q::Box, radius, radius ); setPadding( Q::Panel, 3 );
setBoxShape( Q::Box, 2 ); setBoxShape( Q::Panel, 2 );
setColor( Q::Box, m_pal.baseColor); setGradient( Q::Panel, m_pal.baseColor);
setColor( Q::Box | Q::Checked, m_pal.accentColor ); setGradient( Q::Panel | Q::Checked, m_pal.accentColor );
setGradient( Q::Box | Q::Checked | Q::Disabled, QskRgb::Grey ); setGradient( Q::Panel | Q::Checked | Q::Disabled, QskRgb::Grey );
setColor( Q::Tick, m_pal.contrastColor ); setColor( Q::Indicator, m_pal.contrastColor );
setAnimation( Q::Panel | A::Color, qskDuration );
} }
void Editor::setupBox() void Editor::setupBox()

View File

@ -297,19 +297,24 @@ void Editor::setupBox()
void Editor::setupCheckBox() void Editor::setupCheckBox()
{ {
using A = QskAspect;
using Q = QskCheckBox; using Q = QskCheckBox;
const qreal size = qskDpiScaled( 26 ); const qreal size = qskDpiScaled( 26 );
setMargin( Q::Tick, QskMargins( qskDpiScaled( 5 ) ) ); setStrutSize( Q::Panel, size, size );
setStrutSize( Q::Box, QSizeF( size, size ) ); setPadding( Q::Panel, qskDpiScaled( 5 ) );
setBoxShape( Q::Box, qskDpiScaled( 3 ) ); setBoxShape( Q::Panel, qskDpiScaled( 3 ) );
setBoxBorderMetrics( Q::Box, qskDpiScaled( 1 ) ); setBoxBorderMetrics( Q::Panel, qskDpiScaled( 1 ) );
setBoxBorderColors( Q::Box, m_pal.darker125 );
setColor( Q::Box, m_pal.lighter135 ); setBoxBorderColors( Q::Panel, m_pal.darker125 );
setColor( Q::Box | Q::Checked, m_pal.highlighted ); setGradient( Q::Panel, m_pal.lighter135 );
setColor( Q::Tick, m_pal.lighter135 ); setGradient( Q::Panel | Q::Checked, m_pal.highlighted );
setColor( Q::Indicator, m_pal.lighter135 );
setAnimation( Q::Panel | A::Color, qskDuration );
} }
void Editor::setupPopup() void Editor::setupPopup()

View File

@ -8,8 +8,8 @@
#include <qset.h> #include <qset.h>
QSK_SUBCONTROL( QskCheckBox, Box ) QSK_SUBCONTROL( QskCheckBox, Panel )
QSK_SUBCONTROL( QskCheckBox, Tick ) QSK_SUBCONTROL( QskCheckBox, Indicator )
QSK_SYSTEM_STATE( QskCheckBox, PartiallyChecked, QskAspect::LastUserState << 2 ) QSK_SYSTEM_STATE( QskCheckBox, PartiallyChecked, QskAspect::LastUserState << 2 )
@ -28,7 +28,7 @@ class QskCheckBox::PrivateData
int groupItemsChecked = 0; int groupItemsChecked = 0;
int checkState : 2; Qt::CheckState checkState : 2;
bool checkStateChanging : 1; bool checkStateChanging : 1;
bool toggleChanging : 1; bool toggleChanging : 1;
bool tristate : 1; bool tristate : 1;
@ -57,7 +57,7 @@ bool QskCheckBox::isCheckable() const
Qt::CheckState QskCheckBox::checkState() const Qt::CheckState QskCheckBox::checkState() const
{ {
return static_cast< Qt::CheckState >( m_data->checkState ); return m_data->checkState;
} }
void QskCheckBox::setCheckStateInternal( Qt::CheckState checkState ) void QskCheckBox::setCheckStateInternal( Qt::CheckState checkState )
@ -162,8 +162,7 @@ void QskCheckBox::addToGroup( QskCheckBox* groupItem )
connect( groupItem, &QskAbstractButton::toggled, connect( groupItem, &QskAbstractButton::toggled,
this, [ this, groupItem ]( bool toggled ) this, [ this, groupItem ]( bool toggled )
{ {
auto& groupItemsChecked = m_data->groupItemsChecked; m_data->groupItemsChecked += toggled ? 1 : -1;
groupItemsChecked += toggled ? 1 : -1;
updated(); updated();
} ); } );

View File

@ -21,7 +21,7 @@ class QSK_EXPORT QskCheckBox : public QskAbstractButton
using Inherited = QskAbstractButton; using Inherited = QskAbstractButton;
public: public:
QSK_SUBCONTROLS( Box, Tick ) QSK_SUBCONTROLS( Panel, Indicator )
QSK_STATES( PartiallyChecked ) QSK_STATES( PartiallyChecked )
QskCheckBox( QQuickItem* parent = nullptr ); QskCheckBox( QQuickItem* parent = nullptr );