2017-07-21 18:21:34 +02:00
|
|
|
/******************************************************************************
|
2024-01-17 14:31:45 +01:00
|
|
|
* QSkinny - Copyright (C) The authors
|
2023-04-06 09:23:37 +02:00
|
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
2017-07-21 18:21:34 +02:00
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#include "QskBox.h"
|
2020-10-28 19:35:51 +01:00
|
|
|
#include "QskMargins.h"
|
2023-04-20 13:30:41 +02:00
|
|
|
#include "QskBoxBorderMetrics.h"
|
|
|
|
#include "QskBoxBorderColors.h"
|
|
|
|
#include "QskGradient.h"
|
2017-07-21 18:21:34 +02:00
|
|
|
|
|
|
|
QSK_SUBCONTROL( QskBox, Panel )
|
|
|
|
|
2018-08-03 08:15:28 +02:00
|
|
|
QskBox::QskBox( QQuickItem* parent )
|
2019-05-10 07:44:13 +02:00
|
|
|
: QskBox( true, parent )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
QskBox::QskBox( bool hasPanel, QQuickItem* parent )
|
2018-08-03 08:15:28 +02:00
|
|
|
: Inherited( parent )
|
2019-05-10 07:44:13 +02:00
|
|
|
, m_hasPanel( hasPanel )
|
2017-07-21 18:21:34 +02:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
QskBox::~QskBox()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2019-05-10 07:44:13 +02:00
|
|
|
void QskBox::setPanel( bool on )
|
|
|
|
{
|
|
|
|
if ( on != m_hasPanel )
|
|
|
|
{
|
|
|
|
m_hasPanel = on;
|
|
|
|
|
|
|
|
resetImplicitSize();
|
|
|
|
polish();
|
|
|
|
update();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool QskBox::hasPanel() const
|
|
|
|
{
|
|
|
|
return m_hasPanel;
|
|
|
|
}
|
|
|
|
|
2023-04-20 13:30:41 +02:00
|
|
|
QskBoxBorderMetrics QskBox::borderMetrics() const
|
|
|
|
{
|
|
|
|
return boxBorderMetricsHint( Panel );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::setBorderMetrics( const QskBoxBorderMetrics& metrics )
|
|
|
|
{
|
|
|
|
if ( setBoxBorderMetricsHint( Panel, metrics ) )
|
|
|
|
Q_EMIT borderMetricsChanged( borderMetrics() );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::resetBorderMetrics()
|
|
|
|
{
|
|
|
|
if ( resetBoxBorderMetricsHint( Panel ) )
|
|
|
|
Q_EMIT borderMetricsChanged( borderMetrics() );
|
|
|
|
}
|
|
|
|
|
|
|
|
QskBoxBorderColors QskBox::borderColors() const
|
|
|
|
{
|
|
|
|
return boxBorderColorsHint( Panel );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::setBorderColors( const QskBoxBorderColors& colors )
|
|
|
|
{
|
|
|
|
if ( setBoxBorderColorsHint( Panel, colors ) )
|
|
|
|
Q_EMIT borderColorsChanged( borderColors() );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::resetBorderColors()
|
|
|
|
{
|
|
|
|
if ( resetBoxBorderColorsHint( Panel ) )
|
|
|
|
Q_EMIT borderColorsChanged( borderColors() );
|
|
|
|
}
|
|
|
|
|
|
|
|
QskGradient QskBox::fillGradient() const
|
|
|
|
{
|
|
|
|
return gradientHint( Panel );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::setFillGradient( const QskGradient& gradient )
|
|
|
|
{
|
|
|
|
if ( setGradientHint( Panel, gradient ) )
|
|
|
|
Q_EMIT fillGradientChanged( gradient );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::resetFillGradient()
|
|
|
|
{
|
|
|
|
if ( resetColor( Panel ) )
|
|
|
|
Q_EMIT fillGradientChanged( fillGradient() );
|
|
|
|
}
|
|
|
|
|
2019-09-20 07:04:17 +02:00
|
|
|
void QskBox::setPadding( qreal padding )
|
|
|
|
{
|
2020-12-27 11:15:34 +01:00
|
|
|
setPadding( QskMargins( padding ) );
|
2019-09-20 07:04:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::setPadding( const QMarginsF& padding )
|
|
|
|
{
|
2020-12-27 11:15:34 +01:00
|
|
|
const auto pd = QskMargins().expandedTo( padding );
|
2019-09-20 07:04:17 +02:00
|
|
|
|
2020-12-27 16:31:07 +01:00
|
|
|
if ( setPaddingHint( Panel, pd ) )
|
2019-09-20 07:04:17 +02:00
|
|
|
Q_EMIT paddingChanged( pd );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskBox::resetPadding()
|
|
|
|
{
|
2020-12-15 11:01:00 +01:00
|
|
|
if ( resetPaddingHint( Panel ) )
|
2020-12-27 11:15:34 +01:00
|
|
|
Q_EMIT paddingChanged( paddingHint( Panel ) );
|
2019-09-20 07:04:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
QMarginsF QskBox::padding() const
|
|
|
|
{
|
2020-12-15 11:01:00 +01:00
|
|
|
return paddingHint( Panel );
|
2019-09-20 07:04:17 +02:00
|
|
|
}
|
|
|
|
|
2019-04-26 18:09:59 +02:00
|
|
|
QRectF QskBox::layoutRectForSize( const QSizeF& size ) const
|
2018-08-03 08:15:28 +02:00
|
|
|
{
|
2020-12-29 12:57:03 +01:00
|
|
|
if ( m_hasPanel )
|
|
|
|
return subControlContentsRect( size, Panel );
|
2019-05-10 07:44:13 +02:00
|
|
|
|
2020-12-29 12:57:03 +01:00
|
|
|
return Inherited::layoutRectForSize( size );
|
2017-07-21 18:21:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#include "moc_QskBox.cpp"
|