From 00f2195dd2e6fac30fb0a02b47d019994c9d6e5a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Tue, 6 Sep 2011 05:14:45 +0200 Subject: [PATCH] * Cleaned up StyleHelper and use it in ContextWidget. --- src/libtomahawk/CMakeLists.txt | 1 - src/libtomahawk/context/ContextWidget.cpp | 2 +- src/libtomahawk/utils/stylehelper.cpp | 124 +++++++++++++--------- src/libtomahawk/utils/stylehelper.h | 6 +- 4 files changed, 77 insertions(+), 56 deletions(-) diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 58db2f135..507d43c44 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -377,7 +377,6 @@ set( libHeaders utils/spotifyparser.h utils/rdioparser.h utils/shortenedlinkparser.h - utils/stylehelper.h widgets/querylabel.h widgets/animatedcounterlabel.h diff --git a/src/libtomahawk/context/ContextWidget.cpp b/src/libtomahawk/context/ContextWidget.cpp index c0d143025..452c99064 100644 --- a/src/libtomahawk/context/ContextWidget.cpp +++ b/src/libtomahawk/context/ContextWidget.cpp @@ -92,7 +92,7 @@ ContextWidget::ContextWidget( QWidget* parent ) setFixedHeight( m_minHeight ); QPalette pal = palette(); - pal.setBrush( QPalette::Window, QColor( 0x70, 0x70, 0x70 ) ); + pal.setBrush( QPalette::Window, StyleHelper::headerLowerColor() ); setPalette( pal ); connect( ui->toggleButton, SIGNAL( clicked() ), SLOT( toggleSize() ) ); diff --git a/src/libtomahawk/utils/stylehelper.cpp b/src/libtomahawk/utils/stylehelper.cpp index 7583c5b76..b3d3787a0 100644 --- a/src/libtomahawk/utils/stylehelper.cpp +++ b/src/libtomahawk/utils/stylehelper.cpp @@ -22,22 +22,30 @@ #include #include -QColor StyleHelper::headerUpperColor() + +QColor +StyleHelper::headerUpperColor() { return QColor( 80, 80, 80 ); } -QColor StyleHelper::headerLowerColor() + +QColor +StyleHelper::headerLowerColor() { return QColor( 72, 72, 72 ); } -QColor StyleHelper::headerHighlightColor() + +QColor +StyleHelper::headerHighlightColor() { return QColor( "#333" ); } -void StyleHelper::horizontalHeader(QPainter *painter, const QRect &r) + +void +StyleHelper::horizontalHeader( QPainter* painter, const QRect& r ) { QRect upperHalf( 0, 0, r.width(), r.height() / 2 ); QRect lowerHalf( 0, upperHalf.height(), r.width(), r.height() ); @@ -58,7 +66,9 @@ void StyleHelper::horizontalHeader(QPainter *painter, const QRect &r) } } -QColor StyleHelper::headerTextColor() + +QColor +StyleHelper::headerTextColor() { return Qt::white; } @@ -71,40 +81,46 @@ QColor StyleHelper::headerTextColor() * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). * Contact: Nokia Corporation (qt-info@nokia.com) */ -void StyleHelper::drawArrow(QStyle::PrimitiveElement element, QPainter *p, const QStyleOption *opt) +void StyleHelper::drawArrow( QStyle::PrimitiveElement element, QPainter* p, const QStyleOption* opt ) { - - if (opt->rect.width() <= 1 || opt->rect.height() <= 1) + if ( opt->rect.width() <= 1 || opt->rect.height() <= 1 ) return; + QRect r = opt->rect; - int size = qMin(r.height(), r.width()); + int size = qMin( r.height(), r.width() ); QPixmap pixmap; QString pixmapName; - pixmapName.sprintf("arrow-%s-%d-%d-%d-%lld", - "$qt_ia", - uint(opt->state), element, - size, opt->palette.cacheKey()); - if (!QPixmapCache::find(pixmapName, pixmap)) { - int border = size/5; - int sqsize = 2*(size/2); - QImage image(sqsize, sqsize, QImage::Format_ARGB32); - image.fill(0); - QPainter imagePainter(&image); - imagePainter.setRenderHint(QPainter::Antialiasing, true); + + pixmapName.sprintf( "arrow-%s-%d-%d-%d-%lld", "$qt_ia", uint(opt->state), element, size, opt->palette.cacheKey() ); + if ( !QPixmapCache::find( pixmapName, pixmap) ) + { + int border = size / 5; + int sqsize = 2 * ( size / 2 ); + + QImage image( sqsize, sqsize, QImage::Format_ARGB32 ); + image.fill( 0 ); + QPainter imagePainter( &image ); + imagePainter.setRenderHint( QPainter::Antialiasing, true ); QPolygon a; - switch (element) { + + switch ( element ) + { case QStyle::PE_IndicatorArrowUp: - a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize - border, sqsize/2); + a.setPoints( 3, border, sqsize / 2, sqsize / 2, border, sqsize - border, sqsize / 2 ); break; + case QStyle::PE_IndicatorArrowDown: - a.setPoints(3, border, sqsize/2, sqsize/2, sqsize - border, sqsize - border, sqsize/2); + a.setPoints( 3, border, sqsize / 2, sqsize / 2, sqsize - border, sqsize - border, sqsize / 2 ); break; + case QStyle::PE_IndicatorArrowRight: - a.setPoints(3, sqsize - border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border); + a.setPoints( 3, sqsize - border, sqsize / 2, sqsize / 2, border, sqsize / 2, sqsize - border ); break; + case QStyle::PE_IndicatorArrowLeft: - a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border); + a.setPoints( 3, border, sqsize / 2, sqsize / 2, border, sqsize / 2, sqsize - border ); break; + default: break; } @@ -112,40 +128,46 @@ void StyleHelper::drawArrow(QStyle::PrimitiveElement element, QPainter *p, const int bsx = 0; int bsy = 0; - if (opt->state & QStyle::State_Sunken) { - bsx = qApp->style()->pixelMetric(QStyle::PM_ButtonShiftHorizontal); - bsy = qApp->style()->pixelMetric(QStyle::PM_ButtonShiftVertical); + if ( opt->state & QStyle::State_Sunken ) + { + bsx = qApp->style()->pixelMetric( QStyle::PM_ButtonShiftHorizontal ); + bsy = qApp->style()->pixelMetric( QStyle::PM_ButtonShiftVertical ); } QRect bounds = a.boundingRect(); int sx = sqsize / 2 - bounds.center().x() - 1; int sy = sqsize / 2 - bounds.center().y() - 1; - imagePainter.translate(sx + bsx, sy + bsy); - imagePainter.setPen(opt->palette.buttonText().color()); - imagePainter.setBrush(opt->palette.buttonText()); + imagePainter.translate( sx + bsx, sy + bsy ); + imagePainter.setPen( opt->palette.buttonText().color() ); + imagePainter.setBrush( opt->palette.buttonText() ); - if (!(opt->state & QStyle::State_Enabled)) { - QColor foreGround(150, 150, 150, 150); - imagePainter.setBrush(opt->palette.mid().color()); - imagePainter.setPen(opt->palette.mid().color()); - } else { - QColor shadow(0, 0, 0, 100); - imagePainter.translate(0, 1); - imagePainter.setPen(shadow); - imagePainter.setBrush(shadow); - QColor foreGround(255, 255, 255, 210); - imagePainter.drawPolygon(a); - imagePainter.translate(0, -1); - imagePainter.setPen(foreGround); - imagePainter.setBrush(foreGround); + if ( !( opt->state & QStyle::State_Enabled ) ) + { + QColor foreGround( 150, 150, 150, 150 ); + imagePainter.setBrush( opt->palette.mid().color() ); + imagePainter.setPen( opt->palette.mid().color() ); + } + else + { + QColor shadow( 0, 0, 0, 100 ); + imagePainter.translate( 0, 1 ); + imagePainter.setPen( shadow ); + imagePainter.setBrush( shadow ); + QColor foreGround( 255, 255, 255, 210 ); + imagePainter.drawPolygon( a ); + imagePainter.translate( 0, -1 ); + imagePainter.setPen( foreGround ); + imagePainter.setBrush( foreGround ); } - imagePainter.drawPolygon(a); + imagePainter.drawPolygon( a ); imagePainter.end(); - pixmap = QPixmap::fromImage(image); - QPixmapCache::insert(pixmapName, pixmap); + + pixmap = QPixmap::fromImage( image ); + QPixmapCache::insert( pixmapName, pixmap ); } - int xOffset = r.x() + (r.width() - size)/2; - int yOffset = r.y() + (r.height() - size)/2; - p->drawPixmap(xOffset, yOffset, pixmap); + + int xOffset = r.x() + ( r.width() - size ) / 2; + int yOffset = r.y() + ( r.height() - size ) / 2; + p->drawPixmap( xOffset, yOffset, pixmap ); } diff --git a/src/libtomahawk/utils/stylehelper.h b/src/libtomahawk/utils/stylehelper.h index 9f69fe6f6..586de8602 100644 --- a/src/libtomahawk/utils/stylehelper.h +++ b/src/libtomahawk/utils/stylehelper.h @@ -19,7 +19,6 @@ #ifndef STYLEHELPER_H #define STYLEHELPER_H - #include #include #include @@ -55,14 +54,15 @@ public: /** * Draws a header background on a painter with the specified rectangle */ - static void horizontalHeader(QPainter *painter, const QRect &rect); + static void horizontalHeader( QPainter* painter, const QRect& rect ); + /** * Draws a styled arrow that looks good on a Header (from qwindowstyle.cpp) * \copyright { Licensed under the GPL v3+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). * Contact: Nokia Corporation (qt-info@nokia.com) } */ - static void drawArrow(QStyle::PrimitiveElement, QPainter *painter, const QStyleOption *opt); + static void drawArrow( QStyle::PrimitiveElement, QPainter* painter, const QStyleOption* opt ); }; #endif // STYLEHELPER_H