windows style: Style progress bar
... and allow for the case where the bar is bigger than the groove.
This commit is contained in:
parent
0421066dee
commit
d56c99b3e7
|
@ -276,6 +276,16 @@ void Editor::setupPopup()
|
||||||
|
|
||||||
void Editor::setupProgressBar()
|
void Editor::setupProgressBar()
|
||||||
{
|
{
|
||||||
|
using Q = QskProgressBar;
|
||||||
|
using A = QskAspect;
|
||||||
|
|
||||||
|
setMetric( Q::Groove | A::Size, 1 );
|
||||||
|
setBoxShape( Q::Groove, 100, Qt::RelativeSize );
|
||||||
|
setGradient( Q::Groove, theme.palette.strokeColor.controlStrongStroke.defaultColor );
|
||||||
|
|
||||||
|
setMetric( Q::Bar| A::Size, 3 );
|
||||||
|
setBoxShape( Q::Bar, 100, Qt::RelativeSize );
|
||||||
|
setGradient( Q::Bar, theme.palette.fillColor.accent.defaultColor );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::setupPushButton()
|
void Editor::setupPushButton()
|
||||||
|
|
|
@ -192,7 +192,9 @@ void QskProgressBar::resetExtent()
|
||||||
|
|
||||||
qreal QskProgressBar::extent() const
|
qreal QskProgressBar::extent() const
|
||||||
{
|
{
|
||||||
return metric( Groove | QskAspect::Size );
|
auto grooveSize = metric( Groove | QskAspect::Size );
|
||||||
|
auto barSize = metric( Bar | QskAspect::Size );
|
||||||
|
return qMax( grooveSize, barSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskProgressBar::setOrigin( qreal origin )
|
void QskProgressBar::setOrigin( qreal origin )
|
||||||
|
|
|
@ -62,28 +62,29 @@ QRectF QskProgressBarSkinlet::subControlRect(
|
||||||
const QskSkinnable* skinnable, const QRectF& contentsRect,
|
const QskSkinnable* skinnable, const QRectF& contentsRect,
|
||||||
QskAspect::Subcontrol subControl ) const
|
QskAspect::Subcontrol subControl ) const
|
||||||
{
|
{
|
||||||
const auto bar = static_cast< const QskProgressBar* >( skinnable );
|
using Q = QskProgressBar;
|
||||||
|
const auto bar = static_cast< const Q* >( skinnable );
|
||||||
|
|
||||||
if( subControl == QskProgressBar::Groove )
|
if( subControl == Q::Groove )
|
||||||
{
|
{
|
||||||
const auto extent = bar->extent();
|
const auto grooveSize = bar->metric( Q::Groove | QskAspect::Size );
|
||||||
|
|
||||||
auto rect = contentsRect;
|
auto rect = contentsRect;
|
||||||
if ( bar->orientation() == Qt::Horizontal )
|
if ( bar->orientation() == Qt::Horizontal )
|
||||||
{
|
{
|
||||||
rect.setY( rect.y() + 0.5 * ( rect.height() - extent ) );
|
rect.setY( rect.y() + 0.5 * ( rect.height() - grooveSize ) );
|
||||||
rect.setHeight( extent );
|
rect.setHeight( grooveSize );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rect.setX( rect.x() + 0.5 * ( rect.width() - extent ) );
|
rect.setX( rect.x() + 0.5 * ( rect.width() - grooveSize ) );
|
||||||
rect.setWidth( extent );
|
rect.setWidth( grooveSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( subControl == QskProgressBar::Bar )
|
if( subControl == Q::Bar )
|
||||||
{
|
{
|
||||||
return barRect( bar );
|
return barRect( bar );
|
||||||
}
|
}
|
||||||
|
@ -154,10 +155,23 @@ QSGNode* QskProgressBarSkinlet::updateBarNode(
|
||||||
|
|
||||||
QRectF QskProgressBarSkinlet::barRect( const QskProgressBar* bar ) const
|
QRectF QskProgressBarSkinlet::barRect( const QskProgressBar* bar ) const
|
||||||
{
|
{
|
||||||
const auto subControl = QskProgressBar::Groove;
|
using Q = QskProgressBar;
|
||||||
|
const auto subControl = Q::Groove;
|
||||||
|
|
||||||
|
const auto barSize = bar->metric( Q::Bar | QskAspect::Size );
|
||||||
auto rect = bar->subControlRect( subControl );
|
auto rect = bar->subControlRect( subControl );
|
||||||
|
|
||||||
|
if ( bar->orientation() == Qt::Horizontal )
|
||||||
|
{
|
||||||
|
rect.setY( rect.y() + 0.5 * ( rect.height() - barSize ) );
|
||||||
|
rect.setHeight( barSize );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rect.setX( rect.x() + 0.5 * ( rect.width() - barSize ) );
|
||||||
|
rect.setWidth( barSize );
|
||||||
|
}
|
||||||
|
|
||||||
const auto borderMetrics = bar->boxBorderMetricsHint( subControl );
|
const auto borderMetrics = bar->boxBorderMetricsHint( subControl );
|
||||||
|
|
||||||
auto m = bar->paddingHint( subControl );
|
auto m = bar->paddingHint( subControl );
|
||||||
|
|
Loading…
Reference in New Issue