source: smplayer/trunk/src/mpcgui/mpcstyles.cpp

Last change on this file was 181, checked in by Silvan Scherrer, 9 years ago

smplayer: update trunk to version 16.8.0

  • Property svn:eol-style set to LF
File size: 9.9 KB
RevLine 
[93]1/* Mpcgui for SMPlayer.
2 Copyright (C) 2008 matt_ <matt@endboss.org>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*/
18
19#include "mpcstyles.h"
20
[181]21#include <QProxyStyle>
[93]22#include <QStyleOptionToolBar>
23#include <QSlider>
24#include <QPainter>
[181]25#include <qdrawutil.h>
[93]26
27void
28MpcToolbarStyle::drawControl(ControlElement control, const QStyleOption *option,
29 QPainter *painter, const QWidget *widget) const
30{
31 if(control == CE_ToolBar)
32 {
33 if (const QStyleOptionToolBar *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) {
34 QRect rect = option->rect;
35
36 if( toolbar->toolBarArea == Qt::BottomToolBarArea &&
37 toolbar->positionOfLine == QStyleOptionToolBar::End )
38 {
39 painter->setPen(QPen(option->palette.light().color()));
40 painter->drawLine(rect.topLeft().x(),
41 rect.topLeft().y(),
42 rect.topRight().x(),
43 rect.topRight().y());
44
45 painter->setPen(QPen(option->palette.light().color()));
46 painter->drawLine(rect.topLeft().x(),
47 rect.topLeft().y(),
48 rect.bottomLeft().x(),
49 rect.bottomLeft().y());
50
51 painter->setPen(QPen(option->palette.dark().color()));
52 painter->drawLine(rect.topRight().x(),
53 rect.topRight().y(),
54 rect.bottomRight().x(),
55 rect.bottomRight().y());
56
57 }
58 else if( toolbar->toolBarArea == Qt::BottomToolBarArea &&
59 toolbar->positionOfLine == QStyleOptionToolBar::Beginning )
60 {
61 painter->setPen(QPen(option->palette.light().color()));
62 painter->drawLine(rect.topLeft().x(),
63 rect.topLeft().y(),
64 rect.bottomLeft().x(),
65 rect.bottomLeft().y());
66
67 painter->setPen(QPen(option->palette.dark().color()));
68 painter->drawLine(rect.topRight().x(),
69 rect.topRight().y(),
70 rect.bottomRight().x(),
71 rect.bottomRight().y());
72
73 painter->setPen(QPen(option->palette.dark().color()));
74 painter->drawLine(rect.bottomLeft().x(),
75 rect.bottomLeft().y(),
76 rect.bottomRight().x(),
77 rect.bottomRight().y());
78 }
79 else
80 {
[181]81 QProxyStyle::drawControl(control,toolbar, painter, widget);
[93]82 }
83 }
84 }
85 else
86 {
[181]87 QProxyStyle::drawControl(control,option, painter, widget);
[93]88 }
89}
90
91// draw custom slider + handle for volume widget
92void MpcVolumeSlideStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
93 QPainter *p, const QWidget *widget) const
94{
95 if( cc == CC_Slider )
96 {
97 if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
98 QRect groove = subControlRect(CC_Slider, slider, SC_SliderGroove, widget);
99 QRect handle = subControlRect(CC_Slider, slider, SC_SliderHandle, widget);
100
101 if ((slider->subControls & SC_SliderGroove) && groove.isValid()) {
102
103 p->setPen(slider->palette.shadow().color());
104 if (slider->orientation == Qt::Horizontal) {
105 static QPoint points[3] = {
106 QPoint(groove.x() , groove.y() + slider->rect.height() ),
107 QPoint(groove.x() + groove.width() -2 , groove.y() + slider->rect.height() ),
108 QPoint(groove.x() + groove.width() -2 , groove.y() ),
109 };
110 QPen oldPen = p->pen();
[181]111
[93]112 p->setPen(slider->palette.dark().color());
113 p->drawLine(QPoint(points[0].x(), points[0].y() -2 ),QPoint(points[2].x(), points[2].y()));
114
115 QPoint b[3] = { QPoint(points[0].x(),points[0].y()-1), QPoint(points[1].x()-1, points[1].y()-1), QPoint(points[2].x()-1,points[2].y()) };
116 p->setPen(slider->palette.light().color());
117 p->drawPolyline(b, 3);
118 p->setPen(oldPen);
119 }
120 }
121
122
123 if (slider->subControls & SC_SliderTickmarks) {
124 QStyleOptionSlider tmpSlider = *slider;
125 tmpSlider.subControls = SC_SliderTickmarks;
126 QCommonStyle::drawComplexControl(cc, &tmpSlider, p, widget);
127 }
128
129 if (slider->subControls & SC_SliderHandle) {
[181]130 /*
[93]131 const QColor c0 = slider->palette.shadow().color();
132 const QColor c1 = slider->palette.dark().color();
133 // const QColor c2 = g.button();
134 const QColor c3 = slider->palette.midlight().color();
135 const QColor c4 = slider->palette.light().color();
[181]136 */
[93]137 QBrush handleBrush;
138
139 if (slider->state & State_Enabled) {
140 handleBrush = slider->palette.color(QPalette::Button);
141 } else {
142 handleBrush = QBrush(slider->palette.color(QPalette::Button),
143 Qt::Dense4Pattern);
144 }
145
146
147 int x = handle.x() , y = handle.y(),
148 wi = handle.width() - 2, he = slider->rect.height();
149
150 if (slider->state & State_HasFocus) {
151 QStyleOptionFocusRect fropt;
152 fropt.QStyleOption::operator=(*slider);
153 fropt.rect = subElementRect(SE_SliderFocusRect, slider, widget);
154 drawPrimitive(PE_FrameFocusRect, &fropt, p, widget);
155 }
156
157 Qt::BGMode oldMode = p->backgroundMode();
158 p->setBackgroundMode(Qt::OpaqueMode);
159 qDrawWinButton(p, QRect(x, y, wi, he), slider->palette, false,
160 &handleBrush);
161 p->setBackgroundMode(oldMode);
162
163 }
164 }
165 }
166 else
167 {
[181]168 QProxyStyle::drawComplexControl(cc,opt,p,widget);
[93]169 }
170}
171
172// draw custom slider + handle for timeslide widget
173void MpcTimeSlideStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
174 QPainter *p, const QWidget *widget) const
175{
176 if( cc == CC_Slider )
177 {
178 if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
179 QRect groove = subControlRect(CC_Slider, slider, SC_SliderGroove, widget);
180 QRect handle = subControlRect(CC_Slider, slider, SC_SliderHandle, widget);
181
182 if ((slider->subControls & SC_SliderGroove) && groove.isValid()) {
183 if (slider->orientation == Qt::Horizontal) {
184 int x = groove.x() + 2;
185 int y = slider->rect.height() / 2 - 4;
186 int w = groove.width() - 4;
187 int h = 7;
188 qDrawShadeRect (p,x,y,w,h, slider->palette, true,1,0,
189 &slider->palette.brush(QPalette::Light));
190 }
191 }
192
193
194 if (slider->subControls & SC_SliderTickmarks) {
195 QStyleOptionSlider tmpSlider = *slider;
196 tmpSlider.subControls = SC_SliderTickmarks;
197 QCommonStyle::drawComplexControl(cc, &tmpSlider, p, widget);
198 }
199
200 if (slider->subControls & SC_SliderHandle) {
[181]201 /*
[93]202 const QColor c0 = slider->palette.shadow().color();
203 const QColor c1 = slider->palette.dark().color();
204 // const QColor c2 = g.button();
205 const QColor c3 = slider->palette.midlight().color();
206 const QColor c4 = slider->palette.light().color();
[181]207 */
[93]208 QBrush handleBrush;
209
210 if (slider->state & State_Enabled) {
211 handleBrush = slider->palette.color(QPalette::Button);
212 } else {
213 handleBrush = QBrush(slider->palette.color(QPalette::Button),
214 Qt::Dense4Pattern);
215 }
216
217
218 int x = handle.x() , y = handle.y() + 1,
219 wi = 13, he = 14;
220
221 if (slider->state & State_HasFocus) {
222 QStyleOptionFocusRect fropt;
223 fropt.QStyleOption::operator=(*slider);
224 fropt.rect = subElementRect(SE_SliderFocusRect, slider, widget);
225 drawPrimitive(PE_FrameFocusRect, &fropt, p, widget);
226 }
227
228 Qt::BGMode oldMode = p->backgroundMode();
229 p->setBackgroundMode(Qt::OpaqueMode);
230 qDrawWinPanel(p, QRect(x, y, wi, he), slider->palette, false,
231 &handleBrush);
232 qDrawShadeRect (p, QRect(x+2,y+3, wi-4, he-6), slider->palette, true,1,0,
233 &slider->palette.brush(QPalette::Light));
234 p->setBackgroundMode(oldMode);
235 }
236 }
237 }
238 else
239 {
[181]240 QProxyStyle::drawComplexControl(cc,opt,p,widget);
[93]241 }
242}
243
[139]244#include "moc_mpcstyles.cpp"
Note: See TracBrowser for help on using the repository browser.