Make sliders, dials, and progress bars styled like Blue Ocean mockups

BUG: 414990
wilder-5.24
Jan Blackquill 5 years ago committed by Nate Graham
parent 86b8c6c303
commit 97bc9ccea5
  1. 72
      kstyle/breezehelper.cpp
  2. 15
      kstyle/breezehelper.h
  3. 10
      kstyle/breezestyle.cpp

@ -1109,14 +1109,17 @@ namespace Breeze
// setup painter
painter->setRenderHint( QPainter::Antialiasing, true );
const QRectF baseRect( rect );
QRectF baseRect( rect );
baseRect.adjust(0.5, 0.5, -0.5, -0.5);
const qreal radius( 0.5*Metrics::Slider_GrooveThickness );
// content
if( color.isValid() )
{
painter->setPen( Qt::NoPen );
painter->setBrush( color );
painter->setPen( color );
auto bg = color;
bg.setAlphaF(bg.alphaF() / 2);
painter->setBrush( bg );
painter->drawRoundedRect( baseRect, radius, radius );
}
@ -1126,7 +1129,7 @@ namespace Breeze
//______________________________________________________________________________
void Helper::renderDialGroove(
QPainter* painter, const QRect& rect,
const QColor& color,
const QColor& fg, const QColor& bg,
qreal first, qreal last ) const
{
@ -1136,7 +1139,7 @@ namespace Breeze
const QRectF baseRect( rect );
// content
if( color.isValid() )
if( fg.isValid() )
{
const qreal penWidth( Metrics::Slider_GrooveThickness );
const QRectF grooveRect( rect.adjusted( penWidth/2, penWidth/2, -penWidth/2, -penWidth/2 ) );
@ -1144,58 +1147,20 @@ namespace Breeze
// setup angles
const int angleStart( first * 180 * 16 / M_PI );
const int angleSpan( (last - first ) * 180 * 16 / M_PI );
const QPen bgPen( fg, penWidth, Qt::SolidLine, Qt::RoundCap );
const QPen fgPen( KColorUtils::overlayColors( bg, alphaColor( fg, 0.5) ), penWidth - 2, Qt::SolidLine, Qt::RoundCap );
// setup pen
if( angleSpan != 0 )
{
QPen pen( color, penWidth );
pen.setCapStyle( Qt::RoundCap );
painter->setPen( pen );
painter->setPen( bgPen );
painter->setBrush( Qt::NoBrush );
painter->drawArc( grooveRect, angleStart, angleSpan );
}
}
}
//______________________________________________________________________________
void Helper::renderDialContents(
QPainter* painter, const QRect& rect,
const QColor& color,
qreal first, qreal second ) const
{
// setup painter
painter->setRenderHint( QPainter::Antialiasing, true );
const QRectF baseRect( rect );
// content
if( color.isValid() )
{
// setup groove rect
const qreal penWidth( Metrics::Slider_GrooveThickness );
const QRectF grooveRect( rect.adjusted( penWidth/2, penWidth/2, -penWidth/2, -penWidth/2 ) );
// setup angles
const int angleStart( first * 180 * 16 / M_PI );
const int angleSpan( (second - first ) * 180 * 16 / M_PI );
// setup pen
if( angleSpan != 0 )
{
QPen pen( color, penWidth );
pen.setCapStyle( Qt::RoundCap );
painter->setPen( pen );
painter->setBrush( Qt::NoBrush );
painter->setPen( fgPen );
painter->drawArc( grooveRect, angleStart, angleSpan );
}
}
}
//______________________________________________________________________________
@ -1243,20 +1208,21 @@ namespace Breeze
//______________________________________________________________________________
void Helper::renderProgressBarGroove(
QPainter* painter, const QRect& rect,
const QColor& color ) const
const QColor& fg, const QColor& bg ) const
{
// setup painter
painter->setRenderHint( QPainter::Antialiasing, true );
const QRectF baseRect( rect );
QRectF baseRect( rect );
baseRect.adjust(0.5,0.5,-0.5,-0.5);
const qreal radius( 0.5*Metrics::ProgressBar_Thickness );
// content
if( color.isValid() )
if( fg.isValid() )
{
painter->setPen( Qt::NoPen );
painter->setBrush( color );
painter->setPen( fg );
painter->setBrush( KColorUtils::overlayColors(bg, alphaColor(fg, 0.5)) );
painter->drawRoundedRect( baseRect, radius, radius );
}

@ -210,17 +210,10 @@ namespace Breeze
void renderSliderHandle( QPainter*, const QRect&, const QColor&, const QColor& outline, const QColor& shadow, bool sunken ) const;
//* dial groove
void renderDialGroove( QPainter*, const QRect&, const QColor&, qreal first, qreal last ) const;
//* dial groove
void renderDialContents( QPainter*, const QRect&, const QColor&, qreal first, qreal second ) const;
void renderDialGroove( QPainter*, const QRect&, const QColor& fg, const QColor& bg, qreal first, qreal last ) const;
//* progress bar groove
void renderProgressBarGroove( QPainter*, const QRect&, const QColor& ) const;
//* progress bar contents
void renderProgressBarContents( QPainter* painter, const QRect& rect, const QColor& color ) const
{ return renderProgressBarGroove( painter, rect, color ); }
void renderProgressBarGroove( QPainter*, const QRect&, const QColor& fg, const QColor& bg) const;
//* progress bar contents (animated)
void renderProgressBarBusyContents( QPainter* painter, const QRect& rect, const QColor& first, const QColor& second, bool horizontal, bool reverse, int progress ) const;
@ -232,10 +225,6 @@ namespace Breeze
//* scrollbar handle
void renderScrollBarHandle( QPainter*, const QRect&, const QColor& ) const;
//* toolbar handle
void renderToolBarHandle( QPainter* painter, const QRect& rect, const QColor& color ) const
{ return renderProgressBarGroove( painter, rect, color ); }
//* separator between scrollbar and contents
void renderScrollBarBorder( QPainter*, const QRect&, const QColor& ) const;

@ -3968,7 +3968,7 @@ namespace Breeze
// render as push button
const auto shadow( _helper->shadowColor( palette ) );
const auto outline( _helper->buttonOutlineColor( palette, mouseOver, hasFocus, opacity, mode ) );
const auto background( _helper->buttonBackgroundColor( palette, mouseOver, hasFocus, false, opacity, mode ) );
const auto background( _helper->buttonBackgroundColor( palette, mouseOver, hasFocus, sunken, opacity, mode ) );
auto frameRect( rect );
painter->setClipRect( rect );
@ -5071,7 +5071,7 @@ namespace Breeze
palette.color( QPalette::HighlightedText ) :
palette.color( QPalette::Highlight ) );
_helper->renderProgressBarContents( painter, rect, contentsColor );
_helper->renderProgressBarGroove( painter, rect, contentsColor, palette.color(QPalette::Window) );
painter->setClipRegion( oldClipRegion );
}
@ -5084,7 +5084,7 @@ namespace Breeze
{
const auto& palette( option->palette );
const auto color( _helper->alphaColor( palette.color( QPalette::WindowText ), 0.3 ) );
_helper->renderProgressBarGroove( painter, option->rect, color );
_helper->renderProgressBarGroove( painter, option->rect, color, palette.color(QPalette::Window) );
return true;
}
@ -6575,7 +6575,7 @@ namespace Breeze
const qreal last( dialAngle( sliderOption, sliderOption->maximum ) );
// render groove
_helper->renderDialGroove( painter, grooveRect, grooveColor, first, last );
_helper->renderDialGroove( painter, grooveRect, grooveColor, palette.color(QPalette::Window), first, last );
if( enabled )
{
@ -6587,7 +6587,7 @@ namespace Breeze
const qreal second( dialAngle( sliderOption, sliderOption->sliderPosition ) );
// render contents
_helper->renderDialContents( painter, grooveRect, highlight, first, second );
_helper->renderDialGroove( painter, grooveRect, highlight, palette.color(QPalette::Window), first, second );
}

Loading…
Cancel
Save