From aaec092454c94abaca3f368b0c824c9aa05876cd Mon Sep 17 00:00:00 2001 From: narunlifescience Date: Fri, 11 Sep 2015 08:16:54 -0500 Subject: [PATCH 1/4] Volume Pixmap render volume pixmap --- data/data.qrc | 1 - data/volumeslider-gradient.png | Bin 203 -> 384 bytes data/volumeslider-inset.png | Bin 707 -> 0 bytes src/widgets/sliderwidget.cpp | 25 ++++++++++++++++++++++++- src/widgets/sliderwidget.h | 1 + 5 files changed, 25 insertions(+), 2 deletions(-) delete mode 100644 data/volumeslider-inset.png diff --git a/data/data.qrc b/data/data.qrc index 346b6bf6ca..861f1ee9f5 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -408,7 +408,6 @@ volumeslider-gradient.png volumeslider-handle_glow.png volumeslider-handle.png - volumeslider-inset.png vk/add.png vk/bookmarks.png vk/delete.png diff --git a/data/volumeslider-gradient.png b/data/volumeslider-gradient.png index d6dfab83adb4c850e1098590e0addfb4c21009db..057253ba9519a1d3dc17f7ce4f0c47a8a069cb56 100644 GIT binary patch delta 368 zcmX@j*uXqNvYw5Bfg$k!zEwbqv%n*=n1O-s2naJy)#j6CU|=-zba4#HXncG9wVz0! zKK&D7M+n?=>%4LrX1ipcjJhehkp752QhIwd0i)qMWVM=B4Dy>cHi zZvW9~Jm-Z*bye`T4T+A+Z@yrfcFQE^l&RjAWiqccf@M=L3&j{}3vRfwYoGtS!o~gT zg=HSBu3x-HH{(qB$28_?QJ0Tjo7-2kQ2+P-z_JgV@7G35nLeZXK+yCy-<_9c7q!&Z z7`jxNzrQ){qE9B%G^?w#i@Lq{YP$c5+|zviSL7TG<8LVkg4ln>KRxzgebJi!^|8)V z%&U3&4^CdcCdl->A@p#TLLoW$<+M Kb6Mw<&;$UpkgG@l delta 186 zcmZo*KFv5mvYwfNfgw%NZw8QJNq6*hWMEi-!ko41C6F&!;u=vBoS#-wo>-L1;Fyx1 zl&avFo0y&&l$w}QS$Hzl2B?TFz$e7@KM*kdKNi6u2NYo}3GxeOaCmkj4al+cba4#v zIR5tRL0$#{5mv|B^_TnnIDX!9ER&jXP30-0vBL^Ur?aak>}%1_Vk45 ii)KEYzfi@qSoWnL^R+$O>mLG*V(@hJb6Mw<&;$UHyhE}8 diff --git a/data/volumeslider-inset.png b/data/volumeslider-inset.png deleted file mode 100644 index ca111093233318c4e549bfb71ce757b8adffd2c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmV;!0zCbRP)z6#*me`N9HS zAf6=P8f_em$A~c@A(sS%TrnhLisI?@v*-g8W(A^uf-nV+00Ebb2pBOUWJt(>DH9SB z6hFB^F~=Z)7ro;-3l?biNdKgac0p*>2?#A(OiYYIaYsZ-%G~7|27|Vz!O#N+_;?71 zS8%P-oHov8q17lrP)vCsA>{`tDMVE$93r7lAPWLz_GIC=@X% zw|ry9oFxDnauA1;VaReMT|#z;Sk?9c_~;@K^FYim5@w_gqq$FaniMKw?Tc0 zLiPy2y%mA7HdUiJkU|+-W)jzH*Cd6oJBK^&+6HwbpCXNPKg|<&$5^ zxLyRGfHXIiF2StUhV3}@I2fL6%RvDym@s9=(&Es_oH~Np?M0hfnnNP`jms$s^IWMa zf~7UY?w!O8 zWtVsLhF63hPmq>dR5K@A)6wTEnU*7N*^`kLYuKD)<=nUKYtw|hXuV1AjM_90zTu+f pfFJq%Us<&KZ=wV206V~g#vcYA#&3ZR^CJKN002ovPDHLkV1i+fHD&++ diff --git a/src/widgets/sliderwidget.cpp b/src/widgets/sliderwidget.cpp index c24bd8363d..2ecf474b41 100644 --- a/src/widgets/sliderwidget.cpp +++ b/src/widgets/sliderwidget.cpp @@ -195,7 +195,7 @@ Amarok::VolumeSlider::VolumeSlider(QWidget* parent, uint max) : Amarok::Slider(Qt::Horizontal, parent, max), m_animCount(0), m_animTimer(new QTimer(this)), - m_pixmapInset(QPixmap(":volumeslider-inset.png")) { + m_pixmapInset(QPixmap(volumePixmapDraw ())) { setFocusPolicy(Qt::NoFocus); // BEGIN Calculate handle animation pixmaps for mouse-over effect @@ -301,6 +301,8 @@ void Amarok::VolumeSlider::paintEvent(QPaintEvent*) { const int padding = 7; const int offset = int(double((width() - 2 * padding) * value()) / maximum()); + m_pixmapInset = volumePixmapDraw(); + p.drawPixmap(0, 0, m_pixmapGradient, 0, 0, offset + padding, 0); p.drawPixmap(0, 0, m_pixmapInset); p.drawPixmap(offset - m_handlePixmaps[0].width() / 2 + padding, 0, @@ -335,3 +337,24 @@ void Amarok::VolumeSlider::leaveEvent(QEvent*) { void Amarok::VolumeSlider::paletteChange(const QPalette&) { generateGradient(); } + +QPixmap Amarok::VolumeSlider::volumePixmapDraw () { + QPixmap pixmap (112, 36); + pixmap.fill(Qt::transparent); + QPainter painter( &pixmap ); + QPen pen(palette().color(QPalette::WindowText), 0.3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); + painter.setPen(pen); + painter.setRenderHint(QPainter::Antialiasing); + painter.setRenderHint(QPainter::SmoothPixmapTransform); + // Draw volume control pixmap + QPolygon poly; + poly << QPoint(6, 21) << QPoint(104, 21) + << QPoint(104, 7) << QPoint(6, 16) + << QPoint(6, 21); + QPainterPath path; + path.addPolygon(poly); + painter.drawPolygon(poly); + painter.drawLine(6, 29, 104, 29); + // Return QPixmap + return pixmap; +} diff --git a/src/widgets/sliderwidget.h b/src/widgets/sliderwidget.h index 68abd8119c..0b8e9d1c1a 100644 --- a/src/widgets/sliderwidget.h +++ b/src/widgets/sliderwidget.h @@ -98,6 +98,7 @@ class VolumeSlider : public Slider { public: VolumeSlider(QWidget* parent, uint max = 0); + QPixmap volumePixmapDraw(); protected: virtual void paintEvent(QPaintEvent*); From e269f7ae4066f4f9d80c0a44a231b08d958e0000 Mon Sep 17 00:00:00 2001 From: narunlifescience Date: Mon, 14 Sep 2015 07:38:07 -0500 Subject: [PATCH 2/4] const & format --- src/widgets/sliderwidget.cpp | 7 ++++--- src/widgets/sliderwidget.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/widgets/sliderwidget.cpp b/src/widgets/sliderwidget.cpp index 2ecf474b41..b2f92ab9ff 100644 --- a/src/widgets/sliderwidget.cpp +++ b/src/widgets/sliderwidget.cpp @@ -338,12 +338,13 @@ void Amarok::VolumeSlider::paletteChange(const QPalette&) { generateGradient(); } -QPixmap Amarok::VolumeSlider::volumePixmapDraw () { - QPixmap pixmap (112, 36); +QPixmap Amarok::VolumeSlider::volumePixmapDraw () const { + QPixmap pixmap(112, 36); pixmap.fill(Qt::transparent); - QPainter painter( &pixmap ); + QPainter painter(&pixmap); QPen pen(palette().color(QPalette::WindowText), 0.3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen); + painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint(QPainter::SmoothPixmapTransform); // Draw volume control pixmap diff --git a/src/widgets/sliderwidget.h b/src/widgets/sliderwidget.h index 0b8e9d1c1a..00823c0ac0 100644 --- a/src/widgets/sliderwidget.h +++ b/src/widgets/sliderwidget.h @@ -98,7 +98,7 @@ class VolumeSlider : public Slider { public: VolumeSlider(QWidget* parent, uint max = 0); - QPixmap volumePixmapDraw(); + QPixmap volumePixmapDraw() const; protected: virtual void paintEvent(QPaintEvent*); From af8cccc1cd0b7b0edd403d71096840ac16bfa1be Mon Sep 17 00:00:00 2001 From: narunlifescience Date: Tue, 15 Sep 2015 16:43:52 -0500 Subject: [PATCH 3/4] theme change check inside paint event --- src/widgets/sliderwidget.cpp | 7 ++++++- src/widgets/sliderwidget.h | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/widgets/sliderwidget.cpp b/src/widgets/sliderwidget.cpp index b2f92ab9ff..1c7071f456 100644 --- a/src/widgets/sliderwidget.cpp +++ b/src/widgets/sliderwidget.cpp @@ -198,6 +198,8 @@ Amarok::VolumeSlider::VolumeSlider(QWidget* parent, uint max) m_pixmapInset(QPixmap(volumePixmapDraw ())) { setFocusPolicy(Qt::NoFocus); + WindowText_color = palette().color(QPalette::WindowText); + // BEGIN Calculate handle animation pixmaps for mouse-over effect QImage pixmapHandle(":volumeslider-handle.png"); QImage pixmapHandleGlow(":volumeslider-handle_glow.png"); @@ -301,7 +303,10 @@ void Amarok::VolumeSlider::paintEvent(QPaintEvent*) { const int padding = 7; const int offset = int(double((width() - 2 * padding) * value()) / maximum()); - m_pixmapInset = volumePixmapDraw(); + if (WindowText_color != palette().color(QPalette::WindowText)) { + m_pixmapInset = volumePixmapDraw(); + WindowText_color = palette().color(QPalette::WindowText); + } p.drawPixmap(0, 0, m_pixmapGradient, 0, 0, offset + padding, 0); p.drawPixmap(0, 0, m_pixmapInset); diff --git a/src/widgets/sliderwidget.h b/src/widgets/sliderwidget.h index 00823c0ac0..218e42be98 100644 --- a/src/widgets/sliderwidget.h +++ b/src/widgets/sliderwidget.h @@ -130,6 +130,8 @@ class VolumeSlider : public Slider { QPixmap m_pixmapInset; QPixmap m_pixmapGradient; + QColor WindowText_color; + QList m_handlePixmaps; }; } From 785a7ee717f6c9c18035ec7bbe7ab1daa3c48371 Mon Sep 17 00:00:00 2001 From: narunlifescience Date: Wed, 16 Sep 2015 06:10:13 -0500 Subject: [PATCH 4/4] changed variable name & comments added --- src/widgets/sliderwidget.cpp | 8 +++++--- src/widgets/sliderwidget.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/widgets/sliderwidget.cpp b/src/widgets/sliderwidget.cpp index 1c7071f456..ac4f724c4d 100644 --- a/src/widgets/sliderwidget.cpp +++ b/src/widgets/sliderwidget.cpp @@ -198,7 +198,8 @@ Amarok::VolumeSlider::VolumeSlider(QWidget* parent, uint max) m_pixmapInset(QPixmap(volumePixmapDraw ())) { setFocusPolicy(Qt::NoFocus); - WindowText_color = palette().color(QPalette::WindowText); + // Store window text color to check theme change at paintEvent + m_previous_theme_text_color = palette().color(QPalette::WindowText); // BEGIN Calculate handle animation pixmaps for mouse-over effect QImage pixmapHandle(":volumeslider-handle.png"); @@ -303,9 +304,10 @@ void Amarok::VolumeSlider::paintEvent(QPaintEvent*) { const int padding = 7; const int offset = int(double((width() - 2 * padding) * value()) / maximum()); - if (WindowText_color != palette().color(QPalette::WindowText)) { + // If theme changed since last paintEvent, redraw the volume pixmap with new theme colors + if (m_previous_theme_text_color != palette().color(QPalette::WindowText)) { m_pixmapInset = volumePixmapDraw(); - WindowText_color = palette().color(QPalette::WindowText); + m_previous_theme_text_color = palette().color(QPalette::WindowText); } p.drawPixmap(0, 0, m_pixmapGradient, 0, 0, offset + padding, 0); diff --git a/src/widgets/sliderwidget.h b/src/widgets/sliderwidget.h index 218e42be98..4243cbd59e 100644 --- a/src/widgets/sliderwidget.h +++ b/src/widgets/sliderwidget.h @@ -130,7 +130,7 @@ class VolumeSlider : public Slider { QPixmap m_pixmapInset; QPixmap m_pixmapGradient; - QColor WindowText_color; + QColor m_previous_theme_text_color; QList m_handlePixmaps; };