2019-07-13 09:01:27 +00:00
|
|
|
/******************************************************************************
|
|
|
|
* QSkinny - Copyright (C) 2016 Uwe Rathmann
|
|
|
|
* This file may be used under the terms of the QSkinny License, Version 1.0
|
|
|
|
*****************************************************************************/
|
|
|
|
|
2019-06-04 06:00:00 +00:00
|
|
|
#include "QskLayoutHint.h"
|
2019-09-10 15:01:47 +00:00
|
|
|
#include "QskControl.h"
|
2019-06-04 06:00:00 +00:00
|
|
|
#include <qnamespace.h>
|
|
|
|
|
|
|
|
QskLayoutHint::QskLayoutHint()
|
2019-09-10 15:01:47 +00:00
|
|
|
: QskLayoutHint( 0.0, 0.0, QskLayoutHint::unlimited )
|
2019-06-04 06:00:00 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
QskLayoutHint::QskLayoutHint( qreal minimum, qreal preferred, qreal maximum )
|
|
|
|
: m_minimum( minimum )
|
|
|
|
, m_preferred( preferred )
|
|
|
|
, m_maximum( maximum )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
qreal QskLayoutHint::size( int which ) const
|
|
|
|
{
|
|
|
|
switch( which )
|
|
|
|
{
|
|
|
|
case Qt::MinimumSize:
|
|
|
|
return m_minimum;
|
|
|
|
|
|
|
|
case Qt::PreferredSize:
|
|
|
|
return m_preferred;
|
|
|
|
|
|
|
|
case Qt::MaximumSize:
|
|
|
|
return m_maximum;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return 0.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void QskLayoutHint::setSize( int which, qreal size )
|
|
|
|
{
|
|
|
|
switch (which)
|
|
|
|
{
|
|
|
|
case Qt::MinimumSize:
|
|
|
|
m_minimum = size;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case Qt::PreferredSize:
|
|
|
|
m_preferred = size;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case Qt::MaximumSize:
|
|
|
|
m_maximum = size;
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-29 15:34:24 +00:00
|
|
|
void QskLayoutHint::expandTo( const QskLayoutHint& other )
|
|
|
|
{
|
|
|
|
m_minimum = qMax( m_minimum, other.m_minimum );
|
|
|
|
m_preferred = qMax( m_preferred, other.m_preferred );
|
|
|
|
m_maximum = qMax( m_maximum, other.m_maximum );
|
|
|
|
}
|
|
|
|
|
2019-06-04 06:00:00 +00:00
|
|
|
void QskLayoutHint::normalize()
|
|
|
|
{
|
|
|
|
m_minimum = qMax( m_minimum, qreal( 0.0 ) );
|
|
|
|
m_maximum = qMax( m_minimum, m_maximum );
|
|
|
|
m_preferred = qBound( m_minimum, m_preferred, m_maximum );
|
|
|
|
}
|
2019-06-19 11:26:29 +00:00
|
|
|
|
2019-07-09 12:49:24 +00:00
|
|
|
bool QskLayoutHint::isDefault() const
|
|
|
|
{
|
2019-07-17 15:54:16 +00:00
|
|
|
return ( m_minimum == 0.0 ) && ( m_preferred == 0.0 )
|
2019-09-10 15:01:47 +00:00
|
|
|
&& ( m_maximum == QskLayoutHint::unlimited );
|
|
|
|
}
|
|
|
|
|
|
|
|
qreal QskLayoutHint::combined( int which, qreal value1, qreal value2 )
|
|
|
|
{
|
|
|
|
if ( value1 < 0.0 )
|
|
|
|
return value2;
|
|
|
|
|
|
|
|
if ( value2 < 0.0 )
|
|
|
|
return value1;
|
|
|
|
|
|
|
|
if ( which == Qt::MaximumSize )
|
|
|
|
return qMin( value1, value2 );
|
|
|
|
else
|
|
|
|
return qMax( value1, value2 );
|
2019-07-09 12:49:24 +00:00
|
|
|
}
|
|
|
|
|
2019-06-19 11:26:29 +00:00
|
|
|
#ifndef QT_NO_DEBUG_STREAM
|
|
|
|
|
|
|
|
#include <qdebug.h>
|
|
|
|
|
2019-07-02 16:17:57 +00:00
|
|
|
static inline QString qskHintValueString( qreal value )
|
|
|
|
{
|
2019-09-10 15:01:47 +00:00
|
|
|
if ( value >= QskLayoutHint::unlimited )
|
2019-07-02 16:17:57 +00:00
|
|
|
return QStringLiteral( "unlimited" );
|
|
|
|
else
|
|
|
|
return QString::number( value );
|
|
|
|
}
|
|
|
|
|
2019-06-19 11:26:29 +00:00
|
|
|
QDebug operator<<( QDebug debug, const QskLayoutHint& hint )
|
|
|
|
{
|
|
|
|
QDebugStateSaver saver( debug );
|
|
|
|
debug.nospace();
|
|
|
|
|
2019-07-17 15:54:16 +00:00
|
|
|
debug << "LayoutHint" << "( "
|
2019-07-02 16:17:57 +00:00
|
|
|
<< qskHintValueString( hint.minimum() ) << ", "
|
|
|
|
<< qskHintValueString( hint.preferred() ) << ", "
|
|
|
|
<< qskHintValueString( hint.maximum() ) << " )";
|
2019-06-19 11:26:29 +00:00
|
|
|
|
|
|
|
return debug;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|