2017-07-21 16:21:34 +00:00
|
|
|
/******************************************************************************
|
|
|
|
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
|
|
|
* This file may be used under the terms of the QSkinny License, Version 1.0
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#include "QskSeparator.h"
|
|
|
|
#include "QskAspect.h"
|
|
|
|
|
|
|
|
QSK_SUBCONTROL( QskSeparator, Panel )
|
|
|
|
|
2020-12-11 14:17:09 +00:00
|
|
|
static inline QskAspect::Aspect qskAspectThickness()
|
|
|
|
{
|
2020-12-15 06:21:12 +00:00
|
|
|
return QskSeparator::Panel | QskAspect::Metric | QskAspect::Size;
|
2020-12-11 14:17:09 +00:00
|
|
|
}
|
|
|
|
|
2018-08-03 06:15:28 +00:00
|
|
|
QskSeparator::QskSeparator( QQuickItem* parent )
|
|
|
|
: QskSeparator( Qt::Horizontal, parent )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2018-08-03 06:15:28 +00:00
|
|
|
QskSeparator::QskSeparator( Qt::Orientation orientation, QQuickItem* parent )
|
|
|
|
: Inherited( parent )
|
|
|
|
, m_orientation( orientation )
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
|
|
|
if ( orientation == Qt::Horizontal )
|
2017-08-31 07:09:05 +00:00
|
|
|
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
|
2017-07-21 16:21:34 +00:00
|
|
|
else
|
2017-08-31 07:09:05 +00:00
|
|
|
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
|
2017-07-21 16:21:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
QskSeparator::~QskSeparator()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskSeparator::setOrientation( Qt::Orientation orientation )
|
|
|
|
{
|
|
|
|
if ( orientation == m_orientation )
|
|
|
|
return;
|
|
|
|
|
|
|
|
m_orientation = orientation;
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
// swapping the size policy: guess this is what a user expects
|
|
|
|
setSizePolicy( sizePolicy( Qt::Vertical ), sizePolicy( Qt::Horizontal ) );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
resetImplicitSize();
|
|
|
|
update();
|
|
|
|
|
|
|
|
Q_EMIT orientationChanged( m_orientation );
|
|
|
|
}
|
|
|
|
|
|
|
|
Qt::Orientation QskSeparator::orientation() const
|
|
|
|
{
|
|
|
|
return m_orientation;
|
|
|
|
}
|
|
|
|
|
2017-09-01 10:27:08 +00:00
|
|
|
void QskSeparator::setThickness( qreal thickness )
|
|
|
|
{
|
|
|
|
thickness = qMax( thickness, 0.0 );
|
|
|
|
|
2020-12-13 13:23:17 +00:00
|
|
|
const auto aspect = qskAspectThickness();
|
|
|
|
|
|
|
|
if ( thickness != metric( aspect ) )
|
2017-09-01 10:27:08 +00:00
|
|
|
{
|
2020-12-13 13:23:17 +00:00
|
|
|
setMetric( aspect, thickness );
|
2017-09-01 10:27:08 +00:00
|
|
|
|
|
|
|
resetImplicitSize();
|
|
|
|
update();
|
|
|
|
|
2020-12-11 14:17:09 +00:00
|
|
|
Q_EMIT thicknessChanged( thickness );
|
2017-09-01 10:27:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
qreal QskSeparator::thickness() const
|
|
|
|
{
|
2020-12-11 14:17:09 +00:00
|
|
|
return metric( qskAspectThickness() );
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskSeparator::resetThickness()
|
|
|
|
{
|
|
|
|
if ( resetHint( qskAspectThickness() ) )
|
|
|
|
{
|
|
|
|
resetImplicitSize();
|
|
|
|
update();
|
|
|
|
|
|
|
|
Q_EMIT thicknessChanged( thickness() );
|
|
|
|
}
|
2017-09-01 10:27:08 +00:00
|
|
|
}
|
|
|
|
|
2019-09-10 15:01:47 +00:00
|
|
|
QSizeF QskSeparator::contentsSizeHint(
|
|
|
|
Qt::SizeHint which, const QSizeF& ) const
|
2017-07-21 16:21:34 +00:00
|
|
|
{
|
2019-09-10 15:01:47 +00:00
|
|
|
if ( which != Qt::PreferredSize )
|
|
|
|
return QSizeF();
|
|
|
|
|
2017-09-01 10:27:08 +00:00
|
|
|
const qreal m = thickness();
|
2017-07-21 16:21:34 +00:00
|
|
|
|
|
|
|
if ( m_orientation == Qt::Horizontal )
|
|
|
|
return QSizeF( -1, m );
|
|
|
|
else
|
|
|
|
return QSizeF( m, -1 );
|
|
|
|
}
|
|
|
|
|
2017-10-17 15:34:00 +00:00
|
|
|
QskAspect::Placement QskSeparator::effectivePlacement() const
|
|
|
|
{
|
2019-04-17 14:33:17 +00:00
|
|
|
return static_cast< QskAspect::Placement >( m_orientation );
|
2017-10-17 15:34:00 +00:00
|
|
|
}
|
|
|
|
|
2017-07-21 16:21:34 +00:00
|
|
|
#include "moc_QskSeparator.cpp"
|