author | drw <drw> | 2005-04-14 18:30:23 (UTC) |
---|---|---|
committer | drw <drw> | 2005-04-14 18:30:23 (UTC) |
commit | 5fd266a3a5a6d9a1acb9c38e4802ff06ba38beaf (patch) (unidiff) | |
tree | d4ba8a948d876db9bbff10cbd282fd16aab91feb | |
parent | 7a3b813cc3bfbb2f7c31f347c35405851e82aecf (diff) | |
download | opie-5fd266a3a5a6d9a1acb9c38e4802ff06ba38beaf.zip opie-5fd266a3a5a6d9a1acb9c38e4802ff06ba38beaf.tar.gz opie-5fd266a3a5a6d9a1acb9c38e4802ff06ba38beaf.tar.bz2 |
More icon sizing updates
-rw-r--r-- | core/launcher/launchertab.cpp | 24 | ||||
-rw-r--r-- | core/settings/launcher/menusettings.cpp | 44 | ||||
-rw-r--r-- | libopie2/opieui/otabbar.cpp | 50 | ||||
-rw-r--r-- | libopie2/opieui/otabbar.h | 46 | ||||
-rw-r--r-- | libopie2/opieui/otabwidget.cpp | 1 | ||||
-rw-r--r-- | noncore/styles/flat/flat.cpp | 18 | ||||
-rw-r--r-- | noncore/styles/fresh/fresh.cpp | 18 | ||||
-rw-r--r-- | noncore/styles/liquid/liquid.cpp | 129 | ||||
-rw-r--r-- | noncore/styles/phase/phasestyle.cpp | 14 | ||||
-rw-r--r-- | noncore/styles/theme/othemestyle.cpp | 53 | ||||
-rw-r--r-- | noncore/styles/web/webstyle.cpp | 126 | ||||
-rw-r--r-- | noncore/styles/web/webstyle.h | 2 |
12 files changed, 338 insertions, 187 deletions
diff --git a/core/launcher/launchertab.cpp b/core/launcher/launchertab.cpp index 710f259..72ebf59 100644 --- a/core/launcher/launchertab.cpp +++ b/core/launcher/launchertab.cpp | |||
@@ -1,281 +1,285 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "launchertab.h" | 20 | #include "launchertab.h" |
21 | #include <qapplication.h> | 21 | #include <qapplication.h> |
22 | 22 | ||
23 | 23 | ||
24 | LauncherTabBar::LauncherTabBar( QWidget *parent, const char *name ) | 24 | LauncherTabBar::LauncherTabBar( QWidget *parent, const char *name ) |
25 | : QTabBar( parent, name ) | 25 | : QTabBar( parent, name ) |
26 | { | 26 | { |
27 | setFocusPolicy( NoFocus ); | 27 | setFocusPolicy( NoFocus ); |
28 | connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) ); | 28 | connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) ); |
29 | } | 29 | } |
30 | 30 | ||
31 | LauncherTabBar::~LauncherTabBar() | 31 | LauncherTabBar::~LauncherTabBar() |
32 | { | 32 | { |
33 | } | 33 | } |
34 | 34 | ||
35 | void LauncherTabBar::insertTab( LauncherTab *t, int index ) | 35 | void LauncherTabBar::insertTab( LauncherTab *t, int index ) |
36 | { | 36 | { |
37 | if ( index < 0 ) | 37 | if ( index < 0 ) |
38 | items.append( t ); | 38 | items.append( t ); |
39 | else | 39 | else |
40 | items.insert( (uint)index, t ); | 40 | items.insert( (uint)index, t ); |
41 | tabs.insert( t->type, t ); | 41 | tabs.insert( t->type, t ); |
42 | QTabBar::insertTab( t, index ); | 42 | QTabBar::insertTab( t, index ); |
43 | } | 43 | } |
44 | 44 | ||
45 | void LauncherTabBar::removeTab( QTab *tab ) | 45 | void LauncherTabBar::removeTab( QTab *tab ) |
46 | { | 46 | { |
47 | LauncherTab *t = (LauncherTab *)tab; | 47 | LauncherTab *t = (LauncherTab *)tab; |
48 | tabs.remove( t->type ); | 48 | tabs.remove( t->type ); |
49 | items.remove( t ); | 49 | items.remove( t ); |
50 | QTabBar::removeTab( t ); | 50 | QTabBar::removeTab( t ); |
51 | } | 51 | } |
52 | 52 | ||
53 | void LauncherTabBar::prevTab() | 53 | void LauncherTabBar::prevTab() |
54 | { | 54 | { |
55 | int n = count(); | 55 | int n = count(); |
56 | int tab = currentTab(); | 56 | int tab = currentTab(); |
57 | if ( tab >= 0 ) | 57 | if ( tab >= 0 ) |
58 | setCurrentTab( (tab - 1 + n)%n ); | 58 | setCurrentTab( (tab - 1 + n)%n ); |
59 | } | 59 | } |
60 | 60 | ||
61 | void LauncherTabBar::nextTab() | 61 | void LauncherTabBar::nextTab() |
62 | { | 62 | { |
63 | int n = count(); | 63 | int n = count(); |
64 | int tab = currentTab(); | 64 | int tab = currentTab(); |
65 | setCurrentTab( (tab + 1)%n ); | 65 | setCurrentTab( (tab + 1)%n ); |
66 | } | 66 | } |
67 | 67 | ||
68 | void LauncherTabBar::showTab( const QString& id ) | 68 | void LauncherTabBar::showTab( const QString& id ) |
69 | { | 69 | { |
70 | setCurrentTab( tabs[id] ); | 70 | setCurrentTab( tabs[id] ); |
71 | } | 71 | } |
72 | 72 | ||
73 | void LauncherTabBar::layoutTabs() | 73 | void LauncherTabBar::layoutTabs() |
74 | { | 74 | { |
75 | if ( !count() ) | 75 | if ( !count() ) |
76 | return; | 76 | return; |
77 | 77 | ||
78 | int available = width()-1; | 78 | int available = width()-1; |
79 | 79 | ||
80 | QFontMetrics fm = fontMetrics(); | 80 | QFontMetrics fm = fontMetrics(); |
81 | int hiddenTabWidth = -12; | 81 | int hiddenTabWidth = -12; |
82 | LauncherTab *current = currentLauncherTab(); | 82 | LauncherTab *current = currentLauncherTab(); |
83 | int hframe, vframe, overlap; | 83 | int hframe, vframe, overlap; |
84 | style().tabbarMetrics( this, hframe, vframe, overlap ); | 84 | style().tabbarMetrics( this, hframe, vframe, overlap ); |
85 | int x = 0; | 85 | int x = 0; |
86 | QRect r; | 86 | QRect r; |
87 | LauncherTab *t; | 87 | LauncherTab *t; |
88 | QListIterator< LauncherTab > it( items ); | 88 | QListIterator< LauncherTab > it( items ); |
89 | int required = 0; | 89 | int required = 0; |
90 | int eventabwidth = (width()-1)/count(); | 90 | int eventabwidth = (width()-1)/count(); |
91 | enum Mode { HideBackText, Pack, Even } mode=Even; | 91 | enum Mode { HideBackText, Pack, Even } mode=Even; |
92 | for (it.toFirst(); it.current(); ++it ) { | 92 | for (it.toFirst(); it.current(); ++it ) { |
93 | t = it.current(); | 93 | t = it.current(); |
94 | if ( !t ) | 94 | if ( !t ) |
95 | continue; | 95 | continue; |
96 | int iw = fm.width( t->text() ) + hframe - overlap; | 96 | int iw = fm.width( t->text() ) + hframe - overlap; |
97 | if ( t != current ) { | 97 | if ( t != current ) { |
98 | available -= hiddenTabWidth + hframe - overlap; | 98 | available -= hiddenTabWidth + hframe - overlap; |
99 | if ( t->iconSet() != 0 ) | 99 | if ( t->iconSet() != 0 ) |
100 | available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 100 | available -= t->iconSet()->pixmap().width(); |
101 | } | 101 | } |
102 | if ( t->iconSet() != 0 ) | 102 | if ( t->iconSet() != 0 ) |
103 | iw += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 103 | iw += t->iconSet()->pixmap().width(); |
104 | required += iw; | 104 | required += iw; |
105 | // As space gets tight, packed looks better than even. "10" must be at least 0. | 105 | // As space gets tight, packed looks better than even. "10" must be at least 0. |
106 | if ( iw >= eventabwidth-10 ) | 106 | if ( iw >= eventabwidth-10 ) |
107 | mode = Pack; | 107 | mode = Pack; |
108 | } | 108 | } |
109 | if ( mode == Pack && required > width()-1 ) | 109 | if ( mode == Pack && required > width()-1 ) |
110 | mode = HideBackText; | 110 | mode = HideBackText; |
111 | for ( it.toFirst(); it.current(); ++it ) { | 111 | for ( it.toFirst(); it.current(); ++it ) { |
112 | t = it.current(); | 112 | t = it.current(); |
113 | if ( !t ) | 113 | if ( !t ) |
114 | continue; | 114 | continue; |
115 | if ( mode != HideBackText ) { | 115 | if ( mode != HideBackText ) { |
116 | int w = fm.width( t->text() ); | 116 | int w = fm.width( t->text() ); |
117 | int ih = 0; | 117 | int ih = 0; |
118 | if ( t->iconSet() != 0 ) { | 118 | if ( t->iconSet() != 0 ) { |
119 | w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 119 | w += t->iconSet()->pixmap().width(); |
120 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 120 | ih = t->iconSet()->pixmap().height(); |
121 | } | 121 | } |
122 | int h = QMAX( fm.height(), ih ); | 122 | int h = QMAX( fm.height(), ih ); |
123 | h = QMAX( h, QApplication::globalStrut().height() ); | 123 | h = QMAX( h, QApplication::globalStrut().height() ); |
124 | 124 | ||
125 | h += vframe; | 125 | h += vframe; |
126 | w += hframe; | 126 | w += hframe; |
127 | 127 | ||
128 | QRect totr(x, 0, | 128 | QRect totr(x, 0, |
129 | mode == Even ? eventabwidth : w * (width()-1)/required, h); | 129 | mode == Even ? eventabwidth : w * (width()-1)/required, h); |
130 | t->setRect(totr); | 130 | t->setRect(totr); |
131 | x += totr.width() - overlap; | 131 | x += totr.width() - overlap; |
132 | r = r.unite(totr); | 132 | r = r.unite(totr); |
133 | } else if ( t != current ) { | 133 | } else if ( t != current ) { |
134 | int w = hiddenTabWidth; | 134 | int w = hiddenTabWidth; |
135 | int ih = 0; | 135 | int ih = 0; |
136 | if ( t->iconSet() != 0 ) { | 136 | if ( t->iconSet() != 0 ) { |
137 | w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 137 | w += t->iconSet()->pixmap().width(); |
138 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 138 | ih = t->iconSet()->pixmap().height(); |
139 | } | 139 | } |
140 | int h = QMAX( fm.height(), ih ); | 140 | int h = QMAX( fm.height(), ih ); |
141 | h = QMAX( h, QApplication::globalStrut().height() ); | 141 | h = QMAX( h, QApplication::globalStrut().height() ); |
142 | 142 | ||
143 | h += vframe; | 143 | h += vframe; |
144 | w += hframe; | 144 | w += hframe; |
145 | 145 | ||
146 | t->setRect( QRect(x, 0, w, h) ); | 146 | t->setRect( QRect(x, 0, w, h) ); |
147 | x += t->rect().width() - overlap; | 147 | x += t->rect().width() - overlap; |
148 | r = r.unite( t->rect() ); | 148 | r = r.unite( t->rect() ); |
149 | } else { | 149 | } else { |
150 | int ih = 0; | 150 | int ih = 0; |
151 | if ( t->iconSet() != 0 ) { | 151 | if ( t->iconSet() != 0 ) { |
152 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 152 | ih = t->iconSet()->pixmap().height(); |
153 | } | 153 | } |
154 | int h = QMAX( fm.height(), ih ); | 154 | int h = QMAX( fm.height(), ih ); |
155 | h = QMAX( h, QApplication::globalStrut().height() ); | 155 | h = QMAX( h, QApplication::globalStrut().height() ); |
156 | 156 | ||
157 | h += vframe; | 157 | h += vframe; |
158 | 158 | ||
159 | t->setRect( QRect(x, 0, available, h) ); | 159 | t->setRect( QRect(x, 0, available, h) ); |
160 | x += t->rect().width() - overlap; | 160 | x += t->rect().width() - overlap; |
161 | r = r.unite( t->rect() ); | 161 | r = r.unite( t->rect() ); |
162 | } | 162 | } |
163 | } | 163 | } |
164 | 164 | ||
165 | t = it.toLast(); | 165 | t = it.toLast(); |
166 | if (t) { | 166 | if (t) { |
167 | QRect rr = t->rect(); | 167 | QRect rr = t->rect(); |
168 | rr.setRight(width()-1); | 168 | rr.setRight(width()-1); |
169 | t->setRect( rr ); | 169 | t->setRect( rr ); |
170 | } | 170 | } |
171 | 171 | ||
172 | for (it.toFirst(); it.current(); ++it ) { | 172 | for (it.toFirst(); it.current(); ++it ) { |
173 | t = it.current(); | 173 | t = it.current(); |
174 | QRect tr = t->rect(); | 174 | QRect tr = t->rect(); |
175 | tr.setHeight( r.height() ); | 175 | tr.setHeight( r.height() ); |
176 | t->setRect( tr ); | 176 | t->setRect( tr ); |
177 | } | 177 | } |
178 | 178 | ||
179 | update(); | 179 | update(); |
180 | } | 180 | } |
181 | 181 | ||
182 | void LauncherTabBar::paint( QPainter * p, QTab * t, bool selected ) const | 182 | void LauncherTabBar::paint( QPainter * p, QTab * t, bool selected ) const |
183 | { | 183 | { |
184 | LauncherTabBar *that = (LauncherTabBar *) this; | 184 | LauncherTabBar *that = (LauncherTabBar *) this; |
185 | LauncherTab *ct = (LauncherTab *)t; | 185 | LauncherTab *ct = (LauncherTab *)t; |
186 | QPalette pal = palette(); | 186 | QPalette pal = palette(); |
187 | bool setPal = FALSE; | 187 | bool setPal = FALSE; |
188 | if ( ct->bgColor.isValid() ) { | 188 | if ( ct->bgColor.isValid() ) { |
189 | pal.setColor( QPalette::Active, QColorGroup::Background, ct->bgColor ); | 189 | pal.setColor( QPalette::Active, QColorGroup::Background, ct->bgColor ); |
190 | pal.setColor( QPalette::Active, QColorGroup::Button, ct->bgColor ); | 190 | pal.setColor( QPalette::Active, QColorGroup::Button, ct->bgColor ); |
191 | pal.setColor( QPalette::Inactive, QColorGroup::Background, ct->bgColor ); | 191 | pal.setColor( QPalette::Inactive, QColorGroup::Background, ct->bgColor ); |
192 | pal.setColor( QPalette::Inactive, QColorGroup::Button, ct->bgColor ); | 192 | pal.setColor( QPalette::Inactive, QColorGroup::Button, ct->bgColor ); |
193 | that->setUpdatesEnabled( FALSE ); | 193 | that->setUpdatesEnabled( FALSE ); |
194 | that->setPalette( pal ); | 194 | that->setPalette( pal ); |
195 | setPal = TRUE; | 195 | setPal = TRUE; |
196 | } | 196 | } |
197 | #if QT_VERSION >= 0x030000 | 197 | #if QT_VERSION >= 0x030000 |
198 | QStyle::SFlags flags = QStyle::Style_Default; | 198 | QStyle::SFlags flags = QStyle::Style_Default; |
199 | if ( selected ) | 199 | if ( selected ) |
200 | flags |= QStyle::Style_Selected; | 200 | flags |= QStyle::Style_Selected; |
201 | style().drawControl( QStyle::CE_TabBarTab, p, this, t->rect(), | 201 | style().drawControl( QStyle::CE_TabBarTab, p, this, t->rect(), |
202 | colorGroup(), flags, QStyleOption(t) ); | 202 | colorGroup(), flags, QStyleOption(t) ); |
203 | #else | 203 | #else |
204 | style().drawTab( p, this, t, selected ); | 204 | style().drawTab( p, this, t, selected ); |
205 | #endif | 205 | #endif |
206 | 206 | ||
207 | QRect r( t->rect() ); | 207 | QRect r( t->rect() ); |
208 | QFont f( font() ); | 208 | QFont f( font() ); |
209 | if ( selected ) | 209 | if ( selected ) |
210 | f.setBold( TRUE ); | 210 | f.setBold( TRUE ); |
211 | p->setFont( f ); | 211 | p->setFont( f ); |
212 | 212 | ||
213 | if ( ct->fgColor.isValid() ) { | 213 | if ( ct->fgColor.isValid() ) { |
214 | pal.setColor( QPalette::Active, QColorGroup::Foreground, ct->fgColor ); | 214 | pal.setColor( QPalette::Active, QColorGroup::Foreground, ct->fgColor ); |
215 | pal.setColor( QPalette::Inactive, QColorGroup::Foreground, ct->fgColor ); | 215 | pal.setColor( QPalette::Inactive, QColorGroup::Foreground, ct->fgColor ); |
216 | that->setUpdatesEnabled( FALSE ); | 216 | that->setUpdatesEnabled( FALSE ); |
217 | that->setPalette( pal ); | 217 | that->setPalette( pal ); |
218 | setPal = TRUE; | 218 | setPal = TRUE; |
219 | } | 219 | } |
220 | int iw = 0; | 220 | int iw = 0; |
221 | int ih = 0; | 221 | int ih = 0; |
222 | if ( t->iconSet() != 0 ) { | 222 | if ( t->iconSet() != 0 ) { |
223 | iw = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 2; | 223 | iw = t->iconSet()->pixmap().width() + 2; |
224 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 224 | ih = t->iconSet()->pixmap().height(); |
225 | } | 225 | } |
226 | int w = iw + p->fontMetrics().width( t->text() ) + 4; | 226 | int w = iw + p->fontMetrics().width( t->text() ) + 4; |
227 | int h = QMAX(p->fontMetrics().height() + 4, ih ); | 227 | int h = QMAX(p->fontMetrics().height() + 4, ih ); |
228 | paintLabel( p, QRect( r.left() + (r.width()-w)/2 - 3, | 228 | paintLabel( p, QRect( r.left() + (r.width()-w)/2 - 3, |
229 | r.top() + (r.height()-h)/2, w, h ), t, | 229 | r.top() + (r.height()-h)/2, w, h ), t, |
230 | #if QT_VERSION >= 0x030000 | 230 | #if QT_VERSION >= 0x030000 |
231 | t->identifier() == keyboardFocusTab() | 231 | t->identifier() == keyboardFocusTab() |
232 | #else | 232 | #else |
233 | t->identitifer() == keyboardFocusTab() | 233 | t->identitifer() == keyboardFocusTab() |
234 | #endif | 234 | #endif |
235 | ); | 235 | ); |
236 | if ( setPal ) { | 236 | if ( setPal ) { |
237 | that->unsetPalette(); | 237 | that->unsetPalette(); |
238 | that->setUpdatesEnabled( TRUE ); | 238 | that->setUpdatesEnabled( TRUE ); |
239 | } | 239 | } |
240 | } | 240 | } |
241 | 241 | ||
242 | void LauncherTabBar::paintLabel( QPainter* p, const QRect&, | 242 | void LauncherTabBar::paintLabel( QPainter* p, const QRect&, |
243 | QTab* t, bool has_focus ) const | 243 | QTab* t, bool has_focus ) const |
244 | { | 244 | { |
245 | QRect r = t->rect(); | 245 | QRect r = t->rect(); |
246 | // if ( t->id != currentTab() ) | 246 | // if ( t->id != currentTab() ) |
247 | //r.moveBy( 1, 1 ); | 247 | //r.moveBy( 1, 1 ); |
248 | // | 248 | // |
249 | if ( t->iconSet() ) { | 249 | if ( t->iconSet() ) { |
250 | // the tab has an iconset, draw it in the right mode | 250 | // the tab has an iconset, draw it in the right mode |
251 | QIconSet::Mode mode = (t->isEnabled() && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; | 251 | QIconSet::Mode mode = (t->isEnabled() && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; |
252 | if ( mode == QIconSet::Normal && has_focus ) | 252 | if ( mode == QIconSet::Normal && has_focus ) |
253 | mode = QIconSet::Active; | 253 | mode = QIconSet::Active; |
254 | QPixmap pixmap = t->iconSet()->pixmap( QIconSet::Small, mode ); | 254 | QPixmap pixmap; |
255 | if ( mode == QIconSet::Disabled ) | ||
256 | pixmap = t->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
257 | else | ||
258 | pixmap = t->iconSet()->pixmap(); | ||
255 | int pixw = pixmap.width(); | 259 | int pixw = pixmap.width(); |
256 | int pixh = pixmap.height(); | 260 | int pixh = pixmap.height(); |
257 | p->drawPixmap( r.left() + 6, r.center().y() - pixh / 2 + 1, pixmap ); | 261 | p->drawPixmap( r.left() + 6, r.center().y() - pixh / 2 + 1, pixmap ); |
258 | r.setLeft( r.left() + pixw + 5 ); | 262 | r.setLeft( r.left() + pixw + 5 ); |
259 | } | 263 | } |
260 | 264 | ||
261 | QRect tr = r; | 265 | QRect tr = r; |
262 | 266 | ||
263 | if ( r.width() < 20 ) | 267 | if ( r.width() < 20 ) |
264 | return; | 268 | return; |
265 | 269 | ||
266 | if ( t->isEnabled() && isEnabled() ) { | 270 | if ( t->isEnabled() && isEnabled() ) { |
267 | #if defined(_WS_WIN32_) | 271 | #if defined(_WS_WIN32_) |
268 | if ( colorGroup().brush( QColorGroup::Button ) == colorGroup().brush( QColorGroup::Background ) ) | 272 | if ( colorGroup().brush( QColorGroup::Button ) == colorGroup().brush( QColorGroup::Background ) ) |
269 | p->setPen( colorGroup().buttonText() ); | 273 | p->setPen( colorGroup().buttonText() ); |
270 | else | 274 | else |
271 | p->setPen( colorGroup().foreground() ); | 275 | p->setPen( colorGroup().foreground() ); |
272 | #else | 276 | #else |
273 | p->setPen( colorGroup().foreground() ); | 277 | p->setPen( colorGroup().foreground() ); |
274 | #endif | 278 | #endif |
275 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); | 279 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); |
276 | } else { | 280 | } else { |
277 | p->setPen( palette().disabled().foreground() ); | 281 | p->setPen( palette().disabled().foreground() ); |
278 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); | 282 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); |
279 | } | 283 | } |
280 | } | 284 | } |
281 | 285 | ||
diff --git a/core/settings/launcher/menusettings.cpp b/core/settings/launcher/menusettings.cpp index 55bf358..29ce841 100644 --- a/core/settings/launcher/menusettings.cpp +++ b/core/settings/launcher/menusettings.cpp | |||
@@ -1,178 +1,178 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> | 3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> |
4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This file is free software; you can | 6 | _;:, .> :=|. This file is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; either version 2 of the License, |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : or (at your option) any later version. |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This file is distributed in the hope that | 13 | .i_,=:_. -<s. This file is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
18 | ..}^=.= = ; Public License for more details. | 18 | ..}^=.= = ; Public License for more details. |
19 | ++= -. .` .: | 19 | ++= -. .` .: |
20 | : = ...= . :.=- You should have received a copy of the GNU | 20 | : = ...= . :.=- You should have received a copy of the GNU |
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "menusettings.h" | 29 | #include "menusettings.h" |
30 | 30 | ||
31 | #include <qpe/config.h> | 31 | #include <qpe/config.h> |
32 | #include <qpe/qlibrary.h> | 32 | #include <qpe/qlibrary.h> |
33 | #include <qpe/qpeapplication.h> | 33 | #include <qpe/qpeapplication.h> |
34 | #include <qpe/menuappletinterface.h> | 34 | #include <qpe/menuappletinterface.h> |
35 | #include <qpe/qcopenvelope_qws.h> | 35 | #include <qpe/qcopenvelope_qws.h> |
36 | 36 | ||
37 | #include <qdir.h> | 37 | #include <qdir.h> |
38 | #include <qlistview.h> | 38 | #include <qlistview.h> |
39 | #include <qcheckbox.h> | 39 | #include <qcheckbox.h> |
40 | #include <qheader.h> | 40 | #include <qheader.h> |
41 | #include <qlayout.h> | 41 | #include <qlayout.h> |
42 | #include <qlabel.h> | 42 | #include <qlabel.h> |
43 | #include <qwhatsthis.h> | 43 | #include <qwhatsthis.h> |
44 | 44 | ||
45 | #include <stdlib.h> | 45 | #include <stdlib.h> |
46 | 46 | ||
47 | 47 | ||
48 | MenuSettings::MenuSettings ( QWidget *parent, const char *name ) | 48 | MenuSettings::MenuSettings ( QWidget *parent, const char *name ) |
49 | : QWidget ( parent, name ) | 49 | : QWidget ( parent, name ) |
50 | { | 50 | { |
51 | m_applets_changed = false; | 51 | m_applets_changed = false; |
52 | 52 | ||
53 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); | 53 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); |
54 | 54 | ||
55 | QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this ); | 55 | QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this ); |
56 | lay-> addWidget ( l ); | 56 | lay-> addWidget ( l ); |
57 | 57 | ||
58 | m_list = new QListView ( this ); | 58 | m_list = new QListView ( this ); |
59 | m_list-> addColumn ( "foobar" ); | 59 | m_list-> addColumn ( "foobar" ); |
60 | m_list-> header ( )-> hide ( ); | 60 | m_list-> header ( )-> hide ( ); |
61 | 61 | ||
62 | lay-> addWidget ( m_list ); | 62 | lay-> addWidget ( m_list ); |
63 | 63 | ||
64 | m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this ); | 64 | m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this ); |
65 | lay-> addWidget ( m_menutabs ); | 65 | lay-> addWidget ( m_menutabs ); |
66 | 66 | ||
67 | m_menusubpopup = new QCheckBox ( tr( "Show Applications in Subpopups" ), this ); | 67 | m_menusubpopup = new QCheckBox ( tr( "Show Applications in Subpopups" ), this ); |
68 | lay-> addWidget ( m_menusubpopup ); | 68 | lay-> addWidget ( m_menusubpopup ); |
69 | 69 | ||
70 | QWhatsThis::add ( m_list, tr( "Check the applets that you want to have included in the O-Menu." )); | 70 | QWhatsThis::add ( m_list, tr( "Check the applets that you want to have included in the O-Menu." )); |
71 | QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher Tabs as menus in the O-Menu." )); | 71 | QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher Tabs as menus in the O-Menu." )); |
72 | 72 | ||
73 | connect ( m_list, SIGNAL( clicked(QListViewItem*)), this, SLOT( appletChanged())); | 73 | connect ( m_list, SIGNAL( clicked(QListViewItem*)), this, SLOT( appletChanged())); |
74 | 74 | ||
75 | init ( ); | 75 | init ( ); |
76 | } | 76 | } |
77 | 77 | ||
78 | void MenuSettings::init ( ) | 78 | void MenuSettings::init ( ) |
79 | { | 79 | { |
80 | Config cfg ( "StartMenu" ); | 80 | Config cfg ( "StartMenu" ); |
81 | cfg. setGroup ( "Applets" ); | 81 | cfg. setGroup ( "Applets" ); |
82 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); | 82 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); |
83 | 83 | ||
84 | QString path = QPEApplication::qpeDir ( ) + "plugins/applets"; | 84 | QString path = QPEApplication::qpeDir ( ) + "plugins/applets"; |
85 | #ifdef Q_OS_MACX | 85 | #ifdef Q_OS_MACX |
86 | QStringList list = QDir ( path, "lib*.dylib" ). entryList ( ); | 86 | QStringList list = QDir ( path, "lib*.dylib" ). entryList ( ); |
87 | #else | 87 | #else |
88 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); | 88 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); |
89 | #endif /* Q_OS_MACX */ | 89 | #endif /* Q_OS_MACX */ |
90 | 90 | ||
91 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { | 91 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { |
92 | QString name; | 92 | QString name; |
93 | QPixmap icon; | 93 | QPixmap icon; |
94 | MenuAppletInterface *iface = 0; | 94 | MenuAppletInterface *iface = 0; |
95 | 95 | ||
96 | QLibrary *lib = new QLibrary ( path + "/" + *it ); | 96 | QLibrary *lib = new QLibrary ( path + "/" + *it ); |
97 | lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface ); | 97 | lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface ); |
98 | if ( iface ) { | 98 | if ( iface ) { |
99 | QString lang = getenv( "LANG" ); | 99 | QString lang = getenv( "LANG" ); |
100 | QTranslator *trans = new QTranslator ( qApp ); | 100 | QTranslator *trans = new QTranslator ( qApp ); |
101 | QString type = (*it). left ((*it). find (".")); | 101 | QString type = (*it). left ((*it). find (".")); |
102 | QString tfn = QPEApplication::qpeDir ( ) + "i18n/" + lang + "/" + type + ".qm"; | 102 | QString tfn = QPEApplication::qpeDir ( ) + "i18n/" + lang + "/" + type + ".qm"; |
103 | if ( trans-> load ( tfn )) | 103 | if ( trans-> load ( tfn )) |
104 | qApp-> installTranslator ( trans ); | 104 | qApp-> installTranslator ( trans ); |
105 | else | 105 | else |
106 | delete trans; | 106 | delete trans; |
107 | name = iface-> name ( ); | 107 | name = iface-> name ( ); |
108 | icon = iface-> icon ( ). pixmap ( QIconSet::Small, QIconSet::Normal ); | 108 | icon = iface-> icon ( ). pixmap (); |
109 | iface-> release ( ); | 109 | iface-> release ( ); |
110 | lib-> unload ( ); | 110 | lib-> unload ( ); |
111 | 111 | ||
112 | QCheckListItem *item; | 112 | QCheckListItem *item; |
113 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); | 113 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); |
114 | if ( !icon. isNull ( )) | 114 | if ( !icon. isNull ( )) |
115 | item-> setPixmap ( 0, icon ); | 115 | item-> setPixmap ( 0, icon ); |
116 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); | 116 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); |
117 | m_applets [*it] = item; | 117 | m_applets [*it] = item; |
118 | } else { | 118 | } else { |
119 | delete lib; | 119 | delete lib; |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | cfg. setGroup ( "Menu" ); | 123 | cfg. setGroup ( "Menu" ); |
124 | m_menutabs->setChecked( cfg.readBoolEntry( "LauncherTabs", true ) ); | 124 | m_menutabs->setChecked( cfg.readBoolEntry( "LauncherTabs", true ) ); |
125 | m_menusubpopup->setChecked( cfg.readBoolEntry( "LauncherSubPopup", true ) ); | 125 | m_menusubpopup->setChecked( cfg.readBoolEntry( "LauncherSubPopup", true ) ); |
126 | m_menusubpopup->setEnabled( m_menutabs->isChecked() ); | 126 | m_menusubpopup->setEnabled( m_menutabs->isChecked() ); |
127 | connect( m_menutabs, SIGNAL( stateChanged(int) ), m_menusubpopup, SLOT( setEnabled(bool) ) ); | 127 | connect( m_menutabs, SIGNAL( stateChanged(int) ), m_menusubpopup, SLOT( setEnabled(bool) ) ); |
128 | 128 | ||
129 | } | 129 | } |
130 | 130 | ||
131 | void MenuSettings::appletChanged() | 131 | void MenuSettings::appletChanged() |
132 | { | 132 | { |
133 | m_applets_changed = true; | 133 | m_applets_changed = true; |
134 | } | 134 | } |
135 | 135 | ||
136 | void MenuSettings::accept ( ) | 136 | void MenuSettings::accept ( ) |
137 | { | 137 | { |
138 | bool apps_changed = false; | 138 | bool apps_changed = false; |
139 | 139 | ||
140 | Config cfg ( "StartMenu" ); | 140 | Config cfg ( "StartMenu" ); |
141 | cfg. setGroup ( "Applets" ); | 141 | cfg. setGroup ( "Applets" ); |
142 | if ( m_applets_changed ) { | 142 | if ( m_applets_changed ) { |
143 | QStringList exclude; | 143 | QStringList exclude; |
144 | QMap <QString, QCheckListItem *>::Iterator it; | 144 | QMap <QString, QCheckListItem *>::Iterator it; |
145 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { | 145 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { |
146 | if ( !(*it)-> isOn ( )) | 146 | if ( !(*it)-> isOn ( )) |
147 | exclude << it. key ( ); | 147 | exclude << it. key ( ); |
148 | } | 148 | } |
149 | cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); | 149 | cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); |
150 | } | 150 | } |
151 | cfg. writeEntry ( "SafeMode", false ); | 151 | cfg. writeEntry ( "SafeMode", false ); |
152 | 152 | ||
153 | cfg. setGroup ( "Menu" ); | 153 | cfg. setGroup ( "Menu" ); |
154 | 154 | ||
155 | if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) { | 155 | if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) { |
156 | apps_changed = true; | 156 | apps_changed = true; |
157 | cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( )); | 157 | cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( )); |
158 | } | 158 | } |
159 | 159 | ||
160 | if ( m_menusubpopup-> isChecked ( ) != cfg. readBoolEntry ( "LauncherSubPopup", true )) { | 160 | if ( m_menusubpopup-> isChecked ( ) != cfg. readBoolEntry ( "LauncherSubPopup", true )) { |
161 | apps_changed = true; | 161 | apps_changed = true; |
162 | cfg. writeEntry ( "LauncherSubPopup", m_menusubpopup-> isChecked ( )); | 162 | cfg. writeEntry ( "LauncherSubPopup", m_menusubpopup-> isChecked ( )); |
163 | } | 163 | } |
164 | 164 | ||
165 | cfg. write ( ); | 165 | cfg. write ( ); |
166 | 166 | ||
167 | if ( m_applets_changed ) { | 167 | if ( m_applets_changed ) { |
168 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); | 168 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); |
169 | m_applets_changed = false; | 169 | m_applets_changed = false; |
170 | } | 170 | } |
171 | if ( apps_changed ) { | 171 | if ( apps_changed ) { |
172 | // currently use reloadApplets() since reloadApps is now used exclusive for server | 172 | // currently use reloadApplets() since reloadApps is now used exclusive for server |
173 | // to refresh the tabs. But what we want here is also a refresh of the startmenu entries | 173 | // to refresh the tabs. But what we want here is also a refresh of the startmenu entries |
174 | QCopEnvelope ( "QPE/TaskBar", "reloadApps()" ); | 174 | QCopEnvelope ( "QPE/TaskBar", "reloadApps()" ); |
175 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); | 175 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); |
176 | } | 176 | } |
177 | } | 177 | } |
178 | 178 | ||
diff --git a/libopie2/opieui/otabbar.cpp b/libopie2/opieui/otabbar.cpp index a62e18b..dc5df42 100644 --- a/libopie2/opieui/otabbar.cpp +++ b/libopie2/opieui/otabbar.cpp | |||
@@ -1,83 +1,87 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> | 4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <opie2/otabbar.h> | 32 | #include <opie2/otabbar.h> |
33 | 33 | ||
34 | #include <qpe/applnk.h> | ||
35 | |||
36 | #include <stdio.h> | ||
37 | |||
34 | using namespace Opie::Ui; | 38 | using namespace Opie::Ui; |
35 | 39 | ||
36 | OTabBar::OTabBar( QWidget *parent , const char *name ) | 40 | OTabBar::OTabBar( QWidget *parent , const char *name ) |
37 | :QTabBar( parent, name ) | 41 | :QTabBar( parent, name ) |
38 | {} | 42 | {} |
39 | 43 | ||
40 | void OTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const | 44 | void OTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const |
41 | { | 45 | { |
42 | 46 | ||
43 | QRect r = br; | 47 | QRect r = br; |
44 | if ( t->iconset) | 48 | if ( t->iconset) |
45 | { | 49 | { |
46 | QIconSet::Mode mode = (t->enabled && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; | 50 | QIconSet::Mode mode = (t->enabled && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; |
47 | if ( mode == QIconSet::Normal && has_focus ) | 51 | if ( mode == QIconSet::Normal && has_focus ) |
48 | { | 52 | { |
49 | mode = QIconSet::Active; | 53 | mode = QIconSet::Active; |
50 | } | 54 | } |
51 | QPixmap pixmap = t->iconset->pixmap( QIconSet::Small, mode ); | 55 | QPixmap pixmap = t->iconset->pixmap(); |
52 | int pixw = pixmap.width(); | 56 | int pixw = pixmap.width(); |
53 | int pixh = pixmap.height(); | 57 | int pixh = pixmap.height(); |
54 | r.setLeft( r.left() + pixw + 2 ); | 58 | r.setLeft( r.left() + pixw + 2 ); |
55 | p->drawPixmap( br.left()+2, br.center().y()-pixh/2, pixmap ); | 59 | p->drawPixmap( br.left()+2, br.center().y()-pixh/2, pixmap ); |
56 | } | 60 | } |
57 | 61 | ||
58 | QRect tr = r; | 62 | QRect tr = r; |
59 | if ( t->id == currentTab() ) | 63 | if ( t->id == currentTab() ) |
60 | { | 64 | { |
61 | tr.setBottom( tr.bottom() - style().defaultFrameWidth() ); | 65 | tr.setBottom( tr.bottom() - style().defaultFrameWidth() ); |
62 | } | 66 | } |
63 | 67 | ||
64 | if ( t->enabled && isEnabled() ) | 68 | if ( t->enabled && isEnabled() ) |
65 | { | 69 | { |
66 | p->setPen( colorGroup().foreground() ); | 70 | p->setPen( colorGroup().foreground() ); |
67 | p->drawText( tr, AlignCenter | ShowPrefix, t->label ); | 71 | p->drawText( tr, AlignCenter | ShowPrefix, t->label ); |
68 | } | 72 | } |
69 | else if ( style() == MotifStyle ) | 73 | else if ( style() == MotifStyle ) |
70 | { | 74 | { |
71 | p->setPen( palette().disabled().foreground() ); | 75 | p->setPen( palette().disabled().foreground() ); |
72 | p->drawText( tr, AlignCenter | ShowPrefix, t->label ); | 76 | p->drawText( tr, AlignCenter | ShowPrefix, t->label ); |
73 | } | 77 | } |
74 | else | 78 | else |
75 | { | 79 | { |
76 | p->setPen( colorGroup().light() ); | 80 | p->setPen( colorGroup().light() ); |
77 | QRect wr = tr; | 81 | QRect wr = tr; |
78 | wr.moveBy( 1, 1 ); | 82 | wr.moveBy( 1, 1 ); |
79 | p->drawText( wr, AlignCenter | ShowPrefix, t->label ); | 83 | p->drawText( wr, AlignCenter | ShowPrefix, t->label ); |
80 | p->setPen( palette().disabled().foreground() ); | 84 | p->setPen( palette().disabled().foreground() ); |
81 | p->drawText( tr, AlignCenter | ShowPrefix, t->label ); | 85 | p->drawText( tr, AlignCenter | ShowPrefix, t->label ); |
82 | } | 86 | } |
83 | } | 87 | } |
diff --git a/libopie2/opieui/otabbar.h b/libopie2/opieui/otabbar.h index 925ae96..1044bdd 100644 --- a/libopie2/opieui/otabbar.h +++ b/libopie2/opieui/otabbar.h | |||
@@ -1,86 +1,86 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> | 4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #ifndef OTABBAR_H | 32 | #ifndef OTABBAR_H |
33 | #define OTABBAR_H | 33 | #define OTABBAR_H |
34 | 34 | ||
35 | /* QT */ | 35 | /* QT */ |
36 | #include <qtabbar.h> | 36 | #include <qtabbar.h> |
37 | 37 | ||
38 | namespace Opie { | 38 | namespace Opie { |
39 | namespace Ui { | 39 | namespace Ui { |
40 | 40 | ||
41 | /** | 41 | /** |
42 | * @class OTabBar | 42 | * @class OTabBar |
43 | * @brief The OTabBar class is a derivative of QTabBar. | 43 | * @brief The OTabBar class is a derivative of QTabBar. |
44 | * | 44 | * |
45 | * OTabBar is a derivation of TrollTech's QTabBar which provides | 45 | * OTabBar is a derivation of TrollTech's QTabBar which provides |
46 | * a row of tabs for selection. The only difference between this | 46 | * a row of tabs for selection. The only difference between this |
47 | * class and QTabBar is that there is no dotted line box around | 47 | * class and QTabBar is that there is no dotted line box around |
48 | * the label of the tab with the current focus. | 48 | * the label of the tab with the current focus. |
49 | */ | 49 | */ |
50 | class OTabBar : public QTabBar | 50 | class OTabBar : public QTabBar |
51 | { | 51 | { |
52 | Q_OBJECT | 52 | Q_OBJECT |
53 | 53 | ||
54 | public: | 54 | public: |
55 | /** | 55 | /** |
56 | * @fn OTabBar( QWidget *parent = 0, const char *name = 0 ) | 56 | * @fn OTabBar( QWidget *parent = 0, const char *name = 0 ) |
57 | * @brief Object constructor. | 57 | * @brief Object constructor. |
58 | * | 58 | * |
59 | * @param parent Pointer to parent of this control. | 59 | * @param parent Pointer to parent of this control. |
60 | * @param name Name of control. | 60 | * @param name Name of control. |
61 | * | 61 | * |
62 | * Constructs a new OTabBar control with parent and name. | 62 | * Constructs a new OTabBar control with parent and name. |
63 | */ | 63 | */ |
64 | OTabBar( QWidget * = 0, const char * = 0 ); | 64 | OTabBar( QWidget * = 0, const char * = 0 ); |
65 | 65 | ||
66 | protected: | 66 | protected: |
67 | /** | 67 | /** |
68 | * @fn paintLabel( QPainter* p, const QRect& br , QTab* t, bool has_focus)const | 68 | * @fn paintLabel( QPainter* p, const QRect& br , QTab* t, bool has_focus)const |
69 | * @brief Internal function to draw a tab's label. | 69 | * @brief Internal function to draw a tab's label. |
70 | * | 70 | * |
71 | * @param p Pointer to QPainter used for drawing. | 71 | * @param p Pointer to QPainter used for drawing. |
72 | * @param br QRect providing region to draw label in. | 72 | * @param br QRect providing region to draw label in. |
73 | * @param t Tab to draw label for. | 73 | * @param t Tab to draw label for. |
74 | * @param has_focus Boolean value not used, retained for compatibility reasons. | 74 | * @param has_focus Boolean value not used, retained for compatibility reasons. |
75 | */ | 75 | */ |
76 | void paintLabel( QPainter *, const QRect &, QTab *, bool ) const; | 76 | void paintLabel( QPainter *, const QRect &, QTab *, bool ) const; |
77 | 77 | ||
78 | private: | 78 | private: |
79 | class Private; | 79 | class Private; |
80 | Private *d; | 80 | Private *d; |
81 | }; | 81 | }; |
82 | 82 | ||
83 | } | 83 | } |
84 | } | 84 | } |
85 | 85 | ||
86 | #endif | 86 | #endif |
diff --git a/libopie2/opieui/otabwidget.cpp b/libopie2/opieui/otabwidget.cpp index 7333f5e..d617a9c 100644 --- a/libopie2/opieui/otabwidget.cpp +++ b/libopie2/opieui/otabwidget.cpp | |||
@@ -1,476 +1,475 @@ | |||
1 | /* | 1 | /* |
2 | Â Â Â Â Â Â Â Â This file is part of the Opie Project | 2 | Â Â Â Â Â Â Â Â This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (C) 2002, 2005 Dan Williams <drw@handhelds.org> | 4 | Copyright (C) 2002, 2005 Dan Williams <drw@handhelds.org> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | Â Â Â Â Â Â .>+-= | 7 | Â Â Â Â Â Â .>+-= |
8 | Â _;:, Â Â .> Â Â :=|. This program is free software; you can | 8 | Â _;:, Â Â .> Â Â :=|. This program is free software; you can |
9 | .> <`_, Â > Â . Â <= redistribute it and/or modify it under | 9 | .> <`_, Â > Â . Â <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- Â : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- Â : the terms of the GNU Library General Public |
11 | .="- .-=="i, Â Â .._ License as published by the Free Software | 11 | .="- .-=="i, Â Â .._ License as published by the Free Software |
12 | Â - . Â .-<_> Â Â .<> Foundation; either version 2 of the License, | 12 | Â - . Â .-<_> Â Â .<> Foundation; either version 2 of the License, |
13 | Â Â Â ._= =} Â Â Â : or (at your option) any later version. | 13 | Â Â Â ._= =} Â Â Â : or (at your option) any later version. |
14 | Â Â .%`+i> Â Â Â _;_. | 14 | Â Â .%`+i> Â Â Â _;_. |
15 | Â Â .i_,=:_. Â Â Â -<s. This program is distributed in the hope that | 15 | Â Â .i_,=:_. Â Â Â -<s. This program is distributed in the hope that |
16 | Â Â Â + Â . Â -:. Â Â Â = it will be useful, but WITHOUT ANY WARRANTY; | 16 | Â Â Â + Â . Â -:. Â Â Â = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. Â Â .:, Â Â . . . without even the implied warranty of | 17 | : .. Â Â .:, Â Â . . . without even the implied warranty of |
18 | Â Â =_ Â Â Â Â + Â Â =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | Â Â =_ Â Â Â Â + Â Â =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | Â _.=:. Â Â Â : Â Â :=>`: PARTICULAR PURPOSE. See the GNU | 19 | Â _.=:. Â Â Â : Â Â :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= Â Â Â = Â Â Â ; Library General Public License for more | 20 | ..}^=.= Â Â Â = Â Â Â ; Library General Public License for more |
21 | ++= Â -. Â Â .` Â Â .: details. | 21 | ++= Â -. Â Â .` Â Â .: details. |
22 | : Â Â = Â ...= . :.=- | 22 | : Â Â = Â ...= . :.=- |
23 | Â -. Â .:....=;==+<; You should have received a copy of the GNU | 23 | Â -. Â .:....=;==+<; You should have received a copy of the GNU |
24 | Â -_. . . Â )=. Â = Library General Public License along with | 24 | Â -_. . . Â )=. Â = Library General Public License along with |
25 | Â Â -- Â Â Â Â :-=` this library; see the file COPYING.LIB. | 25 | Â Â -- Â Â Â Â :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include <opie2/otabwidget.h> | 31 | #include <opie2/otabwidget.h> |
32 | 32 | ||
33 | /* OPIE */ | 33 | /* OPIE */ |
34 | #include <opie2/oresource.h> | 34 | #include <opie2/oresource.h> |
35 | #include <opie2/otabbar.h> | 35 | #include <opie2/otabbar.h> |
36 | 36 | ||
37 | #include <qpe/applnk.h> | ||
38 | #include <qpe/config.h> | 37 | #include <qpe/config.h> |
39 | 38 | ||
40 | /* QT */ | 39 | /* QT */ |
41 | #include <qcombobox.h> | 40 | #include <qcombobox.h> |
42 | #include <qwidgetstack.h> | 41 | #include <qwidgetstack.h> |
43 | 42 | ||
44 | using namespace Opie::Ui; | 43 | using namespace Opie::Ui; |
45 | 44 | ||
46 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) | 45 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) |
47 | : QWidget( parent, name ) | 46 | : QWidget( parent, name ) |
48 | , m_currTab( 0l ) | 47 | , m_currTab( 0l ) |
49 | , m_tabBarStyle( Global ) | 48 | , m_tabBarStyle( Global ) |
50 | , m_tabBarPosition( Top ) | 49 | , m_tabBarPosition( Top ) |
51 | , m_usingTabs( true ) | 50 | , m_usingTabs( true ) |
52 | , m_tabBar( 0l ) | 51 | , m_tabBar( 0l ) |
53 | , m_tabList( 0l ) | 52 | , m_tabList( 0l ) |
54 | { | 53 | { |
55 | if ( s == Global ) | 54 | if ( s == Global ) |
56 | { | 55 | { |
57 | // Read Opie global settings for style and position | 56 | // Read Opie global settings for style and position |
58 | Config config( "qpe" ); | 57 | Config config( "qpe" ); |
59 | config.setGroup( "Appearance" ); | 58 | config.setGroup( "Appearance" ); |
60 | 59 | ||
61 | // Style | 60 | // Style |
62 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); | 61 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); |
63 | if ( s <= Global || s > IconList) | 62 | if ( s <= Global || s > IconList) |
64 | s = IconTab; | 63 | s = IconTab; |
65 | 64 | ||
66 | // Position | 65 | // Position |
67 | ( config.readEntry( "TabPosition", "Top" ) == "Bottom" ) ? p = Bottom | 66 | ( config.readEntry( "TabPosition", "Top" ) == "Bottom" ) ? p = Bottom |
68 | : p = Top; | 67 | : p = Top; |
69 | } | 68 | } |
70 | 69 | ||
71 | // Initialize widget stack for tab widgets | 70 | // Initialize widget stack for tab widgets |
72 | m_widgetStack = new QWidgetStack( this ); | 71 | m_widgetStack = new QWidgetStack( this ); |
73 | m_widgetStack->setFrameStyle( QFrame::NoFrame ); | 72 | m_widgetStack->setFrameStyle( QFrame::NoFrame ); |
74 | m_widgetStack->setLineWidth( style().defaultFrameWidth() ); | 73 | m_widgetStack->setLineWidth( style().defaultFrameWidth() ); |
75 | 74 | ||
76 | // Set initial selector control style and position | 75 | // Set initial selector control style and position |
77 | setTabStyle( s ); | 76 | setTabStyle( s ); |
78 | setTabPosition( p ); | 77 | setTabPosition( p ); |
79 | } | 78 | } |
80 | 79 | ||
81 | OTabWidget::~OTabWidget() | 80 | OTabWidget::~OTabWidget() |
82 | { | 81 | { |
83 | m_tabs.setAutoDelete( true ); | 82 | m_tabs.setAutoDelete( true ); |
84 | m_tabs.clear(); | 83 | m_tabs.clear(); |
85 | } | 84 | } |
86 | 85 | ||
87 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) | 86 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) |
88 | { | 87 | { |
89 | int tabid = -1; | 88 | int tabid = -1; |
90 | 89 | ||
91 | if ( m_usingTabs ) | 90 | if ( m_usingTabs ) |
92 | { | 91 | { |
93 | // Create new tab in tab bar | 92 | // Create new tab in tab bar |
94 | QTab *tab = new QTab(); | 93 | QTab *tab = new QTab(); |
95 | 94 | ||
96 | // Set label (and icon if necessary) | 95 | // Set label (and icon if necessary) |
97 | if ( m_tabBarStyle == IconTab ) | 96 | if ( m_tabBarStyle == IconTab ) |
98 | { | 97 | { |
99 | tab->label = QString::null; | 98 | tab->label = QString::null; |
100 | tab->iconset = new QIconSet( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ) ); | 99 | tab->iconset = new QIconSet( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ) ); |
101 | } | 100 | } |
102 | else | 101 | else |
103 | tab->label = label; | 102 | tab->label = label; |
104 | 103 | ||
105 | tabid = m_tabBar->addTab( tab ); | 104 | tabid = m_tabBar->addTab( tab ); |
106 | } | 105 | } |
107 | else | 106 | else |
108 | { | 107 | { |
109 | // Insert entry (with icon if necessary) into drop down list | 108 | // Insert entry (with icon if necessary) into drop down list |
110 | if ( m_tabBarStyle == IconList ) | 109 | if ( m_tabBarStyle == IconList ) |
111 | m_tabList->insertItem( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ), label, -1 ); | 110 | m_tabList->insertItem( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ), label, -1 ); |
112 | else | 111 | else |
113 | m_tabList->insertItem( label ); | 112 | m_tabList->insertItem( label ); |
114 | } | 113 | } |
115 | 114 | ||
116 | // Add widget to stack | 115 | // Add widget to stack |
117 | m_widgetStack->addWidget( child, tabid ); | 116 | m_widgetStack->addWidget( child, tabid ); |
118 | m_widgetStack->raiseWidget( child ); | 117 | m_widgetStack->raiseWidget( child ); |
119 | m_widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); | 118 | m_widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); |
120 | 119 | ||
121 | // Keep track of tab information | 120 | // Keep track of tab information |
122 | OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); | 121 | OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); |
123 | m_tabs.append( tabinfo ); | 122 | m_tabs.append( tabinfo ); |
124 | 123 | ||
125 | // Make newly added tab the current one displayed | 124 | // Make newly added tab the current one displayed |
126 | selectTab( tabinfo ); | 125 | selectTab( tabinfo ); |
127 | } | 126 | } |
128 | 127 | ||
129 | void OTabWidget::removePage( QWidget *childwidget ) | 128 | void OTabWidget::removePage( QWidget *childwidget ) |
130 | { | 129 | { |
131 | if ( childwidget ) | 130 | if ( childwidget ) |
132 | { | 131 | { |
133 | // Find tab information for desired widget | 132 | // Find tab information for desired widget |
134 | OTabInfo *tab = m_tabs.first(); | 133 | OTabInfo *tab = m_tabs.first(); |
135 | while ( tab && tab->control() != childwidget ) | 134 | while ( tab && tab->control() != childwidget ) |
136 | tab = m_tabs.next(); | 135 | tab = m_tabs.next(); |
137 | 136 | ||
138 | if ( tab && tab->control() == childwidget ) | 137 | if ( tab && tab->control() == childwidget ) |
139 | { | 138 | { |
140 | if ( m_usingTabs ) | 139 | if ( m_usingTabs ) |
141 | { | 140 | { |
142 | // Remove tab from tab bar | 141 | // Remove tab from tab bar |
143 | m_tabBar->setTabEnabled( tab->id(), false ); | 142 | m_tabBar->setTabEnabled( tab->id(), false ); |
144 | m_tabBar->removeTab( m_tabBar->tab( tab->id() ) ); | 143 | m_tabBar->removeTab( m_tabBar->tab( tab->id() ) ); |
145 | } | 144 | } |
146 | else | 145 | else |
147 | { | 146 | { |
148 | // Remove entry from drop down list | 147 | // Remove entry from drop down list |
149 | int i = 0; | 148 | int i = 0; |
150 | while ( i < m_tabList->count() && m_tabList->text( i ) != tab->label() ) | 149 | while ( i < m_tabList->count() && m_tabList->text( i ) != tab->label() ) |
151 | i++; | 150 | i++; |
152 | if ( m_tabList->text( i ) == tab->label() ) | 151 | if ( m_tabList->text( i ) == tab->label() ) |
153 | m_tabList->removeItem( i ); | 152 | m_tabList->removeItem( i ); |
154 | } | 153 | } |
155 | 154 | ||
156 | // Remove widget from stack | 155 | // Remove widget from stack |
157 | m_widgetStack->removeWidget( childwidget ); | 156 | m_widgetStack->removeWidget( childwidget ); |
158 | 157 | ||
159 | // Get rid of tab information | 158 | // Get rid of tab information |
160 | m_tabs.remove( tab ); | 159 | m_tabs.remove( tab ); |
161 | delete tab; | 160 | delete tab; |
162 | 161 | ||
163 | // Reset current tab | 162 | // Reset current tab |
164 | m_currTab = m_tabs.current(); | 163 | m_currTab = m_tabs.current(); |
165 | if ( !m_currTab ) | 164 | if ( !m_currTab ) |
166 | m_widgetStack->setFrameStyle( QFrame::NoFrame ); | 165 | m_widgetStack->setFrameStyle( QFrame::NoFrame ); |
167 | 166 | ||
168 | // Redraw widget | 167 | // Redraw widget |
169 | setUpLayout(); | 168 | setUpLayout(); |
170 | } | 169 | } |
171 | } | 170 | } |
172 | } | 171 | } |
173 | 172 | ||
174 | void OTabWidget::changeTab( QWidget *widget, const QString &iconset, const QString &label) | 173 | void OTabWidget::changeTab( QWidget *widget, const QString &iconset, const QString &label) |
175 | { | 174 | { |
176 | // Find tab information for desired widget | 175 | // Find tab information for desired widget |
177 | OTabInfo *currtab = m_tabs.first(); | 176 | OTabInfo *currtab = m_tabs.first(); |
178 | while ( currtab && currtab->control() != widget ) | 177 | while ( currtab && currtab->control() != widget ) |
179 | currtab = m_tabs.next(); | 178 | currtab = m_tabs.next(); |
180 | 179 | ||
181 | if ( currtab && currtab->control() == widget ) | 180 | if ( currtab && currtab->control() == widget ) |
182 | { | 181 | { |
183 | QPixmap icon( Opie::Core::OResource::loadPixmap( iconset, Opie::Core::OResource::SmallIcon ) ); | 182 | QPixmap icon( Opie::Core::OResource::loadPixmap( iconset, Opie::Core::OResource::SmallIcon ) ); |
184 | 183 | ||
185 | if ( m_usingTabs ) | 184 | if ( m_usingTabs ) |
186 | { | 185 | { |
187 | // Update tab label and icon (if necessary) | 186 | // Update tab label and icon (if necessary) |
188 | QTab *tab = m_tabBar->tab( currtab->id() ); | 187 | QTab *tab = m_tabBar->tab( currtab->id() ); |
189 | tab->setText( label ); | 188 | tab->setText( label ); |
190 | if ( m_tabBarStyle == IconTab ) | 189 | if ( m_tabBarStyle == IconTab ) |
191 | tab->setIconSet( icon ); | 190 | tab->setIconSet( icon ); |
192 | } | 191 | } |
193 | else | 192 | else |
194 | { | 193 | { |
195 | // Update entry label and icon (if necessary) | 194 | // Update entry label and icon (if necessary) |
196 | int i = 0; | 195 | int i = 0; |
197 | while ( i < m_tabList->count() && m_tabList->text( i ) != currtab->label() ) | 196 | while ( i < m_tabList->count() && m_tabList->text( i ) != currtab->label() ) |
198 | i++; | 197 | i++; |
199 | if ( i < m_tabList->count() && m_tabList->text( i ) == currtab->label() ) | 198 | if ( i < m_tabList->count() && m_tabList->text( i ) == currtab->label() ) |
200 | { | 199 | { |
201 | if ( m_tabBarStyle == IconList ) | 200 | if ( m_tabBarStyle == IconList ) |
202 | m_tabList->changeItem( icon, label, i ); | 201 | m_tabList->changeItem( icon, label, i ); |
203 | else | 202 | else |
204 | m_tabList->changeItem( label, i ); | 203 | m_tabList->changeItem( label, i ); |
205 | } | 204 | } |
206 | } | 205 | } |
207 | 206 | ||
208 | // Update tab information | 207 | // Update tab information |
209 | currtab->setLabel( label ); | 208 | currtab->setLabel( label ); |
210 | currtab->setIcon( iconset ); | 209 | currtab->setIcon( iconset ); |
211 | 210 | ||
212 | // Redraw widget | 211 | // Redraw widget |
213 | setUpLayout(); | 212 | setUpLayout(); |
214 | } | 213 | } |
215 | } | 214 | } |
216 | 215 | ||
217 | void OTabWidget::setCurrentTab( QWidget *childwidget ) | 216 | void OTabWidget::setCurrentTab( QWidget *childwidget ) |
218 | { | 217 | { |
219 | OTabInfo *currtab = m_tabs.first(); | 218 | OTabInfo *currtab = m_tabs.first(); |
220 | while ( currtab && currtab->control() != childwidget ) | 219 | while ( currtab && currtab->control() != childwidget ) |
221 | { | 220 | { |
222 | currtab = m_tabs.next(); | 221 | currtab = m_tabs.next(); |
223 | } | 222 | } |
224 | if ( currtab && currtab->control() == childwidget ) | 223 | if ( currtab && currtab->control() == childwidget ) |
225 | { | 224 | { |
226 | selectTab( currtab ); | 225 | selectTab( currtab ); |
227 | } | 226 | } |
228 | } | 227 | } |
229 | 228 | ||
230 | void OTabWidget::setCurrentTab( const QString &tabname ) | 229 | void OTabWidget::setCurrentTab( const QString &tabname ) |
231 | { | 230 | { |
232 | OTabInfo *newtab = m_tabs.first(); | 231 | OTabInfo *newtab = m_tabs.first(); |
233 | while ( newtab && newtab->label() != tabname ) | 232 | while ( newtab && newtab->label() != tabname ) |
234 | { | 233 | { |
235 | newtab = m_tabs.next(); | 234 | newtab = m_tabs.next(); |
236 | } | 235 | } |
237 | if ( newtab && newtab->label() == tabname ) | 236 | if ( newtab && newtab->label() == tabname ) |
238 | { | 237 | { |
239 | selectTab( newtab ); | 238 | selectTab( newtab ); |
240 | } | 239 | } |
241 | } | 240 | } |
242 | 241 | ||
243 | void OTabWidget::setCurrentTab(int tabindex) | 242 | void OTabWidget::setCurrentTab(int tabindex) |
244 | { | 243 | { |
245 | OTabInfo *newtab = m_tabs.first(); | 244 | OTabInfo *newtab = m_tabs.first(); |
246 | while ( newtab && newtab->id() != tabindex ) | 245 | while ( newtab && newtab->id() != tabindex ) |
247 | { | 246 | { |
248 | newtab = m_tabs.next(); | 247 | newtab = m_tabs.next(); |
249 | } | 248 | } |
250 | if ( newtab && newtab->id() == tabindex ) | 249 | if ( newtab && newtab->id() == tabindex ) |
251 | { | 250 | { |
252 | selectTab( newtab ); | 251 | selectTab( newtab ); |
253 | } | 252 | } |
254 | } | 253 | } |
255 | 254 | ||
256 | 255 | ||
257 | OTabWidget::TabStyle OTabWidget::tabStyle() const | 256 | OTabWidget::TabStyle OTabWidget::tabStyle() const |
258 | { | 257 | { |
259 | return m_tabBarStyle; | 258 | return m_tabBarStyle; |
260 | } | 259 | } |
261 | 260 | ||
262 | void OTabWidget::setTabStyle( TabStyle s ) | 261 | void OTabWidget::setTabStyle( TabStyle s ) |
263 | { | 262 | { |
264 | // Get out if new and current styles are the same | 263 | // Get out if new and current styles are the same |
265 | if ( s == m_tabBarStyle ) | 264 | if ( s == m_tabBarStyle ) |
266 | return; | 265 | return; |
267 | 266 | ||
268 | // Delete current selector control | 267 | // Delete current selector control |
269 | if ( m_usingTabs ) | 268 | if ( m_usingTabs ) |
270 | { | 269 | { |
271 | delete m_tabBar; | 270 | delete m_tabBar; |
272 | m_tabBar = 0l; | 271 | m_tabBar = 0l; |
273 | } | 272 | } |
274 | else | 273 | else |
275 | { | 274 | { |
276 | delete m_tabList; | 275 | delete m_tabList; |
277 | m_tabList = 0l; | 276 | m_tabList = 0l; |
278 | } | 277 | } |
279 | 278 | ||
280 | // Set new style information | 279 | // Set new style information |
281 | m_tabBarStyle = s; | 280 | m_tabBarStyle = s; |
282 | m_usingTabs = ( m_tabBarStyle == TextTab || m_tabBarStyle == IconTab ); | 281 | m_usingTabs = ( m_tabBarStyle == TextTab || m_tabBarStyle == IconTab ); |
283 | 282 | ||
284 | // Create new selector control and populate with tab information | 283 | // Create new selector control and populate with tab information |
285 | if ( m_usingTabs ) | 284 | if ( m_usingTabs ) |
286 | { | 285 | { |
287 | // Create new tab bar selector | 286 | // Create new tab bar selector |
288 | m_tabBar = new OTabBar( this ); | 287 | m_tabBar = new OTabBar( this ); |
289 | connect( m_tabBar, SIGNAL(selected(int)), this, SLOT(slotTabBarSelected(int)) ); | 288 | connect( m_tabBar, SIGNAL(selected(int)), this, SLOT(slotTabBarSelected(int)) ); |
290 | 289 | ||
291 | // Add all current tabs to tab bar | 290 | // Add all current tabs to tab bar |
292 | for ( OTabInfo *tabinfo = m_tabs.first(); tabinfo; tabinfo = m_tabs.next() ) | 291 | for ( OTabInfo *tabinfo = m_tabs.first(); tabinfo; tabinfo = m_tabs.next() ) |
293 | { | 292 | { |
294 | // Create new tab in tab bar | 293 | // Create new tab in tab bar |
295 | QTab *tab = new QTab(); | 294 | QTab *tab = new QTab(); |
296 | 295 | ||
297 | // Set label (and icon if necessary) | 296 | // Set label (and icon if necessary) |
298 | if ( m_tabBarStyle == IconTab ) | 297 | if ( m_tabBarStyle == IconTab ) |
299 | { | 298 | { |
300 | tab->label = QString::null; | 299 | tab->label = QString::null; |
301 | tab->iconset = new QIconSet( Opie::Core::OResource::loadPixmap( tabinfo->icon(), Opie::Core::OResource::SmallIcon ) ); | 300 | tab->iconset = new QIconSet( Opie::Core::OResource::loadPixmap( tabinfo->icon(), Opie::Core::OResource::SmallIcon ) ); |
302 | } | 301 | } |
303 | else | 302 | else |
304 | tab->label = tabinfo->label(); | 303 | tab->label = tabinfo->label(); |
305 | 304 | ||
306 | // Add tab and save its Id | 305 | // Add tab and save its Id |
307 | int tabid = m_tabBar->addTab( tab ); | 306 | int tabid = m_tabBar->addTab( tab ); |
308 | tabinfo->setId( tabid ); | 307 | tabinfo->setId( tabid ); |
309 | } | 308 | } |
310 | } | 309 | } |
311 | else | 310 | else |
312 | { | 311 | { |
313 | // Create new drop down list selector | 312 | // Create new drop down list selector |
314 | m_tabList = new QComboBox( false, this ); | 313 | m_tabList = new QComboBox( false, this ); |
315 | connect( m_tabList, SIGNAL(activated(int)), this, SLOT(slotTabListSelected(int)) ); | 314 | connect( m_tabList, SIGNAL(activated(int)), this, SLOT(slotTabListSelected(int)) ); |
316 | 315 | ||
317 | // Add all current tabs to drop down list | 316 | // Add all current tabs to drop down list |
318 | for ( OTabInfo *tabinfo = m_tabs.first(); tabinfo; tabinfo = m_tabs.next() ) | 317 | for ( OTabInfo *tabinfo = m_tabs.first(); tabinfo; tabinfo = m_tabs.next() ) |
319 | { | 318 | { |
320 | if ( m_tabBarStyle == IconList ) | 319 | if ( m_tabBarStyle == IconList ) |
321 | m_tabList->insertItem( Opie::Core::OResource::loadPixmap( tabinfo->icon(), Opie::Core::OResource::SmallIcon ), | 320 | m_tabList->insertItem( Opie::Core::OResource::loadPixmap( tabinfo->icon(), Opie::Core::OResource::SmallIcon ), |
322 | tabinfo->label() ); | 321 | tabinfo->label() ); |
323 | else | 322 | else |
324 | m_tabList->insertItem( tabinfo->label() ); | 323 | m_tabList->insertItem( tabinfo->label() ); |
325 | } | 324 | } |
326 | } | 325 | } |
327 | 326 | ||
328 | // Redraw widget | 327 | // Redraw widget |
329 | setUpLayout(); | 328 | setUpLayout(); |
330 | } | 329 | } |
331 | 330 | ||
332 | OTabWidget::TabPosition OTabWidget::tabPosition() const | 331 | OTabWidget::TabPosition OTabWidget::tabPosition() const |
333 | { | 332 | { |
334 | return m_tabBarPosition; | 333 | return m_tabBarPosition; |
335 | } | 334 | } |
336 | 335 | ||
337 | void OTabWidget::setTabPosition( TabPosition p ) | 336 | void OTabWidget::setTabPosition( TabPosition p ) |
338 | { | 337 | { |
339 | m_tabBarPosition = p; | 338 | m_tabBarPosition = p; |
340 | 339 | ||
341 | // If using the tab bar selector, set its shape | 340 | // If using the tab bar selector, set its shape |
342 | if ( m_usingTabs ) | 341 | if ( m_usingTabs ) |
343 | { | 342 | { |
344 | ( m_tabBarPosition == Top ) ? m_tabBar->setShape( QTabBar::RoundedAbove ) | 343 | ( m_tabBarPosition == Top ) ? m_tabBar->setShape( QTabBar::RoundedAbove ) |
345 | : m_tabBar->setShape( QTabBar::RoundedBelow ); | 344 | : m_tabBar->setShape( QTabBar::RoundedBelow ); |
346 | } | 345 | } |
347 | 346 | ||
348 | // Redraw widget | 347 | // Redraw widget |
349 | setUpLayout(); | 348 | setUpLayout(); |
350 | } | 349 | } |
351 | 350 | ||
352 | void OTabWidget::slotTabBarSelected( int id ) | 351 | void OTabWidget::slotTabBarSelected( int id ) |
353 | { | 352 | { |
354 | OTabInfo *newtab = m_tabs.first(); | 353 | OTabInfo *newtab = m_tabs.first(); |
355 | while ( newtab && newtab->id() != id ) | 354 | while ( newtab && newtab->id() != id ) |
356 | newtab = m_tabs.next(); | 355 | newtab = m_tabs.next(); |
357 | 356 | ||
358 | if ( newtab && newtab->id() == id ) | 357 | if ( newtab && newtab->id() == id ) |
359 | selectTab( newtab ); | 358 | selectTab( newtab ); |
360 | } | 359 | } |
361 | 360 | ||
362 | void OTabWidget::slotTabListSelected( int index ) | 361 | void OTabWidget::slotTabListSelected( int index ) |
363 | { | 362 | { |
364 | OTabInfo *newtab = m_tabs.at( index ); | 363 | OTabInfo *newtab = m_tabs.at( index ); |
365 | if ( newtab ) | 364 | if ( newtab ) |
366 | selectTab( newtab ); | 365 | selectTab( newtab ); |
367 | } | 366 | } |
368 | 367 | ||
369 | void OTabWidget::selectTab( OTabInfo *tab ) | 368 | void OTabWidget::selectTab( OTabInfo *tab ) |
370 | { | 369 | { |
371 | if ( m_tabBarStyle == IconTab ) | 370 | if ( m_tabBarStyle == IconTab ) |
372 | { | 371 | { |
373 | // Remove text label from currently selected tab | 372 | // Remove text label from currently selected tab |
374 | if ( m_currTab ) | 373 | if ( m_currTab ) |
375 | { | 374 | { |
376 | m_tabBar->tab( m_currTab->id() )->setText( QString::null ); | 375 | m_tabBar->tab( m_currTab->id() )->setText( QString::null ); |
377 | //setUpLayout(); | 376 | //setUpLayout(); |
378 | } | 377 | } |
379 | 378 | ||
380 | // Set text label for newly selected tab | 379 | // Set text label for newly selected tab |
381 | m_tabBar->tab( tab->id() )->setText( tab->label() ); | 380 | m_tabBar->tab( tab->id() )->setText( tab->label() ); |
382 | m_tabBar->setCurrentTab( tab->id() ); | 381 | m_tabBar->setCurrentTab( tab->id() ); |
383 | 382 | ||
384 | setUpLayout(); | 383 | setUpLayout(); |
385 | 384 | ||
386 | QSize t; | 385 | QSize t; |
387 | 386 | ||
388 | t = m_tabBar->sizeHint(); | 387 | t = m_tabBar->sizeHint(); |
389 | if ( t.width() > width() ) | 388 | if ( t.width() > width() ) |
390 | t.setWidth( width() ); | 389 | t.setWidth( width() ); |
391 | int lw = m_widgetStack->lineWidth(); | 390 | int lw = m_widgetStack->lineWidth(); |
392 | if ( m_tabBarPosition == Bottom ) | 391 | if ( m_tabBarPosition == Bottom ) |
393 | m_tabBar->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); | 392 | m_tabBar->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); |
394 | else | 393 | else |
395 | m_tabBar->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); | 394 | m_tabBar->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); |
396 | } | 395 | } |
397 | else if ( m_tabBarStyle == TextTab ) | 396 | else if ( m_tabBarStyle == TextTab ) |
398 | { | 397 | { |
399 | m_tabBar->setCurrentTab( tab->id() ); | 398 | m_tabBar->setCurrentTab( tab->id() ); |
400 | } | 399 | } |
401 | 400 | ||
402 | m_widgetStack->raiseWidget( tab->control() ); | 401 | m_widgetStack->raiseWidget( tab->control() ); |
403 | 402 | ||
404 | emit currentChanged( tab->control() ); | 403 | emit currentChanged( tab->control() ); |
405 | 404 | ||
406 | m_currTab = tab; | 405 | m_currTab = tab; |
407 | } | 406 | } |
408 | 407 | ||
409 | void OTabWidget::setUpLayout() | 408 | void OTabWidget::setUpLayout() |
410 | { | 409 | { |
411 | if ( m_usingTabs ) | 410 | if ( m_usingTabs ) |
412 | { | 411 | { |
413 | m_tabBar->update(); | 412 | m_tabBar->update(); |
414 | m_tabBar->layoutTabs(); | 413 | m_tabBar->layoutTabs(); |
415 | } | 414 | } |
416 | } | 415 | } |
417 | 416 | ||
418 | void OTabWidget::resizeEvent( QResizeEvent * ) | 417 | void OTabWidget::resizeEvent( QResizeEvent * ) |
419 | { | 418 | { |
420 | QSize t; | 419 | QSize t; |
421 | 420 | ||
422 | if ( m_usingTabs ) | 421 | if ( m_usingTabs ) |
423 | { | 422 | { |
424 | m_tabBar->layoutTabs(); | 423 | m_tabBar->layoutTabs(); |
425 | t = m_tabBar->sizeHint(); | 424 | t = m_tabBar->sizeHint(); |
426 | if ( t.width() > width() ) | 425 | if ( t.width() > width() ) |
427 | t.setWidth( width() ); | 426 | t.setWidth( width() ); |
428 | } | 427 | } |
429 | else | 428 | else |
430 | { | 429 | { |
431 | t = m_tabList->sizeHint(); | 430 | t = m_tabList->sizeHint(); |
432 | t.setWidth( width() ); | 431 | t.setWidth( width() ); |
433 | } | 432 | } |
434 | 433 | ||
435 | int lw = m_widgetStack->lineWidth(); | 434 | int lw = m_widgetStack->lineWidth(); |
436 | if ( m_tabBarPosition == Bottom ) | 435 | if ( m_tabBarPosition == Bottom ) |
437 | { | 436 | { |
438 | if ( m_usingTabs ) | 437 | if ( m_usingTabs ) |
439 | m_tabBar->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); | 438 | m_tabBar->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); |
440 | else | 439 | else |
441 | m_tabList->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); | 440 | m_tabList->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); |
442 | 441 | ||
443 | m_widgetStack->setGeometry( 0, 0, width(), height()-t.height()+QMAX(0, lw-2) ); | 442 | m_widgetStack->setGeometry( 0, 0, width(), height()-t.height()+QMAX(0, lw-2) ); |
444 | } | 443 | } |
445 | else | 444 | else |
446 | { | 445 | { |
447 | if ( m_usingTabs ) | 446 | if ( m_usingTabs ) |
448 | m_tabBar->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); | 447 | m_tabBar->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); |
449 | else | 448 | else |
450 | m_tabList->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); | 449 | m_tabList->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); |
451 | 450 | ||
452 | m_widgetStack->setGeometry( 0, t.height()-lw, width(), height()-t.height()+QMAX( 0, lw-2 ) ); | 451 | m_widgetStack->setGeometry( 0, t.height()-lw, width(), height()-t.height()+QMAX( 0, lw-2 ) ); |
453 | } | 452 | } |
454 | 453 | ||
455 | if ( autoMask() ) | 454 | if ( autoMask() ) |
456 | updateMask(); | 455 | updateMask(); |
457 | } | 456 | } |
458 | 457 | ||
459 | int OTabWidget::currentTab() | 458 | int OTabWidget::currentTab() |
460 | { | 459 | { |
461 | if ( m_currTab ) | 460 | if ( m_currTab ) |
462 | { | 461 | { |
463 | return m_currTab->id(); | 462 | return m_currTab->id(); |
464 | } | 463 | } |
465 | return -1; | 464 | return -1; |
466 | } | 465 | } |
467 | 466 | ||
468 | QWidget* OTabWidget::currentWidget()const | 467 | QWidget* OTabWidget::currentWidget()const |
469 | { | 468 | { |
470 | if ( m_currTab ) | 469 | if ( m_currTab ) |
471 | { | 470 | { |
472 | return m_currTab->control(); | 471 | return m_currTab->control(); |
473 | } | 472 | } |
474 | 473 | ||
475 | return 0; | 474 | return 0; |
476 | } | 475 | } |
diff --git a/noncore/styles/flat/flat.cpp b/noncore/styles/flat/flat.cpp index f3bacf9..c164ecc 100644 --- a/noncore/styles/flat/flat.cpp +++ b/noncore/styles/flat/flat.cpp | |||
@@ -1,1102 +1,1106 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include <qtopia/qpeapplication.h> | 21 | #include <qtopia/qpeapplication.h> |
22 | #include <qpushbutton.h> | 22 | #include <qpushbutton.h> |
23 | #include <qtoolbutton.h> | 23 | #include <qtoolbutton.h> |
24 | #include <qpainter.h> | 24 | #include <qpainter.h> |
25 | #include <qfontmetrics.h> | 25 | #include <qfontmetrics.h> |
26 | #include <qpalette.h> | 26 | #include <qpalette.h> |
27 | #include <qdrawutil.h> | 27 | #include <qdrawutil.h> |
28 | #include <qscrollbar.h> | 28 | #include <qscrollbar.h> |
29 | #include <qbutton.h> | 29 | #include <qbutton.h> |
30 | #include <qframe.h> | 30 | #include <qframe.h> |
31 | #include <qtabbar.h> | 31 | #include <qtabbar.h> |
32 | #include <qspinbox.h> | 32 | #include <qspinbox.h> |
33 | #include <qlineedit.h> | 33 | #include <qlineedit.h> |
34 | #include <qmap.h> | 34 | #include <qmap.h> |
35 | 35 | ||
36 | #define INCLUDE_MENUITEM_DEF | 36 | #define INCLUDE_MENUITEM_DEF |
37 | #include <qmenudata.h> | 37 | #include <qmenudata.h> |
38 | #include <qpopupmenu.h> | 38 | #include <qpopupmenu.h> |
39 | 39 | ||
40 | #include "flat.h" | 40 | #include "flat.h" |
41 | 41 | ||
42 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) | 42 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) |
43 | 43 | ||
44 | class SpinBoxHack : public QSpinBox | 44 | class SpinBoxHack : public QSpinBox |
45 | { | 45 | { |
46 | public: | 46 | public: |
47 | void setFlatButtons( bool f ) { | 47 | void setFlatButtons( bool f ) { |
48 | upButton()->setFlat( f ); | 48 | upButton()->setFlat( f ); |
49 | downButton()->setFlat( f ); | 49 | downButton()->setFlat( f ); |
50 | } | 50 | } |
51 | }; | 51 | }; |
52 | 52 | ||
53 | class FlatStylePrivate : public QObject | 53 | class FlatStylePrivate : public QObject |
54 | { | 54 | { |
55 | Q_OBJECT | 55 | Q_OBJECT |
56 | public: | 56 | public: |
57 | FlatStylePrivate() : QObject() {} | 57 | FlatStylePrivate() : QObject() {} |
58 | 58 | ||
59 | bool eventFilter( QObject *o, QEvent *e ) { | 59 | bool eventFilter( QObject *o, QEvent *e ) { |
60 | if ( e->type() == QEvent::ParentPaletteChange ) { | 60 | if ( e->type() == QEvent::ParentPaletteChange ) { |
61 | if ( o->inherits( "QMenuBar" ) ) { | 61 | if ( o->inherits( "QMenuBar" ) ) { |
62 | QWidget *w = (QWidget *)o; | 62 | QWidget *w = (QWidget *)o; |
63 | if ( w->parentWidget() ) { | 63 | if ( w->parentWidget() ) { |
64 | QPalette p = w->parentWidget()->palette(); | 64 | QPalette p = w->parentWidget()->palette(); |
65 | QColorGroup a = p.active(); | 65 | QColorGroup a = p.active(); |
66 | a.setColor( QColorGroup::Light, a.foreground() ); | 66 | a.setColor( QColorGroup::Light, a.foreground() ); |
67 | a.setColor( QColorGroup::Dark, a.foreground() ); | 67 | a.setColor( QColorGroup::Dark, a.foreground() ); |
68 | p.setActive( a ); | 68 | p.setActive( a ); |
69 | p.setInactive( a ); | 69 | p.setInactive( a ); |
70 | w->setPalette( p ); | 70 | w->setPalette( p ); |
71 | } | 71 | } |
72 | } else if ( o->inherits( "QHeader" ) ) { | 72 | } else if ( o->inherits( "QHeader" ) ) { |
73 | QWidget *w = (QWidget *)o; | 73 | QWidget *w = (QWidget *)o; |
74 | if ( w->parentWidget() ) { | 74 | if ( w->parentWidget() ) { |
75 | QPalette p = w->parentWidget()->palette(); | 75 | QPalette p = w->parentWidget()->palette(); |
76 | QColorGroup a = p.active(); | 76 | QColorGroup a = p.active(); |
77 | a.setColor( QColorGroup::Light, a.button() ); | 77 | a.setColor( QColorGroup::Light, a.button() ); |
78 | p.setActive( a ); | 78 | p.setActive( a ); |
79 | p.setInactive( a ); | 79 | p.setInactive( a ); |
80 | w->setPalette( p ); | 80 | w->setPalette( p ); |
81 | } | 81 | } |
82 | } | 82 | } |
83 | } | 83 | } |
84 | return FALSE; | 84 | return FALSE; |
85 | } | 85 | } |
86 | 86 | ||
87 | QMap<QFrame *,int> frameStyles; | 87 | QMap<QFrame *,int> frameStyles; |
88 | }; | 88 | }; |
89 | 89 | ||
90 | FlatStyle::FlatStyle() : revItem(FALSE), fillBtnBorder(FALSE) | 90 | FlatStyle::FlatStyle() : revItem(FALSE), fillBtnBorder(FALSE) |
91 | { | 91 | { |
92 | setButtonMargin(3); | 92 | setButtonMargin(3); |
93 | setScrollBarExtent(13,13); | 93 | setScrollBarExtent(13,13); |
94 | setButtonDefaultIndicatorWidth(0); | 94 | setButtonDefaultIndicatorWidth(0); |
95 | d = new FlatStylePrivate; | 95 | d = new FlatStylePrivate; |
96 | } | 96 | } |
97 | 97 | ||
98 | FlatStyle::~FlatStyle() | 98 | FlatStyle::~FlatStyle() |
99 | { | 99 | { |
100 | delete d; | 100 | delete d; |
101 | } | 101 | } |
102 | 102 | ||
103 | int FlatStyle::buttonMargin() const | 103 | int FlatStyle::buttonMargin() const |
104 | { | 104 | { |
105 | return 3; | 105 | return 3; |
106 | } | 106 | } |
107 | 107 | ||
108 | QSize FlatStyle::scrollBarExtent() const | 108 | QSize FlatStyle::scrollBarExtent() const |
109 | { | 109 | { |
110 | return QSize(13,13); | 110 | return QSize(13,13); |
111 | } | 111 | } |
112 | 112 | ||
113 | void FlatStyle::polish ( QPalette & ) | 113 | void FlatStyle::polish ( QPalette & ) |
114 | { | 114 | { |
115 | } | 115 | } |
116 | 116 | ||
117 | void FlatStyle::polish( QWidget *w ) | 117 | void FlatStyle::polish( QWidget *w ) |
118 | { | 118 | { |
119 | if ( w->inherits( "QFrame" ) ) { | 119 | if ( w->inherits( "QFrame" ) ) { |
120 | QFrame *f = (QFrame *)w; | 120 | QFrame *f = (QFrame *)w; |
121 | if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) | 121 | if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) |
122 | f->setFrameShadow( QFrame::Plain ); | 122 | f->setFrameShadow( QFrame::Plain ); |
123 | else if ( f->frameShape() != QFrame::NoFrame ) | 123 | else if ( f->frameShape() != QFrame::NoFrame ) |
124 | f->setFrameShape( QFrame::StyledPanel ); | 124 | f->setFrameShape( QFrame::StyledPanel ); |
125 | f->setLineWidth( 1 ); | 125 | f->setLineWidth( 1 ); |
126 | } | 126 | } |
127 | if ( w->inherits( "QSpinBox" ) ) | 127 | if ( w->inherits( "QSpinBox" ) ) |
128 | ((SpinBoxHack*)w)->setFlatButtons( TRUE ); | 128 | ((SpinBoxHack*)w)->setFlatButtons( TRUE ); |
129 | if ( w->inherits( "QMenuBar" ) ) { | 129 | if ( w->inherits( "QMenuBar" ) ) { |
130 | // make selected item look flat | 130 | // make selected item look flat |
131 | QPalette p = w->palette(); | 131 | QPalette p = w->palette(); |
132 | QColorGroup a = p.active(); | 132 | QColorGroup a = p.active(); |
133 | a.setColor( QColorGroup::Light, a.foreground() ); | 133 | a.setColor( QColorGroup::Light, a.foreground() ); |
134 | a.setColor( QColorGroup::Dark, a.foreground() ); | 134 | a.setColor( QColorGroup::Dark, a.foreground() ); |
135 | p.setActive( a ); | 135 | p.setActive( a ); |
136 | p.setInactive( a ); | 136 | p.setInactive( a ); |
137 | w->setPalette( p ); | 137 | w->setPalette( p ); |
138 | w->installEventFilter( d ); | 138 | w->installEventFilter( d ); |
139 | } else if ( w->inherits( "QHeader" ) ) { | 139 | } else if ( w->inherits( "QHeader" ) ) { |
140 | // make headers look flat | 140 | // make headers look flat |
141 | QPalette p = w->palette(); | 141 | QPalette p = w->palette(); |
142 | QColorGroup a = p.active(); | 142 | QColorGroup a = p.active(); |
143 | a.setColor( QColorGroup::Light, a.button() ); | 143 | a.setColor( QColorGroup::Light, a.button() ); |
144 | p.setActive( a ); | 144 | p.setActive( a ); |
145 | p.setInactive( a ); | 145 | p.setInactive( a ); |
146 | w->setPalette( p ); | 146 | w->setPalette( p ); |
147 | w->installEventFilter( d ); | 147 | w->installEventFilter( d ); |
148 | } | 148 | } |
149 | } | 149 | } |
150 | 150 | ||
151 | void FlatStyle::unPolish( QWidget *w ) | 151 | void FlatStyle::unPolish( QWidget *w ) |
152 | { | 152 | { |
153 | if ( w->inherits("QFrame") ) { | 153 | if ( w->inherits("QFrame") ) { |
154 | QFrame *f = (QFrame *)w; | 154 | QFrame *f = (QFrame *)w; |
155 | if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) { | 155 | if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) { |
156 | f->setFrameShadow( QFrame::Sunken ); | 156 | f->setFrameShadow( QFrame::Sunken ); |
157 | } else if ( f->frameShape() != QFrame::NoFrame ) { | 157 | } else if ( f->frameShape() != QFrame::NoFrame ) { |
158 | f->setFrameShape( QFrame::StyledPanel ); | 158 | f->setFrameShape( QFrame::StyledPanel ); |
159 | f->setLineWidth( 2 ); | 159 | f->setLineWidth( 2 ); |
160 | } | 160 | } |
161 | } | 161 | } |
162 | if ( w->inherits("QSpinBox") ) | 162 | if ( w->inherits("QSpinBox") ) |
163 | ((SpinBoxHack*)w)->setFlatButtons( FALSE ); | 163 | ((SpinBoxHack*)w)->setFlatButtons( FALSE ); |
164 | if ( w->inherits("QMenuBar") || w->inherits("QHeader") ) { | 164 | if ( w->inherits("QMenuBar") || w->inherits("QHeader") ) { |
165 | w->unsetPalette(); | 165 | w->unsetPalette(); |
166 | w->removeEventFilter( d ); | 166 | w->removeEventFilter( d ); |
167 | } | 167 | } |
168 | } | 168 | } |
169 | 169 | ||
170 | int FlatStyle::defaultFrameWidth() const | 170 | int FlatStyle::defaultFrameWidth() const |
171 | { | 171 | { |
172 | return 2; | 172 | return 2; |
173 | } | 173 | } |
174 | 174 | ||
175 | void FlatStyle::drawItem( QPainter *p, int x, int y, int w, int h, | 175 | void FlatStyle::drawItem( QPainter *p, int x, int y, int w, int h, |
176 | int flags, const QColorGroup &g, bool enabled, | 176 | int flags, const QColorGroup &g, bool enabled, |
177 | const QPixmap *pixmap, const QString& text, int len, | 177 | const QPixmap *pixmap, const QString& text, int len, |
178 | const QColor* penColor ) | 178 | const QColor* penColor ) |
179 | { | 179 | { |
180 | QColor pc( penColor ? *penColor : g.foreground() ); | 180 | QColor pc( penColor ? *penColor : g.foreground() ); |
181 | QColorGroup cg( g ); | 181 | QColorGroup cg( g ); |
182 | if ( !enabled ) | 182 | if ( !enabled ) |
183 | cg.setColor( QColorGroup::Light, cg.background() ); | 183 | cg.setColor( QColorGroup::Light, cg.background() ); |
184 | if ( revItem ) { | 184 | if ( revItem ) { |
185 | pc = cg.button(); | 185 | pc = cg.button(); |
186 | revItem = FALSE; | 186 | revItem = FALSE; |
187 | } | 187 | } |
188 | QWindowsStyle::drawItem( p, x, y, w, h, flags, cg, enabled, pixmap, text, len, &pc ); | 188 | QWindowsStyle::drawItem( p, x, y, w, h, flags, cg, enabled, pixmap, text, len, &pc ); |
189 | } | 189 | } |
190 | 190 | ||
191 | void FlatStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, | 191 | void FlatStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, |
192 | const QColorGroup &g, bool /*sunken*/, int lineWidth, const QBrush * fill ) | 192 | const QColorGroup &g, bool /*sunken*/, int lineWidth, const QBrush * fill ) |
193 | { | 193 | { |
194 | if ( fill ) | 194 | if ( fill ) |
195 | p->setBrush( *fill ); | 195 | p->setBrush( *fill ); |
196 | p->setPen( QPen(g.foreground(), lineWidth) ); | 196 | p->setPen( QPen(g.foreground(), lineWidth) ); |
197 | p->drawRect( x, y, w, h ); | 197 | p->drawRect( x, y, w, h ); |
198 | } | 198 | } |
199 | 199 | ||
200 | void FlatStyle::drawButton( QPainter *p, int x, int y, int w, int h, | 200 | void FlatStyle::drawButton( QPainter *p, int x, int y, int w, int h, |
201 | const QColorGroup &cg, bool /*sunken*/, const QBrush* fill ) | 201 | const QColorGroup &cg, bool /*sunken*/, const QBrush* fill ) |
202 | { | 202 | { |
203 | QPen oldPen = p->pen(); | 203 | QPen oldPen = p->pen(); |
204 | 204 | ||
205 | int x2 = x+w-1; | 205 | int x2 = x+w-1; |
206 | int y2 = y+h-1; | 206 | int y2 = y+h-1; |
207 | 207 | ||
208 | if ( fillBtnBorder && btnBg != cg.color(QColorGroup::Button) ) { | 208 | if ( fillBtnBorder && btnBg != cg.color(QColorGroup::Button) ) { |
209 | p->setPen( btnBg ); | 209 | p->setPen( btnBg ); |
210 | p->drawLine( x, y, x2, y ); | 210 | p->drawLine( x, y, x2, y ); |
211 | p->drawLine( x, y2, x2, y2 ); | 211 | p->drawLine( x, y2, x2, y2 ); |
212 | p->drawLine( x, y+1, x, y2-1 ); | 212 | p->drawLine( x, y+1, x, y2-1 ); |
213 | p->drawLine( x2, y+1, x2, y2-1 ); | 213 | p->drawLine( x2, y+1, x2, y2-1 ); |
214 | p->fillRect( x+1, y+1, 3, 3, btnBg ); | 214 | p->fillRect( x+1, y+1, 3, 3, btnBg ); |
215 | p->fillRect( x+1, y2-3, 3, 3, btnBg ); | 215 | p->fillRect( x+1, y2-3, 3, 3, btnBg ); |
216 | p->fillRect( x2-3, y2-3, 3, 3, btnBg ); | 216 | p->fillRect( x2-3, y2-3, 3, 3, btnBg ); |
217 | p->fillRect( x2-3, y+1, 3, 3, btnBg ); | 217 | p->fillRect( x2-3, y+1, 3, 3, btnBg ); |
218 | p->fillRect( x+2, y+2, w-4, h-4, fill?(*fill):cg.brush(QColorGroup::Button) ); | 218 | p->fillRect( x+2, y+2, w-4, h-4, fill?(*fill):cg.brush(QColorGroup::Button) ); |
219 | } else { | 219 | } else { |
220 | p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):cg.brush(QColorGroup::Button) ); | 220 | p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):cg.brush(QColorGroup::Button) ); |
221 | } | 221 | } |
222 | 222 | ||
223 | if ( h >= 10 ) { | 223 | if ( h >= 10 ) { |
224 | x++; y++; | 224 | x++; y++; |
225 | x2--; y2--; | 225 | x2--; y2--; |
226 | w -= 2; h -= 2; | 226 | w -= 2; h -= 2; |
227 | } | 227 | } |
228 | 228 | ||
229 | p->setPen( cg.foreground() ); | 229 | p->setPen( cg.foreground() ); |
230 | 230 | ||
231 | if ( h < 10 ) { | 231 | if ( h < 10 ) { |
232 | p->setBrush( NoBrush ); | 232 | p->setBrush( NoBrush ); |
233 | p->drawRect( x, y, w, h ); | 233 | p->drawRect( x, y, w, h ); |
234 | } else { | 234 | } else { |
235 | p->drawLine( x+3, y, x2-3, y ); | 235 | p->drawLine( x+3, y, x2-3, y ); |
236 | p->drawLine( x+3, y2, x2-3, y2 ); | 236 | p->drawLine( x+3, y2, x2-3, y2 ); |
237 | p->drawLine( x, y+3, x, y2-3 ); | 237 | p->drawLine( x, y+3, x, y2-3 ); |
238 | p->drawLine( x2, y+3, x2, y2-3 ); | 238 | p->drawLine( x2, y+3, x2, y2-3 ); |
239 | 239 | ||
240 | p->drawLine( x+1, y+1, x+2, y+1 ); | 240 | p->drawLine( x+1, y+1, x+2, y+1 ); |
241 | p->drawPoint( x+1, y+2 ); | 241 | p->drawPoint( x+1, y+2 ); |
242 | p->drawLine( x2-2, y+1, x2-1, y+1 ); | 242 | p->drawLine( x2-2, y+1, x2-1, y+1 ); |
243 | p->drawPoint( x2-1, y+2 ); | 243 | p->drawPoint( x2-1, y+2 ); |
244 | 244 | ||
245 | p->drawLine( x+1, y2-1, x+2, y2-1 ); | 245 | p->drawLine( x+1, y2-1, x+2, y2-1 ); |
246 | p->drawPoint( x+1, y2-2 ); | 246 | p->drawPoint( x+1, y2-2 ); |
247 | p->drawLine( x2-2, y2-1, x2-1, y2-1 ); | 247 | p->drawLine( x2-2, y2-1, x2-1, y2-1 ); |
248 | p->drawPoint( x2-1, y2-2 ); | 248 | p->drawPoint( x2-1, y2-2 ); |
249 | } | 249 | } |
250 | 250 | ||
251 | p->setPen( oldPen ); | 251 | p->setPen( oldPen ); |
252 | } | 252 | } |
253 | 253 | ||
254 | void FlatStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) | 254 | void FlatStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) |
255 | { | 255 | { |
256 | x++; y++; | 256 | x++; y++; |
257 | x-=2; y-=2; | 257 | x-=2; y-=2; |
258 | p->fillRect( x, y, w, h, color1 ); | 258 | p->fillRect( x, y, w, h, color1 ); |
259 | } | 259 | } |
260 | 260 | ||
261 | void FlatStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, | 261 | void FlatStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, |
262 | const QColorGroup &g, bool /*sunken*/, const QBrush* fill ) | 262 | const QColorGroup &g, bool /*sunken*/, const QBrush* fill ) |
263 | { | 263 | { |
264 | p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) ); | 264 | p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) ); |
265 | p->setPen( g.foreground() ); | 265 | p->setPen( g.foreground() ); |
266 | p->setBrush( NoBrush ); | 266 | p->setBrush( NoBrush ); |
267 | p->drawRect( x, y, w, h ); | 267 | p->drawRect( x, y, w, h ); |
268 | } | 268 | } |
269 | 269 | ||
270 | void FlatStyle::drawToolButton( QPainter *p, int x, int y, int w, int h, | 270 | void FlatStyle::drawToolButton( QPainter *p, int x, int y, int w, int h, |
271 | const QColorGroup &g, bool sunken, const QBrush* fill ) | 271 | const QColorGroup &g, bool sunken, const QBrush* fill ) |
272 | { | 272 | { |
273 | if ( p->device()->devType() == QInternal::Widget ) { | 273 | if ( p->device()->devType() == QInternal::Widget ) { |
274 | QWidget *w = (QWidget *)p->device(); | 274 | QWidget *w = (QWidget *)p->device(); |
275 | if ( w->isA("QToolButton") ) { | 275 | if ( w->isA("QToolButton") ) { |
276 | QToolButton *btn = (QToolButton *)w; | 276 | QToolButton *btn = (QToolButton *)w; |
277 | if ( btn->parentWidget() ) { | 277 | if ( btn->parentWidget() ) { |
278 | btnBg = btn->parentWidget()->backgroundColor(); | 278 | btnBg = btn->parentWidget()->backgroundColor(); |
279 | fillBtnBorder = TRUE; | 279 | fillBtnBorder = TRUE; |
280 | } | 280 | } |
281 | } | 281 | } |
282 | } | 282 | } |
283 | QBrush fb( fill ? *fill : g.button() ); | 283 | QBrush fb( fill ? *fill : g.button() ); |
284 | if ( sunken && fb == g.brush( QColorGroup::Button ) ) { | 284 | if ( sunken && fb == g.brush( QColorGroup::Button ) ) { |
285 | fb = g.buttonText(); | 285 | fb = g.buttonText(); |
286 | revItem = TRUE;// ugh | 286 | revItem = TRUE;// ugh |
287 | } | 287 | } |
288 | drawButton( p, x, y, w, h, g, sunken, &fb ); | 288 | drawButton( p, x, y, w, h, g, sunken, &fb ); |
289 | fillBtnBorder = FALSE; | 289 | fillBtnBorder = FALSE; |
290 | } | 290 | } |
291 | 291 | ||
292 | void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p ) | 292 | void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p ) |
293 | { | 293 | { |
294 | QColorGroup g = btn->colorGroup(); | 294 | QColorGroup g = btn->colorGroup(); |
295 | int x1, y1, x2, y2; | 295 | int x1, y1, x2, y2; |
296 | 296 | ||
297 | btn->rect().coords( &x1, &y1, &x2, &y2 );// get coordinates | 297 | btn->rect().coords( &x1, &y1, &x2, &y2 );// get coordinates |
298 | 298 | ||
299 | p->setPen( g.foreground() ); | 299 | p->setPen( g.foreground() ); |
300 | p->setBrush( QBrush(g.button(),NoBrush) ); | 300 | p->setBrush( QBrush(g.button(),NoBrush) ); |
301 | 301 | ||
302 | // int diw = buttonDefaultIndicatorWidth(); | 302 | // int diw = buttonDefaultIndicatorWidth(); |
303 | /* | 303 | /* |
304 | if ( btn->isDefault() || btn->autoDefault() ) { | 304 | if ( btn->isDefault() || btn->autoDefault() ) { |
305 | if ( btn->isDefault() ) { | 305 | if ( btn->isDefault() ) { |
306 | p->setPen( g.shadow() ); | 306 | p->setPen( g.shadow() ); |
307 | p->drawRect( x1, y1, x2-x1+1, y2-y1+1 ); | 307 | p->drawRect( x1, y1, x2-x1+1, y2-y1+1 ); |
308 | } | 308 | } |
309 | x1 += diw; | 309 | x1 += diw; |
310 | y1 += diw; | 310 | y1 += diw; |
311 | x2 -= diw; | 311 | x2 -= diw; |
312 | y2 -= diw; | 312 | y2 -= diw; |
313 | } | 313 | } |
314 | */ | 314 | */ |
315 | 315 | ||
316 | if ( btn->parentWidget() ) { | 316 | if ( btn->parentWidget() ) { |
317 | btnBg = btn->parentWidget()->backgroundColor(); | 317 | btnBg = btn->parentWidget()->backgroundColor(); |
318 | fillBtnBorder = TRUE; | 318 | fillBtnBorder = TRUE; |
319 | } | 319 | } |
320 | 320 | ||
321 | bool clearButton = TRUE; | 321 | bool clearButton = TRUE; |
322 | if ( btn->isDown() ) { | 322 | if ( btn->isDown() ) { |
323 | drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, | 323 | drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, |
324 | &g.brush( QColorGroup::Text ) ); | 324 | &g.brush( QColorGroup::Text ) ); |
325 | } else { | 325 | } else { |
326 | if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() ) { | 326 | if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() ) { |
327 | QBrush fill(g.light(), Dense4Pattern ); | 327 | QBrush fill(g.light(), Dense4Pattern ); |
328 | drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, &fill ); | 328 | drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, &fill ); |
329 | clearButton = FALSE; | 329 | clearButton = FALSE; |
330 | } else { | 330 | } else { |
331 | if ( !btn->isFlat() ) | 331 | if ( !btn->isFlat() ) |
332 | drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, btn->isOn(), | 332 | drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, btn->isOn(), |
333 | &g.brush( QColorGroup::Button ) ); | 333 | &g.brush( QColorGroup::Button ) ); |
334 | } | 334 | } |
335 | } | 335 | } |
336 | /* | 336 | /* |
337 | if ( clearButton ) { | 337 | if ( clearButton ) { |
338 | if (btn->isDown()) | 338 | if (btn->isDown()) |
339 | p->setBrushOrigin(p->brushOrigin() + QPoint(1,1)); | 339 | p->setBrushOrigin(p->brushOrigin() + QPoint(1,1)); |
340 | p->fillRect( x1+2, y1+2, x2-x1-3, y2-y1-3, | 340 | p->fillRect( x1+2, y1+2, x2-x1-3, y2-y1-3, |
341 | g.brush( QColorGroup::Button ) ); | 341 | g.brush( QColorGroup::Button ) ); |
342 | if (btn->isDown()) | 342 | if (btn->isDown()) |
343 | p->setBrushOrigin(p->brushOrigin() - QPoint(1,1)); | 343 | p->setBrushOrigin(p->brushOrigin() - QPoint(1,1)); |
344 | } | 344 | } |
345 | */ | 345 | */ |
346 | 346 | ||
347 | fillBtnBorder = FALSE; | 347 | fillBtnBorder = FALSE; |
348 | if ( p->brush().style() != NoBrush ) | 348 | if ( p->brush().style() != NoBrush ) |
349 | p->setBrush( NoBrush ); | 349 | p->setBrush( NoBrush ); |
350 | } | 350 | } |
351 | 351 | ||
352 | void FlatStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p ) | 352 | void FlatStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p ) |
353 | { | 353 | { |
354 | QRect r = pushButtonContentsRect( btn ); | 354 | QRect r = pushButtonContentsRect( btn ); |
355 | int x, y, w, h; | 355 | int x, y, w, h; |
356 | r.rect( &x, &y, &w, &h ); | 356 | r.rect( &x, &y, &w, &h ); |
357 | QColorGroup cg = btn->colorGroup(); | 357 | QColorGroup cg = btn->colorGroup(); |
358 | if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() && !btn->isDown() ) | 358 | if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() && !btn->isDown() ) |
359 | cg.setColor( QColorGroup::ButtonText, btn->colorGroup().text() ); | 359 | cg.setColor( QColorGroup::ButtonText, btn->colorGroup().text() ); |
360 | else if ( btn->isDown() || btn->isOn() ) | 360 | else if ( btn->isDown() || btn->isOn() ) |
361 | cg.setColor( QColorGroup::ButtonText, btn->colorGroup().button() ); | 361 | cg.setColor( QColorGroup::ButtonText, btn->colorGroup().button() ); |
362 | if ( btn->isMenuButton() ) { | 362 | if ( btn->isMenuButton() ) { |
363 | int dx = menuButtonIndicatorWidth( btn->height() ); | 363 | int dx = menuButtonIndicatorWidth( btn->height() ); |
364 | drawArrow( p, DownArrow, FALSE, | 364 | drawArrow( p, DownArrow, FALSE, |
365 | x+w-dx, y+2, dx-4, h-4, | 365 | x+w-dx, y+2, dx-4, h-4, |
366 | cg, | 366 | cg, |
367 | btn->isEnabled() ); | 367 | btn->isEnabled() ); |
368 | w -= dx; | 368 | w -= dx; |
369 | } | 369 | } |
370 | 370 | ||
371 | if ( btn->iconSet() && !btn->iconSet()->isNull() ) { | 371 | if ( btn->iconSet() && !btn->iconSet()->isNull() ) { |
372 | QIconSet::Mode mode = btn->isEnabled() | 372 | QIconSet::Mode mode = btn->isEnabled() |
373 | ? QIconSet::Normal : QIconSet::Disabled; | 373 | ? QIconSet::Normal : QIconSet::Disabled; |
374 | if ( mode == QIconSet::Normal && btn->hasFocus() ) | 374 | if ( mode == QIconSet::Normal && btn->hasFocus() ) |
375 | mode = QIconSet::Active; | 375 | mode = QIconSet::Active; |
376 | QPixmap pixmap = btn->iconSet()->pixmap( QIconSet::Small, mode ); | 376 | QPixmap pixmap = btn->iconSet()->pixmap( QIconSet::Automatic, mode ); |
377 | int pixw = pixmap.width(); | 377 | int pixw = pixmap.width(); |
378 | int pixh = pixmap.height(); | 378 | int pixh = pixmap.height(); |
379 | p->drawPixmap( x+2, y+h/2-pixh/2, pixmap ); | 379 | p->drawPixmap( x+2, y+h/2-pixh/2, pixmap ); |
380 | x += pixw + 4; | 380 | x += pixw + 4; |
381 | w -= pixw + 4; | 381 | w -= pixw + 4; |
382 | } | 382 | } |
383 | drawItem( p, x, y, w, h, | 383 | drawItem( p, x, y, w, h, |
384 | AlignCenter | ShowPrefix, | 384 | AlignCenter | ShowPrefix, |
385 | cg, btn->isEnabled(), | 385 | cg, btn->isEnabled(), |
386 | btn->pixmap(), btn->text(), -1, &cg.buttonText() ); | 386 | btn->pixmap(), btn->text(), -1, &cg.buttonText() ); |
387 | 387 | ||
388 | } | 388 | } |
389 | 389 | ||
390 | QRect FlatStyle::comboButtonRect( int x, int y, int w, int h) | 390 | QRect FlatStyle::comboButtonRect( int x, int y, int w, int h) |
391 | { | 391 | { |
392 | return QRect(x+2, y+2, w-4-13, h-4); | 392 | return QRect(x+2, y+2, w-4-13, h-4); |
393 | } | 393 | } |
394 | 394 | ||
395 | 395 | ||
396 | QRect FlatStyle::comboButtonFocusRect( int x, int y, int w, int h) | 396 | QRect FlatStyle::comboButtonFocusRect( int x, int y, int w, int h) |
397 | { | 397 | { |
398 | return QRect(x+2, y+2, w-4-14, h-4); | 398 | return QRect(x+2, y+2, w-4-14, h-4); |
399 | } | 399 | } |
400 | 400 | ||
401 | void FlatStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, | 401 | void FlatStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, |
402 | const QColorGroup &g, bool sunken, | 402 | const QColorGroup &g, bool sunken, |
403 | bool /*editable*/, | 403 | bool /*editable*/, |
404 | bool enabled, | 404 | bool enabled, |
405 | const QBrush * /*fill*/ ) | 405 | const QBrush * /*fill*/ ) |
406 | { | 406 | { |
407 | x++; y++; | 407 | x++; y++; |
408 | w-=2; h-=2; | 408 | w-=2; h-=2; |
409 | p->setPen( g.foreground() ); | 409 | p->setPen( g.foreground() ); |
410 | p->setBrush( QBrush(NoBrush) ); | 410 | p->setBrush( QBrush(NoBrush) ); |
411 | p->drawRect( x, y, w, h ); | 411 | p->drawRect( x, y, w, h ); |
412 | p->setPen( g.background() ); | 412 | p->setPen( g.background() ); |
413 | p->drawRect( x+1, y+1, w-14, h-2 ); | 413 | p->drawRect( x+1, y+1, w-14, h-2 ); |
414 | p->fillRect( x+2, y+2, w-16, h-4, g.brush( QColorGroup::Base ) ); | 414 | p->fillRect( x+2, y+2, w-16, h-4, g.brush( QColorGroup::Base ) ); |
415 | QColorGroup cg( g ); | 415 | QColorGroup cg( g ); |
416 | if ( sunken ) { | 416 | if ( sunken ) { |
417 | cg.setColor( QColorGroup::ButtonText, g.button() ); | 417 | cg.setColor( QColorGroup::ButtonText, g.button() ); |
418 | cg.setColor( QColorGroup::Button, g.buttonText() ); | 418 | cg.setColor( QColorGroup::Button, g.buttonText() ); |
419 | } | 419 | } |
420 | drawArrow( p, QStyle::DownArrow, FALSE, | 420 | drawArrow( p, QStyle::DownArrow, FALSE, |
421 | x+w-13, y+1, 12, h-2, cg, enabled, | 421 | x+w-13, y+1, 12, h-2, cg, enabled, |
422 | &cg.brush( QColorGroup::Button ) ); | 422 | &cg.brush( QColorGroup::Button ) ); |
423 | 423 | ||
424 | } | 424 | } |
425 | 425 | ||
426 | 426 | ||
427 | void FlatStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, | 427 | void FlatStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, |
428 | int h, const QColorGroup &cg, bool on, bool down, bool enabled ) | 428 | int h, const QColorGroup &cg, bool on, bool down, bool enabled ) |
429 | { | 429 | { |
430 | static const QCOORD pts1[] = { // dark lines | 430 | static const QCOORD pts1[] = { // dark lines |
431 | 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; | 431 | 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; |
432 | static const QCOORD pts4[] = { // white lines | 432 | static const QCOORD pts4[] = { // white lines |
433 | 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, | 433 | 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, |
434 | 11,4, 10,3, 10,2 }; | 434 | 11,4, 10,3, 10,2 }; |
435 | static const QCOORD pts5[] = { // inner fill | 435 | static const QCOORD pts5[] = { // inner fill |
436 | 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; | 436 | 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; |
437 | 437 | ||
438 | p->eraseRect( x, y, w, h ); | 438 | p->eraseRect( x, y, w, h ); |
439 | QPointArray a( QCOORDARRLEN(pts1), pts4 ); | 439 | QPointArray a( QCOORDARRLEN(pts1), pts4 ); |
440 | a.translate( x, y ); | 440 | a.translate( x, y ); |
441 | p->setPen( cg.foreground() ); | 441 | p->setPen( cg.foreground() ); |
442 | p->drawPolyline( a ); | 442 | p->drawPolyline( a ); |
443 | a.setPoints( QCOORDARRLEN(pts4), pts1 ); | 443 | a.setPoints( QCOORDARRLEN(pts4), pts1 ); |
444 | a.translate( x, y ); | 444 | a.translate( x, y ); |
445 | p->setPen( cg.foreground() ); | 445 | p->setPen( cg.foreground() ); |
446 | p->drawPolyline( a ); | 446 | p->drawPolyline( a ); |
447 | a.setPoints( QCOORDARRLEN(pts5), pts5 ); | 447 | a.setPoints( QCOORDARRLEN(pts5), pts5 ); |
448 | a.translate( x, y ); | 448 | a.translate( x, y ); |
449 | QColor fillColor = ( down || !enabled ) ? cg.button() : cg.base(); | 449 | QColor fillColor = ( down || !enabled ) ? cg.button() : cg.base(); |
450 | p->setPen( fillColor ); | 450 | p->setPen( fillColor ); |
451 | p->setBrush( fillColor ) ; | 451 | p->setBrush( fillColor ) ; |
452 | p->drawPolygon( a ); | 452 | p->drawPolygon( a ); |
453 | if ( on ) { | 453 | if ( on ) { |
454 | p->setPen( NoPen ); | 454 | p->setPen( NoPen ); |
455 | p->setBrush( cg.text() ); | 455 | p->setBrush( cg.text() ); |
456 | p->drawRect( x+5, y+4, 2, 4 ); | 456 | p->drawRect( x+5, y+4, 2, 4 ); |
457 | p->drawRect( x+4, y+5, 4, 2 ); | 457 | p->drawRect( x+4, y+5, 4, 2 ); |
458 | } | 458 | } |
459 | } | 459 | } |
460 | 460 | ||
461 | void FlatStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, | 461 | void FlatStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, |
462 | const QColorGroup &cg, int state, bool down, bool enabled ) | 462 | const QColorGroup &cg, int state, bool down, bool enabled ) |
463 | { | 463 | { |
464 | QColorGroup mycg( cg ); | 464 | QColorGroup mycg( cg ); |
465 | mycg.setBrush( QColorGroup::Button, QBrush() ); | 465 | mycg.setBrush( QColorGroup::Button, QBrush() ); |
466 | QBrush fill; | 466 | QBrush fill; |
467 | drawButton( p, x, y, w, h, mycg, TRUE, 0 ); | 467 | drawButton( p, x, y, w, h, mycg, TRUE, 0 ); |
468 | if ( down ) | 468 | if ( down ) |
469 | fill = cg.brush( QColorGroup::Button ); | 469 | fill = cg.brush( QColorGroup::Button ); |
470 | else | 470 | else |
471 | fill = cg.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); | 471 | fill = cg.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); |
472 | mycg.setBrush( QColorGroup::Button, fill ); | 472 | mycg.setBrush( QColorGroup::Button, fill ); |
473 | p->fillRect( x+1, y+1, w-2, h-2, fill ); | 473 | p->fillRect( x+1, y+1, w-2, h-2, fill ); |
474 | if ( state != QButton::Off ) { | 474 | if ( state != QButton::Off ) { |
475 | QPointArray a( 7*2 ); | 475 | QPointArray a( 7*2 ); |
476 | int i, xx, yy; | 476 | int i, xx, yy; |
477 | xx = x+3; | 477 | xx = x+3; |
478 | yy = y+5; | 478 | yy = y+5; |
479 | for ( i=0; i<3; i++ ) { | 479 | for ( i=0; i<3; i++ ) { |
480 | a.setPoint( 2*i, xx, yy ); | 480 | a.setPoint( 2*i, xx, yy ); |
481 | a.setPoint( 2*i+1, xx, yy+2 ); | 481 | a.setPoint( 2*i+1, xx, yy+2 ); |
482 | xx++; yy++; | 482 | xx++; yy++; |
483 | } | 483 | } |
484 | yy -= 2; | 484 | yy -= 2; |
485 | for ( i=3; i<7; i++ ) { | 485 | for ( i=3; i<7; i++ ) { |
486 | a.setPoint( 2*i, xx, yy ); | 486 | a.setPoint( 2*i, xx, yy ); |
487 | a.setPoint( 2*i+1, xx, yy+2 ); | 487 | a.setPoint( 2*i+1, xx, yy+2 ); |
488 | xx++; yy--; | 488 | xx++; yy--; |
489 | } | 489 | } |
490 | if ( state == QButton::NoChange ) { | 490 | if ( state == QButton::NoChange ) { |
491 | p->setPen( mycg.dark() ); | 491 | p->setPen( mycg.dark() ); |
492 | } else { | 492 | } else { |
493 | p->setPen( mycg.text() ); | 493 | p->setPen( mycg.text() ); |
494 | } | 494 | } |
495 | p->drawLineSegments( a ); | 495 | p->drawLineSegments( a ); |
496 | } | 496 | } |
497 | } | 497 | } |
498 | 498 | ||
499 | #define HORIZONTAL(sb->orientation() == QScrollBar::Horizontal) | 499 | #define HORIZONTAL(sb->orientation() == QScrollBar::Horizontal) |
500 | #define VERTICAL!HORIZONTAL | 500 | #define VERTICAL!HORIZONTAL |
501 | #define MOTIF_BORDER2 | 501 | #define MOTIF_BORDER2 |
502 | #define SLIDER_MIN9 // ### motif says 6 but that's too small | 502 | #define SLIDER_MIN9 // ### motif says 6 but that's too small |
503 | 503 | ||
504 | /*! \reimp */ | 504 | /*! \reimp */ |
505 | 505 | ||
506 | void FlatStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) | 506 | void FlatStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) |
507 | { | 507 | { |
508 | int maxLength; | 508 | int maxLength; |
509 | int length = HORIZONTAL ? sb->width() : sb->height(); | 509 | int length = HORIZONTAL ? sb->width() : sb->height(); |
510 | int extent = HORIZONTAL ? sb->height() : sb->width(); | 510 | int extent = HORIZONTAL ? sb->height() : sb->width(); |
511 | 511 | ||
512 | if ( length > (extent - 1)*2 ) | 512 | if ( length > (extent - 1)*2 ) |
513 | buttonDim = extent; | 513 | buttonDim = extent; |
514 | else | 514 | else |
515 | buttonDim = length/2 - 1; | 515 | buttonDim = length/2 - 1; |
516 | 516 | ||
517 | sliderMin = 0; | 517 | sliderMin = 0; |
518 | maxLength = length - buttonDim*2 + 2; | 518 | maxLength = length - buttonDim*2 + 2; |
519 | 519 | ||
520 | if ( sb->maxValue() == sb->minValue() ) { | 520 | if ( sb->maxValue() == sb->minValue() ) { |
521 | sliderLength = maxLength; | 521 | sliderLength = maxLength; |
522 | } else { | 522 | } else { |
523 | sliderLength = (sb->pageStep()*maxLength)/ | 523 | sliderLength = (sb->pageStep()*maxLength)/ |
524 | (sb->maxValue()-sb->minValue()+sb->pageStep()); | 524 | (sb->maxValue()-sb->minValue()+sb->pageStep()); |
525 | uint range = sb->maxValue()-sb->minValue(); | 525 | uint range = sb->maxValue()-sb->minValue(); |
526 | if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) | 526 | if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) |
527 | sliderLength = SLIDER_MIN; | 527 | sliderLength = SLIDER_MIN; |
528 | if ( sliderLength > maxLength ) | 528 | if ( sliderLength > maxLength ) |
529 | sliderLength = maxLength; | 529 | sliderLength = maxLength; |
530 | } | 530 | } |
531 | 531 | ||
532 | sliderMax = sliderMin + maxLength - sliderLength; | 532 | sliderMax = sliderMin + maxLength - sliderLength; |
533 | } | 533 | } |
534 | 534 | ||
535 | /*!\reimp | 535 | /*!\reimp |
536 | */ | 536 | */ |
537 | QStyle::ScrollControl FlatStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) | 537 | QStyle::ScrollControl FlatStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) |
538 | { | 538 | { |
539 | if ( !sb->rect().contains( p ) ) | 539 | if ( !sb->rect().contains( p ) ) |
540 | return NoScroll; | 540 | return NoScroll; |
541 | int sliderMin, sliderMax, sliderLength, buttonDim, pos; | 541 | int sliderMin, sliderMax, sliderLength, buttonDim, pos; |
542 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 542 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
543 | 543 | ||
544 | if (sb->orientation() == QScrollBar::Horizontal) | 544 | if (sb->orientation() == QScrollBar::Horizontal) |
545 | pos = p.x(); | 545 | pos = p.x(); |
546 | else | 546 | else |
547 | pos = p.y(); | 547 | pos = p.y(); |
548 | 548 | ||
549 | if (pos < sliderStart) | 549 | if (pos < sliderStart) |
550 | return SubPage; | 550 | return SubPage; |
551 | if (pos < sliderStart + sliderLength) | 551 | if (pos < sliderStart + sliderLength) |
552 | return Slider; | 552 | return Slider; |
553 | if (pos < sliderMax + sliderLength) | 553 | if (pos < sliderMax + sliderLength) |
554 | return AddPage; | 554 | return AddPage; |
555 | if (pos < sliderMax + sliderLength + buttonDim) | 555 | if (pos < sliderMax + sliderLength + buttonDim) |
556 | return SubLine; | 556 | return SubLine; |
557 | return AddLine; | 557 | return AddLine; |
558 | } | 558 | } |
559 | 559 | ||
560 | /*! \reimp */ | 560 | /*! \reimp */ |
561 | 561 | ||
562 | void FlatStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl ) | 562 | void FlatStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl ) |
563 | { | 563 | { |
564 | #define ADD_LINE_ACTIVE ( activeControl == AddLine ) | 564 | #define ADD_LINE_ACTIVE ( activeControl == AddLine ) |
565 | #define SUB_LINE_ACTIVE ( activeControl == SubLine ) | 565 | #define SUB_LINE_ACTIVE ( activeControl == SubLine ) |
566 | QColorGroup g = sb->colorGroup(); | 566 | QColorGroup g = sb->colorGroup(); |
567 | 567 | ||
568 | int sliderMin, sliderMax, sliderLength, buttonDim; | 568 | int sliderMin, sliderMax, sliderLength, buttonDim; |
569 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 569 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
570 | 570 | ||
571 | if ( controls == (AddLine | SubLine | AddPage | SubPage | Slider | First | Last ) ) { | 571 | if ( controls == (AddLine | SubLine | AddPage | SubPage | Slider | First | Last ) ) { |
572 | p->setPen( g.foreground() ); | 572 | p->setPen( g.foreground() ); |
573 | p->setBrush( g.brush( QColorGroup::Mid ) ); | 573 | p->setBrush( g.brush( QColorGroup::Mid ) ); |
574 | p->drawRect( 0, 0, sb->width(), sb->height() ); | 574 | p->drawRect( 0, 0, sb->width(), sb->height() ); |
575 | } | 575 | } |
576 | 576 | ||
577 | if (sliderStart > sliderMax) { // sanity check | 577 | if (sliderStart > sliderMax) { // sanity check |
578 | sliderStart = sliderMax; | 578 | sliderStart = sliderMax; |
579 | } | 579 | } |
580 | 580 | ||
581 | int dimB = buttonDim; | 581 | int dimB = buttonDim; |
582 | QRect addB; | 582 | QRect addB; |
583 | QRect subB; | 583 | QRect subB; |
584 | QRect addPageR; | 584 | QRect addPageR; |
585 | QRect subPageR; | 585 | QRect subPageR; |
586 | QRect sliderR; | 586 | QRect sliderR; |
587 | int addX, addY, subX, subY; | 587 | int addX, addY, subX, subY; |
588 | int length = HORIZONTAL ? sb->width() : sb->height(); | 588 | int length = HORIZONTAL ? sb->width() : sb->height(); |
589 | int extent = HORIZONTAL ? sb->height() : sb->width(); | 589 | int extent = HORIZONTAL ? sb->height() : sb->width(); |
590 | 590 | ||
591 | if ( HORIZONTAL ) { | 591 | if ( HORIZONTAL ) { |
592 | subY = addY = ( extent - dimB ) / 2; | 592 | subY = addY = ( extent - dimB ) / 2; |
593 | subX = length - dimB - dimB + 1; | 593 | subX = length - dimB - dimB + 1; |
594 | addX = length - dimB; | 594 | addX = length - dimB; |
595 | } else { | 595 | } else { |
596 | subX = addX = ( extent - dimB ) / 2; | 596 | subX = addX = ( extent - dimB ) / 2; |
597 | subY = length - dimB - dimB + 1; | 597 | subY = length - dimB - dimB + 1; |
598 | addY = length - dimB; | 598 | addY = length - dimB; |
599 | } | 599 | } |
600 | 600 | ||
601 | int sliderEnd = sliderStart + sliderLength; | 601 | int sliderEnd = sliderStart + sliderLength; |
602 | int sliderW = extent; | 602 | int sliderW = extent; |
603 | if ( HORIZONTAL ) { | 603 | if ( HORIZONTAL ) { |
604 | subB.setRect( subX,subY,dimB,dimB ); | 604 | subB.setRect( subX,subY,dimB,dimB ); |
605 | addB.setRect( addX,addY,dimB,dimB ); | 605 | addB.setRect( addX,addY,dimB,dimB ); |
606 | subPageR.setRect( 0, 0, sliderStart+1, sliderW ); | 606 | subPageR.setRect( 0, 0, sliderStart+1, sliderW ); |
607 | addPageR.setRect( sliderEnd-1, 0, subX - sliderEnd+2, sliderW ); | 607 | addPageR.setRect( sliderEnd-1, 0, subX - sliderEnd+2, sliderW ); |
608 | sliderR .setRect( sliderStart, 0, sliderLength, sliderW ); | 608 | sliderR .setRect( sliderStart, 0, sliderLength, sliderW ); |
609 | 609 | ||
610 | } else { | 610 | } else { |
611 | subB.setRect( subX,subY,dimB,dimB ); | 611 | subB.setRect( subX,subY,dimB,dimB ); |
612 | addB.setRect( addX,addY,dimB,dimB ); | 612 | addB.setRect( addX,addY,dimB,dimB ); |
613 | subPageR.setRect( 0, 0, sliderW, sliderStart+1 ); | 613 | subPageR.setRect( 0, 0, sliderW, sliderStart+1 ); |
614 | addPageR.setRect( 0, sliderEnd-1, sliderW, subY - sliderEnd+2 ); | 614 | addPageR.setRect( 0, sliderEnd-1, sliderW, subY - sliderEnd+2 ); |
615 | sliderR .setRect( 0, sliderStart, sliderW, sliderLength ); | 615 | sliderR .setRect( 0, sliderStart, sliderW, sliderLength ); |
616 | } | 616 | } |
617 | 617 | ||
618 | bool maxedOut = (sb->maxValue() == sb->minValue()); | 618 | bool maxedOut = (sb->maxValue() == sb->minValue()); |
619 | p->setPen( g.foreground() ); | 619 | p->setPen( g.foreground() ); |
620 | if ( controls & AddLine ) { | 620 | if ( controls & AddLine ) { |
621 | p->setBrush( ADD_LINE_ACTIVE ? g.foreground() : g.button() ); | 621 | p->setBrush( ADD_LINE_ACTIVE ? g.foreground() : g.button() ); |
622 | p->drawRect( addB.x(), addB.y(), addB.width(), addB.height() ); | 622 | p->drawRect( addB.x(), addB.y(), addB.width(), addB.height() ); |
623 | p->setPen( ADD_LINE_ACTIVE ? g.button() : g.foreground() ); | 623 | p->setPen( ADD_LINE_ACTIVE ? g.button() : g.foreground() ); |
624 | QColorGroup cg( g ); | 624 | QColorGroup cg( g ); |
625 | if ( maxedOut ) | 625 | if ( maxedOut ) |
626 | cg.setColor( QColorGroup::ButtonText, g.mid() ); | 626 | cg.setColor( QColorGroup::ButtonText, g.mid() ); |
627 | else if ( ADD_LINE_ACTIVE ) | 627 | else if ( ADD_LINE_ACTIVE ) |
628 | cg.setColor( QColorGroup::ButtonText, g.button() ); | 628 | cg.setColor( QColorGroup::ButtonText, g.button() ); |
629 | int xo = VERTICAL ? 1 : 0; | 629 | int xo = VERTICAL ? 1 : 0; |
630 | drawArrow( p, VERTICAL ? DownArrow : RightArrow, FALSE, | 630 | drawArrow( p, VERTICAL ? DownArrow : RightArrow, FALSE, |
631 | addB.x()+2+xo, addB.y()+2, addB.width()-4-xo, addB.height()-4, | 631 | addB.x()+2+xo, addB.y()+2, addB.width()-4-xo, addB.height()-4, |
632 | cg, TRUE, &p->brush() ); | 632 | cg, TRUE, &p->brush() ); |
633 | } | 633 | } |
634 | if ( controls & SubLine ) { | 634 | if ( controls & SubLine ) { |
635 | p->setBrush( SUB_LINE_ACTIVE ? g.foreground() : g.button() ); | 635 | p->setBrush( SUB_LINE_ACTIVE ? g.foreground() : g.button() ); |
636 | p->drawRect( subB.x(), subB.y(), subB.width(), subB.height() ); | 636 | p->drawRect( subB.x(), subB.y(), subB.width(), subB.height() ); |
637 | p->setPen( SUB_LINE_ACTIVE ? g.button() : g.foreground() ); | 637 | p->setPen( SUB_LINE_ACTIVE ? g.button() : g.foreground() ); |
638 | QColorGroup cg( g ); | 638 | QColorGroup cg( g ); |
639 | if ( maxedOut ) | 639 | if ( maxedOut ) |
640 | cg.setColor( QColorGroup::ButtonText, g.mid() ); | 640 | cg.setColor( QColorGroup::ButtonText, g.mid() ); |
641 | else if ( SUB_LINE_ACTIVE ) | 641 | else if ( SUB_LINE_ACTIVE ) |
642 | cg.setColor( QColorGroup::ButtonText, g.button() ); | 642 | cg.setColor( QColorGroup::ButtonText, g.button() ); |
643 | int xo = VERTICAL ? 1 : 0; | 643 | int xo = VERTICAL ? 1 : 0; |
644 | drawArrow( p, VERTICAL ? UpArrow : LeftArrow, FALSE, | 644 | drawArrow( p, VERTICAL ? UpArrow : LeftArrow, FALSE, |
645 | subB.x()+2+xo, subB.y()+2, subB.width()-4-xo, subB.height()-4, | 645 | subB.x()+2+xo, subB.y()+2, subB.width()-4-xo, subB.height()-4, |
646 | cg, TRUE, &p->brush() ); | 646 | cg, TRUE, &p->brush() ); |
647 | } | 647 | } |
648 | 648 | ||
649 | 649 | ||
650 | p->setPen( g.foreground() ); | 650 | p->setPen( g.foreground() ); |
651 | p->setBrush( g.brush( QColorGroup::Mid ) ); | 651 | p->setBrush( g.brush( QColorGroup::Mid ) ); |
652 | if ( controls & SubPage ) | 652 | if ( controls & SubPage ) |
653 | p->drawRect( subPageR.x(), subPageR.y(), subPageR.width(), subPageR.height() ); | 653 | p->drawRect( subPageR.x(), subPageR.y(), subPageR.width(), subPageR.height() ); |
654 | if ( controls & AddPage && addPageR.y() < addPageR.bottom() && | 654 | if ( controls & AddPage && addPageR.y() < addPageR.bottom() && |
655 | addPageR.x() < addPageR.right() ) | 655 | addPageR.x() < addPageR.right() ) |
656 | p->drawRect( addPageR.x(), addPageR.y(), addPageR.width(), addPageR.height() ); | 656 | p->drawRect( addPageR.x(), addPageR.y(), addPageR.width(), addPageR.height() ); |
657 | if ( controls & Slider ) { | 657 | if ( controls & Slider ) { |
658 | QPoint bo = p->brushOrigin(); | 658 | QPoint bo = p->brushOrigin(); |
659 | p->setBrushOrigin(sliderR.topLeft()); | 659 | p->setBrushOrigin(sliderR.topLeft()); |
660 | p->setPen( g.foreground() ); | 660 | p->setPen( g.foreground() ); |
661 | p->setBrush( g.button() ); | 661 | p->setBrush( g.button() ); |
662 | p->drawRect( sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height() ); | 662 | p->drawRect( sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height() ); |
663 | p->setBrushOrigin(bo); | 663 | p->setBrushOrigin(bo); |
664 | QColorGroup cg( g ); | 664 | QColorGroup cg( g ); |
665 | if ( maxedOut ) | 665 | if ( maxedOut ) |
666 | cg.setColor( QColorGroup::ButtonText, g.mid() ); | 666 | cg.setColor( QColorGroup::ButtonText, g.mid() ); |
667 | drawRiffles( p, sliderR.x(), sliderR.y(), | 667 | drawRiffles( p, sliderR.x(), sliderR.y(), |
668 | sliderR.width(), sliderR.height(), cg, HORIZONTAL ); | 668 | sliderR.width(), sliderR.height(), cg, HORIZONTAL ); |
669 | } | 669 | } |
670 | 670 | ||
671 | // ### perhaps this should not be able to accept focus if maxedOut? | 671 | // ### perhaps this should not be able to accept focus if maxedOut? |
672 | if ( sb->hasFocus() && (controls & Slider) ) | 672 | if ( sb->hasFocus() && (controls & Slider) ) |
673 | p->drawWinFocusRect( sliderR.x()+2, sliderR.y()+2, | 673 | p->drawWinFocusRect( sliderR.x()+2, sliderR.y()+2, |
674 | sliderR.width()-5, sliderR.height()-5, | 674 | sliderR.width()-5, sliderR.height()-5, |
675 | sb->backgroundColor() ); | 675 | sb->backgroundColor() ); |
676 | 676 | ||
677 | } | 677 | } |
678 | 678 | ||
679 | void FlatStyle::drawRiffles( QPainter* p, int x, int y, int w, int h, | 679 | void FlatStyle::drawRiffles( QPainter* p, int x, int y, int w, int h, |
680 | const QColorGroup &g, bool horizontal ) | 680 | const QColorGroup &g, bool horizontal ) |
681 | { | 681 | { |
682 | if (!horizontal) { | 682 | if (!horizontal) { |
683 | if (h > 20) { | 683 | if (h > 20) { |
684 | y += (h-20)/2 ; | 684 | y += (h-20)/2 ; |
685 | h = 20; | 685 | h = 20; |
686 | } | 686 | } |
687 | if (h > 12) { | 687 | if (h > 12) { |
688 | int n = 3; | 688 | int n = 3; |
689 | int my = y+h/2-2; | 689 | int my = y+h/2-2; |
690 | int i ; | 690 | int i ; |
691 | p->setPen(g.buttonText()); | 691 | p->setPen(g.buttonText()); |
692 | for (i=0; i<n; i++) { | 692 | for (i=0; i<n; i++) { |
693 | p->drawLine(x+4, my+3*i, x+w-5, my+3*i); | 693 | p->drawLine(x+4, my+3*i, x+w-5, my+3*i); |
694 | } | 694 | } |
695 | } | 695 | } |
696 | } else { | 696 | } else { |
697 | if (w > 20) { | 697 | if (w > 20) { |
698 | x += (w-20)/2 ; | 698 | x += (w-20)/2 ; |
699 | w = 20; | 699 | w = 20; |
700 | } | 700 | } |
701 | if (w > 12) { | 701 | if (w > 12) { |
702 | int n = 3; | 702 | int n = 3; |
703 | int mx = x+w/2-4; | 703 | int mx = x+w/2-4; |
704 | int i ; | 704 | int i ; |
705 | p->setPen(g.buttonText()); | 705 | p->setPen(g.buttonText()); |
706 | for (i=0; i<n; i++) { | 706 | for (i=0; i<n; i++) { |
707 | p->drawLine(mx+3*i, y+4, mx + 3*i, y+h-5); | 707 | p->drawLine(mx+3*i, y+4, mx + 3*i, y+h-5); |
708 | } | 708 | } |
709 | } | 709 | } |
710 | } | 710 | } |
711 | } | 711 | } |
712 | 712 | ||
713 | int FlatStyle::sliderLength() const | 713 | int FlatStyle::sliderLength() const |
714 | { | 714 | { |
715 | return 12; | 715 | return 12; |
716 | } | 716 | } |
717 | 717 | ||
718 | void FlatStyle::drawSlider( QPainter *p, int x, int y, int w, int h, | 718 | void FlatStyle::drawSlider( QPainter *p, int x, int y, int w, int h, |
719 | const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ) | 719 | const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ) |
720 | { | 720 | { |
721 | int a = tickAbove ? 3 : 0; | 721 | int a = tickAbove ? 3 : 0; |
722 | int b = tickBelow ? 3 : 0; | 722 | int b = tickBelow ? 3 : 0; |
723 | 723 | ||
724 | p->setPen( g.foreground() ); | 724 | p->setPen( g.foreground() ); |
725 | p->setBrush( g.button() ); | 725 | p->setBrush( g.button() ); |
726 | if ( o == Horizontal ) { | 726 | if ( o == Horizontal ) { |
727 | p->drawRect( x, y+a, w, h-a-b ); | 727 | p->drawRect( x, y+a, w, h-a-b ); |
728 | int xp = x + w/2; | 728 | int xp = x + w/2; |
729 | p->drawLine( xp-1, y+a+3, xp-1, y+h-b-4 ); | 729 | p->drawLine( xp-1, y+a+3, xp-1, y+h-b-4 ); |
730 | p->drawLine( xp, y+a+3, xp, y+h-b-4 ); | 730 | p->drawLine( xp, y+a+3, xp, y+h-b-4 ); |
731 | } else { | 731 | } else { |
732 | p->drawRect( x+a, y, w-a-b, h ); | 732 | p->drawRect( x+a, y, w-a-b, h ); |
733 | int yp = y + h/2; | 733 | int yp = y + h/2; |
734 | p->drawLine( x+a+3, yp-1, x+w-b-4, yp-1 ); | 734 | p->drawLine( x+a+3, yp-1, x+w-b-4, yp-1 ); |
735 | p->drawLine( x+a+3, yp, x+w-b-4, yp ); | 735 | p->drawLine( x+a+3, yp, x+w-b-4, yp ); |
736 | } | 736 | } |
737 | } | 737 | } |
738 | 738 | ||
739 | void FlatStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h, | 739 | void FlatStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h, |
740 | Orientation o, bool tickAbove, bool tickBelow ) | 740 | Orientation o, bool tickAbove, bool tickBelow ) |
741 | { | 741 | { |
742 | int a = tickAbove ? 3 : 0; | 742 | int a = tickAbove ? 3 : 0; |
743 | int b = tickBelow ? 3 : 0; | 743 | int b = tickBelow ? 3 : 0; |
744 | if ( o == Horizontal ) | 744 | if ( o == Horizontal ) |
745 | p->fillRect( x, y+a, w, h-a-b, color1 ); | 745 | p->fillRect( x, y+a, w, h-a-b, color1 ); |
746 | else | 746 | else |
747 | p->fillRect( x+a, y, w-a-b, h, color1 ); | 747 | p->fillRect( x+a, y, w-a-b, h, color1 ); |
748 | } | 748 | } |
749 | 749 | ||
750 | /*!\reimp | 750 | /*!\reimp |
751 | */ | 751 | */ |
752 | void FlatStyle::drawSliderGrooveMask( QPainter *p, | 752 | void FlatStyle::drawSliderGrooveMask( QPainter *p, |
753 | int x, int y, int w, int h, | 753 | int x, int y, int w, int h, |
754 | const QColorGroup& , QCOORD c, | 754 | const QColorGroup& , QCOORD c, |
755 | Orientation orient ) | 755 | Orientation orient ) |
756 | { | 756 | { |
757 | if ( orient == Horizontal ) | 757 | if ( orient == Horizontal ) |
758 | p->fillRect( x, y + c - 2, w, 4, color1 ); | 758 | p->fillRect( x, y + c - 2, w, 4, color1 ); |
759 | else | 759 | else |
760 | p->fillRect( x + c - 2, y, 4, h, color1 ); | 760 | p->fillRect( x + c - 2, y, 4, h, color1 ); |
761 | } | 761 | } |
762 | 762 | ||
763 | void FlatStyle::drawSliderGroove( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, QCOORD c, Orientation orient ) | 763 | void FlatStyle::drawSliderGroove( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, QCOORD c, Orientation orient ) |
764 | { | 764 | { |
765 | if ( orient == Horizontal ) | 765 | if ( orient == Horizontal ) |
766 | p->fillRect( x, y + c - 2, w, 4, g.foreground() ); | 766 | p->fillRect( x, y + c - 2, w, 4, g.foreground() ); |
767 | else | 767 | else |
768 | p->fillRect( x + c - 2, y, 4, h, g.foreground() ); | 768 | p->fillRect( x + c - 2, y, 4, h, g.foreground() ); |
769 | } | 769 | } |
770 | 770 | ||
771 | void FlatStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) | 771 | void FlatStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) |
772 | { | 772 | { |
773 | QRect r( t->rect() ); | 773 | QRect r( t->rect() ); |
774 | if ( tb->shape() == QTabBar::RoundedAbove ) { | 774 | if ( tb->shape() == QTabBar::RoundedAbove ) { |
775 | p->setPen( tb->colorGroup().foreground() ); | 775 | p->setPen( tb->colorGroup().foreground() ); |
776 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); | 776 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); |
777 | if ( r.left() == 0 ) | 777 | if ( r.left() == 0 ) |
778 | p->drawPoint( tb->rect().bottomLeft() ); | 778 | p->drawPoint( tb->rect().bottomLeft() ); |
779 | else | 779 | else |
780 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); | 780 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); |
781 | 781 | ||
782 | if ( selected ) { | 782 | if ( selected ) { |
783 | p->setPen( tb->colorGroup().background() ); | 783 | p->setPen( tb->colorGroup().background() ); |
784 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); | 784 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); |
785 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), | 785 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), |
786 | tb->colorGroup().brush( QColorGroup::Background )); | 786 | tb->colorGroup().brush( QColorGroup::Background )); |
787 | } else { | 787 | } else { |
788 | r.setRect( r.left() + 2, r.top() + 2, | 788 | r.setRect( r.left() + 2, r.top() + 2, |
789 | r.width() - 4, r.height() - 2 ); | 789 | r.width() - 4, r.height() - 2 ); |
790 | p->setPen( tb->colorGroup().button() ); | 790 | p->setPen( tb->colorGroup().button() ); |
791 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); | 791 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); |
792 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), | 792 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), |
793 | tb->colorGroup().brush( QColorGroup::Button )); | 793 | tb->colorGroup().brush( QColorGroup::Button )); |
794 | } | 794 | } |
795 | 795 | ||
796 | p->setPen( tb->colorGroup().foreground() ); | 796 | p->setPen( tb->colorGroup().foreground() ); |
797 | p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); | 797 | p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); |
798 | p->drawPoint( r.left()+1, r.top() + 1 ); | 798 | p->drawPoint( r.left()+1, r.top() + 1 ); |
799 | p->drawLine( r.left()+2, r.top(), | 799 | p->drawLine( r.left()+2, r.top(), |
800 | r.right() - 2, r.top() ); | 800 | r.right() - 2, r.top() ); |
801 | 801 | ||
802 | p->drawPoint( r.right() - 1, r.top() + 1 ); | 802 | p->drawPoint( r.right() - 1, r.top() + 1 ); |
803 | p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); | 803 | p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); |
804 | } else if ( tb->shape() == QTabBar::RoundedBelow ) { | 804 | } else if ( tb->shape() == QTabBar::RoundedBelow ) { |
805 | if ( selected ) { | 805 | if ( selected ) { |
806 | p->setPen( tb->colorGroup().background() ); | 806 | p->setPen( tb->colorGroup().background() ); |
807 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); | 807 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); |
808 | p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), | 808 | p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), |
809 | tb->palette().normal().brush( QColorGroup::Background )); | 809 | tb->palette().normal().brush( QColorGroup::Background )); |
810 | } else { | 810 | } else { |
811 | p->setPen( tb->colorGroup().foreground() ); | 811 | p->setPen( tb->colorGroup().foreground() ); |
812 | p->drawLine( r.left(), r.top(), | 812 | p->drawLine( r.left(), r.top(), |
813 | r.right(), r.top() ); | 813 | r.right(), r.top() ); |
814 | r.setRect( r.left() + 2, r.top(), | 814 | r.setRect( r.left() + 2, r.top(), |
815 | r.width() - 4, r.height() - 2 ); | 815 | r.width() - 4, r.height() - 2 ); |
816 | p->setPen( tb->colorGroup().button() ); | 816 | p->setPen( tb->colorGroup().button() ); |
817 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); | 817 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); |
818 | p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), | 818 | p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), |
819 | tb->palette().normal().brush( QColorGroup::Button )); | 819 | tb->palette().normal().brush( QColorGroup::Button )); |
820 | } | 820 | } |
821 | 821 | ||
822 | p->setPen( tb->colorGroup().foreground() ); | 822 | p->setPen( tb->colorGroup().foreground() ); |
823 | p->drawLine( r.right(), r.top(), | 823 | p->drawLine( r.right(), r.top(), |
824 | r.right(), r.bottom() - 2 ); | 824 | r.right(), r.bottom() - 2 ); |
825 | p->drawPoint( r.right() - 1, r.bottom() - 1 ); | 825 | p->drawPoint( r.right() - 1, r.bottom() - 1 ); |
826 | p->drawLine( r.right() - 2, r.bottom(), | 826 | p->drawLine( r.right() - 2, r.bottom(), |
827 | r.left() + 2, r.bottom() ); | 827 | r.left() + 2, r.bottom() ); |
828 | 828 | ||
829 | p->drawLine( r.left(), r.top()+1, | 829 | p->drawLine( r.left(), r.top()+1, |
830 | r.left(), r.bottom() - 2 ); | 830 | r.left(), r.bottom() - 2 ); |
831 | p->drawPoint( r.left() + 1, r.bottom() - 1 ); | 831 | p->drawPoint( r.left() + 1, r.bottom() - 1 ); |
832 | if ( r.left() == 0 ) | 832 | if ( r.left() == 0 ) |
833 | p->drawPoint( tb->rect().topLeft() ); | 833 | p->drawPoint( tb->rect().topLeft() ); |
834 | 834 | ||
835 | } else { | 835 | } else { |
836 | QCommonStyle::drawTab( p, tb, t, selected ); | 836 | QCommonStyle::drawTab( p, tb, t, selected ); |
837 | } | 837 | } |
838 | } | 838 | } |
839 | 839 | ||
840 | static const int motifItemFrame = 0;// menu item frame width | 840 | static const int motifItemFrame = 0;// menu item frame width |
841 | static const int motifSepHeight = 2;// separator item height | 841 | static const int motifSepHeight = 2;// separator item height |
842 | static const int motifItemHMargin = 1;// menu item hor text margin | 842 | static const int motifItemHMargin = 1;// menu item hor text margin |
843 | static const int motifItemVMargin = 2;// menu item ver text margin | 843 | static const int motifItemVMargin = 2;// menu item ver text margin |
844 | static const int motifArrowHMargin = 0;// arrow horizontal margin | 844 | static const int motifArrowHMargin = 0;// arrow horizontal margin |
845 | static const int motifTabSpacing = 12;// space between text and tab | 845 | static const int motifTabSpacing = 12;// space between text and tab |
846 | static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark | 846 | static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark |
847 | static const int windowsRightBorder= 8; // right border on windows | 847 | static const int windowsRightBorder= 8; // right border on windows |
848 | static const int windowsCheckMarkWidth = 2; // checkmarks width on windows | 848 | static const int windowsCheckMarkWidth = 2; // checkmarks width on windows |
849 | 849 | ||
850 | void FlatStyle::polishPopupMenu ( QPopupMenu *m ) | 850 | void FlatStyle::polishPopupMenu ( QPopupMenu *m ) |
851 | { | 851 | { |
852 | QWindowsStyle::polishPopupMenu( m ); | 852 | QWindowsStyle::polishPopupMenu( m ); |
853 | m->setLineWidth( 1 ); | 853 | m->setLineWidth( 1 ); |
854 | } | 854 | } |
855 | 855 | ||
856 | /*! \reimp | 856 | /*! \reimp |
857 | */ | 857 | */ |
858 | int FlatStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) | 858 | int FlatStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) |
859 | { | 859 | { |
860 | #ifndef QT_NO_MENUDATA | 860 | #ifndef QT_NO_MENUDATA |
861 | int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm | 861 | int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm |
862 | 862 | ||
863 | if ( mi->isSeparator() ) | 863 | if ( mi->isSeparator() ) |
864 | return 10; // arbitrary | 864 | return 10; // arbitrary |
865 | else if ( mi->pixmap() ) | 865 | else if ( mi->pixmap() ) |
866 | w += mi->pixmap()->width();// pixmap only | 866 | w += mi->pixmap()->width();// pixmap only |
867 | 867 | ||
868 | if ( !mi->text().isNull() ) { | 868 | if ( !mi->text().isNull() ) { |
869 | if ( mi->text().find('\t') >= 0 )// string contains tab | 869 | if ( mi->text().find('\t') >= 0 )// string contains tab |
870 | w += motifTabSpacing; | 870 | w += motifTabSpacing; |
871 | } | 871 | } |
872 | 872 | ||
873 | if ( maxpmw ) { // we have iconsets | 873 | if ( maxpmw ) { // we have iconsets |
874 | w += maxpmw; | 874 | w += maxpmw; |
875 | w += 6; // add a little extra border around the iconset | 875 | w += 6; // add a little extra border around the iconset |
876 | } | 876 | } |
877 | 877 | ||
878 | if ( checkable && maxpmw < windowsCheckMarkWidth ) { | 878 | if ( checkable && maxpmw < windowsCheckMarkWidth ) { |
879 | w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks | 879 | w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks |
880 | } | 880 | } |
881 | 881 | ||
882 | if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) | 882 | if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) |
883 | w += motifCheckMarkHMargin; // add space to separate the columns | 883 | w += motifCheckMarkHMargin; // add space to separate the columns |
884 | 884 | ||
885 | w += windowsRightBorder; // windows has a strange wide border on the right side | 885 | w += windowsRightBorder; // windows has a strange wide border on the right side |
886 | 886 | ||
887 | return w; | 887 | return w; |
888 | #endif | 888 | #endif |
889 | } | 889 | } |
890 | 890 | ||
891 | /*! \reimp | 891 | /*! \reimp |
892 | */ | 892 | */ |
893 | int FlatStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) | 893 | int FlatStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) |
894 | { | 894 | { |
895 | #ifndef QT_NO_MENUDATA | 895 | #ifndef QT_NO_MENUDATA |
896 | int h = 0; | 896 | int h = 0; |
897 | if ( mi->isSeparator() ) // separator height | 897 | if ( mi->isSeparator() ) // separator height |
898 | h = motifSepHeight; | 898 | h = motifSepHeight; |
899 | else if ( mi->pixmap() ) // pixmap height | 899 | else if ( mi->pixmap() ) // pixmap height |
900 | h = mi->pixmap()->height() + 2*motifItemFrame; | 900 | h = mi->pixmap()->height() + 2*motifItemFrame; |
901 | else // text height | 901 | else // text height |
902 | h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1; | 902 | h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1; |
903 | 903 | ||
904 | if ( !mi->isSeparator() && mi->iconSet() != 0 ) { | 904 | if ( !mi->isSeparator() && mi->iconSet() != 0 ) { |
905 | h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame ); | 905 | h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame ); |
906 | } | 906 | } |
907 | if ( mi->custom() ) | 907 | if ( mi->custom() ) |
908 | h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; | 908 | h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; |
909 | return h; | 909 | return h; |
910 | #endif | 910 | #endif |
911 | } | 911 | } |
912 | 912 | ||
913 | void FlatStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, | 913 | void FlatStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, |
914 | const QPalette& pal, | 914 | const QPalette& pal, |
915 | bool act, bool enabled, int x, int y, int w, int h) | 915 | bool act, bool enabled, int x, int y, int w, int h) |
916 | { | 916 | { |
917 | #ifndef QT_NO_MENUDATA | 917 | #ifndef QT_NO_MENUDATA |
918 | const QColorGroup & g = pal.active(); | 918 | const QColorGroup & g = pal.active(); |
919 | bool dis = !enabled; | 919 | bool dis = !enabled; |
920 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); | 920 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); |
921 | 921 | ||
922 | if ( checkable ) | 922 | if ( checkable ) |
923 | maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks | 923 | maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks |
924 | 924 | ||
925 | int checkcol = maxpmw; | 925 | int checkcol = maxpmw; |
926 | 926 | ||
927 | if ( mi && mi->isSeparator() ) { // draw separator | 927 | if ( mi && mi->isSeparator() ) { // draw separator |
928 | p->setPen( g.dark() ); | 928 | p->setPen( g.dark() ); |
929 | p->drawLine( x, y, x+w, y ); | 929 | p->drawLine( x, y, x+w, y ); |
930 | return; | 930 | return; |
931 | } | 931 | } |
932 | 932 | ||
933 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : | 933 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : |
934 | g.brush( QColorGroup::Button ); | 934 | g.brush( QColorGroup::Button ); |
935 | p->fillRect( x, y, w, h, fill); | 935 | p->fillRect( x, y, w, h, fill); |
936 | 936 | ||
937 | if ( !mi ) | 937 | if ( !mi ) |
938 | return; | 938 | return; |
939 | 939 | ||
940 | if ( mi->isChecked() ) { | 940 | if ( mi->isChecked() ) { |
941 | if ( act && !dis ) { | 941 | if ( act && !dis ) { |
942 | qDrawShadePanel( p, x, y, checkcol, h, | 942 | qDrawShadePanel( p, x, y, checkcol, h, |
943 | g, TRUE, 1, &g.brush( QColorGroup::Button ) ); | 943 | g, TRUE, 1, &g.brush( QColorGroup::Button ) ); |
944 | } else { | 944 | } else { |
945 | qDrawShadePanel( p, x, y, checkcol, h, | 945 | qDrawShadePanel( p, x, y, checkcol, h, |
946 | g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); | 946 | g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); |
947 | } | 947 | } |
948 | } else if ( !act ) { | 948 | } else if ( !act ) { |
949 | p->fillRect(x, y, checkcol , h, | 949 | p->fillRect(x, y, checkcol , h, |
950 | g.brush( QColorGroup::Button )); | 950 | g.brush( QColorGroup::Button )); |
951 | } | 951 | } |
952 | 952 | ||
953 | if ( mi->iconSet() ) { // draw iconset | 953 | if ( mi->iconSet() ) { // draw iconset |
954 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; | 954 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; |
955 | if (act && !dis ) | 955 | if (act && !dis ) |
956 | mode = QIconSet::Active; | 956 | mode = QIconSet::Active; |
957 | QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode ); | 957 | QPixmap pixmap; |
958 | if ( mode == QIconSet::Disabled ) | ||
959 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
960 | else | ||
961 | pixmap = mi->iconSet()->pixmap(); | ||
958 | int pixw = pixmap.width(); | 962 | int pixw = pixmap.width(); |
959 | int pixh = pixmap.height(); | 963 | int pixh = pixmap.height(); |
960 | if ( act && !dis ) { | 964 | if ( act && !dis ) { |
961 | if ( !mi->isChecked() ) | 965 | if ( !mi->isChecked() ) |
962 | qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); | 966 | qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); |
963 | } | 967 | } |
964 | QRect cr( x, y, checkcol, h ); | 968 | QRect cr( x, y, checkcol, h ); |
965 | QRect pmr( 0, 0, pixw, pixh ); | 969 | QRect pmr( 0, 0, pixw, pixh ); |
966 | pmr.moveCenter( cr.center() ); | 970 | pmr.moveCenter( cr.center() ); |
967 | p->setPen( itemg.text() ); | 971 | p->setPen( itemg.text() ); |
968 | p->drawPixmap( pmr.topLeft(), pixmap ); | 972 | p->drawPixmap( pmr.topLeft(), pixmap ); |
969 | 973 | ||
970 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : | 974 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : |
971 | g.brush( QColorGroup::Button ); | 975 | g.brush( QColorGroup::Button ); |
972 | p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); | 976 | p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); |
973 | } else if ( checkable ) {// just "checking"... | 977 | } else if ( checkable ) {// just "checking"... |
974 | int mw = checkcol + motifItemFrame; | 978 | int mw = checkcol + motifItemFrame; |
975 | int mh = h - 2*motifItemFrame; | 979 | int mh = h - 2*motifItemFrame; |
976 | if ( mi->isChecked() ) { | 980 | if ( mi->isChecked() ) { |
977 | drawCheckMark( p, x + motifItemFrame + 2, | 981 | drawCheckMark( p, x + motifItemFrame + 2, |
978 | y+motifItemFrame, mw, mh, itemg, act, dis ); | 982 | y+motifItemFrame, mw, mh, itemg, act, dis ); |
979 | } | 983 | } |
980 | } | 984 | } |
981 | 985 | ||
982 | p->setPen( act ? g.highlightedText() : g.buttonText() ); | 986 | p->setPen( act ? g.highlightedText() : g.buttonText() ); |
983 | 987 | ||
984 | QColor discol; | 988 | QColor discol; |
985 | if ( dis ) { | 989 | if ( dis ) { |
986 | discol = itemg.text(); | 990 | discol = itemg.text(); |
987 | p->setPen( discol ); | 991 | p->setPen( discol ); |
988 | } | 992 | } |
989 | 993 | ||
990 | int xm = motifItemFrame + checkcol + motifItemHMargin; | 994 | int xm = motifItemFrame + checkcol + motifItemHMargin; |
991 | 995 | ||
992 | if ( mi->custom() ) { | 996 | if ( mi->custom() ) { |
993 | int m = motifItemVMargin; | 997 | int m = motifItemVMargin; |
994 | p->save(); | 998 | p->save(); |
995 | if ( dis && !act ) { | 999 | if ( dis && !act ) { |
996 | p->setPen( g.light() ); | 1000 | p->setPen( g.light() ); |
997 | mi->custom()->paint( p, itemg, act, enabled, | 1001 | mi->custom()->paint( p, itemg, act, enabled, |
998 | x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); | 1002 | x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); |
999 | p->setPen( discol ); | 1003 | p->setPen( discol ); |
1000 | } | 1004 | } |
1001 | mi->custom()->paint( p, itemg, act, enabled, | 1005 | mi->custom()->paint( p, itemg, act, enabled, |
1002 | x+xm, y+m, w-xm-tab+1, h-2*m ); | 1006 | x+xm, y+m, w-xm-tab+1, h-2*m ); |
1003 | p->restore(); | 1007 | p->restore(); |
1004 | } | 1008 | } |
1005 | QString s = mi->text(); | 1009 | QString s = mi->text(); |
1006 | if ( !s.isNull() ) { // draw text | 1010 | if ( !s.isNull() ) { // draw text |
1007 | int t = s.find( '\t' ); | 1011 | int t = s.find( '\t' ); |
1008 | int m = motifItemVMargin; | 1012 | int m = motifItemVMargin; |
1009 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; | 1013 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; |
1010 | if ( t >= 0 ) { // draw tab text | 1014 | if ( t >= 0 ) { // draw tab text |
1011 | if ( dis && !act ) { | 1015 | if ( dis && !act ) { |
1012 | p->setPen( g.light() ); | 1016 | p->setPen( g.light() ); |
1013 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, | 1017 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, |
1014 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); | 1018 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); |
1015 | p->setPen( discol ); | 1019 | p->setPen( discol ); |
1016 | } | 1020 | } |
1017 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, | 1021 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, |
1018 | y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); | 1022 | y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); |
1019 | } | 1023 | } |
1020 | if ( dis && !act ) | 1024 | if ( dis && !act ) |
1021 | p->setPen( discol ); | 1025 | p->setPen( discol ); |
1022 | p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); | 1026 | p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); |
1023 | } else if ( mi->pixmap() ) { // draw pixmap | 1027 | } else if ( mi->pixmap() ) { // draw pixmap |
1024 | QPixmap *pixmap = mi->pixmap(); | 1028 | QPixmap *pixmap = mi->pixmap(); |
1025 | if ( pixmap->depth() == 1 ) | 1029 | if ( pixmap->depth() == 1 ) |
1026 | p->setBackgroundMode( OpaqueMode ); | 1030 | p->setBackgroundMode( OpaqueMode ); |
1027 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); | 1031 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); |
1028 | if ( pixmap->depth() == 1 ) | 1032 | if ( pixmap->depth() == 1 ) |
1029 | p->setBackgroundMode( TransparentMode ); | 1033 | p->setBackgroundMode( TransparentMode ); |
1030 | } | 1034 | } |
1031 | if ( mi->popup() ) { // draw sub menu arrow | 1035 | if ( mi->popup() ) { // draw sub menu arrow |
1032 | int dim = (h-2*motifItemFrame) / 2; | 1036 | int dim = (h-2*motifItemFrame) / 2; |
1033 | if ( act ) { | 1037 | if ( act ) { |
1034 | if ( !dis ) | 1038 | if ( !dis ) |
1035 | discol = white; | 1039 | discol = white; |
1036 | QColorGroup g2( discol, g.highlight(), | 1040 | QColorGroup g2( discol, g.highlight(), |
1037 | white, white, | 1041 | white, white, |
1038 | dis ? discol : white, | 1042 | dis ? discol : white, |
1039 | discol, white ); | 1043 | discol, white ); |
1040 | drawArrow( p, RightArrow, FALSE, | 1044 | drawArrow( p, RightArrow, FALSE, |
1041 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 1045 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
1042 | dim, dim, g2, TRUE ); | 1046 | dim, dim, g2, TRUE ); |
1043 | } else { | 1047 | } else { |
1044 | drawArrow( p, RightArrow, | 1048 | drawArrow( p, RightArrow, |
1045 | FALSE, | 1049 | FALSE, |
1046 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 1050 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
1047 | dim, dim, g, mi->isEnabled() ); | 1051 | dim, dim, g, mi->isEnabled() ); |
1048 | } | 1052 | } |
1049 | } | 1053 | } |
1050 | #endif | 1054 | #endif |
1051 | } | 1055 | } |
1052 | 1056 | ||
1053 | void FlatStyle::getButtonShift( int &x, int &y ) | 1057 | void FlatStyle::getButtonShift( int &x, int &y ) |
1054 | { | 1058 | { |
1055 | x = 0; y = 0; | 1059 | x = 0; y = 0; |
1056 | } | 1060 | } |
1057 | 1061 | ||
1058 | //=========================================================================== | 1062 | //=========================================================================== |
1059 | 1063 | ||
1060 | FlatStyleImpl::FlatStyleImpl() | 1064 | FlatStyleImpl::FlatStyleImpl() |
1061 | : flat(0) | 1065 | : flat(0) |
1062 | { | 1066 | { |
1063 | } | 1067 | } |
1064 | 1068 | ||
1065 | FlatStyleImpl::~FlatStyleImpl() | 1069 | FlatStyleImpl::~FlatStyleImpl() |
1066 | { | 1070 | { |
1067 | // We do not delete the style because Qt does that when a new style | 1071 | // We do not delete the style because Qt does that when a new style |
1068 | // is set. | 1072 | // is set. |
1069 | } | 1073 | } |
1070 | 1074 | ||
1071 | QStyle *FlatStyleImpl::style() | 1075 | QStyle *FlatStyleImpl::style() |
1072 | { | 1076 | { |
1073 | if ( !flat ) | 1077 | if ( !flat ) |
1074 | flat = new FlatStyle(); | 1078 | flat = new FlatStyle(); |
1075 | return flat; | 1079 | return flat; |
1076 | } | 1080 | } |
1077 | 1081 | ||
1078 | QString FlatStyleImpl::name() const | 1082 | QString FlatStyleImpl::name() const |
1079 | { | 1083 | { |
1080 | return qApp->translate("FlatStyle", "Flat", "Name of the style Flat"); | 1084 | return qApp->translate("FlatStyle", "Flat", "Name of the style Flat"); |
1081 | } | 1085 | } |
1082 | 1086 | ||
1083 | QRESULT FlatStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) | 1087 | QRESULT FlatStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) |
1084 | { | 1088 | { |
1085 | *iface = 0; | 1089 | *iface = 0; |
1086 | if ( uuid == IID_QUnknown ) | 1090 | if ( uuid == IID_QUnknown ) |
1087 | *iface = this; | 1091 | *iface = this; |
1088 | else if ( uuid == IID_Style ) | 1092 | else if ( uuid == IID_Style ) |
1089 | *iface = this; | 1093 | *iface = this; |
1090 | else | 1094 | else |
1091 | return QS_FALSE; | 1095 | return QS_FALSE; |
1092 | 1096 | ||
1093 | (*iface)->addRef(); | 1097 | (*iface)->addRef(); |
1094 | return QS_OK; | 1098 | return QS_OK; |
1095 | } | 1099 | } |
1096 | 1100 | ||
1097 | Q_EXPORT_INTERFACE() | 1101 | Q_EXPORT_INTERFACE() |
1098 | { | 1102 | { |
1099 | Q_CREATE_INSTANCE( FlatStyleImpl ) | 1103 | Q_CREATE_INSTANCE( FlatStyleImpl ) |
1100 | } | 1104 | } |
1101 | 1105 | ||
1102 | #include "flat.moc" | 1106 | #include "flat.moc" |
diff --git a/noncore/styles/fresh/fresh.cpp b/noncore/styles/fresh/fresh.cpp index 831b620..856f68b 100644 --- a/noncore/styles/fresh/fresh.cpp +++ b/noncore/styles/fresh/fresh.cpp | |||
@@ -1,848 +1,852 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "fresh.h" | 21 | #include "fresh.h" |
22 | #include <qpe/qpeapplication.h> | 22 | #include <qpe/qpeapplication.h> |
23 | #include <qpushbutton.h> | 23 | #include <qpushbutton.h> |
24 | #include <qpainter.h> | 24 | #include <qpainter.h> |
25 | #include <qfontmetrics.h> | 25 | #include <qfontmetrics.h> |
26 | #include <qpalette.h> | 26 | #include <qpalette.h> |
27 | #include <qdrawutil.h> | 27 | #include <qdrawutil.h> |
28 | #include <qscrollbar.h> | 28 | #include <qscrollbar.h> |
29 | #include <qbutton.h> | 29 | #include <qbutton.h> |
30 | #include <qframe.h> | 30 | #include <qframe.h> |
31 | #include <qtabbar.h> | 31 | #include <qtabbar.h> |
32 | 32 | ||
33 | #define INCLUDE_MENUITEM_DEF | 33 | #define INCLUDE_MENUITEM_DEF |
34 | #include <qmenudata.h> | 34 | #include <qmenudata.h> |
35 | 35 | ||
36 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) | 36 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) |
37 | 37 | ||
38 | FreshStyle::FreshStyle() | 38 | FreshStyle::FreshStyle() |
39 | { | 39 | { |
40 | setButtonMargin(2); | 40 | setButtonMargin(2); |
41 | setScrollBarExtent(13,13); | 41 | setScrollBarExtent(13,13); |
42 | } | 42 | } |
43 | 43 | ||
44 | FreshStyle::~FreshStyle() | 44 | FreshStyle::~FreshStyle() |
45 | { | 45 | { |
46 | } | 46 | } |
47 | 47 | ||
48 | int FreshStyle::buttonMargin() const | 48 | int FreshStyle::buttonMargin() const |
49 | { | 49 | { |
50 | return 2; | 50 | return 2; |
51 | } | 51 | } |
52 | 52 | ||
53 | QSize FreshStyle::scrollBarExtent() const | 53 | QSize FreshStyle::scrollBarExtent() const |
54 | { | 54 | { |
55 | return QSize(13,13); | 55 | return QSize(13,13); |
56 | } | 56 | } |
57 | 57 | ||
58 | void FreshStyle::polish ( QPalette & ) | 58 | void FreshStyle::polish ( QPalette & ) |
59 | { | 59 | { |
60 | } | 60 | } |
61 | 61 | ||
62 | void FreshStyle::polish( QWidget *w ) | 62 | void FreshStyle::polish( QWidget *w ) |
63 | { | 63 | { |
64 | if ( w->inherits( "QListBox" ) || | 64 | if ( w->inherits( "QListBox" ) || |
65 | w->inherits( "QListView" ) || | 65 | w->inherits( "QListView" ) || |
66 | w->inherits( "QPopupMenu" ) || | 66 | w->inherits( "QPopupMenu" ) || |
67 | w->inherits( "QSpinBox" ) ) { | 67 | w->inherits( "QSpinBox" ) ) { |
68 | QFrame *f = (QFrame *)w; | 68 | QFrame *f = (QFrame *)w; |
69 | f->setFrameShape( QFrame::StyledPanel ); | 69 | f->setFrameShape( QFrame::StyledPanel ); |
70 | f->setLineWidth( 1 ); | 70 | f->setLineWidth( 1 ); |
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
74 | void FreshStyle::unPolish( QWidget *w ) | 74 | void FreshStyle::unPolish( QWidget *w ) |
75 | { | 75 | { |
76 | if ( w->inherits( "QListBox" ) || | 76 | if ( w->inherits( "QListBox" ) || |
77 | w->inherits( "QListView" ) || | 77 | w->inherits( "QListView" ) || |
78 | w->inherits( "QPopupMenu" ) || | 78 | w->inherits( "QPopupMenu" ) || |
79 | w->inherits( "QSpinBox" ) ) { | 79 | w->inherits( "QSpinBox" ) ) { |
80 | QFrame *f = (QFrame *)w; | 80 | QFrame *f = (QFrame *)w; |
81 | f->setFrameShape( QFrame::StyledPanel ); | 81 | f->setFrameShape( QFrame::StyledPanel ); |
82 | f->setLineWidth( 2 ); | 82 | f->setLineWidth( 2 ); |
83 | } | 83 | } |
84 | } | 84 | } |
85 | 85 | ||
86 | int FreshStyle::defaultFrameWidth() const | 86 | int FreshStyle::defaultFrameWidth() const |
87 | { | 87 | { |
88 | return 1; | 88 | return 1; |
89 | } | 89 | } |
90 | 90 | ||
91 | void FreshStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, | 91 | void FreshStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, |
92 | const QColorGroup &g, bool sunken, int lineWidth, const QBrush * fill ) | 92 | const QColorGroup &g, bool sunken, int lineWidth, const QBrush * fill ) |
93 | { | 93 | { |
94 | qDrawShadePanel( p, QRect(x, y, w, h), g, sunken, lineWidth, fill ); | 94 | qDrawShadePanel( p, QRect(x, y, w, h), g, sunken, lineWidth, fill ); |
95 | } | 95 | } |
96 | 96 | ||
97 | void FreshStyle::drawButton( QPainter *p, int x, int y, int w, int h, | 97 | void FreshStyle::drawButton( QPainter *p, int x, int y, int w, int h, |
98 | const QColorGroup &cg, bool sunken, const QBrush* fill ) | 98 | const QColorGroup &cg, bool sunken, const QBrush* fill ) |
99 | { | 99 | { |
100 | QPen oldPen = p->pen(); | 100 | QPen oldPen = p->pen(); |
101 | int off = sunken ? 1 : 0; | 101 | int off = sunken ? 1 : 0; |
102 | p->fillRect( x+1+off, y+1+off, w-3, h-3, fill?(*fill):cg.brush(QColorGroup::Button) ); | 102 | p->fillRect( x+1+off, y+1+off, w-3, h-3, fill?(*fill):cg.brush(QColorGroup::Button) ); |
103 | 103 | ||
104 | int x2 = x+w-1; | 104 | int x2 = x+w-1; |
105 | int y2 = y+h-1; | 105 | int y2 = y+h-1; |
106 | 106 | ||
107 | if ( sunken ) | 107 | if ( sunken ) |
108 | p->setPen( cg.dark() ); | 108 | p->setPen( cg.dark() ); |
109 | else | 109 | else |
110 | p->setPen( cg.light() ); | 110 | p->setPen( cg.light() ); |
111 | p->drawLine( x, y, x, y2-1 ); | 111 | p->drawLine( x, y, x, y2-1 ); |
112 | p->drawLine( x, y, x2, y ); | 112 | p->drawLine( x, y, x2, y ); |
113 | 113 | ||
114 | if ( sunken ) { | 114 | if ( sunken ) { |
115 | p->setPen( white ); | 115 | p->setPen( white ); |
116 | p->drawLine( x+1, y+1, x+1, y2-2 ); | 116 | p->drawLine( x+1, y+1, x+1, y2-2 ); |
117 | p->drawLine( x+1, y+1, x2-2, y+1 ); | 117 | p->drawLine( x+1, y+1, x2-2, y+1 ); |
118 | } | 118 | } |
119 | 119 | ||
120 | if ( sunken ) | 120 | if ( sunken ) |
121 | p->setPen( cg.light() ); | 121 | p->setPen( cg.light() ); |
122 | else | 122 | else |
123 | p->setPen( cg.dark() ); | 123 | p->setPen( cg.dark() ); |
124 | p->drawLine( x2, y+1, x2, y2 ); | 124 | p->drawLine( x2, y+1, x2, y2 ); |
125 | p->drawLine( x, y2, x2, y2 ); | 125 | p->drawLine( x, y2, x2, y2 ); |
126 | 126 | ||
127 | if ( !sunken ) { | 127 | if ( !sunken ) { |
128 | p->setPen( white ); | 128 | p->setPen( white ); |
129 | p->drawLine( x2-1, y+1, x2-1, y2-1 ); | 129 | p->drawLine( x2-1, y+1, x2-1, y2-1 ); |
130 | p->drawLine( x+1, y2-1, x2-1, y2-1 ); | 130 | p->drawLine( x+1, y2-1, x2-1, y2-1 ); |
131 | } | 131 | } |
132 | p->setPen( oldPen ); | 132 | p->setPen( oldPen ); |
133 | } | 133 | } |
134 | 134 | ||
135 | void FreshStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) | 135 | void FreshStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) |
136 | { | 136 | { |
137 | p->fillRect( x, y, w, h, color1 ); | 137 | p->fillRect( x, y, w, h, color1 ); |
138 | } | 138 | } |
139 | 139 | ||
140 | void FreshStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, | 140 | void FreshStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, |
141 | const QColorGroup &g, bool sunken, const QBrush* fill ) | 141 | const QColorGroup &g, bool sunken, const QBrush* fill ) |
142 | { | 142 | { |
143 | drawButton( p, x, y, w, h, g, sunken, fill ); | 143 | drawButton( p, x, y, w, h, g, sunken, fill ); |
144 | } | 144 | } |
145 | 145 | ||
146 | QRect FreshStyle::comboButtonRect( int x, int y, int w, int h) | 146 | QRect FreshStyle::comboButtonRect( int x, int y, int w, int h) |
147 | { | 147 | { |
148 | return QRect(x+1, y+1, w-2-14, h-2); | 148 | return QRect(x+1, y+1, w-2-14, h-2); |
149 | } | 149 | } |
150 | 150 | ||
151 | 151 | ||
152 | QRect FreshStyle::comboButtonFocusRect( int x, int y, int w, int h) | 152 | QRect FreshStyle::comboButtonFocusRect( int x, int y, int w, int h) |
153 | { | 153 | { |
154 | return QRect(x+2, y+2, w-4-14, h-4); | 154 | return QRect(x+2, y+2, w-4-14, h-4); |
155 | } | 155 | } |
156 | 156 | ||
157 | void FreshStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, | 157 | void FreshStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, |
158 | const QColorGroup &g, bool sunken, | 158 | const QColorGroup &g, bool sunken, |
159 | bool /*editable*/, | 159 | bool /*editable*/, |
160 | bool enabled, | 160 | bool enabled, |
161 | const QBrush *fill ) | 161 | const QBrush *fill ) |
162 | { | 162 | { |
163 | drawBevelButton( p, x, y, w, h, g, FALSE, fill ); | 163 | drawBevelButton( p, x, y, w, h, g, FALSE, fill ); |
164 | drawBevelButton( p, x+w-14, y, 14, h, g, sunken, fill ); | 164 | drawBevelButton( p, x+w-14, y, 14, h, g, sunken, fill ); |
165 | drawArrow( p, QStyle::DownArrow, sunken, | 165 | drawArrow( p, QStyle::DownArrow, sunken, |
166 | x+w-14+ 2, y+ 2, 14- 4, h- 4, g, enabled, | 166 | x+w-14+ 2, y+ 2, 14- 4, h- 4, g, enabled, |
167 | &g.brush( QColorGroup::Button ) ); | 167 | &g.brush( QColorGroup::Button ) ); |
168 | 168 | ||
169 | } | 169 | } |
170 | 170 | ||
171 | 171 | ||
172 | void FreshStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, | 172 | void FreshStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, |
173 | int h, const QColorGroup &cg, bool on, bool down, bool enabled ) | 173 | int h, const QColorGroup &cg, bool on, bool down, bool enabled ) |
174 | { | 174 | { |
175 | static const QCOORD pts1[] = { // dark lines | 175 | static const QCOORD pts1[] = { // dark lines |
176 | 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; | 176 | 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; |
177 | static const QCOORD pts4[] = { // white lines | 177 | static const QCOORD pts4[] = { // white lines |
178 | 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, | 178 | 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, |
179 | 11,4, 10,3, 10,2 }; | 179 | 11,4, 10,3, 10,2 }; |
180 | static const QCOORD pts5[] = { // inner fill | 180 | static const QCOORD pts5[] = { // inner fill |
181 | 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; | 181 | 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; |
182 | 182 | ||
183 | p->eraseRect( x, y, w, h ); | 183 | p->eraseRect( x, y, w, h ); |
184 | QPointArray a( QCOORDARRLEN(pts1), pts4 ); | 184 | QPointArray a( QCOORDARRLEN(pts1), pts4 ); |
185 | a.translate( x, y ); | 185 | a.translate( x, y ); |
186 | p->setPen( cg.dark() ); | 186 | p->setPen( cg.dark() ); |
187 | p->drawPolyline( a ); | 187 | p->drawPolyline( a ); |
188 | a.setPoints( QCOORDARRLEN(pts4), pts1 ); | 188 | a.setPoints( QCOORDARRLEN(pts4), pts1 ); |
189 | a.translate( x, y ); | 189 | a.translate( x, y ); |
190 | p->setPen( cg.light() ); | 190 | p->setPen( cg.light() ); |
191 | p->drawPolyline( a ); | 191 | p->drawPolyline( a ); |
192 | a.setPoints( QCOORDARRLEN(pts5), pts5 ); | 192 | a.setPoints( QCOORDARRLEN(pts5), pts5 ); |
193 | a.translate( x, y ); | 193 | a.translate( x, y ); |
194 | QColor fillColor = ( down || !enabled ) ? cg.button() : cg.base(); | 194 | QColor fillColor = ( down || !enabled ) ? cg.button() : cg.base(); |
195 | p->setPen( fillColor ); | 195 | p->setPen( fillColor ); |
196 | p->setBrush( fillColor ) ; | 196 | p->setBrush( fillColor ) ; |
197 | p->drawPolygon( a ); | 197 | p->drawPolygon( a ); |
198 | if ( on ) { | 198 | if ( on ) { |
199 | p->setPen( NoPen ); | 199 | p->setPen( NoPen ); |
200 | p->setBrush( cg.text() ); | 200 | p->setBrush( cg.text() ); |
201 | p->drawRect( x+5, y+4, 2, 4 ); | 201 | p->drawRect( x+5, y+4, 2, 4 ); |
202 | p->drawRect( x+4, y+5, 4, 2 ); | 202 | p->drawRect( x+4, y+5, 4, 2 ); |
203 | } | 203 | } |
204 | } | 204 | } |
205 | 205 | ||
206 | void FreshStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, | 206 | void FreshStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, |
207 | const QColorGroup &cg, int state, bool down, bool enabled ) | 207 | const QColorGroup &cg, int state, bool down, bool enabled ) |
208 | { | 208 | { |
209 | QColorGroup mycg( cg ); | 209 | QColorGroup mycg( cg ); |
210 | mycg.setBrush( QColorGroup::Button, QBrush() ); | 210 | mycg.setBrush( QColorGroup::Button, QBrush() ); |
211 | QBrush fill; | 211 | QBrush fill; |
212 | drawButton( p, x, y, w, h, mycg, TRUE, 0 ); | 212 | drawButton( p, x, y, w, h, mycg, TRUE, 0 ); |
213 | if ( down ) | 213 | if ( down ) |
214 | fill = cg.brush( QColorGroup::Button ); | 214 | fill = cg.brush( QColorGroup::Button ); |
215 | else | 215 | else |
216 | fill = cg.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); | 216 | fill = cg.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); |
217 | mycg.setBrush( QColorGroup::Button, fill ); | 217 | mycg.setBrush( QColorGroup::Button, fill ); |
218 | p->fillRect( x+1, y+1, w-2, h-2, fill ); | 218 | p->fillRect( x+1, y+1, w-2, h-2, fill ); |
219 | if ( state != QButton::Off ) { | 219 | if ( state != QButton::Off ) { |
220 | QPointArray a( 7*2 ); | 220 | QPointArray a( 7*2 ); |
221 | int i, xx, yy; | 221 | int i, xx, yy; |
222 | xx = x+3; | 222 | xx = x+3; |
223 | yy = y+5; | 223 | yy = y+5; |
224 | for ( i=0; i<3; i++ ) { | 224 | for ( i=0; i<3; i++ ) { |
225 | a.setPoint( 2*i, xx, yy ); | 225 | a.setPoint( 2*i, xx, yy ); |
226 | a.setPoint( 2*i+1, xx, yy+2 ); | 226 | a.setPoint( 2*i+1, xx, yy+2 ); |
227 | xx++; yy++; | 227 | xx++; yy++; |
228 | } | 228 | } |
229 | yy -= 2; | 229 | yy -= 2; |
230 | for ( i=3; i<7; i++ ) { | 230 | for ( i=3; i<7; i++ ) { |
231 | a.setPoint( 2*i, xx, yy ); | 231 | a.setPoint( 2*i, xx, yy ); |
232 | a.setPoint( 2*i+1, xx, yy+2 ); | 232 | a.setPoint( 2*i+1, xx, yy+2 ); |
233 | xx++; yy--; | 233 | xx++; yy--; |
234 | } | 234 | } |
235 | if ( state == QButton::NoChange ) { | 235 | if ( state == QButton::NoChange ) { |
236 | p->setPen( mycg.dark() ); | 236 | p->setPen( mycg.dark() ); |
237 | } else { | 237 | } else { |
238 | p->setPen( mycg.text() ); | 238 | p->setPen( mycg.text() ); |
239 | } | 239 | } |
240 | p->drawLineSegments( a ); | 240 | p->drawLineSegments( a ); |
241 | } | 241 | } |
242 | } | 242 | } |
243 | 243 | ||
244 | #define HORIZONTAL(sb->orientation() == QScrollBar::Horizontal) | 244 | #define HORIZONTAL(sb->orientation() == QScrollBar::Horizontal) |
245 | #define VERTICAL!HORIZONTAL | 245 | #define VERTICAL!HORIZONTAL |
246 | #define MOTIF_BORDER2 | 246 | #define MOTIF_BORDER2 |
247 | #define SLIDER_MIN9 // ### motif says 6 but that's too small | 247 | #define SLIDER_MIN9 // ### motif says 6 but that's too small |
248 | 248 | ||
249 | /*! \reimp */ | 249 | /*! \reimp */ |
250 | 250 | ||
251 | void FreshStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) | 251 | void FreshStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) |
252 | { | 252 | { |
253 | int maxLength; | 253 | int maxLength; |
254 | int length = HORIZONTAL ? sb->width() : sb->height(); | 254 | int length = HORIZONTAL ? sb->width() : sb->height(); |
255 | int extent = HORIZONTAL ? sb->height() : sb->width(); | 255 | int extent = HORIZONTAL ? sb->height() : sb->width(); |
256 | 256 | ||
257 | if ( length > (extent - 1)*2 ) | 257 | if ( length > (extent - 1)*2 ) |
258 | buttonDim = extent; | 258 | buttonDim = extent; |
259 | else | 259 | else |
260 | buttonDim = length/2 - 1; | 260 | buttonDim = length/2 - 1; |
261 | 261 | ||
262 | sliderMin = 0; | 262 | sliderMin = 0; |
263 | maxLength = length - buttonDim*2; | 263 | maxLength = length - buttonDim*2; |
264 | 264 | ||
265 | if ( sb->maxValue() == sb->minValue() ) { | 265 | if ( sb->maxValue() == sb->minValue() ) { |
266 | sliderLength = maxLength; | 266 | sliderLength = maxLength; |
267 | } else { | 267 | } else { |
268 | sliderLength = (sb->pageStep()*maxLength)/ | 268 | sliderLength = (sb->pageStep()*maxLength)/ |
269 | (sb->maxValue()-sb->minValue()+sb->pageStep()); | 269 | (sb->maxValue()-sb->minValue()+sb->pageStep()); |
270 | uint range = sb->maxValue()-sb->minValue(); | 270 | uint range = sb->maxValue()-sb->minValue(); |
271 | if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) | 271 | if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) |
272 | sliderLength = SLIDER_MIN; | 272 | sliderLength = SLIDER_MIN; |
273 | if ( sliderLength > maxLength ) | 273 | if ( sliderLength > maxLength ) |
274 | sliderLength = maxLength; | 274 | sliderLength = maxLength; |
275 | } | 275 | } |
276 | 276 | ||
277 | sliderMax = sliderMin + maxLength - sliderLength; | 277 | sliderMax = sliderMin + maxLength - sliderLength; |
278 | } | 278 | } |
279 | 279 | ||
280 | /*!\reimp | 280 | /*!\reimp |
281 | */ | 281 | */ |
282 | QStyle::ScrollControl FreshStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) | 282 | QStyle::ScrollControl FreshStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) |
283 | { | 283 | { |
284 | if ( !sb->rect().contains( p ) ) | 284 | if ( !sb->rect().contains( p ) ) |
285 | return NoScroll; | 285 | return NoScroll; |
286 | int sliderMin, sliderMax, sliderLength, buttonDim, pos; | 286 | int sliderMin, sliderMax, sliderLength, buttonDim, pos; |
287 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 287 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
288 | 288 | ||
289 | if (sb->orientation() == QScrollBar::Horizontal) | 289 | if (sb->orientation() == QScrollBar::Horizontal) |
290 | pos = p.x(); | 290 | pos = p.x(); |
291 | else | 291 | else |
292 | pos = p.y(); | 292 | pos = p.y(); |
293 | 293 | ||
294 | if (pos < sliderStart) | 294 | if (pos < sliderStart) |
295 | return SubPage; | 295 | return SubPage; |
296 | if (pos < sliderStart + sliderLength) | 296 | if (pos < sliderStart + sliderLength) |
297 | return Slider; | 297 | return Slider; |
298 | if (pos < sliderMax + sliderLength) | 298 | if (pos < sliderMax + sliderLength) |
299 | return AddPage; | 299 | return AddPage; |
300 | if (pos < sliderMax + sliderLength + buttonDim) | 300 | if (pos < sliderMax + sliderLength + buttonDim) |
301 | return SubLine; | 301 | return SubLine; |
302 | return AddLine; | 302 | return AddLine; |
303 | } | 303 | } |
304 | 304 | ||
305 | /*! \reimp */ | 305 | /*! \reimp */ |
306 | 306 | ||
307 | void FreshStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl ) | 307 | void FreshStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl ) |
308 | { | 308 | { |
309 | #define ADD_LINE_ACTIVE ( activeControl == AddLine ) | 309 | #define ADD_LINE_ACTIVE ( activeControl == AddLine ) |
310 | #define SUB_LINE_ACTIVE ( activeControl == SubLine ) | 310 | #define SUB_LINE_ACTIVE ( activeControl == SubLine ) |
311 | QColorGroup g = sb->colorGroup(); | 311 | QColorGroup g = sb->colorGroup(); |
312 | 312 | ||
313 | int sliderMin, sliderMax, sliderLength, buttonDim; | 313 | int sliderMin, sliderMax, sliderLength, buttonDim; |
314 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 314 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
315 | 315 | ||
316 | if ( controls == (AddLine | SubLine | AddPage | SubPage | Slider | First | Last ) ) | 316 | if ( controls == (AddLine | SubLine | AddPage | SubPage | Slider | First | Last ) ) |
317 | p->fillRect( 0, 0, sb->width(), sb->height(), g.brush( QColorGroup::Mid )); | 317 | p->fillRect( 0, 0, sb->width(), sb->height(), g.brush( QColorGroup::Mid )); |
318 | 318 | ||
319 | if (sliderStart > sliderMax) { // sanity check | 319 | if (sliderStart > sliderMax) { // sanity check |
320 | sliderStart = sliderMax; | 320 | sliderStart = sliderMax; |
321 | } | 321 | } |
322 | 322 | ||
323 | int dimB = buttonDim; | 323 | int dimB = buttonDim; |
324 | QRect addB; | 324 | QRect addB; |
325 | QRect subB; | 325 | QRect subB; |
326 | QRect addPageR; | 326 | QRect addPageR; |
327 | QRect subPageR; | 327 | QRect subPageR; |
328 | QRect sliderR; | 328 | QRect sliderR; |
329 | int addX, addY, subX, subY; | 329 | int addX, addY, subX, subY; |
330 | int length = HORIZONTAL ? sb->width() : sb->height(); | 330 | int length = HORIZONTAL ? sb->width() : sb->height(); |
331 | int extent = HORIZONTAL ? sb->height() : sb->width(); | 331 | int extent = HORIZONTAL ? sb->height() : sb->width(); |
332 | 332 | ||
333 | if ( HORIZONTAL ) { | 333 | if ( HORIZONTAL ) { |
334 | subY = addY = ( extent - dimB ) / 2; | 334 | subY = addY = ( extent - dimB ) / 2; |
335 | subX = length - dimB - dimB; | 335 | subX = length - dimB - dimB; |
336 | addX = length - dimB; | 336 | addX = length - dimB; |
337 | } else { | 337 | } else { |
338 | subX = addX = ( extent - dimB ) / 2; | 338 | subX = addX = ( extent - dimB ) / 2; |
339 | subY = length - dimB - dimB; | 339 | subY = length - dimB - dimB; |
340 | addY = length - dimB; | 340 | addY = length - dimB; |
341 | } | 341 | } |
342 | 342 | ||
343 | int sliderEnd = sliderStart + sliderLength; | 343 | int sliderEnd = sliderStart + sliderLength; |
344 | int sliderW = extent; | 344 | int sliderW = extent; |
345 | if ( HORIZONTAL ) { | 345 | if ( HORIZONTAL ) { |
346 | subB.setRect( subX,subY+1,dimB,dimB-1 ); | 346 | subB.setRect( subX,subY+1,dimB,dimB-1 ); |
347 | addB.setRect( addX,addY+1,dimB,dimB-1 ); | 347 | addB.setRect( addX,addY+1,dimB,dimB-1 ); |
348 | 348 | ||
349 | subPageR.setRect( 0, 0, | 349 | subPageR.setRect( 0, 0, |
350 | sliderStart+1, sliderW ); | 350 | sliderStart+1, sliderW ); |
351 | addPageR.setRect( sliderEnd-1, 0, subX - sliderEnd+1, sliderW ); | 351 | addPageR.setRect( sliderEnd-1, 0, subX - sliderEnd+1, sliderW ); |
352 | sliderR .setRect( sliderStart, 1, sliderLength, sliderW-1 ); | 352 | sliderR .setRect( sliderStart, 1, sliderLength, sliderW-1 ); |
353 | 353 | ||
354 | } else { | 354 | } else { |
355 | subB.setRect( subX+1,subY,dimB-1,dimB ); | 355 | subB.setRect( subX+1,subY,dimB-1,dimB ); |
356 | addB.setRect( addX+1,addY,dimB-1,dimB ); | 356 | addB.setRect( addX+1,addY,dimB-1,dimB ); |
357 | 357 | ||
358 | subPageR.setRect( 0, 0, sliderW, | 358 | subPageR.setRect( 0, 0, sliderW, |
359 | sliderStart+1 ); | 359 | sliderStart+1 ); |
360 | addPageR.setRect( 0, sliderEnd-1, sliderW, subY - sliderEnd+1 ); | 360 | addPageR.setRect( 0, sliderEnd-1, sliderW, subY - sliderEnd+1 ); |
361 | sliderR .setRect( 1, sliderStart, sliderW-1, sliderLength ); | 361 | sliderR .setRect( 1, sliderStart, sliderW-1, sliderLength ); |
362 | } | 362 | } |
363 | 363 | ||
364 | bool maxedOut = (sb->maxValue() == sb->minValue()); | 364 | bool maxedOut = (sb->maxValue() == sb->minValue()); |
365 | if ( controls & AddLine ) { | 365 | if ( controls & AddLine ) { |
366 | drawBevelButton( p, addB.x(), addB.y(), | 366 | drawBevelButton( p, addB.x(), addB.y(), |
367 | addB.width(), addB.height(), g, | 367 | addB.width(), addB.height(), g, |
368 | ADD_LINE_ACTIVE); | 368 | ADD_LINE_ACTIVE); |
369 | p->setPen(g.shadow()); | 369 | p->setPen(g.shadow()); |
370 | drawArrow( p, VERTICAL ? DownArrow : RightArrow, | 370 | drawArrow( p, VERTICAL ? DownArrow : RightArrow, |
371 | FALSE, addB.x()+2, addB.y()+2, | 371 | FALSE, addB.x()+2, addB.y()+2, |
372 | addB.width()-4, addB.height()-4, g, !maxedOut, | 372 | addB.width()-4, addB.height()-4, g, !maxedOut, |
373 | &g.brush( QColorGroup::Button )); | 373 | &g.brush( QColorGroup::Button )); |
374 | } | 374 | } |
375 | if ( controls & SubLine ) { | 375 | if ( controls & SubLine ) { |
376 | drawBevelButton( p, subB.x(), subB.y(), | 376 | drawBevelButton( p, subB.x(), subB.y(), |
377 | subB.width(), subB.height(), g, | 377 | subB.width(), subB.height(), g, |
378 | SUB_LINE_ACTIVE ); | 378 | SUB_LINE_ACTIVE ); |
379 | p->setPen(g.shadow()); | 379 | p->setPen(g.shadow()); |
380 | drawArrow( p, VERTICAL ? UpArrow : LeftArrow, | 380 | drawArrow( p, VERTICAL ? UpArrow : LeftArrow, |
381 | FALSE, subB.x()+2, subB.y()+2, | 381 | FALSE, subB.x()+2, subB.y()+2, |
382 | subB.width()-4, subB.height()-4, g, !maxedOut, | 382 | subB.width()-4, subB.height()-4, g, !maxedOut, |
383 | &g.brush( QColorGroup::Button )); | 383 | &g.brush( QColorGroup::Button )); |
384 | } | 384 | } |
385 | 385 | ||
386 | 386 | ||
387 | if ( controls & SubPage ) | 387 | if ( controls & SubPage ) |
388 | p->fillRect( subPageR.x(), subPageR.y(), subPageR.width(), | 388 | p->fillRect( subPageR.x(), subPageR.y(), subPageR.width(), |
389 | subPageR.height(), g.brush( QColorGroup::Mid )); | 389 | subPageR.height(), g.brush( QColorGroup::Mid )); |
390 | if ( controls & AddPage ) | 390 | if ( controls & AddPage ) |
391 | p->fillRect( addPageR.x(), addPageR.y(), addPageR.width(), | 391 | p->fillRect( addPageR.x(), addPageR.y(), addPageR.width(), |
392 | addPageR.height(), g.brush( QColorGroup::Mid )); | 392 | addPageR.height(), g.brush( QColorGroup::Mid )); |
393 | if ( controls & Slider ) { | 393 | if ( controls & Slider ) { |
394 | QPoint bo = p->brushOrigin(); | 394 | QPoint bo = p->brushOrigin(); |
395 | p->setBrushOrigin(sliderR.topLeft()); | 395 | p->setBrushOrigin(sliderR.topLeft()); |
396 | drawBevelButton( p, sliderR.x(), sliderR.y(), | 396 | drawBevelButton( p, sliderR.x(), sliderR.y(), |
397 | sliderR.width(), sliderR.height(), g, | 397 | sliderR.width(), sliderR.height(), g, |
398 | FALSE, &g.brush( QColorGroup::Button ) ); | 398 | FALSE, &g.brush( QColorGroup::Button ) ); |
399 | p->setBrushOrigin(bo); | 399 | p->setBrushOrigin(bo); |
400 | drawRiffles( p, sliderR.x(), sliderR.y(), | 400 | drawRiffles( p, sliderR.x(), sliderR.y(), |
401 | sliderR.width(), sliderR.height(), g, HORIZONTAL ); | 401 | sliderR.width(), sliderR.height(), g, HORIZONTAL ); |
402 | } | 402 | } |
403 | 403 | ||
404 | // ### perhaps this should not be able to accept focus if maxedOut? | 404 | // ### perhaps this should not be able to accept focus if maxedOut? |
405 | if ( sb->hasFocus() && (controls & Slider) ) | 405 | if ( sb->hasFocus() && (controls & Slider) ) |
406 | p->drawWinFocusRect( sliderR.x()+2, sliderR.y()+2, | 406 | p->drawWinFocusRect( sliderR.x()+2, sliderR.y()+2, |
407 | sliderR.width()-5, sliderR.height()-5, | 407 | sliderR.width()-5, sliderR.height()-5, |
408 | sb->backgroundColor() ); | 408 | sb->backgroundColor() ); |
409 | 409 | ||
410 | } | 410 | } |
411 | 411 | ||
412 | void FreshStyle::drawRiffles( QPainter* p, int x, int y, int w, int h, | 412 | void FreshStyle::drawRiffles( QPainter* p, int x, int y, int w, int h, |
413 | const QColorGroup &g, bool horizontal ) | 413 | const QColorGroup &g, bool horizontal ) |
414 | { | 414 | { |
415 | return; | 415 | return; |
416 | if (!horizontal) { | 416 | if (!horizontal) { |
417 | if (h > 20) { | 417 | if (h > 20) { |
418 | y += (h-20)/2 ; | 418 | y += (h-20)/2 ; |
419 | h = 20; | 419 | h = 20; |
420 | } | 420 | } |
421 | if (h > 12) { | 421 | if (h > 12) { |
422 | int n = 3; | 422 | int n = 3; |
423 | int my = y+h/2-4; | 423 | int my = y+h/2-4; |
424 | int i ; | 424 | int i ; |
425 | p->setPen(g.light()); | 425 | p->setPen(g.light()); |
426 | for (i=0; i<n; i++) { | 426 | for (i=0; i<n; i++) { |
427 | p->drawLine(x+2, my+3*i, x+w-4, my+3*i); | 427 | p->drawLine(x+2, my+3*i, x+w-4, my+3*i); |
428 | } | 428 | } |
429 | p->setPen(g.dark()); | 429 | p->setPen(g.dark()); |
430 | my++; | 430 | my++; |
431 | for (i=0; i<n; i++) { | 431 | for (i=0; i<n; i++) { |
432 | p->drawLine(x+2, my+3*i, x+w-4, my+3*i); | 432 | p->drawLine(x+2, my+3*i, x+w-4, my+3*i); |
433 | } | 433 | } |
434 | } | 434 | } |
435 | } | 435 | } |
436 | else { | 436 | else { |
437 | if (w > 20) { | 437 | if (w > 20) { |
438 | x += (w-20)/2 ; | 438 | x += (w-20)/2 ; |
439 | w = 20; | 439 | w = 20; |
440 | } | 440 | } |
441 | if (w > 12) { | 441 | if (w > 12) { |
442 | int n = 3; | 442 | int n = 3; |
443 | int mx = x+w/2-4; | 443 | int mx = x+w/2-4; |
444 | int i ; | 444 | int i ; |
445 | p->setPen(g.light()); | 445 | p->setPen(g.light()); |
446 | for (i=0; i<n; i++) { | 446 | for (i=0; i<n; i++) { |
447 | p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4); | 447 | p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4); |
448 | } | 448 | } |
449 | p->setPen(g.dark()); | 449 | p->setPen(g.dark()); |
450 | mx++; | 450 | mx++; |
451 | for (i=0; i<n; i++) { | 451 | for (i=0; i<n; i++) { |
452 | p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4); | 452 | p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4); |
453 | } | 453 | } |
454 | } | 454 | } |
455 | } | 455 | } |
456 | } | 456 | } |
457 | 457 | ||
458 | int FreshStyle::sliderLength() const | 458 | int FreshStyle::sliderLength() const |
459 | { | 459 | { |
460 | return 12; | 460 | return 12; |
461 | } | 461 | } |
462 | 462 | ||
463 | void FreshStyle::drawSlider( QPainter *p, int x, int y, int w, int h, | 463 | void FreshStyle::drawSlider( QPainter *p, int x, int y, int w, int h, |
464 | const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ) | 464 | const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ) |
465 | { | 465 | { |
466 | int a = tickAbove ? 3 : 0; | 466 | int a = tickAbove ? 3 : 0; |
467 | int b = tickBelow ? 3 : 0; | 467 | int b = tickBelow ? 3 : 0; |
468 | 468 | ||
469 | if ( o == Horizontal ) { | 469 | if ( o == Horizontal ) { |
470 | drawBevelButton( p, x, y+a, w, h-a-b, g, FALSE, &g.brush( QColorGroup::Button ) ); | 470 | drawBevelButton( p, x, y+a, w, h-a-b, g, FALSE, &g.brush( QColorGroup::Button ) ); |
471 | int xp = x + w/2; | 471 | int xp = x + w/2; |
472 | qDrawShadeLine( p, xp, y+a+2, xp, y+h-b-3, g ); | 472 | qDrawShadeLine( p, xp, y+a+2, xp, y+h-b-3, g ); |
473 | } else { | 473 | } else { |
474 | drawBevelButton( p, x+a, y, w-a-b, h, g, FALSE, &g.brush( QColorGroup::Button ) ); | 474 | drawBevelButton( p, x+a, y, w-a-b, h, g, FALSE, &g.brush( QColorGroup::Button ) ); |
475 | int yp = y + h/2; | 475 | int yp = y + h/2; |
476 | qDrawShadeLine( p, x+a+2, yp, x+w-b-3, yp, g ); | 476 | qDrawShadeLine( p, x+a+2, yp, x+w-b-3, yp, g ); |
477 | } | 477 | } |
478 | } | 478 | } |
479 | 479 | ||
480 | void FreshStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h, | 480 | void FreshStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h, |
481 | Orientation o, bool tickAbove, bool tickBelow ) | 481 | Orientation o, bool tickAbove, bool tickBelow ) |
482 | { | 482 | { |
483 | int a = tickAbove ? 3 : 0; | 483 | int a = tickAbove ? 3 : 0; |
484 | int b = tickBelow ? 3 : 0; | 484 | int b = tickBelow ? 3 : 0; |
485 | if ( o == Horizontal ) | 485 | if ( o == Horizontal ) |
486 | p->fillRect( x, y+a, w, h-a-b, color1 ); | 486 | p->fillRect( x, y+a, w, h-a-b, color1 ); |
487 | else | 487 | else |
488 | p->fillRect( x+a, y, w-a-b, h, color1 ); | 488 | p->fillRect( x+a, y, w-a-b, h, color1 ); |
489 | } | 489 | } |
490 | 490 | ||
491 | /*!\reimp | 491 | /*!\reimp |
492 | */ | 492 | */ |
493 | void FreshStyle::drawSliderGrooveMask( QPainter *p, | 493 | void FreshStyle::drawSliderGrooveMask( QPainter *p, |
494 | int x, int y, int w, int h, | 494 | int x, int y, int w, int h, |
495 | const QColorGroup& , QCOORD c, | 495 | const QColorGroup& , QCOORD c, |
496 | Orientation orient ) | 496 | Orientation orient ) |
497 | { | 497 | { |
498 | if ( orient == Horizontal ) | 498 | if ( orient == Horizontal ) |
499 | p->fillRect( x, y + c - 2, w, 4, color1 ); | 499 | p->fillRect( x, y + c - 2, w, 4, color1 ); |
500 | else | 500 | else |
501 | p->fillRect( x + c - 2, y, 4, h, color1 ); | 501 | p->fillRect( x + c - 2, y, 4, h, color1 ); |
502 | } | 502 | } |
503 | 503 | ||
504 | void FreshStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) | 504 | void FreshStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) |
505 | { | 505 | { |
506 | QRect r( t->rect() ); | 506 | QRect r( t->rect() ); |
507 | if ( tb->shape() == QTabBar::RoundedAbove ) { | 507 | if ( tb->shape() == QTabBar::RoundedAbove ) { |
508 | p->setPen( tb->colorGroup().light() ); | 508 | p->setPen( tb->colorGroup().light() ); |
509 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); | 509 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); |
510 | if ( r.left() == 0 ) | 510 | if ( r.left() == 0 ) |
511 | p->drawPoint( tb->rect().bottomLeft() ); | 511 | p->drawPoint( tb->rect().bottomLeft() ); |
512 | else { | 512 | else { |
513 | p->setPen( tb->colorGroup().light() ); | 513 | p->setPen( tb->colorGroup().light() ); |
514 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); | 514 | p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); |
515 | } | 515 | } |
516 | 516 | ||
517 | if ( selected ) { | 517 | if ( selected ) { |
518 | p->setPen( tb->colorGroup().background() ); | 518 | p->setPen( tb->colorGroup().background() ); |
519 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); | 519 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); |
520 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), | 520 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), |
521 | tb->colorGroup().brush( QColorGroup::Background )); | 521 | tb->colorGroup().brush( QColorGroup::Background )); |
522 | } else { | 522 | } else { |
523 | r.setRect( r.left() + 2, r.top() + 2, | 523 | r.setRect( r.left() + 2, r.top() + 2, |
524 | r.width() - 4, r.height() - 2 ); | 524 | r.width() - 4, r.height() - 2 ); |
525 | p->setPen( tb->colorGroup().button() ); | 525 | p->setPen( tb->colorGroup().button() ); |
526 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); | 526 | p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); |
527 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), | 527 | p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), |
528 | tb->colorGroup().brush( QColorGroup::Button )); | 528 | tb->colorGroup().brush( QColorGroup::Button )); |
529 | 529 | ||
530 | //do shading; will not work for pixmap brushes | 530 | //do shading; will not work for pixmap brushes |
531 | QColor bg = tb->colorGroup().button(); | 531 | QColor bg = tb->colorGroup().button(); |
532 | // int h,s,v; | 532 | // int h,s,v; |
533 | // bg.hsv( &h, &s, &v ); | 533 | // bg.hsv( &h, &s, &v ); |
534 | int n = r.height()/2; | 534 | int n = r.height()/2; |
535 | int dark = 100; | 535 | int dark = 100; |
536 | for ( int i = 1; i < n; i++ ) { | 536 | for ( int i = 1; i < n; i++ ) { |
537 | dark = (dark * (100+(i*15)/n) )/100; | 537 | dark = (dark * (100+(i*15)/n) )/100; |
538 | p->setPen( bg.dark( dark ) ); | 538 | p->setPen( bg.dark( dark ) ); |
539 | int y = r.bottom()-n+i; | 539 | int y = r.bottom()-n+i; |
540 | int x1 = r.left()+1; | 540 | int x1 = r.left()+1; |
541 | int x2 = r.right()-1; | 541 | int x2 = r.right()-1; |
542 | p->drawLine( x1, y, x2, y ); | 542 | p->drawLine( x1, y, x2, y ); |
543 | } | 543 | } |
544 | } | 544 | } |
545 | 545 | ||
546 | p->setPen( tb->colorGroup().light() ); | 546 | p->setPen( tb->colorGroup().light() ); |
547 | p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); | 547 | p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); |
548 | p->drawPoint( r.left()+1, r.top() + 1 ); | 548 | p->drawPoint( r.left()+1, r.top() + 1 ); |
549 | p->drawLine( r.left()+2, r.top(), | 549 | p->drawLine( r.left()+2, r.top(), |
550 | r.right() - 2, r.top() ); | 550 | r.right() - 2, r.top() ); |
551 | 551 | ||
552 | p->setPen( tb->colorGroup().dark() ); | 552 | p->setPen( tb->colorGroup().dark() ); |
553 | p->drawPoint( r.right() - 1, r.top() + 1 ); | 553 | p->drawPoint( r.right() - 1, r.top() + 1 ); |
554 | p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); | 554 | p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); |
555 | } else if ( tb->shape() == QTabBar::RoundedBelow ) { | 555 | } else if ( tb->shape() == QTabBar::RoundedBelow ) { |
556 | if ( selected ) { | 556 | if ( selected ) { |
557 | p->setPen( tb->colorGroup().background() ); | 557 | p->setPen( tb->colorGroup().background() ); |
558 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); | 558 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); |
559 | p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), | 559 | p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), |
560 | tb->palette().normal().brush( QColorGroup::Background )); | 560 | tb->palette().normal().brush( QColorGroup::Background )); |
561 | } else { | 561 | } else { |
562 | p->setPen( tb->colorGroup().dark() ); | 562 | p->setPen( tb->colorGroup().dark() ); |
563 | p->drawLine( r.left(), r.top(), | 563 | p->drawLine( r.left(), r.top(), |
564 | r.right(), r.top() ); | 564 | r.right(), r.top() ); |
565 | r.setRect( r.left() + 2, r.top(), | 565 | r.setRect( r.left() + 2, r.top(), |
566 | r.width() - 4, r.height() - 2 ); | 566 | r.width() - 4, r.height() - 2 ); |
567 | p->setPen( tb->colorGroup().button() ); | 567 | p->setPen( tb->colorGroup().button() ); |
568 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); | 568 | p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); |
569 | p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), | 569 | p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), |
570 | tb->palette().normal().brush( QColorGroup::Button )); | 570 | tb->palette().normal().brush( QColorGroup::Button )); |
571 | } | 571 | } |
572 | 572 | ||
573 | p->setPen( tb->colorGroup().dark() ); | 573 | p->setPen( tb->colorGroup().dark() ); |
574 | p->drawLine( r.right(), r.top(), | 574 | p->drawLine( r.right(), r.top(), |
575 | r.right(), r.bottom() - 2 ); | 575 | r.right(), r.bottom() - 2 ); |
576 | p->drawPoint( r.right() - 1, r.bottom() - 1 ); | 576 | p->drawPoint( r.right() - 1, r.bottom() - 1 ); |
577 | p->drawLine( r.right() - 2, r.bottom(), | 577 | p->drawLine( r.right() - 2, r.bottom(), |
578 | r.left() + 2, r.bottom() ); | 578 | r.left() + 2, r.bottom() ); |
579 | 579 | ||
580 | p->setPen( tb->colorGroup().light() ); | 580 | p->setPen( tb->colorGroup().light() ); |
581 | p->drawLine( r.left(), r.top()+1, | 581 | p->drawLine( r.left(), r.top()+1, |
582 | r.left(), r.bottom() - 2 ); | 582 | r.left(), r.bottom() - 2 ); |
583 | p->drawPoint( r.left() + 1, r.bottom() - 1 ); | 583 | p->drawPoint( r.left() + 1, r.bottom() - 1 ); |
584 | if ( r.left() == 0 ) | 584 | if ( r.left() == 0 ) |
585 | p->drawPoint( tb->rect().topLeft() ); | 585 | p->drawPoint( tb->rect().topLeft() ); |
586 | 586 | ||
587 | } else { | 587 | } else { |
588 | QCommonStyle::drawTab( p, tb, t, selected ); | 588 | QCommonStyle::drawTab( p, tb, t, selected ); |
589 | } | 589 | } |
590 | } | 590 | } |
591 | 591 | ||
592 | static const int motifItemFrame = 0;// menu item frame width | 592 | static const int motifItemFrame = 0;// menu item frame width |
593 | static const int motifSepHeight = 2;// separator item height | 593 | static const int motifSepHeight = 2;// separator item height |
594 | static const int motifItemHMargin = 1;// menu item hor text margin | 594 | static const int motifItemHMargin = 1;// menu item hor text margin |
595 | static const int motifItemVMargin = 2;// menu item ver text margin | 595 | static const int motifItemVMargin = 2;// menu item ver text margin |
596 | static const int motifArrowHMargin = 0;// arrow horizontal margin | 596 | static const int motifArrowHMargin = 0;// arrow horizontal margin |
597 | static const int motifTabSpacing = 12;// space between text and tab | 597 | static const int motifTabSpacing = 12;// space between text and tab |
598 | static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark | 598 | static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark |
599 | static const int windowsRightBorder= 8; // right border on windows | 599 | static const int windowsRightBorder= 8; // right border on windows |
600 | static const int windowsCheckMarkWidth = 2; // checkmarks width on windows | 600 | static const int windowsCheckMarkWidth = 2; // checkmarks width on windows |
601 | 601 | ||
602 | /*! \reimp | 602 | /*! \reimp |
603 | */ | 603 | */ |
604 | int FreshStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) | 604 | int FreshStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) |
605 | { | 605 | { |
606 | #ifndef QT_NO_MENUDATA | 606 | #ifndef QT_NO_MENUDATA |
607 | int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm | 607 | int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm |
608 | 608 | ||
609 | if ( mi->isSeparator() ) | 609 | if ( mi->isSeparator() ) |
610 | return 10; // arbitrary | 610 | return 10; // arbitrary |
611 | else if ( mi->pixmap() ) | 611 | else if ( mi->pixmap() ) |
612 | w += mi->pixmap()->width();// pixmap only | 612 | w += mi->pixmap()->width();// pixmap only |
613 | 613 | ||
614 | if ( !mi->text().isNull() ) { | 614 | if ( !mi->text().isNull() ) { |
615 | if ( mi->text().find('\t') >= 0 )// string contains tab | 615 | if ( mi->text().find('\t') >= 0 )// string contains tab |
616 | w += motifTabSpacing; | 616 | w += motifTabSpacing; |
617 | } | 617 | } |
618 | 618 | ||
619 | if ( maxpmw ) { // we have iconsets | 619 | if ( maxpmw ) { // we have iconsets |
620 | w += maxpmw; | 620 | w += maxpmw; |
621 | w += 6; // add a little extra border around the iconset | 621 | w += 6; // add a little extra border around the iconset |
622 | } | 622 | } |
623 | 623 | ||
624 | if ( checkable && maxpmw < windowsCheckMarkWidth ) { | 624 | if ( checkable && maxpmw < windowsCheckMarkWidth ) { |
625 | w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks | 625 | w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks |
626 | } | 626 | } |
627 | 627 | ||
628 | if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) | 628 | if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) |
629 | w += motifCheckMarkHMargin; // add space to separate the columns | 629 | w += motifCheckMarkHMargin; // add space to separate the columns |
630 | 630 | ||
631 | w += windowsRightBorder; // windows has a strange wide border on the right side | 631 | w += windowsRightBorder; // windows has a strange wide border on the right side |
632 | 632 | ||
633 | return w; | 633 | return w; |
634 | #endif | 634 | #endif |
635 | } | 635 | } |
636 | 636 | ||
637 | /*! \reimp | 637 | /*! \reimp |
638 | */ | 638 | */ |
639 | int FreshStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) | 639 | int FreshStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) |
640 | { | 640 | { |
641 | #ifndef QT_NO_MENUDATA | 641 | #ifndef QT_NO_MENUDATA |
642 | int h = 0; | 642 | int h = 0; |
643 | if ( mi->isSeparator() ) // separator height | 643 | if ( mi->isSeparator() ) // separator height |
644 | h = motifSepHeight; | 644 | h = motifSepHeight; |
645 | else if ( mi->pixmap() ) // pixmap height | 645 | else if ( mi->pixmap() ) // pixmap height |
646 | h = mi->pixmap()->height() + 2*motifItemFrame; | 646 | h = mi->pixmap()->height() + 2*motifItemFrame; |
647 | else // text height | 647 | else // text height |
648 | h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1; | 648 | h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1; |
649 | 649 | ||
650 | if ( !mi->isSeparator() && mi->iconSet() != 0 ) { | 650 | if ( !mi->isSeparator() && mi->iconSet() != 0 ) { |
651 | h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame ); | 651 | h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame ); |
652 | } | 652 | } |
653 | if ( mi->custom() ) | 653 | if ( mi->custom() ) |
654 | h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; | 654 | h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; |
655 | return h; | 655 | return h; |
656 | #endif | 656 | #endif |
657 | } | 657 | } |
658 | 658 | ||
659 | void FreshStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, | 659 | void FreshStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, |
660 | const QPalette& pal, | 660 | const QPalette& pal, |
661 | bool act, bool enabled, int x, int y, int w, int h) | 661 | bool act, bool enabled, int x, int y, int w, int h) |
662 | { | 662 | { |
663 | #ifndef QT_NO_MENUDATA | 663 | #ifndef QT_NO_MENUDATA |
664 | const QColorGroup & g = pal.active(); | 664 | const QColorGroup & g = pal.active(); |
665 | bool dis = !enabled; | 665 | bool dis = !enabled; |
666 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); | 666 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); |
667 | 667 | ||
668 | if ( checkable ) | 668 | if ( checkable ) |
669 | maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks | 669 | maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks |
670 | 670 | ||
671 | int checkcol = maxpmw; | 671 | int checkcol = maxpmw; |
672 | 672 | ||
673 | if ( mi && mi->isSeparator() ) { // draw separator | 673 | if ( mi && mi->isSeparator() ) { // draw separator |
674 | p->setPen( g.dark() ); | 674 | p->setPen( g.dark() ); |
675 | p->drawLine( x, y, x+w, y ); | 675 | p->drawLine( x, y, x+w, y ); |
676 | p->setPen( g.light() ); | 676 | p->setPen( g.light() ); |
677 | p->drawLine( x, y+1, x+w, y+1 ); | 677 | p->drawLine( x, y+1, x+w, y+1 ); |
678 | return; | 678 | return; |
679 | } | 679 | } |
680 | 680 | ||
681 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : | 681 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : |
682 | g.brush( QColorGroup::Button ); | 682 | g.brush( QColorGroup::Button ); |
683 | p->fillRect( x, y, w, h, fill); | 683 | p->fillRect( x, y, w, h, fill); |
684 | 684 | ||
685 | if ( !mi ) | 685 | if ( !mi ) |
686 | return; | 686 | return; |
687 | 687 | ||
688 | if ( mi->isChecked() ) { | 688 | if ( mi->isChecked() ) { |
689 | if ( act && !dis ) { | 689 | if ( act && !dis ) { |
690 | qDrawShadePanel( p, x, y, checkcol, h, | 690 | qDrawShadePanel( p, x, y, checkcol, h, |
691 | g, TRUE, 1, &g.brush( QColorGroup::Button ) ); | 691 | g, TRUE, 1, &g.brush( QColorGroup::Button ) ); |
692 | } else { | 692 | } else { |
693 | qDrawShadePanel( p, x, y, checkcol, h, | 693 | qDrawShadePanel( p, x, y, checkcol, h, |
694 | g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); | 694 | g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); |
695 | } | 695 | } |
696 | } else if ( !act ) { | 696 | } else if ( !act ) { |
697 | p->fillRect(x, y, checkcol , h, | 697 | p->fillRect(x, y, checkcol , h, |
698 | g.brush( QColorGroup::Button )); | 698 | g.brush( QColorGroup::Button )); |
699 | } | 699 | } |
700 | 700 | ||
701 | if ( mi->iconSet() ) { // draw iconset | 701 | if ( mi->iconSet() ) { // draw iconset |
702 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; | 702 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; |
703 | if (act && !dis ) | 703 | if (act && !dis ) |
704 | mode = QIconSet::Active; | 704 | mode = QIconSet::Active; |
705 | QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode ); | 705 | QPixmap pixmap; |
706 | if ( mode == QIconSet::Disabled ) | ||
707 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
708 | else | ||
709 | pixmap = mi->iconSet()->pixmap(); | ||
706 | int pixw = pixmap.width(); | 710 | int pixw = pixmap.width(); |
707 | int pixh = pixmap.height(); | 711 | int pixh = pixmap.height(); |
708 | if ( act && !dis ) { | 712 | if ( act && !dis ) { |
709 | if ( !mi->isChecked() ) | 713 | if ( !mi->isChecked() ) |
710 | qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); | 714 | qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); |
711 | } | 715 | } |
712 | QRect cr( x, y, checkcol, h ); | 716 | QRect cr( x, y, checkcol, h ); |
713 | QRect pmr( 0, 0, pixw, pixh ); | 717 | QRect pmr( 0, 0, pixw, pixh ); |
714 | pmr.moveCenter( cr.center() ); | 718 | pmr.moveCenter( cr.center() ); |
715 | p->setPen( itemg.text() ); | 719 | p->setPen( itemg.text() ); |
716 | p->drawPixmap( pmr.topLeft(), pixmap ); | 720 | p->drawPixmap( pmr.topLeft(), pixmap ); |
717 | 721 | ||
718 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : | 722 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : |
719 | g.brush( QColorGroup::Button ); | 723 | g.brush( QColorGroup::Button ); |
720 | p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); | 724 | p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); |
721 | } else if ( checkable ) {// just "checking"... | 725 | } else if ( checkable ) {// just "checking"... |
722 | int mw = checkcol + motifItemFrame; | 726 | int mw = checkcol + motifItemFrame; |
723 | int mh = h - 2*motifItemFrame; | 727 | int mh = h - 2*motifItemFrame; |
724 | if ( mi->isChecked() ) { | 728 | if ( mi->isChecked() ) { |
725 | drawCheckMark( p, x + motifItemFrame + 2, | 729 | drawCheckMark( p, x + motifItemFrame + 2, |
726 | y+motifItemFrame, mw, mh, itemg, act, dis ); | 730 | y+motifItemFrame, mw, mh, itemg, act, dis ); |
727 | } | 731 | } |
728 | } | 732 | } |
729 | 733 | ||
730 | p->setPen( act ? g.highlightedText() : g.buttonText() ); | 734 | p->setPen( act ? g.highlightedText() : g.buttonText() ); |
731 | 735 | ||
732 | QColor discol; | 736 | QColor discol; |
733 | if ( dis ) { | 737 | if ( dis ) { |
734 | discol = itemg.text(); | 738 | discol = itemg.text(); |
735 | p->setPen( discol ); | 739 | p->setPen( discol ); |
736 | } | 740 | } |
737 | 741 | ||
738 | int xm = motifItemFrame + checkcol + motifItemHMargin; | 742 | int xm = motifItemFrame + checkcol + motifItemHMargin; |
739 | 743 | ||
740 | if ( mi->custom() ) { | 744 | if ( mi->custom() ) { |
741 | int m = motifItemVMargin; | 745 | int m = motifItemVMargin; |
742 | p->save(); | 746 | p->save(); |
743 | if ( dis && !act ) { | 747 | if ( dis && !act ) { |
744 | p->setPen( g.light() ); | 748 | p->setPen( g.light() ); |
745 | mi->custom()->paint( p, itemg, act, enabled, | 749 | mi->custom()->paint( p, itemg, act, enabled, |
746 | x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); | 750 | x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); |
747 | p->setPen( discol ); | 751 | p->setPen( discol ); |
748 | } | 752 | } |
749 | mi->custom()->paint( p, itemg, act, enabled, | 753 | mi->custom()->paint( p, itemg, act, enabled, |
750 | x+xm, y+m, w-xm-tab+1, h-2*m ); | 754 | x+xm, y+m, w-xm-tab+1, h-2*m ); |
751 | p->restore(); | 755 | p->restore(); |
752 | } | 756 | } |
753 | QString s = mi->text(); | 757 | QString s = mi->text(); |
754 | if ( !s.isNull() ) { // draw text | 758 | if ( !s.isNull() ) { // draw text |
755 | int t = s.find( '\t' ); | 759 | int t = s.find( '\t' ); |
756 | int m = motifItemVMargin; | 760 | int m = motifItemVMargin; |
757 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; | 761 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; |
758 | if ( t >= 0 ) { // draw tab text | 762 | if ( t >= 0 ) { // draw tab text |
759 | if ( dis && !act ) { | 763 | if ( dis && !act ) { |
760 | p->setPen( g.light() ); | 764 | p->setPen( g.light() ); |
761 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, | 765 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, |
762 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); | 766 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); |
763 | p->setPen( discol ); | 767 | p->setPen( discol ); |
764 | } | 768 | } |
765 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, | 769 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, |
766 | y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); | 770 | y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); |
767 | } | 771 | } |
768 | if ( dis && !act ) { | 772 | if ( dis && !act ) { |
769 | p->setPen( g.light() ); | 773 | p->setPen( g.light() ); |
770 | p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t ); | 774 | p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t ); |
771 | p->setPen( discol ); | 775 | p->setPen( discol ); |
772 | } | 776 | } |
773 | p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); | 777 | p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); |
774 | } else if ( mi->pixmap() ) { // draw pixmap | 778 | } else if ( mi->pixmap() ) { // draw pixmap |
775 | QPixmap *pixmap = mi->pixmap(); | 779 | QPixmap *pixmap = mi->pixmap(); |
776 | if ( pixmap->depth() == 1 ) | 780 | if ( pixmap->depth() == 1 ) |
777 | p->setBackgroundMode( OpaqueMode ); | 781 | p->setBackgroundMode( OpaqueMode ); |
778 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); | 782 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); |
779 | if ( pixmap->depth() == 1 ) | 783 | if ( pixmap->depth() == 1 ) |
780 | p->setBackgroundMode( TransparentMode ); | 784 | p->setBackgroundMode( TransparentMode ); |
781 | } | 785 | } |
782 | if ( mi->popup() ) { // draw sub menu arrow | 786 | if ( mi->popup() ) { // draw sub menu arrow |
783 | int dim = (h-2*motifItemFrame) / 2; | 787 | int dim = (h-2*motifItemFrame) / 2; |
784 | if ( act ) { | 788 | if ( act ) { |
785 | if ( !dis ) | 789 | if ( !dis ) |
786 | discol = white; | 790 | discol = white; |
787 | QColorGroup g2( discol, g.highlight(), | 791 | QColorGroup g2( discol, g.highlight(), |
788 | white, white, | 792 | white, white, |
789 | dis ? discol : white, | 793 | dis ? discol : white, |
790 | discol, white ); | 794 | discol, white ); |
791 | drawArrow( p, RightArrow, FALSE, | 795 | drawArrow( p, RightArrow, FALSE, |
792 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 796 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
793 | dim, dim, g2, TRUE ); | 797 | dim, dim, g2, TRUE ); |
794 | } else { | 798 | } else { |
795 | drawArrow( p, RightArrow, | 799 | drawArrow( p, RightArrow, |
796 | FALSE, | 800 | FALSE, |
797 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 801 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
798 | dim, dim, g, mi->isEnabled() ); | 802 | dim, dim, g, mi->isEnabled() ); |
799 | } | 803 | } |
800 | } | 804 | } |
801 | #endif | 805 | #endif |
802 | } | 806 | } |
803 | 807 | ||
804 | //=========================================================================== | 808 | //=========================================================================== |
805 | 809 | ||
806 | FreshStyleImpl::FreshStyleImpl() | 810 | FreshStyleImpl::FreshStyleImpl() |
807 | : fresh(0) | 811 | : fresh(0) |
808 | { | 812 | { |
809 | } | 813 | } |
810 | 814 | ||
811 | FreshStyleImpl::~FreshStyleImpl() | 815 | FreshStyleImpl::~FreshStyleImpl() |
812 | { | 816 | { |
813 | // We do not delete the style because Qt does that when a new style | 817 | // We do not delete the style because Qt does that when a new style |
814 | // is set. | 818 | // is set. |
815 | } | 819 | } |
816 | 820 | ||
817 | QStyle *FreshStyleImpl::style() | 821 | QStyle *FreshStyleImpl::style() |
818 | { | 822 | { |
819 | if ( !fresh ) | 823 | if ( !fresh ) |
820 | fresh = new FreshStyle(); | 824 | fresh = new FreshStyle(); |
821 | return fresh; | 825 | return fresh; |
822 | } | 826 | } |
823 | 827 | ||
824 | QString FreshStyleImpl::name() const | 828 | QString FreshStyleImpl::name() const |
825 | { | 829 | { |
826 | return QString("Fresh"); | 830 | return QString("Fresh"); |
827 | } | 831 | } |
828 | 832 | ||
829 | QRESULT FreshStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) | 833 | QRESULT FreshStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) |
830 | { | 834 | { |
831 | *iface = 0; | 835 | *iface = 0; |
832 | if ( uuid == IID_QUnknown ) | 836 | if ( uuid == IID_QUnknown ) |
833 | *iface = this; | 837 | *iface = this; |
834 | else if ( uuid == IID_Style ) | 838 | else if ( uuid == IID_Style ) |
835 | *iface = this; | 839 | *iface = this; |
836 | else | 840 | else |
837 | return QS_FALSE; | 841 | return QS_FALSE; |
838 | 842 | ||
839 | if ( *iface ) | 843 | if ( *iface ) |
840 | (*iface)->addRef(); | 844 | (*iface)->addRef(); |
841 | return QS_OK; | 845 | return QS_OK; |
842 | } | 846 | } |
843 | 847 | ||
844 | Q_EXPORT_INTERFACE() | 848 | Q_EXPORT_INTERFACE() |
845 | { | 849 | { |
846 | Q_CREATE_INSTANCE( FreshStyleImpl ) | 850 | Q_CREATE_INSTANCE( FreshStyleImpl ) |
847 | } | 851 | } |
848 | 852 | ||
diff --git a/noncore/styles/liquid/liquid.cpp b/noncore/styles/liquid/liquid.cpp index 51814e7..77cf198 100644 --- a/noncore/styles/liquid/liquid.cpp +++ b/noncore/styles/liquid/liquid.cpp | |||
@@ -1,2613 +1,2620 @@ | |||
1 | /*- | 1 | /*- |
2 | * Copyright (C)QPL 2001 Daniel M. Duley. All rights reserved. | 2 | * Copyright (C)QPL 2001 Daniel M. Duley. All rights reserved. |
3 | */ | 3 | */ |
4 | 4 | ||
5 | // | 5 | // |
6 | // (c) 2002 Robert 'sandman' Griebl | 6 | // (c) 2002 Robert 'sandman' Griebl |
7 | // | 7 | // |
8 | 8 | ||
9 | 9 | ||
10 | #ifndef INCLUDE_MENUITEM_DEF | 10 | #ifndef INCLUDE_MENUITEM_DEF |
11 | #define INCLUDE_MENUITEM_DEF | 11 | #define INCLUDE_MENUITEM_DEF |
12 | #endif | 12 | #endif |
13 | 13 | ||
14 | #include "liquid.h" | 14 | #include "liquid.h" |
15 | #include "effects.h" | 15 | #include "effects.h" |
16 | #include "htmlmasks.h" | 16 | #include "htmlmasks.h" |
17 | #include "embeddata.h" | 17 | #include "embeddata.h" |
18 | 18 | ||
19 | /* OPIE */ | 19 | /* OPIE */ |
20 | #include <opie2/odebug.h> | 20 | #include <opie2/odebug.h> |
21 | #include <qpe/config.h> | 21 | #include <qpe/config.h> |
22 | using namespace Opie::Core; | 22 | using namespace Opie::Core; |
23 | 23 | ||
24 | /* QT */ | 24 | /* QT */ |
25 | #include <qmenudata.h> | 25 | #include <qmenudata.h> |
26 | #include <qapplication.h> | 26 | #include <qapplication.h> |
27 | #include <qpalette.h> | 27 | #include <qpalette.h> |
28 | #include <qbitmap.h> | 28 | #include <qbitmap.h> |
29 | #include <qtabbar.h> | 29 | #include <qtabbar.h> |
30 | #include <qpopupmenu.h> | 30 | #include <qpopupmenu.h> |
31 | #include <qobjectlist.h> | 31 | #include <qobjectlist.h> |
32 | #include <qimage.h> | 32 | #include <qimage.h> |
33 | #include <qtimer.h> | 33 | #include <qtimer.h> |
34 | #include <qpixmapcache.h> | 34 | #include <qpixmapcache.h> |
35 | #include <qradiobutton.h> | 35 | #include <qradiobutton.h> |
36 | #include <qcombobox.h> | 36 | #include <qcombobox.h> |
37 | #include <qdrawutil.h> | 37 | #include <qdrawutil.h> |
38 | #include <qwidgetlist.h> | 38 | #include <qwidgetlist.h> |
39 | #include <qtoolbutton.h> | 39 | #include <qtoolbutton.h> |
40 | #include <qheader.h> | 40 | #include <qheader.h> |
41 | #include <qmenubar.h> | 41 | #include <qmenubar.h> |
42 | #include <qprogressbar.h> | 42 | #include <qprogressbar.h> |
43 | #include <qlineedit.h> | 43 | #include <qlineedit.h> |
44 | #include <qlistbox.h> | 44 | #include <qlistbox.h> |
45 | 45 | ||
46 | /* STD */ | 46 | /* STD */ |
47 | #include <unistd.h> | 47 | #include <unistd.h> |
48 | #include <stdio.h> | 48 | #include <stdio.h> |
49 | 49 | ||
50 | 50 | ||
51 | typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, | 51 | typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, |
52 | QColorGroup &, bool, bool); | 52 | QColorGroup &, bool, bool); |
53 | 53 | ||
54 | QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); | 54 | QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); |
55 | 55 | ||
56 | void TransMenuHandler::stripePixmap(QPixmap &pix, const QColor &color) | 56 | void TransMenuHandler::stripePixmap(QPixmap &pix, const QColor &color) |
57 | { | 57 | { |
58 | QImage img(pix.convertToImage()); | 58 | QImage img(pix.convertToImage()); |
59 | QImageEffect::fade(img, 0.9, color); | 59 | QImageEffect::fade(img, 0.9, color); |
60 | int x, y; | 60 | int x, y; |
61 | int r, g, b; | 61 | int r, g, b; |
62 | for(y=0; y < img.height(); y+=3){ | 62 | for(y=0; y < img.height(); y+=3){ |
63 | unsigned int *data = (unsigned int *) img.scanLine(y); | 63 | unsigned int *data = (unsigned int *) img.scanLine(y); |
64 | for(x=0; x < img.width(); ++x){ | 64 | for(x=0; x < img.width(); ++x){ |
65 | r = qRed(data[x]); | 65 | r = qRed(data[x]); |
66 | g = qGreen(data[x]); | 66 | g = qGreen(data[x]); |
67 | b = qBlue(data[x]); | 67 | b = qBlue(data[x]); |
68 | if(r-10) | 68 | if(r-10) |
69 | r-=10; | 69 | r-=10; |
70 | if(g-10) | 70 | if(g-10) |
71 | g-=10; | 71 | g-=10; |
72 | if(b-10) | 72 | if(b-10) |
73 | b-=10; | 73 | b-=10; |
74 | data[x] = qRgb(r, g, b); | 74 | data[x] = qRgb(r, g, b); |
75 | } | 75 | } |
76 | } | 76 | } |
77 | pix.convertFromImage(img); | 77 | pix.convertFromImage(img); |
78 | } | 78 | } |
79 | 79 | ||
80 | TransMenuHandler::TransMenuHandler(QObject *parent) | 80 | TransMenuHandler::TransMenuHandler(QObject *parent) |
81 | : QObject(parent) | 81 | : QObject(parent) |
82 | { | 82 | { |
83 | pixDict.setAutoDelete(true); | 83 | pixDict.setAutoDelete(true); |
84 | reloadSettings(); | 84 | reloadSettings(); |
85 | } | 85 | } |
86 | 86 | ||
87 | void TransMenuHandler::reloadSettings() | 87 | void TransMenuHandler::reloadSettings() |
88 | { | 88 | { |
89 | pixDict.clear(); | 89 | pixDict.clear(); |
90 | 90 | ||
91 | Config config ( "qpe" ); | 91 | Config config ( "qpe" ); |
92 | config. setGroup ( "Liquid-Style" ); | 92 | config. setGroup ( "Liquid-Style" ); |
93 | 93 | ||
94 | type = config. readNumEntry("Type", TransStippleBg); | 94 | type = config. readNumEntry("Type", TransStippleBg); |
95 | color = QColor ( config. readEntry("Color", QApplication::palette().active().button().name())); | 95 | color = QColor ( config. readEntry("Color", QApplication::palette().active().button().name())); |
96 | fgColor = QColor ( config. readEntry("TextColor", QApplication::palette().active().text().name())); | 96 | fgColor = QColor ( config. readEntry("TextColor", QApplication::palette().active().text().name())); |
97 | opacity = config. readNumEntry("Opacity", 10); | 97 | opacity = config. readNumEntry("Opacity", 10); |
98 | if ( opacity < -20 ) | 98 | if ( opacity < -20 ) |
99 | opacity = 20; | 99 | opacity = 20; |
100 | else if ( opacity > 20 ) | 100 | else if ( opacity > 20 ) |
101 | opacity = 20; | 101 | opacity = 20; |
102 | 102 | ||
103 | shadowText = config. readBoolEntry("ShadowText", true); | 103 | shadowText = config. readBoolEntry("ShadowText", true); |
104 | } | 104 | } |
105 | 105 | ||
106 | bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) | 106 | bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) |
107 | { | 107 | { |
108 | QWidget *p = (QWidget *)obj; | 108 | QWidget *p = (QWidget *)obj; |
109 | 109 | ||
110 | if(ev->type() == QEvent::Show){ | 110 | if(ev->type() == QEvent::Show){ |
111 | if(type == TransStippleBg || type == TransStippleBtn || | 111 | if(type == TransStippleBg || type == TransStippleBtn || |
112 | type == Custom){ | 112 | type == Custom){ |
113 | QApplication::syncX(); | 113 | QApplication::syncX(); |
114 | QPixmap *pix = new QPixmap; | 114 | QPixmap *pix = new QPixmap; |
115 | if(p->testWFlags(Qt::WType_Popup)){ | 115 | if(p->testWFlags(Qt::WType_Popup)){ |
116 | QRect r(p->x(), p->y(), p->width(), p->height()); | 116 | QRect r(p->x(), p->y(), p->width(), p->height()); |
117 | QRect deskR = QApplication::desktop()->rect(); | 117 | QRect deskR = QApplication::desktop()->rect(); |
118 | if(r.right() > deskR.right() || r.bottom() > deskR.bottom()){ | 118 | if(r.right() > deskR.right() || r.bottom() > deskR.bottom()){ |
119 | r.setBottom(deskR.bottom()); | 119 | r.setBottom(deskR.bottom()); |
120 | r.setRight(deskR.right()); | 120 | r.setRight(deskR.right()); |
121 | } | 121 | } |
122 | *pix = QPixmap::grabWindow(QApplication::desktop()-> winId(), r.x(), r.y(), | 122 | *pix = QPixmap::grabWindow(QApplication::desktop()-> winId(), r.x(), r.y(), |
123 | r.width(), r.height()); | 123 | r.width(), r.height()); |
124 | } | 124 | } |
125 | else{ // tear off menu | 125 | else{ // tear off menu |
126 | pix->resize(p->width(), p->height()); | 126 | pix->resize(p->width(), p->height()); |
127 | pix->fill(Qt::black.rgb()); | 127 | pix->fill(Qt::black.rgb()); |
128 | } | 128 | } |
129 | if(type == TransStippleBg){ | 129 | if(type == TransStippleBg){ |
130 | stripePixmap(*pix, p->colorGroup().background()); | 130 | stripePixmap(*pix, p->colorGroup().background()); |
131 | } | 131 | } |
132 | else if(type == TransStippleBtn){ | 132 | else if(type == TransStippleBtn){ |
133 | stripePixmap(*pix, p->colorGroup().button()); | 133 | stripePixmap(*pix, p->colorGroup().button()); |
134 | } | 134 | } |
135 | else{ | 135 | else{ |
136 | QPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color); | 136 | QPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color); |
137 | } | 137 | } |
138 | 138 | ||
139 | pixDict.insert(p->winId(), pix); | 139 | pixDict.insert(p->winId(), pix); |
140 | 140 | ||
141 | if ( !p->inherits("QPopupMenu")) | 141 | if ( !p->inherits("QPopupMenu")) |
142 | p->setBackgroundPixmap(*pix); | 142 | p->setBackgroundPixmap(*pix); |
143 | 143 | ||
144 | QObjectList *ol = p-> queryList("QWidget"); | 144 | QObjectList *ol = p-> queryList("QWidget"); |
145 | for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { | 145 | for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { |
146 | QWidget *wid = (QWidget *) it.current ( ); | 146 | QWidget *wid = (QWidget *) it.current ( ); |
147 | 147 | ||
148 | wid-> setBackgroundPixmap(*pix); | 148 | wid-> setBackgroundPixmap(*pix); |
149 | wid-> setBackgroundOrigin(QWidget::ParentOrigin); | 149 | wid-> setBackgroundOrigin(QWidget::ParentOrigin); |
150 | } | 150 | } |
151 | delete ol; | 151 | delete ol; |
152 | } | 152 | } |
153 | } | 153 | } |
154 | else if(ev->type() == QEvent::Hide){ | 154 | else if(ev->type() == QEvent::Hide){ |
155 | if(type == TransStippleBg || type == TransStippleBtn || | 155 | if(type == TransStippleBg || type == TransStippleBtn || |
156 | type == Custom){ | 156 | type == Custom){ |
157 | // owarn << "Deleting menu pixmap, width " << pixDict.find(p->winId())->width() << "" << oendl; | 157 | // owarn << "Deleting menu pixmap, width " << pixDict.find(p->winId())->width() << "" << oendl; |
158 | 158 | ||
159 | pixDict.remove(p->winId()); | 159 | pixDict.remove(p->winId()); |
160 | if ( !p->inherits("QPopupMenu")) | 160 | if ( !p->inherits("QPopupMenu")) |
161 | p->setBackgroundMode(QWidget::PaletteBackground); | 161 | p->setBackgroundMode(QWidget::PaletteBackground); |
162 | 162 | ||
163 | QObjectList *ol = p-> queryList("QWidget"); | 163 | QObjectList *ol = p-> queryList("QWidget"); |
164 | for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { | 164 | for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { |
165 | QWidget *wid = (QWidget *) it.current ( ); | 165 | QWidget *wid = (QWidget *) it.current ( ); |
166 | 166 | ||
167 | wid-> setBackgroundMode( QWidget::PaletteBackground ); | 167 | wid-> setBackgroundMode( QWidget::PaletteBackground ); |
168 | } | 168 | } |
169 | delete ol; | 169 | delete ol; |
170 | } | 170 | } |
171 | } | 171 | } |
172 | return(false); | 172 | return(false); |
173 | } | 173 | } |
174 | 174 | ||
175 | 175 | ||
176 | 176 | ||
177 | 177 | ||
178 | LiquidStyle::LiquidStyle() | 178 | LiquidStyle::LiquidStyle() |
179 | :QWindowsStyle() | 179 | :QWindowsStyle() |
180 | { | 180 | { |
181 | setName ( "LiquidStyle" ); | 181 | setName ( "LiquidStyle" ); |
182 | 182 | ||
183 | flatTBButtons = false; | 183 | flatTBButtons = false; |
184 | currentHeader = 0; | 184 | currentHeader = 0; |
185 | 185 | ||
186 | btnMaskBmp = QBitmap(37, 26, buttonmask_bits, true); | 186 | btnMaskBmp = QBitmap(37, 26, buttonmask_bits, true); |
187 | btnMaskBmp.setMask(btnMaskBmp); | 187 | btnMaskBmp.setMask(btnMaskBmp); |
188 | htmlBtnMaskBmp = QBitmap(37, 26, htmlbuttonmask_bits, true); | 188 | htmlBtnMaskBmp = QBitmap(37, 26, htmlbuttonmask_bits, true); |
189 | htmlBtnMaskBmp.setMask(htmlBtnMaskBmp); | 189 | htmlBtnMaskBmp.setMask(htmlBtnMaskBmp); |
190 | headerHoverID = -1; | 190 | headerHoverID = -1; |
191 | highlightWidget = NULL; | 191 | highlightWidget = NULL; |
192 | setButtonDefaultIndicatorWidth(0); | 192 | setButtonDefaultIndicatorWidth(0); |
193 | btnDict.setAutoDelete(true); | 193 | btnDict.setAutoDelete(true); |
194 | bevelFillDict.setAutoDelete(true); | 194 | bevelFillDict.setAutoDelete(true); |
195 | smallBevelFillDict.setAutoDelete(true); | 195 | smallBevelFillDict.setAutoDelete(true); |
196 | 196 | ||
197 | rMatrix.rotate(270.0); | 197 | rMatrix.rotate(270.0); |
198 | btnBorderPix = new QPixmap; | 198 | btnBorderPix = new QPixmap; |
199 | btnBorderPix->convertFromImage(qembed_findImage("buttonfill")); | 199 | btnBorderPix->convertFromImage(qembed_findImage("buttonfill")); |
200 | btnBlendPix = new QPixmap; | 200 | btnBlendPix = new QPixmap; |
201 | btnBlendPix->convertFromImage(qembed_findImage("buttonborder")); | 201 | btnBlendPix->convertFromImage(qembed_findImage("buttonborder")); |
202 | bevelFillPix = new QPixmap; | 202 | bevelFillPix = new QPixmap; |
203 | bevelFillPix->convertFromImage(qembed_findImage("clear_fill_large")); | 203 | bevelFillPix->convertFromImage(qembed_findImage("clear_fill_large")); |
204 | smallBevelFillPix = new QPixmap; | 204 | smallBevelFillPix = new QPixmap; |
205 | smallBevelFillPix->convertFromImage(qembed_findImage("clear_fill_small")); | 205 | smallBevelFillPix->convertFromImage(qembed_findImage("clear_fill_small")); |
206 | // new stuff | 206 | // new stuff |
207 | vsbSliderFillPix = menuPix = NULL; | 207 | vsbSliderFillPix = menuPix = NULL; |
208 | menuHandler = new TransMenuHandler(this); | 208 | menuHandler = new TransMenuHandler(this); |
209 | setScrollBarExtent(15, 15); | 209 | setScrollBarExtent(15, 15); |
210 | int i; | 210 | int i; |
211 | for(i=0; i < BITMAP_ITEMS; ++i){ | 211 | for(i=0; i < BITMAP_ITEMS; ++i){ |
212 | pixmaps[i] = NULL; | 212 | pixmaps[i] = NULL; |
213 | } | 213 | } |
214 | oldSliderThickness = sliderThickness(); | 214 | oldSliderThickness = sliderThickness(); |
215 | setSliderThickness(11); | 215 | setSliderThickness(11); |
216 | } | 216 | } |
217 | 217 | ||
218 | LiquidStyle::~LiquidStyle() | 218 | LiquidStyle::~LiquidStyle() |
219 | { | 219 | { |
220 | if(btnBorderPix) | 220 | if(btnBorderPix) |
221 | delete btnBorderPix; | 221 | delete btnBorderPix; |
222 | if(btnBlendPix) | 222 | if(btnBlendPix) |
223 | delete btnBlendPix; | 223 | delete btnBlendPix; |
224 | if(bevelFillPix) | 224 | if(bevelFillPix) |
225 | delete bevelFillPix; | 225 | delete bevelFillPix; |
226 | if(smallBevelFillPix) | 226 | if(smallBevelFillPix) |
227 | delete smallBevelFillPix; | 227 | delete smallBevelFillPix; |
228 | if(vsbSliderFillPix) | 228 | if(vsbSliderFillPix) |
229 | delete vsbSliderFillPix; | 229 | delete vsbSliderFillPix; |
230 | if(menuPix) | 230 | if(menuPix) |
231 | delete menuPix; | 231 | delete menuPix; |
232 | 232 | ||
233 | setScrollBarExtent(16, 16); | 233 | setScrollBarExtent(16, 16); |
234 | setSliderThickness(oldSliderThickness); | 234 | setSliderThickness(oldSliderThickness); |
235 | int i; | 235 | int i; |
236 | for(i=0; i < BITMAP_ITEMS; ++i){ | 236 | for(i=0; i < BITMAP_ITEMS; ++i){ |
237 | if(pixmaps[i]) | 237 | if(pixmaps[i]) |
238 | delete pixmaps[i]; | 238 | delete pixmaps[i]; |
239 | } | 239 | } |
240 | } | 240 | } |
241 | 241 | ||
242 | void LiquidStyle::drawClearBevel(QPainter *p, int x, int y, int w, int h, | 242 | void LiquidStyle::drawClearBevel(QPainter *p, int x, int y, int w, int h, |
243 | const QColor &c, const QColor &bg) | 243 | const QColor &c, const QColor &bg) |
244 | { | 244 | { |
245 | 245 | ||
246 | QPen oldPen = p->pen(); // headers need this | 246 | QPen oldPen = p->pen(); // headers need this |
247 | int x2 = x+w-1; | 247 | int x2 = x+w-1; |
248 | int y2 = y+h-1; | 248 | int y2 = y+h-1; |
249 | // outer dark rect | 249 | // outer dark rect |
250 | p->setPen(c.dark(130)); | 250 | p->setPen(c.dark(130)); |
251 | p->drawLine(x, y+2, x, y2-2); // l | 251 | p->drawLine(x, y+2, x, y2-2); // l |
252 | p->drawLine(x2, y+2, x2, y2-2); // r | 252 | p->drawLine(x2, y+2, x2, y2-2); // r |
253 | p->drawLine(x+2, y, x2-2, y); // t | 253 | p->drawLine(x+2, y, x2-2, y); // t |
254 | p->drawLine(x+2, y2, x2-2, y2); // b | 254 | p->drawLine(x+2, y2, x2-2, y2); // b |
255 | p->drawPoint(x+1, y+1); // tl | 255 | p->drawPoint(x+1, y+1); // tl |
256 | p->drawPoint(x2-1, y+1); // tr | 256 | p->drawPoint(x2-1, y+1); // tr |
257 | p->drawPoint(x+1, y2-1); // bl | 257 | p->drawPoint(x+1, y2-1); // bl |
258 | p->drawPoint(x2-1, y2-1); // br | 258 | p->drawPoint(x2-1, y2-1); // br |
259 | 259 | ||
260 | // inner top light lines | 260 | // inner top light lines |
261 | p->setPen(c.light(105)); | 261 | p->setPen(c.light(105)); |
262 | p->drawLine(x+2, y+1, x2-2, y+1); | 262 | p->drawLine(x+2, y+1, x2-2, y+1); |
263 | p->drawLine(x+1, y+2, x2-1, y+2); | 263 | p->drawLine(x+1, y+2, x2-1, y+2); |
264 | p->drawLine(x+1, y+3, x+2, y+3); | 264 | p->drawLine(x+1, y+3, x+2, y+3); |
265 | p->drawLine(x2-2, y+3, x2-1, y+3); | 265 | p->drawLine(x2-2, y+3, x2-1, y+3); |
266 | p->drawPoint(x+1, y+4); | 266 | p->drawPoint(x+1, y+4); |
267 | p->drawPoint(x2-1, y+4); | 267 | p->drawPoint(x2-1, y+4); |
268 | 268 | ||
269 | // inner bottom light lines | 269 | // inner bottom light lines |
270 | p->setPen(c.light(110)); | 270 | p->setPen(c.light(110)); |
271 | p->drawLine(x+2, y2-1, x2-2, y2-1); | 271 | p->drawLine(x+2, y2-1, x2-2, y2-1); |
272 | p->drawLine(x+1, y2-2, x2-1, y2-2); | 272 | p->drawLine(x+1, y2-2, x2-1, y2-2); |
273 | p->drawLine(x+1, y2-3, x+2, y2-3); | 273 | p->drawLine(x+1, y2-3, x+2, y2-3); |
274 | p->drawLine(x2-2, y2-3, x2-1, y2-3); | 274 | p->drawLine(x2-2, y2-3, x2-1, y2-3); |
275 | p->drawPoint(x+1, y2-4); | 275 | p->drawPoint(x+1, y2-4); |
276 | p->drawPoint(x2-1, y2-4); | 276 | p->drawPoint(x2-1, y2-4); |
277 | 277 | ||
278 | // inner left mid lines | 278 | // inner left mid lines |
279 | //p->setPen(c.light(105)); | 279 | //p->setPen(c.light(105)); |
280 | p->setPen(c); | 280 | p->setPen(c); |
281 | p->drawLine(x+1, y+5, x+1, y2-5); | 281 | p->drawLine(x+1, y+5, x+1, y2-5); |
282 | p->drawLine(x+2, y+4, x+2, y2-4); | 282 | p->drawLine(x+2, y+4, x+2, y2-4); |
283 | 283 | ||
284 | // inner right mid lines | 284 | // inner right mid lines |
285 | p->drawLine(x2-1, y+5, x2-1, y2-5); | 285 | p->drawLine(x2-1, y+5, x2-1, y2-5); |
286 | p->drawLine(x2-2, y+4, x2-2, y2-4); | 286 | p->drawLine(x2-2, y+4, x2-2, y2-4); |
287 | 287 | ||
288 | // fill | 288 | // fill |
289 | QPixmap *pix; | 289 | QPixmap *pix; |
290 | if(h >= 32){ | 290 | if(h >= 32){ |
291 | pix = bevelFillDict.find(c.rgb()); | 291 | pix = bevelFillDict.find(c.rgb()); |
292 | if(!pix){ | 292 | if(!pix){ |
293 | int h, s, v; | 293 | int h, s, v; |
294 | c.hsv(&h, &s, &v); | 294 | c.hsv(&h, &s, &v); |
295 | pix = new QPixmap(*bevelFillPix); | 295 | pix = new QPixmap(*bevelFillPix); |
296 | adjustHSV(*pix, h, s, v); | 296 | adjustHSV(*pix, h, s, v); |
297 | bevelFillDict.insert(c.rgb(), pix); | 297 | bevelFillDict.insert(c.rgb(), pix); |
298 | } | 298 | } |
299 | } | 299 | } |
300 | else{ | 300 | else{ |
301 | pix = smallBevelFillDict.find(c.rgb()); | 301 | pix = smallBevelFillDict.find(c.rgb()); |
302 | if(!pix){ | 302 | if(!pix){ |
303 | int h, s, v; | 303 | int h, s, v; |
304 | c.hsv(&h, &s, &v); | 304 | c.hsv(&h, &s, &v); |
305 | pix = new QPixmap(*smallBevelFillPix); | 305 | pix = new QPixmap(*smallBevelFillPix); |
306 | adjustHSV(*pix, h, s, v); | 306 | adjustHSV(*pix, h, s, v); |
307 | smallBevelFillDict.insert(c.rgb(), pix); | 307 | smallBevelFillDict.insert(c.rgb(), pix); |
308 | } | 308 | } |
309 | } | 309 | } |
310 | p->drawTiledPixmap(x+3, y+3, w-6, h-6, *pix); | 310 | p->drawTiledPixmap(x+3, y+3, w-6, h-6, *pix); |
311 | // blend | 311 | // blend |
312 | int red, green, blue; | 312 | int red, green, blue; |
313 | QColor btnColor(c.dark(130)); | 313 | QColor btnColor(c.dark(130)); |
314 | red = (btnColor.red() >> 1) + (bg.red() >> 1); | 314 | red = (btnColor.red() >> 1) + (bg.red() >> 1); |
315 | green = (btnColor.green() >> 1) + (bg.green() >> 1); | 315 | green = (btnColor.green() >> 1) + (bg.green() >> 1); |
316 | blue = (btnColor.blue() >> 1) + (bg.blue() >> 1); | 316 | blue = (btnColor.blue() >> 1) + (bg.blue() >> 1); |
317 | btnColor.setRgb(red, green, blue); | 317 | btnColor.setRgb(red, green, blue); |
318 | 318 | ||
319 | p->setPen(btnColor); | 319 | p->setPen(btnColor); |
320 | p->drawPoint(x+1, y); | 320 | p->drawPoint(x+1, y); |
321 | p->drawPoint(x, y+1); | 321 | p->drawPoint(x, y+1); |
322 | p->drawPoint(x+1, y2); | 322 | p->drawPoint(x+1, y2); |
323 | p->drawPoint(x, y2-1); | 323 | p->drawPoint(x, y2-1); |
324 | 324 | ||
325 | p->drawPoint(x2-1, y); | 325 | p->drawPoint(x2-1, y); |
326 | p->drawPoint(x2, y+1); | 326 | p->drawPoint(x2, y+1); |
327 | p->drawPoint(x2-1, y2); | 327 | p->drawPoint(x2-1, y2); |
328 | p->drawPoint(x2, y2-1); | 328 | p->drawPoint(x2, y2-1); |
329 | 329 | ||
330 | p->setPen(oldPen); | 330 | p->setPen(oldPen); |
331 | 331 | ||
332 | } | 332 | } |
333 | 333 | ||
334 | void LiquidStyle::drawRoundButton(QPainter *painter, const QColor &c, | 334 | void LiquidStyle::drawRoundButton(QPainter *painter, const QColor &c, |
335 | const QColor &back, int x, int y, int w, int h, | 335 | const QColor &back, int x, int y, int w, int h, |
336 | bool supportPushDown, bool pushedDown, | 336 | bool supportPushDown, bool pushedDown, |
337 | bool autoDefault, bool isMasked) | 337 | bool autoDefault, bool isMasked) |
338 | { | 338 | { |
339 | if(w < 21 || h < 21){ | 339 | if(w < 21 || h < 21){ |
340 | drawClearBevel(painter, x, y, w, h, c, back); | 340 | drawClearBevel(painter, x, y, w, h, c, back); |
341 | return; | 341 | return; |
342 | } | 342 | } |
343 | if(supportPushDown){ | 343 | if(supportPushDown){ |
344 | --w, --h; | 344 | --w, --h; |
345 | } | 345 | } |
346 | /* We don't make the round buttons smaller, since they don't look as good | 346 | /* We don't make the round buttons smaller, since they don't look as good |
347 | if(autoDefault){ | 347 | if(autoDefault){ |
348 | w = w-buttonDefaultIndicatorWidth()*2; | 348 | w = w-buttonDefaultIndicatorWidth()*2; |
349 | h = h-buttonDefaultIndicatorWidth()*2; | 349 | h = h-buttonDefaultIndicatorWidth()*2; |
350 | }*/ | 350 | }*/ |
351 | 351 | ||
352 | 352 | ||
353 | QPixmap *pix = btnDict.find(c.rgb()); | 353 | QPixmap *pix = btnDict.find(c.rgb()); |
354 | if(!pix){ | 354 | if(!pix){ |
355 | int h, s, v; | 355 | int h, s, v; |
356 | c.hsv(&h, &s, &v); | 356 | c.hsv(&h, &s, &v); |
357 | pix = new QPixmap(*btnBorderPix); | 357 | pix = new QPixmap(*btnBorderPix); |
358 | adjustHSV(*pix, h, s, v); | 358 | adjustHSV(*pix, h, s, v); |
359 | btnDict.insert(c.rgb(), pix); | 359 | btnDict.insert(c.rgb(), pix); |
360 | } | 360 | } |
361 | int x2 = x+w-1; | 361 | int x2 = x+w-1; |
362 | int y2 = y+h-1; | 362 | int y2 = y+h-1; |
363 | int bx2 = pix->width()-1; | 363 | int bx2 = pix->width()-1; |
364 | int by2 = pix->height()-1; | 364 | int by2 = pix->height()-1; |
365 | 365 | ||
366 | QPixmap tmpPix(w, h); | 366 | QPixmap tmpPix(w, h); |
367 | QPixmap tilePix; | 367 | QPixmap tilePix; |
368 | QPainter p; | 368 | QPainter p; |
369 | p.begin(&tmpPix); | 369 | p.begin(&tmpPix); |
370 | 370 | ||
371 | // do the fill | 371 | // do the fill |
372 | p.drawPixmap(0, 0, *pix, 0, 0, 10, 10); // tl | 372 | p.drawPixmap(0, 0, *pix, 0, 0, 10, 10); // tl |
373 | p.drawPixmap(x2-9, 0, *pix, bx2-9, 0, 10, 10); // tr | 373 | p.drawPixmap(x2-9, 0, *pix, bx2-9, 0, 10, 10); // tr |
374 | p.drawPixmap(0, y2-9, *pix, 0, by2-9, 10, 10); // bl | 374 | p.drawPixmap(0, y2-9, *pix, 0, by2-9, 10, 10); // bl |
375 | p.drawPixmap(x2-9, y2-9, *pix, bx2-9, by2-9, 10, 10); // br | 375 | p.drawPixmap(x2-9, y2-9, *pix, bx2-9, by2-9, 10, 10); // br |
376 | 376 | ||
377 | // edges | 377 | // edges |
378 | tilePix.resize(pix->width()-20, 10); | 378 | tilePix.resize(pix->width()-20, 10); |
379 | // top | 379 | // top |
380 | bitBlt(&tilePix, 0, 0, pix, 10, 0, pix->width()-20, 10); | 380 | bitBlt(&tilePix, 0, 0, pix, 10, 0, pix->width()-20, 10); |
381 | p.drawTiledPixmap(10, 0, w-20, 10, tilePix); | 381 | p.drawTiledPixmap(10, 0, w-20, 10, tilePix); |
382 | // bottom | 382 | // bottom |
383 | bitBlt(&tilePix, 0, 0, pix, 10, by2-9, pix->width()-20, 20); | 383 | bitBlt(&tilePix, 0, 0, pix, 10, by2-9, pix->width()-20, 20); |
384 | p.drawTiledPixmap(10, y2-9, w-20, 10, tilePix); | 384 | p.drawTiledPixmap(10, y2-9, w-20, 10, tilePix); |
385 | // left | 385 | // left |
386 | tilePix.resize(10, pix->height()-20); | 386 | tilePix.resize(10, pix->height()-20); |
387 | bitBlt(&tilePix, 0, 0, pix, 0, 10, 10, pix->height()-20); | 387 | bitBlt(&tilePix, 0, 0, pix, 0, 10, 10, pix->height()-20); |
388 | p.drawTiledPixmap(0, 10, 10, h-20, tilePix); | 388 | p.drawTiledPixmap(0, 10, 10, h-20, tilePix); |
389 | // right | 389 | // right |
390 | bitBlt(&tilePix, 0, 0, pix, bx2-9, 10, 10, pix->height()-20); | 390 | bitBlt(&tilePix, 0, 0, pix, bx2-9, 10, 10, pix->height()-20); |
391 | p.drawTiledPixmap(x2-9, 10, 10, h-20, tilePix); | 391 | p.drawTiledPixmap(x2-9, 10, 10, h-20, tilePix); |
392 | 392 | ||
393 | // middle | 393 | // middle |
394 | tilePix.resize(pix->width()-20, pix->height()-20); | 394 | tilePix.resize(pix->width()-20, pix->height()-20); |
395 | bitBlt(&tilePix, 0, 0, pix, 10, 10, pix->width()-20, pix->height()-20); | 395 | bitBlt(&tilePix, 0, 0, pix, 10, 10, pix->width()-20, pix->height()-20); |
396 | p.drawTiledPixmap(10, 10, w-20, h-20, tilePix); | 396 | p.drawTiledPixmap(10, 10, w-20, h-20, tilePix); |
397 | 397 | ||
398 | 398 | ||
399 | // do the blend | 399 | // do the blend |
400 | QBitmap blendMask; | 400 | QBitmap blendMask; |
401 | if(!isMasked){ | 401 | if(!isMasked){ |
402 | //QRgb bgRgb = back.rgb(); | 402 | //QRgb bgRgb = back.rgb(); |
403 | //QRgb fgRgb = c.rgb(); | 403 | //QRgb fgRgb = c.rgb(); |
404 | //int r, g, b; | 404 | //int r, g, b; |
405 | 405 | ||
406 | //r = (int)(qRed(bgRgb)*0.75 + qRed(fgRgb)*0.25); | 406 | //r = (int)(qRed(bgRgb)*0.75 + qRed(fgRgb)*0.25); |
407 | //g = (int)(qGreen(bgRgb)*0.75 + qGreen(fgRgb)*0.25); | 407 | //g = (int)(qGreen(bgRgb)*0.75 + qGreen(fgRgb)*0.25); |
408 | //b = (int)(qBlue(bgRgb)*0.75 + qBlue(fgRgb)*0.25); | 408 | //b = (int)(qBlue(bgRgb)*0.75 + qBlue(fgRgb)*0.25); |
409 | //QColor blendColor(r, g, b); | 409 | //QColor blendColor(r, g, b); |
410 | int hue, sat, v1, v2; | 410 | int hue, sat, v1, v2; |
411 | QColor blendColor(autoDefault ? c : back); | 411 | QColor blendColor(autoDefault ? c : back); |
412 | back.hsv(&hue, &sat, &v1); | 412 | back.hsv(&hue, &sat, &v1); |
413 | blendColor.hsv(&hue, &sat, &v2); | 413 | blendColor.hsv(&hue, &sat, &v2); |
414 | if(v2 > v1) | 414 | if(v2 > v1) |
415 | blendColor.setHsv(hue, sat, (int)(v1*0.75 + v2*0.25)); | 415 | blendColor.setHsv(hue, sat, (int)(v1*0.75 + v2*0.25)); |
416 | 416 | ||
417 | pix = btnBorderDict.find(blendColor.rgb()); | 417 | pix = btnBorderDict.find(blendColor.rgb()); |
418 | if(!pix){ | 418 | if(!pix){ |
419 | int h, s, v; | 419 | int h, s, v; |
420 | blendColor.hsv(&h, &s, &v); | 420 | blendColor.hsv(&h, &s, &v); |
421 | pix = new QPixmap(*btnBlendPix); | 421 | pix = new QPixmap(*btnBlendPix); |
422 | adjustHSV(*pix, h, s, v); | 422 | adjustHSV(*pix, h, s, v); |
423 | btnBorderDict.insert(blendColor.rgb(), pix); | 423 | btnBorderDict.insert(blendColor.rgb(), pix); |
424 | } | 424 | } |
425 | } | 425 | } |
426 | else{ | 426 | else{ |
427 | pix = pushedDown ? getPixmap(HTMLBtnBorderDown) : | 427 | pix = pushedDown ? getPixmap(HTMLBtnBorderDown) : |
428 | getPixmap(HTMLBtnBorder); | 428 | getPixmap(HTMLBtnBorder); |
429 | } | 429 | } |
430 | p.drawPixmap(0, 0, *pix, 0, 0, 10, 10); // tl | 430 | p.drawPixmap(0, 0, *pix, 0, 0, 10, 10); // tl |
431 | p.drawPixmap(x2-9, 0, *pix, bx2-9, 0, 10, 10); // tr | 431 | p.drawPixmap(x2-9, 0, *pix, bx2-9, 0, 10, 10); // tr |
432 | p.drawPixmap(0, y2-9, *pix, 0, by2-9, 10, 10); // bl | 432 | p.drawPixmap(0, y2-9, *pix, 0, by2-9, 10, 10); // bl |
433 | p.drawPixmap(x2-9, y2-9, *pix, bx2-9, by2-9, 10, 10); // br | 433 | p.drawPixmap(x2-9, y2-9, *pix, bx2-9, by2-9, 10, 10); // br |
434 | 434 | ||
435 | // edges | 435 | // edges |
436 | tilePix.resize(pix->width()-20, 10); | 436 | tilePix.resize(pix->width()-20, 10); |
437 | blendMask.resize(pix->width()-20, 10); | 437 | blendMask.resize(pix->width()-20, 10); |
438 | // top | 438 | // top |
439 | bitBlt(&tilePix, 0, 0, pix, 10, 0, pix->width()-20, 10); | 439 | bitBlt(&tilePix, 0, 0, pix, 10, 0, pix->width()-20, 10); |
440 | bitBlt(&blendMask, 0, 0, pix->mask(), 10, 0, pix->width()-20, 10); | 440 | bitBlt(&blendMask, 0, 0, pix->mask(), 10, 0, pix->width()-20, 10); |
441 | tilePix.setMask(blendMask); | 441 | tilePix.setMask(blendMask); |
442 | p.drawTiledPixmap(10, 0, w-20, 10, tilePix); | 442 | p.drawTiledPixmap(10, 0, w-20, 10, tilePix); |
443 | // bottom | 443 | // bottom |
444 | bitBlt(&tilePix, 0, 0, pix, 10, by2-9, pix->width()-20, 20); | 444 | bitBlt(&tilePix, 0, 0, pix, 10, by2-9, pix->width()-20, 20); |
445 | bitBlt(&blendMask, 0, 0, pix->mask(), 10, by2-9, pix->width()-20, 20); | 445 | bitBlt(&blendMask, 0, 0, pix->mask(), 10, by2-9, pix->width()-20, 20); |
446 | tilePix.setMask(blendMask); | 446 | tilePix.setMask(blendMask); |
447 | p.drawTiledPixmap(10, y2-9, w-20, 10, tilePix); | 447 | p.drawTiledPixmap(10, y2-9, w-20, 10, tilePix); |
448 | // left | 448 | // left |
449 | tilePix.resize(10, pix->height()-20); | 449 | tilePix.resize(10, pix->height()-20); |
450 | blendMask.resize(10, pix->height()-20); | 450 | blendMask.resize(10, pix->height()-20); |
451 | bitBlt(&tilePix, 0, 0, pix, 0, 10, 10, pix->height()-20); | 451 | bitBlt(&tilePix, 0, 0, pix, 0, 10, 10, pix->height()-20); |
452 | bitBlt(&blendMask, 0, 0, pix->mask(), 0, 10, 10, pix->height()-20); | 452 | bitBlt(&blendMask, 0, 0, pix->mask(), 0, 10, 10, pix->height()-20); |
453 | tilePix.setMask(blendMask); | 453 | tilePix.setMask(blendMask); |
454 | p.drawTiledPixmap(0, 10, 10, h-20, tilePix); | 454 | p.drawTiledPixmap(0, 10, 10, h-20, tilePix); |
455 | // right | 455 | // right |
456 | bitBlt(&tilePix, 0, 0, pix, bx2-9, 10, 10, pix->height()-20); | 456 | bitBlt(&tilePix, 0, 0, pix, bx2-9, 10, 10, pix->height()-20); |
457 | bitBlt(&blendMask, 0, 0, pix->mask(), bx2-9, 10, 10, pix->height()-20); | 457 | bitBlt(&blendMask, 0, 0, pix->mask(), bx2-9, 10, 10, pix->height()-20); |
458 | tilePix.setMask(blendMask); | 458 | tilePix.setMask(blendMask); |
459 | p.drawTiledPixmap(x2-9, 10, 10, h-20, tilePix); | 459 | p.drawTiledPixmap(x2-9, 10, 10, h-20, tilePix); |
460 | 460 | ||
461 | p.end(); | 461 | p.end(); |
462 | 462 | ||
463 | // do the button mask - we don't automask buttons | 463 | // do the button mask - we don't automask buttons |
464 | QBitmap btnMask(w, h); | 464 | QBitmap btnMask(w, h); |
465 | QBitmap *mask = isMasked ? &htmlBtnMaskBmp : &btnMaskBmp; | 465 | QBitmap *mask = isMasked ? &htmlBtnMaskBmp : &btnMaskBmp; |
466 | p.begin(&btnMask); | 466 | p.begin(&btnMask); |
467 | p.fillRect(0, 0, w, h, Qt::color0); | 467 | p.fillRect(0, 0, w, h, Qt::color0); |
468 | p.drawPixmap(0, 0, *mask, 0, 0, 10, 10); // tl | 468 | p.drawPixmap(0, 0, *mask, 0, 0, 10, 10); // tl |
469 | p.drawPixmap(x2-9, 0, *mask, bx2-9, 0, 10, 10); // tr | 469 | p.drawPixmap(x2-9, 0, *mask, bx2-9, 0, 10, 10); // tr |
470 | p.drawPixmap(0, y2-9, *mask, 0, by2-9, 10, 10); // bl | 470 | p.drawPixmap(0, y2-9, *mask, 0, by2-9, 10, 10); // bl |
471 | p.drawPixmap(x2-9, y2-9, *mask, bx2-9, by2-9, 10, 10); // br | 471 | p.drawPixmap(x2-9, y2-9, *mask, bx2-9, by2-9, 10, 10); // br |
472 | // fills | 472 | // fills |
473 | p.fillRect(10, 0, w-20, 10, Qt::color1); // top | 473 | p.fillRect(10, 0, w-20, 10, Qt::color1); // top |
474 | p.fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom | 474 | p.fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom |
475 | p.fillRect(0, 10, w, h-20, Qt::color1); // middle | 475 | p.fillRect(0, 10, w, h-20, Qt::color1); // middle |
476 | p.end(); | 476 | p.end(); |
477 | tmpPix.setMask(btnMask); | 477 | tmpPix.setMask(btnMask); |
478 | /*if(autoDefault){ | 478 | /*if(autoDefault){ |
479 | if(supportPushDown && pushedDown){ | 479 | if(supportPushDown && pushedDown){ |
480 | painter->drawPixmap(x+3, y+3, tmpPix); | 480 | painter->drawPixmap(x+3, y+3, tmpPix); |
481 | } | 481 | } |
482 | else{ | 482 | else{ |
483 | painter->drawPixmap(x+2, y+2, tmpPix); | 483 | painter->drawPixmap(x+2, y+2, tmpPix); |
484 | } | 484 | } |
485 | } | 485 | } |
486 | else */if(supportPushDown && pushedDown) | 486 | else */if(supportPushDown && pushedDown) |
487 | painter->drawPixmap(x+1, y+1, tmpPix); | 487 | painter->drawPixmap(x+1, y+1, tmpPix); |
488 | else | 488 | else |
489 | painter->drawPixmap(x, y, tmpPix); | 489 | painter->drawPixmap(x, y, tmpPix); |
490 | 490 | ||
491 | 491 | ||
492 | 492 | ||
493 | } | 493 | } |
494 | 494 | ||
495 | 495 | ||
496 | QPixmap* LiquidStyle::processEmbedded(const char *label, int h, int s, int v, | 496 | QPixmap* LiquidStyle::processEmbedded(const char *label, int h, int s, int v, |
497 | bool blend) | 497 | bool blend) |
498 | { | 498 | { |
499 | QImage img(qembed_findImage(label)); | 499 | QImage img(qembed_findImage(label)); |
500 | img.detach(); | 500 | img.detach(); |
501 | if(img.isNull()){ // shouldn't happen, been tested | 501 | if(img.isNull()){ // shouldn't happen, been tested |
502 | owarn << "Invalid embedded label " << label << "" << oendl; | 502 | owarn << "Invalid embedded label " << label << "" << oendl; |
503 | return(NULL); | 503 | return(NULL); |
504 | } | 504 | } |
505 | if(img.depth() != 32) | 505 | if(img.depth() != 32) |
506 | img = img.convertDepth(32); | 506 | img = img.convertDepth(32); |
507 | unsigned int *data = (unsigned int *)img.bits(); | 507 | unsigned int *data = (unsigned int *)img.bits(); |
508 | int total = img.width()*img.height(); | 508 | int total = img.width()*img.height(); |
509 | int current; | 509 | int current; |
510 | QColor c; | 510 | QColor c; |
511 | int oldH, oldS, oldV; | 511 | int oldH, oldS, oldV; |
512 | int alpha; | 512 | int alpha; |
513 | if(v < 235) | 513 | if(v < 235) |
514 | v += 20; | 514 | v += 20; |
515 | else | 515 | else |
516 | v = 255; | 516 | v = 255; |
517 | float intensity = v/255.0; | 517 | float intensity = v/255.0; |
518 | 518 | ||
519 | for(current=0; current<total; ++current){ | 519 | for(current=0; current<total; ++current){ |
520 | alpha = qAlpha(data[current]); | 520 | alpha = qAlpha(data[current]); |
521 | c.setRgb(data[current]); | 521 | c.setRgb(data[current]); |
522 | c.hsv(&oldH, &oldS, &oldV); | 522 | c.hsv(&oldH, &oldS, &oldV); |
523 | oldV = (int)(oldV*intensity); | 523 | oldV = (int)(oldV*intensity); |
524 | c.setHsv(h, s, oldV); | 524 | c.setHsv(h, s, oldV); |
525 | if(blend && alpha != 255 && alpha != 0){ | 525 | if(blend && alpha != 255 && alpha != 0){ |
526 | float srcPercent = ((float)alpha)/255.0; | 526 | float srcPercent = ((float)alpha)/255.0; |
527 | float destPercent = 1.0-srcPercent; | 527 | float destPercent = 1.0-srcPercent; |
528 | oldH = (int)((srcPercent*h) + (destPercent*bH)); | 528 | oldH = (int)((srcPercent*h) + (destPercent*bH)); |
529 | oldS = (int)((srcPercent*s) + (destPercent*bS)); | 529 | oldS = (int)((srcPercent*s) + (destPercent*bS)); |
530 | oldV = (int)((srcPercent*oldV) + (destPercent*bV)); | 530 | oldV = (int)((srcPercent*oldV) + (destPercent*bV)); |
531 | c.setHsv(oldH, oldS, oldV); | 531 | c.setHsv(oldH, oldS, oldV); |
532 | alpha = 255; | 532 | alpha = 255; |
533 | } | 533 | } |
534 | data[current] = qRgba(c.red(), c.green(), c.blue(), alpha); | 534 | data[current] = qRgba(c.red(), c.green(), c.blue(), alpha); |
535 | } | 535 | } |
536 | QPixmap *pix = new QPixmap; | 536 | QPixmap *pix = new QPixmap; |
537 | pix->convertFromImage(img); | 537 | pix->convertFromImage(img); |
538 | return(pix); | 538 | return(pix); |
539 | } | 539 | } |
540 | 540 | ||
541 | 541 | ||
542 | 542 | ||
543 | 543 | ||
544 | QPixmap* LiquidStyle::getPixmap(BitmapData item) | 544 | QPixmap* LiquidStyle::getPixmap(BitmapData item) |
545 | { | 545 | { |
546 | 546 | ||
547 | if(pixmaps[item]) | 547 | if(pixmaps[item]) |
548 | return(pixmaps[item]); | 548 | return(pixmaps[item]); |
549 | 549 | ||
550 | switch(item){ | 550 | switch(item){ |
551 | case HTMLBtnBorder: | 551 | case HTMLBtnBorder: |
552 | pixmaps[HTMLBtnBorder] = processEmbedded("htmlbtnborder", btnH, btnS, btnV); | 552 | pixmaps[HTMLBtnBorder] = processEmbedded("htmlbtnborder", btnH, btnS, btnV); |
553 | break; | 553 | break; |
554 | case HTMLBtnBorderDown: | 554 | case HTMLBtnBorderDown: |
555 | pixmaps[HTMLBtnBorderDown] = processEmbedded("htmlbtnborder", btnHoverH, btnHoverS, btnHoverV); | 555 | pixmaps[HTMLBtnBorderDown] = processEmbedded("htmlbtnborder", btnHoverH, btnHoverS, btnHoverV); |
556 | break; | 556 | break; |
557 | 557 | ||
558 | case HTMLCB: | 558 | case HTMLCB: |
559 | pixmaps[HTMLCB] = processEmbedded("htmlcheckbox", bH, bS, bV); | 559 | pixmaps[HTMLCB] = processEmbedded("htmlcheckbox", bH, bS, bV); |
560 | break; | 560 | break; |
561 | case HTMLCBHover: | 561 | case HTMLCBHover: |
562 | pixmaps[HTMLCBHover] = processEmbedded("htmlcheckbox", btnHoverH, btnHoverS, btnHoverV); | 562 | pixmaps[HTMLCBHover] = processEmbedded("htmlcheckbox", btnHoverH, btnHoverS, btnHoverV); |
563 | break; | 563 | break; |
564 | case HTMLCBDown: | 564 | case HTMLCBDown: |
565 | pixmaps[HTMLCBDown] = processEmbedded("htmlcheckboxdown", btnH, btnS, btnV); | 565 | pixmaps[HTMLCBDown] = processEmbedded("htmlcheckboxdown", btnH, btnS, btnV); |
566 | break; | 566 | break; |
567 | case HTMLCBDownHover: | 567 | case HTMLCBDownHover: |
568 | pixmaps[HTMLCBDownHover] = processEmbedded("htmlcheckboxdown", btnHoverH, btnHoverS, btnHoverV); | 568 | pixmaps[HTMLCBDownHover] = processEmbedded("htmlcheckboxdown", btnHoverH, btnHoverS, btnHoverV); |
569 | break; | 569 | break; |
570 | 570 | ||
571 | case HTMLRadio: | 571 | case HTMLRadio: |
572 | pixmaps[HTMLRadio] = processEmbedded("htmlradio", bH, bS, bV); | 572 | pixmaps[HTMLRadio] = processEmbedded("htmlradio", bH, bS, bV); |
573 | break; | 573 | break; |
574 | case HTMLRadioHover: | 574 | case HTMLRadioHover: |
575 | pixmaps[HTMLRadioHover] = processEmbedded("htmlradio", btnHoverH, btnHoverS, btnHoverV); | 575 | pixmaps[HTMLRadioHover] = processEmbedded("htmlradio", btnHoverH, btnHoverS, btnHoverV); |
576 | break; | 576 | break; |
577 | case HTMLRadioDown: | 577 | case HTMLRadioDown: |
578 | pixmaps[HTMLRadioDown] = processEmbedded("htmlradiodown", btnH, btnS, btnV); | 578 | pixmaps[HTMLRadioDown] = processEmbedded("htmlradiodown", btnH, btnS, btnV); |
579 | break; | 579 | break; |
580 | case HTMLRadioDownHover: | 580 | case HTMLRadioDownHover: |
581 | pixmaps[HTMLRadioDownHover] = processEmbedded("htmlradiodown", btnHoverH, btnHoverS, btnHoverV); | 581 | pixmaps[HTMLRadioDownHover] = processEmbedded("htmlradiodown", btnHoverH, btnHoverS, btnHoverV); |
582 | break; | 582 | break; |
583 | 583 | ||
584 | case RadioOff: | 584 | case RadioOff: |
585 | pixmaps[RadioOff] = processEmbedded("radio", bH, bS, bV /*, true*/); | 585 | pixmaps[RadioOff] = processEmbedded("radio", bH, bS, bV /*, true*/); |
586 | break; | 586 | break; |
587 | case RadioOffHover: | 587 | case RadioOffHover: |
588 | pixmaps[RadioOffHover] = processEmbedded("radio", btnHoverH, btnHoverS, btnHoverV /*, true*/); | 588 | pixmaps[RadioOffHover] = processEmbedded("radio", btnHoverH, btnHoverS, btnHoverV /*, true*/); |
589 | break; | 589 | break; |
590 | case RadioOn: | 590 | case RadioOn: |
591 | pixmaps[RadioOn] = processEmbedded("radio_down", btnH, btnS, btnV /*, true*/); | 591 | pixmaps[RadioOn] = processEmbedded("radio_down", btnH, btnS, btnV /*, true*/); |
592 | break; | 592 | break; |
593 | case RadioOnHover: | 593 | case RadioOnHover: |
594 | pixmaps[RadioOnHover] = processEmbedded("radio_down", btnHoverH, btnHoverS, btnHoverV /*, true*/); | 594 | pixmaps[RadioOnHover] = processEmbedded("radio_down", btnHoverH, btnHoverS, btnHoverV /*, true*/); |
595 | break; | 595 | break; |
596 | 596 | ||
597 | case Tab: | 597 | case Tab: |
598 | pixmaps[Tab] = processEmbedded("tab", bH, bS, bV /*, true*/); | 598 | pixmaps[Tab] = processEmbedded("tab", bH, bS, bV /*, true*/); |
599 | break; | 599 | break; |
600 | case TabDown: | 600 | case TabDown: |
601 | pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV /*, true*/); | 601 | pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV /*, true*/); |
602 | break; | 602 | break; |
603 | case TabFocus: | 603 | case TabFocus: |
604 | pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, btnHoverV /*, true*/); | 604 | pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, btnHoverV /*, true*/); |
605 | break; | 605 | break; |
606 | 606 | ||
607 | case CB: | 607 | case CB: |
608 | pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV /*, true*/); | 608 | pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV /*, true*/); |
609 | break; | 609 | break; |
610 | case CBHover: | 610 | case CBHover: |
611 | pixmaps[CBHover] = processEmbedded("checkbox", btnHoverH, btnHoverS, btnHoverV /*, true*/); | 611 | pixmaps[CBHover] = processEmbedded("checkbox", btnHoverH, btnHoverS, btnHoverV /*, true*/); |
612 | break; | 612 | break; |
613 | case CBDown: | 613 | case CBDown: |
614 | pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV /*, true*/); | 614 | pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV /*, true*/); |
615 | break; | 615 | break; |
616 | case CBDownHover: | 616 | case CBDownHover: |
617 | pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, btnHoverS, btnHoverV /*, true*/); | 617 | pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, btnHoverS, btnHoverV /*, true*/); |
618 | break; | 618 | break; |
619 | 619 | ||
620 | case VSlider: | 620 | case VSlider: |
621 | pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true ); | 621 | pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true ); |
622 | *pixmaps[VSlider] = pixmaps[VSlider]->xForm(rMatrix); | 622 | *pixmaps[VSlider] = pixmaps[VSlider]->xForm(rMatrix); |
623 | break; | 623 | break; |
624 | case VSBSliderTop: | 624 | case VSBSliderTop: |
625 | case VSBSliderTopHover: | 625 | case VSBSliderTopHover: |
626 | pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV /*, true*/); | 626 | pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV /*, true*/); |
627 | break; | 627 | break; |
628 | case VSBSliderBtm: | 628 | case VSBSliderBtm: |
629 | case VSBSliderBtmHover: | 629 | case VSBSliderBtmHover: |
630 | pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV /*, true*/); | 630 | pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV /*, true*/); |
631 | break; | 631 | break; |
632 | case VSBSliderMid: | 632 | case VSBSliderMid: |
633 | case VSBSliderMidHover: | 633 | case VSBSliderMidHover: |
634 | pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV); | 634 | pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV); |
635 | break; | 635 | break; |
636 | case VSBSliderTopBg: | 636 | case VSBSliderTopBg: |
637 | pixmaps[VSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV /*, true*/); | 637 | pixmaps[VSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV /*, true*/); |
638 | break; | 638 | break; |
639 | case VSBSliderBtmBg: | 639 | case VSBSliderBtmBg: |
640 | pixmaps[VSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV /*, true*/); | 640 | pixmaps[VSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV /*, true*/); |
641 | break; | 641 | break; |
642 | case VSBSliderMidBg: | 642 | case VSBSliderMidBg: |
643 | pixmaps[VSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); | 643 | pixmaps[VSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); |
644 | break; | 644 | break; |
645 | 645 | ||
646 | case HSlider: | 646 | case HSlider: |
647 | pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV /*, true*/); | 647 | pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV /*, true*/); |
648 | break; | 648 | break; |
649 | case HSBSliderTop: | 649 | case HSBSliderTop: |
650 | case HSBSliderTopHover: | 650 | case HSBSliderTopHover: |
651 | pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV, true ); | 651 | pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV, true ); |
652 | *pixmaps[item] = pixmaps[item]->xForm(rMatrix); | 652 | *pixmaps[item] = pixmaps[item]->xForm(rMatrix); |
653 | break; | 653 | break; |
654 | case HSBSliderBtm: | 654 | case HSBSliderBtm: |
655 | case HSBSliderBtmHover: | 655 | case HSBSliderBtmHover: |
656 | pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true ); | 656 | pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true ); |
657 | *pixmaps[item] = pixmaps[item]->xForm(rMatrix); | 657 | *pixmaps[item] = pixmaps[item]->xForm(rMatrix); |
658 | break; | 658 | break; |
659 | case HSBSliderMid: | 659 | case HSBSliderMid: |
660 | case HSBSliderMidHover: | 660 | case HSBSliderMidHover: |
661 | pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV); | 661 | pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV); |
662 | *pixmaps[item] = pixmaps[item]->xForm(rMatrix); | 662 | *pixmaps[item] = pixmaps[item]->xForm(rMatrix); |
663 | break; | 663 | break; |
664 | case HSBSliderTopBg: | 664 | case HSBSliderTopBg: |
665 | pixmaps[HSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true ); | 665 | pixmaps[HSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true ); |
666 | *pixmaps[HSBSliderTopBg] = pixmaps[HSBSliderTopBg]->xForm(rMatrix); | 666 | *pixmaps[HSBSliderTopBg] = pixmaps[HSBSliderTopBg]->xForm(rMatrix); |
667 | break; | 667 | break; |
668 | case HSBSliderBtmBg: | 668 | case HSBSliderBtmBg: |
669 | pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true ); | 669 | pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true ); |
670 | *pixmaps[HSBSliderBtmBg] = pixmaps[HSBSliderBtmBg]->xForm(rMatrix); | 670 | *pixmaps[HSBSliderBtmBg] = pixmaps[HSBSliderBtmBg]->xForm(rMatrix); |
671 | break; | 671 | break; |
672 | case HSBSliderMidBg: | 672 | case HSBSliderMidBg: |
673 | pixmaps[HSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); | 673 | pixmaps[HSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); |
674 | *pixmaps[HSBSliderMidBg] = pixmaps[HSBSliderMidBg]->xForm(rMatrix); | 674 | *pixmaps[HSBSliderMidBg] = pixmaps[HSBSliderMidBg]->xForm(rMatrix); |
675 | break; | 675 | break; |
676 | default: | 676 | default: |
677 | break; | 677 | break; |
678 | } | 678 | } |
679 | return(pixmaps[item]); | 679 | return(pixmaps[item]); |
680 | } | 680 | } |
681 | 681 | ||
682 | void LiquidStyle::polish(QPalette &appPal) | 682 | void LiquidStyle::polish(QPalette &appPal) |
683 | { | 683 | { |
684 | int i; | 684 | int i; |
685 | for(i=0; i < BITMAP_ITEMS; ++i){ | 685 | for(i=0; i < BITMAP_ITEMS; ++i){ |
686 | if(pixmaps[i]){ | 686 | if(pixmaps[i]){ |
687 | delete pixmaps[i]; | 687 | delete pixmaps[i]; |
688 | pixmaps[i] = NULL; | 688 | pixmaps[i] = NULL; |
689 | } | 689 | } |
690 | } | 690 | } |
691 | lowLightVal = 100 + (2* /*KGlobalSettings::contrast()*/ 3 +4)*10; | 691 | lowLightVal = 100 + (2* /*KGlobalSettings::contrast()*/ 3 +4)*10; |
692 | btnDict.clear(); | 692 | btnDict.clear(); |
693 | btnBorderDict.clear(); | 693 | btnBorderDict.clear(); |
694 | bevelFillDict.clear(); | 694 | bevelFillDict.clear(); |
695 | smallBevelFillDict.clear(); | 695 | smallBevelFillDict.clear(); |
696 | 696 | ||
697 | Config config ( "qpe" ); | 697 | Config config ( "qpe" ); |
698 | config. setGroup ( "Liquid-Style" ); | 698 | config. setGroup ( "Liquid-Style" ); |
699 | int contrast = config. readNumEntry ( "StippleContrast", 5 ); | 699 | int contrast = config. readNumEntry ( "StippleContrast", 5 ); |
700 | if ( contrast < 0 ) | 700 | if ( contrast < 0 ) |
701 | contrast = 0; | 701 | contrast = 0; |
702 | else if ( contrast > 10 ) | 702 | else if ( contrast > 10 ) |
703 | contrast = 10; | 703 | contrast = 10; |
704 | 704 | ||
705 | // QPalette pal = QApplication::palette(); | 705 | // QPalette pal = QApplication::palette(); |
706 | 706 | ||
707 | // button color stuff | 707 | // button color stuff |
708 | config. setGroup ( "Appearance" ); | 708 | config. setGroup ( "Appearance" ); |
709 | QColor c = appPal. color ( QPalette::Active, QColorGroup::Button ); | 709 | QColor c = appPal. color ( QPalette::Active, QColorGroup::Button ); |
710 | if ( c == appPal. color ( QPalette::Active, QColorGroup::Background )) { | 710 | if ( c == appPal. color ( QPalette::Active, QColorGroup::Background )) { |
711 | // force button color to be different from background | 711 | // force button color to be different from background |
712 | QBrush btnBrush(QColor(200, 202, 228)); | 712 | QBrush btnBrush(QColor(200, 202, 228)); |
713 | appPal.setBrush(QColorGroup::Button, btnBrush); | 713 | appPal.setBrush(QColorGroup::Button, btnBrush); |
714 | } | 714 | } |
715 | c.hsv(&btnH, &btnS, &btnV); | 715 | c.hsv(&btnH, &btnS, &btnV); |
716 | c.light(120).hsv(&btnHoverH, &btnHoverS, &btnHoverV); | 716 | c.light(120).hsv(&btnHoverH, &btnHoverS, &btnHoverV); |
717 | 717 | ||
718 | // menu pixmap | 718 | // menu pixmap |
719 | if(!menuPix){ | 719 | if(!menuPix){ |
720 | menuPix = new QPixmap; | 720 | menuPix = new QPixmap; |
721 | menuPix->resize(64, 64); | 721 | menuPix->resize(64, 64); |
722 | } | 722 | } |
723 | QPainter painter; | 723 | QPainter painter; |
724 | menuPix->fill(c.rgb()); | 724 | menuPix->fill(c.rgb()); |
725 | painter.begin(menuPix); | 725 | painter.begin(menuPix); |
726 | painter.setPen(c.dark(105)); | 726 | painter.setPen(c.dark(105)); |
727 | for(i=0; i < 63; i+=4){ | 727 | for(i=0; i < 63; i+=4){ |
728 | painter.drawLine(0, i, 63, i); | 728 | painter.drawLine(0, i, 63, i); |
729 | painter.drawLine(0, i+1, 63, i+1); | 729 | painter.drawLine(0, i+1, 63, i+1); |
730 | }; | 730 | }; |
731 | painter.end(); | 731 | painter.end(); |
732 | menuBrush.setColor(c); | 732 | menuBrush.setColor(c); |
733 | menuBrush.setPixmap(*menuPix); | 733 | menuBrush.setPixmap(*menuPix); |
734 | 734 | ||
735 | // pager brush | 735 | // pager brush |
736 | c = c.dark(120); | 736 | c = c.dark(120); |
737 | QPixmap *pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) | 737 | QPixmap *pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) |
738 | if(!pix){ | 738 | if(!pix){ |
739 | int h, s, v; | 739 | int h, s, v; |
740 | c.hsv(&h, &s, &v); | 740 | c.hsv(&h, &s, &v); |
741 | pix = new QPixmap(*smallBevelFillPix); | 741 | pix = new QPixmap(*smallBevelFillPix); |
742 | adjustHSV(*pix, h, s, v); | 742 | adjustHSV(*pix, h, s, v); |
743 | smallBevelFillDict.insert(c.rgb(), pix); | 743 | smallBevelFillDict.insert(c.rgb(), pix); |
744 | } | 744 | } |
745 | // pagerHoverBrush.setColor(c); | 745 | // pagerHoverBrush.setColor(c); |
746 | // pagerHoverBrush.setPixmap(*pix); | 746 | // pagerHoverBrush.setPixmap(*pix); |
747 | 747 | ||
748 | c = c.dark(120); | 748 | c = c.dark(120); |
749 | pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) | 749 | pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) |
750 | if(!pix){ | 750 | if(!pix){ |
751 | int h, s, v; | 751 | int h, s, v; |
752 | c.hsv(&h, &s, &v); | 752 | c.hsv(&h, &s, &v); |
753 | pix = new QPixmap(*smallBevelFillPix); | 753 | pix = new QPixmap(*smallBevelFillPix); |
754 | adjustHSV(*pix, h, s, v); | 754 | adjustHSV(*pix, h, s, v); |
755 | smallBevelFillDict.insert(c.rgb(), pix); | 755 | smallBevelFillDict.insert(c.rgb(), pix); |
756 | } | 756 | } |
757 | // pagerBrush.setColor(c); | 757 | // pagerBrush.setColor(c); |
758 | // pagerBrush.setPixmap(*pix); | 758 | // pagerBrush.setPixmap(*pix); |
759 | 759 | ||
760 | // background color stuff | 760 | // background color stuff |
761 | c = appPal. color ( QPalette::Active, QColorGroup::Background ); | 761 | c = appPal. color ( QPalette::Active, QColorGroup::Background ); |
762 | 762 | ||
763 | c.hsv(&bH, &bS, &bV); | 763 | c.hsv(&bH, &bS, &bV); |
764 | c.light(120).hsv(&bHoverH, &bHoverS, &bHoverV); | 764 | c.light(120).hsv(&bHoverH, &bHoverS, &bHoverV); |
765 | 765 | ||
766 | // FIXME? | 766 | // FIXME? |
767 | if(vsbSliderFillPix) | 767 | if(vsbSliderFillPix) |
768 | delete vsbSliderFillPix; | 768 | delete vsbSliderFillPix; |
769 | vsbSliderFillPix = new QPixmap(bevelFillPix->xForm(rMatrix)); | 769 | vsbSliderFillPix = new QPixmap(bevelFillPix->xForm(rMatrix)); |
770 | adjustHSV(*vsbSliderFillPix, bH, bS, bV); | 770 | adjustHSV(*vsbSliderFillPix, bH, bS, bV); |
771 | 771 | ||
772 | // background brush | 772 | // background brush |
773 | QPixmap wallPaper(32, 32); | 773 | QPixmap wallPaper(32, 32); |
774 | wallPaper.fill(c.rgb()); | 774 | wallPaper.fill(c.rgb()); |
775 | painter.begin(&wallPaper); | 775 | painter.begin(&wallPaper); |
776 | for(i=0; i < 32; i+=4){ | 776 | for(i=0; i < 32; i+=4){ |
777 | painter.setPen(c.dark(100 + contrast)); | 777 | painter.setPen(c.dark(100 + contrast)); |
778 | painter.drawLine(0, i, 32, i); | 778 | painter.drawLine(0, i, 32, i); |
779 | painter.setPen(c.dark(100 + 3 * contrast / 5 ) ); | 779 | painter.setPen(c.dark(100 + 3 * contrast / 5 ) ); |
780 | painter.drawLine(0, i+1, 32, i+1); | 780 | painter.drawLine(0, i+1, 32, i+1); |
781 | }; | 781 | }; |
782 | painter.end(); | 782 | painter.end(); |
783 | bgBrush.setColor(c); | 783 | bgBrush.setColor(c); |
784 | bgBrush.setPixmap(wallPaper); | 784 | bgBrush.setPixmap(wallPaper); |
785 | appPal.setBrush(QColorGroup::Background, bgBrush); | 785 | appPal.setBrush(QColorGroup::Background, bgBrush); |
786 | } | 786 | } |
787 | 787 | ||
788 | void LiquidStyle::polish(QWidget *w) | 788 | void LiquidStyle::polish(QWidget *w) |
789 | { | 789 | { |
790 | if(w->inherits("QMenuBar")){ | 790 | if(w->inherits("QMenuBar")){ |
791 | //((QFrame*)w)->setLineWidth(0); | 791 | //((QFrame*)w)->setLineWidth(0); |
792 | w->setBackgroundMode(QWidget::PaletteBackground); | 792 | w->setBackgroundMode(QWidget::PaletteBackground); |
793 | w->setBackgroundOrigin(QWidget::ParentOrigin); | 793 | w->setBackgroundOrigin(QWidget::ParentOrigin); |
794 | return; | 794 | return; |
795 | } | 795 | } |
796 | if(w->inherits("QToolBar")){ | 796 | if(w->inherits("QToolBar")){ |
797 | w->installEventFilter(this); | 797 | w->installEventFilter(this); |
798 | w->setBackgroundMode(QWidget::PaletteBackground); | 798 | w->setBackgroundMode(QWidget::PaletteBackground); |
799 | w->setBackgroundOrigin(QWidget::WidgetOrigin); | 799 | w->setBackgroundOrigin(QWidget::WidgetOrigin); |
800 | return; | 800 | return; |
801 | } | 801 | } |
802 | if(w->inherits("QPopupMenu")) | 802 | if(w->inherits("QPopupMenu")) |
803 | w->setBackgroundMode(QWidget::NoBackground); | 803 | w->setBackgroundMode(QWidget::NoBackground); |
804 | else if(w-> testWFlags(Qt::WType_Popup) && | 804 | else if(w-> testWFlags(Qt::WType_Popup) && |
805 | !w->inherits("QListBox") && | 805 | !w->inherits("QListBox") && |
806 | ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { | 806 | ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { |
807 | w->installEventFilter(menuHandler); | 807 | w->installEventFilter(menuHandler); |
808 | } | 808 | } |
809 | 809 | ||
810 | if(w->isTopLevel()){ | 810 | if(w->isTopLevel()){ |
811 | return; | 811 | return; |
812 | } | 812 | } |
813 | 813 | ||
814 | if(w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { | 814 | if(w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { |
815 | w->installEventFilter(this); | 815 | w->installEventFilter(this); |
816 | } | 816 | } |
817 | 817 | ||
818 | if(w->inherits("QButton") || w-> inherits("QComboBox")){ | 818 | if(w->inherits("QButton") || w-> inherits("QComboBox")){ |
819 | w-> setBackgroundMode ( QWidget::PaletteBackground ); | 819 | w-> setBackgroundMode ( QWidget::PaletteBackground ); |
820 | w->setBackgroundOrigin ( QWidget::ParentOrigin); | 820 | w->setBackgroundOrigin ( QWidget::ParentOrigin); |
821 | } | 821 | } |
822 | 822 | ||
823 | bool isViewport = qstrcmp(w->name(), "qt_viewport") == 0 || | 823 | bool isViewport = qstrcmp(w->name(), "qt_viewport") == 0 || |
824 | qstrcmp(w->name(), "qt_clipped_viewport") == 0; | 824 | qstrcmp(w->name(), "qt_clipped_viewport") == 0; |
825 | bool isViewportChild = w->parent() && | 825 | bool isViewportChild = w->parent() && |
826 | ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || | 826 | ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || |
827 | (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); | 827 | (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); |
828 | 828 | ||
829 | if(isViewport && w->parent() && qstrcmp(w->parent()->name(), "proxyview") == 0){ | 829 | if(isViewport && w->parent() && qstrcmp(w->parent()->name(), "proxyview") == 0){ |
830 | w->setBackgroundMode(QWidget::X11ParentRelative); | 830 | w->setBackgroundMode(QWidget::X11ParentRelative); |
831 | return; | 831 | return; |
832 | } | 832 | } |
833 | if(isViewportChild){ | 833 | if(isViewportChild){ |
834 | if(w->inherits("QButton") || w->inherits("QComboBox")){ | 834 | if(w->inherits("QButton") || w->inherits("QComboBox")){ |
835 | if(w->parent()){ // heh, only way to test for KHTML children ;-) | 835 | if(w->parent()){ // heh, only way to test for KHTML children ;-) |
836 | if(w->parent()->parent()){ | 836 | if(w->parent()->parent()){ |
837 | if(w->parent()->parent()->parent() && | 837 | if(w->parent()->parent()->parent() && |
838 | w->parent()->parent()->parent()->inherits("KHTMLView")){ | 838 | w->parent()->parent()->parent()->inherits("KHTMLView")){ |
839 | w->setAutoMask(true); | 839 | w->setAutoMask(true); |
840 | w->setBackgroundMode(QWidget::NoBackground); | 840 | w->setBackgroundMode(QWidget::NoBackground); |
841 | } | 841 | } |
842 | } | 842 | } |
843 | } | 843 | } |
844 | return; | 844 | return; |
845 | } | 845 | } |
846 | } | 846 | } |
847 | if(w->inherits("QHeader")){ | 847 | if(w->inherits("QHeader")){ |
848 | w->setMouseTracking(true); | 848 | w->setMouseTracking(true); |
849 | w->installEventFilter(this); | 849 | w->installEventFilter(this); |
850 | } | 850 | } |
851 | if(w-> inherits("QToolButton")) { | 851 | if(w-> inherits("QToolButton")) { |
852 | if (w->parent()->inherits("QToolBar")) { | 852 | if (w->parent()->inherits("QToolBar")) { |
853 | ((QToolButton*)w)->setAutoRaise (flatTBButtons); | 853 | ((QToolButton*)w)->setAutoRaise (flatTBButtons); |
854 | if ( flatTBButtons ) | 854 | if ( flatTBButtons ) |
855 | w->setBackgroundOrigin(QWidget::ParentOrigin); | 855 | w->setBackgroundOrigin(QWidget::ParentOrigin); |
856 | } | 856 | } |
857 | w-> installEventFilter ( this ); | 857 | w-> installEventFilter ( this ); |
858 | } | 858 | } |
859 | if(w-> inherits("QToolBarSeparator")&&w->parent()->inherits("QToolBar")) { | 859 | if(w-> inherits("QToolBarSeparator")&&w->parent()->inherits("QToolBar")) { |
860 | ((QFrame *) w)-> setFrameShape ( QFrame::NoFrame ); | 860 | ((QFrame *) w)-> setFrameShape ( QFrame::NoFrame ); |
861 | } | 861 | } |
862 | if(w->ownPalette() && !w->inherits("QButton") && !w->inherits("QComboBox")){ | 862 | if(w->ownPalette() && !w->inherits("QButton") && !w->inherits("QComboBox")){ |
863 | return; | 863 | return; |
864 | } | 864 | } |
865 | 865 | ||
866 | if(w->parent() && w->parent()->isWidgetType() && !((QWidget*)w->parent())-> | 866 | if(w->parent() && w->parent()->isWidgetType() && !((QWidget*)w->parent())-> |
867 | palette().active().brush(QColorGroup::Background).pixmap()){ | 867 | palette().active().brush(QColorGroup::Background).pixmap()){ |
868 | owarn << "No parent pixmap for child widget " << w->className() << "" << oendl; | 868 | owarn << "No parent pixmap for child widget " << w->className() << "" << oendl; |
869 | return; | 869 | return; |
870 | } | 870 | } |
871 | if(!isViewport && !isViewportChild && !w->testWFlags(WType_Popup) && | 871 | if(!isViewport && !isViewportChild && !w->testWFlags(WType_Popup) && |
872 | !( !w-> inherits("QLineEdit") && w-> parent() && w-> parent()-> isWidgetType ( ) && w-> parent()-> inherits ( "QMultiLineEdit" ))) { | 872 | !( !w-> inherits("QLineEdit") && w-> parent() && w-> parent()-> isWidgetType ( ) && w-> parent()-> inherits ( "QMultiLineEdit" ))) { |
873 | if(w->backgroundMode() == QWidget::PaletteBackground || | 873 | if(w->backgroundMode() == QWidget::PaletteBackground || |
874 | w->backgroundMode() == QWidget::PaletteButton){ | 874 | w->backgroundMode() == QWidget::PaletteButton){ |
875 | w->setBackgroundMode(w->parentWidget()->backgroundMode( )/*QWidget::X11ParentRelative*/); | 875 | w->setBackgroundMode(w->parentWidget()->backgroundMode( )/*QWidget::X11ParentRelative*/); |
876 | w->setBackgroundOrigin(QWidget::ParentOrigin); | 876 | w->setBackgroundOrigin(QWidget::ParentOrigin); |
877 | // w->setBackgroundMode(QWidget::NoBackground); | 877 | // w->setBackgroundMode(QWidget::NoBackground); |
878 | } | 878 | } |
879 | } | 879 | } |
880 | if ( !w-> inherits("QFrame") || (((QFrame*) w)-> frameShape () == QFrame::NoFrame )) | 880 | if ( !w-> inherits("QFrame") || (((QFrame*) w)-> frameShape () == QFrame::NoFrame )) |
881 | w-> setBackgroundOrigin ( QWidget::ParentOrigin ); | 881 | w-> setBackgroundOrigin ( QWidget::ParentOrigin ); |
882 | else if ( w-> inherits("QFrame") ) | 882 | else if ( w-> inherits("QFrame") ) |
883 | w->setBackgroundOrigin ( QWidget::WidgetOrigin ); | 883 | w->setBackgroundOrigin ( QWidget::WidgetOrigin ); |
884 | 884 | ||
885 | if ( w->parentWidget()->inherits ( "QWidgetStack" )) { | 885 | if ( w->parentWidget()->inherits ( "QWidgetStack" )) { |
886 | w->setBackgroundOrigin ( QWidget::WidgetOrigin ); | 886 | w->setBackgroundOrigin ( QWidget::WidgetOrigin ); |
887 | } | 887 | } |
888 | } | 888 | } |
889 | 889 | ||
890 | void LiquidStyle::unPolish(QWidget *w) | 890 | void LiquidStyle::unPolish(QWidget *w) |
891 | { | 891 | { |
892 | if(w->inherits("QMenuBar")){ | 892 | if(w->inherits("QMenuBar")){ |
893 | ((QFrame *)w)->setLineWidth(1); | 893 | ((QFrame *)w)->setLineWidth(1); |
894 | w->setBackgroundMode(QWidget::PaletteBackground); | 894 | w->setBackgroundMode(QWidget::PaletteBackground); |
895 | return; | 895 | return; |
896 | } | 896 | } |
897 | 897 | ||
898 | if(w->inherits("QPopupMenu")) | 898 | if(w->inherits("QPopupMenu")) |
899 | w->setBackgroundMode(QWidget::PaletteButton); | 899 | w->setBackgroundMode(QWidget::PaletteButton); |
900 | else if(w-> testWFlags(Qt::WType_Popup) && | 900 | else if(w-> testWFlags(Qt::WType_Popup) && |
901 | !w->inherits("QListBox") && | 901 | !w->inherits("QListBox") && |
902 | ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { | 902 | ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { |
903 | w->removeEventFilter(menuHandler); | 903 | w->removeEventFilter(menuHandler); |
904 | } | 904 | } |
905 | 905 | ||
906 | if(w->isTopLevel()) | 906 | if(w->isTopLevel()) |
907 | return; | 907 | return; |
908 | 908 | ||
909 | // for viewport children, don't just check for NoBackground.... | 909 | // for viewport children, don't just check for NoBackground.... |
910 | bool isViewportChild = w->parent() && | 910 | bool isViewportChild = w->parent() && |
911 | ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || | 911 | ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || |
912 | (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); | 912 | (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); |
913 | 913 | ||
914 | w->unsetPalette(); | 914 | w->unsetPalette(); |
915 | if(w->backgroundMode() == QWidget::X11ParentRelative || isViewportChild){ | 915 | if(w->backgroundMode() == QWidget::X11ParentRelative || isViewportChild){ |
916 | if(w->inherits("QPushButton")) | 916 | if(w->inherits("QPushButton")) |
917 | w->setBackgroundMode(QWidget::PaletteButton); | 917 | w->setBackgroundMode(QWidget::PaletteButton); |
918 | else | 918 | else |
919 | w->setBackgroundMode(QWidget::PaletteBackground); | 919 | w->setBackgroundMode(QWidget::PaletteBackground); |
920 | } | 920 | } |
921 | 921 | ||
922 | if(isViewportChild) | 922 | if(isViewportChild) |
923 | w->setAutoMask(false); | 923 | w->setAutoMask(false); |
924 | 924 | ||
925 | /* | 925 | /* |
926 | if(w->inherits("QPushButton") || w-> inherits("QComboBox")){ | 926 | if(w->inherits("QPushButton") || w-> inherits("QComboBox")){ |
927 | w-> setBackgroundMode ( PaletteBackground ); | 927 | w-> setBackgroundMode ( PaletteBackground ); |
928 | } | 928 | } |
929 | */ | 929 | */ |
930 | if( w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { | 930 | if( w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { |
931 | w->removeEventFilter(this); | 931 | w->removeEventFilter(this); |
932 | } | 932 | } |
933 | if(w->inherits("QButton") || w->inherits("QComboBox")){ | 933 | if(w->inherits("QButton") || w->inherits("QComboBox")){ |
934 | if(w->parent() && w->parent()->inherits("KHTMLPart")){ | 934 | if(w->parent() && w->parent()->inherits("KHTMLPart")){ |
935 | w->setAutoMask(false); | 935 | w->setAutoMask(false); |
936 | } | 936 | } |
937 | } | 937 | } |
938 | if(w-> inherits("QToolButton")) { | 938 | if(w-> inherits("QToolButton")) { |
939 | w-> removeEventFilter ( this ); | 939 | w-> removeEventFilter ( this ); |
940 | } | 940 | } |
941 | if(w->inherits("QToolBar")){ | 941 | if(w->inherits("QToolBar")){ |
942 | w->removeEventFilter(this); | 942 | w->removeEventFilter(this); |
943 | w->setBackgroundMode(QWidget::PaletteBackground); | 943 | w->setBackgroundMode(QWidget::PaletteBackground); |
944 | return; | 944 | return; |
945 | } | 945 | } |
946 | if(w->inherits("QHeader")){ | 946 | if(w->inherits("QHeader")){ |
947 | w->setMouseTracking(false); | 947 | w->setMouseTracking(false); |
948 | w->removeEventFilter(this); | 948 | w->removeEventFilter(this); |
949 | } | 949 | } |
950 | } | 950 | } |
951 | 951 | ||
952 | void LiquidStyle::polish(QApplication *app) | 952 | void LiquidStyle::polish(QApplication *app) |
953 | { | 953 | { |
954 | 954 | ||
955 | QWindowsStyle::polish(app); | 955 | QWindowsStyle::polish(app); |
956 | menuAni = app->isEffectEnabled(UI_AnimateMenu); | 956 | menuAni = app->isEffectEnabled(UI_AnimateMenu); |
957 | menuFade = app->isEffectEnabled(UI_FadeMenu); | 957 | menuFade = app->isEffectEnabled(UI_FadeMenu); |
958 | if(menuAni) | 958 | if(menuAni) |
959 | app->setEffectEnabled(UI_AnimateMenu, false); | 959 | app->setEffectEnabled(UI_AnimateMenu, false); |
960 | if(menuFade) | 960 | if(menuFade) |
961 | app->setEffectEnabled(UI_FadeMenu, false); | 961 | app->setEffectEnabled(UI_FadeMenu, false); |
962 | 962 | ||
963 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &LiquidStyle::drawMenuBarItem); | 963 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &LiquidStyle::drawMenuBarItem); |
964 | 964 | ||
965 | Config config ( "qpe" ); | 965 | Config config ( "qpe" ); |
966 | config. setGroup ( "Liquid-Style" ); | 966 | config. setGroup ( "Liquid-Style" ); |
967 | 967 | ||
968 | // if ( config. readBoolEntry ( "WinDecoration", true )) | 968 | // if ( config. readBoolEntry ( "WinDecoration", true )) |
969 | // QApplication::qwsSetDecoration ( new LiquidDecoration ( )); | 969 | // QApplication::qwsSetDecoration ( new LiquidDecoration ( )); |
970 | 970 | ||
971 | flatTBButtons = config. readBoolEntry ( "FlatToolButtons", false ); | 971 | flatTBButtons = config. readBoolEntry ( "FlatToolButtons", false ); |
972 | } | 972 | } |
973 | 973 | ||
974 | void LiquidStyle::unPolish(QApplication *app) | 974 | void LiquidStyle::unPolish(QApplication *app) |
975 | { | 975 | { |
976 | QWindowsStyle::unPolish(app); | 976 | QWindowsStyle::unPolish(app); |
977 | app->setEffectEnabled(UI_AnimateMenu, menuAni); | 977 | app->setEffectEnabled(UI_AnimateMenu, menuAni); |
978 | app->setEffectEnabled(UI_FadeMenu, menuFade); | 978 | app->setEffectEnabled(UI_FadeMenu, menuFade); |
979 | 979 | ||
980 | qt_set_draw_menu_bar_impl ( 0 ); | 980 | qt_set_draw_menu_bar_impl ( 0 ); |
981 | 981 | ||
982 | // QApplication::qwsSetDecoration ( new QPEDecoration ( )); | 982 | // QApplication::qwsSetDecoration ( new QPEDecoration ( )); |
983 | } | 983 | } |
984 | 984 | ||
985 | 985 | ||
986 | /* !! HACK !! Beware | 986 | /* !! HACK !! Beware |
987 | * | 987 | * |
988 | * TT forgot to make the QProgressBar widget styleable in Qt 2.x | 988 | * TT forgot to make the QProgressBar widget styleable in Qt 2.x |
989 | * So the only way to customize the drawing, is to intercept the | 989 | * So the only way to customize the drawing, is to intercept the |
990 | * paint event - since we have to use protected functions, we need | 990 | * paint event - since we have to use protected functions, we need |
991 | * to derive a "hack" class from QProgressBar and do the painting | 991 | * to derive a "hack" class from QProgressBar and do the painting |
992 | * in there. | 992 | * in there. |
993 | * | 993 | * |
994 | * - sandman | 994 | * - sandman |
995 | */ | 995 | */ |
996 | 996 | ||
997 | class HackProgressBar : public QProgressBar { | 997 | class HackProgressBar : public QProgressBar { |
998 | public: | 998 | public: |
999 | HackProgressBar ( ); | 999 | HackProgressBar ( ); |
1000 | 1000 | ||
1001 | void paint ( QPaintEvent *event, const QColorGroup &g, QPixmap *pix ) | 1001 | void paint ( QPaintEvent *event, const QColorGroup &g, QPixmap *pix ) |
1002 | { | 1002 | { |
1003 | QPainter p( this ); | 1003 | QPainter p( this ); |
1004 | 1004 | ||
1005 | if ( !contentsRect().contains( event->rect() ) ) { | 1005 | if ( !contentsRect().contains( event->rect() ) ) { |
1006 | p.save(); | 1006 | p.save(); |
1007 | p.setClipRegion( event->region().intersect(frameRect()) ); | 1007 | p.setClipRegion( event->region().intersect(frameRect()) ); |
1008 | drawFrame( &p); | 1008 | drawFrame( &p); |
1009 | p.restore(); | 1009 | p.restore(); |
1010 | } | 1010 | } |
1011 | if ( event->rect().intersects( contentsRect() )) { | 1011 | if ( event->rect().intersects( contentsRect() )) { |
1012 | p.setClipRegion( event->region().intersect( contentsRect() ) ); | 1012 | p.setClipRegion( event->region().intersect( contentsRect() ) ); |
1013 | 1013 | ||
1014 | int x, y, w, h; | 1014 | int x, y, w, h; |
1015 | contentsRect ( ). rect ( &x, &y, &w, &h ); | 1015 | contentsRect ( ). rect ( &x, &y, &w, &h ); |
1016 | 1016 | ||
1017 | int prog = progress ( ); | 1017 | int prog = progress ( ); |
1018 | int total = totalSteps ( ); | 1018 | int total = totalSteps ( ); |
1019 | if ( prog < 0 ) | 1019 | if ( prog < 0 ) |
1020 | prog = 0; | 1020 | prog = 0; |
1021 | if ( total <= 0 ) | 1021 | if ( total <= 0 ) |
1022 | total = 1; | 1022 | total = 1; |
1023 | int bw = w * prog / total; | 1023 | int bw = w * prog / total; |
1024 | if ( bw > w ) | 1024 | if ( bw > w ) |
1025 | bw = w; | 1025 | bw = w; |
1026 | 1026 | ||
1027 | p.setPen(g.button().dark(130)); | 1027 | p.setPen(g.button().dark(130)); |
1028 | p.drawRect(x, y, bw, h); | 1028 | p.drawRect(x, y, bw, h); |
1029 | p.setPen(g.button().light(120)); | 1029 | p.setPen(g.button().light(120)); |
1030 | p.drawRect(x+1, y+1, bw-2, h-2); | 1030 | p.drawRect(x+1, y+1, bw-2, h-2); |
1031 | 1031 | ||
1032 | if(bw >= 4 && h >= 4 && pix) | 1032 | if(bw >= 4 && h >= 4 && pix) |
1033 | p.drawTiledPixmap(x+2, y+2, bw-4, h-4, *pix); | 1033 | p.drawTiledPixmap(x+2, y+2, bw-4, h-4, *pix); |
1034 | 1034 | ||
1035 | if ( progress ( )>= 0 && totalSteps ( ) > 0 ) { | 1035 | if ( progress ( )>= 0 && totalSteps ( ) > 0 ) { |
1036 | QString pstr; | 1036 | QString pstr; |
1037 | pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ()); | 1037 | pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ()); |
1038 | p. setPen ( g.text());//g.highlightedText ( )); | 1038 | p. setPen ( g.text());//g.highlightedText ( )); |
1039 | p. drawText (x,y,w-1,h-1,AlignCenter,pstr); | 1039 | p. drawText (x,y,w-1,h-1,AlignCenter,pstr); |
1040 | } | 1040 | } |
1041 | } | 1041 | } |
1042 | } | 1042 | } |
1043 | }; | 1043 | }; |
1044 | 1044 | ||
1045 | 1045 | ||
1046 | /* | 1046 | /* |
1047 | * The same for QToolButton: | 1047 | * The same for QToolButton: |
1048 | * TT hardcoded the drawing of the focus rect ... | 1048 | * TT hardcoded the drawing of the focus rect ... |
1049 | * | 1049 | * |
1050 | * - sandman | 1050 | * - sandman |
1051 | */ | 1051 | */ |
1052 | 1052 | ||
1053 | 1053 | ||
1054 | class HackToolButton : public QToolButton { | 1054 | class HackToolButton : public QToolButton { |
1055 | public: | 1055 | public: |
1056 | HackToolButton ( ); | 1056 | HackToolButton ( ); |
1057 | 1057 | ||
1058 | void paint ( QPaintEvent *ev ) | 1058 | void paint ( QPaintEvent *ev ) |
1059 | { | 1059 | { |
1060 | erase ( ev-> region ( )); | 1060 | erase ( ev-> region ( )); |
1061 | QPainter p ( this ); | 1061 | QPainter p ( this ); |
1062 | style ( ). drawToolButton ( this, &p ); | 1062 | style ( ). drawToolButton ( this, &p ); |
1063 | drawButtonLabel ( &p ); | 1063 | drawButtonLabel ( &p ); |
1064 | } | 1064 | } |
1065 | }; | 1065 | }; |
1066 | 1066 | ||
1067 | /* | 1067 | /* |
1068 | * This is a fun method ;-) Here's an overview. KToolBar grabs resize to | 1068 | * This is a fun method ;-) Here's an overview. KToolBar grabs resize to |
1069 | * force everything to erase and repaint on resize. This is going away, I'm | 1069 | * force everything to erase and repaint on resize. This is going away, I'm |
1070 | * trying to get shaped widgets to work right without masking. QPushButton, | 1070 | * trying to get shaped widgets to work right without masking. QPushButton, |
1071 | * QComboBox, and Panel applet handles capture mouse enter and leaves in order | 1071 | * QComboBox, and Panel applet handles capture mouse enter and leaves in order |
1072 | * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and | 1072 | * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and |
1073 | * RadioButtons need to do this differently. Qt buffers these in pixmaps and | 1073 | * RadioButtons need to do this differently. Qt buffers these in pixmaps and |
1074 | * caches them in QPixmapCache, which is bad for doing things like hover | 1074 | * caches them in QPixmapCache, which is bad for doing things like hover |
1075 | * because the style methods aren't called in paintEvents if everything | 1075 | * because the style methods aren't called in paintEvents if everything |
1076 | * is cached. We use our own Paint event handler instead. Taskbuttons and | 1076 | * is cached. We use our own Paint event handler instead. Taskbuttons and |
1077 | * pager buttons draw into a pixmap buffer, so we handle those with palette | 1077 | * pager buttons draw into a pixmap buffer, so we handle those with palette |
1078 | * modifications. For QHeader, different header items are actually one widget | 1078 | * modifications. For QHeader, different header items are actually one widget |
1079 | * that draws multiple items, so we need to check which ID is hightlighted | 1079 | * that draws multiple items, so we need to check which ID is hightlighted |
1080 | * and draw it. Finally, we also check enter and leave events for QLineEdit, | 1080 | * and draw it. Finally, we also check enter and leave events for QLineEdit, |
1081 | * since if it's inside a combobox we want to highlight the combobox during | 1081 | * since if it's inside a combobox we want to highlight the combobox during |
1082 | * hovering in the edit. | 1082 | * hovering in the edit. |
1083 | */ | 1083 | */ |
1084 | bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) | 1084 | bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) |
1085 | { | 1085 | { |
1086 | if(obj->inherits("QToolBar")){ | 1086 | if(obj->inherits("QToolBar")){ |
1087 | if(ev->type() == QEvent::Resize){ | 1087 | if(ev->type() == QEvent::Resize){ |
1088 | const QObjectList *tbChildList = obj->children(); | 1088 | const QObjectList *tbChildList = obj->children(); |
1089 | QObjectListIt it(*tbChildList); | 1089 | QObjectListIt it(*tbChildList); |
1090 | QObject *child; | 1090 | QObject *child; |
1091 | while((child = it.current()) != NULL){ | 1091 | while((child = it.current()) != NULL){ |
1092 | ++it; | 1092 | ++it; |
1093 | if(child->isWidgetType()) | 1093 | if(child->isWidgetType()) |
1094 | ((QWidget *)child)->repaint(true); | 1094 | ((QWidget *)child)->repaint(true); |
1095 | } | 1095 | } |
1096 | 1096 | ||
1097 | } | 1097 | } |
1098 | } | 1098 | } |
1099 | else if(obj->inherits("QToolButton")){ | 1099 | else if(obj->inherits("QToolButton")){ |
1100 | QToolButton *btn = (QToolButton *)obj; | 1100 | QToolButton *btn = (QToolButton *)obj; |
1101 | if(ev->type() == QEvent::FocusIn ){ // && !btn-> autoRaise () | 1101 | if(ev->type() == QEvent::FocusIn ){ // && !btn-> autoRaise () |
1102 | if(btn->isEnabled()){ | 1102 | if(btn->isEnabled()){ |
1103 | highlightWidget = btn; | 1103 | highlightWidget = btn; |
1104 | btn->repaint(false); | 1104 | btn->repaint(false); |
1105 | } | 1105 | } |
1106 | } | 1106 | } |
1107 | else if(ev->type() == QEvent::FocusOut ){ | 1107 | else if(ev->type() == QEvent::FocusOut ){ |
1108 | if(btn == highlightWidget){ | 1108 | if(btn == highlightWidget){ |
1109 | highlightWidget = NULL; | 1109 | highlightWidget = NULL; |
1110 | btn->repaint(false); | 1110 | btn->repaint(false); |
1111 | } | 1111 | } |
1112 | } | 1112 | } |
1113 | else if(ev->type() == QEvent::Paint) { | 1113 | else if(ev->type() == QEvent::Paint) { |
1114 | (( HackToolButton *) btn )-> paint ((QPaintEvent *) ev ); | 1114 | (( HackToolButton *) btn )-> paint ((QPaintEvent *) ev ); |
1115 | return true; | 1115 | return true; |
1116 | } | 1116 | } |
1117 | } | 1117 | } |
1118 | else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ | 1118 | else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ |
1119 | QButton *btn = (QButton *)obj; | 1119 | QButton *btn = (QButton *)obj; |
1120 | bool isRadio = obj->inherits("QRadioButton"); | 1120 | bool isRadio = obj->inherits("QRadioButton"); |
1121 | if(ev->type() == QEvent::Paint){ | 1121 | if(ev->type() == QEvent::Paint){ |
1122 | //if(btn->autoMask()) | 1122 | //if(btn->autoMask()) |
1123 | btn->erase(); | 1123 | btn->erase(); |
1124 | QPainter p; | 1124 | QPainter p; |
1125 | p.begin(btn); | 1125 | p.begin(btn); |
1126 | QFontMetrics fm = btn->fontMetrics(); | 1126 | QFontMetrics fm = btn->fontMetrics(); |
1127 | QSize lsz = fm.size(ShowPrefix, btn->text()); | 1127 | QSize lsz = fm.size(ShowPrefix, btn->text()); |
1128 | QSize sz = isRadio ? exclusiveIndicatorSize() | 1128 | QSize sz = isRadio ? exclusiveIndicatorSize() |
1129 | : indicatorSize(); | 1129 | : indicatorSize(); |
1130 | 1130 | ||
1131 | /* | 1131 | /* |
1132 | if(btn->hasFocus()){ | 1132 | if(btn->hasFocus()){ |
1133 | QRect r = QRect(0, 0, btn->width(), btn->height()); | 1133 | QRect r = QRect(0, 0, btn->width(), btn->height()); |
1134 | p.setPen(btn->colorGroup().button().dark(140)); | 1134 | p.setPen(btn->colorGroup().button().dark(140)); |
1135 | p.drawLine(r.x()+1, r.y(), r.right()-1, r.y()); | 1135 | p.drawLine(r.x()+1, r.y(), r.right()-1, r.y()); |
1136 | p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); | 1136 | p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); |
1137 | p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); | 1137 | p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); |
1138 | p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); | 1138 | p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); |
1139 | } | 1139 | } |
1140 | */ | 1140 | */ |
1141 | int x = 0; | 1141 | int x = 0; |
1142 | int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; | 1142 | int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; |
1143 | if(isRadio) | 1143 | if(isRadio) |
1144 | drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(), | 1144 | drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(), |
1145 | btn->colorGroup(), btn->isOn(), | 1145 | btn->colorGroup(), btn->isOn(), |
1146 | btn->isDown(), btn->isEnabled()); | 1146 | btn->isDown(), btn->isEnabled()); |
1147 | else | 1147 | else |
1148 | drawIndicator(&p, x, y, sz.width(), sz.height(), | 1148 | drawIndicator(&p, x, y, sz.width(), sz.height(), |
1149 | btn->colorGroup(), btn->state(), btn->isDown(), | 1149 | btn->colorGroup(), btn->state(), btn->isDown(), |
1150 | btn->isEnabled()); | 1150 | btn->isEnabled()); |
1151 | x = sz.width() + 6; | 1151 | x = sz.width() + 6; |
1152 | y = 0; | 1152 | y = 0; |
1153 | drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1), | 1153 | drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1), |
1154 | btn->height(), AlignLeft|AlignVCenter|ShowPrefix, | 1154 | btn->height(), AlignLeft|AlignVCenter|ShowPrefix, |
1155 | btn->colorGroup(), btn->isEnabled(), | 1155 | btn->colorGroup(), btn->isEnabled(), |
1156 | btn->pixmap(), btn->text()); | 1156 | btn->pixmap(), btn->text()); |
1157 | p.end(); | 1157 | p.end(); |
1158 | return(true); | 1158 | return(true); |
1159 | } | 1159 | } |
1160 | } | 1160 | } |
1161 | else if(obj->inherits("QHeader")){ | 1161 | else if(obj->inherits("QHeader")){ |
1162 | QHeader *hw = (QHeader *)obj; | 1162 | QHeader *hw = (QHeader *)obj; |
1163 | if(ev->type() == QEvent::Enter){ | 1163 | if(ev->type() == QEvent::Enter){ |
1164 | currentHeader = hw; | 1164 | currentHeader = hw; |
1165 | headerHoverID = -1; | 1165 | headerHoverID = -1; |
1166 | } | 1166 | } |
1167 | else if(ev->type() == QEvent::Leave){ | 1167 | else if(ev->type() == QEvent::Leave){ |
1168 | currentHeader = NULL; | 1168 | currentHeader = NULL; |
1169 | if(headerHoverID != -1){ | 1169 | if(headerHoverID != -1){ |
1170 | hw->repaint(hw->sectionPos(headerHoverID), 0, | 1170 | hw->repaint(hw->sectionPos(headerHoverID), 0, |
1171 | hw->sectionSize(headerHoverID), hw->height()); | 1171 | hw->sectionSize(headerHoverID), hw->height()); |
1172 | } | 1172 | } |
1173 | headerHoverID = -1; | 1173 | headerHoverID = -1; |
1174 | } | 1174 | } |
1175 | else if(ev->type() == QEvent::MouseMove){ | 1175 | else if(ev->type() == QEvent::MouseMove){ |
1176 | QMouseEvent *me = (QMouseEvent *)ev; | 1176 | QMouseEvent *me = (QMouseEvent *)ev; |
1177 | int oldHeader = headerHoverID; | 1177 | int oldHeader = headerHoverID; |
1178 | headerHoverID = hw->sectionAt(me->x()); | 1178 | headerHoverID = hw->sectionAt(me->x()); |
1179 | if(oldHeader != headerHoverID){ | 1179 | if(oldHeader != headerHoverID){ |
1180 | // reset old header | 1180 | // reset old header |
1181 | if(oldHeader != -1){ | 1181 | if(oldHeader != -1){ |
1182 | hw->repaint(hw->sectionPos(oldHeader), 0, | 1182 | hw->repaint(hw->sectionPos(oldHeader), 0, |
1183 | hw->sectionSize(oldHeader), hw->height()); | 1183 | hw->sectionSize(oldHeader), hw->height()); |
1184 | } | 1184 | } |
1185 | if(headerHoverID != -1){ | 1185 | if(headerHoverID != -1){ |
1186 | hw->repaint(hw->sectionPos(headerHoverID), 0, | 1186 | hw->repaint(hw->sectionPos(headerHoverID), 0, |
1187 | hw->sectionSize(headerHoverID), hw->height()); | 1187 | hw->sectionSize(headerHoverID), hw->height()); |
1188 | } | 1188 | } |
1189 | } | 1189 | } |
1190 | } | 1190 | } |
1191 | } | 1191 | } |
1192 | else if (obj-> inherits( "QProgressBar" )) { | 1192 | else if (obj-> inherits( "QProgressBar" )) { |
1193 | if ( ev->type() == QEvent::Paint ) { | 1193 | if ( ev->type() == QEvent::Paint ) { |
1194 | HackProgressBar *p = (HackProgressBar *) obj; | 1194 | HackProgressBar *p = (HackProgressBar *) obj; |
1195 | const QColorGroup &g = p-> colorGroup ( ); | 1195 | const QColorGroup &g = p-> colorGroup ( ); |
1196 | 1196 | ||
1197 | QPixmap *pix = bevelFillDict.find(g.button().dark(120).rgb()); | 1197 | QPixmap *pix = bevelFillDict.find(g.button().dark(120).rgb()); |
1198 | if(!pix){ | 1198 | if(!pix){ |
1199 | int h, s, v; | 1199 | int h, s, v; |
1200 | g.button().dark(120).hsv(&h, &s, &v); | 1200 | g.button().dark(120).hsv(&h, &s, &v); |
1201 | pix = new QPixmap(*bevelFillPix); | 1201 | pix = new QPixmap(*bevelFillPix); |
1202 | adjustHSV(*pix, h, s, v); | 1202 | adjustHSV(*pix, h, s, v); |
1203 | bevelFillDict.insert(g.button().dark(120).rgb(), pix); | 1203 | bevelFillDict.insert(g.button().dark(120).rgb(), pix); |
1204 | } | 1204 | } |
1205 | p-> paint ((QPaintEvent *) ev, g, pix ); | 1205 | p-> paint ((QPaintEvent *) ev, g, pix ); |
1206 | return true; | 1206 | return true; |
1207 | } | 1207 | } |
1208 | } | 1208 | } |
1209 | return false ; | 1209 | return false ; |
1210 | } | 1210 | } |
1211 | 1211 | ||
1212 | void LiquidStyle::drawButton(QPainter *p, int x, int y, int w, int h, | 1212 | void LiquidStyle::drawButton(QPainter *p, int x, int y, int w, int h, |
1213 | const QColorGroup &g, bool sunken, | 1213 | const QColorGroup &g, bool sunken, |
1214 | const QBrush *) | 1214 | const QBrush *) |
1215 | { | 1215 | { |
1216 | drawRoundButton(p, sunken ? g.background() : g.button(), g.background(), | 1216 | drawRoundButton(p, sunken ? g.background() : g.button(), g.background(), |
1217 | x, y, w, h); | 1217 | x, y, w, h); |
1218 | } | 1218 | } |
1219 | 1219 | ||
1220 | void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, | 1220 | void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, |
1221 | const QColorGroup &g, bool sunken, | 1221 | const QColorGroup &g, bool sunken, |
1222 | const QBrush *) | 1222 | const QBrush *) |
1223 | { | 1223 | { |
1224 | if(p->device()->devType() != QInternal::Widget){ | 1224 | if(p->device()->devType() != QInternal::Widget){ |
1225 | // drawing into a temp pixmap, don't use mask | 1225 | // drawing into a temp pixmap, don't use mask |
1226 | QColor c = sunken ? g.button() : g.background(); | 1226 | QColor c = sunken ? g.button() : g.background(); |
1227 | p->setPen(c.dark(130)); | 1227 | p->setPen(c.dark(130)); |
1228 | p->drawRect(x, y, w, h); | 1228 | p->drawRect(x, y, w, h); |
1229 | p->setPen(c.light(105)); | 1229 | p->setPen(c.light(105)); |
1230 | p->drawRect(x+1, y+1, w-2, h-2); | 1230 | p->drawRect(x+1, y+1, w-2, h-2); |
1231 | 1231 | ||
1232 | 1232 | ||
1233 | // fill | 1233 | // fill |
1234 | QPixmap *pix = bevelFillDict.find(c.rgb()); | 1234 | QPixmap *pix = bevelFillDict.find(c.rgb()); |
1235 | if(!pix){ | 1235 | if(!pix){ |
1236 | int h, s, v; | 1236 | int h, s, v; |
1237 | c.hsv(&h, &s, &v); | 1237 | c.hsv(&h, &s, &v); |
1238 | pix = new QPixmap(*bevelFillPix); | 1238 | pix = new QPixmap(*bevelFillPix); |
1239 | adjustHSV(*pix, h, s, v); | 1239 | adjustHSV(*pix, h, s, v); |
1240 | bevelFillDict.insert(c.rgb(), pix); | 1240 | bevelFillDict.insert(c.rgb(), pix); |
1241 | } | 1241 | } |
1242 | 1242 | ||
1243 | p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); | 1243 | p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); |
1244 | } | 1244 | } |
1245 | else{ | 1245 | else{ |
1246 | drawClearBevel(p, x, y, w, h, sunken ? g.button() : | 1246 | drawClearBevel(p, x, y, w, h, sunken ? g.button() : |
1247 | highlightWidget == p->device() ? g.button().light(110) : | 1247 | highlightWidget == p->device() ? g.button().light(110) : |
1248 | g.background(), g.background()); | 1248 | g.background(), g.background()); |
1249 | } | 1249 | } |
1250 | } | 1250 | } |
1251 | 1251 | ||
1252 | void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p) | 1252 | void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p) |
1253 | { | 1253 | { |
1254 | QRect r = btn->rect(); | 1254 | QRect r = btn->rect(); |
1255 | bool sunken = btn->isOn() || btn->isDown(); | 1255 | bool sunken = btn->isOn() || btn->isDown(); |
1256 | QColorGroup g = btn->colorGroup(); | 1256 | QColorGroup g = btn->colorGroup(); |
1257 | 1257 | ||
1258 | 1258 | ||
1259 | //int dw = buttonDefaultIndicatorWidth(); | 1259 | //int dw = buttonDefaultIndicatorWidth(); |
1260 | if(btn->hasFocus() || btn->isDefault()){ | 1260 | if(btn->hasFocus() || btn->isDefault()){ |
1261 | QColor c = btn->hasFocus() ? g.button().light(110) : g.background(); | 1261 | QColor c = btn->hasFocus() ? g.button().light(110) : g.background(); |
1262 | QPixmap *pix = bevelFillDict.find(c.rgb()); | 1262 | QPixmap *pix = bevelFillDict.find(c.rgb()); |
1263 | if(!pix){ | 1263 | if(!pix){ |
1264 | int h, s, v; | 1264 | int h, s, v; |
1265 | c.hsv(&h, &s, &v); | 1265 | c.hsv(&h, &s, &v); |
1266 | pix = new QPixmap(*bevelFillPix); | 1266 | pix = new QPixmap(*bevelFillPix); |
1267 | adjustHSV(*pix, h, s, v); | 1267 | adjustHSV(*pix, h, s, v); |
1268 | bevelFillDict.insert(c.rgb(), pix); | 1268 | bevelFillDict.insert(c.rgb(), pix); |
1269 | } | 1269 | } |
1270 | p->setPen(c.dark(150)); | 1270 | p->setPen(c.dark(150)); |
1271 | p->drawLine(r.x()+1, r.y(), r.right()-1, r.y()); | 1271 | p->drawLine(r.x()+1, r.y(), r.right()-1, r.y()); |
1272 | p->drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); | 1272 | p->drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); |
1273 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); | 1273 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); |
1274 | p->drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); | 1274 | p->drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); |
1275 | p->drawTiledPixmap(r.x()+1, r.y()+1, r.width()-2, r.height()-2, *pix); | 1275 | p->drawTiledPixmap(r.x()+1, r.y()+1, r.width()-2, r.height()-2, *pix); |
1276 | } | 1276 | } |
1277 | 1277 | ||
1278 | QColor newColor = btn == highlightWidget || sunken ? | 1278 | QColor newColor = btn == highlightWidget || sunken ? |
1279 | g.button().light(120) : g.button(); | 1279 | g.button().light(120) : g.button(); |
1280 | 1280 | ||
1281 | drawRoundButton(p, newColor, g.background(), | 1281 | drawRoundButton(p, newColor, g.background(), |
1282 | r.x(), r.y(), r.width(), r.height(), !btn->autoMask(), | 1282 | r.x(), r.y(), r.width(), r.height(), !btn->autoMask(), |
1283 | sunken, btn->isDefault() || btn->autoDefault() || btn->hasFocus(), | 1283 | sunken, btn->isDefault() || btn->autoDefault() || btn->hasFocus(), |
1284 | btn->autoMask()); | 1284 | btn->autoMask()); |
1285 | } | 1285 | } |
1286 | 1286 | ||
1287 | void LiquidStyle::drawPushButtonLabel(QPushButton *btn, QPainter *p) | 1287 | void LiquidStyle::drawPushButtonLabel(QPushButton *btn, QPainter *p) |
1288 | { | 1288 | { |
1289 | int x1, y1, x2, y2, w, h; | 1289 | int x1, y1, x2, y2, w, h; |
1290 | btn->rect().coords(&x1, &y1, &x2, &y2); | 1290 | btn->rect().coords(&x1, &y1, &x2, &y2); |
1291 | w = btn->width(); | 1291 | w = btn->width(); |
1292 | h = btn->height(); | 1292 | h = btn->height(); |
1293 | 1293 | ||
1294 | bool act = btn->isOn() || btn->isDown(); | 1294 | bool act = btn->isOn() || btn->isDown(); |
1295 | if(act){ | 1295 | if(act){ |
1296 | ++x1, ++y1; | 1296 | ++x1, ++y1; |
1297 | } | 1297 | } |
1298 | 1298 | ||
1299 | // Draw iconset first, if any | 1299 | // Draw iconset first, if any |
1300 | if ( btn->iconSet() && !btn->iconSet()->isNull() ) | 1300 | if ( btn->iconSet() && !btn->iconSet()->isNull() ) |
1301 | { | 1301 | { |
1302 | QIconSet::Mode mode = btn->isEnabled() | 1302 | QIconSet::Mode mode = btn->isEnabled() |
1303 | ? QIconSet::Normal : QIconSet::Disabled; | 1303 | ? QIconSet::Normal : QIconSet::Disabled; |
1304 | if ( mode == QIconSet::Normal && btn->hasFocus() ) | 1304 | if ( mode == QIconSet::Normal && btn->hasFocus() ) |
1305 | mode = QIconSet::Active; | 1305 | mode = QIconSet::Active; |
1306 | QPixmap pixmap = btn->iconSet()->pixmap( QIconSet::Small, mode ); | 1306 | QPixmap pixmap; |
1307 | if ( mode == QIconSet::Disabled ) | ||
1308 | pixmap = btn->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
1309 | else | ||
1310 | pixmap = btn->iconSet()->pixmap(); | ||
1307 | int pixw = pixmap.width(); | 1311 | int pixw = pixmap.width(); |
1308 | int pixh = pixmap.height(); | 1312 | int pixh = pixmap.height(); |
1309 | 1313 | ||
1310 | p->drawPixmap( x1+6, y1+h/2-pixh/2, pixmap ); | 1314 | p->drawPixmap( x1+6, y1+h/2-pixh/2, pixmap ); |
1311 | x1 += pixw + 8; | 1315 | x1 += pixw + 8; |
1312 | w -= pixw + 8; | 1316 | w -= pixw + 8; |
1313 | } | 1317 | } |
1314 | 1318 | ||
1315 | if(act){ | 1319 | if(act){ |
1316 | QFont font = btn->font(); | 1320 | QFont font = btn->font(); |
1317 | font.setBold(true); | 1321 | font.setBold(true); |
1318 | p->setFont(font); | 1322 | p->setFont(font); |
1319 | QColor shadow(btn->colorGroup().button().dark(130)); | 1323 | QColor shadow(btn->colorGroup().button().dark(130)); |
1320 | drawItem( p, x1+1, y1+1, w, h, | 1324 | drawItem( p, x1+1, y1+1, w, h, |
1321 | AlignCenter | ShowPrefix, btn->colorGroup(), btn->isEnabled(), | 1325 | AlignCenter | ShowPrefix, btn->colorGroup(), btn->isEnabled(), |
1322 | btn->pixmap(), btn->text(), -1, | 1326 | btn->pixmap(), btn->text(), -1, |
1323 | &shadow); | 1327 | &shadow); |
1324 | 1328 | ||
1325 | drawItem( p, x1, y1, w, h, | 1329 | drawItem( p, x1, y1, w, h, |
1326 | AlignCenter | ShowPrefix, btn->colorGroup(), btn->isEnabled(), | 1330 | AlignCenter | ShowPrefix, btn->colorGroup(), btn->isEnabled(), |
1327 | btn->pixmap(), btn->text(), -1, &btn->colorGroup().light()); | 1331 | btn->pixmap(), btn->text(), -1, &btn->colorGroup().light()); |
1328 | } | 1332 | } |
1329 | else{ | 1333 | else{ |
1330 | /* Too blurry | 1334 | /* Too blurry |
1331 | drawItem( p, x1+1, y1+1, w, h, | 1335 | drawItem( p, x1+1, y1+1, w, h, |
1332 | AlignCenter | ShowPrefix, btn->colorGroup(), btn->isEnabled(), | 1336 | AlignCenter | ShowPrefix, btn->colorGroup(), btn->isEnabled(), |
1333 | btn->pixmap(), btn->text(), -1, | 1337 | btn->pixmap(), btn->text(), -1, |
1334 | &btn->colorGroup().button().dark(115)); | 1338 | &btn->colorGroup().button().dark(115)); |
1335 | */ | 1339 | */ |
1336 | drawItem( p, x1, y1, w, h, | 1340 | drawItem( p, x1, y1, w, h, |
1337 | AlignCenter | ShowPrefix, | 1341 | AlignCenter | ShowPrefix, |
1338 | btn->colorGroup(), btn->isEnabled(), | 1342 | btn->colorGroup(), btn->isEnabled(), |
1339 | btn->pixmap(), btn->text(), -1, | 1343 | btn->pixmap(), btn->text(), -1, |
1340 | &btn->colorGroup().buttonText()); | 1344 | &btn->colorGroup().buttonText()); |
1341 | } | 1345 | } |
1342 | } | 1346 | } |
1343 | 1347 | ||
1344 | void LiquidStyle::drawButtonMask(QPainter *p, int x, int y, int w, int h) | 1348 | void LiquidStyle::drawButtonMask(QPainter *p, int x, int y, int w, int h) |
1345 | { | 1349 | { |
1346 | int x2 = x+w-1; | 1350 | int x2 = x+w-1; |
1347 | int y2 = y+h-1; | 1351 | int y2 = y+h-1; |
1348 | 1352 | ||
1349 | p->setPen(Qt::color1); | 1353 | p->setPen(Qt::color1); |
1350 | p->fillRect(x, y, w, h, Qt::color0); | 1354 | p->fillRect(x, y, w, h, Qt::color0); |
1351 | if(w < 21 || h < 21){ | 1355 | if(w < 21 || h < 21){ |
1352 | // outer rect | 1356 | // outer rect |
1353 | p->drawLine(x, y+2, x, y2-2); // l | 1357 | p->drawLine(x, y+2, x, y2-2); // l |
1354 | p->drawLine(x2, y+2, x2, y2-2); // r | 1358 | p->drawLine(x2, y+2, x2, y2-2); // r |
1355 | p->drawLine(x+2, y, x2-2, y); // t | 1359 | p->drawLine(x+2, y, x2-2, y); // t |
1356 | p->drawLine(x+2, y2, x2-2, y2); // b | 1360 | p->drawLine(x+2, y2, x2-2, y2); // b |
1357 | p->drawLine(x+1, y+1, x2-1, y+1); // top second line | 1361 | p->drawLine(x+1, y+1, x2-1, y+1); // top second line |
1358 | p->drawLine(x+1, y2-1, x2-1, y2-1); // bottom second line | 1362 | p->drawLine(x+1, y2-1, x2-1, y2-1); // bottom second line |
1359 | p->fillRect(x+1, y+2, w-2, h-4, Qt::color1); | 1363 | p->fillRect(x+1, y+2, w-2, h-4, Qt::color1); |
1360 | } | 1364 | } |
1361 | else{ | 1365 | else{ |
1362 | int x2 = x+w-1; | 1366 | int x2 = x+w-1; |
1363 | int y2 = y+h-1; | 1367 | int y2 = y+h-1; |
1364 | int bx2 = htmlBtnMaskBmp.width()-1; | 1368 | int bx2 = htmlBtnMaskBmp.width()-1; |
1365 | int by2 = htmlBtnMaskBmp.height()-1; | 1369 | int by2 = htmlBtnMaskBmp.height()-1; |
1366 | p->drawPixmap(0, 0, htmlBtnMaskBmp, 0, 0, 10, 10); // tl | 1370 | p->drawPixmap(0, 0, htmlBtnMaskBmp, 0, 0, 10, 10); // tl |
1367 | p->drawPixmap(x2-9, 0, htmlBtnMaskBmp, bx2-9, 0, 10, 10); // tr | 1371 | p->drawPixmap(x2-9, 0, htmlBtnMaskBmp, bx2-9, 0, 10, 10); // tr |
1368 | p->drawPixmap(0, y2-9, htmlBtnMaskBmp, 0, by2-9, 10, 10); // bl | 1372 | p->drawPixmap(0, y2-9, htmlBtnMaskBmp, 0, by2-9, 10, 10); // bl |
1369 | p->drawPixmap(x2-9, y2-9, htmlBtnMaskBmp, bx2-9, by2-9, 10, 10); // br | 1373 | p->drawPixmap(x2-9, y2-9, htmlBtnMaskBmp, bx2-9, by2-9, 10, 10); // br |
1370 | // fills | 1374 | // fills |
1371 | p->fillRect(10, 0, w-20, 10, Qt::color1); // top | 1375 | p->fillRect(10, 0, w-20, 10, Qt::color1); // top |
1372 | p->fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom | 1376 | p->fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom |
1373 | p->fillRect(0, 10, w, h-20, Qt::color1); // middle | 1377 | p->fillRect(0, 10, w, h-20, Qt::color1); // middle |
1374 | } | 1378 | } |
1375 | } | 1379 | } |
1376 | 1380 | ||
1377 | void LiquidStyle::drawBevelButton(QPainter *p, int x, int y, int w, int h, | 1381 | void LiquidStyle::drawBevelButton(QPainter *p, int x, int y, int w, int h, |
1378 | const QColorGroup &g, bool sunken, | 1382 | const QColorGroup &g, bool sunken, |
1379 | const QBrush */*fill*/) | 1383 | const QBrush */*fill*/) |
1380 | { | 1384 | { |
1381 | if(currentHeader && p->device() == currentHeader){ | 1385 | if(currentHeader && p->device() == currentHeader){ |
1382 | int id = currentHeader->sectionAt(x); | 1386 | int id = currentHeader->sectionAt(x); |
1383 | bool isHeaderHover = id != -1 && id == headerHoverID; | 1387 | bool isHeaderHover = id != -1 && id == headerHoverID; |
1384 | drawClearBevel(p, x, y, w, h, sunken ? | 1388 | drawClearBevel(p, x, y, w, h, sunken ? |
1385 | g.button() : isHeaderHover ? g.button().light(110) : | 1389 | g.button() : isHeaderHover ? g.button().light(110) : |
1386 | g.background(), g.background()); | 1390 | g.background(), g.background()); |
1387 | } | 1391 | } |
1388 | else | 1392 | else |
1389 | drawClearBevel(p, x, y, w, h, sunken ? g.button() : g.background(), | 1393 | drawClearBevel(p, x, y, w, h, sunken ? g.button() : g.background(), |
1390 | g.background()); | 1394 | g.background()); |
1391 | } | 1395 | } |
1392 | 1396 | ||
1393 | QRect LiquidStyle::buttonRect(int x, int y, int w, int h) | 1397 | QRect LiquidStyle::buttonRect(int x, int y, int w, int h) |
1394 | { | 1398 | { |
1395 | return(QRect(x+5, y+5, w-10, h-10)); | 1399 | return(QRect(x+5, y+5, w-10, h-10)); |
1396 | } | 1400 | } |
1397 | 1401 | ||
1398 | void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h, | 1402 | void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h, |
1399 | const QColorGroup &g, bool sunken, | 1403 | const QColorGroup &g, bool sunken, |
1400 | bool edit, bool, const QBrush *) | 1404 | bool edit, bool, const QBrush *) |
1401 | { | 1405 | { |
1402 | bool isActive = false; | 1406 | bool isActive = false; |
1403 | if (( painter->device()->devType() == QInternal::Widget ) && | 1407 | if (( painter->device()->devType() == QInternal::Widget ) && |
1404 | ( | 1408 | ( |
1405 | ( qApp-> focusWidget ( ) == painter-> device ( )) || | 1409 | ( qApp-> focusWidget ( ) == painter-> device ( )) || |
1406 | ( | 1410 | ( |
1407 | edit && | 1411 | edit && |
1408 | ((QWidget *) painter-> device ( ))-> inherits ( "QComboBox" ) && | 1412 | ((QWidget *) painter-> device ( ))-> inherits ( "QComboBox" ) && |
1409 | ( qApp-> focusWidget ( ) == ((QComboBox *) painter->device())->lineEdit ( ) || | 1413 | ( qApp-> focusWidget ( ) == ((QComboBox *) painter->device())->lineEdit ( ) || |
1410 | qApp-> focusWidget ( ) == ((QComboBox *) painter->device())->listBox ( )) | 1414 | qApp-> focusWidget ( ) == ((QComboBox *) painter->device())->listBox ( )) |
1411 | ) | 1415 | ) |
1412 | ) | 1416 | ) |
1413 | ) { | 1417 | ) { |
1414 | isActive = true; | 1418 | isActive = true; |
1415 | } | 1419 | } |
1416 | 1420 | ||
1417 | bool isMasked = false; | 1421 | bool isMasked = false; |
1418 | if(painter->device()->devType() == QInternal::Widget) | 1422 | if(painter->device()->devType() == QInternal::Widget) |
1419 | isMasked = ((QWidget*)painter->device())->autoMask(); | 1423 | isMasked = ((QWidget*)painter->device())->autoMask(); |
1420 | // TODO: Do custom code, don't just call drawRoundButton into a pixmap | 1424 | // TODO: Do custom code, don't just call drawRoundButton into a pixmap |
1421 | QPixmap tmpPix(w, h); | 1425 | QPixmap tmpPix(w, h); |
1422 | QPainter p(&tmpPix); | 1426 | QPainter p(&tmpPix); |
1423 | 1427 | ||
1424 | drawRoundButton(&p, g.button(), g.background(), 0, 0, w, h, false, | 1428 | drawRoundButton(&p, g.button(), g.background(), 0, 0, w, h, false, |
1425 | sunken, false, isMasked); | 1429 | sunken, false, isMasked); |
1426 | if(!isActive){ | 1430 | if(!isActive){ |
1427 | p.setClipRect(0, 0, w-17, h); | 1431 | p.setClipRect(0, 0, w-17, h); |
1428 | drawRoundButton(&p, g.background(), g.background(), 0, 0, w, h, false, | 1432 | drawRoundButton(&p, g.background(), g.background(), 0, 0, w, h, false, |
1429 | sunken, false, isMasked); | 1433 | sunken, false, isMasked); |
1430 | } | 1434 | } |
1431 | p.end(); | 1435 | p.end(); |
1432 | int x2 = x+w-1; | 1436 | int x2 = x+w-1; |
1433 | int y2 = y+h-1; | 1437 | int y2 = y+h-1; |
1434 | int bx2 = btnMaskBmp.width()-1; | 1438 | int bx2 = btnMaskBmp.width()-1; |
1435 | int by2 = btnMaskBmp.height()-1; | 1439 | int by2 = btnMaskBmp.height()-1; |
1436 | QBitmap btnMask(w, h); | 1440 | QBitmap btnMask(w, h); |
1437 | QBitmap *mask = isMasked ? &htmlBtnMaskBmp : &btnMaskBmp; | 1441 | QBitmap *mask = isMasked ? &htmlBtnMaskBmp : &btnMaskBmp; |
1438 | p.begin(&btnMask); | 1442 | p.begin(&btnMask); |
1439 | p.fillRect(0, 0, w, h, Qt::color0); | 1443 | p.fillRect(0, 0, w, h, Qt::color0); |
1440 | p.drawPixmap(0, 0, *mask, 0, 0, 10, 10); // tl | 1444 | p.drawPixmap(0, 0, *mask, 0, 0, 10, 10); // tl |
1441 | p.drawPixmap(x2-9, 0, *mask, bx2-9, 0, 10, 10); // tr | 1445 | p.drawPixmap(x2-9, 0, *mask, bx2-9, 0, 10, 10); // tr |
1442 | p.drawPixmap(0, y2-9, *mask, 0, by2-9, 10, 10); // bl | 1446 | p.drawPixmap(0, y2-9, *mask, 0, by2-9, 10, 10); // bl |
1443 | p.drawPixmap(x2-9, y2-9, *mask, bx2-9, by2-9, 10, 10); // br | 1447 | p.drawPixmap(x2-9, y2-9, *mask, bx2-9, by2-9, 10, 10); // br |
1444 | // fills | 1448 | // fills |
1445 | p.fillRect(10, 0, w-20, 10, Qt::color1); // top | 1449 | p.fillRect(10, 0, w-20, 10, Qt::color1); // top |
1446 | p.fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom | 1450 | p.fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom |
1447 | p.fillRect(0, 10, w, h-20, Qt::color1); // middle | 1451 | p.fillRect(0, 10, w, h-20, Qt::color1); // middle |
1448 | p.end(); | 1452 | p.end(); |
1449 | tmpPix.setMask(btnMask); | 1453 | tmpPix.setMask(btnMask); |
1450 | 1454 | ||
1451 | painter->drawPixmap(x, y, tmpPix); | 1455 | painter->drawPixmap(x, y, tmpPix); |
1452 | 1456 | ||
1453 | painter->setPen(g.button().dark(120)); | 1457 | painter->setPen(g.button().dark(120)); |
1454 | painter->drawLine(x2-16, y+1, x2-16, y2-1); | 1458 | painter->drawLine(x2-16, y+1, x2-16, y2-1); |
1455 | 1459 | ||
1456 | if(edit){ | 1460 | if(edit){ |
1457 | painter->setPen(g.mid()); | 1461 | painter->setPen(g.mid()); |
1458 | painter->drawRect(x+8, y+2, w-25, h-4); | 1462 | painter->drawRect(x+8, y+2, w-25, h-4); |
1459 | } | 1463 | } |
1460 | int arrow_h = h / 3; | 1464 | int arrow_h = h / 3; |
1461 | int arrow_w = arrow_h; | 1465 | int arrow_w = arrow_h; |
1462 | int arrow_x = w - arrow_w - 6; | 1466 | int arrow_x = w - arrow_w - 6; |
1463 | int arrow_y = (h - arrow_h) / 2; | 1467 | int arrow_y = (h - arrow_h) / 2; |
1464 | drawArrow(painter, DownArrow, false, arrow_x, arrow_y, arrow_w, arrow_h, g, true); | 1468 | drawArrow(painter, DownArrow, false, arrow_x, arrow_y, arrow_w, arrow_h, g, true); |
1465 | } | 1469 | } |
1466 | 1470 | ||
1467 | void LiquidStyle::drawComboButtonMask(QPainter *p, int x, int y, int w, int h) | 1471 | void LiquidStyle::drawComboButtonMask(QPainter *p, int x, int y, int w, int h) |
1468 | { | 1472 | { |
1469 | drawButtonMask(p, x, y, w, h); | 1473 | drawButtonMask(p, x, y, w, h); |
1470 | } | 1474 | } |
1471 | 1475 | ||
1472 | QRect LiquidStyle::comboButtonRect(int x, int y, int w, int h) | 1476 | QRect LiquidStyle::comboButtonRect(int x, int y, int w, int h) |
1473 | { | 1477 | { |
1474 | //return(QRect(x+3, y+3, w - (h / 3) - 13, h-6)); | 1478 | //return(QRect(x+3, y+3, w - (h / 3) - 13, h-6)); |
1475 | return(QRect(x+9, y+3, w - (h / 3) - 20, h-6)); | 1479 | return(QRect(x+9, y+3, w - (h / 3) - 20, h-6)); |
1476 | } | 1480 | } |
1477 | 1481 | ||
1478 | QRect LiquidStyle::comboButtonFocusRect(int /*x*/, int /*y*/, int /*w*/, int /*h*/) | 1482 | QRect LiquidStyle::comboButtonFocusRect(int /*x*/, int /*y*/, int /*w*/, int /*h*/) |
1479 | { | 1483 | { |
1480 | return QRect ( ); | 1484 | return QRect ( ); |
1481 | 1485 | ||
1482 | // return(QRect(x+5, y+3, w-(h/3)-13, h-5)); | 1486 | // return(QRect(x+5, y+3, w-(h/3)-13, h-5)); |
1483 | } | 1487 | } |
1484 | 1488 | ||
1485 | void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, | 1489 | void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, |
1486 | int sliderStart, uint controls, | 1490 | int sliderStart, uint controls, |
1487 | uint activeControl) | 1491 | uint activeControl) |
1488 | { | 1492 | { |
1489 | int sliderMin, sliderMax, sliderLength, buttonDim; | 1493 | int sliderMin, sliderMax, sliderLength, buttonDim; |
1490 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 1494 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
1491 | 1495 | ||
1492 | if (sliderStart > sliderMax) | 1496 | if (sliderStart > sliderMax) |
1493 | sliderStart = sliderMax; | 1497 | sliderStart = sliderMax; |
1494 | 1498 | ||
1495 | bool horiz = sb->orientation() == QScrollBar::Horizontal; | 1499 | bool horiz = sb->orientation() == QScrollBar::Horizontal; |
1496 | QColorGroup g = sb->colorGroup(); | 1500 | QColorGroup g = sb->colorGroup(); |
1497 | QRect addB, subHC, subB; | 1501 | QRect addB, subHC, subB; |
1498 | QRect addPageR, subPageR, sliderR; | 1502 | QRect addPageR, subPageR, sliderR; |
1499 | int addX, addY, subX, subY; | 1503 | int addX, addY, subX, subY; |
1500 | int len = horiz ? sb->width() : sb->height(); | 1504 | int len = horiz ? sb->width() : sb->height(); |
1501 | int extent = horiz ? sb->height() : sb->width(); | 1505 | int extent = horiz ? sb->height() : sb->width(); |
1502 | 1506 | ||
1503 | // a few apps (ie: KSpread), are broken and use a hardcoded scrollbar | 1507 | // a few apps (ie: KSpread), are broken and use a hardcoded scrollbar |
1504 | // extent of 16. Luckily, most apps (ie: Kate), seem fixed by now. | 1508 | // extent of 16. Luckily, most apps (ie: Kate), seem fixed by now. |
1505 | bool brokenApp; | 1509 | bool brokenApp; |
1506 | if(extent == 16) | 1510 | if(extent == 16) |
1507 | brokenApp = true; | 1511 | brokenApp = true; |
1508 | else | 1512 | else |
1509 | brokenApp = false; | 1513 | brokenApp = false; |
1510 | 1514 | ||
1511 | if (horiz) { | 1515 | if (horiz) { |
1512 | subY = addY = ( extent - buttonDim ) / 2; | 1516 | subY = addY = ( extent - buttonDim ) / 2; |
1513 | subX = 0; | 1517 | subX = 0; |
1514 | addX = len - buttonDim; | 1518 | addX = len - buttonDim; |
1515 | if(sbBuffer.size() != sb->size()) | 1519 | if(sbBuffer.size() != sb->size()) |
1516 | sbBuffer.resize(sb->size()); | 1520 | sbBuffer.resize(sb->size()); |
1517 | } | 1521 | } |
1518 | else { | 1522 | else { |
1519 | subX = addX = ( extent - buttonDim ) / 2; | 1523 | subX = addX = ( extent - buttonDim ) / 2; |
1520 | subY = 0; | 1524 | subY = 0; |
1521 | addY = len - buttonDim; | 1525 | addY = len - buttonDim; |
1522 | if(sbBuffer.size() != sb->size()) | 1526 | if(sbBuffer.size() != sb->size()) |
1523 | sbBuffer.resize(sb->size()); | 1527 | sbBuffer.resize(sb->size()); |
1524 | } | 1528 | } |
1525 | subB.setRect( subX,subY,0,0); // buttonDim,buttonDim ); | 1529 | subB.setRect( subX,subY,0,0); // buttonDim,buttonDim ); |
1526 | addB.setRect( addX,addY,buttonDim,buttonDim ); | 1530 | addB.setRect( addX,addY,buttonDim,buttonDim ); |
1527 | if(horiz) | 1531 | if(horiz) |
1528 | subHC.setRect(addX-buttonDim,addY,buttonDim,buttonDim ); | 1532 | subHC.setRect(addX-buttonDim,addY,buttonDim,buttonDim ); |
1529 | else | 1533 | else |
1530 | subHC.setRect(addX,addY-buttonDim,buttonDim,buttonDim ); | 1534 | subHC.setRect(addX,addY-buttonDim,buttonDim,buttonDim ); |
1531 | 1535 | ||
1532 | int sliderEnd = sliderStart + sliderLength; | 1536 | int sliderEnd = sliderStart + sliderLength; |
1533 | int sliderW = extent; | 1537 | int sliderW = extent; |
1534 | 1538 | ||
1535 | if (horiz) { | 1539 | if (horiz) { |
1536 | subPageR.setRect( subB.right() + 1, 0, | 1540 | subPageR.setRect( subB.right() + 1, 0, |
1537 | sliderStart - subB.right() - 1 , sliderW ); | 1541 | sliderStart - subB.right() - 1 , sliderW ); |
1538 | addPageR.setRect( sliderEnd, 0, addX - sliderEnd - buttonDim, sliderW ); | 1542 | addPageR.setRect( sliderEnd, 0, addX - sliderEnd - buttonDim, sliderW ); |
1539 | sliderR .setRect( sliderStart, 0, sliderLength, sliderW ); | 1543 | sliderR .setRect( sliderStart, 0, sliderLength, sliderW ); |
1540 | } | 1544 | } |
1541 | else { | 1545 | else { |
1542 | subPageR.setRect( 0, subB.bottom() + 1, sliderW, | 1546 | subPageR.setRect( 0, subB.bottom() + 1, sliderW, |
1543 | sliderStart - subB.bottom() - 1 ); | 1547 | sliderStart - subB.bottom() - 1 ); |
1544 | addPageR.setRect( 0, sliderEnd, sliderW, addY - buttonDim - sliderEnd); | 1548 | addPageR.setRect( 0, sliderEnd, sliderW, addY - buttonDim - sliderEnd); |
1545 | sliderR .setRect( 0, sliderStart, sliderW, sliderLength ); | 1549 | sliderR .setRect( 0, sliderStart, sliderW, sliderLength ); |
1546 | } | 1550 | } |
1547 | 1551 | ||
1548 | bool maxed = sb->maxValue() == sb->minValue(); | 1552 | bool maxed = sb->maxValue() == sb->minValue(); |
1549 | 1553 | ||
1550 | QPainter painter; | 1554 | QPainter painter; |
1551 | if(!horiz){ | 1555 | if(!horiz){ |
1552 | painter.begin(&sbBuffer); | 1556 | painter.begin(&sbBuffer); |
1553 | QRect bgR(0, subB.bottom()+1, sb->width(), (len-(buttonDim*2))+1); | 1557 | QRect bgR(0, subB.bottom()+1, sb->width(), (len-(buttonDim*2))+1); |
1554 | if(sliderR.height() >= 8){ | 1558 | if(sliderR.height() >= 8){ |
1555 | painter.drawPixmap(bgR.x()+1, bgR.y(), *vsbSliderFillPix, 0, 0, | 1559 | painter.drawPixmap(bgR.x()+1, bgR.y(), *vsbSliderFillPix, 0, 0, |
1556 | 13, 8); | 1560 | 13, 8); |
1557 | painter.drawPixmap(bgR.x()+1, bgR.y(), *getPixmap(VSBSliderTopBg)); | 1561 | painter.drawPixmap(bgR.x()+1, bgR.y(), *getPixmap(VSBSliderTopBg)); |
1558 | painter.drawTiledPixmap(bgR.x()+1, bgR.y()+8, 13, | 1562 | painter.drawTiledPixmap(bgR.x()+1, bgR.y()+8, 13, |
1559 | bgR.height()-16, *getPixmap(VSBSliderMidBg)); | 1563 | bgR.height()-16, *getPixmap(VSBSliderMidBg)); |
1560 | painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *vsbSliderFillPix, | 1564 | painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *vsbSliderFillPix, |
1561 | 0, 0, 13, 8); | 1565 | 0, 0, 13, 8); |
1562 | painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *getPixmap(VSBSliderBtmBg)); | 1566 | painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *getPixmap(VSBSliderBtmBg)); |
1563 | } | 1567 | } |
1564 | else{ | 1568 | else{ |
1565 | painter.drawTiledPixmap(bgR.x()+1, bgR.y(), 13, bgR.height(), | 1569 | painter.drawTiledPixmap(bgR.x()+1, bgR.y(), 13, bgR.height(), |
1566 | *getPixmap(VSBSliderMidBg)); | 1570 | *getPixmap(VSBSliderMidBg)); |
1567 | painter.setPen(g.background().dark(210)); | 1571 | painter.setPen(g.background().dark(210)); |
1568 | painter.drawRect(bgR.x()+1, bgR.y(), 13, bgR.height()-1); | 1572 | painter.drawRect(bgR.x()+1, bgR.y(), 13, bgR.height()-1); |
1569 | painter.setPen(g.mid()); | 1573 | painter.setPen(g.mid()); |
1570 | painter.drawPoint(bgR.x()+1, bgR.y()); | 1574 | painter.drawPoint(bgR.x()+1, bgR.y()); |
1571 | painter.drawPoint(bgR.x()+13, bgR.y()); | 1575 | painter.drawPoint(bgR.x()+13, bgR.y()); |
1572 | painter.drawPoint(bgR.x()+1, bgR.bottom()-1); | 1576 | painter.drawPoint(bgR.x()+1, bgR.bottom()-1); |
1573 | painter.drawPoint(bgR.x()+13, bgR.bottom()-1); | 1577 | painter.drawPoint(bgR.x()+13, bgR.bottom()-1); |
1574 | } | 1578 | } |
1575 | if(controls & Slider){ | 1579 | if(controls & Slider){ |
1576 | if(sliderR.height() >= 16){ | 1580 | if(sliderR.height() >= 16){ |
1577 | painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop)); | 1581 | painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop)); |
1578 | painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+8, 13, | 1582 | painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+8, 13, |
1579 | sliderR.height()-16, *getPixmap(VSBSliderMid)); | 1583 | sliderR.height()-16, *getPixmap(VSBSliderMid)); |
1580 | painter.drawPixmap(sliderR.x()+1, sliderR.bottom()-8, *getPixmap(VSBSliderBtm)); | 1584 | painter.drawPixmap(sliderR.x()+1, sliderR.bottom()-8, *getPixmap(VSBSliderBtm)); |
1581 | } | 1585 | } |
1582 | else if(sliderR.height() >= 8){ | 1586 | else if(sliderR.height() >= 8){ |
1583 | int m = sliderR.height()/2; | 1587 | int m = sliderR.height()/2; |
1584 | painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop), 0, 0, 13, m); | 1588 | painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop), 0, 0, 13, m); |
1585 | painter.drawPixmap(sliderR.x()+1, sliderR.y()+m, *getPixmap(VSBSliderBtm), 0, 8-m, 13, m); | 1589 | painter.drawPixmap(sliderR.x()+1, sliderR.y()+m, *getPixmap(VSBSliderBtm), 0, 8-m, 13, m); |
1586 | } | 1590 | } |
1587 | else{ | 1591 | else{ |
1588 | painter.setPen(g.button().dark(210)); | 1592 | painter.setPen(g.button().dark(210)); |
1589 | drawRoundRect(&painter, sliderR.x()+1, sliderR.y(), | 1593 | drawRoundRect(&painter, sliderR.x()+1, sliderR.y(), |
1590 | 13, sliderR.height()); | 1594 | 13, sliderR.height()); |
1591 | painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1, | 1595 | painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1, |
1592 | 11, sliderR.height()-2, | 1596 | 11, sliderR.height()-2, |
1593 | *getPixmap(VSBSliderMid), 1, 0); | 1597 | *getPixmap(VSBSliderMid), 1, 0); |
1594 | } | 1598 | } |
1595 | } | 1599 | } |
1596 | painter.setPen(g.mid()); | 1600 | painter.setPen(g.mid()); |
1597 | painter.drawLine(bgR.x(), bgR.y(), bgR.x(), bgR.bottom()); | 1601 | painter.drawLine(bgR.x(), bgR.y(), bgR.x(), bgR.bottom()); |
1598 | painter.drawLine(bgR.right(), bgR.y(), bgR.right(), bgR.bottom()); | 1602 | painter.drawLine(bgR.right(), bgR.y(), bgR.right(), bgR.bottom()); |
1599 | if(brokenApp && (controls & Slider)){ | 1603 | if(brokenApp && (controls & Slider)){ |
1600 | painter.setPen(g.background()); | 1604 | painter.setPen(g.background()); |
1601 | painter.drawLine(bgR.right()-1, bgR.y(), bgR.right()-1, | 1605 | painter.drawLine(bgR.right()-1, bgR.y(), bgR.right()-1, |
1602 | bgR.bottom()); | 1606 | bgR.bottom()); |
1603 | } | 1607 | } |
1604 | painter.end(); | 1608 | painter.end(); |
1605 | } | 1609 | } |
1606 | else{ | 1610 | else{ |
1607 | painter.begin(&sbBuffer); | 1611 | painter.begin(&sbBuffer); |
1608 | QRect bgR(subB.right()+1, 0, (len-(buttonDim*2))+1, sb->height()); | 1612 | QRect bgR(subB.right()+1, 0, (len-(buttonDim*2))+1, sb->height()); |
1609 | if(sliderR.width() >= 8){ | 1613 | if(sliderR.width() >= 8){ |
1610 | painter.drawPixmap(bgR.x(), bgR.y()+1, *vsbSliderFillPix, 0, 0, | 1614 | painter.drawPixmap(bgR.x(), bgR.y()+1, *vsbSliderFillPix, 0, 0, |
1611 | 8, 13); | 1615 | 8, 13); |
1612 | painter.drawPixmap(bgR.x(), bgR.y()+1, *getPixmap(HSBSliderTopBg)); | 1616 | painter.drawPixmap(bgR.x(), bgR.y()+1, *getPixmap(HSBSliderTopBg)); |
1613 | painter.drawTiledPixmap(bgR.x()+8, bgR.y()+1, bgR.width()-16, | 1617 | painter.drawTiledPixmap(bgR.x()+8, bgR.y()+1, bgR.width()-16, |
1614 | 13, *getPixmap(HSBSliderMidBg)); | 1618 | 13, *getPixmap(HSBSliderMidBg)); |
1615 | painter.drawPixmap(bgR.right()-8, bgR.y()+1, *vsbSliderFillPix, | 1619 | painter.drawPixmap(bgR.right()-8, bgR.y()+1, *vsbSliderFillPix, |
1616 | 0, 0, 8, 13); | 1620 | 0, 0, 8, 13); |
1617 | painter.drawPixmap(bgR.right()-8, bgR.y()+1, *getPixmap(HSBSliderBtmBg)); | 1621 | painter.drawPixmap(bgR.right()-8, bgR.y()+1, *getPixmap(HSBSliderBtmBg)); |
1618 | } | 1622 | } |
1619 | else{ | 1623 | else{ |
1620 | painter.drawTiledPixmap(bgR.x(), bgR.y()+1, bgR.width(), 13, | 1624 | painter.drawTiledPixmap(bgR.x(), bgR.y()+1, bgR.width(), 13, |
1621 | *getPixmap(HSBSliderMidBg)); | 1625 | *getPixmap(HSBSliderMidBg)); |
1622 | painter.setPen(g.background().dark(210)); | 1626 | painter.setPen(g.background().dark(210)); |
1623 | painter.drawRect(bgR.x(), bgR.y()+1, bgR.width()-1, 13); | 1627 | painter.drawRect(bgR.x(), bgR.y()+1, bgR.width()-1, 13); |
1624 | painter.setPen(g.mid()); | 1628 | painter.setPen(g.mid()); |
1625 | painter.drawPoint(bgR.x(), bgR.y()+1); | 1629 | painter.drawPoint(bgR.x(), bgR.y()+1); |
1626 | painter.drawPoint(bgR.x(), bgR.bottom()-1); | 1630 | painter.drawPoint(bgR.x(), bgR.bottom()-1); |
1627 | painter.drawPoint(bgR.right()-1, bgR.y()+1); | 1631 | painter.drawPoint(bgR.right()-1, bgR.y()+1); |
1628 | painter.drawPoint(bgR.right()-1, bgR.bottom()-1); | 1632 | painter.drawPoint(bgR.right()-1, bgR.bottom()-1); |
1629 | } | 1633 | } |
1630 | if(controls & Slider){ | 1634 | if(controls & Slider){ |
1631 | if(sliderR.width() >= 16){ | 1635 | if(sliderR.width() >= 16){ |
1632 | painter.drawPixmap(sliderR.x(), sliderR.y()+1, | 1636 | painter.drawPixmap(sliderR.x(), sliderR.y()+1, |
1633 | *getPixmap(HSBSliderTop)); | 1637 | *getPixmap(HSBSliderTop)); |
1634 | painter.drawTiledPixmap(sliderR.x()+8, sliderR.y()+1, sliderR.width()-16, | 1638 | painter.drawTiledPixmap(sliderR.x()+8, sliderR.y()+1, sliderR.width()-16, |
1635 | 13, *getPixmap(HSBSliderMid)); | 1639 | 13, *getPixmap(HSBSliderMid)); |
1636 | painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, | 1640 | painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, |
1637 | *getPixmap(HSBSliderBtm)); | 1641 | *getPixmap(HSBSliderBtm)); |
1638 | } | 1642 | } |
1639 | else if(sliderR.width() >= 8){ | 1643 | else if(sliderR.width() >= 8){ |
1640 | int m = sliderR.width()/2; | 1644 | int m = sliderR.width()/2; |
1641 | painter.drawPixmap(sliderR.x(), sliderR.y()+1, | 1645 | painter.drawPixmap(sliderR.x(), sliderR.y()+1, |
1642 | *getPixmap(HSBSliderTop), 0, 0, m, 13); | 1646 | *getPixmap(HSBSliderTop), 0, 0, m, 13); |
1643 | painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, | 1647 | painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, |
1644 | *getPixmap(HSBSliderBtm), 8-m, 0, m, 13); | 1648 | *getPixmap(HSBSliderBtm), 8-m, 0, m, 13); |
1645 | } | 1649 | } |
1646 | else{ | 1650 | else{ |
1647 | painter.setPen(g.button().dark(210)); | 1651 | painter.setPen(g.button().dark(210)); |
1648 | drawRoundRect(&painter, sliderR.x(), sliderR.y()+1, | 1652 | drawRoundRect(&painter, sliderR.x(), sliderR.y()+1, |
1649 | sliderR.width(), 13); | 1653 | sliderR.width(), 13); |
1650 | painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+2, | 1654 | painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+2, |
1651 | sliderR.width()-2, 11, | 1655 | sliderR.width()-2, 11, |
1652 | *getPixmap(HSBSliderMid), 0, 1); | 1656 | *getPixmap(HSBSliderMid), 0, 1); |
1653 | } | 1657 | } |
1654 | } | 1658 | } |
1655 | painter.setPen(g.mid()); | 1659 | painter.setPen(g.mid()); |
1656 | painter.drawLine(bgR.x(), bgR.y(), bgR.right(), bgR.y()); | 1660 | painter.drawLine(bgR.x(), bgR.y(), bgR.right(), bgR.y()); |
1657 | painter.drawLine(bgR.x(), bgR.bottom(), bgR.right(), bgR.bottom()); | 1661 | painter.drawLine(bgR.x(), bgR.bottom(), bgR.right(), bgR.bottom()); |
1658 | if(brokenApp && (controls & Slider)){ | 1662 | if(brokenApp && (controls & Slider)){ |
1659 | painter.setPen(g.background()); | 1663 | painter.setPen(g.background()); |
1660 | painter.drawLine(bgR.x(), bgR.bottom()-1, bgR.right(), | 1664 | painter.drawLine(bgR.x(), bgR.bottom()-1, bgR.right(), |
1661 | bgR.bottom()-1); | 1665 | bgR.bottom()-1); |
1662 | } | 1666 | } |
1663 | painter.end(); | 1667 | painter.end(); |
1664 | } | 1668 | } |
1665 | 1669 | ||
1666 | if ( controls & AddLine ) { | 1670 | if ( controls & AddLine ) { |
1667 | drawSBButton(p, addB, g, activeControl == AddLine); | 1671 | drawSBButton(p, addB, g, activeControl == AddLine); |
1668 | drawArrow( p, horiz ? RightArrow : DownArrow, | 1672 | drawArrow( p, horiz ? RightArrow : DownArrow, |
1669 | false, addB.x()+4, addB.y()+4, | 1673 | false, addB.x()+4, addB.y()+4, |
1670 | addB.width()-8, addB.height()-8, g, !maxed); | 1674 | addB.width()-8, addB.height()-8, g, !maxed); |
1671 | } | 1675 | } |
1672 | if ( controls & SubLine ) { | 1676 | if ( controls & SubLine ) { |
1673 | // drawSBButton(p, subB, g, activeControl == SubLine); | 1677 | // drawSBButton(p, subB, g, activeControl == SubLine); |
1674 | // drawArrow( p, horiz ? LeftArrow : UpArrow, | 1678 | // drawArrow( p, horiz ? LeftArrow : UpArrow, |
1675 | // false, subB.x()+4, subB.y()+4, | 1679 | // false, subB.x()+4, subB.y()+4, |
1676 | // subB.width()-8, subB.height()-8, g, !maxed); | 1680 | // subB.width()-8, subB.height()-8, g, !maxed); |
1677 | drawSBButton(p, subHC, g, activeControl == SubLine); | 1681 | drawSBButton(p, subHC, g, activeControl == SubLine); |
1678 | drawArrow( p, horiz ? LeftArrow : UpArrow, | 1682 | drawArrow( p, horiz ? LeftArrow : UpArrow, |
1679 | false, subHC.x()+4, subHC.y()+4, | 1683 | false, subHC.x()+4, subHC.y()+4, |
1680 | subHC.width()-8, subHC.height()-8, g, !maxed); | 1684 | subHC.width()-8, subHC.height()-8, g, !maxed); |
1681 | } | 1685 | } |
1682 | 1686 | ||
1683 | if(controls & AddPage){ | 1687 | if(controls & AddPage){ |
1684 | if(addPageR.width()){ | 1688 | if(addPageR.width()){ |
1685 | p->drawPixmap(addPageR.x(), addPageR.y(), sbBuffer, | 1689 | p->drawPixmap(addPageR.x(), addPageR.y(), sbBuffer, |
1686 | addPageR.x(), addPageR.y(), addPageR.width(), | 1690 | addPageR.x(), addPageR.y(), addPageR.width(), |
1687 | addPageR.height()); | 1691 | addPageR.height()); |
1688 | } | 1692 | } |
1689 | } | 1693 | } |
1690 | if(controls & SubPage){ | 1694 | if(controls & SubPage){ |
1691 | if(subPageR.height()){ | 1695 | if(subPageR.height()){ |
1692 | p->drawPixmap(subPageR.x(), subPageR.y(), sbBuffer, | 1696 | p->drawPixmap(subPageR.x(), subPageR.y(), sbBuffer, |
1693 | subPageR.x(), subPageR.y(), subPageR.width(), | 1697 | subPageR.x(), subPageR.y(), subPageR.width(), |
1694 | subPageR.height()); | 1698 | subPageR.height()); |
1695 | } | 1699 | } |
1696 | } | 1700 | } |
1697 | if ( controls & Slider ) { | 1701 | if ( controls & Slider ) { |
1698 | p->drawPixmap(sliderR.x(), sliderR.y(), sbBuffer, | 1702 | p->drawPixmap(sliderR.x(), sliderR.y(), sbBuffer, |
1699 | sliderR.x(), sliderR.y(), sliderR.width(), | 1703 | sliderR.x(), sliderR.y(), sliderR.width(), |
1700 | sliderR.height()); | 1704 | sliderR.height()); |
1701 | } | 1705 | } |
1702 | } | 1706 | } |
1703 | 1707 | ||
1704 | void LiquidStyle::drawSBButton(QPainter *p, const QRect &r, const QColorGroup &g, | 1708 | void LiquidStyle::drawSBButton(QPainter *p, const QRect &r, const QColorGroup &g, |
1705 | bool down, bool /*fast*/) | 1709 | bool down, bool /*fast*/) |
1706 | { | 1710 | { |
1707 | p->setPen(g.mid()); | 1711 | p->setPen(g.mid()); |
1708 | p->drawRect(r); | 1712 | p->drawRect(r); |
1709 | QColor c(down ? g.button() : g.background()); | 1713 | QColor c(down ? g.button() : g.background()); |
1710 | QPixmap *pix = bevelFillDict.find(c.rgb()); | 1714 | QPixmap *pix = bevelFillDict.find(c.rgb()); |
1711 | if(!pix){ | 1715 | if(!pix){ |
1712 | int h, s, v; | 1716 | int h, s, v; |
1713 | c.hsv(&h, &s, &v); | 1717 | c.hsv(&h, &s, &v); |
1714 | pix = new QPixmap(*bevelFillPix); | 1718 | pix = new QPixmap(*bevelFillPix); |
1715 | adjustHSV(*pix, h, s, v); | 1719 | adjustHSV(*pix, h, s, v); |
1716 | bevelFillDict.insert(c.rgb(), pix); | 1720 | bevelFillDict.insert(c.rgb(), pix); |
1717 | } | 1721 | } |
1718 | p->drawTiledPixmap(r.x()+1, r.y()+1, r.width()-2, r.height()-2, *pix); | 1722 | p->drawTiledPixmap(r.x()+1, r.y()+1, r.width()-2, r.height()-2, *pix); |
1719 | 1723 | ||
1720 | } | 1724 | } |
1721 | 1725 | ||
1722 | void LiquidStyle::drawSBDeco(QPainter *p, const QRect &r, const QColorGroup &g, | 1726 | void LiquidStyle::drawSBDeco(QPainter *p, const QRect &r, const QColorGroup &g, |
1723 | bool horiz) | 1727 | bool horiz) |
1724 | { | 1728 | { |
1725 | if(horiz){ | 1729 | if(horiz){ |
1726 | if(r.width() >= 15){ | 1730 | if(r.width() >= 15){ |
1727 | int y = r.y()+3; | 1731 | int y = r.y()+3; |
1728 | int x = r.x() + (r.width()-7)/2; | 1732 | int x = r.x() + (r.width()-7)/2; |
1729 | int y2 = r.bottom()-3; | 1733 | int y2 = r.bottom()-3; |
1730 | p->setPen(g.light()); | 1734 | p->setPen(g.light()); |
1731 | p->drawLine(x, y, x, y2); | 1735 | p->drawLine(x, y, x, y2); |
1732 | p->drawLine(x+3, y, x+3, y2); | 1736 | p->drawLine(x+3, y, x+3, y2); |
1733 | p->drawLine(x+6, y, x+6, y2); | 1737 | p->drawLine(x+6, y, x+6, y2); |
1734 | 1738 | ||
1735 | p->setPen(g.mid()); | 1739 | p->setPen(g.mid()); |
1736 | p->drawLine(x+1, y, x+1, y2); | 1740 | p->drawLine(x+1, y, x+1, y2); |
1737 | p->drawLine(x+4, y, x+4, y2); | 1741 | p->drawLine(x+4, y, x+4, y2); |
1738 | p->drawLine(x+7, y, x+7, y2); | 1742 | p->drawLine(x+7, y, x+7, y2); |
1739 | } | 1743 | } |
1740 | } | 1744 | } |
1741 | else{ | 1745 | else{ |
1742 | if(r.height() >= 15){ | 1746 | if(r.height() >= 15){ |
1743 | int x = r.x()+3; | 1747 | int x = r.x()+3; |
1744 | int y = r.y() + (r.height()-7)/2; | 1748 | int y = r.y() + (r.height()-7)/2; |
1745 | int x2 = r.right()-3; | 1749 | int x2 = r.right()-3; |
1746 | p->setPen(g.light()); | 1750 | p->setPen(g.light()); |
1747 | p->drawLine(x, y, x2, y); | 1751 | p->drawLine(x, y, x2, y); |
1748 | p->drawLine(x, y+3, x2, y+3); | 1752 | p->drawLine(x, y+3, x2, y+3); |
1749 | p->drawLine(x, y+6, x2, y+6); | 1753 | p->drawLine(x, y+6, x2, y+6); |
1750 | 1754 | ||
1751 | p->setPen(g.mid()); | 1755 | p->setPen(g.mid()); |
1752 | p->drawLine(x, y+1, x2, y+1); | 1756 | p->drawLine(x, y+1, x2, y+1); |
1753 | p->drawLine(x, y+4, x2, y+4); | 1757 | p->drawLine(x, y+4, x2, y+4); |
1754 | p->drawLine(x, y+7, x2, y+7); | 1758 | p->drawLine(x, y+7, x2, y+7); |
1755 | } | 1759 | } |
1756 | } | 1760 | } |
1757 | 1761 | ||
1758 | } | 1762 | } |
1759 | 1763 | ||
1760 | 1764 | ||
1761 | void LiquidStyle::scrollBarMetrics(const QScrollBar *sb, int &sliderMin, | 1765 | void LiquidStyle::scrollBarMetrics(const QScrollBar *sb, int &sliderMin, |
1762 | int &sliderMax, int &sliderLength, | 1766 | int &sliderMax, int &sliderLength, |
1763 | int &buttonDim) | 1767 | int &buttonDim) |
1764 | { | 1768 | { |
1765 | 1769 | ||
1766 | int maxLength; | 1770 | int maxLength; |
1767 | int b = 0; | 1771 | int b = 0; |
1768 | bool horiz = sb->orientation() == QScrollBar::Horizontal; | 1772 | bool horiz = sb->orientation() == QScrollBar::Horizontal; |
1769 | int length = horiz ? sb->width() : sb->height(); | 1773 | int length = horiz ? sb->width() : sb->height(); |
1770 | int extent = horiz ? sb->height() : sb->width(); | 1774 | int extent = horiz ? sb->height() : sb->width(); |
1771 | 1775 | ||
1772 | if ( length > ( extent - b*2 - 1 )*2 + b*2 ) | 1776 | if ( length > ( extent - b*2 - 1 )*2 + b*2 ) |
1773 | buttonDim = extent - b*2; | 1777 | buttonDim = extent - b*2; |
1774 | else | 1778 | else |
1775 | buttonDim = ( length - b*2 )/2 - 1; | 1779 | buttonDim = ( length - b*2 )/2 - 1; |
1776 | 1780 | ||
1777 | sliderMin = b + 0; // buttonDim; | 1781 | sliderMin = b + 0; // buttonDim; |
1778 | maxLength = length - b*2 - buttonDim*2; // 3; | 1782 | maxLength = length - b*2 - buttonDim*2; // 3; |
1779 | 1783 | ||
1780 | if ( sb->maxValue() == sb->minValue() ) { | 1784 | if ( sb->maxValue() == sb->minValue() ) { |
1781 | sliderLength = maxLength; | 1785 | sliderLength = maxLength; |
1782 | } else { | 1786 | } else { |
1783 | sliderLength = (sb->pageStep()*maxLength)/ | 1787 | sliderLength = (sb->pageStep()*maxLength)/ |
1784 | (sb->maxValue()-sb->minValue()+sb->pageStep()); | 1788 | (sb->maxValue()-sb->minValue()+sb->pageStep()); |
1785 | uint range = sb->maxValue()-sb->minValue(); | 1789 | uint range = sb->maxValue()-sb->minValue(); |
1786 | if ( sliderLength < 9 || range > INT_MAX/2 ) | 1790 | if ( sliderLength < 9 || range > INT_MAX/2 ) |
1787 | sliderLength = 9; | 1791 | sliderLength = 9; |
1788 | if ( sliderLength > maxLength ) | 1792 | if ( sliderLength > maxLength ) |
1789 | sliderLength = maxLength; | 1793 | sliderLength = maxLength; |
1790 | } | 1794 | } |
1791 | sliderMax = sliderMin + maxLength - sliderLength; | 1795 | sliderMax = sliderMin + maxLength - sliderLength; |
1792 | 1796 | ||
1793 | } | 1797 | } |
1794 | 1798 | ||
1795 | QStyle::ScrollControl LiquidStyle::scrollBarPointOver(const QScrollBar *sb, | 1799 | QStyle::ScrollControl LiquidStyle::scrollBarPointOver(const QScrollBar *sb, |
1796 | int sliderStart, | 1800 | int sliderStart, |
1797 | const QPoint &p) | 1801 | const QPoint &p) |
1798 | { | 1802 | { |
1799 | if ( !sb->rect().contains( p ) ) | 1803 | if ( !sb->rect().contains( p ) ) |
1800 | return NoScroll; | 1804 | return NoScroll; |
1801 | int sliderMin, sliderMax, sliderLength, buttonDim, pos; | 1805 | int sliderMin, sliderMax, sliderLength, buttonDim, pos; |
1802 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 1806 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
1803 | pos = (sb->orientation() == QScrollBar::Horizontal)? p.x() : p.y(); | 1807 | pos = (sb->orientation() == QScrollBar::Horizontal)? p.x() : p.y(); |
1804 | if ( pos < sliderMin ) | 1808 | if ( pos < sliderMin ) |
1805 | return SubLine; | 1809 | return SubLine; |
1806 | if ( pos < sliderStart ) | 1810 | if ( pos < sliderStart ) |
1807 | return SubPage; | 1811 | return SubPage; |
1808 | if ( pos < sliderStart + sliderLength ) | 1812 | if ( pos < sliderStart + sliderLength ) |
1809 | return Slider; | 1813 | return Slider; |
1810 | if ( pos < sliderMax + sliderLength) | 1814 | if ( pos < sliderMax + sliderLength) |
1811 | return AddPage; | 1815 | return AddPage; |
1812 | if(pos > sliderMax + sliderLength + 16) | 1816 | if(pos > sliderMax + sliderLength + 16) |
1813 | return AddLine; | 1817 | return AddLine; |
1814 | 1818 | ||
1815 | return SubLine; | 1819 | return SubLine; |
1816 | } | 1820 | } |
1817 | 1821 | ||
1818 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) | 1822 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) |
1819 | 1823 | ||
1820 | 1824 | ||
1821 | QSize LiquidStyle::exclusiveIndicatorSize() const | 1825 | QSize LiquidStyle::exclusiveIndicatorSize() const |
1822 | { | 1826 | { |
1823 | return(QSize(16, 16)); | 1827 | return(QSize(16, 16)); |
1824 | } | 1828 | } |
1825 | 1829 | ||
1826 | void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, | 1830 | void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, |
1827 | int /*h*/, const QColorGroup &/*g*/, bool on, | 1831 | int /*h*/, const QColorGroup &/*g*/, bool on, |
1828 | bool down, bool) | 1832 | bool down, bool) |
1829 | { | 1833 | { |
1830 | bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); | 1834 | bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); |
1831 | bool isMasked = p->device() && p->device()->devType() == QInternal::Widget | 1835 | bool isMasked = p->device() && p->device()->devType() == QInternal::Widget |
1832 | && ((QWidget*)p->device())->autoMask(); | 1836 | && ((QWidget*)p->device())->autoMask(); |
1833 | 1837 | ||
1834 | if(isMasked){ | 1838 | if(isMasked){ |
1835 | if(on || down){ | 1839 | if(on || down){ |
1836 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioDownHover) : | 1840 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioDownHover) : |
1837 | *getPixmap(HTMLRadioDown)); | 1841 | *getPixmap(HTMLRadioDown)); |
1838 | } | 1842 | } |
1839 | else | 1843 | else |
1840 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioHover) : | 1844 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioHover) : |
1841 | *getPixmap(HTMLRadio)); | 1845 | *getPixmap(HTMLRadio)); |
1842 | 1846 | ||
1843 | } | 1847 | } |
1844 | else{ | 1848 | else{ |
1845 | if(on || down){ | 1849 | if(on || down){ |
1846 | p->drawPixmap(x, y, isActive ? *getPixmap(RadioOnHover) : | 1850 | p->drawPixmap(x, y, isActive ? *getPixmap(RadioOnHover) : |
1847 | *getPixmap(RadioOn)); | 1851 | *getPixmap(RadioOn)); |
1848 | } | 1852 | } |
1849 | else | 1853 | else |
1850 | p->drawPixmap(x, y, isActive ? *getPixmap(RadioOffHover) : | 1854 | p->drawPixmap(x, y, isActive ? *getPixmap(RadioOffHover) : |
1851 | *getPixmap(RadioOff)); | 1855 | *getPixmap(RadioOff)); |
1852 | } | 1856 | } |
1853 | } | 1857 | } |
1854 | 1858 | ||
1855 | void LiquidStyle::drawExclusiveIndicatorMask(QPainter *p, int x, int y, int w, | 1859 | void LiquidStyle::drawExclusiveIndicatorMask(QPainter *p, int x, int y, int w, |
1856 | int h, bool) | 1860 | int h, bool) |
1857 | { | 1861 | { |
1858 | p->fillRect(x, y, w, h, Qt::color0); | 1862 | p->fillRect(x, y, w, h, Qt::color0); |
1859 | p->setPen(Qt::color1); | 1863 | p->setPen(Qt::color1); |
1860 | p->drawPixmap(x, y, *getPixmap(RadioOn)->mask()); | 1864 | p->drawPixmap(x, y, *getPixmap(RadioOn)->mask()); |
1861 | } | 1865 | } |
1862 | 1866 | ||
1863 | 1867 | ||
1864 | QSize LiquidStyle::indicatorSize() const | 1868 | QSize LiquidStyle::indicatorSize() const |
1865 | { | 1869 | { |
1866 | return(QSize(20, 22)); | 1870 | return(QSize(20, 22)); |
1867 | } | 1871 | } |
1868 | 1872 | ||
1869 | void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, | 1873 | void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, |
1870 | const QColorGroup &/*g*/, int state, bool /*down*/, bool) | 1874 | const QColorGroup &/*g*/, int state, bool /*down*/, bool) |
1871 | { | 1875 | { |
1872 | bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); | 1876 | bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); |
1873 | bool isMasked = p->device() && p->device()->devType() == QInternal::Widget | 1877 | bool isMasked = p->device() && p->device()->devType() == QInternal::Widget |
1874 | && ((QWidget*)p->device())->autoMask(); | 1878 | && ((QWidget*)p->device())->autoMask(); |
1875 | if(isMasked){ | 1879 | if(isMasked){ |
1876 | if(state != QButton::Off){ | 1880 | if(state != QButton::Off){ |
1877 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBDownHover) : | 1881 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBDownHover) : |
1878 | *getPixmap(HTMLCBDown)); | 1882 | *getPixmap(HTMLCBDown)); |
1879 | } | 1883 | } |
1880 | else | 1884 | else |
1881 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBHover) : | 1885 | p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBHover) : |
1882 | *getPixmap(HTMLCB)); | 1886 | *getPixmap(HTMLCB)); |
1883 | 1887 | ||
1884 | } | 1888 | } |
1885 | else{ | 1889 | else{ |
1886 | if(state != QButton::Off){ | 1890 | if(state != QButton::Off){ |
1887 | p->drawPixmap(x, y, isActive ? *getPixmap(CBDownHover) : | 1891 | p->drawPixmap(x, y, isActive ? *getPixmap(CBDownHover) : |
1888 | *getPixmap(CBDown)); | 1892 | *getPixmap(CBDown)); |
1889 | /* Todo - tristate | 1893 | /* Todo - tristate |
1890 | if(state == QButton::On){ | 1894 | if(state == QButton::On){ |
1891 | p->setPen(Qt::black); | 1895 | p->setPen(Qt::black); |
1892 | p->drawPixmap(3, 3, xBmp); | 1896 | p->drawPixmap(3, 3, xBmp); |
1893 | } | 1897 | } |
1894 | else{ | 1898 | else{ |
1895 | p->setPen(g.dark()); | 1899 | p->setPen(g.dark()); |
1896 | p->drawRect(x+2, y+2, w-4, h-4); | 1900 | p->drawRect(x+2, y+2, w-4, h-4); |
1897 | p->setPen(Qt::black); | 1901 | p->setPen(Qt::black); |
1898 | p->drawLine(x+3, (y+h)/2-2, x+w-4, (y+h)/2-2); | 1902 | p->drawLine(x+3, (y+h)/2-2, x+w-4, (y+h)/2-2); |
1899 | p->drawLine(x+3, (y+h)/2, x+w-4, (y+h)/2); | 1903 | p->drawLine(x+3, (y+h)/2, x+w-4, (y+h)/2); |
1900 | p->drawLine(x+3, (y+h)/2+2, x+w-4, (y+h)/2+2); | 1904 | p->drawLine(x+3, (y+h)/2+2, x+w-4, (y+h)/2+2); |
1901 | }*/ | 1905 | }*/ |
1902 | } | 1906 | } |
1903 | else | 1907 | else |
1904 | p->drawPixmap(x, y, isActive ? *getPixmap(CBHover) : *getPixmap(CB)); | 1908 | p->drawPixmap(x, y, isActive ? *getPixmap(CBHover) : *getPixmap(CB)); |
1905 | } | 1909 | } |
1906 | } | 1910 | } |
1907 | 1911 | ||
1908 | void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, | 1912 | void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, |
1909 | int /*state*/) | 1913 | int /*state*/) |
1910 | { | 1914 | { |
1911 | // needed for some reason by KHtml, even tho it's all filled ;P | 1915 | // needed for some reason by KHtml, even tho it's all filled ;P |
1912 | p->drawPixmap(x, y, *getPixmap(HTMLCB)->mask()); | 1916 | p->drawPixmap(x, y, *getPixmap(HTMLCB)->mask()); |
1913 | 1917 | ||
1914 | } | 1918 | } |
1915 | 1919 | ||
1916 | void LiquidStyle::drawSlider(QPainter *p, int x, int y, int w, int h, | 1920 | void LiquidStyle::drawSlider(QPainter *p, int x, int y, int w, int h, |
1917 | const QColorGroup &/*g*/, Orientation orient, | 1921 | const QColorGroup &/*g*/, Orientation orient, |
1918 | bool, bool) | 1922 | bool, bool) |
1919 | { | 1923 | { |
1920 | QWidget *parent = (QWidget *)p->device(); | 1924 | QWidget *parent = (QWidget *)p->device(); |
1921 | p->setBrushOrigin(parent->pos()); | 1925 | p->setBrushOrigin(parent->pos()); |
1922 | parent->erase(x, y, w, h); | 1926 | parent->erase(x, y, w, h); |
1923 | p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider) : | 1927 | p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider) : |
1924 | *getPixmap(VSlider)); | 1928 | *getPixmap(VSlider)); |
1925 | } | 1929 | } |
1926 | 1930 | ||
1927 | void LiquidStyle::drawSliderMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, | 1931 | void LiquidStyle::drawSliderMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, |
1928 | Orientation orient, bool, bool) | 1932 | Orientation orient, bool, bool) |
1929 | { | 1933 | { |
1930 | p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider)->mask() : | 1934 | p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider)->mask() : |
1931 | *getPixmap(VSlider)->mask()); | 1935 | *getPixmap(VSlider)->mask()); |
1932 | } | 1936 | } |
1933 | 1937 | ||
1934 | int LiquidStyle::sliderLength() const | 1938 | int LiquidStyle::sliderLength() const |
1935 | { | 1939 | { |
1936 | return(10); | 1940 | return(10); |
1937 | } | 1941 | } |
1938 | 1942 | ||
1939 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) | 1943 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) |
1940 | 1944 | ||
1941 | void LiquidStyle::drawArrow(QPainter *p, Qt::ArrowType type, bool on, int x, | 1945 | void LiquidStyle::drawArrow(QPainter *p, Qt::ArrowType type, bool on, int x, |
1942 | int y, int w, int h, const QColorGroup &g, | 1946 | int y, int w, int h, const QColorGroup &g, |
1943 | bool enabled, const QBrush *) | 1947 | bool enabled, const QBrush *) |
1944 | { | 1948 | { |
1945 | static const QCOORD u_arrow[]={3,1, 4,1, 2,2, 5,2, 1,3, 6,3, 0,4, 7,4, 0,5, 7,5}; | 1949 | static const QCOORD u_arrow[]={3,1, 4,1, 2,2, 5,2, 1,3, 6,3, 0,4, 7,4, 0,5, 7,5}; |
1946 | static const QCOORD d_arrow[]={0,2, 7,2, 0,3, 7,3, 1,4, 6,4, 2,5, 5,5, 3,6, 4,6}; | 1950 | static const QCOORD d_arrow[]={0,2, 7,2, 0,3, 7,3, 1,4, 6,4, 2,5, 5,5, 3,6, 4,6}; |
1947 | static const QCOORD l_arrow[]={1,3, 1,4, 2,2, 2,5, 3,1, 3,6, 4,0, 4,7, 5,0, 5,7}; | 1951 | static const QCOORD l_arrow[]={1,3, 1,4, 2,2, 2,5, 3,1, 3,6, 4,0, 4,7, 5,0, 5,7}; |
1948 | static const QCOORD r_arrow[]={2,0, 2,7, 3,0, 3,7, 4,1, 4,6, 5,2, 5,5, 6,3, 6,4}; | 1952 | static const QCOORD r_arrow[]={2,0, 2,7, 3,0, 3,7, 4,1, 4,6, 5,2, 5,5, 6,3, 6,4}; |
1949 | 1953 | ||
1950 | p->setPen(enabled ? on ? g.light() : g.buttonText() : g.mid()); | 1954 | p->setPen(enabled ? on ? g.light() : g.buttonText() : g.mid()); |
1951 | if(w > 8){ | 1955 | if(w > 8){ |
1952 | x = x + (w-8)/2; | 1956 | x = x + (w-8)/2; |
1953 | y = y + (h-8)/2; | 1957 | y = y + (h-8)/2; |
1954 | } | 1958 | } |
1955 | 1959 | ||
1956 | QPointArray a; | 1960 | QPointArray a; |
1957 | switch(type){ | 1961 | switch(type){ |
1958 | case Qt::UpArrow: | 1962 | case Qt::UpArrow: |
1959 | a.setPoints(QCOORDARRLEN(u_arrow), u_arrow); | 1963 | a.setPoints(QCOORDARRLEN(u_arrow), u_arrow); |
1960 | break; | 1964 | break; |
1961 | case Qt::DownArrow: | 1965 | case Qt::DownArrow: |
1962 | a.setPoints(QCOORDARRLEN(d_arrow), d_arrow); | 1966 | a.setPoints(QCOORDARRLEN(d_arrow), d_arrow); |
1963 | break; | 1967 | break; |
1964 | case Qt::LeftArrow: | 1968 | case Qt::LeftArrow: |
1965 | a.setPoints(QCOORDARRLEN(l_arrow), l_arrow); | 1969 | a.setPoints(QCOORDARRLEN(l_arrow), l_arrow); |
1966 | break; | 1970 | break; |
1967 | default: | 1971 | default: |
1968 | a.setPoints(QCOORDARRLEN(r_arrow), r_arrow); | 1972 | a.setPoints(QCOORDARRLEN(r_arrow), r_arrow); |
1969 | break; | 1973 | break; |
1970 | } | 1974 | } |
1971 | 1975 | ||
1972 | a.translate(x, y); | 1976 | a.translate(x, y); |
1973 | p->drawLineSegments(a); | 1977 | p->drawLineSegments(a); |
1974 | } | 1978 | } |
1975 | 1979 | ||
1976 | 1980 | ||
1977 | void LiquidStyle::drawMenuBarItem(QPainter *p, int x, int y, int w, int h, | 1981 | void LiquidStyle::drawMenuBarItem(QPainter *p, int x, int y, int w, int h, |
1978 | QMenuItem *mi, QColorGroup &g, bool /*enabled*/, bool active ) | 1982 | QMenuItem *mi, QColorGroup &g, bool /*enabled*/, bool active ) |
1979 | { | 1983 | { |
1980 | if(active){ | 1984 | if(active){ |
1981 | x -= 2; // Bug in Qt/E | 1985 | x -= 2; // Bug in Qt/E |
1982 | y -= 2; | 1986 | y -= 2; |
1983 | w += 2; | 1987 | w += 2; |
1984 | h += 2; | 1988 | h += 2; |
1985 | } | 1989 | } |
1986 | 1990 | ||
1987 | QWidget *parent = (QWidget *)p->device(); | 1991 | QWidget *parent = (QWidget *)p->device(); |
1988 | p->setBrushOrigin(parent->pos()); | 1992 | p->setBrushOrigin(parent->pos()); |
1989 | parent->erase(x, y, w, h); | 1993 | parent->erase(x, y, w, h); |
1990 | 1994 | ||
1991 | if(menuHandler->useShadowText()){ | 1995 | if(menuHandler->useShadowText()){ |
1992 | QColor shadow; | 1996 | QColor shadow; |
1993 | if(p->device() && p->device()->devType() == QInternal::Widget && | 1997 | if(p->device() && p->device()->devType() == QInternal::Widget && |
1994 | ((QWidget *)p->device())->inherits("QMenuBar")){ | 1998 | ((QWidget *)p->device())->inherits("QMenuBar")){ |
1995 | shadow = ((QMenuBar*)p->device())->isTopLevel() ? g.button().dark(130) : | 1999 | shadow = ((QMenuBar*)p->device())->isTopLevel() ? g.button().dark(130) : |
1996 | g.background().dark(130); | 2000 | g.background().dark(130); |
1997 | } | 2001 | } |
1998 | else | 2002 | else |
1999 | shadow = g.background().dark(130); | 2003 | shadow = g.background().dark(130); |
2000 | 2004 | ||
2001 | QPixmap *dummy = 0; | 2005 | QPixmap *dummy = 0; |
2002 | 2006 | ||
2003 | if ( mi-> pixmap ( ) && !mi-> pixmap ( )-> isNull ( )) { | 2007 | if ( mi-> pixmap ( ) && !mi-> pixmap ( )-> isNull ( )) { |
2004 | dummy = new QPixmap ( mi-> pixmap ( )-> size ( )); | 2008 | dummy = new QPixmap ( mi-> pixmap ( )-> size ( )); |
2005 | QBitmap dummy_mask ( dummy-> size ( )); | 2009 | QBitmap dummy_mask ( dummy-> size ( )); |
2006 | dummy_mask. fill ( color1 ); | 2010 | dummy_mask. fill ( color1 ); |
2007 | dummy-> setMask ( dummy_mask ); | 2011 | dummy-> setMask ( dummy_mask ); |
2008 | } | 2012 | } |
2009 | 2013 | ||
2010 | if(active){ | 2014 | if(active){ |
2011 | drawClearBevel(p, x+1, y+1, w-1, h-1, g.button(), g.background()); | 2015 | drawClearBevel(p, x+1, y+1, w-1, h-1, g.button(), g.background()); |
2012 | QApplication::style().drawItem(p, x+1, y+1, w, h, | 2016 | QApplication::style().drawItem(p, x+1, y+1, w, h, |
2013 | AlignCenter|ShowPrefix|DontClip|SingleLine, | 2017 | AlignCenter|ShowPrefix|DontClip|SingleLine, |
2014 | g, mi->isEnabled(), dummy, mi->text(), | 2018 | g, mi->isEnabled(), dummy, mi->text(), |
2015 | -1, &shadow); | 2019 | -1, &shadow); |
2016 | QApplication::style().drawItem(p, x, y, w, h, | 2020 | QApplication::style().drawItem(p, x, y, w, h, |
2017 | AlignCenter|ShowPrefix|DontClip|SingleLine, | 2021 | AlignCenter|ShowPrefix|DontClip|SingleLine, |
2018 | g, mi->isEnabled(), mi-> pixmap ( ), mi->text(), | 2022 | g, mi->isEnabled(), mi-> pixmap ( ), mi->text(), |
2019 | -1, &g.text()); | 2023 | -1, &g.text()); |
2020 | } | 2024 | } |
2021 | else{ | 2025 | else{ |
2022 | QApplication::style().drawItem(p, x+1, y+1, w, h, | 2026 | QApplication::style().drawItem(p, x+1, y+1, w, h, |
2023 | AlignCenter|ShowPrefix|DontClip|SingleLine, | 2027 | AlignCenter|ShowPrefix|DontClip|SingleLine, |
2024 | g, mi->isEnabled(), dummy, mi->text(), | 2028 | g, mi->isEnabled(), dummy, mi->text(), |
2025 | -1, &shadow); | 2029 | -1, &shadow); |
2026 | QApplication::style().drawItem(p, x, y, w, h, | 2030 | QApplication::style().drawItem(p, x, y, w, h, |
2027 | AlignCenter|ShowPrefix|DontClip|SingleLine, | 2031 | AlignCenter|ShowPrefix|DontClip|SingleLine, |
2028 | g, mi->isEnabled(), mi-> pixmap ( ), mi->text(), | 2032 | g, mi->isEnabled(), mi-> pixmap ( ), mi->text(), |
2029 | -1, &g.text()); | 2033 | -1, &g.text()); |
2030 | } | 2034 | } |
2031 | delete dummy; | 2035 | delete dummy; |
2032 | } | 2036 | } |
2033 | else{ | 2037 | else{ |
2034 | if(active) | 2038 | if(active) |
2035 | drawClearBevel(p, x+1, y+1, w-1, h-1, g.button(), g.background()); | 2039 | drawClearBevel(p, x+1, y+1, w-1, h-1, g.button(), g.background()); |
2036 | QApplication::style().drawItem(p, x, y, w, h, | 2040 | QApplication::style().drawItem(p, x, y, w, h, |
2037 | AlignCenter|ShowPrefix|DontClip|SingleLine, | 2041 | AlignCenter|ShowPrefix|DontClip|SingleLine, |
2038 | g, mi->isEnabled(), mi-> pixmap ( ), mi->text(), | 2042 | g, mi->isEnabled(), mi-> pixmap ( ), mi->text(), |
2039 | -1, &g.text()); | 2043 | -1, &g.text()); |
2040 | } | 2044 | } |
2041 | } | 2045 | } |
2042 | 2046 | ||
2043 | void LiquidStyle::drawPopupPanel(QPainter *p, int x, int y, int w, int h, | 2047 | void LiquidStyle::drawPopupPanel(QPainter *p, int x, int y, int w, int h, |
2044 | const QColorGroup &g, int /*lineWidth*/, | 2048 | const QColorGroup &g, int /*lineWidth*/, |
2045 | const QBrush * /*fill*/) | 2049 | const QBrush * /*fill*/) |
2046 | { | 2050 | { |
2047 | QColor c; | 2051 | QColor c; |
2048 | switch(menuHandler->transType()){ | 2052 | switch(menuHandler->transType()){ |
2049 | case None: | 2053 | case None: |
2050 | case StippledBg: | 2054 | case StippledBg: |
2051 | case TransStippleBg: | 2055 | case TransStippleBg: |
2052 | c = g.background(); | 2056 | c = g.background(); |
2053 | break; | 2057 | break; |
2054 | case StippledBtn: | 2058 | case StippledBtn: |
2055 | case TransStippleBtn: | 2059 | case TransStippleBtn: |
2056 | c = g.button(); | 2060 | c = g.button(); |
2057 | break; | 2061 | break; |
2058 | default: | 2062 | default: |
2059 | c = menuHandler->bgColor(); | 2063 | c = menuHandler->bgColor(); |
2060 | } | 2064 | } |
2061 | p->setPen(c.dark(140)); | 2065 | p->setPen(c.dark(140)); |
2062 | p->drawRect(x, y, w, h); | 2066 | p->drawRect(x, y, w, h); |
2063 | p->setPen(c.light(120)); | 2067 | p->setPen(c.light(120)); |
2064 | p->drawRect(x+1, y+1, w-2, h-2); | 2068 | p->drawRect(x+1, y+1, w-2, h-2); |
2065 | } | 2069 | } |
2066 | 2070 | ||
2067 | void LiquidStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, | 2071 | void LiquidStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, |
2068 | int tab, QMenuItem* mi, | 2072 | int tab, QMenuItem* mi, |
2069 | const QPalette& pal, bool act, | 2073 | const QPalette& pal, bool act, |
2070 | bool enabled, int x, int y, int w, int h) | 2074 | bool enabled, int x, int y, int w, int h) |
2071 | { | 2075 | { |
2072 | static const int motifItemFrame = 2; | 2076 | static const int motifItemFrame = 2; |
2073 | static const int motifItemHMargin = 3; | 2077 | static const int motifItemHMargin = 3; |
2074 | static const int motifItemVMargin = 2; | 2078 | static const int motifItemVMargin = 2; |
2075 | static const int motifArrowHMargin = 6; | 2079 | static const int motifArrowHMargin = 6; |
2076 | static const int windowsRightBorder = 12; | 2080 | static const int windowsRightBorder = 12; |
2077 | 2081 | ||
2078 | maxpmw = QMAX( maxpmw, 20 ); | 2082 | maxpmw = QMAX( maxpmw, 20 ); |
2079 | 2083 | ||
2080 | 2084 | ||
2081 | bool dis = !enabled; | 2085 | bool dis = !enabled; |
2082 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); | 2086 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); |
2083 | 2087 | ||
2084 | int checkcol = maxpmw; | 2088 | int checkcol = maxpmw; |
2085 | if(act){ | 2089 | if(act){ |
2086 | 2090 | ||
2087 | // FIXME | 2091 | // FIXME |
2088 | drawClearBevel(p, x, y, w, h, itemg.button(), itemg.background()); | 2092 | drawClearBevel(p, x, y, w, h, itemg.button(), itemg.background()); |
2089 | } | 2093 | } |
2090 | //else if(((QWidget*)p->device())->backgroundPixmap()){ | 2094 | //else if(((QWidget*)p->device())->backgroundPixmap()){ |
2091 | // p->drawPixmap(x, y, *((QWidget*)p->device())->backgroundPixmap(), | 2095 | // p->drawPixmap(x, y, *((QWidget*)p->device())->backgroundPixmap(), |
2092 | // x, y, w, h); | 2096 | // x, y, w, h); |
2093 | //} | 2097 | //} |
2094 | else{ | 2098 | else{ |
2095 | if(menuHandler->transType() == None){ | 2099 | if(menuHandler->transType() == None){ |
2096 | p->fillRect(x, y, w, h, pal.active().background()); | 2100 | p->fillRect(x, y, w, h, pal.active().background()); |
2097 | } | 2101 | } |
2098 | else if(menuHandler->transType() == StippledBg){ | 2102 | else if(menuHandler->transType() == StippledBg){ |
2099 | p->fillRect(x, y, w, h, bgBrush); | 2103 | p->fillRect(x, y, w, h, bgBrush); |
2100 | } | 2104 | } |
2101 | else if(menuHandler->transType() == StippledBtn){ | 2105 | else if(menuHandler->transType() == StippledBtn){ |
2102 | p->fillRect(x, y, w, h, menuBrush); | 2106 | p->fillRect(x, y, w, h, menuBrush); |
2103 | } | 2107 | } |
2104 | else{ | 2108 | else{ |
2105 | QPixmap *pix = menuHandler->pixmap(((QWidget*)p->device())->winId()); | 2109 | QPixmap *pix = menuHandler->pixmap(((QWidget*)p->device())->winId()); |
2106 | if(pix) | 2110 | if(pix) |
2107 | p->drawPixmap(x, y, *pix, x, y, w, h); | 2111 | p->drawPixmap(x, y, *pix, x, y, w, h); |
2108 | } | 2112 | } |
2109 | } | 2113 | } |
2110 | 2114 | ||
2111 | if(!mi) | 2115 | if(!mi) |
2112 | return; | 2116 | return; |
2113 | 2117 | ||
2114 | QColor discol; | 2118 | QColor discol; |
2115 | if (dis) { | 2119 | if (dis) { |
2116 | discol = itemg.mid(); | 2120 | discol = itemg.mid(); |
2117 | p->setPen(discol); | 2121 | p->setPen(discol); |
2118 | } | 2122 | } |
2119 | 2123 | ||
2120 | QColorGroup cg2(itemg); | 2124 | QColorGroup cg2(itemg); |
2121 | 2125 | ||
2122 | if(menuHandler->transType() == Custom){ | 2126 | if(menuHandler->transType() == Custom){ |
2123 | cg2.setColor(QColorGroup::Foreground, menuHandler->textColor()); | 2127 | cg2.setColor(QColorGroup::Foreground, menuHandler->textColor()); |
2124 | cg2.setColor(QColorGroup::Text, menuHandler->textColor()); | 2128 | cg2.setColor(QColorGroup::Text, menuHandler->textColor()); |
2125 | cg2.setColor(QColorGroup::Light, menuHandler->textColor().light(120)); | 2129 | cg2.setColor(QColorGroup::Light, menuHandler->textColor().light(120)); |
2126 | cg2.setColor(QColorGroup::Mid, menuHandler->textColor().dark(120)); | 2130 | cg2.setColor(QColorGroup::Mid, menuHandler->textColor().dark(120)); |
2127 | } | 2131 | } |
2128 | else{ | 2132 | else{ |
2129 | cg2 = QColorGroup(discol, itemg.highlight(), black, black, | 2133 | cg2 = QColorGroup(discol, itemg.highlight(), black, black, |
2130 | dis ? discol : black, discol, black); | 2134 | dis ? discol : black, discol, black); |
2131 | } | 2135 | } |
2132 | 2136 | ||
2133 | if(mi->isSeparator()){ | 2137 | if(mi->isSeparator()){ |
2134 | QColor c; | 2138 | QColor c; |
2135 | switch(menuHandler->transType()){ | 2139 | switch(menuHandler->transType()){ |
2136 | case None: | 2140 | case None: |
2137 | case StippledBg: | 2141 | case StippledBg: |
2138 | case TransStippleBg: | 2142 | case TransStippleBg: |
2139 | c = QApplication::palette().active().background(); | 2143 | c = QApplication::palette().active().background(); |
2140 | break; | 2144 | break; |
2141 | case StippledBtn: | 2145 | case StippledBtn: |
2142 | case TransStippleBtn: | 2146 | case TransStippleBtn: |
2143 | c = QApplication::palette().active().button(); | 2147 | c = QApplication::palette().active().button(); |
2144 | break; | 2148 | break; |
2145 | default: | 2149 | default: |
2146 | c = menuHandler->bgColor(); | 2150 | c = menuHandler->bgColor(); |
2147 | } | 2151 | } |
2148 | p->setPen(c.dark(140)); | 2152 | p->setPen(c.dark(140)); |
2149 | p->drawLine(x, y, x+w, y ); | 2153 | p->drawLine(x, y, x+w, y ); |
2150 | p->setPen(c.light(115)); | 2154 | p->setPen(c.light(115)); |
2151 | p->drawLine(x, y+1, x+w, y+1 ); | 2155 | p->drawLine(x, y+1, x+w, y+1 ); |
2152 | return; | 2156 | return; |
2153 | } | 2157 | } |
2154 | if(mi->iconSet()) { | 2158 | if(mi->iconSet()) { |
2155 | QIconSet::Mode mode = dis? QIconSet::Disabled : QIconSet::Normal; | 2159 | QIconSet::Mode mode = dis? QIconSet::Disabled : QIconSet::Normal; |
2156 | if (!dis) | 2160 | if (!dis) |
2157 | mode = QIconSet::Active; | 2161 | mode = QIconSet::Active; |
2158 | QPixmap pixmap = mi->iconSet()->pixmap(QIconSet::Small, mode); | 2162 | QPixmap pixmap; |
2163 | if ( mode == QIconSet::Disabled ) | ||
2164 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
2165 | else | ||
2166 | pixmap = mi->iconSet()->pixmap(); | ||
2159 | int pixw = pixmap.width(); | 2167 | int pixw = pixmap.width(); |
2160 | int pixh = pixmap.height(); | 2168 | int pixh = pixmap.height(); |
2161 | QRect cr(x, y, checkcol, h); | 2169 | QRect cr(x, y, checkcol, h); |
2162 | QRect pmr(0, 0, pixw, pixh); | 2170 | QRect pmr(0, 0, pixw, pixh); |
2163 | pmr.moveCenter( cr.center() ); | 2171 | pmr.moveCenter( cr.center() ); |
2164 | p->setPen(itemg.highlightedText()); | 2172 | p->setPen(itemg.highlightedText()); |
2165 | p->drawPixmap(pmr.topLeft(), pixmap ); | 2173 | p->drawPixmap(pmr.topLeft(), pixmap ); |
2166 | 2174 | ||
2167 | } | 2175 | } |
2168 | else if(checkable) { | 2176 | else if(checkable) { |
2169 | int mw = checkcol + motifItemFrame; | 2177 | int mw = checkcol + motifItemFrame; |
2170 | int mh = h - 2*motifItemFrame; | 2178 | int mh = h - 2*motifItemFrame; |
2171 | if (mi->isChecked()){ | 2179 | if (mi->isChecked()){ |
2172 | drawCheckMark( p, x + motifItemFrame, | 2180 | drawCheckMark( p, x + motifItemFrame, |
2173 | y+motifItemFrame, mw, mh, cg2, act, dis ); | 2181 | y+motifItemFrame, mw, mh, cg2, act, dis ); |
2174 | } | 2182 | } |
2175 | } | 2183 | } |
2176 | if(menuHandler->transType() == Custom) | 2184 | if(menuHandler->transType() == Custom) |
2177 | p->setPen(menuHandler->textColor()); | 2185 | p->setPen(menuHandler->textColor()); |
2178 | else | 2186 | else |
2179 | p->setPen(itemg.text()); | 2187 | p->setPen(itemg.text()); |
2180 | 2188 | ||
2181 | 2189 | ||
2182 | int xm = motifItemFrame + checkcol + motifItemHMargin; | 2190 | int xm = motifItemFrame + checkcol + motifItemHMargin; |
2183 | QString s = mi->text(); | 2191 | QString s = mi->text(); |
2184 | if (!s.isNull()) { | 2192 | if (!s.isNull()) { |
2185 | int t = s.find( '\t' ); | 2193 | int t = s.find( '\t' ); |
2186 | int m = motifItemVMargin; | 2194 | int m = motifItemVMargin; |
2187 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; | 2195 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; |
2188 | QPen oldPen = p->pen(); | 2196 | QPen oldPen = p->pen(); |
2189 | if(menuHandler->useShadowText()){ | 2197 | if(menuHandler->useShadowText()){ |
2190 | if(menuHandler->transType() == Custom) | 2198 | if(menuHandler->transType() == Custom) |
2191 | p->setPen(menuHandler->bgColor().dark(130)); | 2199 | p->setPen(menuHandler->bgColor().dark(130)); |
2192 | else if(menuHandler->transType() == StippledBtn || | 2200 | else if(menuHandler->transType() == StippledBtn || |
2193 | menuHandler->transType() == TransStippleBtn) | 2201 | menuHandler->transType() == TransStippleBtn) |
2194 | p->setPen(itemg.button().dark(130)); | 2202 | p->setPen(itemg.button().dark(130)); |
2195 | else | 2203 | else |
2196 | p->setPen(bgBrush.color().dark(130)); | 2204 | p->setPen(bgBrush.color().dark(130)); |
2197 | 2205 | ||
2198 | if (t >= 0) { | 2206 | if (t >= 0) { |
2199 | p->drawText(x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+2, | 2207 | p->drawText(x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+2, |
2200 | y+m+2, tab-1, h-2*m-1, text_flags, s.mid( t+1 )); | 2208 | y+m+2, tab-1, h-2*m-1, text_flags, s.mid( t+1 )); |
2201 | } | 2209 | } |
2202 | p->drawText(x+xm+1, y+m+1, w-xm-tab, h-2*m-1, text_flags, s, t); | 2210 | p->drawText(x+xm+1, y+m+1, w-xm-tab, h-2*m-1, text_flags, s, t); |
2203 | } | 2211 | } |
2204 | p->setPen(oldPen); | 2212 | p->setPen(oldPen); |
2205 | if (t >= 0) { | 2213 | if (t >= 0) { |
2206 | p->drawText(x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, | 2214 | p->drawText(x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, |
2207 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); | 2215 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); |
2208 | } | 2216 | } |
2209 | p->drawText(x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t); | 2217 | p->drawText(x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t); |
2210 | 2218 | ||
2211 | } | 2219 | } |
2212 | else if (mi->pixmap()) { | 2220 | else if (mi->pixmap()) { |
2213 | QPixmap *pixmap = mi->pixmap(); | 2221 | QPixmap *pixmap = mi->pixmap(); |
2214 | if (pixmap->depth() == 1) | 2222 | if (pixmap->depth() == 1) |
2215 | p->setBackgroundMode(OpaqueMode); | 2223 | p->setBackgroundMode(OpaqueMode); |
2216 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap); | 2224 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap); |
2217 | if (pixmap->depth() == 1) | 2225 | if (pixmap->depth() == 1) |
2218 | p->setBackgroundMode(TransparentMode); | 2226 | p->setBackgroundMode(TransparentMode); |
2219 | } | 2227 | } |
2220 | if (mi->popup()) { | 2228 | if (mi->popup()) { |
2221 | int dim = (h-2*motifItemFrame) / 2; | 2229 | int dim = (h-2*motifItemFrame) / 2; |
2222 | drawArrow(p, RightArrow, true, | 2230 | drawArrow(p, RightArrow, true, |
2223 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 2231 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
2224 | dim, dim, cg2, TRUE); | 2232 | dim, dim, cg2, TRUE); |
2225 | } | 2233 | } |
2226 | } | 2234 | } |
2227 | 2235 | ||
2228 | int LiquidStyle::popupMenuItemHeight(bool /*checkable*/, QMenuItem *mi, | 2236 | int LiquidStyle::popupMenuItemHeight(bool /*checkable*/, QMenuItem *mi, |
2229 | const QFontMetrics &fm) | 2237 | const QFontMetrics &fm) |
2230 | { | 2238 | { |
2231 | if (mi->isSeparator()) | 2239 | if (mi->isSeparator()) |
2232 | return 2; | 2240 | return 2; |
2233 | 2241 | ||
2234 | int h = 0; | 2242 | int h = 0; |
2235 | if (mi->pixmap()) | 2243 | if (mi->pixmap()) |
2236 | h = mi->pixmap()->height(); | 2244 | h = mi->pixmap()->height(); |
2237 | 2245 | ||
2238 | if (mi->iconSet()) | 2246 | if (mi->iconSet()) |
2239 | h = QMAX(mi->iconSet()-> | 2247 | h = QMAX(mi->iconSet()->pixmap().height(), h); |
2240 | pixmap(QIconSet::Small, QIconSet::Normal).height(), h); | ||
2241 | 2248 | ||
2242 | h = QMAX(fm.height() + 4, h); | 2249 | h = QMAX(fm.height() + 4, h); |
2243 | 2250 | ||
2244 | // we want a minimum size of 18 | 2251 | // we want a minimum size of 18 |
2245 | h = QMAX(h, 18); | 2252 | h = QMAX(h, 18); |
2246 | 2253 | ||
2247 | return h; | 2254 | return h; |
2248 | } | 2255 | } |
2249 | 2256 | ||
2250 | 2257 | ||
2251 | void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r, | 2258 | void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r, |
2252 | const QColorGroup &g, const QColor *c, | 2259 | const QColorGroup &g, const QColor *c, |
2253 | bool atBorder) | 2260 | bool atBorder) |
2254 | { | 2261 | { |
2255 | // are we painting a widget? | 2262 | // are we painting a widget? |
2256 | if(p->device()->devType() == QInternal::Widget){ | 2263 | if(p->device()->devType() == QInternal::Widget){ |
2257 | // if so does it use a special focus rectangle? | 2264 | // if so does it use a special focus rectangle? |
2258 | QWidget *w = (QWidget *)p->device(); | 2265 | QWidget *w = (QWidget *)p->device(); |
2259 | if(w->inherits("QPushButton") || w->inherits("QSlider") || w->inherits("QComboBox") || w->inherits("QToolButton" )){ | 2266 | if(w->inherits("QPushButton") || w->inherits("QSlider") || w->inherits("QComboBox") || w->inherits("QToolButton" )){ |
2260 | return; | 2267 | return; |
2261 | } | 2268 | } |
2262 | else{ | 2269 | else{ |
2263 | QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); | 2270 | QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); |
2264 | } | 2271 | } |
2265 | } | 2272 | } |
2266 | else | 2273 | else |
2267 | QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); | 2274 | QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); |
2268 | 2275 | ||
2269 | } | 2276 | } |
2270 | 2277 | ||
2271 | void LiquidStyle::polishPopupMenu(QPopupMenu *mnu) | 2278 | void LiquidStyle::polishPopupMenu(QPopupMenu *mnu) |
2272 | { | 2279 | { |
2273 | mnu->installEventFilter(menuHandler); | 2280 | mnu->installEventFilter(menuHandler); |
2274 | QWindowsStyle::polishPopupMenu(mnu); | 2281 | QWindowsStyle::polishPopupMenu(mnu); |
2275 | } | 2282 | } |
2276 | 2283 | ||
2277 | void LiquidStyle::drawTab(QPainter *p, const QTabBar *tabBar, QTab *tab, | 2284 | void LiquidStyle::drawTab(QPainter *p, const QTabBar *tabBar, QTab *tab, |
2278 | bool selected) | 2285 | bool selected) |
2279 | { | 2286 | { |
2280 | if(tabBar->shape() != QTabBar::RoundedAbove){ | 2287 | if(tabBar->shape() != QTabBar::RoundedAbove){ |
2281 | QWindowsStyle::drawTab(p, tabBar, tab, selected); | 2288 | QWindowsStyle::drawTab(p, tabBar, tab, selected); |
2282 | return; | 2289 | return; |
2283 | } | 2290 | } |
2284 | QPixmap tilePix; | 2291 | QPixmap tilePix; |
2285 | QRect r = tab->rect(); | 2292 | QRect r = tab->rect(); |
2286 | //QPixmap *pix = selected ? tabBar->hasFocus() ? pixmaps[TabFocus] : | 2293 | //QPixmap *pix = selected ? tabBar->hasFocus() ? pixmaps[TabFocus] : |
2287 | // pixmaps[TabDown] : pixmaps[Tab]; | 2294 | // pixmaps[TabDown] : pixmaps[Tab]; |
2288 | 2295 | ||
2289 | QPixmap *pix = selected ? getPixmap(TabDown) : getPixmap(Tab); | 2296 | QPixmap *pix = selected ? getPixmap(TabDown) : getPixmap(Tab); |
2290 | p->drawPixmap(r.x(), r.y(), *pix, 0, 0, 9, r.height()); | 2297 | p->drawPixmap(r.x(), r.y(), *pix, 0, 0, 9, r.height()); |
2291 | p->drawPixmap(r.right()-9, r.y(), *pix, pix->width()-9, 0, 9, r.height()); | 2298 | p->drawPixmap(r.right()-9, r.y(), *pix, pix->width()-9, 0, 9, r.height()); |
2292 | tilePix.resize(pix->width()-18, r.height()); | 2299 | tilePix.resize(pix->width()-18, r.height()); |
2293 | bitBlt(&tilePix, 0, 0, pix, 9, 0, pix->width()-18, r.height()); | 2300 | bitBlt(&tilePix, 0, 0, pix, 9, 0, pix->width()-18, r.height()); |
2294 | p->drawTiledPixmap(r.x()+9, r.y(), r.width()-18, r.height(), tilePix); | 2301 | p->drawTiledPixmap(r.x()+9, r.y(), r.width()-18, r.height(), tilePix); |
2295 | QColor c = tabBar->colorGroup().button(); | 2302 | QColor c = tabBar->colorGroup().button(); |
2296 | if(!selected){ | 2303 | if(!selected){ |
2297 | p->setPen(c.dark(130)); | 2304 | p->setPen(c.dark(130)); |
2298 | p->drawLine(r.x(), r.bottom(), r.right(), r.bottom()); | 2305 | p->drawLine(r.x(), r.bottom(), r.right(), r.bottom()); |
2299 | } | 2306 | } |
2300 | 2307 | ||
2301 | /* | 2308 | /* |
2302 | p->setPen(c.light(110)); | 2309 | p->setPen(c.light(110)); |
2303 | p->drawLine(r.x(), r.bottom()+1, r.right(), r.bottom()+1); | 2310 | p->drawLine(r.x(), r.bottom()+1, r.right(), r.bottom()+1); |
2304 | p->setPen(c); | 2311 | p->setPen(c); |
2305 | p->drawLine(r.x(), r.bottom()+2, r.right(), r.bottom()+2); | 2312 | p->drawLine(r.x(), r.bottom()+2, r.right(), r.bottom()+2); |
2306 | p->setPen(c.light(110)); | 2313 | p->setPen(c.light(110)); |
2307 | p->drawLine(r.x(), r.bottom()+3, r.right(), r.bottom()+3); | 2314 | p->drawLine(r.x(), r.bottom()+3, r.right(), r.bottom()+3); |
2308 | p->setPen(c.light(120)); | 2315 | p->setPen(c.light(120)); |
2309 | p->drawLine(r.x(), r.bottom()+4, r.right(), r.bottom()+4); | 2316 | p->drawLine(r.x(), r.bottom()+4, r.right(), r.bottom()+4); |
2310 | */ | 2317 | */ |
2311 | 2318 | ||
2312 | /* | 2319 | /* |
2313 | QColor c = tabBar->colorGroup().button(); | 2320 | QColor c = tabBar->colorGroup().button(); |
2314 | pix = bevelFillDict.find(c.rgb()); | 2321 | pix = bevelFillDict.find(c.rgb()); |
2315 | if(!pix){ | 2322 | if(!pix){ |
2316 | int h, s, v; | 2323 | int h, s, v; |
2317 | c.hsv(&h, &s, &v); | 2324 | c.hsv(&h, &s, &v); |
2318 | pix = new QPixmap(*bevelFillPix); | 2325 | pix = new QPixmap(*bevelFillPix); |
2319 | adjustHSV(*pix, h, s); | 2326 | adjustHSV(*pix, h, s); |
2320 | bevelFillDict.insert(c.rgb(), pix); | 2327 | bevelFillDict.insert(c.rgb(), pix); |
2321 | }*/ | 2328 | }*/ |
2322 | 2329 | ||
2323 | /* | 2330 | /* |
2324 | QRect r = tab->rect(); | 2331 | QRect r = tab->rect(); |
2325 | QColorGroup g = tabBar->colorGroup(); | 2332 | QColorGroup g = tabBar->colorGroup(); |
2326 | if(!selected){ | 2333 | if(!selected){ |
2327 | r.setY(r.y()+1); | 2334 | r.setY(r.y()+1); |
2328 | p->setPen(g.dark()); | 2335 | p->setPen(g.dark()); |
2329 | p->drawLine(r.x(), r.y()+4, r.x(), r.bottom()-2); | 2336 | p->drawLine(r.x(), r.y()+4, r.x(), r.bottom()-2); |
2330 | p->drawLine(r.x(), r.y()+4, r.x()+4, r.y()); | 2337 | p->drawLine(r.x(), r.y()+4, r.x()+4, r.y()); |
2331 | p->drawLine(r.x()+4, r.y(), r.right()-1, r.y()); | 2338 | p->drawLine(r.x()+4, r.y(), r.right()-1, r.y()); |
2332 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()-2); | 2339 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()-2); |
2333 | 2340 | ||
2334 | p->setPen(g.midlight()); | 2341 | p->setPen(g.midlight()); |
2335 | p->drawLine(r.x()+1, r.y()+4, r.x()+1, r.bottom()); | 2342 | p->drawLine(r.x()+1, r.y()+4, r.x()+1, r.bottom()); |
2336 | p->drawLine(r.x()+1, r.y()+4, r.x()+4, r.y()+1); | 2343 | p->drawLine(r.x()+1, r.y()+4, r.x()+4, r.y()+1); |
2337 | p->drawLine(r.x()+5, r.y()+1, r.right()-2, r.y()+1); | 2344 | p->drawLine(r.x()+5, r.y()+1, r.right()-2, r.y()+1); |
2338 | p->drawLine(r.x(), r.bottom(), r.right(), r.bottom()); | 2345 | p->drawLine(r.x(), r.bottom(), r.right(), r.bottom()); |
2339 | 2346 | ||
2340 | p->setPen(g.mid()); | 2347 | p->setPen(g.mid()); |
2341 | p->drawPoint(r.right()-1, r.y()+1); | 2348 | p->drawPoint(r.right()-1, r.y()+1); |
2342 | p->drawLine(r.x()+4, r.y()+2, r.right()-1, r.y()+2); | 2349 | p->drawLine(r.x()+4, r.y()+2, r.right()-1, r.y()+2); |
2343 | p->drawLine(r.x()+3, r.y()+3, r.right()-1, r.y()+3); | 2350 | p->drawLine(r.x()+3, r.y()+3, r.right()-1, r.y()+3); |
2344 | 2351 | ||
2345 | p->fillRect(r.x()+2, r.y()+4, r.width()-3, r.height()-6, | 2352 | p->fillRect(r.x()+2, r.y()+4, r.width()-3, r.height()-6, |
2346 | g.brush(QColorGroup::Mid)); | 2353 | g.brush(QColorGroup::Mid)); |
2347 | 2354 | ||
2348 | p->setPen(g.light()); | 2355 | p->setPen(g.light()); |
2349 | p->drawLine(r.x(), r.bottom()-1, r.right(), r.bottom()-1); | 2356 | p->drawLine(r.x(), r.bottom()-1, r.right(), r.bottom()-1); |
2350 | 2357 | ||
2351 | } | 2358 | } |
2352 | else{ | 2359 | else{ |
2353 | p->setPen(g.light()); | 2360 | p->setPen(g.light()); |
2354 | p->drawLine(r.x(), r.y()+4, r.x(), r.bottom()); | 2361 | p->drawLine(r.x(), r.y()+4, r.x(), r.bottom()); |
2355 | p->drawLine(r.x(), r.y()+4, r.x()+4, r.y()); | 2362 | p->drawLine(r.x(), r.y()+4, r.x()+4, r.y()); |
2356 | p->drawLine(r.x()+4, r.y(), r.right()-1, r.y()); | 2363 | p->drawLine(r.x()+4, r.y(), r.right()-1, r.y()); |
2357 | p->setPen(g.dark()); | 2364 | p->setPen(g.dark()); |
2358 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()); | 2365 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()); |
2359 | 2366 | ||
2360 | p->setPen(g.midlight()); | 2367 | p->setPen(g.midlight()); |
2361 | p->drawLine(r.x()+1, r.y()+4, r.x()+1, r.bottom()); | 2368 | p->drawLine(r.x()+1, r.y()+4, r.x()+1, r.bottom()); |
2362 | p->drawLine(r.x()+1, r.y()+4, r.x()+4, r.y()+1); | 2369 | p->drawLine(r.x()+1, r.y()+4, r.x()+4, r.y()+1); |
2363 | p->drawLine(r.x()+5, r.y()+1, r.right() - 2, r.y()+1); | 2370 | p->drawLine(r.x()+5, r.y()+1, r.right() - 2, r.y()+1); |
2364 | p->setPen(g.mid()); | 2371 | p->setPen(g.mid()); |
2365 | p->drawLine(r.right()-1, r.y()+1, r.right()-1, r.bottom()); | 2372 | p->drawLine(r.right()-1, r.y()+1, r.right()-1, r.bottom()); |
2366 | }*/ | 2373 | }*/ |
2367 | 2374 | ||
2368 | } | 2375 | } |
2369 | 2376 | ||
2370 | 2377 | ||
2371 | 2378 | ||
2372 | void LiquidStyle::drawTabMask(QPainter *p, const QTabBar*, QTab *tab, | 2379 | void LiquidStyle::drawTabMask(QPainter *p, const QTabBar*, QTab *tab, |
2373 | bool selected) | 2380 | bool selected) |
2374 | 2381 | ||
2375 | 2382 | ||
2376 | { | 2383 | { |
2377 | //p->fillRect(tab->rect(), Qt::color1); | 2384 | //p->fillRect(tab->rect(), Qt::color1); |
2378 | QRect r = tab->rect(); | 2385 | QRect r = tab->rect(); |
2379 | QPixmap *pix = selected ? getPixmap(TabDown) : getPixmap(Tab); | 2386 | QPixmap *pix = selected ? getPixmap(TabDown) : getPixmap(Tab); |
2380 | p->drawPixmap(r.x(), r.y(), *pix->mask(), 0, 0, 9, r.height()); | 2387 | p->drawPixmap(r.x(), r.y(), *pix->mask(), 0, 0, 9, r.height()); |
2381 | p->drawPixmap(r.right()-9, r.y(), *pix->mask(), pix->width()-9, 0, 9, r.height()); | 2388 | p->drawPixmap(r.right()-9, r.y(), *pix->mask(), pix->width()-9, 0, 9, r.height()); |
2382 | p->fillRect(r.x()+9, r.y(), r.width()-18, r.height(), Qt::color1); | 2389 | p->fillRect(r.x()+9, r.y(), r.width()-18, r.height(), Qt::color1); |
2383 | } | 2390 | } |
2384 | 2391 | ||
2385 | void LiquidStyle::tabbarMetrics(const QTabBar *t, int &hFrame, int &vFrame, | 2392 | void LiquidStyle::tabbarMetrics(const QTabBar *t, int &hFrame, int &vFrame, |
2386 | int &overlap) | 2393 | int &overlap) |
2387 | { | 2394 | { |
2388 | if(t->shape() == QTabBar::RoundedAbove){ | 2395 | if(t->shape() == QTabBar::RoundedAbove){ |
2389 | overlap = 1; | 2396 | overlap = 1; |
2390 | hFrame = 18; // was 24 | 2397 | hFrame = 18; // was 24 |
2391 | vFrame = 8; // was 10 | 2398 | vFrame = 8; // was 10 |
2392 | } | 2399 | } |
2393 | else | 2400 | else |
2394 | QWindowsStyle::tabbarMetrics(t, hFrame, vFrame, overlap); | 2401 | QWindowsStyle::tabbarMetrics(t, hFrame, vFrame, overlap); |
2395 | } | 2402 | } |
2396 | 2403 | ||
2397 | 2404 | ||
2398 | 2405 | ||
2399 | void LiquidStyle::drawSplitter(QPainter *p, int x, int y, int w, int h, | 2406 | void LiquidStyle::drawSplitter(QPainter *p, int x, int y, int w, int h, |
2400 | const QColorGroup &g, Orientation) | 2407 | const QColorGroup &g, Orientation) |
2401 | { | 2408 | { |
2402 | drawClearBevel(p, x, y, w, h, highlightWidget == p->device() ? | 2409 | drawClearBevel(p, x, y, w, h, highlightWidget == p->device() ? |
2403 | g.button().light(120) : g.button(), g.background()); | 2410 | g.button().light(120) : g.button(), g.background()); |
2404 | } | 2411 | } |
2405 | 2412 | ||
2406 | 2413 | ||
2407 | void LiquidStyle::drawPanel(QPainter *p, int x, int y, int w, int h, | 2414 | void LiquidStyle::drawPanel(QPainter *p, int x, int y, int w, int h, |
2408 | const QColorGroup &g, bool sunken, | 2415 | const QColorGroup &g, bool sunken, |
2409 | int lineWidth, const QBrush *fill) | 2416 | int lineWidth, const QBrush *fill) |
2410 | { | 2417 | { |
2411 | if(p->device()->devType() == QInternal::Widget && | 2418 | if(p->device()->devType() == QInternal::Widget && |
2412 | ((QWidget *)p->device())->inherits("QLineEdit")){ | 2419 | ((QWidget *)p->device())->inherits("QLineEdit")){ |
2413 | int x2 = x+w-1; | 2420 | int x2 = x+w-1; |
2414 | int y2 = y+h-1; | 2421 | int y2 = y+h-1; |
2415 | p->setPen(g.dark()); | 2422 | p->setPen(g.dark()); |
2416 | p->drawRect(x, y, w, h); | 2423 | p->drawRect(x, y, w, h); |
2417 | p->setPen(g.mid()); | 2424 | p->setPen(g.mid()); |
2418 | p->drawLine(x+1, y+1, x2-2, y+1); | 2425 | p->drawLine(x+1, y+1, x2-2, y+1); |
2419 | p->drawLine(x+1, y+1, x+1, y2-1); | 2426 | p->drawLine(x+1, y+1, x+1, y2-1); |
2420 | } | 2427 | } |
2421 | else if(lineWidth != 2 || !sunken) | 2428 | else if(lineWidth != 2 || !sunken) |
2422 | QWindowsStyle::drawPanel(p, x, y, w, h, g, sunken, lineWidth, fill); | 2429 | QWindowsStyle::drawPanel(p, x, y, w, h, g, sunken, lineWidth, fill); |
2423 | else{ | 2430 | else{ |
2424 | QPen oldPen = p->pen(); | 2431 | QPen oldPen = p->pen(); |
2425 | int x2 = x+w-1; | 2432 | int x2 = x+w-1; |
2426 | int y2 = y+h-1; | 2433 | int y2 = y+h-1; |
2427 | p->setPen(g.light()); | 2434 | p->setPen(g.light()); |
2428 | p->drawLine(x, y2, x2, y2); | 2435 | p->drawLine(x, y2, x2, y2); |
2429 | p->drawLine(x2, y, x2, y2); | 2436 | p->drawLine(x2, y, x2, y2); |
2430 | p->setPen(g.mid()); | 2437 | p->setPen(g.mid()); |
2431 | p->drawLine(x, y, x2, y); | 2438 | p->drawLine(x, y, x2, y); |
2432 | p->drawLine(x, y, x, y2); | 2439 | p->drawLine(x, y, x, y2); |
2433 | 2440 | ||
2434 | p->setPen(g.midlight()); | 2441 | p->setPen(g.midlight()); |
2435 | p->drawLine(x+1, y2-1, x2-1, y2-1); | 2442 | p->drawLine(x+1, y2-1, x2-1, y2-1); |
2436 | p->drawLine(x2-1, y+1, x2-1, y2-1); | 2443 | p->drawLine(x2-1, y+1, x2-1, y2-1); |
2437 | p->setPen(g.dark()); | 2444 | p->setPen(g.dark()); |
2438 | p->drawLine(x+1, y+1, x2-1, y+1); | 2445 | p->drawLine(x+1, y+1, x2-1, y+1); |
2439 | p->drawLine(x+1, y+1, x+1, y2-1); | 2446 | p->drawLine(x+1, y+1, x+1, y2-1); |
2440 | p->setPen(oldPen); | 2447 | p->setPen(oldPen); |
2441 | if(fill){ | 2448 | if(fill){ |
2442 | // I believe here we are only supposed to fill if there is a | 2449 | // I believe here we are only supposed to fill if there is a |
2443 | // specified fill brush... | 2450 | // specified fill brush... |
2444 | p->fillRect(x+2, y+2, w-4, h-4, *fill); | 2451 | p->fillRect(x+2, y+2, w-4, h-4, *fill); |
2445 | } | 2452 | } |
2446 | } | 2453 | } |
2447 | } | 2454 | } |
2448 | 2455 | ||
2449 | 2456 | ||
2450 | void LiquidStyle::adjustHSV(QPixmap &pix, int h, int s, int v) | 2457 | void LiquidStyle::adjustHSV(QPixmap &pix, int h, int s, int v) |
2451 | { | 2458 | { |
2452 | QBitmap *maskBmp = NULL; | 2459 | QBitmap *maskBmp = NULL; |
2453 | if(pix.mask()) | 2460 | if(pix.mask()) |
2454 | maskBmp = new QBitmap(*pix.mask()); | 2461 | maskBmp = new QBitmap(*pix.mask()); |
2455 | QImage img = pix.convertToImage(); | 2462 | QImage img = pix.convertToImage(); |
2456 | if(img.depth() != 32) | 2463 | if(img.depth() != 32) |
2457 | img = img.convertDepth(32); | 2464 | img = img.convertDepth(32); |
2458 | unsigned int *data = (unsigned int *)img.bits(); | 2465 | unsigned int *data = (unsigned int *)img.bits(); |
2459 | int total = img.width()*img.height(); | 2466 | int total = img.width()*img.height(); |
2460 | int current; | 2467 | int current; |
2461 | QColor c; | 2468 | QColor c; |
2462 | int oldH, oldS, oldV; | 2469 | int oldH, oldS, oldV; |
2463 | if(v < 235) | 2470 | if(v < 235) |
2464 | v += 20; | 2471 | v += 20; |
2465 | else | 2472 | else |
2466 | v = 255; | 2473 | v = 255; |
2467 | float intensity = v/255.0; | 2474 | float intensity = v/255.0; |
2468 | 2475 | ||
2469 | for(current=0; current<total; ++current){ | 2476 | for(current=0; current<total; ++current){ |
2470 | c.setRgb(data[current]); | 2477 | c.setRgb(data[current]); |
2471 | c.hsv(&oldH, &oldS, &oldV); | 2478 | c.hsv(&oldH, &oldS, &oldV); |
2472 | oldV = (int)(oldV*intensity); | 2479 | oldV = (int)(oldV*intensity); |
2473 | c.setHsv(h, s, oldV); | 2480 | c.setHsv(h, s, oldV); |
2474 | data[current] = c.rgb(); | 2481 | data[current] = c.rgb(); |
2475 | } | 2482 | } |
2476 | pix.convertFromImage(img); | 2483 | pix.convertFromImage(img); |
2477 | if(maskBmp) | 2484 | if(maskBmp) |
2478 | pix.setMask(*maskBmp); | 2485 | pix.setMask(*maskBmp); |
2479 | } | 2486 | } |
2480 | 2487 | ||
2481 | void LiquidStyle::intensity(QPixmap &pix, float percent) | 2488 | void LiquidStyle::intensity(QPixmap &pix, float percent) |
2482 | { | 2489 | { |
2483 | QImage image = pix.convertToImage(); | 2490 | QImage image = pix.convertToImage(); |
2484 | int i, tmp, r, g, b; | 2491 | int i, tmp, r, g, b; |
2485 | int segColors = image.depth() > 8 ? 256 : image.numColors(); | 2492 | int segColors = image.depth() > 8 ? 256 : image.numColors(); |
2486 | unsigned char *segTbl = new unsigned char[segColors]; | 2493 | unsigned char *segTbl = new unsigned char[segColors]; |
2487 | int pixels = image.depth() > 8 ? image.width()*image.height() : | 2494 | int pixels = image.depth() > 8 ? image.width()*image.height() : |
2488 | image.numColors(); | 2495 | image.numColors(); |
2489 | unsigned int *data = image.depth() > 8 ? (unsigned int *)image.bits() : | 2496 | unsigned int *data = image.depth() > 8 ? (unsigned int *)image.bits() : |
2490 | (unsigned int *)image.colorTable(); | 2497 | (unsigned int *)image.colorTable(); |
2491 | 2498 | ||
2492 | bool brighten = (percent >= 0); | 2499 | bool brighten = (percent >= 0); |
2493 | if(percent < 0) | 2500 | if(percent < 0) |
2494 | percent = -percent; | 2501 | percent = -percent; |
2495 | 2502 | ||
2496 | if(brighten){ // keep overflow check out of loops | 2503 | if(brighten){ // keep overflow check out of loops |
2497 | for(i=0; i < segColors; ++i){ | 2504 | for(i=0; i < segColors; ++i){ |
2498 | tmp = (int)(i*percent); | 2505 | tmp = (int)(i*percent); |
2499 | if(tmp > 255) | 2506 | if(tmp > 255) |
2500 | tmp = 255; | 2507 | tmp = 255; |
2501 | segTbl[i] = tmp; | 2508 | segTbl[i] = tmp; |
2502 | } | 2509 | } |
2503 | } | 2510 | } |
2504 | else{ | 2511 | else{ |
2505 | for(i=0; i < segColors; ++i){ | 2512 | for(i=0; i < segColors; ++i){ |
2506 | tmp = (int)(i*percent); | 2513 | tmp = (int)(i*percent); |
2507 | if(tmp < 0) | 2514 | if(tmp < 0) |
2508 | tmp = 0; | 2515 | tmp = 0; |
2509 | segTbl[i] = tmp; | 2516 | segTbl[i] = tmp; |
2510 | } | 2517 | } |
2511 | } | 2518 | } |
2512 | 2519 | ||
2513 | if(brighten){ // same here | 2520 | if(brighten){ // same here |
2514 | for(i=0; i < pixels; ++i){ | 2521 | for(i=0; i < pixels; ++i){ |
2515 | r = qRed(data[i]); | 2522 | r = qRed(data[i]); |
2516 | g = qGreen(data[i]); | 2523 | g = qGreen(data[i]); |
2517 | b = qBlue(data[i]); | 2524 | b = qBlue(data[i]); |
2518 | r = r + segTbl[r] > 255 ? 255 : r + segTbl[r]; | 2525 | r = r + segTbl[r] > 255 ? 255 : r + segTbl[r]; |
2519 | g = g + segTbl[g] > 255 ? 255 : g + segTbl[g]; | 2526 | g = g + segTbl[g] > 255 ? 255 : g + segTbl[g]; |
2520 | b = b + segTbl[b] > 255 ? 255 : b + segTbl[b]; | 2527 | b = b + segTbl[b] > 255 ? 255 : b + segTbl[b]; |
2521 | data[i] = qRgb(r, g, b); | 2528 | data[i] = qRgb(r, g, b); |
2522 | } | 2529 | } |
2523 | } | 2530 | } |
2524 | else{ | 2531 | else{ |
2525 | for(i=0; i < pixels; ++i){ | 2532 | for(i=0; i < pixels; ++i){ |
2526 | r = qRed(data[i]); | 2533 | r = qRed(data[i]); |
2527 | g = qGreen(data[i]); | 2534 | g = qGreen(data[i]); |
2528 | b = qBlue(data[i]); | 2535 | b = qBlue(data[i]); |
2529 | r = r - segTbl[r] < 0 ? 0 : r - segTbl[r]; | 2536 | r = r - segTbl[r] < 0 ? 0 : r - segTbl[r]; |
2530 | g = g - segTbl[g] < 0 ? 0 : g - segTbl[g]; | 2537 | g = g - segTbl[g] < 0 ? 0 : g - segTbl[g]; |
2531 | b = b - segTbl[b] < 0 ? 0 : b - segTbl[b]; | 2538 | b = b - segTbl[b] < 0 ? 0 : b - segTbl[b]; |
2532 | data[i] = qRgb(r, g, b); | 2539 | data[i] = qRgb(r, g, b); |
2533 | } | 2540 | } |
2534 | } | 2541 | } |
2535 | delete [] segTbl; | 2542 | delete [] segTbl; |
2536 | pix.convertFromImage(image); | 2543 | pix.convertFromImage(image); |
2537 | } | 2544 | } |
2538 | 2545 | ||
2539 | void LiquidStyle::drawRoundRect(QPainter *p, int x, int y, int w, int h) | 2546 | void LiquidStyle::drawRoundRect(QPainter *p, int x, int y, int w, int h) |
2540 | { | 2547 | { |
2541 | int x2 = x+w-1; | 2548 | int x2 = x+w-1; |
2542 | int y2 = y+h-1; | 2549 | int y2 = y+h-1; |
2543 | p->drawLine(x+1, y, x2-1, y); | 2550 | p->drawLine(x+1, y, x2-1, y); |
2544 | p->drawLine(x, y+1, x, y2-1); | 2551 | p->drawLine(x, y+1, x, y2-1); |
2545 | p->drawLine(x+1, y2, x2-1, y2); | 2552 | p->drawLine(x+1, y2, x2-1, y2); |
2546 | p->drawLine(x2, y+1, x2, y2-1); | 2553 | p->drawLine(x2, y+1, x2, y2-1); |
2547 | } | 2554 | } |
2548 | 2555 | ||
2549 | void LiquidStyle::drawSliderGroove (QPainter * p, int x, int y, int w, int h, | 2556 | void LiquidStyle::drawSliderGroove (QPainter * p, int x, int y, int w, int h, |
2550 | const QColorGroup &g, QCOORD, | 2557 | const QColorGroup &g, QCOORD, |
2551 | Orientation orient) | 2558 | Orientation orient) |
2552 | { | 2559 | { |
2553 | bool isFocus = ((QWidget *)p->device())->hasFocus(); | 2560 | bool isFocus = ((QWidget *)p->device())->hasFocus(); |
2554 | QColor c = isFocus ? g.background().dark(120) : g.background(); | 2561 | QColor c = isFocus ? g.background().dark(120) : g.background(); |
2555 | if(orient == Qt::Horizontal){ | 2562 | if(orient == Qt::Horizontal){ |
2556 | int x2 = x+w-1; | 2563 | int x2 = x+w-1; |
2557 | y+=2; | 2564 | y+=2; |
2558 | p->setPen(c.dark(130)); | 2565 | p->setPen(c.dark(130)); |
2559 | p->drawLine(x+1, y, x2-1, y); | 2566 | p->drawLine(x+1, y, x2-1, y); |
2560 | p->setPen(c.dark(150)); | 2567 | p->setPen(c.dark(150)); |
2561 | p->drawLine(x, y+1, x2, y+1); | 2568 | p->drawLine(x, y+1, x2, y+1); |
2562 | p->setPen(c.dark(125)); | 2569 | p->setPen(c.dark(125)); |
2563 | p->drawLine(x, y+2, x2, y+2); | 2570 | p->drawLine(x, y+2, x2, y+2); |
2564 | p->setPen(c.dark(130)); | 2571 | p->setPen(c.dark(130)); |
2565 | p->drawLine(x, y+3, x2, y+3); | 2572 | p->drawLine(x, y+3, x2, y+3); |
2566 | p->setPen(c.dark(120)); | 2573 | p->setPen(c.dark(120)); |
2567 | p->drawLine(x, y+4, x2, y+4); | 2574 | p->drawLine(x, y+4, x2, y+4); |
2568 | p->setPen(c.light(110)); | 2575 | p->setPen(c.light(110)); |
2569 | p->drawLine(x+1, y+5, x2-1, y+5); | 2576 | p->drawLine(x+1, y+5, x2-1, y+5); |
2570 | } | 2577 | } |
2571 | else{ | 2578 | else{ |
2572 | int y2 = y+h-1; | 2579 | int y2 = y+h-1; |
2573 | x+=2; | 2580 | x+=2; |
2574 | p->setPen(c.dark(130)); | 2581 | p->setPen(c.dark(130)); |
2575 | p->drawLine(x, y+1, x, y2-1); | 2582 | p->drawLine(x, y+1, x, y2-1); |
2576 | p->setPen(c.dark(150)); | 2583 | p->setPen(c.dark(150)); |
2577 | p->drawLine(x+1, y, x+1, y2); | 2584 | p->drawLine(x+1, y, x+1, y2); |
2578 | p->setPen(c.dark(125)); | 2585 | p->setPen(c.dark(125)); |
2579 | p->drawLine(x+2, y, x+2, y2); | 2586 | p->drawLine(x+2, y, x+2, y2); |
2580 | p->setPen(c.dark(130)); | 2587 | p->setPen(c.dark(130)); |
2581 | p->drawLine(x+3, y, x+3, y2); | 2588 | p->drawLine(x+3, y, x+3, y2); |
2582 | p->setPen(c.dark(120)); | 2589 | p->setPen(c.dark(120)); |
2583 | p->drawLine(x+4, y, x+4, y2); | 2590 | p->drawLine(x+4, y, x+4, y2); |
2584 | p->setPen(c.light(110)); | 2591 | p->setPen(c.light(110)); |
2585 | p->drawLine(x+5, y+1, x+5, y2-1); | 2592 | p->drawLine(x+5, y+1, x+5, y2-1); |
2586 | } | 2593 | } |
2587 | //QWindowsStyle::drawSliderGroove(p, x, y, w, h, g, c, orient); | 2594 | //QWindowsStyle::drawSliderGroove(p, x, y, w, h, g, c, orient); |
2588 | 2595 | ||
2589 | } | 2596 | } |
2590 | 2597 | ||
2591 | void LiquidStyle::drawSliderGrooveMask (QPainter * p, int x, int y, int w, | 2598 | void LiquidStyle::drawSliderGrooveMask (QPainter * p, int x, int y, int w, |
2592 | int h, QCOORD, Orientation orient) | 2599 | int h, QCOORD, Orientation orient) |
2593 | { | 2600 | { |
2594 | p->fillRect(x, y, w, h, Qt::color0); | 2601 | p->fillRect(x, y, w, h, Qt::color0); |
2595 | p->setPen(Qt::color1); | 2602 | p->setPen(Qt::color1); |
2596 | if(orient == Qt::Horizontal){ | 2603 | if(orient == Qt::Horizontal){ |
2597 | int x2 = x+w-1; | 2604 | int x2 = x+w-1; |
2598 | y+=2; | 2605 | y+=2; |
2599 | p->drawLine(x+1, y, x2-1, y); | 2606 | p->drawLine(x+1, y, x2-1, y); |
2600 | p->fillRect(x, y+1, w, 4, Qt::color1); | 2607 | p->fillRect(x, y+1, w, 4, Qt::color1); |
2601 | p->drawLine(x+1, y+5, x2-1, y+5); | 2608 | p->drawLine(x+1, y+5, x2-1, y+5); |
2602 | } | 2609 | } |
2603 | else{ | 2610 | else{ |
2604 | int y2 = y+h-1; | 2611 | int y2 = y+h-1; |
2605 | x+=2; | 2612 | x+=2; |
2606 | p->drawLine(x, y+1, x, y2-1); | 2613 | p->drawLine(x, y+1, x, y2-1); |
2607 | p->fillRect(x+1, y, 4, h, Qt::color1); | 2614 | p->fillRect(x+1, y, 4, h, Qt::color1); |
2608 | p->drawLine(x+5, y+1, x+5, y2-1); | 2615 | p->drawLine(x+5, y+1, x+5, y2-1); |
2609 | } | 2616 | } |
2610 | } | 2617 | } |
2611 | 2618 | ||
2612 | 2619 | ||
2613 | /* vim: set noet sw=8 ts=8: */ | 2620 | /* vim: set noet sw=8 ts=8: */ |
diff --git a/noncore/styles/phase/phasestyle.cpp b/noncore/styles/phase/phasestyle.cpp index 746354e..c2b9de8 100644 --- a/noncore/styles/phase/phasestyle.cpp +++ b/noncore/styles/phase/phasestyle.cpp | |||
@@ -1,1236 +1,1242 @@ | |||
1 | ////////////////////////////////////////////////////////////////////////////// | 1 | ////////////////////////////////////////////////////////////////////////////// |
2 | // phasestyle.h | 2 | // phasestyle.h |
3 | // ------------------- | 3 | // ------------------- |
4 | // A style for KDE | 4 | // A style for KDE |
5 | // ------------------- | 5 | // ------------------- |
6 | // Copyright (c) 2004 David Johnson <david@usermode.org> | 6 | // Copyright (c) 2004 David Johnson <david@usermode.org> |
7 | // | 7 | // |
8 | // Permission is hereby granted, free of charge, to any person obtaining a copy | 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy |
9 | // of this software and associated documentation files (the "Software"), to | 9 | // of this software and associated documentation files (the "Software"), to |
10 | // deal in the Software without restriction, including without limitation the | 10 | // deal in the Software without restriction, including without limitation the |
11 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | 11 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
12 | // sell copies of the Software, and to permit persons to whom the Software is | 12 | // sell copies of the Software, and to permit persons to whom the Software is |
13 | // furnished to do so, subject to the following conditions: | 13 | // furnished to do so, subject to the following conditions: |
14 | // | 14 | // |
15 | // The above copyright notice and this permission notice shall be included in | 15 | // The above copyright notice and this permission notice shall be included in |
16 | // all copies or substantial portions of the Software. | 16 | // all copies or substantial portions of the Software. |
17 | // | 17 | // |
18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
23 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | 23 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
24 | // IN THE SOFTWARE. | 24 | // IN THE SOFTWARE. |
25 | ////////////////////////////////////////////////////////////////////////////// | 25 | ////////////////////////////////////////////////////////////////////////////// |
26 | 26 | ||
27 | #include "phasestyle.h" | 27 | #include "phasestyle.h" |
28 | 28 | ||
29 | #include "bitmaps.h" | 29 | #include "bitmaps.h" |
30 | 30 | ||
31 | #define INCLUDE_MENUITEM_DEF | 31 | #define INCLUDE_MENUITEM_DEF |
32 | #include <qpopupmenu.h> | 32 | #include <qpopupmenu.h> |
33 | #include <qpushbutton.h> | 33 | #include <qpushbutton.h> |
34 | #include <qtoolbutton.h> | 34 | #include <qtoolbutton.h> |
35 | #include <qpainter.h> | 35 | #include <qpainter.h> |
36 | #include <qbrush.h> | 36 | #include <qbrush.h> |
37 | #include <qiconset.h> | 37 | #include <qiconset.h> |
38 | #include <qtabbar.h> | 38 | #include <qtabbar.h> |
39 | #include <qscrollbar.h> | 39 | #include <qscrollbar.h> |
40 | 40 | ||
41 | 41 | ||
42 | /* Spacing and sizeHint */ | 42 | /* Spacing and sizeHint */ |
43 | static unsigned contrast = 110; | 43 | static unsigned contrast = 110; |
44 | 44 | ||
45 | static const int ITEMFRAME = 1; // menu stuff | 45 | static const int ITEMFRAME = 1; // menu stuff |
46 | static const int ITEMHMARGIN = 3; | 46 | static const int ITEMHMARGIN = 3; |
47 | static const int ITEMVMARGIN = 0; | 47 | static const int ITEMVMARGIN = 0; |
48 | 48 | ||
49 | static const int ARROWMARGIN = 6; | 49 | static const int ARROWMARGIN = 6; |
50 | static const int RIGHTBORDER = 10; | 50 | static const int RIGHTBORDER = 10; |
51 | static const int MINICONSIZE = 12; | 51 | static const int MINICONSIZE = 12; |
52 | static const int CHECKSIZE = 9; | 52 | static const int CHECKSIZE = 9; |
53 | static const int SCROLLBAR_EXTENT = 12; | 53 | static const int SCROLLBAR_EXTENT = 12; |
54 | 54 | ||
55 | 55 | ||
56 | /* | 56 | /* |
57 | * Copyright (C) 1999 Daniel M. Duley <mosfet@kde.org> | 57 | * Copyright (C) 1999 Daniel M. Duley <mosfet@kde.org> |
58 | * LGPLv2 from kdelibs/kdefx/kdrawutil.cpp | 58 | * LGPLv2 from kdelibs/kdefx/kdrawutil.cpp |
59 | */ | 59 | */ |
60 | void kColorBitmaps(QPainter *p, const QColorGroup &g, int x, int y, | 60 | void kColorBitmaps(QPainter *p, const QColorGroup &g, int x, int y, |
61 | QBitmap *lightColor, QBitmap *midColor, | 61 | QBitmap *lightColor, QBitmap *midColor, |
62 | QBitmap *midlightColor, QBitmap *darkColor, | 62 | QBitmap *midlightColor, QBitmap *darkColor, |
63 | QBitmap *blackColor, QBitmap *whiteColor) | 63 | QBitmap *blackColor, QBitmap *whiteColor) |
64 | { | 64 | { |
65 | QBitmap *bitmaps[]={lightColor, midColor, midlightColor, darkColor, | 65 | QBitmap *bitmaps[]={lightColor, midColor, midlightColor, darkColor, |
66 | blackColor, whiteColor}; | 66 | blackColor, whiteColor}; |
67 | 67 | ||
68 | QColor colors[]={g.light(), g.mid(), g.midlight(), g.dark(), | 68 | QColor colors[]={g.light(), g.mid(), g.midlight(), g.dark(), |
69 | Qt::black, Qt::white}; | 69 | Qt::black, Qt::white}; |
70 | 70 | ||
71 | int i; | 71 | int i; |
72 | for(i=0; i < 6; ++i){ | 72 | for(i=0; i < 6; ++i){ |
73 | if(bitmaps[i]){ | 73 | if(bitmaps[i]){ |
74 | if(!bitmaps[i]->mask()) | 74 | if(!bitmaps[i]->mask()) |
75 | bitmaps[i]->setMask(*bitmaps[i]); | 75 | bitmaps[i]->setMask(*bitmaps[i]); |
76 | p->setPen(colors[i]); | 76 | p->setPen(colors[i]); |
77 | p->drawPixmap(x, y, *bitmaps[i]); | 77 | p->drawPixmap(x, y, *bitmaps[i]); |
78 | } | 78 | } |
79 | } | 79 | } |
80 | } | 80 | } |
81 | 81 | ||
82 | 82 | ||
83 | /* | 83 | /* |
84 | * drawMenuBarItem is not virtual | 84 | * drawMenuBarItem is not virtual |
85 | * this way we define our draw handler | 85 | * this way we define our draw handler |
86 | */ | 86 | */ |
87 | typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, | 87 | typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, |
88 | QColorGroup &, bool, bool); | 88 | QColorGroup &, bool, bool); |
89 | 89 | ||
90 | extern QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); | 90 | extern QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); |
91 | 91 | ||
92 | 92 | ||
93 | PhaseStyle::PhaseStyle() | 93 | PhaseStyle::PhaseStyle() |
94 | : QWindowsStyle() | 94 | : QWindowsStyle() |
95 | { | 95 | { |
96 | setName( "PhaseStyle" ); | 96 | setName( "PhaseStyle" ); |
97 | 97 | ||
98 | /* small default sizes */ | 98 | /* small default sizes */ |
99 | setButtonDefaultIndicatorWidth(1); | 99 | setButtonDefaultIndicatorWidth(1); |
100 | setScrollBarExtent(SCROLLBAR_EXTENT, SCROLLBAR_EXTENT); | 100 | setScrollBarExtent(SCROLLBAR_EXTENT, SCROLLBAR_EXTENT); |
101 | setSliderThickness(12); | 101 | setSliderThickness(12); |
102 | setButtonMargin( 1 ); | 102 | setButtonMargin( 1 ); |
103 | 103 | ||
104 | // create bitmaps | 104 | // create bitmaps |
105 | uarrow = QBitmap(6, 6, uarrow_bits, true); | 105 | uarrow = QBitmap(6, 6, uarrow_bits, true); |
106 | uarrow.setMask(uarrow); | 106 | uarrow.setMask(uarrow); |
107 | darrow = QBitmap(6, 6, darrow_bits, true); | 107 | darrow = QBitmap(6, 6, darrow_bits, true); |
108 | darrow.setMask(darrow); | 108 | darrow.setMask(darrow); |
109 | larrow = QBitmap(6, 6, larrow_bits, true); | 109 | larrow = QBitmap(6, 6, larrow_bits, true); |
110 | larrow.setMask(larrow); | 110 | larrow.setMask(larrow); |
111 | rarrow = QBitmap(6, 6, rarrow_bits, true); | 111 | rarrow = QBitmap(6, 6, rarrow_bits, true); |
112 | rarrow.setMask(rarrow); | 112 | rarrow.setMask(rarrow); |
113 | bplus = QBitmap(6, 6, bplus_bits, true); | 113 | bplus = QBitmap(6, 6, bplus_bits, true); |
114 | bplus.setMask(bplus); | 114 | bplus.setMask(bplus); |
115 | bminus = QBitmap(6, 6, bminus_bits, true); | 115 | bminus = QBitmap(6, 6, bminus_bits, true); |
116 | bminus.setMask(bminus); | 116 | bminus.setMask(bminus); |
117 | bcheck = QBitmap(9, 9, bcheck_bits, true); | 117 | bcheck = QBitmap(9, 9, bcheck_bits, true); |
118 | bcheck.setMask(bcheck); | 118 | bcheck.setMask(bcheck); |
119 | dexpand = QBitmap(9, 9, dexpand_bits, true); | 119 | dexpand = QBitmap(9, 9, dexpand_bits, true); |
120 | dexpand.setMask(dexpand); | 120 | dexpand.setMask(dexpand); |
121 | rexpand = QBitmap(9, 9, rexpand_bits, true); | 121 | rexpand = QBitmap(9, 9, rexpand_bits, true); |
122 | rexpand.setMask(rexpand); | 122 | rexpand.setMask(rexpand); |
123 | doodad_mid = QBitmap(4, 4, doodad_mid_bits, true); | 123 | doodad_mid = QBitmap(4, 4, doodad_mid_bits, true); |
124 | doodad_light = QBitmap(4, 4, doodad_light_bits, true); | 124 | doodad_light = QBitmap(4, 4, doodad_light_bits, true); |
125 | } | 125 | } |
126 | 126 | ||
127 | PhaseStyle::~PhaseStyle() { | 127 | PhaseStyle::~PhaseStyle() { |
128 | /* deleted by Qt */ | 128 | /* deleted by Qt */ |
129 | } | 129 | } |
130 | 130 | ||
131 | void PhaseStyle::drawCheckMark ( QPainter * p, int x, int y, int w, | 131 | void PhaseStyle::drawCheckMark ( QPainter * p, int x, int y, int w, |
132 | int h, const QColorGroup & g, | 132 | int h, const QColorGroup & g, |
133 | bool , bool) { | 133 | bool , bool) { |
134 | p->setPen(g.text()); | 134 | p->setPen(g.text()); |
135 | p->drawPixmap(x+w/2-4, y+h/2-4, bcheck); | 135 | p->drawPixmap(x+w/2-4, y+h/2-4, bcheck); |
136 | } | 136 | } |
137 | 137 | ||
138 | void PhaseStyle::drawArrow(QPainter *painter, Qt::ArrowType type, bool down, | 138 | void PhaseStyle::drawArrow(QPainter *painter, Qt::ArrowType type, bool down, |
139 | int x, int y, int w, int h, const QColorGroup &group, | 139 | int x, int y, int w, int h, const QColorGroup &group, |
140 | bool enabled , const QBrush * ) { | 140 | bool enabled , const QBrush * ) { |
141 | switch( type ) { | 141 | switch( type ) { |
142 | case UpArrow: | 142 | case UpArrow: |
143 | if (enabled) | 143 | if (enabled) |
144 | painter->setPen(down ? group.midlight() : group.dark()); | 144 | painter->setPen(down ? group.midlight() : group.dark()); |
145 | else painter->setPen(group.mid()); | 145 | else painter->setPen(group.mid()); |
146 | painter->drawPixmap(x+w/2-3, y+h/2-3, uarrow); | 146 | painter->drawPixmap(x+w/2-3, y+h/2-3, uarrow); |
147 | break; | 147 | break; |
148 | case DownArrow: | 148 | case DownArrow: |
149 | if (enabled) painter->setPen(down ? group.midlight() : group.dark()); | 149 | if (enabled) painter->setPen(down ? group.midlight() : group.dark()); |
150 | else painter->setPen(group.mid()); | 150 | else painter->setPen(group.mid()); |
151 | painter->drawPixmap(x+w/2-3, y+h/2-3, darrow); | 151 | painter->drawPixmap(x+w/2-3, y+h/2-3, darrow); |
152 | break; | 152 | break; |
153 | case LeftArrow: | 153 | case LeftArrow: |
154 | if (enabled) painter->setPen(down ? group.midlight() : group.dark()); | 154 | if (enabled) painter->setPen(down ? group.midlight() : group.dark()); |
155 | else painter->setPen(group.mid()); | 155 | else painter->setPen(group.mid()); |
156 | painter->drawPixmap(x+w/2-3, y+h/2-3, larrow); | 156 | painter->drawPixmap(x+w/2-3, y+h/2-3, larrow); |
157 | break; | 157 | break; |
158 | case RightArrow: | 158 | case RightArrow: |
159 | if (enabled) painter->setPen(down ? group.midlight() : group.dark()); | 159 | if (enabled) painter->setPen(down ? group.midlight() : group.dark()); |
160 | else painter->setPen(group.mid()); | 160 | else painter->setPen(group.mid()); |
161 | painter->drawPixmap(x+w/2-3, y+h/2-3, rarrow); | 161 | painter->drawPixmap(x+w/2-3, y+h/2-3, rarrow); |
162 | break; | 162 | break; |
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
166 | void PhaseStyle::drawPushButton(QPushButton *btn, QPainter *painter) { | 166 | void PhaseStyle::drawPushButton(QPushButton *btn, QPainter *painter) { |
167 | QRect r = btn->rect(); | 167 | QRect r = btn->rect(); |
168 | int x = r.x(); | 168 | int x = r.x(); |
169 | int y = r.y(); | 169 | int y = r.y(); |
170 | int h = r.height(); | 170 | int h = r.height(); |
171 | int w = r.width(); | 171 | int w = r.width(); |
172 | bool depress = btn->isOn() || btn->isDown(); | 172 | bool depress = btn->isOn() || btn->isDown(); |
173 | QColorGroup group = btn->colorGroup(); | 173 | QColorGroup group = btn->colorGroup(); |
174 | QBrush brush(group.button() ); | 174 | QBrush brush(group.button() ); |
175 | // int bd = pixelMetric(PM_ButtonDefaultIndicator, widget) + 1; | 175 | // int bd = pixelMetric(PM_ButtonDefaultIndicator, widget) + 1; |
176 | static int bd = 2; | 176 | static int bd = 2; |
177 | 177 | ||
178 | if (btn->isDefault() && !depress) { | 178 | if (btn->isDefault() && !depress) { |
179 | drawPanel(painter, x, y, w, h, group, | 179 | drawPanel(painter, x, y, w, h, group, |
180 | &group.brush(QColorGroup::Mid), true); | 180 | &group.brush(QColorGroup::Mid), true); |
181 | drawBevelButton(painter, x+bd, y+bd, w-bd*2, h-bd*2, group, | 181 | drawBevelButton(painter, x+bd, y+bd, w-bd*2, h-bd*2, group, |
182 | false, &brush ); | 182 | false, &brush ); |
183 | } else { | 183 | } else { |
184 | drawButton(painter, x, y, w, h, group, depress, | 184 | drawButton(painter, x, y, w, h, group, depress, |
185 | &brush ); | 185 | &brush ); |
186 | } | 186 | } |
187 | 187 | ||
188 | if (btn->hasFocus() ) { // draw focus | 188 | if (btn->hasFocus() ) { // draw focus |
189 | QColor col; | 189 | QColor col; |
190 | drawFocusRect(painter, r, group, | 190 | drawFocusRect(painter, r, group, |
191 | &col, false ); | 191 | &col, false ); |
192 | } | 192 | } |
193 | } | 193 | } |
194 | 194 | ||
195 | 195 | ||
196 | void PhaseStyle::drawPanel(QPainter* painter, int x, int y, int w, int h, | 196 | void PhaseStyle::drawPanel(QPainter* painter, int x, int y, int w, int h, |
197 | const QColorGroup& group, bool sunken, | 197 | const QColorGroup& group, bool sunken, |
198 | int , const QBrush* fill) { | 198 | int , const QBrush* fill) { |
199 | int x2 = x + w - 1; | 199 | int x2 = x + w - 1; |
200 | int y2 = y + h - 1; | 200 | int y2 = y + h - 1; |
201 | painter->save(); | 201 | painter->save(); |
202 | 202 | ||
203 | if (sunken) { | 203 | if (sunken) { |
204 | painter->setPen(group.dark()); | 204 | painter->setPen(group.dark()); |
205 | painter->drawRect(x+1, y+1, w-2, h-2); | 205 | painter->drawRect(x+1, y+1, w-2, h-2); |
206 | painter->setPen(group.midlight()); | 206 | painter->setPen(group.midlight()); |
207 | painter->drawLine(x+1, y2, x2, y2); | 207 | painter->drawLine(x+1, y2, x2, y2); |
208 | painter->drawLine(x2, y+1, x2, y2-1); | 208 | painter->drawLine(x2, y+1, x2, y2-1); |
209 | painter->setPen(group.mid()); | 209 | painter->setPen(group.mid()); |
210 | painter->drawLine(x, y, x, y2-1); | 210 | painter->drawLine(x, y, x, y2-1); |
211 | painter->drawLine(x+1, y, x2-1, y); | 211 | painter->drawLine(x+1, y, x2-1, y); |
212 | painter->setPen(group.background()); | 212 | painter->setPen(group.background()); |
213 | painter->drawPoint(x, y2); | 213 | painter->drawPoint(x, y2); |
214 | painter->drawPoint(x2, y); | 214 | painter->drawPoint(x2, y); |
215 | } else { | 215 | } else { |
216 | painter->setPen(group.dark()); | 216 | painter->setPen(group.dark()); |
217 | painter->drawRect(x, y, w, h); | 217 | painter->drawRect(x, y, w, h); |
218 | painter->setPen(group.midlight()); | 218 | painter->setPen(group.midlight()); |
219 | painter->drawLine(x+1, y+1, x2-2, y+1); | 219 | painter->drawLine(x+1, y+1, x2-2, y+1); |
220 | painter->drawLine(x+1, y+2, x+1, y2-2); | 220 | painter->drawLine(x+1, y+2, x+1, y2-2); |
221 | painter->setPen(group.mid()); | 221 | painter->setPen(group.mid()); |
222 | painter->drawLine(x+2, y2-1, x2-1, y2-1); | 222 | painter->drawLine(x+2, y2-1, x2-1, y2-1); |
223 | painter->drawLine(x2-1, y+2, x2-1, y2-2); | 223 | painter->drawLine(x2-1, y+2, x2-1, y2-2); |
224 | painter->setPen(group.background()); | 224 | painter->setPen(group.background()); |
225 | painter->drawPoint(x+1, y2-1); | 225 | painter->drawPoint(x+1, y2-1); |
226 | painter->drawPoint(x2-1, y+1); | 226 | painter->drawPoint(x2-1, y+1); |
227 | } | 227 | } |
228 | 228 | ||
229 | if (fill) { | 229 | if (fill) { |
230 | painter->fillRect(x+2, y+2, w-4, h-4, *fill ); | 230 | painter->fillRect(x+2, y+2, w-4, h-4, *fill ); |
231 | } | 231 | } |
232 | painter->restore(); | 232 | painter->restore(); |
233 | } | 233 | } |
234 | 234 | ||
235 | 235 | ||
236 | 236 | ||
237 | void PhaseStyle::drawButton(QPainter *p, int x, int y, int w, int h, | 237 | void PhaseStyle::drawButton(QPainter *p, int x, int y, int w, int h, |
238 | const QColorGroup &group, bool sunken , | 238 | const QColorGroup &group, bool sunken , |
239 | const QBrush *fill ) { | 239 | const QBrush *fill ) { |
240 | int x2 = x + w - 1; | 240 | int x2 = x + w - 1; |
241 | int y2 = y + h - 1; | 241 | int y2 = y + h - 1; |
242 | 242 | ||
243 | p->setPen(group.midlight()); | 243 | p->setPen(group.midlight()); |
244 | p->drawLine(x+1, y2, x2, y2); | 244 | p->drawLine(x+1, y2, x2, y2); |
245 | p->drawLine(x2, y+1, x2, y2-1); | 245 | p->drawLine(x2, y+1, x2, y2-1); |
246 | 246 | ||
247 | p->setPen(group.mid()); | 247 | p->setPen(group.mid()); |
248 | p->drawLine(x, y, x2-1, y); | 248 | p->drawLine(x, y, x2-1, y); |
249 | p->drawLine(x, y+1, x, y2-1); | 249 | p->drawLine(x, y+1, x, y2-1); |
250 | 250 | ||
251 | p->setPen(group.button()); | 251 | p->setPen(group.button()); |
252 | p->drawPoint(x, y2); | 252 | p->drawPoint(x, y2); |
253 | p->drawPoint(x2, y); | 253 | p->drawPoint(x2, y); |
254 | 254 | ||
255 | drawBevelButton(p, x+1, y+1, w-2, h-2, group, sunken, | 255 | drawBevelButton(p, x+1, y+1, w-2, h-2, group, sunken, |
256 | fill); | 256 | fill); |
257 | } | 257 | } |
258 | 258 | ||
259 | void PhaseStyle::drawButtonMask( QPainter* p, int x, int y, | 259 | void PhaseStyle::drawButtonMask( QPainter* p, int x, int y, |
260 | int w, int h ) { | 260 | int w, int h ) { |
261 | QRect rect(x, y, w, h ); | 261 | QRect rect(x, y, w, h ); |
262 | p->fillRect(rect, Qt::color1); | 262 | p->fillRect(rect, Qt::color1); |
263 | p->setPen(Qt::color0); | 263 | p->setPen(Qt::color0); |
264 | } | 264 | } |
265 | 265 | ||
266 | 266 | ||
267 | void PhaseStyle::drawBevelButton(QPainter* p, int x, int y, | 267 | void PhaseStyle::drawBevelButton(QPainter* p, int x, int y, |
268 | int w, int h, const QColorGroup& group, | 268 | int w, int h, const QColorGroup& group, |
269 | bool sunken, const QBrush* fill ) { | 269 | bool sunken, const QBrush* fill ) { |
270 | int x2 = x + w - 1; | 270 | int x2 = x + w - 1; |
271 | int y2 = y + h - 1; | 271 | int y2 = y + h - 1; |
272 | p->save(); | 272 | p->save(); |
273 | 273 | ||
274 | p->setPen(group.dark()); | 274 | p->setPen(group.dark()); |
275 | p->drawRect(x, y, w, h); | 275 | p->drawRect(x, y, w, h); |
276 | 276 | ||
277 | p->setPen(sunken ? group.mid() : group.midlight()); | 277 | p->setPen(sunken ? group.mid() : group.midlight()); |
278 | p->drawLine(x+1, y+1, x2-2, y+1); | 278 | p->drawLine(x+1, y+1, x2-2, y+1); |
279 | p->drawLine(x+1, y+2, x+1, y2-2); | 279 | p->drawLine(x+1, y+2, x+1, y2-2); |
280 | 280 | ||
281 | p->setPen(sunken ? group.midlight() : group.mid()); | 281 | p->setPen(sunken ? group.midlight() : group.mid()); |
282 | p->drawLine(x+2, y2-1, x2-1, y2-1); | 282 | p->drawLine(x+2, y2-1, x2-1, y2-1); |
283 | p->drawLine(x2-1, y+2, x2-1, y2-2); | 283 | p->drawLine(x2-1, y+2, x2-1, y2-2); |
284 | 284 | ||
285 | p->setPen(group.button()); | 285 | p->setPen(group.button()); |
286 | p->drawPoint(x+1, y2-1); | 286 | p->drawPoint(x+1, y2-1); |
287 | p->drawPoint(x2-1, y+1); | 287 | p->drawPoint(x2-1, y+1); |
288 | 288 | ||
289 | QBrush b = fill ? *fill : group.brush( QColorGroup::Button ); | 289 | QBrush b = fill ? *fill : group.brush( QColorGroup::Button ); |
290 | if (sunken) { | 290 | if (sunken) { |
291 | // sunken bevels don't get gradients | 291 | // sunken bevels don't get gradients |
292 | p->fillRect(x+2, y+2, w-4, h-4, b); | 292 | p->fillRect(x+2, y+2, w-4, h-4, b); |
293 | } else | 293 | } else |
294 | drawPhaseGradient(p, QRect(x+2, y+2, w-4, h-4), b.color() ); | 294 | drawPhaseGradient(p, QRect(x+2, y+2, w-4, h-4), b.color() ); |
295 | 295 | ||
296 | p->restore(); | 296 | p->restore(); |
297 | } | 297 | } |
298 | 298 | ||
299 | void PhaseStyle::drawPhaseGradient(QPainter* painter, | 299 | void PhaseStyle::drawPhaseGradient(QPainter* painter, |
300 | const QRect& rect, | 300 | const QRect& rect, |
301 | const QColor& color )const { | 301 | const QColor& color )const { |
302 | painter->fillRect(rect, color); | 302 | painter->fillRect(rect, color); |
303 | } | 303 | } |
304 | 304 | ||
305 | void PhaseStyle::polish( QWidget* widget ) { | 305 | void PhaseStyle::polish( QWidget* widget ) { |
306 | QWindowsStyle::polish(widget ); | 306 | QWindowsStyle::polish(widget ); |
307 | 307 | ||
308 | #if 0 | 308 | #if 0 |
309 | if (widget->inherits("QMenuBar") || | 309 | if (widget->inherits("QMenuBar") || |
310 | widget->inherits("QPopupMenu" ) || | 310 | widget->inherits("QPopupMenu" ) || |
311 | widget->inherits("QToolButton") || | 311 | widget->inherits("QToolButton") || |
312 | widget->inherits("QHeader" ) ) { | 312 | widget->inherits("QHeader" ) ) { |
313 | widget->setBackgroundMode(QWidget::NoBackground); | 313 | widget->setBackgroundMode(QWidget::NoBackground); |
314 | } | 314 | } |
315 | // else if (widget->inherits("QFrame") ) { | 315 | // else if (widget->inherits("QFrame") ) { |
316 | // widget->installEventFilter(this); | 316 | // widget->installEventFilter(this); |
317 | // } | 317 | // } |
318 | #endif | 318 | #endif |
319 | } | 319 | } |
320 | 320 | ||
321 | void PhaseStyle::unPolish( QWidget *w ) | 321 | void PhaseStyle::unPolish( QWidget *w ) |
322 | { | 322 | { |
323 | QWindowsStyle::unPolish( w ); | 323 | QWindowsStyle::unPolish( w ); |
324 | } | 324 | } |
325 | 325 | ||
326 | void PhaseStyle::polish( QPalette &pal ) { | 326 | void PhaseStyle::polish( QPalette &pal ) { |
327 | QWindowsStyle::polish( pal ); | 327 | QWindowsStyle::polish( pal ); |
328 | // lighten up a bit, so the look is not so "crisp" | 328 | // lighten up a bit, so the look is not so "crisp" |
329 | if (QPixmap::defaultDepth() > 8) { // but not on low color displays | 329 | if (QPixmap::defaultDepth() > 8) { // but not on low color displays |
330 | pal.setColor(QPalette::Disabled, QColorGroup::Dark, | 330 | pal.setColor(QPalette::Disabled, QColorGroup::Dark, |
331 | pal.color(QPalette::Disabled, QColorGroup::Dark).light(contrast)); | 331 | pal.color(QPalette::Disabled, QColorGroup::Dark).light(contrast)); |
332 | pal.setColor(QPalette::Active, QColorGroup::Dark, | 332 | pal.setColor(QPalette::Active, QColorGroup::Dark, |
333 | pal.color(QPalette::Active, QColorGroup::Dark).light(contrast)); | 333 | pal.color(QPalette::Active, QColorGroup::Dark).light(contrast)); |
334 | pal.setColor(QPalette::Inactive, QColorGroup::Dark, | 334 | pal.setColor(QPalette::Inactive, QColorGroup::Dark, |
335 | pal.color(QPalette::Inactive, QColorGroup::Dark).light(contrast)); | 335 | pal.color(QPalette::Inactive, QColorGroup::Dark).light(contrast)); |
336 | } | 336 | } |
337 | } | 337 | } |
338 | 338 | ||
339 | void PhaseStyle::polish( QApplication* app ) { | 339 | void PhaseStyle::polish( QApplication* app ) { |
340 | QWindowsStyle::polish( app ); | 340 | QWindowsStyle::polish( app ); |
341 | 341 | ||
342 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl)&PhaseStyle::drawMenuBarItem); | 342 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl)&PhaseStyle::drawMenuBarItem); |
343 | } | 343 | } |
344 | 344 | ||
345 | void PhaseStyle::unPolish( QApplication* app ) { | 345 | void PhaseStyle::unPolish( QApplication* app ) { |
346 | QWindowsStyle::unPolish(app); | 346 | QWindowsStyle::unPolish(app); |
347 | qt_set_draw_menu_bar_impl ( 0 ); | 347 | qt_set_draw_menu_bar_impl ( 0 ); |
348 | } | 348 | } |
349 | 349 | ||
350 | void PhaseStyle::drawPushButtonLabel (QPushButton *button, QPainter *painter) { | 350 | void PhaseStyle::drawPushButtonLabel (QPushButton *button, QPainter *painter) { |
351 | bool active = button->isOn() || button->isDown(); | 351 | bool active = button->isOn() || button->isDown(); |
352 | QRect r = pushButtonContentsRect( button ); | 352 | QRect r = pushButtonContentsRect( button ); |
353 | QColorGroup group = button->colorGroup(); | 353 | QColorGroup group = button->colorGroup(); |
354 | int x, y, w, h; | 354 | int x, y, w, h; |
355 | r.rect( &x, &y, &w, &h ); | 355 | r.rect( &x, &y, &w, &h ); |
356 | bool sunken = false; | 356 | bool sunken = false; |
357 | QIconSet::Mode mode; | 357 | QIconSet::Mode mode; |
358 | QPixmap pixmap; | 358 | QPixmap pixmap; |
359 | 359 | ||
360 | if (active) {// shift contents | 360 | if (active) {// shift contents |
361 | x++; y++; | 361 | x++; y++; |
362 | sunken = true; | 362 | sunken = true; |
363 | } | 363 | } |
364 | 364 | ||
365 | 365 | ||
366 | if (button->isMenuButton()) { // draw the indicator | 366 | if (button->isMenuButton()) { // draw the indicator |
367 | //dx = pixelMetric(PM_MenuButtonIndicator, widget); | 367 | //dx = pixelMetric(PM_MenuButtonIndicator, widget); |
368 | int dx = menuButtonIndicatorWidth( button->height() ); | 368 | int dx = menuButtonIndicatorWidth( button->height() ); |
369 | drawArrow(painter, Qt::DownArrow, active, | 369 | drawArrow(painter, Qt::DownArrow, active, |
370 | x+w-dx, y+2, dx-4, h-4, group,button->isEnabled() ); | 370 | x+w-dx, y+2, dx-4, h-4, group,button->isEnabled() ); |
371 | w -= dx; | 371 | w -= dx; |
372 | } | 372 | } |
373 | 373 | ||
374 | if (button->iconSet() && !button->iconSet()->isNull()) { // draw icon | 374 | if (button->iconSet() && !button->iconSet()->isNull()) { // draw icon |
375 | if (button->isEnabled()) { | 375 | if (button->isEnabled()) { |
376 | if (button->hasFocus()) { | 376 | if (button->hasFocus()) { |
377 | mode = QIconSet::Active; | 377 | mode = QIconSet::Active; |
378 | } else { | 378 | } else { |
379 | mode = QIconSet::Normal; | 379 | mode = QIconSet::Normal; |
380 | } | 380 | } |
381 | } else { | 381 | } else { |
382 | mode = QIconSet::Disabled; | 382 | mode = QIconSet::Disabled; |
383 | } | 383 | } |
384 | 384 | ||
385 | #if 0 | 385 | #if 0 |
386 | if (button->isToggleButton() && button->isOn()) { | 386 | if (button->isToggleButton() && button->isOn()) { |
387 | state = true; | 387 | state = true; |
388 | } else { | 388 | } else { |
389 | state = false; | 389 | state = false; |
390 | } | 390 | } |
391 | #endif | 391 | #endif |
392 | 392 | ||
393 | pixmap = button->iconSet()->pixmap(QIconSet::Small, mode); | 393 | if ( mode == QIconSet::Disabled ) |
394 | pixmap = button->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
395 | else | ||
396 | pixmap = button->iconSet()->pixmap(); | ||
394 | if (button->text().isEmpty() && !button->pixmap()) { | 397 | if (button->text().isEmpty() && !button->pixmap()) { |
395 | painter->drawPixmap(x+w/2 - pixmap.width()/2, | 398 | painter->drawPixmap(x+w/2 - pixmap.width()/2, |
396 | y+h/2 - pixmap.height()/2, pixmap); | 399 | y+h/2 - pixmap.height()/2, pixmap); |
397 | } else { | 400 | } else { |
398 | painter->drawPixmap(x+4, y+h/2 - pixmap.height()/2, pixmap); | 401 | painter->drawPixmap(x+4, y+h/2 - pixmap.height()/2, pixmap); |
399 | } | 402 | } |
400 | x += pixmap.width() + 4; | 403 | x += pixmap.width() + 4; |
401 | w -= pixmap.width() + 4; | 404 | w -= pixmap.width() + 4; |
402 | } | 405 | } |
403 | 406 | ||
404 | if (active || button->isDefault()) { // default button | 407 | if (active || button->isDefault()) { // default button |
405 | for(int n=0; n<2; n++) { | 408 | for(int n=0; n<2; n++) { |
406 | drawItem(painter, x+n, y, w, h, | 409 | drawItem(painter, x+n, y, w, h, |
407 | AlignCenter | ShowPrefix, | 410 | AlignCenter | ShowPrefix, |
408 | button->colorGroup(), | 411 | button->colorGroup(), |
409 | button->isEnabled(), | 412 | button->isEnabled(), |
410 | button->pixmap(), | 413 | button->pixmap(), |
411 | button->text(), -1, | 414 | button->text(), -1, |
412 | (button->isEnabled()) ? | 415 | (button->isEnabled()) ? |
413 | &button->colorGroup().buttonText() : | 416 | &button->colorGroup().buttonText() : |
414 | &button->colorGroup().mid()); | 417 | &button->colorGroup().mid()); |
415 | } | 418 | } |
416 | } else { // normal button | 419 | } else { // normal button |
417 | drawItem(painter, x, y, w, h, | 420 | drawItem(painter, x, y, w, h, |
418 | AlignCenter | ShowPrefix, | 421 | AlignCenter | ShowPrefix, |
419 | button->colorGroup(), | 422 | button->colorGroup(), |
420 | button->isEnabled(), | 423 | button->isEnabled(), |
421 | button->pixmap(), | 424 | button->pixmap(), |
422 | button->text(), -1, | 425 | button->text(), -1, |
423 | (button->isEnabled()) ? | 426 | (button->isEnabled()) ? |
424 | &button->colorGroup().buttonText() : | 427 | &button->colorGroup().buttonText() : |
425 | &button->colorGroup().mid()); | 428 | &button->colorGroup().mid()); |
426 | } | 429 | } |
427 | } | 430 | } |
428 | 431 | ||
429 | 432 | ||
430 | void PhaseStyle::drawFocusRect(QPainter *painter, const QRect &rect, | 433 | void PhaseStyle::drawFocusRect(QPainter *painter, const QRect &rect, |
431 | const QColorGroup &group, | 434 | const QColorGroup &group, |
432 | const QColor *, bool atBorder) { | 435 | const QColor *, bool atBorder) { |
433 | 436 | ||
434 | 437 | ||
435 | QPen old = painter->pen(); | 438 | QPen old = painter->pen(); |
436 | painter->setPen(group.highlight().dark(contrast)); | 439 | painter->setPen(group.highlight().dark(contrast)); |
437 | painter->setBrush(NoBrush); | 440 | painter->setBrush(NoBrush); |
438 | 441 | ||
439 | if ( atBorder ) | 442 | if ( atBorder ) |
440 | painter->drawRect(QRect(rect.x()+1, rect.y()+1, | 443 | painter->drawRect(QRect(rect.x()+1, rect.y()+1, |
441 | rect.width()-2, rect.height()-2 )); | 444 | rect.width()-2, rect.height()-2 )); |
442 | else | 445 | else |
443 | painter->drawRect(rect); | 446 | painter->drawRect(rect); |
444 | 447 | ||
445 | 448 | ||
446 | painter->setPen(old); | 449 | painter->setPen(old); |
447 | 450 | ||
448 | } | 451 | } |
449 | 452 | ||
450 | void PhaseStyle::drawSeperator( QPainter* painter, int x, int y, int w, | 453 | void PhaseStyle::drawSeperator( QPainter* painter, int x, int y, int w, |
451 | int h, const QColorGroup& group, bool, | 454 | int h, const QColorGroup& group, bool, |
452 | int , int ) { | 455 | int , int ) { |
453 | qWarning( "Seperator" ); | 456 | qWarning( "Seperator" ); |
454 | QRect rect(x, y, w, h); | 457 | QRect rect(x, y, w, h); |
455 | int x2 = rect.right(); | 458 | int x2 = rect.right(); |
456 | int y2 = rect.bottom(); | 459 | int y2 = rect.bottom(); |
457 | 460 | ||
458 | painter->setPen(group.dark()); | 461 | painter->setPen(group.dark()); |
459 | if (w < h) | 462 | if (w < h) |
460 | painter->drawLine(w/2, y, w/2, y2); | 463 | painter->drawLine(w/2, y, w/2, y2); |
461 | else | 464 | else |
462 | painter->drawLine(x, h/2, x2, h/2); | 465 | painter->drawLine(x, h/2, x2, h/2); |
463 | } | 466 | } |
464 | 467 | ||
465 | void PhaseStyle::drawMenuBarItem(QPainter* p, int x, int y, int w, int h, | 468 | void PhaseStyle::drawMenuBarItem(QPainter* p, int x, int y, int w, int h, |
466 | QMenuItem *mi, QColorGroup& g, bool enabled, | 469 | QMenuItem *mi, QColorGroup& g, bool enabled, |
467 | bool act ) { | 470 | bool act ) { |
468 | return QWindowsStyle::drawMenuBarItem(p, x, y, w, h, mi, g, enabled, act); | 471 | return QWindowsStyle::drawMenuBarItem(p, x, y, w, h, mi, g, enabled, act); |
469 | } | 472 | } |
470 | 473 | ||
471 | 474 | ||
472 | void PhaseStyle::drawIndicator(QPainter* painter, int x, int y, int w, int h, | 475 | void PhaseStyle::drawIndicator(QPainter* painter, int x, int y, int w, int h, |
473 | const QColorGroup &group, int state, bool, | 476 | const QColorGroup &group, int state, bool, |
474 | bool enabled ) { | 477 | bool enabled ) { |
475 | drawPanel(painter, x, y, w, h, group, true, 1, enabled ? | 478 | drawPanel(painter, x, y, w, h, group, true, 1, enabled ? |
476 | &group.brush(QColorGroup::Base) : | 479 | &group.brush(QColorGroup::Base) : |
477 | &group.brush(QColorGroup::Background)); | 480 | &group.brush(QColorGroup::Background)); |
478 | 481 | ||
479 | if (QButton::On == state ) { | 482 | if (QButton::On == state ) { |
480 | painter->setPen(group.dark()); | 483 | painter->setPen(group.dark()); |
481 | painter->drawRect(x+3, y+3, w-6, h-6); | 484 | painter->drawRect(x+3, y+3, w-6, h-6); |
482 | painter->fillRect(x+4, y+4, w-8, h-8, | 485 | painter->fillRect(x+4, y+4, w-8, h-8, |
483 | group.brush(QColorGroup::Highlight)); | 486 | group.brush(QColorGroup::Highlight)); |
484 | } | 487 | } |
485 | } | 488 | } |
486 | 489 | ||
487 | 490 | ||
488 | void PhaseStyle::drawExclusiveIndicator(QPainter* painter, int x, int y, int w, int h, | 491 | void PhaseStyle::drawExclusiveIndicator(QPainter* painter, int x, int y, int w, int h, |
489 | const QColorGroup &group, bool on, | 492 | const QColorGroup &group, bool on, |
490 | bool /*down*/, bool enabled) { | 493 | bool /*down*/, bool enabled) { |
491 | 494 | ||
492 | QRect r(x, y, w, h ); | 495 | QRect r(x, y, w, h ); |
493 | 496 | ||
494 | 497 | ||
495 | /* | 498 | /* |
496 | * As Polygon and Polyline are broken in Qt2 lets use | 499 | * As Polygon and Polyline are broken in Qt2 lets use |
497 | * something not that spectacilur -> ellipse | 500 | * something not that spectacilur -> ellipse |
498 | */ | 501 | */ |
499 | painter->save(); | 502 | painter->save(); |
500 | painter->fillRect(x, y, w, h, group.background()); | 503 | painter->fillRect(x, y, w, h, group.background()); |
501 | 504 | ||
502 | 505 | ||
503 | painter->setBrush(enabled | 506 | painter->setBrush(enabled |
504 | ? group.brush(QColorGroup::Base) | 507 | ? group.brush(QColorGroup::Base) |
505 | : group.brush(QColorGroup::Background)); | 508 | : group.brush(QColorGroup::Background)); |
506 | painter->setPen(group.dark()); | 509 | painter->setPen(group.dark()); |
507 | 510 | ||
508 | if (0 == w % 2) --w; | 511 | if (0 == w % 2) --w; |
509 | if (0 == h % 2) --h; | 512 | if (0 == h % 2) --h; |
510 | painter->drawEllipse(x, y, w, h ); | 513 | painter->drawEllipse(x, y, w, h ); |
511 | 514 | ||
512 | if(on) { | 515 | if(on) { |
513 | painter->setBrush(group.brush(QColorGroup::Highlight)); | 516 | painter->setBrush(group.brush(QColorGroup::Highlight)); |
514 | painter->drawEllipse(x+3,y+3,w-6,h-6); | 517 | painter->drawEllipse(x+3,y+3,w-6,h-6); |
515 | } | 518 | } |
516 | 519 | ||
517 | painter->restore(); | 520 | painter->restore(); |
518 | } | 521 | } |
519 | 522 | ||
520 | 523 | ||
521 | /* | 524 | /* |
522 | * Does not get called in QWS as it seems | 525 | * Does not get called in QWS as it seems |
523 | */ | 526 | */ |
524 | void PhaseStyle::drawExclusiveIndicatorMask(QPainter *painter, int x, int y, int w, | 527 | void PhaseStyle::drawExclusiveIndicatorMask(QPainter *painter, int x, int y, int w, |
525 | int h, bool /*on*/ ) { | 528 | int h, bool /*on*/ ) { |
526 | return; | 529 | return; |
527 | 530 | ||
528 | 531 | ||
529 | 532 | ||
530 | if (0 != w%2) --w; | 533 | if (0 != w%2) --w; |
531 | if (0 != h%2) --h; | 534 | if (0 != h%2) --h; |
532 | 535 | ||
533 | QRect r(x, y, w, h ); | 536 | QRect r(x, y, w, h ); |
534 | int x2 = r.right(); | 537 | int x2 = r.right(); |
535 | int y2 = r.bottom(); | 538 | int y2 = r.bottom(); |
536 | int cx = (x + x2) / 2; | 539 | int cx = (x + x2) / 2; |
537 | int cy = (y + y2) / 2; | 540 | int cy = (y + y2) / 2; |
538 | QPointArray parray; | 541 | QPointArray parray; |
539 | 542 | ||
540 | 543 | ||
541 | painter->setBrush(Qt::color1); | 544 | painter->setBrush(Qt::color1); |
542 | painter->setPen(Qt::color1); | 545 | painter->setPen(Qt::color1); |
543 | parray.putPoints(0, 8, | 546 | parray.putPoints(0, 8, |
544 | x,cy+1, x,cy, cx,y, cx+1,y, | 547 | x,cy+1, x,cy, cx,y, cx+1,y, |
545 | x2,cy, x2,cy+1, cx+1,y2, cx,y2); | 548 | x2,cy, x2,cy+1, cx+1,y2, cx,y2); |
546 | painter->drawPolygon(parray, 0, 8); | 549 | painter->drawPolygon(parray, 0, 8); |
547 | } | 550 | } |
548 | 551 | ||
549 | int PhaseStyle::defaultFrameWidth()const { | 552 | int PhaseStyle::defaultFrameWidth()const { |
550 | return 1; | 553 | return 1; |
551 | } | 554 | } |
552 | 555 | ||
553 | int PhaseStyle::popupMenuItemHeight ( bool , | 556 | int PhaseStyle::popupMenuItemHeight ( bool , |
554 | QMenuItem * mi, | 557 | QMenuItem * mi, |
555 | const QFontMetrics & fm ) { | 558 | const QFontMetrics & fm ) { |
556 | int h = 0; | 559 | int h = 0; |
557 | if (mi->custom() ) { | 560 | if (mi->custom() ) { |
558 | h = mi->custom()->sizeHint().height(); | 561 | h = mi->custom()->sizeHint().height(); |
559 | if (!mi->custom()->fullSpan() ) | 562 | if (!mi->custom()->fullSpan() ) |
560 | h += ITEMVMARGIN*2 + ITEMFRAME*2; | 563 | h += ITEMVMARGIN*2 + ITEMFRAME*2; |
561 | }else if (mi->isSeparator() ) { | 564 | }else if (mi->isSeparator() ) { |
562 | h = 1; | 565 | h = 1; |
563 | }else { | 566 | }else { |
564 | if ( mi->pixmap() ) { | 567 | if ( mi->pixmap() ) { |
565 | h = QMAX(h, mi->pixmap()->height() + ITEMFRAME*2); | 568 | h = QMAX(h, mi->pixmap()->height() + ITEMFRAME*2); |
566 | }else { | 569 | }else { |
567 | h = QMAX(h, MINICONSIZE+ITEMFRAME*2 ); | 570 | h = QMAX(h, MINICONSIZE+ITEMFRAME*2 ); |
568 | h = QMAX(h, fm.height() | 571 | h = QMAX(h, fm.height() |
569 | + ITEMVMARGIN*2 + ITEMFRAME*2 ); | 572 | + ITEMVMARGIN*2 + ITEMFRAME*2 ); |
570 | } | 573 | } |
571 | if ( mi->iconSet() ) | 574 | if ( mi->iconSet() ) |
572 | h = QMAX(h, mi->iconSet()-> | 575 | h = QMAX(h, mi->iconSet()->pixmap().height() |
573 | pixmap(QIconSet::Small, QIconSet::Normal ).height() | ||
574 | + ITEMFRAME*2 ); | 576 | + ITEMFRAME*2 ); |
575 | } | 577 | } |
576 | 578 | ||
577 | 579 | ||
578 | return h; | 580 | return h; |
579 | } | 581 | } |
580 | 582 | ||
581 | int PhaseStyle::extraPopupMenuItemWidth(bool checkable, int maxpmw, | 583 | int PhaseStyle::extraPopupMenuItemWidth(bool checkable, int maxpmw, |
582 | QMenuItem* mi, const QFontMetrics& ) { | 584 | QMenuItem* mi, const QFontMetrics& ) { |
583 | int w = 0; | 585 | int w = 0; |
584 | if (mi->isSeparator() ) | 586 | if (mi->isSeparator() ) |
585 | return 3; | 587 | return 3; |
586 | 588 | ||
587 | else if ( mi->pixmap() ) | 589 | else if ( mi->pixmap() ) |
588 | w = mi->pixmap()->width(); | 590 | w = mi->pixmap()->width(); |
589 | 591 | ||
590 | if (!mi->text().isNull() && | 592 | if (!mi->text().isNull() && |
591 | mi->text().find('\t' ) >= 0 ) | 593 | mi->text().find('\t' ) >= 0 ) |
592 | w += 12; | 594 | w += 12; |
593 | else if ( mi->popup() ) | 595 | else if ( mi->popup() ) |
594 | w += 2*ARROWMARGIN; | 596 | w += 2*ARROWMARGIN; |
595 | 597 | ||
596 | if ( maxpmw ) | 598 | if ( maxpmw ) |
597 | w += maxpmw +4; | 599 | w += maxpmw +4; |
598 | 600 | ||
599 | 601 | ||
600 | if ( maxpmw > 0 || checkable ) | 602 | if ( maxpmw > 0 || checkable ) |
601 | w += ITEMHMARGIN*2+8; | 603 | w += ITEMHMARGIN*2+8; |
602 | 604 | ||
603 | w += RIGHTBORDER; | 605 | w += RIGHTBORDER; |
604 | return w; | 606 | return w; |
605 | } | 607 | } |
606 | 608 | ||
607 | QSize PhaseStyle::indicatorSize()const { | 609 | QSize PhaseStyle::indicatorSize()const { |
608 | return QSize( 11, 11 ); | 610 | return QSize( 11, 11 ); |
609 | } | 611 | } |
610 | 612 | ||
611 | QSize PhaseStyle::exclusiveIndicatorSize()const { | 613 | QSize PhaseStyle::exclusiveIndicatorSize()const { |
612 | return QSize( 11, 11 ); | 614 | return QSize( 11, 11 ); |
613 | } | 615 | } |
614 | 616 | ||
615 | void PhaseStyle::getButtonShift( int &x, int &y ) { | 617 | void PhaseStyle::getButtonShift( int &x, int &y ) { |
616 | x++; | 618 | x++; |
617 | y++; | 619 | y++; |
618 | } | 620 | } |
619 | 621 | ||
620 | void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable, | 622 | void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable, |
621 | int maxpmw,int tabwidth, | 623 | int maxpmw,int tabwidth, |
622 | QMenuItem * mi, const QPalette & pal, | 624 | QMenuItem * mi, const QPalette & pal, |
623 | bool act, bool enabled, int x, | 625 | bool act, bool enabled, int x, |
624 | int y, int w, int h ) { | 626 | int y, int w, int h ) { |
625 | if ( !mi ) | 627 | if ( !mi ) |
626 | return; | 628 | return; |
627 | 629 | ||
628 | QRect rect(x, y, w, h ); | 630 | QRect rect(x, y, w, h ); |
629 | int x2, y2; | 631 | int x2, y2; |
630 | x2 = rect.right(); | 632 | x2 = rect.right(); |
631 | y2 = rect.bottom(); | 633 | y2 = rect.bottom(); |
632 | const QColorGroup& g = pal.active(); | 634 | const QColorGroup& g = pal.active(); |
633 | QColorGroup itemg = !enabled ? pal.disabled() : pal.active(); | 635 | QColorGroup itemg = !enabled ? pal.disabled() : pal.active(); |
634 | 636 | ||
635 | if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20); | 637 | if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20); |
636 | 638 | ||
637 | if (act && enabled ) | 639 | if (act && enabled ) |
638 | p->fillRect(x, y, w, h, g.highlight() ); | 640 | p->fillRect(x, y, w, h, g.highlight() ); |
639 | else | 641 | else |
640 | p->fillRect(x, y, w, h, g.background() ); | 642 | p->fillRect(x, y, w, h, g.background() ); |
641 | 643 | ||
642 | // draw seperator | 644 | // draw seperator |
643 | if (mi->isSeparator() ) { | 645 | if (mi->isSeparator() ) { |
644 | p->setPen( g.dark() ); | 646 | p->setPen( g.dark() ); |
645 | p->drawLine( x+8, y+1, x+w-8, y+1 ); | 647 | p->drawLine( x+8, y+1, x+w-8, y+1 ); |
646 | 648 | ||
647 | p->setPen( g.mid() ); | 649 | p->setPen( g.mid() ); |
648 | p->drawLine( x+8, y, x+w-8, y ); | 650 | p->drawLine( x+8, y, x+w-8, y ); |
649 | p->drawPoint(x+w,y+1); | 651 | p->drawPoint(x+w,y+1); |
650 | 652 | ||
651 | p->setPen( g.midlight() ); | 653 | p->setPen( g.midlight() ); |
652 | p->drawLine( x+8, y-1, x+w-8, y-1 ); | 654 | p->drawLine( x+8, y-1, x+w-8, y-1 ); |
653 | p->drawPoint(x+8, y ); | 655 | p->drawPoint(x+8, y ); |
654 | return; | 656 | return; |
655 | } | 657 | } |
656 | 658 | ||
657 | // draw icon | 659 | // draw icon |
658 | QIconSet::Mode mode; | 660 | QIconSet::Mode mode; |
659 | if ( mi->iconSet() && !mi->isChecked() ) { | 661 | if ( mi->iconSet() && !mi->isChecked() ) { |
660 | if ( act ) | 662 | if ( act ) |
661 | mode = enabled ? QIconSet::Active : QIconSet::Disabled; | 663 | mode = enabled ? QIconSet::Active : QIconSet::Disabled; |
662 | else | 664 | else |
663 | mode = enabled ? QIconSet::Normal : QIconSet::Disabled; | 665 | mode = enabled ? QIconSet::Normal : QIconSet::Disabled; |
664 | QPixmap pixmap = mi->iconSet()->pixmap(QIconSet::Small, mode ); | 666 | QPixmap pixmap; |
667 | if ( mode == QIconSet::Disabled ) | ||
668 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
669 | else | ||
670 | pixmap = mi->iconSet()->pixmap(); | ||
665 | QRect pmrect(0, 0, pixmap.width(), pixmap.height() ); | 671 | QRect pmrect(0, 0, pixmap.width(), pixmap.height() ); |
666 | QRect cr(x, y, maxpmw, h ); | 672 | QRect cr(x, y, maxpmw, h ); |
667 | pmrect.moveCenter( cr.center() ); | 673 | pmrect.moveCenter( cr.center() ); |
668 | p->drawPixmap(pmrect.topLeft(), pixmap); | 674 | p->drawPixmap(pmrect.topLeft(), pixmap); |
669 | } | 675 | } |
670 | 676 | ||
671 | // draw check | 677 | // draw check |
672 | if(mi->isChecked() ) { | 678 | if(mi->isChecked() ) { |
673 | drawCheckMark(p, x, y, maxpmw, h, itemg, act, !enabled ); | 679 | drawCheckMark(p, x, y, maxpmw, h, itemg, act, !enabled ); |
674 | } | 680 | } |
675 | 681 | ||
676 | 682 | ||
677 | // draw text | 683 | // draw text |
678 | int xm = maxpmw + 2; | 684 | int xm = maxpmw + 2; |
679 | int xp = x + xm; | 685 | int xp = x + xm; |
680 | int tw = w -xm - 2; | 686 | int tw = w -xm - 2; |
681 | 687 | ||
682 | p->setPen( enabled ? ( act ? g.highlightedText() : g.buttonText() ) : | 688 | p->setPen( enabled ? ( act ? g.highlightedText() : g.buttonText() ) : |
683 | g.mid() ); | 689 | g.mid() ); |
684 | 690 | ||
685 | 691 | ||
686 | if ( mi->custom() ) { | 692 | if ( mi->custom() ) { |
687 | p->save(); | 693 | p->save(); |
688 | mi->custom()->paint(p, g, act, enabled, | 694 | mi->custom()->paint(p, g, act, enabled, |
689 | xp, y+1, tw, h-2 ); | 695 | xp, y+1, tw, h-2 ); |
690 | p->restore(); | 696 | p->restore(); |
691 | }else { // draw label | 697 | }else { // draw label |
692 | QString text = mi->text(); | 698 | QString text = mi->text(); |
693 | if (!text.isNull() ) { | 699 | if (!text.isNull() ) { |
694 | int t = text.find('\t'); | 700 | int t = text.find('\t'); |
695 | const int tflags = AlignVCenter | DontClip | | 701 | const int tflags = AlignVCenter | DontClip | |
696 | ShowPrefix | SingleLine | | 702 | ShowPrefix | SingleLine | |
697 | AlignLeft; | 703 | AlignLeft; |
698 | 704 | ||
699 | if (t >= 0) { | 705 | if (t >= 0) { |
700 | int tabx = x + w - tabwidth - RIGHTBORDER - | 706 | int tabx = x + w - tabwidth - RIGHTBORDER - |
701 | ITEMHMARGIN - ITEMFRAME; | 707 | ITEMHMARGIN - ITEMFRAME; |
702 | p->drawText(tabx, y+ITEMVMARGIN, tabwidth, | 708 | p->drawText(tabx, y+ITEMVMARGIN, tabwidth, |
703 | h-2*ITEMVMARGIN, tflags, | 709 | h-2*ITEMVMARGIN, tflags, |
704 | text.mid(t+1) ); | 710 | text.mid(t+1) ); |
705 | text = text.left(t ); | 711 | text = text.left(t ); |
706 | } | 712 | } |
707 | 713 | ||
708 | // draw left label | 714 | // draw left label |
709 | p->drawText(xp, y+ITEMVMARGIN, | 715 | p->drawText(xp, y+ITEMVMARGIN, |
710 | tw, h-2*ITEMVMARGIN, | 716 | tw, h-2*ITEMVMARGIN, |
711 | tflags, text, t); | 717 | tflags, text, t); |
712 | }else if ( mi->pixmap() ) { // pixmap as label | 718 | }else if ( mi->pixmap() ) { // pixmap as label |
713 | QPixmap pixmap = *mi->pixmap(); | 719 | QPixmap pixmap = *mi->pixmap(); |
714 | if ( pixmap.depth() == 1 ) | 720 | if ( pixmap.depth() == 1 ) |
715 | p->setBackgroundMode( OpaqueMode ); | 721 | p->setBackgroundMode( OpaqueMode ); |
716 | 722 | ||
717 | int dx = ((w-pixmap.width() ) /2 ) + | 723 | int dx = ((w-pixmap.width() ) /2 ) + |
718 | ((w - pixmap.width()) %2 ); | 724 | ((w - pixmap.width()) %2 ); |
719 | p->drawPixmap(x+dx, y+ITEMFRAME, pixmap ); | 725 | p->drawPixmap(x+dx, y+ITEMFRAME, pixmap ); |
720 | 726 | ||
721 | if ( pixmap.depth() == 1 ) | 727 | if ( pixmap.depth() == 1 ) |
722 | p->setBackgroundMode( TransparentMode ); | 728 | p->setBackgroundMode( TransparentMode ); |
723 | } | 729 | } |
724 | } | 730 | } |
725 | 731 | ||
726 | if ( mi->popup() ) { // draw submenu arrow | 732 | if ( mi->popup() ) { // draw submenu arrow |
727 | int dim = (h-2*ITEMFRAME) / 2; | 733 | int dim = (h-2*ITEMFRAME) / 2; |
728 | drawArrow( p, RightArrow, false, | 734 | drawArrow( p, RightArrow, false, |
729 | x+w-ARROWMARGIN-ITEMFRAME-dim, | 735 | x+w-ARROWMARGIN-ITEMFRAME-dim, |
730 | y+h/2-dim/2, dim, dim, g, enabled ); | 736 | y+h/2-dim/2, dim, dim, g, enabled ); |
731 | } | 737 | } |
732 | } | 738 | } |
733 | 739 | ||
734 | 740 | ||
735 | QRect PhaseStyle::comboButtonRect ( int x, int y, int w, int h ) { | 741 | QRect PhaseStyle::comboButtonRect ( int x, int y, int w, int h ) { |
736 | return QRect(x+2, y+2, w-4-17, h-5 ); | 742 | return QRect(x+2, y+2, w-4-17, h-5 ); |
737 | } | 743 | } |
738 | 744 | ||
739 | void PhaseStyle::drawComboButton( QPainter * p, int x, int y, | 745 | void PhaseStyle::drawComboButton( QPainter * p, int x, int y, |
740 | int w, int h, | 746 | int w, int h, |
741 | const QColorGroup & g, | 747 | const QColorGroup & g, |
742 | bool sunken, | 748 | bool sunken, |
743 | bool editable, | 749 | bool editable, |
744 | bool, | 750 | bool, |
745 | const QBrush *) { | 751 | const QBrush *) { |
746 | drawButton(p, x, y, w, h, g, | 752 | drawButton(p, x, y, w, h, g, |
747 | sunken, &g.brush(QColorGroup::Button )); | 753 | sunken, &g.brush(QColorGroup::Button )); |
748 | 754 | ||
749 | for ( int n = 0; n < 2; ++n ) | 755 | for ( int n = 0; n < 2; ++n ) |
750 | kColorBitmaps(p, g, w-16+(6*n), y+(h/2)-2, | 756 | kColorBitmaps(p, g, w-16+(6*n), y+(h/2)-2, |
751 | 0, &doodad_mid, &doodad_light, 0, 0, 0 ); | 757 | 0, &doodad_mid, &doodad_light, 0, 0, 0 ); |
752 | 758 | ||
753 | 759 | ||
754 | if (editable ) { | 760 | if (editable ) { |
755 | const int x2 = x+w-1; const int y2 = y+h-1; | 761 | const int x2 = x+w-1; const int y2 = y+h-1; |
756 | p->setPen(g.dark()); | 762 | p->setPen(g.dark()); |
757 | p->drawLine(x2+1, y, x2+1, y2); | 763 | p->drawLine(x2+1, y, x2+1, y2); |
758 | p->setPen(g.midlight()); | 764 | p->setPen(g.midlight()); |
759 | p->drawLine(x2+2, y, x2+2, y2-1); | 765 | p->drawLine(x2+2, y, x2+2, y2-1); |
760 | p->setPen(g.button()); | 766 | p->setPen(g.button()); |
761 | p->drawPoint(x2+2, y2); | 767 | p->drawPoint(x2+2, y2); |
762 | } | 768 | } |
763 | 769 | ||
764 | p->setPen(g.buttonText() ); | 770 | p->setPen(g.buttonText() ); |
765 | } | 771 | } |
766 | 772 | ||
767 | void PhaseStyle::tabbarMetrics( const QTabBar* t, int &hframe, int &vframe, int& ov ) { | 773 | void PhaseStyle::tabbarMetrics( const QTabBar* t, int &hframe, int &vframe, int& ov ) { |
768 | QCommonStyle::tabbarMetrics( t, hframe, vframe, ov ); | 774 | QCommonStyle::tabbarMetrics( t, hframe, vframe, ov ); |
769 | hframe -= 2; | 775 | hframe -= 2; |
770 | vframe += 1; | 776 | vframe += 1; |
771 | } | 777 | } |
772 | 778 | ||
773 | 779 | ||
774 | void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, | 780 | void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, |
775 | bool selected ) { | 781 | bool selected ) { |
776 | bool edge = false; | 782 | bool edge = false; |
777 | int x, y, w, h; | 783 | int x, y, w, h; |
778 | QRect r = tab->rect(); | 784 | QRect r = tab->rect(); |
779 | r.rect(&x,&y,&w,&h); | 785 | r.rect(&x,&y,&w,&h); |
780 | const int x2 = x+w-1; | 786 | const int x2 = x+w-1; |
781 | const int y2 = y+h-1; | 787 | const int y2 = y+h-1; |
782 | const QColorGroup &group = bar->colorGroup(); | 788 | const QColorGroup &group = bar->colorGroup(); |
783 | 789 | ||
784 | 790 | ||
785 | painter->save(); | 791 | painter->save(); |
786 | 792 | ||
787 | // what position is the tab? | 793 | // what position is the tab? |
788 | if ((bar->count() == 1 )) | 794 | if ((bar->count() == 1 )) |
789 | edge = true; | 795 | edge = true; |
790 | else | 796 | else |
791 | edge = false; | 797 | edge = false; |
792 | 798 | ||
793 | switch (QTabBar::Shape(bar->shape())) { | 799 | switch (QTabBar::Shape(bar->shape())) { |
794 | case QTabBar::RoundedAbove: | 800 | case QTabBar::RoundedAbove: |
795 | case QTabBar::TriangularAbove: { | 801 | case QTabBar::TriangularAbove: { |
796 | if (!selected) { // shorten | 802 | if (!selected) { // shorten |
797 | y += 2; h -= 2; | 803 | y += 2; h -= 2; |
798 | } | 804 | } |
799 | if (selected) { | 805 | if (selected) { |
800 | painter->setPen(Qt::NoPen); | 806 | painter->setPen(Qt::NoPen); |
801 | painter->fillRect(x+1, y+1, w-1, h-1, | 807 | painter->fillRect(x+1, y+1, w-1, h-1, |
802 | group.brush(QColorGroup::Background)); | 808 | group.brush(QColorGroup::Background)); |
803 | } else | 809 | } else |
804 | drawPhaseGradient(painter, QRect(x+1, y+1, w-1, h-2), | 810 | drawPhaseGradient(painter, QRect(x+1, y+1, w-1, h-2), |
805 | group.background().dark(contrast) ); | 811 | group.background().dark(contrast) ); |
806 | 812 | ||
807 | 813 | ||
808 | // draw tab | 814 | // draw tab |
809 | painter->setPen(group.dark()); | 815 | painter->setPen(group.dark()); |
810 | painter->drawLine(x, y, x, y2-2); | 816 | painter->drawLine(x, y, x, y2-2); |
811 | painter->drawLine(x+1, y, x2, y); | 817 | painter->drawLine(x+1, y, x2, y); |
812 | painter->drawLine(x2, y+1, x2, y2-2); | 818 | painter->drawLine(x2, y+1, x2, y2-2); |
813 | 819 | ||
814 | painter->setPen(group.mid()); | 820 | painter->setPen(group.mid()); |
815 | painter->drawLine(x2-1, y+2, x2-1, y2-2); | 821 | painter->drawLine(x2-1, y+2, x2-1, y2-2); |
816 | 822 | ||
817 | painter->setPen(group.midlight()); | 823 | painter->setPen(group.midlight()); |
818 | painter->drawLine(x+1, y+1, x2-2, y+1); | 824 | painter->drawLine(x+1, y+1, x2-2, y+1); |
819 | if ((selected) || edge) painter->drawLine(x+1, y+2, x+1, y2-2); | 825 | if ((selected) || edge) painter->drawLine(x+1, y+2, x+1, y2-2); |
820 | 826 | ||
821 | // finish off bottom | 827 | // finish off bottom |
822 | if (selected) { | 828 | if (selected) { |
823 | painter->setPen(group.dark()); | 829 | painter->setPen(group.dark()); |
824 | painter->drawPoint(x, y2-1); | 830 | painter->drawPoint(x, y2-1); |
825 | painter->drawPoint(x2, y2-1); | 831 | painter->drawPoint(x2, y2-1); |
826 | 832 | ||
827 | painter->setPen(group.midlight()); | 833 | painter->setPen(group.midlight()); |
828 | painter->drawPoint(x, y2); | 834 | painter->drawPoint(x, y2); |
829 | painter->drawLine(x+1, y2-1, x+1, y2); | 835 | painter->drawLine(x+1, y2-1, x+1, y2); |
830 | painter->drawPoint(x2, y2); | 836 | painter->drawPoint(x2, y2); |
831 | 837 | ||
832 | painter->setPen(group.mid()); | 838 | painter->setPen(group.mid()); |
833 | painter->drawPoint(x2-1, y2-1); | 839 | painter->drawPoint(x2-1, y2-1); |
834 | 840 | ||
835 | if (edge) { | 841 | if (edge) { |
836 | painter->setPen(group.dark()); | 842 | painter->setPen(group.dark()); |
837 | painter->drawLine(x, y2-1, x, y2); | 843 | painter->drawLine(x, y2-1, x, y2); |
838 | painter->setPen(group.midlight()); | 844 | painter->setPen(group.midlight()); |
839 | painter->drawPoint(x+1, y2); | 845 | painter->drawPoint(x+1, y2); |
840 | } | 846 | } |
841 | } else { | 847 | } else { |
842 | painter->setPen(group.dark()); | 848 | painter->setPen(group.dark()); |
843 | painter->drawLine(x, y2-1, x2, y2-1); | 849 | painter->drawLine(x, y2-1, x2, y2-1); |
844 | 850 | ||
845 | painter->setPen(group.midlight()); | 851 | painter->setPen(group.midlight()); |
846 | painter->drawLine(x, y2, x2, y2); | 852 | painter->drawLine(x, y2, x2, y2); |
847 | 853 | ||
848 | if (edge) { | 854 | if (edge) { |
849 | painter->setPen(group.dark()); | 855 | painter->setPen(group.dark()); |
850 | painter->drawLine(x, y2-1, x, y2); | 856 | painter->drawLine(x, y2-1, x, y2); |
851 | } | 857 | } |
852 | } | 858 | } |
853 | break; | 859 | break; |
854 | } | 860 | } |
855 | case QTabBar::RoundedBelow: | 861 | case QTabBar::RoundedBelow: |
856 | case QTabBar::TriangularBelow: { | 862 | case QTabBar::TriangularBelow: { |
857 | painter->setBrush( group.background().dark(contrast)); | 863 | painter->setBrush( group.background().dark(contrast)); |
858 | painter->setPen(Qt::NoPen); | 864 | painter->setPen(Qt::NoPen); |
859 | painter->fillRect(x+1, y+1, w-1, h-1, painter->brush()); | 865 | painter->fillRect(x+1, y+1, w-1, h-1, painter->brush()); |
860 | 866 | ||
861 | // draw tab | 867 | // draw tab |
862 | painter->setPen(group.dark()); | 868 | painter->setPen(group.dark()); |
863 | painter->drawLine(x, y+1, x, y2); | 869 | painter->drawLine(x, y+1, x, y2); |
864 | painter->drawLine(x+1, y2, x2, y2); | 870 | painter->drawLine(x+1, y2, x2, y2); |
865 | painter->drawLine(x2, y+1, x2, y2-1); | 871 | painter->drawLine(x2, y+1, x2, y2-1); |
866 | 872 | ||
867 | painter->setPen(group.mid()); | 873 | painter->setPen(group.mid()); |
868 | painter->drawLine(x2-1, y+1, x2-1, y2-1); | 874 | painter->drawLine(x2-1, y+1, x2-1, y2-1); |
869 | painter->drawLine(x+2, y2-1, x2-1, y2-1); | 875 | painter->drawLine(x+2, y2-1, x2-1, y2-1); |
870 | painter->drawPoint(x, y); | 876 | painter->drawPoint(x, y); |
871 | painter->drawPoint(x2, y); | 877 | painter->drawPoint(x2, y); |
872 | 878 | ||
873 | if ((selected) || edge) { | 879 | if ((selected) || edge) { |
874 | painter->setPen(group.midlight()); | 880 | painter->setPen(group.midlight()); |
875 | painter->drawLine(x+1, y+1, x+1, y2-2); | 881 | painter->drawLine(x+1, y+1, x+1, y2-2); |
876 | } | 882 | } |
877 | 883 | ||
878 | // finish off top | 884 | // finish off top |
879 | if (selected) { | 885 | if (selected) { |
880 | if (edge) { | 886 | if (edge) { |
881 | painter->setPen(group.dark()); | 887 | painter->setPen(group.dark()); |
882 | painter->drawPoint(x, y); | 888 | painter->drawPoint(x, y); |
883 | painter->setPen(group.midlight()); | 889 | painter->setPen(group.midlight()); |
884 | painter->drawPoint(x+1, y); | 890 | painter->drawPoint(x+1, y); |
885 | } | 891 | } |
886 | } else { | 892 | } else { |
887 | painter->setPen(group.dark()); | 893 | painter->setPen(group.dark()); |
888 | painter->drawLine(x, y+1, x2, y+1); | 894 | painter->drawLine(x, y+1, x2, y+1); |
889 | 895 | ||
890 | painter->setPen(group.mid()); | 896 | painter->setPen(group.mid()); |
891 | painter->drawLine(x, y, x2, y); | 897 | painter->drawLine(x, y, x2, y); |
892 | 898 | ||
893 | if (edge) { | 899 | if (edge) { |
894 | painter->setPen(group.dark()); | 900 | painter->setPen(group.dark()); |
895 | painter->drawPoint(x, y); | 901 | painter->drawPoint(x, y); |
896 | } | 902 | } |
897 | } | 903 | } |
898 | break; | 904 | break; |
899 | } | 905 | } |
900 | } | 906 | } |
901 | 907 | ||
902 | painter->restore(); | 908 | painter->restore(); |
903 | } | 909 | } |
904 | 910 | ||
905 | void PhaseStyle::drawTabMask( QPainter* p, const QTabBar*, QTab* tab, | 911 | void PhaseStyle::drawTabMask( QPainter* p, const QTabBar*, QTab* tab, |
906 | bool ) { | 912 | bool ) { |
907 | p->fillRect(tab->rect(), Qt::color1); | 913 | p->fillRect(tab->rect(), Qt::color1); |
908 | } | 914 | } |
909 | 915 | ||
910 | void PhaseStyle::drawToolButton(QPainter * p, int x, int y, | 916 | void PhaseStyle::drawToolButton(QPainter * p, int x, int y, |
911 | int w, int h, const QColorGroup & g, | 917 | int w, int h, const QColorGroup & g, |
912 | bool sunken, | 918 | bool sunken, |
913 | const QBrush * fill ) { | 919 | const QBrush * fill ) { |
914 | QRect r(x, y, w, h ); | 920 | QRect r(x, y, w, h ); |
915 | p->fillRect(r, g.background()); | 921 | p->fillRect(r, g.background()); |
916 | 922 | ||
917 | drawPanel(p, x, y, w, h, g, sunken, 1, | 923 | drawPanel(p, x, y, w, h, g, sunken, 1, |
918 | fill ? fill : &g.brush(QColorGroup::Button) ); | 924 | fill ? fill : &g.brush(QColorGroup::Button) ); |
919 | 925 | ||
920 | 926 | ||
921 | p->setPen(g.text() ); | 927 | p->setPen(g.text() ); |
922 | } | 928 | } |
923 | 929 | ||
924 | 930 | ||
925 | /* | 931 | /* |
926 | * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> | 932 | * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> |
927 | * | 933 | * |
928 | * ../web/webstyle.cpp | 934 | * ../web/webstyle.cpp |
929 | */ | 935 | */ |
930 | void PhaseStyle::scrollBarMetrics(const QScrollBar* sb, int& sliderMin, | 936 | void PhaseStyle::scrollBarMetrics(const QScrollBar* sb, int& sliderMin, |
931 | int& sliderMax, int &sliderLength, | 937 | int& sliderMax, int &sliderLength, |
932 | int& buttonDim ) { | 938 | int& buttonDim ) { |
933 | int maxlen; | 939 | int maxlen; |
934 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; | 940 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; |
935 | int len = (horizontal) ? sb->width() : sb->height(); | 941 | int len = (horizontal) ? sb->width() : sb->height(); |
936 | int extent = (horizontal) ? sb->height() : sb->width(); | 942 | int extent = (horizontal) ? sb->height() : sb->width(); |
937 | 943 | ||
938 | if (len > (extent - 1) * 2) | 944 | if (len > (extent - 1) * 2) |
939 | buttonDim = extent; | 945 | buttonDim = extent; |
940 | else | 946 | else |
941 | buttonDim = len / 2 - 1; | 947 | buttonDim = len / 2 - 1; |
942 | 948 | ||
943 | if (horizontal) | 949 | if (horizontal) |
944 | sliderMin = buttonDim * 2; | 950 | sliderMin = buttonDim * 2; |
945 | else | 951 | else |
946 | sliderMin = 1; | 952 | sliderMin = 1; |
947 | 953 | ||
948 | maxlen = len - buttonDim * 2 - 1; | 954 | maxlen = len - buttonDim * 2 - 1; |
949 | int div = QMAX(1, (sb->maxValue() - sb->minValue() + sb->pageStep() ) ); | 955 | int div = QMAX(1, (sb->maxValue() - sb->minValue() + sb->pageStep() ) ); |
950 | 956 | ||
951 | sliderLength = | 957 | sliderLength = |
952 | (sb->pageStep() * maxlen) / div; | 958 | (sb->pageStep() * maxlen) / div; |
953 | 959 | ||
954 | if (sliderLength < SCROLLBAR_EXTENT) | 960 | if (sliderLength < SCROLLBAR_EXTENT) |
955 | sliderLength = SCROLLBAR_EXTENT; | 961 | sliderLength = SCROLLBAR_EXTENT; |
956 | 962 | ||
957 | if (sliderLength > maxlen) | 963 | if (sliderLength > maxlen) |
958 | sliderLength = maxlen; | 964 | sliderLength = maxlen; |
959 | 965 | ||
960 | sliderMax = sliderMin + maxlen - sliderLength; | 966 | sliderMax = sliderMin + maxlen - sliderLength; |
961 | } | 967 | } |
962 | 968 | ||
963 | void PhaseStyle::drawScrollBarControls( QPainter* p, const QScrollBar *sb, | 969 | void PhaseStyle::drawScrollBarControls( QPainter* p, const QScrollBar *sb, |
964 | int sliderStart, uint controls, | 970 | int sliderStart, uint controls, |
965 | uint activeControl) { | 971 | uint activeControl) { |
966 | const bool horizontal = (sb->orientation() == Qt::Horizontal ); | 972 | const bool horizontal = (sb->orientation() == Qt::Horizontal ); |
967 | int sliderMin, sliderMax, sliderLength, buttonDim; | 973 | int sliderMin, sliderMax, sliderLength, buttonDim; |
968 | const QColorGroup& g = sb->colorGroup(); | 974 | const QColorGroup& g = sb->colorGroup(); |
969 | QRect sub, add, subPage, addPage, slider; | 975 | QRect sub, add, subPage, addPage, slider; |
970 | int x, y, x2, y2; | 976 | int x, y, x2, y2; |
971 | 977 | ||
972 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 978 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
973 | 979 | ||
974 | /* lets get the positions */ | 980 | /* lets get the positions */ |
975 | scrollBarItemPositions(sb, horizontal, sliderStart, | 981 | scrollBarItemPositions(sb, horizontal, sliderStart, |
976 | sliderMax, sliderLength, buttonDim, | 982 | sliderMax, sliderLength, buttonDim, |
977 | sub, add, subPage, addPage, | 983 | sub, add, subPage, addPage, |
978 | slider ); | 984 | slider ); |
979 | 985 | ||
980 | 986 | ||
981 | /* sanity */ | 987 | /* sanity */ |
982 | if ( sliderStart > sliderMax ) | 988 | if ( sliderStart > sliderMax ) |
983 | sliderStart = sliderMax; | 989 | sliderStart = sliderMax; |
984 | 990 | ||
985 | // addline | 991 | // addline |
986 | if ( controls & AddLine && add.isValid() ) { | 992 | if ( controls & AddLine && add.isValid() ) { |
987 | x = add.x(); y = add.y(); | 993 | x = add.x(); y = add.y(); |
988 | x2 = add.width(); y2 = add.height(); | 994 | x2 = add.width(); y2 = add.height(); |
989 | const bool down = (activeControl & AddLine ); | 995 | const bool down = (activeControl & AddLine ); |
990 | drawBevelButton(p, x, y, x2, y2, g, down, | 996 | drawBevelButton(p, x, y, x2, y2, g, down, |
991 | &g.brush(QColorGroup::Button)); | 997 | &g.brush(QColorGroup::Button)); |
992 | 998 | ||
993 | Qt::ArrowType arrow = horizontal ? RightArrow : DownArrow; | 999 | Qt::ArrowType arrow = horizontal ? RightArrow : DownArrow; |
994 | if (down ) { | 1000 | if (down ) { |
995 | switch (arrow ) { | 1001 | switch (arrow ) { |
996 | case DownArrow: y++; break; | 1002 | case DownArrow: y++; break; |
997 | case RightArrow: x++; break; | 1003 | case RightArrow: x++; break; |
998 | default: break; | 1004 | default: break; |
999 | } | 1005 | } |
1000 | } | 1006 | } |
1001 | drawArrow( p, arrow, down, x, y, x2, y2, g, true ); | 1007 | drawArrow( p, arrow, down, x, y, x2, y2, g, true ); |
1002 | } | 1008 | } |
1003 | 1009 | ||
1004 | if ( controls & SubLine && sub.isValid() ) { | 1010 | if ( controls & SubLine && sub.isValid() ) { |
1005 | x = sub.x(); y = sub.y(); | 1011 | x = sub.x(); y = sub.y(); |
1006 | x2 = sub.width(); y2 = sub.height(); | 1012 | x2 = sub.width(); y2 = sub.height(); |
1007 | const bool down = (activeControl & SubLine ); | 1013 | const bool down = (activeControl & SubLine ); |
1008 | drawBevelButton(p, x, y, x2, y2, g, down, | 1014 | drawBevelButton(p, x, y, x2, y2, g, down, |
1009 | &g.brush(QColorGroup::Button)); | 1015 | &g.brush(QColorGroup::Button)); |
1010 | 1016 | ||
1011 | Qt::ArrowType arrow = horizontal ? LeftArrow : UpArrow; | 1017 | Qt::ArrowType arrow = horizontal ? LeftArrow : UpArrow; |
1012 | if (down ) { | 1018 | if (down ) { |
1013 | switch (arrow ) { | 1019 | switch (arrow ) { |
1014 | case UpArrow: y--; break; | 1020 | case UpArrow: y--; break; |
1015 | case LeftArrow: x--; break; | 1021 | case LeftArrow: x--; break; |
1016 | default: break; | 1022 | default: break; |
1017 | } | 1023 | } |
1018 | } | 1024 | } |
1019 | drawArrow( p, arrow, down, x, y, x2, y2, g, true ); | 1025 | drawArrow( p, arrow, down, x, y, x2, y2, g, true ); |
1020 | } | 1026 | } |
1021 | 1027 | ||
1022 | if ( controls & AddPage && addPage.isValid() ) { | 1028 | if ( controls & AddPage && addPage.isValid() ) { |
1023 | x = addPage.x(); y = addPage.y(); | 1029 | x = addPage.x(); y = addPage.y(); |
1024 | x2 = addPage.right(); y2 = addPage.bottom(); | 1030 | x2 = addPage.right(); y2 = addPage.bottom(); |
1025 | 1031 | ||
1026 | p->fillRect(addPage, g.mid()); | 1032 | p->fillRect(addPage, g.mid()); |
1027 | p->setPen(g.dark()); | 1033 | p->setPen(g.dark()); |
1028 | if (horizontal) { // vertical | 1034 | if (horizontal) { // vertical |
1029 | p->drawLine(x, y, x2, y); | 1035 | p->drawLine(x, y, x2, y); |
1030 | p->drawLine(x, y2, x2, y2); | 1036 | p->drawLine(x, y2, x2, y2); |
1031 | } else { // horizontal | 1037 | } else { // horizontal |
1032 | p->drawLine(x, y, x, y2); | 1038 | p->drawLine(x, y, x, y2); |
1033 | p->drawLine(x2, y, x2, y2); | 1039 | p->drawLine(x2, y, x2, y2); |
1034 | } | 1040 | } |
1035 | } | 1041 | } |
1036 | 1042 | ||
1037 | if ( controls & SubPage && subPage.isValid() ) { | 1043 | if ( controls & SubPage && subPage.isValid() ) { |
1038 | x = subPage.x(); y = subPage.y(); | 1044 | x = subPage.x(); y = subPage.y(); |
1039 | x2 = subPage.right(); y2 = subPage.bottom(); | 1045 | x2 = subPage.right(); y2 = subPage.bottom(); |
1040 | 1046 | ||
1041 | p->fillRect(subPage, g.mid()); | 1047 | p->fillRect(subPage, g.mid()); |
1042 | p->setPen(g.dark()); | 1048 | p->setPen(g.dark()); |
1043 | if (horizontal) { // vertical | 1049 | if (horizontal) { // vertical |
1044 | p->drawLine(x, y, x2, y); | 1050 | p->drawLine(x, y, x2, y); |
1045 | p->drawLine(x, y2, x2, y2); | 1051 | p->drawLine(x, y2, x2, y2); |
1046 | } else { // horizontal | 1052 | } else { // horizontal |
1047 | p->drawLine(x, y, x, y2); | 1053 | p->drawLine(x, y, x, y2); |
1048 | p->drawLine(x2, y, x2, y2); | 1054 | p->drawLine(x2, y, x2, y2); |
1049 | } | 1055 | } |
1050 | } | 1056 | } |
1051 | 1057 | ||
1052 | if ( controls & Slider && slider.isValid() ) { | 1058 | if ( controls & Slider && slider.isValid() ) { |
1053 | x = slider.x(); y = slider.y(); | 1059 | x = slider.x(); y = slider.y(); |
1054 | x2 = slider.width(); y2 = slider.height(); | 1060 | x2 = slider.width(); y2 = slider.height(); |
1055 | const bool down = ( activeControl & Slider ); | 1061 | const bool down = ( activeControl & Slider ); |
1056 | int cx = x + x2/2 -2; int cy = y + y2/2 -2; | 1062 | int cx = x + x2/2 -2; int cy = y + y2/2 -2; |
1057 | 1063 | ||
1058 | drawBevelButton(p, x, y, x2, y2, g, down, | 1064 | drawBevelButton(p, x, y, x2, y2, g, down, |
1059 | &g.brush(QColorGroup::Button) ); | 1065 | &g.brush(QColorGroup::Button) ); |
1060 | 1066 | ||
1061 | if (horizontal && (x2 >=20)) { | 1067 | if (horizontal && (x2 >=20)) { |
1062 | for (int n = -5; n <= 5; n += 5) | 1068 | for (int n = -5; n <= 5; n += 5) |
1063 | kColorBitmaps(p, g, cx+n, cy, | 1069 | kColorBitmaps(p, g, cx+n, cy, |
1064 | 0, &doodad_mid, &doodad_light, 0, 0, 0); | 1070 | 0, &doodad_mid, &doodad_light, 0, 0, 0); |
1065 | } else if (!horizontal && (y2 >= 20)) { | 1071 | } else if (!horizontal && (y2 >= 20)) { |
1066 | for (int n = -5; n <= 5; n += 5) | 1072 | for (int n = -5; n <= 5; n += 5) |
1067 | kColorBitmaps(p, g, cx, cy+n, | 1073 | kColorBitmaps(p, g, cx, cy+n, |
1068 | 0, &doodad_mid, &doodad_light, 0, 0, 0); | 1074 | 0, &doodad_mid, &doodad_light, 0, 0, 0); |
1069 | } | 1075 | } |
1070 | 1076 | ||
1071 | if ( sb->hasFocus() && down ) { | 1077 | if ( sb->hasFocus() && down ) { |
1072 | slider = QRect(slider.x()+2, slider.y()+2, | 1078 | slider = QRect(slider.x()+2, slider.y()+2, |
1073 | slider.width()-2, slider.height()-2 ); | 1079 | slider.width()-2, slider.height()-2 ); |
1074 | drawFocusRect(p, slider, g, false ); | 1080 | drawFocusRect(p, slider, g, false ); |
1075 | } | 1081 | } |
1076 | 1082 | ||
1077 | } | 1083 | } |
1078 | } | 1084 | } |
1079 | 1085 | ||
1080 | /* | 1086 | /* |
1081 | * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> | 1087 | * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> |
1082 | * | 1088 | * |
1083 | * ../web/webstyle.cpp | 1089 | * ../web/webstyle.cpp |
1084 | */ | 1090 | */ |
1085 | QStyle::ScrollControl PhaseStyle::scrollBarPointOver( const QScrollBar * sb, | 1091 | QStyle::ScrollControl PhaseStyle::scrollBarPointOver( const QScrollBar * sb, |
1086 | int sliderStart, | 1092 | int sliderStart, |
1087 | const QPoint & point ) { | 1093 | const QPoint & point ) { |
1088 | if (!sb->rect().contains(point)) | 1094 | if (!sb->rect().contains(point)) |
1089 | return NoScroll; | 1095 | return NoScroll; |
1090 | 1096 | ||
1091 | int sliderMin, sliderMax, sliderLength, buttonDim; | 1097 | int sliderMin, sliderMax, sliderLength, buttonDim; |
1092 | scrollBarMetrics(sb, sliderMin, sliderMax, sliderLength, buttonDim); | 1098 | scrollBarMetrics(sb, sliderMin, sliderMax, sliderLength, buttonDim); |
1093 | 1099 | ||
1094 | if (sb->orientation() == QScrollBar::Horizontal) { | 1100 | if (sb->orientation() == QScrollBar::Horizontal) { |
1095 | int x = point.x(); | 1101 | int x = point.x(); |
1096 | 1102 | ||
1097 | if (x <= buttonDim) | 1103 | if (x <= buttonDim) |
1098 | return SubLine; | 1104 | return SubLine; |
1099 | else if (x <= buttonDim * 2) | 1105 | else if (x <= buttonDim * 2) |
1100 | return AddLine; | 1106 | return AddLine; |
1101 | else if (x < sliderStart) | 1107 | else if (x < sliderStart) |
1102 | return SubPage; | 1108 | return SubPage; |
1103 | else if (x < sliderStart+sliderLength) | 1109 | else if (x < sliderStart+sliderLength) |
1104 | return Slider; | 1110 | return Slider; |
1105 | else | 1111 | else |
1106 | return AddPage; | 1112 | return AddPage; |
1107 | } else { | 1113 | } else { |
1108 | int y = point.y(); | 1114 | int y = point.y(); |
1109 | 1115 | ||
1110 | if (y < sliderStart) | 1116 | if (y < sliderStart) |
1111 | return SubPage; | 1117 | return SubPage; |
1112 | else if (y < sliderStart + sliderLength) | 1118 | else if (y < sliderStart + sliderLength) |
1113 | return Slider; | 1119 | return Slider; |
1114 | else if (y < sliderMax + sliderLength) | 1120 | else if (y < sliderMax + sliderLength) |
1115 | return AddPage; | 1121 | return AddPage; |
1116 | else if (y < sliderMax + sliderLength + buttonDim) | 1122 | else if (y < sliderMax + sliderLength + buttonDim) |
1117 | return SubLine; | 1123 | return SubLine; |
1118 | else | 1124 | else |
1119 | return AddLine; | 1125 | return AddLine; |
1120 | } | 1126 | } |
1121 | } | 1127 | } |
1122 | 1128 | ||
1123 | /* | 1129 | /* |
1124 | * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> | 1130 | * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> |
1125 | * | 1131 | * |
1126 | * ../web/webstyle.cpp | 1132 | * ../web/webstyle.cpp |
1127 | * scrollBarControlsMetrics | 1133 | * scrollBarControlsMetrics |
1128 | */ | 1134 | */ |
1129 | void PhaseStyle::scrollBarItemPositions( const QScrollBar* sb, const bool horizontal, | 1135 | void PhaseStyle::scrollBarItemPositions( const QScrollBar* sb, const bool horizontal, |
1130 | int sliderStart, int sliderMax, | 1136 | int sliderStart, int sliderMax, |
1131 | int sliderLength, int buttonDim, | 1137 | int sliderLength, int buttonDim, |
1132 | QRect &rSub, QRect& rAdd, QRect& rSubPage, | 1138 | QRect &rSub, QRect& rAdd, QRect& rSubPage, |
1133 | QRect &rAddPage, QRect& rSlider ) { | 1139 | QRect &rAddPage, QRect& rSlider ) { |
1134 | 1140 | ||
1135 | int len = horizontal ? sb->width() : sb->height(); | 1141 | int len = horizontal ? sb->width() : sb->height(); |
1136 | int extent = horizontal ? sb->height() : sb->width(); | 1142 | int extent = horizontal ? sb->height() : sb->width(); |
1137 | 1143 | ||
1138 | QColorGroup g = sb->colorGroup(); | 1144 | QColorGroup g = sb->colorGroup(); |
1139 | 1145 | ||
1140 | if (sliderStart > sliderMax) | 1146 | if (sliderStart > sliderMax) |
1141 | sliderStart = sliderMax; | 1147 | sliderStart = sliderMax; |
1142 | 1148 | ||
1143 | int sliderEnd = sliderStart + sliderLength; | 1149 | int sliderEnd = sliderStart + sliderLength; |
1144 | 1150 | ||
1145 | int addX, addY; | 1151 | int addX, addY; |
1146 | int subX, subY; | 1152 | int subX, subY; |
1147 | int subPageX, subPageY, subPageW, subPageH; | 1153 | int subPageX, subPageY, subPageW, subPageH; |
1148 | int addPageX, addPageY, addPageW, addPageH; | 1154 | int addPageX, addPageY, addPageW, addPageH; |
1149 | int sliderX, sliderY, sliderW, sliderH; | 1155 | int sliderX, sliderY, sliderW, sliderH; |
1150 | 1156 | ||
1151 | if (horizontal){ | 1157 | if (horizontal){ |
1152 | subY = 0; | 1158 | subY = 0; |
1153 | addY = 0; | 1159 | addY = 0; |
1154 | subX = 0; | 1160 | subX = 0; |
1155 | addX = buttonDim; | 1161 | addX = buttonDim; |
1156 | 1162 | ||
1157 | subPageX = buttonDim * 2; | 1163 | subPageX = buttonDim * 2; |
1158 | subPageY = 0; | 1164 | subPageY = 0; |
1159 | subPageW = sliderStart - 1; | 1165 | subPageW = sliderStart - 1; |
1160 | subPageH = extent; | 1166 | subPageH = extent; |
1161 | 1167 | ||
1162 | addPageX = sliderEnd; | 1168 | addPageX = sliderEnd; |
1163 | addPageY = 0; | 1169 | addPageY = 0; |
1164 | addPageW = len - sliderEnd; | 1170 | addPageW = len - sliderEnd; |
1165 | addPageH = extent; | 1171 | addPageH = extent; |
1166 | 1172 | ||
1167 | sliderX = sliderStart; | 1173 | sliderX = sliderStart; |
1168 | sliderY = 0; | 1174 | sliderY = 0; |
1169 | sliderW = sliderLength; | 1175 | sliderW = sliderLength; |
1170 | sliderH = extent; | 1176 | sliderH = extent; |
1171 | }else { | 1177 | }else { |
1172 | subX = 0; | 1178 | subX = 0; |
1173 | addX = 0; | 1179 | addX = 0; |
1174 | subY = len - buttonDim * 2; | 1180 | subY = len - buttonDim * 2; |
1175 | addY = len - buttonDim; | 1181 | addY = len - buttonDim; |
1176 | 1182 | ||
1177 | subPageX = 0; | 1183 | subPageX = 0; |
1178 | subPageY = 0; | 1184 | subPageY = 0; |
1179 | subPageW = extent; | 1185 | subPageW = extent; |
1180 | subPageH = sliderStart; | 1186 | subPageH = sliderStart; |
1181 | 1187 | ||
1182 | addPageX = 0; | 1188 | addPageX = 0; |
1183 | addPageY = sliderEnd; | 1189 | addPageY = sliderEnd; |
1184 | addPageW = extent; | 1190 | addPageW = extent; |
1185 | addPageH = subY - sliderEnd; | 1191 | addPageH = subY - sliderEnd; |
1186 | 1192 | ||
1187 | sliderX = 0; | 1193 | sliderX = 0; |
1188 | sliderY = sliderStart; | 1194 | sliderY = sliderStart; |
1189 | sliderW = extent; | 1195 | sliderW = extent; |
1190 | sliderH = sliderLength; | 1196 | sliderH = sliderLength; |
1191 | } | 1197 | } |
1192 | 1198 | ||
1193 | rSub .setRect( subX, subY, buttonDim, buttonDim); | 1199 | rSub .setRect( subX, subY, buttonDim, buttonDim); |
1194 | rAdd .setRect( addX, addY, buttonDim, buttonDim); | 1200 | rAdd .setRect( addX, addY, buttonDim, buttonDim); |
1195 | rSubPage .setRect(subPageX, subPageY, subPageW, subPageH); | 1201 | rSubPage .setRect(subPageX, subPageY, subPageW, subPageH); |
1196 | rAddPage .setRect(addPageX, addPageY, addPageW, addPageH); | 1202 | rAddPage .setRect(addPageX, addPageY, addPageW, addPageH); |
1197 | rSlider .setRect( sliderX, sliderY, sliderW, sliderH); | 1203 | rSlider .setRect( sliderX, sliderY, sliderW, sliderH); |
1198 | 1204 | ||
1199 | } | 1205 | } |
1200 | 1206 | ||
1201 | 1207 | ||
1202 | void PhaseStyle::drawSlider (QPainter * p, int x, int y, | 1208 | void PhaseStyle::drawSlider (QPainter * p, int x, int y, |
1203 | int w, int h, const QColorGroup &g, | 1209 | int w, int h, const QColorGroup &g, |
1204 | Orientation o, bool, bool ) { | 1210 | Orientation o, bool, bool ) { |
1205 | int cx = x + w/2; | 1211 | int cx = x + w/2; |
1206 | int cy = y + h/2; | 1212 | int cy = y + h/2; |
1207 | QBrush brush = g.brush( QColorGroup::Button ); | 1213 | QBrush brush = g.brush( QColorGroup::Button ); |
1208 | 1214 | ||
1209 | if ( o == Horizontal ) { | 1215 | if ( o == Horizontal ) { |
1210 | drawBevelButton(p, cx-5, y, 6, h, g, false, | 1216 | drawBevelButton(p, cx-5, y, 6, h, g, false, |
1211 | &brush ); | 1217 | &brush ); |
1212 | drawBevelButton(p, cx, y, 6, h, g, false, | 1218 | drawBevelButton(p, cx, y, 6, h, g, false, |
1213 | &brush ); | 1219 | &brush ); |
1214 | }else { | 1220 | }else { |
1215 | drawBevelButton(p, x, cy-5, w, 6, g, false, | 1221 | drawBevelButton(p, x, cy-5, w, 6, g, false, |
1216 | &brush ); | 1222 | &brush ); |
1217 | drawBevelButton(p, x, cy, w, 6, g, false, | 1223 | drawBevelButton(p, x, cy, w, 6, g, false, |
1218 | &brush ); | 1224 | &brush ); |
1219 | } | 1225 | } |
1220 | } | 1226 | } |
1221 | 1227 | ||
1222 | void PhaseStyle::drawSliderGroove(QPainter* p, int x, int y, | 1228 | void PhaseStyle::drawSliderGroove(QPainter* p, int x, int y, |
1223 | int w, int h, const QColorGroup& g, | 1229 | int w, int h, const QColorGroup& g, |
1224 | QCOORD , Orientation o ) { | 1230 | QCOORD , Orientation o ) { |
1225 | int cx = x + w/2; | 1231 | int cx = x + w/2; |
1226 | int cy = y + h/2; | 1232 | int cy = y + h/2; |
1227 | 1233 | ||
1228 | if ( o == Horizontal ) { | 1234 | if ( o == Horizontal ) { |
1229 | y = cy-3; h = 7; | 1235 | y = cy-3; h = 7; |
1230 | }else { | 1236 | }else { |
1231 | x = cx-3; w = 7; | 1237 | x = cx-3; w = 7; |
1232 | } | 1238 | } |
1233 | 1239 | ||
1234 | drawPanel(p, x, y, w, h, g, true, 1, | 1240 | drawPanel(p, x, y, w, h, g, true, 1, |
1235 | &g.brush(QColorGroup::Mid ) ); | 1241 | &g.brush(QColorGroup::Mid ) ); |
1236 | } | 1242 | } |
diff --git a/noncore/styles/theme/othemestyle.cpp b/noncore/styles/theme/othemestyle.cpp index 98e7253..106d206 100644 --- a/noncore/styles/theme/othemestyle.cpp +++ b/noncore/styles/theme/othemestyle.cpp | |||
@@ -1,1651 +1,1654 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Daniel M. Duley <mosfet@kde.org> | 2 | Copyright (C) 1999 Daniel M. Duley <mosfet@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include "othemestyle.h" | 19 | #include "othemestyle.h" |
20 | #include "othemebase.h" | 20 | #include "othemebase.h" |
21 | #include <qpe/qpeapplication.h> | 21 | #include <qpe/qpeapplication.h> |
22 | #include <qbitmap.h> | 22 | #include <qbitmap.h> |
23 | #define INCLUDE_MENUITEM_DEF | 23 | #define INCLUDE_MENUITEM_DEF |
24 | #include <qmenudata.h> | 24 | #include <qmenudata.h> |
25 | #include <qpopupmenu.h> | 25 | #include <qpopupmenu.h> |
26 | #include <qtabbar.h> | 26 | #include <qtabbar.h> |
27 | #include <qglobal.h> | 27 | #include <qglobal.h> |
28 | #include <qprogressbar.h> | 28 | #include <qprogressbar.h> |
29 | 29 | ||
30 | #include <limits.h> | 30 | #include <limits.h> |
31 | #include <stdio.h> | 31 | #include <stdio.h> |
32 | 32 | ||
33 | typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, | 33 | typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, |
34 | QColorGroup &, bool, bool); | 34 | QColorGroup &, bool, bool); |
35 | 35 | ||
36 | QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); | 36 | QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); |
37 | 37 | ||
38 | 38 | ||
39 | /* !! HACK !! Beware | 39 | /* !! HACK !! Beware |
40 | * | 40 | * |
41 | * TT forgot to make the QProgressBar widget styleable in Qt 2.x | 41 | * TT forgot to make the QProgressBar widget styleable in Qt 2.x |
42 | * So the only way to customize the drawing, is to intercept the | 42 | * So the only way to customize the drawing, is to intercept the |
43 | * paint event - since we have to use protected functions, we need | 43 | * paint event - since we have to use protected functions, we need |
44 | * to derive a "hack" class from QProgressBar and do the painting | 44 | * to derive a "hack" class from QProgressBar and do the painting |
45 | * in there. | 45 | * in there. |
46 | * | 46 | * |
47 | * - sandman | 47 | * - sandman |
48 | */ | 48 | */ |
49 | 49 | ||
50 | class HackProgressBar : public QProgressBar { | 50 | class HackProgressBar : public QProgressBar { |
51 | public: | 51 | public: |
52 | HackProgressBar ( ); | 52 | HackProgressBar ( ); |
53 | 53 | ||
54 | void paint ( QPaintEvent *event, OThemeStyle *style ) | 54 | void paint ( QPaintEvent *event, OThemeStyle *style ) |
55 | { | 55 | { |
56 | QPainter p( this ); | 56 | QPainter p( this ); |
57 | 57 | ||
58 | if ( !contentsRect().contains( event->rect() ) ) { | 58 | if ( !contentsRect().contains( event->rect() ) ) { |
59 | p.save(); | 59 | p.save(); |
60 | p.setClipRegion( event->region().intersect(frameRect()) ); | 60 | p.setClipRegion( event->region().intersect(frameRect()) ); |
61 | drawFrame( &p); | 61 | drawFrame( &p); |
62 | p.restore(); | 62 | p.restore(); |
63 | } | 63 | } |
64 | if ( event->rect().intersects( contentsRect() )) { | 64 | if ( event->rect().intersects( contentsRect() )) { |
65 | p.setClipRegion( event->region().intersect( contentsRect() ) ); | 65 | p.setClipRegion( event->region().intersect( contentsRect() ) ); |
66 | 66 | ||
67 | int x, y, w, h; | 67 | int x, y, w, h; |
68 | contentsRect ( ). rect ( &x, &y, &w, &h ); | 68 | contentsRect ( ). rect ( &x, &y, &w, &h ); |
69 | 69 | ||
70 | int prog = progress ( ); | 70 | int prog = progress ( ); |
71 | int total = totalSteps ( ); | 71 | int total = totalSteps ( ); |
72 | if ( prog < 0 ) | 72 | if ( prog < 0 ) |
73 | prog = 0; | 73 | prog = 0; |
74 | if ( total <= 0 ) | 74 | if ( total <= 0 ) |
75 | total = 1; | 75 | total = 1; |
76 | int perc = prog * 100 / total; | 76 | int perc = prog * 100 / total; |
77 | 77 | ||
78 | style-> drawProgressBar ( &p, x, y, w, h, colorGroup ( ), perc ); | 78 | style-> drawProgressBar ( &p, x, y, w, h, colorGroup ( ), perc ); |
79 | 79 | ||
80 | if ( progress ( ) >= 0 && totalSteps ( ) > 0 ) { | 80 | if ( progress ( ) >= 0 && totalSteps ( ) > 0 ) { |
81 | QString pstr; | 81 | QString pstr; |
82 | pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ()); | 82 | pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ()); |
83 | p. setPen ( colorGroup().text());//g.highlightedText ( )); | 83 | p. setPen ( colorGroup().text());//g.highlightedText ( )); |
84 | p. drawText (x,y,w-1,h-1,AlignCenter,pstr); | 84 | p. drawText (x,y,w-1,h-1,AlignCenter,pstr); |
85 | } | 85 | } |
86 | } | 86 | } |
87 | } | 87 | } |
88 | }; | 88 | }; |
89 | 89 | ||
90 | 90 | ||
91 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) | 91 | #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) |
92 | 92 | ||
93 | OThemeStyle::OThemeStyle( const QString &configFile ) | 93 | OThemeStyle::OThemeStyle( const QString &configFile ) |
94 | : OThemeBase( configFile ) | 94 | : OThemeBase( configFile ) |
95 | { | 95 | { |
96 | setScrollBarExtent( getSBExtent(), getSBExtent() ); | 96 | setScrollBarExtent( getSBExtent(), getSBExtent() ); |
97 | setButtonDefaultIndicatorWidth( 0 ); // We REALLY should support one, see drawPushButton() below! | 97 | setButtonDefaultIndicatorWidth( 0 ); // We REALLY should support one, see drawPushButton() below! |
98 | } | 98 | } |
99 | 99 | ||
100 | OThemeStyle::~OThemeStyle() | 100 | OThemeStyle::~OThemeStyle() |
101 | {} | 101 | {} |
102 | 102 | ||
103 | void OThemeStyle::polish( QApplication * /*app*/ ) | 103 | void OThemeStyle::polish( QApplication * /*app*/ ) |
104 | { | 104 | { |
105 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &OThemeStyle::drawMenuBarItem); | 105 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &OThemeStyle::drawMenuBarItem); |
106 | } | 106 | } |
107 | 107 | ||
108 | 108 | ||
109 | void OThemeStyle::polish( QPalette &p ) | 109 | void OThemeStyle::polish( QPalette &p ) |
110 | { | 110 | { |
111 | oldPalette = p; | 111 | oldPalette = p; |
112 | 112 | ||
113 | QColor bg = oldPalette. color ( QPalette::Normal, QColorGroup::Background ); | 113 | QColor bg = oldPalette. color ( QPalette::Normal, QColorGroup::Background ); |
114 | 114 | ||
115 | if ( bgcolor. isValid ( )) | 115 | if ( bgcolor. isValid ( )) |
116 | bg = bgcolor; | 116 | bg = bgcolor; |
117 | 117 | ||
118 | if ( isColor ( Background )) | 118 | if ( isColor ( Background )) |
119 | bg = colorGroup ( oldPalette. active ( ), Background )-> background ( ); | 119 | bg = colorGroup ( oldPalette. active ( ), Background )-> background ( ); |
120 | 120 | ||
121 | p = QPalette ( bg, bg ); | 121 | p = QPalette ( bg, bg ); |
122 | 122 | ||
123 | if ( isPixmap( Background ) ) | 123 | if ( isPixmap( Background ) ) |
124 | p. setBrush ( QColorGroup::Background, QBrush ( bg, *uncached ( Background ))); | 124 | p. setBrush ( QColorGroup::Background, QBrush ( bg, *uncached ( Background ))); |
125 | 125 | ||
126 | if ( fgcolor. isValid ( )) { | 126 | if ( fgcolor. isValid ( )) { |
127 | p. setColor ( QColorGroup::Foreground, fgcolor ); | 127 | p. setColor ( QColorGroup::Foreground, fgcolor ); |
128 | p. setColor ( QColorGroup::ButtonText, fgcolor ); | 128 | p. setColor ( QColorGroup::ButtonText, fgcolor ); |
129 | } | 129 | } |
130 | if ( selfgcolor. isValid ( )) | 130 | if ( selfgcolor. isValid ( )) |
131 | p. setColor ( QColorGroup::HighlightedText, selfgcolor ); | 131 | p. setColor ( QColorGroup::HighlightedText, selfgcolor ); |
132 | if ( selbgcolor. isValid ( )) | 132 | if ( selbgcolor. isValid ( )) |
133 | p. setColor ( QColorGroup::Highlight, selbgcolor ); | 133 | p. setColor ( QColorGroup::Highlight, selbgcolor ); |
134 | if ( winfgcolor. isValid ( )) | 134 | if ( winfgcolor. isValid ( )) |
135 | p. setColor ( QColorGroup::Text, winfgcolor ); | 135 | p. setColor ( QColorGroup::Text, winfgcolor ); |
136 | if ( winbgcolor. isValid ( )) | 136 | if ( winbgcolor. isValid ( )) |
137 | p. setColor ( QColorGroup::Base, winbgcolor ); | 137 | p. setColor ( QColorGroup::Base, winbgcolor ); |
138 | 138 | ||
139 | } | 139 | } |
140 | 140 | ||
141 | 141 | ||
142 | void OThemeStyle::unPolish( QApplication *app ) | 142 | void OThemeStyle::unPolish( QApplication *app ) |
143 | { | 143 | { |
144 | qt_set_draw_menu_bar_impl ( 0 ); | 144 | qt_set_draw_menu_bar_impl ( 0 ); |
145 | app->setPalette( oldPalette, true ); | 145 | app->setPalette( oldPalette, true ); |
146 | } | 146 | } |
147 | 147 | ||
148 | void OThemeStyle::polish( QWidget *w ) | 148 | void OThemeStyle::polish( QWidget *w ) |
149 | { | 149 | { |
150 | if ( !w->isTopLevel() ) { | 150 | if ( !w->isTopLevel() ) { |
151 | if ( w->inherits( "QGroupBox" ) | 151 | if ( w->inherits( "QGroupBox" ) |
152 | || w->inherits( "QTabWidget" ) ) { | 152 | || w->inherits( "QTabWidget" ) ) { |
153 | w->setAutoMask( TRUE ); | 153 | w->setAutoMask( TRUE ); |
154 | return ; | 154 | return ; |
155 | } | 155 | } |
156 | if ( w->inherits( "QLabel" ) | 156 | if ( w->inherits( "QLabel" ) |
157 | || w->inherits( "QSlider" ) | 157 | || w->inherits( "QSlider" ) |
158 | || w->inherits( "QButton" ) | 158 | || w->inherits( "QButton" ) |
159 | || w->inherits( "QProgressBar" ) | 159 | || w->inherits( "QProgressBar" ) |
160 | ) { | 160 | ) { |
161 | w->setBackgroundOrigin( QWidget::ParentOrigin ); | 161 | w->setBackgroundOrigin( QWidget::ParentOrigin ); |
162 | } | 162 | } |
163 | } | 163 | } |
164 | if ( w->inherits( "QPopupMenu" ) ) { | 164 | if ( w->inherits( "QPopupMenu" ) ) { |
165 | popupPalette = w->palette(); | 165 | popupPalette = w->palette(); |
166 | if ( isColor( MenuItem ) || isColor( MenuItemDown ) ) { | 166 | if ( isColor( MenuItem ) || isColor( MenuItemDown ) ) { |
167 | QPalette newPal( w->palette() ); | 167 | QPalette newPal( w->palette() ); |
168 | w->setPalettePropagation( QWidget::SamePalette ); | 168 | w->setPalettePropagation( QWidget::SamePalette ); |
169 | if ( isColor( MenuItem ) ) { | 169 | if ( isColor( MenuItem ) ) { |
170 | newPal.setNormal( *colorGroup( newPal.normal(), MenuItem ) ); | 170 | newPal.setNormal( *colorGroup( newPal.normal(), MenuItem ) ); |
171 | newPal.setDisabled( *colorGroup( newPal.normal(), MenuItem ) ); | 171 | newPal.setDisabled( *colorGroup( newPal.normal(), MenuItem ) ); |
172 | } | 172 | } |
173 | if ( isColor( MenuItemDown ) ) | 173 | if ( isColor( MenuItemDown ) ) |
174 | newPal.setActive( *colorGroup( newPal.active(), MenuItemDown ) ); | 174 | newPal.setActive( *colorGroup( newPal.active(), MenuItemDown ) ); |
175 | w->setPalette( newPal ); | 175 | w->setPalette( newPal ); |
176 | } | 176 | } |
177 | } | 177 | } |
178 | else if ( w->inherits( "QCheckBox" ) ) { | 178 | else if ( w->inherits( "QCheckBox" ) ) { |
179 | if ( isColor( IndicatorOff ) || isColor( IndicatorOn ) ) { | 179 | if ( isColor( IndicatorOff ) || isColor( IndicatorOn ) ) { |
180 | QPalette newPal( w->palette() ); | 180 | QPalette newPal( w->palette() ); |
181 | w->setPalettePropagation( QWidget::SamePalette ); | 181 | w->setPalettePropagation( QWidget::SamePalette ); |
182 | if ( isColor( IndicatorOff ) ) { | 182 | if ( isColor( IndicatorOff ) ) { |
183 | newPal.setNormal( *colorGroup( newPal.normal(), IndicatorOff ) ); | 183 | newPal.setNormal( *colorGroup( newPal.normal(), IndicatorOff ) ); |
184 | newPal.setDisabled( *colorGroup( newPal.normal(), IndicatorOff ) ); | 184 | newPal.setDisabled( *colorGroup( newPal.normal(), IndicatorOff ) ); |
185 | } | 185 | } |
186 | if ( isColor( IndicatorOn ) ) | 186 | if ( isColor( IndicatorOn ) ) |
187 | newPal.setActive( *colorGroup( newPal.active(), IndicatorOn ) ); | 187 | newPal.setActive( *colorGroup( newPal.active(), IndicatorOn ) ); |
188 | w->setPalette( newPal ); | 188 | w->setPalette( newPal ); |
189 | } | 189 | } |
190 | } | 190 | } |
191 | else if ( w->inherits( "QRadioButton" ) ) { | 191 | else if ( w->inherits( "QRadioButton" ) ) { |
192 | if ( isColor( ExIndicatorOff ) || isColor( ExIndicatorOn ) ) { | 192 | if ( isColor( ExIndicatorOff ) || isColor( ExIndicatorOn ) ) { |
193 | QPalette newPal( w->palette() ); | 193 | QPalette newPal( w->palette() ); |
194 | w->setPalettePropagation( QWidget::SamePalette ); | 194 | w->setPalettePropagation( QWidget::SamePalette ); |
195 | if ( isColor( ExIndicatorOff ) ) { | 195 | if ( isColor( ExIndicatorOff ) ) { |
196 | newPal.setNormal( *colorGroup( newPal.normal(), ExIndicatorOff ) ); | 196 | newPal.setNormal( *colorGroup( newPal.normal(), ExIndicatorOff ) ); |
197 | newPal.setDisabled( *colorGroup( newPal.normal(), | 197 | newPal.setDisabled( *colorGroup( newPal.normal(), |
198 | ExIndicatorOff ) ); | 198 | ExIndicatorOff ) ); |
199 | } | 199 | } |
200 | if ( isColor( ExIndicatorOn ) ) | 200 | if ( isColor( ExIndicatorOn ) ) |
201 | newPal.setActive( *colorGroup( newPal.active(), ExIndicatorOn ) ); | 201 | newPal.setActive( *colorGroup( newPal.active(), ExIndicatorOn ) ); |
202 | w->setPalette( newPal ); | 202 | w->setPalette( newPal ); |
203 | } | 203 | } |
204 | } | 204 | } |
205 | else if ( w-> inherits ( "QProgressBar" ) ) { | 205 | else if ( w-> inherits ( "QProgressBar" ) ) { |
206 | w-> installEventFilter ( this ); | 206 | w-> installEventFilter ( this ); |
207 | } | 207 | } |
208 | } | 208 | } |
209 | 209 | ||
210 | void OThemeStyle::unPolish( QWidget* w ) | 210 | void OThemeStyle::unPolish( QWidget* w ) |
211 | { | 211 | { |
212 | if ( !w->isTopLevel() ) { | 212 | if ( !w->isTopLevel() ) { |
213 | if ( w->inherits( "QGroupBox" ) | 213 | if ( w->inherits( "QGroupBox" ) |
214 | || w->inherits( "QTabWidget" ) ) { | 214 | || w->inherits( "QTabWidget" ) ) { |
215 | w->setAutoMask( FALSE ); | 215 | w->setAutoMask( FALSE ); |
216 | return ; | 216 | return ; |
217 | } | 217 | } |
218 | if ( w->inherits( "QLabel" ) | 218 | if ( w->inherits( "QLabel" ) |
219 | || w->inherits( "QSlider" ) | 219 | || w->inherits( "QSlider" ) |
220 | || w->inherits( "QButton" ) | 220 | || w->inherits( "QButton" ) |
221 | || w->inherits( "QProgressBar" ) | 221 | || w->inherits( "QProgressBar" ) |
222 | ) { | 222 | ) { |
223 | w->setBackgroundOrigin( QWidget::WidgetOrigin ); | 223 | w->setBackgroundOrigin( QWidget::WidgetOrigin ); |
224 | } | 224 | } |
225 | } | 225 | } |
226 | if ( w->inherits( "QPopupMenu" ) ) | 226 | if ( w->inherits( "QPopupMenu" ) ) |
227 | w->unsetPalette(); | 227 | w->unsetPalette(); |
228 | else if ( w->inherits( "QCheckBox" ) ) | 228 | else if ( w->inherits( "QCheckBox" ) ) |
229 | w->unsetPalette(); | 229 | w->unsetPalette(); |
230 | else if ( w->inherits( "QRadioButton" ) ) | 230 | else if ( w->inherits( "QRadioButton" ) ) |
231 | w->unsetPalette(); | 231 | w->unsetPalette(); |
232 | else if ( w-> inherits ( "QProgressBar" ) ) | 232 | else if ( w-> inherits ( "QProgressBar" ) ) |
233 | w-> removeEventFilter ( this ); | 233 | w-> removeEventFilter ( this ); |
234 | } | 234 | } |
235 | 235 | ||
236 | bool OThemeStyle::eventFilter ( QObject *obj, QEvent *ev ) | 236 | bool OThemeStyle::eventFilter ( QObject *obj, QEvent *ev ) |
237 | { | 237 | { |
238 | // only QProgressBar so far | 238 | // only QProgressBar so far |
239 | 239 | ||
240 | if ( ev-> type ( ) == QEvent::Paint ) { | 240 | if ( ev-> type ( ) == QEvent::Paint ) { |
241 | HackProgressBar *pb = (HackProgressBar *) obj; | 241 | HackProgressBar *pb = (HackProgressBar *) obj; |
242 | pb-> paint ((QPaintEvent *) ev, this ); | 242 | pb-> paint ((QPaintEvent *) ev, this ); |
243 | return true; | 243 | return true; |
244 | } | 244 | } |
245 | return false; | 245 | return false; |
246 | } | 246 | } |
247 | 247 | ||
248 | void OThemeStyle::drawBaseButton( QPainter *p, int x, int y, int w, int h, | 248 | void OThemeStyle::drawBaseButton( QPainter *p, int x, int y, int w, int h, |
249 | const QColorGroup &g, bool sunken, bool | 249 | const QColorGroup &g, bool sunken, bool |
250 | rounded, WidgetType type, const QBrush * ) | 250 | rounded, WidgetType type, const QBrush * ) |
251 | { | 251 | { |
252 | if ( w <= 0 || h <= 0 ) | 252 | if ( w <= 0 || h <= 0 ) |
253 | return; | 253 | return; |
254 | 254 | ||
255 | int offset = borderPixmap( type ) ? 0 : decoWidth( type ); | 255 | int offset = borderPixmap( type ) ? 0 : decoWidth( type ); |
256 | QPen oldPen = p->pen(); | 256 | QPen oldPen = p->pen(); |
257 | 257 | ||
258 | // handle reverse bevel here since it uses decowidth differently | 258 | // handle reverse bevel here since it uses decowidth differently |
259 | if ( gradientHint( type ) == GrReverseBevel ) { | 259 | if ( gradientHint( type ) == GrReverseBevel ) { |
260 | int i; | 260 | int i; |
261 | bitBlt( p->device(), x, y, scalePixmap( w, h, type ), 0, 0, w, h, | 261 | bitBlt( p->device(), x, y, scalePixmap( w, h, type ), 0, 0, w, h, |
262 | Qt::CopyROP, true ); | 262 | Qt::CopyROP, true ); |
263 | p->setPen( g.text() ); | 263 | p->setPen( g.text() ); |
264 | for ( i = 0; i < borderWidth( type ); ++i, ++x, ++y, w -= 2, h -= 2 ) | 264 | for ( i = 0; i < borderWidth( type ); ++i, ++x, ++y, w -= 2, h -= 2 ) |
265 | p->drawRect( x, y, w, h ); | 265 | p->drawRect( x, y, w, h ); |
266 | } | 266 | } |
267 | // same with KDE style borders | 267 | // same with KDE style borders |
268 | else if ( !borderPixmap( type ) && shade() == KDE ) { | 268 | else if ( !borderPixmap( type ) && shade() == KDE ) { |
269 | qDrawWinButton( p, x, y, w, h, g, sunken ); | 269 | qDrawWinButton( p, x, y, w, h, g, sunken ); |
270 | if ( isPixmap( type ) ) | 270 | if ( isPixmap( type ) ) |
271 | p->drawTiledPixmap( x + 4, y + 4, w - 6, h - 6, | 271 | p->drawTiledPixmap( x + 4, y + 4, w - 6, h - 6, |
272 | *scalePixmap( w - 6, h - 6, | 272 | *scalePixmap( w - 6, h - 6, |
273 | type ) ); | 273 | type ) ); |
274 | else | 274 | else |
275 | p->fillRect( x + 4, y + 4, w - 6, h - offset * 6, | 275 | p->fillRect( x + 4, y + 4, w - 6, h - offset * 6, |
276 | g.brush( QColorGroup::Button ) ); | 276 | g.brush( QColorGroup::Button ) ); |
277 | 277 | ||
278 | } | 278 | } |
279 | else { | 279 | else { |
280 | if ( ( w - offset * 2 ) > 0 && ( h - offset * 2 ) > 0 ) { | 280 | if ( ( w - offset * 2 ) > 0 && ( h - offset * 2 ) > 0 ) { |
281 | if ( isPixmap( type ) ) | 281 | if ( isPixmap( type ) ) |
282 | if ( rounded ) | 282 | if ( rounded ) |
283 | p->drawTiledPixmap( x, y, w, h, *scalePixmap( w, h, type ) ); | 283 | p->drawTiledPixmap( x, y, w, h, *scalePixmap( w, h, type ) ); |
284 | else | 284 | else |
285 | p->drawTiledPixmap( x + offset, y + offset, w - offset * 2, | 285 | p->drawTiledPixmap( x + offset, y + offset, w - offset * 2, |
286 | h - offset * 2, | 286 | h - offset * 2, |
287 | *scalePixmap( w - offset * 2, h - offset * 2, | 287 | *scalePixmap( w - offset * 2, h - offset * 2, |
288 | type ) ); | 288 | type ) ); |
289 | else | 289 | else |
290 | p->fillRect( x + offset, y + offset, w - offset * 2, h - offset * 2, | 290 | p->fillRect( x + offset, y + offset, w - offset * 2, h - offset * 2, |
291 | g.brush( QColorGroup::Button ) ); | 291 | g.brush( QColorGroup::Button ) ); |
292 | } | 292 | } |
293 | if ( borderPixmap( type ) ) { | 293 | if ( borderPixmap( type ) ) { |
294 | bitBlt( p->device(), x, y, scaleBorder( w, h, type ), 0, 0, w, h, | 294 | bitBlt( p->device(), x, y, scaleBorder( w, h, type ), 0, 0, w, h, |
295 | Qt::CopyROP, false ); | 295 | Qt::CopyROP, false ); |
296 | } | 296 | } |
297 | else | 297 | else |
298 | drawShade( p, x, y, w, h, g, sunken, rounded, | 298 | drawShade( p, x, y, w, h, g, sunken, rounded, |
299 | highlightWidth( type ), borderWidth( type ), shade() ); | 299 | highlightWidth( type ), borderWidth( type ), shade() ); |
300 | } | 300 | } |
301 | p->setPen( oldPen ); | 301 | p->setPen( oldPen ); |
302 | } | 302 | } |
303 | 303 | ||
304 | void OThemeStyle::drawButton( QPainter *p, int x, int y, int w, int h, | 304 | void OThemeStyle::drawButton( QPainter *p, int x, int y, int w, int h, |
305 | const QColorGroup &g, bool sunken, | 305 | const QColorGroup &g, bool sunken, |
306 | const QBrush *fill ) | 306 | const QBrush *fill ) |
307 | { | 307 | { |
308 | drawBaseButton( p, x, y, w, h, g, sunken, roundButton(), sunken ? | 308 | drawBaseButton( p, x, y, w, h, g, sunken, roundButton(), sunken ? |
309 | PushButtonDown : PushButton, fill ); | 309 | PushButtonDown : PushButton, fill ); |
310 | } | 310 | } |
311 | 311 | ||
312 | void OThemeStyle::drawPushButton( QPushButton* btn, QPainter *p ) | 312 | void OThemeStyle::drawPushButton( QPushButton* btn, QPainter *p ) |
313 | { | 313 | { |
314 | bool sunken = btn->isOn() || btn->isDown(); | 314 | bool sunken = btn->isOn() || btn->isDown(); |
315 | int diw = buttonDefaultIndicatorWidth(); | 315 | int diw = buttonDefaultIndicatorWidth(); |
316 | drawBaseButton( p, diw, diw, btn->width() - 2 * diw, btn->height() - 2 * diw, | 316 | drawBaseButton( p, diw, diw, btn->width() - 2 * diw, btn->height() - 2 * diw, |
317 | *colorGroup( btn->colorGroup(), sunken ? PushButtonDown : | 317 | *colorGroup( btn->colorGroup(), sunken ? PushButtonDown : |
318 | PushButton ), sunken, roundButton(), | 318 | PushButton ), sunken, roundButton(), |
319 | sunken ? PushButtonDown : PushButton, NULL ); | 319 | sunken ? PushButtonDown : PushButton, NULL ); |
320 | // TODO if diw, draw fancy default button indicator | 320 | // TODO if diw, draw fancy default button indicator |
321 | } | 321 | } |
322 | 322 | ||
323 | void OThemeStyle::drawBaseMask( QPainter *p, int x, int y, int w, int h, | 323 | void OThemeStyle::drawBaseMask( QPainter *p, int x, int y, int w, int h, |
324 | bool round ) | 324 | bool round ) |
325 | { | 325 | { |
326 | // round edge fills | 326 | // round edge fills |
327 | static const QCOORD btm_left_fill[] = { | 327 | static const QCOORD btm_left_fill[] = { |
328 | 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, | 328 | 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, |
329 | 1, 2, 2, 2, 3, 2, 4, 2, 2, 3, 3, 3, 4, 3, 3, 4, 4, 4 | 329 | 1, 2, 2, 2, 3, 2, 4, 2, 2, 3, 3, 3, 4, 3, 3, 4, 4, 4 |
330 | }; | 330 | }; |
331 | 331 | ||
332 | static const QCOORD btm_right_fill[] = { | 332 | static const QCOORD btm_right_fill[] = { |
333 | 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, | 333 | 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, |
334 | 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, 3, 1, 3, 2, 3, 0, 4, 1, 4 | 334 | 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, 3, 1, 3, 2, 3, 0, 4, 1, 4 |
335 | }; | 335 | }; |
336 | 336 | ||
337 | static const QCOORD top_left_fill[] = { | 337 | static const QCOORD top_left_fill[] = { |
338 | 3, 0, 4, 0, 2, 1, 3, 1, 4, 1, 1, 2, 2, 2, 3, 2, 4, 2, 0, 3, | 338 | 3, 0, 4, 0, 2, 1, 3, 1, 4, 1, 1, 2, 2, 2, 3, 2, 4, 2, 0, 3, |
339 | 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4 | 339 | 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4 |
340 | }; | 340 | }; |
341 | 341 | ||
342 | static const QCOORD top_right_fill[] = { | 342 | static const QCOORD top_right_fill[] = { |
343 | 0, 0, 1, 0, 0, 1, 1, 1, 2, 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, | 343 | 0, 0, 1, 0, 0, 1, 1, 1, 2, 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, |
344 | 3, 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4 | 344 | 3, 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4 |
345 | }; | 345 | }; |
346 | 346 | ||
347 | QBrush fillBrush( color1, SolidPattern ); | 347 | QBrush fillBrush( color1, SolidPattern ); |
348 | p->setPen( color1 ); | 348 | p->setPen( color1 ); |
349 | if ( round && w > 19 && h > 19 ) { | 349 | if ( round && w > 19 && h > 19 ) { |
350 | int x2 = x + w - 1; | 350 | int x2 = x + w - 1; |
351 | int y2 = y + h - 1; | 351 | int y2 = y + h - 1; |
352 | QPointArray a( QCOORDARRLEN( top_left_fill ), top_left_fill ); | 352 | QPointArray a( QCOORDARRLEN( top_left_fill ), top_left_fill ); |
353 | a.translate( 1, 1 ); | 353 | a.translate( 1, 1 ); |
354 | p->drawPoints( a ); | 354 | p->drawPoints( a ); |
355 | a.setPoints( QCOORDARRLEN( btm_left_fill ), btm_left_fill ); | 355 | a.setPoints( QCOORDARRLEN( btm_left_fill ), btm_left_fill ); |
356 | a.translate( 1, h - 6 ); | 356 | a.translate( 1, h - 6 ); |
357 | p->drawPoints( a ); | 357 | p->drawPoints( a ); |
358 | a.setPoints( QCOORDARRLEN( top_right_fill ), top_right_fill ); | 358 | a.setPoints( QCOORDARRLEN( top_right_fill ), top_right_fill ); |
359 | a.translate( w - 6, 1 ); | 359 | a.translate( w - 6, 1 ); |
360 | p->drawPoints( a ); | 360 | p->drawPoints( a ); |
361 | a.setPoints( QCOORDARRLEN( btm_right_fill ), btm_right_fill ); | 361 | a.setPoints( QCOORDARRLEN( btm_right_fill ), btm_right_fill ); |
362 | a.translate( w - 6, h - 6 ); | 362 | a.translate( w - 6, h - 6 ); |
363 | p->drawPoints( a ); | 363 | p->drawPoints( a ); |
364 | 364 | ||
365 | p->fillRect( x + 6, y, w - 12, h, fillBrush ); | 365 | p->fillRect( x + 6, y, w - 12, h, fillBrush ); |
366 | p->fillRect( x, y + 6, x + 6, h - 12, fillBrush ); | 366 | p->fillRect( x, y + 6, x + 6, h - 12, fillBrush ); |
367 | p->fillRect( x2 - 6, y + 6, x2, h - 12, fillBrush ); | 367 | p->fillRect( x2 - 6, y + 6, x2, h - 12, fillBrush ); |
368 | p->drawLine( x + 6, y, x2 - 6, y ); | 368 | p->drawLine( x + 6, y, x2 - 6, y ); |
369 | p->drawLine( x + 6, y2, x2 - 6, y2 ); | 369 | p->drawLine( x + 6, y2, x2 - 6, y2 ); |
370 | p->drawLine( x, y + 6, x, y2 - 6 ); | 370 | p->drawLine( x, y + 6, x, y2 - 6 ); |
371 | p->drawLine( x2, y + 6, x2, y2 - 6 ); | 371 | p->drawLine( x2, y + 6, x2, y2 - 6 ); |
372 | 372 | ||
373 | } | 373 | } |
374 | else | 374 | else |
375 | p->fillRect( x, y, w, h, fillBrush ); | 375 | p->fillRect( x, y, w, h, fillBrush ); |
376 | } | 376 | } |
377 | 377 | ||
378 | void OThemeStyle::drawButtonMask( QPainter *p, int x, int y, int w, int h ) | 378 | void OThemeStyle::drawButtonMask( QPainter *p, int x, int y, int w, int h ) |
379 | { | 379 | { |
380 | drawBaseMask( p, x, y, w, h, roundButton() ); | 380 | drawBaseMask( p, x, y, w, h, roundButton() ); |
381 | } | 381 | } |
382 | 382 | ||
383 | void OThemeStyle::drawComboButtonMask( QPainter *p, int x, int y, int w, int h ) | 383 | void OThemeStyle::drawComboButtonMask( QPainter *p, int x, int y, int w, int h ) |
384 | { | 384 | { |
385 | drawBaseMask( p, x, y, w, h, roundComboBox() ); | 385 | drawBaseMask( p, x, y, w, h, roundComboBox() ); |
386 | } | 386 | } |
387 | 387 | ||
388 | void OThemeStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, | 388 | void OThemeStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, |
389 | const QColorGroup &g, bool sunken, | 389 | const QColorGroup &g, bool sunken, |
390 | const QBrush * ) | 390 | const QBrush * ) |
391 | { | 391 | { |
392 | WidgetType type = sunken ? BevelDown : Bevel; | 392 | WidgetType type = sunken ? BevelDown : Bevel; |
393 | drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type ); | 393 | drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type ); |
394 | } | 394 | } |
395 | 395 | ||
396 | void OThemeStyle::drawToolButton( QPainter *p, int x, int y, int w, int h, | 396 | void OThemeStyle::drawToolButton( QPainter *p, int x, int y, int w, int h, |
397 | const QColorGroup &g, bool sunken, | 397 | const QColorGroup &g, bool sunken, |
398 | const QBrush * ) | 398 | const QBrush * ) |
399 | { | 399 | { |
400 | WidgetType type = sunken ? ToolButtonDown : ToolButton; | 400 | WidgetType type = sunken ? ToolButtonDown : ToolButton; |
401 | drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type ); | 401 | drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type ); |
402 | } | 402 | } |
403 | 403 | ||
404 | #if 0 | 404 | #if 0 |
405 | void OThemeStyle::drawKToolBarButton( QPainter *p, int x, int y, int w, int h, | 405 | void OThemeStyle::drawKToolBarButton( QPainter *p, int x, int y, int w, int h, |
406 | const QColorGroup &g, bool sunken, | 406 | const QColorGroup &g, bool sunken, |
407 | bool raised, bool enabled, bool popup, | 407 | bool raised, bool enabled, bool popup, |
408 | KToolButtonType type, const QString &btext, | 408 | KToolButtonType type, const QString &btext, |
409 | const QPixmap *pixmap, QFont *font, | 409 | const QPixmap *pixmap, QFont *font, |
410 | QWidget * ) | 410 | QWidget * ) |
411 | { | 411 | { |
412 | QFont tmp_font( QString::fromLatin1( "Helvetica" ), 10 ); | 412 | QFont tmp_font( QString::fromLatin1( "Helvetica" ), 10 ); |
413 | if ( font ) | 413 | if ( font ) |
414 | tmp_font = *font; | 414 | tmp_font = *font; |
415 | QFontMetrics fm( tmp_font ); | 415 | QFontMetrics fm( tmp_font ); |
416 | WidgetType widget = sunken ? ToolButtonDown : ToolButton; | 416 | WidgetType widget = sunken ? ToolButtonDown : ToolButton; |
417 | 417 | ||
418 | drawBaseButton( p, x, y, w, h, *colorGroup( g, widget ), sunken, false, | 418 | drawBaseButton( p, x, y, w, h, *colorGroup( g, widget ), sunken, false, |
419 | widget ); | 419 | widget ); |
420 | int dx, dy; | 420 | int dx, dy; |
421 | if ( type == Icon ) { // icon only | 421 | if ( type == Icon ) { // icon only |
422 | if ( pixmap ) { | 422 | if ( pixmap ) { |
423 | dx = ( w - pixmap->width() ) / 2; | 423 | dx = ( w - pixmap->width() ) / 2; |
424 | dy = ( h - pixmap->height() ) / 2; | 424 | dy = ( h - pixmap->height() ) / 2; |
425 | if ( sunken ) { | 425 | if ( sunken ) { |
426 | ++dx; | 426 | ++dx; |
427 | ++dy; | 427 | ++dy; |
428 | } | 428 | } |
429 | p->drawPixmap( x + dx, y + dy, *pixmap ); | 429 | p->drawPixmap( x + dx, y + dy, *pixmap ); |
430 | } | 430 | } |
431 | } | 431 | } |
432 | else if ( type == IconTextRight ) { // icon and text (if any) | 432 | else if ( type == IconTextRight ) { // icon and text (if any) |
433 | if ( pixmap ) { | 433 | if ( pixmap ) { |
434 | dx = 4; | 434 | dx = 4; |
435 | dy = ( h - pixmap->height() ) / 2; | 435 | dy = ( h - pixmap->height() ) / 2; |
436 | if ( sunken ) { | 436 | if ( sunken ) { |
437 | ++dx; | 437 | ++dx; |
438 | ++dy; | 438 | ++dy; |
439 | } | 439 | } |
440 | p->drawPixmap( x + dx, y + dy, *pixmap ); | 440 | p->drawPixmap( x + dx, y + dy, *pixmap ); |
441 | } | 441 | } |
442 | if ( !btext.isNull() ) { | 442 | if ( !btext.isNull() ) { |
443 | int tf = AlignVCenter | AlignLeft; | 443 | int tf = AlignVCenter | AlignLeft; |
444 | if ( pixmap ) | 444 | if ( pixmap ) |
445 | dx = 4 + pixmap->width() + 2; | 445 | dx = 4 + pixmap->width() + 2; |
446 | else | 446 | else |
447 | dx = 4; | 447 | dx = 4; |
448 | dy = 0; | 448 | dy = 0; |
449 | if ( sunken ) { | 449 | if ( sunken ) { |
450 | ++dx; | 450 | ++dx; |
451 | ++dy; | 451 | ++dy; |
452 | } | 452 | } |
453 | if ( font ) | 453 | if ( font ) |
454 | p->setFont( *font ); | 454 | p->setFont( *font ); |
455 | if ( raised ) | 455 | if ( raised ) |
456 | p->setPen( KGlobalSettings::toolBarHighlightColor() ); | 456 | p->setPen( KGlobalSettings::toolBarHighlightColor() ); |
457 | p->drawText( x + dx, y + dy, w - dx, h, tf, btext ); | 457 | p->drawText( x + dx, y + dy, w - dx, h, tf, btext ); |
458 | } | 458 | } |
459 | } | 459 | } |
460 | else if ( type == Text ) { // only text, even if there is a icon | 460 | else if ( type == Text ) { // only text, even if there is a icon |
461 | if ( !btext.isNull() ) { | 461 | if ( !btext.isNull() ) { |
462 | int tf = AlignTop | AlignLeft; | 462 | int tf = AlignTop | AlignLeft; |
463 | if ( !enabled ) | 463 | if ( !enabled ) |
464 | p->setPen( g.dark() ); | 464 | p->setPen( g.dark() ); |
465 | dx = ( w - fm.width( btext ) ) / 2; | 465 | dx = ( w - fm.width( btext ) ) / 2; |
466 | dy = ( h - fm.lineSpacing() ) / 2; | 466 | dy = ( h - fm.lineSpacing() ) / 2; |
467 | if ( sunken ) { | 467 | if ( sunken ) { |
468 | ++dx; | 468 | ++dx; |
469 | ++dy; | 469 | ++dy; |
470 | } | 470 | } |
471 | if ( font ) | 471 | if ( font ) |
472 | p->setFont( *font ); | 472 | p->setFont( *font ); |
473 | if ( raised ) | 473 | if ( raised ) |
474 | p->setPen( KGlobalSettings::toolBarHighlightColor() ); | 474 | p->setPen( KGlobalSettings::toolBarHighlightColor() ); |
475 | p->drawText( x + dx, y + dy, fm.width( btext ), fm.lineSpacing(), tf, btext ); | 475 | p->drawText( x + dx, y + dy, fm.width( btext ), fm.lineSpacing(), tf, btext ); |
476 | } | 476 | } |
477 | } | 477 | } |
478 | else if ( type == IconTextBottom ) { | 478 | else if ( type == IconTextBottom ) { |
479 | if ( pixmap ) { | 479 | if ( pixmap ) { |
480 | dx = ( w - pixmap->width() ) / 2; | 480 | dx = ( w - pixmap->width() ) / 2; |
481 | dy = ( h - fm.lineSpacing() - pixmap->height() ) / 2; | 481 | dy = ( h - fm.lineSpacing() - pixmap->height() ) / 2; |
482 | if ( sunken ) { | 482 | if ( sunken ) { |
483 | ++dx; | 483 | ++dx; |
484 | ++dy; | 484 | ++dy; |
485 | } | 485 | } |
486 | p->drawPixmap( x + dx, y + dy, *pixmap ); | 486 | p->drawPixmap( x + dx, y + dy, *pixmap ); |
487 | } | 487 | } |
488 | if ( !btext.isNull() ) { | 488 | if ( !btext.isNull() ) { |
489 | int tf = AlignBottom | AlignHCenter; | 489 | int tf = AlignBottom | AlignHCenter; |
490 | dx = ( w - fm.width( btext ) ) / 2; | 490 | dx = ( w - fm.width( btext ) ) / 2; |
491 | dy = h - fm.lineSpacing() - 4; | 491 | dy = h - fm.lineSpacing() - 4; |
492 | if ( sunken ) { | 492 | if ( sunken ) { |
493 | ++dx; | 493 | ++dx; |
494 | ++dy; | 494 | ++dy; |
495 | } | 495 | } |
496 | if ( font ) | 496 | if ( font ) |
497 | p->setFont( *font ); | 497 | p->setFont( *font ); |
498 | if ( raised ) | 498 | if ( raised ) |
499 | p->setPen( KGlobalSettings::toolBarHighlightColor() ); | 499 | p->setPen( KGlobalSettings::toolBarHighlightColor() ); |
500 | p->drawText( x + dx, y + dy, fm.width( btext ), fm.lineSpacing(), tf, btext ); | 500 | p->drawText( x + dx, y + dy, fm.width( btext ), fm.lineSpacing(), tf, btext ); |
501 | } | 501 | } |
502 | } | 502 | } |
503 | if ( popup ) { | 503 | if ( popup ) { |
504 | if ( enabled ) | 504 | if ( enabled ) |
505 | qDrawArrow ( p, DownArrow, WindowsStyle, false, w - 5, h - 5, 0, 0, | 505 | qDrawArrow ( p, DownArrow, WindowsStyle, false, w - 5, h - 5, 0, 0, |
506 | g, true ); | 506 | g, true ); |
507 | else | 507 | else |
508 | qDrawArrow ( p, DownArrow, WindowsStyle, false, w - 5, h - 5, | 508 | qDrawArrow ( p, DownArrow, WindowsStyle, false, w - 5, h - 5, |
509 | 0, 0, g, false ); | 509 | 0, 0, g, false ); |
510 | } | 510 | } |
511 | } | 511 | } |
512 | 512 | ||
513 | void OThemeStyle::drawKBarHandle( QPainter *p, int x, int y, int w, int h, | 513 | void OThemeStyle::drawKBarHandle( QPainter *p, int x, int y, int w, int h, |
514 | const QColorGroup &g, KToolBarPos, QBrush * ) | 514 | const QColorGroup &g, KToolBarPos, QBrush * ) |
515 | { | 515 | { |
516 | if ( w > h ) | 516 | if ( w > h ) |
517 | drawBaseButton( p, x, y, w, h, *colorGroup( g, HBarHandle ), false, false, | 517 | drawBaseButton( p, x, y, w, h, *colorGroup( g, HBarHandle ), false, false, |
518 | HBarHandle ); | 518 | HBarHandle ); |
519 | else | 519 | else |
520 | drawBaseButton( p, x, y, w, h, *colorGroup( g, VBarHandle ), false, false, | 520 | drawBaseButton( p, x, y, w, h, *colorGroup( g, VBarHandle ), false, false, |
521 | VBarHandle ); | 521 | VBarHandle ); |
522 | } | 522 | } |
523 | 523 | ||
524 | void OThemeStyle::drawKToolBar( QPainter *p, int x, int y, int w, int h, | 524 | void OThemeStyle::drawKToolBar( QPainter *p, int x, int y, int w, int h, |
525 | const QColorGroup &g, KToolBarPos, QBrush * ) | 525 | const QColorGroup &g, KToolBarPos, QBrush * ) |
526 | { | 526 | { |
527 | drawBaseButton( p, x, y, w, h, *colorGroup( g, ToolBar ), false, false, | 527 | drawBaseButton( p, x, y, w, h, *colorGroup( g, ToolBar ), false, false, |
528 | ToolBar ); | 528 | ToolBar ); |
529 | } | 529 | } |
530 | #endif | 530 | #endif |
531 | 531 | ||
532 | QRect OThemeStyle::buttonRect( int x, int y, int w, int h ) | 532 | QRect OThemeStyle::buttonRect( int x, int y, int w, int h ) |
533 | { | 533 | { |
534 | int spacing = decoWidth( PushButton ) > decoWidth( PushButtonDown ) ? | 534 | int spacing = decoWidth( PushButton ) > decoWidth( PushButtonDown ) ? |
535 | decoWidth( PushButton ) : decoWidth( PushButtonDown ); | 535 | decoWidth( PushButton ) : decoWidth( PushButtonDown ); |
536 | return ( QRect( x + spacing, y + spacing, w - ( spacing * 2 ), h - ( spacing * 2 ) ) ); | 536 | return ( QRect( x + spacing, y + spacing, w - ( spacing * 2 ), h - ( spacing * 2 ) ) ); |
537 | } | 537 | } |
538 | 538 | ||
539 | void OThemeStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, | 539 | void OThemeStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, |
540 | const QColorGroup &g, bool sunken, bool, | 540 | const QColorGroup &g, bool sunken, bool, |
541 | bool, const QBrush * ) | 541 | bool, const QBrush * ) |
542 | { | 542 | { |
543 | WidgetType widget = sunken ? ComboBoxDown : ComboBox; | 543 | WidgetType widget = sunken ? ComboBoxDown : ComboBox; |
544 | drawBaseButton( p, x, y, w, h, *colorGroup( g, widget ), sunken, | 544 | drawBaseButton( p, x, y, w, h, *colorGroup( g, widget ), sunken, |
545 | roundComboBox(), widget ); | 545 | roundComboBox(), widget ); |
546 | if ( !sunken && isPixmap( ComboDeco ) ) | 546 | if ( !sunken && isPixmap( ComboDeco ) ) |
547 | p->drawPixmap( w - uncached( ComboDeco ) ->width() - | 547 | p->drawPixmap( w - uncached( ComboDeco ) ->width() - |
548 | decoWidth( ComboBox ) - 2, | 548 | decoWidth( ComboBox ) - 2, |
549 | y + ( h - uncached( ComboDeco ) -> | 549 | y + ( h - uncached( ComboDeco ) -> |
550 | height() ) / 2, *uncached( ComboDeco ) ); | 550 | height() ) / 2, *uncached( ComboDeco ) ); |
551 | else if ( sunken && isPixmap( ComboDecoDown ) ) | 551 | else if ( sunken && isPixmap( ComboDecoDown ) ) |
552 | p->drawPixmap( w - uncached( ComboDecoDown ) ->width() - | 552 | p->drawPixmap( w - uncached( ComboDecoDown ) ->width() - |
553 | decoWidth( ComboBoxDown ) - 2, | 553 | decoWidth( ComboBoxDown ) - 2, |
554 | y + ( h - uncached( ComboDecoDown ) -> | 554 | y + ( h - uncached( ComboDecoDown ) -> |
555 | height() ) / 2, *uncached( ComboDecoDown ) ); | 555 | height() ) / 2, *uncached( ComboDecoDown ) ); |
556 | else { | 556 | else { |
557 | qDrawArrow( p, Qt::DownArrow, Qt::MotifStyle, false, w - 15, y + 6, 10, | 557 | qDrawArrow( p, Qt::DownArrow, Qt::MotifStyle, false, w - 15, y + 6, 10, |
558 | h - 15, *colorGroup( g, widget ), true ); | 558 | h - 15, *colorGroup( g, widget ), true ); |
559 | qDrawShadeRect( p, w - 14, y + 7 + ( h - 15 ), 10, 3, *colorGroup( g, widget ) ); | 559 | qDrawShadeRect( p, w - 14, y + 7 + ( h - 15 ), 10, 3, *colorGroup( g, widget ) ); |
560 | } | 560 | } |
561 | } | 561 | } |
562 | 562 | ||
563 | void OThemeStyle::drawScrollBarControls( QPainter *p, const QScrollBar *sb, | 563 | void OThemeStyle::drawScrollBarControls( QPainter *p, const QScrollBar *sb, |
564 | int sliderStart, uint controls, | 564 | int sliderStart, uint controls, |
565 | uint activeControl ) | 565 | uint activeControl ) |
566 | { | 566 | { |
567 | int sliderMin, sliderMax, sliderLength, buttonDim; | 567 | int sliderMin, sliderMax, sliderLength, buttonDim; |
568 | QRect add | 568 | QRect add |
569 | , sub, addPage, subPage, slider; | 569 | , sub, addPage, subPage, slider; |
570 | int addX, addY, subX, subY; | 570 | int addX, addY, subX, subY; |
571 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; | 571 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; |
572 | int len = ( horizontal ) ? sb->width() : sb->height(); | 572 | int len = ( horizontal ) ? sb->width() : sb->height(); |
573 | int extent = ( horizontal ) ? sb->height() : sb->width(); | 573 | int extent = ( horizontal ) ? sb->height() : sb->width(); |
574 | int offset = decoWidth( horizontal ? HScrollGroove : VScrollGroove ); | 574 | int offset = decoWidth( horizontal ? HScrollGroove : VScrollGroove ); |
575 | QColorGroup g = sb->colorGroup(); | 575 | QColorGroup g = sb->colorGroup(); |
576 | 576 | ||
577 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 577 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
578 | if ( sliderStart > sliderMax ) | 578 | if ( sliderStart > sliderMax ) |
579 | sliderStart = sliderMax; | 579 | sliderStart = sliderMax; |
580 | 580 | ||
581 | int sliderEnd = sliderStart + sliderLength; | 581 | int sliderEnd = sliderStart + sliderLength; |
582 | int sliderWidth = extent - offset * 2; | 582 | int sliderWidth = extent - offset * 2; |
583 | 583 | ||
584 | // Scary button placement code >:-P Feel free to improve this if you | 584 | // Scary button placement code >:-P Feel free to improve this if you |
585 | // want. I get a headache just looking at it... (mosfet) | 585 | // want. I get a headache just looking at it... (mosfet) |
586 | if ( scrollBarLayout() == SBOpposite ) { | 586 | if ( scrollBarLayout() == SBOpposite ) { |
587 | if ( horizontal ) { | 587 | if ( horizontal ) { |
588 | subY = addY = ( extent - buttonDim ) / 2; | 588 | subY = addY = ( extent - buttonDim ) / 2; |
589 | subX = offset; | 589 | subX = offset; |
590 | addX = len - buttonDim - offset; | 590 | addX = len - buttonDim - offset; |
591 | } | 591 | } |
592 | else { | 592 | else { |
593 | subX = addX = ( extent - buttonDim ) / 2; | 593 | subX = addX = ( extent - buttonDim ) / 2; |
594 | subY = offset; | 594 | subY = offset; |
595 | addY = len - buttonDim - offset; | 595 | addY = len - buttonDim - offset; |
596 | } | 596 | } |
597 | sub.setRect( subX, subY, buttonDim, buttonDim ); | 597 | sub.setRect( subX, subY, buttonDim, buttonDim ); |
598 | add.setRect( addX, addY, buttonDim, buttonDim ); | 598 | add.setRect( addX, addY, buttonDim, buttonDim ); |
599 | if ( horizontal ) { | 599 | if ( horizontal ) { |
600 | subPage.setRect( sub.right() + 1, offset, | 600 | subPage.setRect( sub.right() + 1, offset, |
601 | sliderStart - sub.right() - 1 , sliderWidth ); | 601 | sliderStart - sub.right() - 1 , sliderWidth ); |
602 | addPage.setRect( sliderEnd, offset, addX - sliderEnd, sliderWidth ); | 602 | addPage.setRect( sliderEnd, offset, addX - sliderEnd, sliderWidth ); |
603 | slider.setRect( sliderStart, offset, sliderLength, sliderWidth ); | 603 | slider.setRect( sliderStart, offset, sliderLength, sliderWidth ); |
604 | } | 604 | } |
605 | else { | 605 | else { |
606 | subPage.setRect( offset, sub.bottom() + 1, sliderWidth, | 606 | subPage.setRect( offset, sub.bottom() + 1, sliderWidth, |
607 | sliderStart - sub.bottom() - 1 ); | 607 | sliderStart - sub.bottom() - 1 ); |
608 | addPage.setRect( offset, sliderEnd, sliderWidth, addY - sliderEnd ); | 608 | addPage.setRect( offset, sliderEnd, sliderWidth, addY - sliderEnd ); |
609 | slider.setRect( offset, sliderStart, sliderWidth, sliderLength ); | 609 | slider.setRect( offset, sliderStart, sliderWidth, sliderLength ); |
610 | } | 610 | } |
611 | } | 611 | } |
612 | else if ( horizontal ) { | 612 | else if ( horizontal ) { |
613 | subY = addY = ( extent - buttonDim ) / 2; | 613 | subY = addY = ( extent - buttonDim ) / 2; |
614 | if ( scrollBarLayout() == SBBottomLeft ) { | 614 | if ( scrollBarLayout() == SBBottomLeft ) { |
615 | subX = offset; | 615 | subX = offset; |
616 | addX = buttonDim + offset; | 616 | addX = buttonDim + offset; |
617 | subPage.setRect( buttonDim * 2, 0, sliderStart - 1, extent ); | 617 | subPage.setRect( buttonDim * 2, 0, sliderStart - 1, extent ); |
618 | addPage.setRect( sliderEnd, 0, len - sliderEnd, extent ); | 618 | addPage.setRect( sliderEnd, 0, len - sliderEnd, extent ); |
619 | slider.setRect( sliderStart, 0, sliderLength, extent ); | 619 | slider.setRect( sliderStart, 0, sliderLength, extent ); |
620 | } | 620 | } |
621 | else { | 621 | else { |
622 | subX = len - buttonDim - buttonDim - offset; | 622 | subX = len - buttonDim - buttonDim - offset; |
623 | addX = len - buttonDim - offset; | 623 | addX = len - buttonDim - offset; |
624 | subPage.setRect( offset + 1, offset, sliderStart - 1 , sliderWidth ); | 624 | subPage.setRect( offset + 1, offset, sliderStart - 1 , sliderWidth ); |
625 | addPage.setRect( sliderEnd, offset, subX - sliderEnd, sliderWidth ); | 625 | addPage.setRect( sliderEnd, offset, subX - sliderEnd, sliderWidth ); |
626 | slider.setRect( sliderStart, offset, sliderLength, sliderWidth ); | 626 | slider.setRect( sliderStart, offset, sliderLength, sliderWidth ); |
627 | } | 627 | } |
628 | sub.setRect( subX, subY, buttonDim, buttonDim ); | 628 | sub.setRect( subX, subY, buttonDim, buttonDim ); |
629 | add.setRect( addX, addY, buttonDim, buttonDim ); | 629 | add.setRect( addX, addY, buttonDim, buttonDim ); |
630 | } | 630 | } |
631 | else { // BottomLeft and BottomRight vertical bars are the same. | 631 | else { // BottomLeft and BottomRight vertical bars are the same. |
632 | subX = addX = ( extent - buttonDim ) / 2; | 632 | subX = addX = ( extent - buttonDim ) / 2; |
633 | subY = len - buttonDim - buttonDim - offset; | 633 | subY = len - buttonDim - buttonDim - offset; |
634 | addY = len - buttonDim - offset; | 634 | addY = len - buttonDim - offset; |
635 | subPage.setRect( offset, offset + 1, sliderWidth, | 635 | subPage.setRect( offset, offset + 1, sliderWidth, |
636 | sliderStart - offset - 1 ); | 636 | sliderStart - offset - 1 ); |
637 | addPage.setRect( offset, sliderEnd, sliderWidth, subY - sliderEnd ); | 637 | addPage.setRect( offset, sliderEnd, sliderWidth, subY - sliderEnd ); |
638 | slider.setRect( offset, sliderStart, sliderWidth, sliderLength ); | 638 | slider.setRect( offset, sliderStart, sliderWidth, sliderLength ); |
639 | sub.setRect( subX, subY, buttonDim, buttonDim ); | 639 | sub.setRect( subX, subY, buttonDim, buttonDim ); |
640 | add.setRect( addX, addY, buttonDim, buttonDim ); | 640 | add.setRect( addX, addY, buttonDim, buttonDim ); |
641 | } | 641 | } |
642 | // End of the button placement code | 642 | // End of the button placement code |
643 | 643 | ||
644 | bool active; | 644 | bool active; |
645 | if ( ( controls & QStyle::SubPage ) ) { | 645 | if ( ( controls & QStyle::SubPage ) ) { |
646 | drawScrollBarGroove( p, sb, horizontal, subPage, g ); | 646 | drawScrollBarGroove( p, sb, horizontal, subPage, g ); |
647 | } | 647 | } |
648 | if ( ( controls & QStyle::AddPage ) ) { | 648 | if ( ( controls & QStyle::AddPage ) ) { |
649 | drawScrollBarGroove( p, sb, horizontal, addPage, g ); | 649 | drawScrollBarGroove( p, sb, horizontal, addPage, g ); |
650 | } | 650 | } |
651 | if ( controls & QStyle::AddLine ) { | 651 | if ( controls & QStyle::AddLine ) { |
652 | active = activeControl == QStyle::AddLine; | 652 | active = activeControl == QStyle::AddLine; |
653 | drawBaseButton( p, add.x(), add.y(), add.width(), add.height(), | 653 | drawBaseButton( p, add.x(), add.y(), add.width(), add.height(), |
654 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ), | 654 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ), |
655 | active, false, active ? ScrollButtonDown : ScrollButton ); | 655 | active, false, active ? ScrollButtonDown : ScrollButton ); |
656 | drawArrow( p, ( horizontal ) ? RightArrow : DownArrow, active, add.x() + 3, | 656 | drawArrow( p, ( horizontal ) ? RightArrow : DownArrow, active, add.x() + 3, |
657 | add.y() + 3, add.width() - 6, add.height() - 6, | 657 | add.y() + 3, add.width() - 6, add.height() - 6, |
658 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ) ); | 658 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ) ); |
659 | } | 659 | } |
660 | if ( controls & QStyle::SubLine ) { | 660 | if ( controls & QStyle::SubLine ) { |
661 | active = activeControl == QStyle::SubLine; | 661 | active = activeControl == QStyle::SubLine; |
662 | p->setPen( g.dark() ); | 662 | p->setPen( g.dark() ); |
663 | p->drawRect( sub ); | 663 | p->drawRect( sub ); |
664 | drawBaseButton( p, sub.x(), sub.y(), sub.width(), sub.height(), | 664 | drawBaseButton( p, sub.x(), sub.y(), sub.width(), sub.height(), |
665 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ), | 665 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ), |
666 | active, false, active ? ScrollButtonDown : ScrollButton ); | 666 | active, false, active ? ScrollButtonDown : ScrollButton ); |
667 | drawArrow( p, ( horizontal ) ? LeftArrow : UpArrow, active, sub.x() + 3, | 667 | drawArrow( p, ( horizontal ) ? LeftArrow : UpArrow, active, sub.x() + 3, |
668 | sub.y() + 3, sub.width() - 6, sub.height() - 6, | 668 | sub.y() + 3, sub.width() - 6, sub.height() - 6, |
669 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ) ); | 669 | *colorGroup( g, active ? ScrollButtonDown : ScrollButton ) ); |
670 | } | 670 | } |
671 | if ( controls & QStyle::Slider ) { | 671 | if ( controls & QStyle::Slider ) { |
672 | active = activeControl == QStyle::Slider; | 672 | active = activeControl == QStyle::Slider; |
673 | WidgetType widget = horizontal ? | 673 | WidgetType widget = horizontal ? |
674 | active ? HScrollBarSliderDown : HScrollBarSlider : | 674 | active ? HScrollBarSliderDown : HScrollBarSlider : |
675 | active ? VScrollBarSliderDown : VScrollBarSlider; | 675 | active ? VScrollBarSliderDown : VScrollBarSlider; |
676 | 676 | ||
677 | drawBaseButton( p, slider.x(), slider.y(), slider.width(), | 677 | drawBaseButton( p, slider.x(), slider.y(), slider.width(), |
678 | slider.height(), *colorGroup( g, widget ), active, false, | 678 | slider.height(), *colorGroup( g, widget ), active, false, |
679 | widget ); | 679 | widget ); |
680 | int spaceW = horizontal ? slider.width() - decoWidth( widget ) - 4 : | 680 | int spaceW = horizontal ? slider.width() - decoWidth( widget ) - 4 : |
681 | slider.width(); | 681 | slider.width(); |
682 | int spaceH = horizontal ? slider.height() : | 682 | int spaceH = horizontal ? slider.height() : |
683 | slider.height() - decoWidth( widget ) - 4; | 683 | slider.height() - decoWidth( widget ) - 4; |
684 | widget = active ? horizontal ? HScrollDecoDown : VScrollDecoDown : | 684 | widget = active ? horizontal ? HScrollDecoDown : VScrollDecoDown : |
685 | horizontal ? HScrollDeco : VScrollDeco; | 685 | horizontal ? HScrollDeco : VScrollDeco; |
686 | if ( isPixmap( widget ) ) { | 686 | if ( isPixmap( widget ) ) { |
687 | if ( spaceW >= uncached( widget ) ->width() && | 687 | if ( spaceW >= uncached( widget ) ->width() && |
688 | spaceH >= uncached( widget ) ->height() ) { | 688 | spaceH >= uncached( widget ) ->height() ) { |
689 | p->drawPixmap( slider.x() + ( slider.width() - | 689 | p->drawPixmap( slider.x() + ( slider.width() - |
690 | uncached( widget ) ->width() ) / 2, | 690 | uncached( widget ) ->width() ) / 2, |
691 | slider.y() + ( slider.height() - | 691 | slider.y() + ( slider.height() - |
692 | uncached( widget ) ->height() ) / 2, | 692 | uncached( widget ) ->height() ) / 2, |
693 | *uncached( widget ) ); | 693 | *uncached( widget ) ); |
694 | } | 694 | } |
695 | } | 695 | } |
696 | } | 696 | } |
697 | } | 697 | } |
698 | 698 | ||
699 | void OThemeStyle::drawScrollBarGroove( QPainter *p, const QScrollBar *sb, | 699 | void OThemeStyle::drawScrollBarGroove( QPainter *p, const QScrollBar *sb, |
700 | bool horizontal, QRect r, QColorGroup g ) | 700 | bool horizontal, QRect r, QColorGroup g ) |
701 | 701 | ||
702 | { | 702 | { |
703 | WidgetType widget = ( horizontal ) ? HScrollGroove : VScrollGroove; | 703 | WidgetType widget = ( horizontal ) ? HScrollGroove : VScrollGroove; |
704 | if ( !isPixmap( widget ) ) { | 704 | if ( !isPixmap( widget ) ) { |
705 | p->fillRect( r, colorGroup( g, widget ) ->brush( QColorGroup::Background ) ); | 705 | p->fillRect( r, colorGroup( g, widget ) ->brush( QColorGroup::Background ) ); |
706 | } | 706 | } |
707 | else { | 707 | else { |
708 | // If the groove is pixmapped we make a full-sized image (it gets | 708 | // If the groove is pixmapped we make a full-sized image (it gets |
709 | // cached) then bitBlt it to the appropriate rect. | 709 | // cached) then bitBlt it to the appropriate rect. |
710 | QPixmap buffer( sb->size() ); | 710 | QPixmap buffer( sb->size() ); |
711 | QPainter bPainter( &buffer ); | 711 | QPainter bPainter( &buffer ); |
712 | bPainter.drawTiledPixmap( 0, 0, buffer.width(), buffer.height(), | 712 | bPainter.drawTiledPixmap( 0, 0, buffer.width(), buffer.height(), |
713 | *scalePixmap( buffer.width(), buffer.height(), | 713 | *scalePixmap( buffer.width(), buffer.height(), |
714 | widget ) ); | 714 | widget ) ); |
715 | bitBlt( p->device(), r.x(), r.y(), &buffer, r.x(), r.y(), r.width(), | 715 | bitBlt( p->device(), r.x(), r.y(), &buffer, r.x(), r.y(), r.width(), |
716 | r.height(), Qt::CopyROP ); | 716 | r.height(), Qt::CopyROP ); |
717 | } | 717 | } |
718 | // Do the borders and frame | 718 | // Do the borders and frame |
719 | drawShade( p, sb->rect().x(), sb->rect().y(), sb->rect().width(), | 719 | drawShade( p, sb->rect().x(), sb->rect().y(), sb->rect().width(), |
720 | sb->rect().height(), *colorGroup( g, widget ), true, false, | 720 | sb->rect().height(), *colorGroup( g, widget ), true, false, |
721 | highlightWidth( widget ), borderWidth( widget ), shade() ); | 721 | highlightWidth( widget ), borderWidth( widget ), shade() ); |
722 | } | 722 | } |
723 | 723 | ||
724 | void OThemeStyle::scrollBarMetrics( const QScrollBar *sb, int &sliderMin, | 724 | void OThemeStyle::scrollBarMetrics( const QScrollBar *sb, int &sliderMin, |
725 | int &sliderMax, int &sliderLength, | 725 | int &sliderMax, int &sliderLength, |
726 | int &buttonDim ) | 726 | int &buttonDim ) |
727 | { | 727 | { |
728 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; | 728 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; |
729 | int offset = decoWidth( horizontal ? HScrollGroove : VScrollGroove ); | 729 | int offset = decoWidth( horizontal ? HScrollGroove : VScrollGroove ); |
730 | int maxlen; | 730 | int maxlen; |
731 | int len = horizontal ? sb->width() : sb->height(); | 731 | int len = horizontal ? sb->width() : sb->height(); |
732 | int extent = horizontal ? sb->height() : sb->width(); | 732 | int extent = horizontal ? sb->height() : sb->width(); |
733 | 733 | ||
734 | if ( len > ( extent - offset * 2 - 1 ) * 2 + offset * 2 ) | 734 | if ( len > ( extent - offset * 2 - 1 ) * 2 + offset * 2 ) |
735 | buttonDim = extent - offset * 2; | 735 | buttonDim = extent - offset * 2; |
736 | else | 736 | else |
737 | buttonDim = ( len - offset * 2 ) / 2 - 1; | 737 | buttonDim = ( len - offset * 2 ) / 2 - 1; |
738 | maxlen = len - offset * 2 - buttonDim * 2 - 1; | 738 | maxlen = len - offset * 2 - buttonDim * 2 - 1; |
739 | 739 | ||
740 | switch ( scrollBarLayout() ) { | 740 | switch ( scrollBarLayout() ) { |
741 | case SBBottomLeft: | 741 | case SBBottomLeft: |
742 | sliderMin = ( horizontal ) ? buttonDim * 2 + offset + 1 : offset + 1; | 742 | sliderMin = ( horizontal ) ? buttonDim * 2 + offset + 1 : offset + 1; |
743 | break; | 743 | break; |
744 | case SBBottomRight: | 744 | case SBBottomRight: |
745 | sliderMin = offset + 1; | 745 | sliderMin = offset + 1; |
746 | break; | 746 | break; |
747 | case SBOpposite: | 747 | case SBOpposite: |
748 | default: | 748 | default: |
749 | sliderMin = offset + buttonDim; | 749 | sliderMin = offset + buttonDim; |
750 | break; | 750 | break; |
751 | } | 751 | } |
752 | if ( sb->maxValue() == sb->minValue() ) | 752 | if ( sb->maxValue() == sb->minValue() ) |
753 | sliderLength = maxlen; | 753 | sliderLength = maxlen; |
754 | else | 754 | else |
755 | sliderLength = ( sb->pageStep() * maxlen ) / ( sb->maxValue() - | 755 | sliderLength = ( sb->pageStep() * maxlen ) / ( sb->maxValue() - |
756 | sb->minValue() + sb->pageStep() ); | 756 | sb->minValue() + sb->pageStep() ); |
757 | if ( sliderLength < 12 || ( sb->maxValue() - sb->minValue() ) > INT_MAX / 2 ) | 757 | if ( sliderLength < 12 || ( sb->maxValue() - sb->minValue() ) > INT_MAX / 2 ) |
758 | sliderLength = 12; | 758 | sliderLength = 12; |
759 | if ( sliderLength > maxlen ) | 759 | if ( sliderLength > maxlen ) |
760 | sliderLength = maxlen; | 760 | sliderLength = maxlen; |
761 | sliderMax = sliderMin + maxlen - sliderLength; | 761 | sliderMax = sliderMin + maxlen - sliderLength; |
762 | } | 762 | } |
763 | 763 | ||
764 | QStyle::ScrollControl OThemeStyle::scrollBarPointOver( const QScrollBar *sb, | 764 | QStyle::ScrollControl OThemeStyle::scrollBarPointOver( const QScrollBar *sb, |
765 | int sliderStart, | 765 | int sliderStart, |
766 | const QPoint &p ) | 766 | const QPoint &p ) |
767 | { | 767 | { |
768 | if ( !sb->rect().contains( p ) ) | 768 | if ( !sb->rect().contains( p ) ) |
769 | return ( QStyle::NoScroll ); | 769 | return ( QStyle::NoScroll ); |
770 | int sliderMin, sliderMax, sliderLength, buttonDim; | 770 | int sliderMin, sliderMax, sliderLength, buttonDim; |
771 | int pos = ( sb->orientation() == QScrollBar::Horizontal ) ? p.x() : p.y(); | 771 | int pos = ( sb->orientation() == QScrollBar::Horizontal ) ? p.x() : p.y(); |
772 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); | 772 | scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); |
773 | 773 | ||
774 | if ( scrollBarLayout() == SBOpposite ) { | 774 | if ( scrollBarLayout() == SBOpposite ) { |
775 | if ( pos < sliderMin ) | 775 | if ( pos < sliderMin ) |
776 | return QStyle::SubLine; | 776 | return QStyle::SubLine; |
777 | if ( pos < sliderStart ) | 777 | if ( pos < sliderStart ) |
778 | return SubPage; | 778 | return SubPage; |
779 | if ( pos < sliderStart + sliderLength ) | 779 | if ( pos < sliderStart + sliderLength ) |
780 | return QStyle::Slider; | 780 | return QStyle::Slider; |
781 | if ( pos < sliderMax + sliderLength ) | 781 | if ( pos < sliderMax + sliderLength ) |
782 | return QStyle::AddPage; | 782 | return QStyle::AddPage; |
783 | return QStyle::AddLine; | 783 | return QStyle::AddLine; |
784 | } | 784 | } |
785 | if ( scrollBarLayout() == SBBottomLeft && sb->orientation() == | 785 | if ( scrollBarLayout() == SBBottomLeft && sb->orientation() == |
786 | QScrollBar::Horizontal ) { | 786 | QScrollBar::Horizontal ) { |
787 | if ( pos <= buttonDim ) | 787 | if ( pos <= buttonDim ) |
788 | return ( QStyle::SubLine ); | 788 | return ( QStyle::SubLine ); |
789 | else if ( pos <= buttonDim * 2 ) | 789 | else if ( pos <= buttonDim * 2 ) |
790 | return ( QStyle::AddLine ); | 790 | return ( QStyle::AddLine ); |
791 | else if ( pos < sliderStart ) | 791 | else if ( pos < sliderStart ) |
792 | return ( QStyle::SubPage ); | 792 | return ( QStyle::SubPage ); |
793 | else if ( pos < sliderStart + sliderLength ) | 793 | else if ( pos < sliderStart + sliderLength ) |
794 | return ( QStyle::Slider ); | 794 | return ( QStyle::Slider ); |
795 | return ( AddPage ); | 795 | return ( AddPage ); |
796 | } | 796 | } |
797 | else { | 797 | else { |
798 | if ( pos < sliderStart ) | 798 | if ( pos < sliderStart ) |
799 | return QStyle::SubPage; | 799 | return QStyle::SubPage; |
800 | if ( pos < sliderStart + sliderLength ) | 800 | if ( pos < sliderStart + sliderLength ) |
801 | return QStyle::Slider; | 801 | return QStyle::Slider; |
802 | if ( pos < sliderMax + sliderLength ) | 802 | if ( pos < sliderMax + sliderLength ) |
803 | return QStyle::AddPage; | 803 | return QStyle::AddPage; |
804 | if ( pos < sliderMax + sliderLength + buttonDim ) | 804 | if ( pos < sliderMax + sliderLength + buttonDim ) |
805 | return QStyle::SubLine; | 805 | return QStyle::SubLine; |
806 | return QStyle::AddLine; | 806 | return QStyle::AddLine; |
807 | } | 807 | } |
808 | } | 808 | } |
809 | 809 | ||
810 | QSize OThemeStyle::exclusiveIndicatorSize() const | 810 | QSize OThemeStyle::exclusiveIndicatorSize() const |
811 | { | 811 | { |
812 | if ( isPixmap( ExIndicatorOn ) ) | 812 | if ( isPixmap( ExIndicatorOn ) ) |
813 | return ( uncached( ExIndicatorOn ) ->size() ); | 813 | return ( uncached( ExIndicatorOn ) ->size() ); |
814 | else | 814 | else |
815 | return ( QWindowsStyle::exclusiveIndicatorSize() ); | 815 | return ( QWindowsStyle::exclusiveIndicatorSize() ); |
816 | } | 816 | } |
817 | 817 | ||
818 | QSize OThemeStyle::indicatorSize() const | 818 | QSize OThemeStyle::indicatorSize() const |
819 | { | 819 | { |
820 | if ( isPixmap( IndicatorOn ) ) | 820 | if ( isPixmap( IndicatorOn ) ) |
821 | return ( uncached( IndicatorOn ) ->size() ); | 821 | return ( uncached( IndicatorOn ) ->size() ); |
822 | else | 822 | else |
823 | return ( QWindowsStyle::indicatorSize() ); | 823 | return ( QWindowsStyle::indicatorSize() ); |
824 | } | 824 | } |
825 | 825 | ||
826 | void OThemeStyle::drawExclusiveIndicator( QPainter* p, int x, int y, int w, | 826 | void OThemeStyle::drawExclusiveIndicator( QPainter* p, int x, int y, int w, |
827 | int h, const QColorGroup &g, bool on, | 827 | int h, const QColorGroup &g, bool on, |
828 | bool down, bool enabled ) | 828 | bool down, bool enabled ) |
829 | { | 829 | { |
830 | if ( isPixmap( ( on || down ) ? ExIndicatorOn : ExIndicatorOff ) ) { | 830 | if ( isPixmap( ( on || down ) ? ExIndicatorOn : ExIndicatorOff ) ) { |
831 | p->drawPixmap( x, y, *uncached( ( on || down ) ? ExIndicatorOn : | 831 | p->drawPixmap( x, y, *uncached( ( on || down ) ? ExIndicatorOn : |
832 | ExIndicatorOff ) ); | 832 | ExIndicatorOff ) ); |
833 | } | 833 | } |
834 | else { | 834 | else { |
835 | QWindowsStyle::drawExclusiveIndicator( p, x, y, w, h, | 835 | QWindowsStyle::drawExclusiveIndicator( p, x, y, w, h, |
836 | *colorGroup( g, ExIndicatorOn ), | 836 | *colorGroup( g, ExIndicatorOn ), |
837 | on, down, enabled ); | 837 | on, down, enabled ); |
838 | } | 838 | } |
839 | 839 | ||
840 | } | 840 | } |
841 | 841 | ||
842 | void OThemeStyle::drawIndicator( QPainter* p, int x, int y, int w, int h, | 842 | void OThemeStyle::drawIndicator( QPainter* p, int x, int y, int w, int h, |
843 | const QColorGroup &g, int state, bool down, | 843 | const QColorGroup &g, int state, bool down, |
844 | bool enabled ) | 844 | bool enabled ) |
845 | { | 845 | { |
846 | if ( isPixmap( ( down || state != QButton::Off ) ? | 846 | if ( isPixmap( ( down || state != QButton::Off ) ? |
847 | IndicatorOn : IndicatorOff ) ) { | 847 | IndicatorOn : IndicatorOff ) ) { |
848 | p->drawPixmap( x, y, *uncached( ( down || state != QButton::Off ) ? | 848 | p->drawPixmap( x, y, *uncached( ( down || state != QButton::Off ) ? |
849 | IndicatorOn : IndicatorOff ) ); | 849 | IndicatorOn : IndicatorOff ) ); |
850 | } | 850 | } |
851 | else { | 851 | else { |
852 | QWindowsStyle::drawIndicator( p, x, y, w, h, | 852 | QWindowsStyle::drawIndicator( p, x, y, w, h, |
853 | *colorGroup( g, IndicatorOn ), state, | 853 | *colorGroup( g, IndicatorOn ), state, |
854 | down, enabled ); | 854 | down, enabled ); |
855 | } | 855 | } |
856 | } | 856 | } |
857 | 857 | ||
858 | void OThemeStyle::drawExclusiveIndicatorMask( QPainter *p, int x, int y, int w, | 858 | void OThemeStyle::drawExclusiveIndicatorMask( QPainter *p, int x, int y, int w, |
859 | int h, bool on ) | 859 | int h, bool on ) |
860 | { | 860 | { |
861 | if ( isPixmap( ( on ) ? ExIndicatorOn : ExIndicatorOff ) ) { | 861 | if ( isPixmap( ( on ) ? ExIndicatorOn : ExIndicatorOff ) ) { |
862 | const QBitmap * mask = uncached( ( on ) ? ExIndicatorOn : ExIndicatorOff ) -> | 862 | const QBitmap * mask = uncached( ( on ) ? ExIndicatorOn : ExIndicatorOff ) -> |
863 | mask(); | 863 | mask(); |
864 | if ( mask ) { | 864 | if ( mask ) { |
865 | p->drawPixmap( x, y, *mask ); | 865 | p->drawPixmap( x, y, *mask ); |
866 | } | 866 | } |
867 | else | 867 | else |
868 | p->fillRect( x, y, w, h, QBrush( color1, SolidPattern ) ); | 868 | p->fillRect( x, y, w, h, QBrush( color1, SolidPattern ) ); |
869 | } | 869 | } |
870 | else | 870 | else |
871 | QWindowsStyle::drawExclusiveIndicatorMask( p, x, y, w, h, on ); | 871 | QWindowsStyle::drawExclusiveIndicatorMask( p, x, y, w, h, on ); |
872 | } | 872 | } |
873 | 873 | ||
874 | void OThemeStyle::drawIndicatorMask( QPainter *p, int x, int y, int w, int h, | 874 | void OThemeStyle::drawIndicatorMask( QPainter *p, int x, int y, int w, int h, |
875 | int state ) | 875 | int state ) |
876 | { | 876 | { |
877 | if ( isPixmap( ( state != QButton::Off ) ? IndicatorOn : IndicatorOff ) ) { | 877 | if ( isPixmap( ( state != QButton::Off ) ? IndicatorOn : IndicatorOff ) ) { |
878 | const QBitmap * mask = uncached( ( state != QButton::Off ) ? IndicatorOn : | 878 | const QBitmap * mask = uncached( ( state != QButton::Off ) ? IndicatorOn : |
879 | IndicatorOff ) ->mask(); | 879 | IndicatorOff ) ->mask(); |
880 | if ( mask ) | 880 | if ( mask ) |
881 | p->drawPixmap( x, y, *mask ); | 881 | p->drawPixmap( x, y, *mask ); |
882 | else | 882 | else |
883 | p->fillRect( x, y, w, h, QBrush( color1, SolidPattern ) ); | 883 | p->fillRect( x, y, w, h, QBrush( color1, SolidPattern ) ); |
884 | } | 884 | } |
885 | else | 885 | else |
886 | QWindowsStyle::drawIndicatorMask( p, x, y, w, h, state ); | 886 | QWindowsStyle::drawIndicatorMask( p, x, y, w, h, state ); |
887 | } | 887 | } |
888 | 888 | ||
889 | void OThemeStyle::drawSliderGroove( QPainter *p, int x, int y, int w, int h, | 889 | void OThemeStyle::drawSliderGroove( QPainter *p, int x, int y, int w, int h, |
890 | const QColorGroup& g, QCOORD c, | 890 | const QColorGroup& g, QCOORD c, |
891 | Orientation orient ) | 891 | Orientation orient ) |
892 | { | 892 | { |
893 | if ( roundSlider() ) | 893 | if ( roundSlider() ) |
894 | QWindowsStyle::drawSliderGroove( p, x, y, w, h, | 894 | QWindowsStyle::drawSliderGroove( p, x, y, w, h, |
895 | *colorGroup( g, SliderGroove ), | 895 | *colorGroup( g, SliderGroove ), |
896 | c, orient ); | 896 | c, orient ); |
897 | else | 897 | else |
898 | drawBaseButton( p, x, y, w, h, *colorGroup( g, SliderGroove ), true, | 898 | drawBaseButton( p, x, y, w, h, *colorGroup( g, SliderGroove ), true, |
899 | false, SliderGroove ); | 899 | false, SliderGroove ); |
900 | } | 900 | } |
901 | 901 | ||
902 | void OThemeStyle::drawSlider( QPainter *p, int x, int y, int w, int h, | 902 | void OThemeStyle::drawSlider( QPainter *p, int x, int y, int w, int h, |
903 | const QColorGroup &g, Orientation orient, | 903 | const QColorGroup &g, Orientation orient, |
904 | bool tickAbove, bool tickBelow ) | 904 | bool tickAbove, bool tickBelow ) |
905 | { | 905 | { |
906 | if ( isPixmap( Slider ) ) { | 906 | if ( isPixmap( Slider ) ) { |
907 | if ( orient == Qt::Horizontal ) | 907 | if ( orient == Qt::Horizontal ) |
908 | p->drawPixmap( x, y + ( h - uncached( Slider ) ->height() ) / 2, | 908 | p->drawPixmap( x, y + ( h - uncached( Slider ) ->height() ) / 2, |
909 | *uncached( Slider ) ); | 909 | *uncached( Slider ) ); |
910 | else | 910 | else |
911 | p->drawPixmap( x + ( w - uncached( Slider ) ->width() ) / 2, | 911 | p->drawPixmap( x + ( w - uncached( Slider ) ->width() ) / 2, |
912 | y, *uncached( Slider ) ); | 912 | y, *uncached( Slider ) ); |
913 | } | 913 | } |
914 | else { | 914 | else { |
915 | QWindowsStyle::drawSlider( p, x, y, w, h, *colorGroup( g, Slider ), | 915 | QWindowsStyle::drawSlider( p, x, y, w, h, *colorGroup( g, Slider ), |
916 | orient, tickAbove, tickBelow ); | 916 | orient, tickAbove, tickBelow ); |
917 | } | 917 | } |
918 | } | 918 | } |
919 | 919 | ||
920 | void OThemeStyle::drawSliderMask( QPainter *p, int x, int y, int w, int h, | 920 | void OThemeStyle::drawSliderMask( QPainter *p, int x, int y, int w, int h, |
921 | Orientation orient, bool tickAbove, | 921 | Orientation orient, bool tickAbove, |
922 | bool tickBelow ) | 922 | bool tickBelow ) |
923 | { | 923 | { |
924 | // This is odd. If we fill in the entire region it still masks the slider | 924 | // This is odd. If we fill in the entire region it still masks the slider |
925 | // properly. I have no idea, this used to be different in Qt betas... | 925 | // properly. I have no idea, this used to be different in Qt betas... |
926 | if ( isPixmap( Slider ) ) | 926 | if ( isPixmap( Slider ) ) |
927 | p->fillRect( x, y, w, h, QBrush( color1, SolidPattern ) ); | 927 | p->fillRect( x, y, w, h, QBrush( color1, SolidPattern ) ); |
928 | else | 928 | else |
929 | QWindowsStyle::drawSliderMask( p, x, y, w, h, orient, tickAbove, | 929 | QWindowsStyle::drawSliderMask( p, x, y, w, h, orient, tickAbove, |
930 | tickBelow ); | 930 | tickBelow ); |
931 | } | 931 | } |
932 | 932 | ||
933 | int OThemeStyle::defaultFrameWidth() const | 933 | int OThemeStyle::defaultFrameWidth() const |
934 | { | 934 | { |
935 | return ( frameWidth() ); | 935 | return ( frameWidth() ); |
936 | } | 936 | } |
937 | 937 | ||
938 | void OThemeStyle::getButtonShift( int &x, int &y ) | 938 | void OThemeStyle::getButtonShift( int &x, int &y ) |
939 | { | 939 | { |
940 | x = buttonXShift(); | 940 | x = buttonXShift(); |
941 | y = buttonYShift(); | 941 | y = buttonYShift(); |
942 | } | 942 | } |
943 | 943 | ||
944 | int OThemeStyle::sliderLength() const | 944 | int OThemeStyle::sliderLength() const |
945 | { | 945 | { |
946 | return ( sliderButtonLength() ); | 946 | return ( sliderButtonLength() ); |
947 | } | 947 | } |
948 | 948 | ||
949 | void OThemeStyle::drawArrow( QPainter *p, Qt::ArrowType type, bool down, int x, | 949 | void OThemeStyle::drawArrow( QPainter *p, Qt::ArrowType type, bool down, int x, |
950 | int y, int w, int h, const QColorGroup &g, | 950 | int y, int w, int h, const QColorGroup &g, |
951 | bool enabled, const QBrush * ) | 951 | bool enabled, const QBrush * ) |
952 | { | 952 | { |
953 | // Handles pixmapped arrows. A little inefficent because you can specify | 953 | // Handles pixmapped arrows. A little inefficent because you can specify |
954 | // some as pixmaps and some as default types. | 954 | // some as pixmaps and some as default types. |
955 | WidgetType widget; | 955 | WidgetType widget; |
956 | switch ( type ) { | 956 | switch ( type ) { |
957 | case UpArrow: | 957 | case UpArrow: |
958 | widget = enabled ? down ? SunkenArrowUp : ArrowUp : DisArrowUp; | 958 | widget = enabled ? down ? SunkenArrowUp : ArrowUp : DisArrowUp; |
959 | break; | 959 | break; |
960 | case DownArrow: | 960 | case DownArrow: |
961 | widget = enabled ? down ? SunkenArrowDown : ArrowDown : DisArrowDown; | 961 | widget = enabled ? down ? SunkenArrowDown : ArrowDown : DisArrowDown; |
962 | break; | 962 | break; |
963 | case LeftArrow: | 963 | case LeftArrow: |
964 | widget = enabled ? down ? SunkenArrowLeft : ArrowLeft : DisArrowLeft; | 964 | widget = enabled ? down ? SunkenArrowLeft : ArrowLeft : DisArrowLeft; |
965 | break; | 965 | break; |
966 | case RightArrow: | 966 | case RightArrow: |
967 | default: | 967 | default: |
968 | widget = enabled ? down ? SunkenArrowRight : ArrowRight : DisArrowRight; | 968 | widget = enabled ? down ? SunkenArrowRight : ArrowRight : DisArrowRight; |
969 | break; | 969 | break; |
970 | } | 970 | } |
971 | if ( isPixmap( widget ) ) { | 971 | if ( isPixmap( widget ) ) { |
972 | p->drawPixmap( x + ( w - uncached( widget ) ->width() ) / 2, | 972 | p->drawPixmap( x + ( w - uncached( widget ) ->width() ) / 2, |
973 | y + ( h - uncached( widget ) ->height() ) / 2, | 973 | y + ( h - uncached( widget ) ->height() ) / 2, |
974 | *uncached( widget ) ); | 974 | *uncached( widget ) ); |
975 | return ; | 975 | return ; |
976 | } | 976 | } |
977 | const QColorGroup *cg = colorGroup( g, widget ); | 977 | const QColorGroup *cg = colorGroup( g, widget ); |
978 | // Standard arrow types | 978 | // Standard arrow types |
979 | if ( arrowType() == MotifArrow ) | 979 | if ( arrowType() == MotifArrow ) |
980 | qDrawArrow( p, type, Qt::MotifStyle, down, x, y, w, h, *cg, enabled ); | 980 | qDrawArrow( p, type, Qt::MotifStyle, down, x, y, w, h, *cg, enabled ); |
981 | else if ( arrowType() == SmallArrow ) { | 981 | else if ( arrowType() == SmallArrow ) { |
982 | QColorGroup tmp( *cg ); | 982 | QColorGroup tmp( *cg ); |
983 | tmp.setBrush( QColorGroup::Button, QBrush( NoBrush ) ); | 983 | tmp.setBrush( QColorGroup::Button, QBrush( NoBrush ) ); |
984 | QWindowsStyle::drawArrow( p, type, false, x, y, w, h, | 984 | QWindowsStyle::drawArrow( p, type, false, x, y, w, h, |
985 | tmp, true ); | 985 | tmp, true ); |
986 | } | 986 | } |
987 | else { | 987 | else { |
988 | QPointArray a; | 988 | QPointArray a; |
989 | int x2 = x + w - 1, y2 = y + h - 1; | 989 | int x2 = x + w - 1, y2 = y + h - 1; |
990 | switch ( type ) { | 990 | switch ( type ) { |
991 | case Qt::UpArrow: | 991 | case Qt::UpArrow: |
992 | a.setPoints( 4, x, y2, x2, y2, x + w / 2, y, x, y2 ); | 992 | a.setPoints( 4, x, y2, x2, y2, x + w / 2, y, x, y2 ); |
993 | break; | 993 | break; |
994 | case Qt::DownArrow: | 994 | case Qt::DownArrow: |
995 | a.setPoints( 4, x, y, x2, y, x + w / 2, y2, x, y ); | 995 | a.setPoints( 4, x, y, x2, y, x + w / 2, y2, x, y ); |
996 | break; | 996 | break; |
997 | case Qt::LeftArrow: | 997 | case Qt::LeftArrow: |
998 | a.setPoints( 4, x2, y, x2, y2, x, y + h / 2, x2, y ); | 998 | a.setPoints( 4, x2, y, x2, y2, x, y + h / 2, x2, y ); |
999 | break; | 999 | break; |
1000 | default: | 1000 | default: |
1001 | a.setPoints( 4, x, y, x, y2, x2, y + h / 2, x, y ); | 1001 | a.setPoints( 4, x, y, x, y2, x2, y + h / 2, x, y ); |
1002 | break; | 1002 | break; |
1003 | } | 1003 | } |
1004 | QBrush oldBrush = p->brush(); | 1004 | QBrush oldBrush = p->brush(); |
1005 | QPen oldPen = p->pen(); | 1005 | QPen oldPen = p->pen(); |
1006 | p->setBrush( cg->brush( QColorGroup::Shadow ) ); | 1006 | p->setBrush( cg->brush( QColorGroup::Shadow ) ); |
1007 | p->setPen( cg->shadow() ); | 1007 | p->setPen( cg->shadow() ); |
1008 | p->drawPolygon( a ); | 1008 | p->drawPolygon( a ); |
1009 | p->setBrush( oldBrush ); | 1009 | p->setBrush( oldBrush ); |
1010 | p->setPen( oldPen ); | 1010 | p->setPen( oldPen ); |
1011 | } | 1011 | } |
1012 | } | 1012 | } |
1013 | 1013 | ||
1014 | /* This is where we draw the borders and highlights. The new round button | 1014 | /* This is where we draw the borders and highlights. The new round button |
1015 | * code is a pain in the arse. We don't want to be calculating arcs so | 1015 | * code is a pain in the arse. We don't want to be calculating arcs so |
1016 | * use a whole lotta QPointArray's ;-) The code is made a lot more complex | 1016 | * use a whole lotta QPointArray's ;-) The code is made a lot more complex |
1017 | * because you can have variable width border and highlights... | 1017 | * because you can have variable width border and highlights... |
1018 | * I may want to cache this if round buttons are used, but am concerned | 1018 | * I may want to cache this if round buttons are used, but am concerned |
1019 | * about excessive cache misses. This is a memory/speed tradeoff that I | 1019 | * about excessive cache misses. This is a memory/speed tradeoff that I |
1020 | * have to test. | 1020 | * have to test. |
1021 | */ | 1021 | */ |
1022 | void OThemeStyle::drawShade( QPainter *p, int x, int y, int w, int h, | 1022 | void OThemeStyle::drawShade( QPainter *p, int x, int y, int w, int h, |
1023 | const QColorGroup &g, bool sunken, bool rounded, | 1023 | const QColorGroup &g, bool sunken, bool rounded, |
1024 | int hWidth, int bWidth, ShadeStyle style ) | 1024 | int hWidth, int bWidth, ShadeStyle style ) |
1025 | { | 1025 | { |
1026 | int i, sc, bc, x2, y2; | 1026 | int i, sc, bc, x2, y2; |
1027 | QPen highPen, lowPen; | 1027 | QPen highPen, lowPen; |
1028 | 1028 | ||
1029 | if ( style == Motif ) { | 1029 | if ( style == Motif ) { |
1030 | highPen.setColor( sunken ? g.dark() : g.light() ); | 1030 | highPen.setColor( sunken ? g.dark() : g.light() ); |
1031 | lowPen.setColor( sunken ? g.light() : g.dark() ); | 1031 | lowPen.setColor( sunken ? g.light() : g.dark() ); |
1032 | } | 1032 | } |
1033 | else { | 1033 | else { |
1034 | highPen.setColor( sunken ? g.shadow() : g.light() ); | 1034 | highPen.setColor( sunken ? g.shadow() : g.light() ); |
1035 | lowPen.setColor( sunken ? g.light() : g.shadow() ); | 1035 | lowPen.setColor( sunken ? g.light() : g.shadow() ); |
1036 | } | 1036 | } |
1037 | 1037 | ||
1038 | // Advanced round buttons | 1038 | // Advanced round buttons |
1039 | if ( rounded && w > 19 && h > 19 ) { | 1039 | if ( rounded && w > 19 && h > 19 ) { |
1040 | x2 = x + w - 1, y2 = y + h - 1; | 1040 | x2 = x + w - 1, y2 = y + h - 1; |
1041 | QPointArray bPntArray, hPntArray, lPntArray; | 1041 | QPointArray bPntArray, hPntArray, lPntArray; |
1042 | QPointArray bLineArray, hLineArray, lLineArray; | 1042 | QPointArray bLineArray, hLineArray, lLineArray; |
1043 | // borders | 1043 | // borders |
1044 | for ( i = 0, bc = 0; i < bWidth; ++i ) { | 1044 | for ( i = 0, bc = 0; i < bWidth; ++i ) { |
1045 | bPntArray.putPoints( bc, 24, x + 4, y + 1, x + 5, y + 1, x + 3, y + 2, x + 2, y + 3, | 1045 | bPntArray.putPoints( bc, 24, x + 4, y + 1, x + 5, y + 1, x + 3, y + 2, x + 2, y + 3, |
1046 | x + 1, y + 4, x + 1, y + 5, x + 1, y2 - 5, x + 1, y2 - 4, x + 2, y2 - 3, | 1046 | x + 1, y + 4, x + 1, y + 5, x + 1, y2 - 5, x + 1, y2 - 4, x + 2, y2 - 3, |
1047 | x2 - 5, y + 1, x2 - 4, y + 1, x2 - 3, y + 2, x2 - 5, y2 - 1, | 1047 | x2 - 5, y + 1, x2 - 4, y + 1, x2 - 3, y + 2, x2 - 5, y2 - 1, |
1048 | x2 - 4, y2 - 1, x2 - 3, y2 - 2, x2 - 2, y2 - 3, x2 - 1, y2 - 5, | 1048 | x2 - 4, y2 - 1, x2 - 3, y2 - 2, x2 - 2, y2 - 3, x2 - 1, y2 - 5, |
1049 | x2 - 1, y2 - 4, x + 3, y2 - 2, x + 4, y2 - 1, x + 5, y2 - 1, | 1049 | x2 - 1, y2 - 4, x + 3, y2 - 2, x + 4, y2 - 1, x + 5, y2 - 1, |
1050 | x2 - 2, y + 3, x2 - 1, y + 4, x2 - 1, y + 5 ); | 1050 | x2 - 2, y + 3, x2 - 1, y + 4, x2 - 1, y + 5 ); |
1051 | bc += 24; | 1051 | bc += 24; |
1052 | // ellispe edges don't match exactly, so fill in blanks | 1052 | // ellispe edges don't match exactly, so fill in blanks |
1053 | if ( i < bWidth - 1 || hWidth != 0 ) { | 1053 | if ( i < bWidth - 1 || hWidth != 0 ) { |
1054 | bPntArray.putPoints( bc, 20, x + 6, y + 1, x + 4, y + 2, x + 3, y + 3, | 1054 | bPntArray.putPoints( bc, 20, x + 6, y + 1, x + 4, y + 2, x + 3, y + 3, |
1055 | x + 2, y + 4, x + 1, y + 6, x2 - 6, y + 1, x2 - 4, y + 2, | 1055 | x + 2, y + 4, x + 1, y + 6, x2 - 6, y + 1, x2 - 4, y + 2, |
1056 | x2 - 3, y + 3, x + 2, y2 - 4, x + 1, y2 - 6, x2 - 6, y2 - 1, | 1056 | x2 - 3, y + 3, x + 2, y2 - 4, x + 1, y2 - 6, x2 - 6, y2 - 1, |
1057 | x2 - 4, y2 - 2, x2 - 3, y2 - 3, x2 - 2, y2 - 4, x2 - 1, y2 - 6, | 1057 | x2 - 4, y2 - 2, x2 - 3, y2 - 3, x2 - 2, y2 - 4, x2 - 1, y2 - 6, |
1058 | x + 6, y2 - 1, x + 4, y2 - 2, x + 3, y2 - 3, x2 - 1, y + 6, | 1058 | x + 6, y2 - 1, x + 4, y2 - 2, x + 3, y2 - 3, x2 - 1, y + 6, |
1059 | x2 - 2, y + 4 ); | 1059 | x2 - 2, y + 4 ); |
1060 | bc += 20; | 1060 | bc += 20; |
1061 | } | 1061 | } |
1062 | bLineArray.putPoints( i * 8, 8, x + 6, y, x2 - 6, y, x, y + 6, x, y2 - 6, | 1062 | bLineArray.putPoints( i * 8, 8, x + 6, y, x2 - 6, y, x, y + 6, x, y2 - 6, |
1063 | x + 6, y2, x2 - 6, y2, x2, y + 6, x2, y2 - 6 ); | 1063 | x + 6, y2, x2 - 6, y2, x2, y + 6, x2, y2 - 6 ); |
1064 | ++x, ++y; | 1064 | ++x, ++y; |
1065 | --x2, --y2; | 1065 | --x2, --y2; |
1066 | } | 1066 | } |
1067 | // highlights | 1067 | // highlights |
1068 | for ( i = 0, sc = 0; i < hWidth; ++i ) { | 1068 | for ( i = 0, sc = 0; i < hWidth; ++i ) { |
1069 | hPntArray.putPoints( sc, 12, x + 4, y + 1, x + 5, y + 1, // top left | 1069 | hPntArray.putPoints( sc, 12, x + 4, y + 1, x + 5, y + 1, // top left |
1070 | x + 3, y + 2, x + 2, y + 3, x + 1, y + 4, x + 1, y + 5, | 1070 | x + 3, y + 2, x + 2, y + 3, x + 1, y + 4, x + 1, y + 5, |
1071 | x + 1, y2 - 5, x + 1, y2 - 4, x + 2, y2 - 3, // half corners | 1071 | x + 1, y2 - 5, x + 1, y2 - 4, x + 2, y2 - 3, // half corners |
1072 | x2 - 5, y + 1, x2 - 4, y + 1, x2 - 3, y + 2 ); | 1072 | x2 - 5, y + 1, x2 - 4, y + 1, x2 - 3, y + 2 ); |
1073 | lPntArray.putPoints( sc, 12, x2 - 5, y2 - 1, x2 - 4, y2 - 1, // btm right | 1073 | lPntArray.putPoints( sc, 12, x2 - 5, y2 - 1, x2 - 4, y2 - 1, // btm right |
1074 | x2 - 3, y2 - 2, x2 - 2, y2 - 3, x2 - 1, y2 - 5, x2 - 1, y2 - 4, | 1074 | x2 - 3, y2 - 2, x2 - 2, y2 - 3, x2 - 1, y2 - 5, x2 - 1, y2 - 4, |
1075 | x + 3, y2 - 2, x + 4, y2 - 1, x + 5, y2 - 1, //half corners | 1075 | x + 3, y2 - 2, x + 4, y2 - 1, x + 5, y2 - 1, //half corners |
1076 | x2 - 2, y + 3, x2 - 1, y + 4, x2 - 1, y + 5 ); | 1076 | x2 - 2, y + 3, x2 - 1, y + 4, x2 - 1, y + 5 ); |
1077 | sc += 12; | 1077 | sc += 12; |
1078 | if ( i < hWidth - 1 ) { | 1078 | if ( i < hWidth - 1 ) { |
1079 | hPntArray.putPoints( sc, 10, x + 6, y + 1, x + 4, y + 2, // top left | 1079 | hPntArray.putPoints( sc, 10, x + 6, y + 1, x + 4, y + 2, // top left |
1080 | x + 3, y + 3, x + 2, y + 4, x + 1, y + 6, | 1080 | x + 3, y + 3, x + 2, y + 4, x + 1, y + 6, |
1081 | x2 - 6, y + 1, x2 - 4, y + 2, // half corners | 1081 | x2 - 6, y + 1, x2 - 4, y + 2, // half corners |
1082 | x2 - 3, y + 3, x + 2, y2 - 4, x + 1, y2 - 6 ); | 1082 | x2 - 3, y + 3, x + 2, y2 - 4, x + 1, y2 - 6 ); |
1083 | lPntArray.putPoints( sc, 10, x2 - 6, y2 - 1, x2 - 4, y2 - 2, // btm right | 1083 | lPntArray.putPoints( sc, 10, x2 - 6, y2 - 1, x2 - 4, y2 - 2, // btm right |
1084 | x2 - 3, y2 - 3, x2 - 2, y2 - 4, x2 - 1, y2 - 6, | 1084 | x2 - 3, y2 - 3, x2 - 2, y2 - 4, x2 - 1, y2 - 6, |
1085 | x + 6, y2 - 1, x + 4, y2 - 2, // half corners | 1085 | x + 6, y2 - 1, x + 4, y2 - 2, // half corners |
1086 | x + 3, y2 - 3, x2 - 1, y + 6, x2 - 2, y + 4 ); | 1086 | x + 3, y2 - 3, x2 - 1, y + 6, x2 - 2, y + 4 ); |
1087 | sc += 10; | 1087 | sc += 10; |
1088 | } | 1088 | } |
1089 | hLineArray.putPoints( i * 4, 4, x + 6, y, x2 - 6, y, x, y + 6, x, y2 - 6 ); | 1089 | hLineArray.putPoints( i * 4, 4, x + 6, y, x2 - 6, y, x, y + 6, x, y2 - 6 ); |
1090 | lLineArray.putPoints( i * 4, 4, x + 6, y2, x2 - 6, y2, x2, y + 6, x2, y2 - 6 ); | 1090 | lLineArray.putPoints( i * 4, 4, x + 6, y2, x2 - 6, y2, x2, y + 6, x2, y2 - 6 ); |
1091 | ++x, ++y; | 1091 | ++x, ++y; |
1092 | --x2, --y2; | 1092 | --x2, --y2; |
1093 | } | 1093 | } |
1094 | p->setPen( Qt::black ); | 1094 | p->setPen( Qt::black ); |
1095 | p->drawPoints( bPntArray ); | 1095 | p->drawPoints( bPntArray ); |
1096 | p->drawLineSegments( bLineArray ); | 1096 | p->drawLineSegments( bLineArray ); |
1097 | p->setPen( highPen ); | 1097 | p->setPen( highPen ); |
1098 | p->drawPoints( hPntArray ); | 1098 | p->drawPoints( hPntArray ); |
1099 | p->drawLineSegments( hLineArray ); | 1099 | p->drawLineSegments( hLineArray ); |
1100 | p->setPen( lowPen ); | 1100 | p->setPen( lowPen ); |
1101 | p->drawPoints( lPntArray ); | 1101 | p->drawPoints( lPntArray ); |
1102 | p->drawLineSegments( lLineArray ); | 1102 | p->drawLineSegments( lLineArray ); |
1103 | } | 1103 | } |
1104 | // Rectangular buttons | 1104 | // Rectangular buttons |
1105 | else { | 1105 | else { |
1106 | QPointArray highShade( hWidth * 4 ); | 1106 | QPointArray highShade( hWidth * 4 ); |
1107 | QPointArray lowShade( hWidth * 4 ); | 1107 | QPointArray lowShade( hWidth * 4 ); |
1108 | 1108 | ||
1109 | p->setPen( g.shadow() ); | 1109 | p->setPen( g.shadow() ); |
1110 | for ( i = 0; i < bWidth && w > 2 && h > 2; ++i, ++x, ++y, w -= 2, h -= 2 ) | 1110 | for ( i = 0; i < bWidth && w > 2 && h > 2; ++i, ++x, ++y, w -= 2, h -= 2 ) |
1111 | p->drawRect( x, y , w, h ); | 1111 | p->drawRect( x, y , w, h ); |
1112 | 1112 | ||
1113 | if ( !hWidth ) | 1113 | if ( !hWidth ) |
1114 | return ; | 1114 | return ; |
1115 | 1115 | ||
1116 | x2 = x + w - 1, y2 = y + h - 1; | 1116 | x2 = x + w - 1, y2 = y + h - 1; |
1117 | for ( i = 0; i < hWidth; ++i, ++x, ++y, --x2, --y2 ) { | 1117 | for ( i = 0; i < hWidth; ++i, ++x, ++y, --x2, --y2 ) { |
1118 | highShade.putPoints( i * 4, 4, x, y, x2, y, x, y, x, y2 ); | 1118 | highShade.putPoints( i * 4, 4, x, y, x2, y, x, y, x, y2 ); |
1119 | lowShade.putPoints( i * 4, 4, x, y2, x2, y2, x2, y, x2, y2 ); | 1119 | lowShade.putPoints( i * 4, 4, x, y2, x2, y2, x2, y, x2, y2 ); |
1120 | } | 1120 | } |
1121 | if ( style == Windows && hWidth > 1 ) { | 1121 | if ( style == Windows && hWidth > 1 ) { |
1122 | p->setPen( highPen ); | 1122 | p->setPen( highPen ); |
1123 | p->drawLineSegments( highShade, 0, 2 ); | 1123 | p->drawLineSegments( highShade, 0, 2 ); |
1124 | p->setPen( lowPen ); | 1124 | p->setPen( lowPen ); |
1125 | p->drawLineSegments( lowShade, 0, 2 ); | 1125 | p->drawLineSegments( lowShade, 0, 2 ); |
1126 | 1126 | ||
1127 | p->setPen( ( sunken ) ? g.dark() : g.mid() ); | 1127 | p->setPen( ( sunken ) ? g.dark() : g.mid() ); |
1128 | p->drawLineSegments( highShade, 4 ); | 1128 | p->drawLineSegments( highShade, 4 ); |
1129 | p->setPen( ( sunken ) ? g.mid() : g.dark() ); | 1129 | p->setPen( ( sunken ) ? g.mid() : g.dark() ); |
1130 | p->drawLineSegments( lowShade, 4 ); | 1130 | p->drawLineSegments( lowShade, 4 ); |
1131 | } | 1131 | } |
1132 | else { | 1132 | else { |
1133 | p->setPen( ( sunken ) ? g.dark() : g.light() ); | 1133 | p->setPen( ( sunken ) ? g.dark() : g.light() ); |
1134 | p->drawLineSegments( highShade ); | 1134 | p->drawLineSegments( highShade ); |
1135 | p->setPen( ( sunken ) ? g.light() : g.dark() ); | 1135 | p->setPen( ( sunken ) ? g.light() : g.dark() ); |
1136 | p->drawLineSegments( lowShade ); | 1136 | p->drawLineSegments( lowShade ); |
1137 | } | 1137 | } |
1138 | } | 1138 | } |
1139 | } | 1139 | } |
1140 | 1140 | ||
1141 | void OThemeStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p ) | 1141 | void OThemeStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p ) |
1142 | { | 1142 | { |
1143 | WidgetType widget = btn->isDown() || btn->isOn() ? PushButtonDown : | 1143 | WidgetType widget = btn->isDown() || btn->isOn() ? PushButtonDown : |
1144 | PushButton; | 1144 | PushButton; |
1145 | const QColorGroup *cg = colorGroup( btn->colorGroup(), widget ); | 1145 | const QColorGroup *cg = colorGroup( btn->colorGroup(), widget ); |
1146 | int x, y, w, h; | 1146 | int x, y, w, h; |
1147 | 1147 | ||
1148 | QRect r = btn->rect(); | 1148 | QRect r = btn->rect(); |
1149 | r.rect( &x, &y, &w, &h ); | 1149 | r.rect( &x, &y, &w, &h ); |
1150 | x += decoWidth( widget ); | 1150 | x += decoWidth( widget ); |
1151 | y += decoWidth( widget ); | 1151 | y += decoWidth( widget ); |
1152 | w -= decoWidth( widget ) * 2; | 1152 | w -= decoWidth( widget ) * 2; |
1153 | h -= decoWidth( widget ) * 2; | 1153 | h -= decoWidth( widget ) * 2; |
1154 | bool act = btn->isOn() || btn->isDown(); | 1154 | bool act = btn->isOn() || btn->isDown(); |
1155 | 1155 | ||
1156 | // If this is a button with an associated popup menu, draw an arrow first | 1156 | // If this is a button with an associated popup menu, draw an arrow first |
1157 | if ( btn->popup() ) { | 1157 | if ( btn->popup() ) { |
1158 | int dx = menuButtonIndicatorWidth( btn->height() ); | 1158 | int dx = menuButtonIndicatorWidth( btn->height() ); |
1159 | 1159 | ||
1160 | QColorGroup g( btn->colorGroup() ); | 1160 | QColorGroup g( btn->colorGroup() ); |
1161 | int xx = x + w - dx - 4; | 1161 | int xx = x + w - dx - 4; |
1162 | int yy = y - 3; | 1162 | int yy = y - 3; |
1163 | int hh = h + 6; | 1163 | int hh = h + 6; |
1164 | 1164 | ||
1165 | if ( !act ) { | 1165 | if ( !act ) { |
1166 | p->setPen( g.light() ); | 1166 | p->setPen( g.light() ); |
1167 | p->drawLine( xx, yy + 3, xx, yy + hh - 4 ); | 1167 | p->drawLine( xx, yy + 3, xx, yy + hh - 4 ); |
1168 | } | 1168 | } |
1169 | else { | 1169 | else { |
1170 | p->setPen( g.button() ); | 1170 | p->setPen( g.button() ); |
1171 | p->drawLine( xx, yy + 4, xx, yy + hh - 4 ); | 1171 | p->drawLine( xx, yy + 4, xx, yy + hh - 4 ); |
1172 | } | 1172 | } |
1173 | drawArrow( p, DownArrow, FALSE, | 1173 | drawArrow( p, DownArrow, FALSE, |
1174 | x + w - dx - 2, y + 2, dx, h - 4, | 1174 | x + w - dx - 2, y + 2, dx, h - 4, |
1175 | btn->colorGroup(), | 1175 | btn->colorGroup(), |
1176 | btn->isEnabled() ); | 1176 | btn->isEnabled() ); |
1177 | w -= dx; | 1177 | w -= dx; |
1178 | } | 1178 | } |
1179 | 1179 | ||
1180 | // Next, draw iconset, if any | 1180 | // Next, draw iconset, if any |
1181 | if ( btn->iconSet() && !btn->iconSet() ->isNull() ) { | 1181 | if ( btn->iconSet() && !btn->iconSet() ->isNull() ) { |
1182 | QIconSet::Mode mode = btn->isEnabled() | 1182 | QIconSet::Mode mode = btn->isEnabled() |
1183 | ? QIconSet::Normal : QIconSet::Disabled; | 1183 | ? QIconSet::Normal : QIconSet::Disabled; |
1184 | if ( mode == QIconSet::Normal && btn->hasFocus() ) | 1184 | if ( mode == QIconSet::Normal && btn->hasFocus() ) |
1185 | mode = QIconSet::Active; | 1185 | mode = QIconSet::Active; |
1186 | QPixmap pixmap = btn->iconSet() ->pixmap( QIconSet::Small, mode ); | 1186 | QPixmap pixmap = btn->iconSet() ->pixmap( QIconSet::Automatic, mode ); |
1187 | int pixw = pixmap.width(); | 1187 | int pixw = pixmap.width(); |
1188 | int pixh = pixmap.height(); | 1188 | int pixh = pixmap.height(); |
1189 | 1189 | ||
1190 | p->drawPixmap( x + 6, y + h / 2 - pixh / 2, pixmap ); | 1190 | p->drawPixmap( x + 6, y + h / 2 - pixh / 2, pixmap ); |
1191 | x += pixw + 8; | 1191 | x += pixw + 8; |
1192 | w -= pixw + 8; | 1192 | w -= pixw + 8; |
1193 | } | 1193 | } |
1194 | 1194 | ||
1195 | if ( widget == PushButtonDown ) { | 1195 | if ( widget == PushButtonDown ) { |
1196 | drawItem( p, x + buttonXShift(), y + buttonYShift(), | 1196 | drawItem( p, x + buttonXShift(), y + buttonYShift(), |
1197 | w, h, AlignCenter | ShowPrefix, *cg, btn->isEnabled(), | 1197 | w, h, AlignCenter | ShowPrefix, *cg, btn->isEnabled(), |
1198 | btn->pixmap(), btn->text(), -1, &cg->buttonText() ); | 1198 | btn->pixmap(), btn->text(), -1, &cg->buttonText() ); |
1199 | } | 1199 | } |
1200 | else { | 1200 | else { |
1201 | drawItem( p, x, y, w, h, AlignCenter | ShowPrefix, *cg, | 1201 | drawItem( p, x, y, w, h, AlignCenter | ShowPrefix, *cg, |
1202 | btn->isEnabled(), btn->pixmap(), btn->text(), -1, | 1202 | btn->isEnabled(), btn->pixmap(), btn->text(), -1, |
1203 | &cg->buttonText() ); | 1203 | &cg->buttonText() ); |
1204 | } | 1204 | } |
1205 | } | 1205 | } |
1206 | 1206 | ||
1207 | int OThemeStyle::splitterWidth() const | 1207 | int OThemeStyle::splitterWidth() const |
1208 | { | 1208 | { |
1209 | return ( splitWidth() ); | 1209 | return ( splitWidth() ); |
1210 | } | 1210 | } |
1211 | 1211 | ||
1212 | void OThemeStyle::drawSplitter( QPainter *p, int x, int y, int w, int h, | 1212 | void OThemeStyle::drawSplitter( QPainter *p, int x, int y, int w, int h, |
1213 | const QColorGroup &g, Orientation ) | 1213 | const QColorGroup &g, Orientation ) |
1214 | { | 1214 | { |
1215 | drawBaseButton( p, x, y, w, h, *colorGroup( g, Splitter ), false, false, | 1215 | drawBaseButton( p, x, y, w, h, *colorGroup( g, Splitter ), false, false, |
1216 | Splitter ); | 1216 | Splitter ); |
1217 | } | 1217 | } |
1218 | 1218 | ||
1219 | void OThemeStyle::drawCheckMark( QPainter *p, int x, int y, int w, int h, | 1219 | void OThemeStyle::drawCheckMark( QPainter *p, int x, int y, int w, int h, |
1220 | const QColorGroup &g, bool act, bool dis ) | 1220 | const QColorGroup &g, bool act, bool dis ) |
1221 | { | 1221 | { |
1222 | if ( isPixmap( CheckMark ) ) { | 1222 | if ( isPixmap( CheckMark ) ) { |
1223 | if ( !dis ) | 1223 | if ( !dis ) |
1224 | p->drawPixmap( x + ( w - uncached( CheckMark ) ->width() ) / 2, | 1224 | p->drawPixmap( x + ( w - uncached( CheckMark ) ->width() ) / 2, |
1225 | y + ( h - uncached( CheckMark ) ->height() ) / 2, | 1225 | y + ( h - uncached( CheckMark ) ->height() ) / 2, |
1226 | *uncached( CheckMark ) ); | 1226 | *uncached( CheckMark ) ); |
1227 | } | 1227 | } |
1228 | else | 1228 | else |
1229 | QWindowsStyle::drawCheckMark( p, x, y, w, h, *colorGroup( g, CheckMark ), | 1229 | QWindowsStyle::drawCheckMark( p, x, y, w, h, *colorGroup( g, CheckMark ), |
1230 | act, dis ); | 1230 | act, dis ); |
1231 | } | 1231 | } |
1232 | 1232 | ||
1233 | int OThemeStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem *mi, | 1233 | int OThemeStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem *mi, |
1234 | const QFontMetrics &fm ) | 1234 | const QFontMetrics &fm ) |
1235 | { | 1235 | { |
1236 | int h2, h = 0; | 1236 | int h2, h = 0; |
1237 | int offset = QMAX( decoWidth( MenuItemDown ), decoWidth( MenuItem ) ) + 4; | 1237 | int offset = QMAX( decoWidth( MenuItemDown ), decoWidth( MenuItem ) ) + 4; |
1238 | 1238 | ||
1239 | if ( mi->isSeparator() ) | 1239 | if ( mi->isSeparator() ) |
1240 | return ( 2 ); | 1240 | return ( 2 ); |
1241 | if ( mi->isChecked() ) | 1241 | if ( mi->isChecked() ) |
1242 | h = isPixmap( CheckMark ) ? uncached( CheckMark ) ->height() + offset : | 1242 | h = isPixmap( CheckMark ) ? uncached( CheckMark ) ->height() + offset : |
1243 | offset + 16; | 1243 | offset + 16; |
1244 | if ( mi->pixmap() ) { | 1244 | if ( mi->pixmap() ) { |
1245 | h2 = mi->pixmap() ->height() + offset; | 1245 | h2 = mi->pixmap() ->height() + offset; |
1246 | h = h2 > h ? h2 : h; | 1246 | h = h2 > h ? h2 : h; |
1247 | } | 1247 | } |
1248 | if ( mi->iconSet() ) { | 1248 | if ( mi->iconSet() ) { |
1249 | h2 = mi->iconSet() -> | 1249 | h2 = mi->iconSet() ->pixmap().height() + offset; |
1250 | pixmap( QIconSet::Small, QIconSet::Normal ).height() + offset; | ||
1251 | h = h2 > h ? h2 : h; | 1250 | h = h2 > h ? h2 : h; |
1252 | } | 1251 | } |
1253 | h2 = fm.height() + offset; | 1252 | h2 = fm.height() + offset; |
1254 | h = h2 > h ? h2 : h; | 1253 | h = h2 > h ? h2 : h; |
1255 | return ( h ); | 1254 | return ( h ); |
1256 | } | 1255 | } |
1257 | 1256 | ||
1258 | void OThemeStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, | 1257 | void OThemeStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, |
1259 | int tab, QMenuItem* mi, | 1258 | int tab, QMenuItem* mi, |
1260 | const QPalette& pal, bool act, | 1259 | const QPalette& pal, bool act, |
1261 | bool enabled, int x, int y, int w, int h ) | 1260 | bool enabled, int x, int y, int w, int h ) |
1262 | { | 1261 | { |
1263 | // I changed the following method to be based from Qt's instead of my own | 1262 | // I changed the following method to be based from Qt's instead of my own |
1264 | // wacky code. Works much better now :P (mosfet) | 1263 | // wacky code. Works much better now :P (mosfet) |
1265 | static const int motifItemFrame = 2; // menu item frame width | 1264 | static const int motifItemFrame = 2; // menu item frame width |
1266 | static const int motifItemHMargin = 5; // menu item hor text margin | 1265 | static const int motifItemHMargin = 5; // menu item hor text margin |
1267 | static const int motifItemVMargin = 4; // menu item ver text margin | 1266 | static const int motifItemVMargin = 4; // menu item ver text margin |
1268 | 1267 | ||
1269 | static const int motifArrowHMargin = 6; // arrow horizontal margin | 1268 | static const int motifArrowHMargin = 6; // arrow horizontal margin |
1270 | static const int windowsRightBorder = 12; // right border on windowsstatic const int windowsCheckMarkWidth = 12; // checkmarks width on windows | 1269 | static const int windowsRightBorder = 12; // right border on windowsstatic const int windowsCheckMarkWidth = 12; // checkmarks width on windows |
1271 | bool dis = !enabled; | 1270 | bool dis = !enabled; |
1272 | const QColorGroup &g = dis ? *colorGroup( pal.normal(), MenuItem ) : | 1271 | const QColorGroup &g = dis ? *colorGroup( pal.normal(), MenuItem ) : |
1273 | *colorGroup( pal.normal(), MenuItemDown ); | 1272 | *colorGroup( pal.normal(), MenuItemDown ); |
1274 | 1273 | ||
1275 | QColorGroup itemg = dis ? *colorGroup( pal.disabled(), MenuItem ) | 1274 | QColorGroup itemg = dis ? *colorGroup( pal.disabled(), MenuItem ) |
1276 | : act ? *colorGroup( pal.active(), MenuItemDown ) | 1275 | : act ? *colorGroup( pal.active(), MenuItemDown ) |
1277 | : *colorGroup( pal.normal(), MenuItem ); | 1276 | : *colorGroup( pal.normal(), MenuItem ); |
1278 | 1277 | ||
1279 | maxpmw = QMAX( maxpmw, 20 ); | 1278 | maxpmw = QMAX( maxpmw, 20 ); |
1280 | int checkcol = maxpmw; | 1279 | int checkcol = maxpmw; |
1281 | 1280 | ||
1282 | if ( mi && mi->isSeparator() ) { | 1281 | if ( mi && mi->isSeparator() ) { |
1283 | p->setPen( g.dark() ); | 1282 | p->setPen( g.dark() ); |
1284 | p->drawLine( x, y, x + w, y ); | 1283 | p->drawLine( x, y, x + w, y ); |
1285 | p->setPen( g.light() ); | 1284 | p->setPen( g.light() ); |
1286 | p->drawLine( x, y + 1, x + w, y + 1 ); | 1285 | p->drawLine( x, y + 1, x + w, y + 1 ); |
1287 | return ; | 1286 | return ; |
1288 | } | 1287 | } |
1289 | if ( act ) { | 1288 | if ( act ) { |
1290 | drawBaseButton( p, x, y, w, h, g, true, false, MenuItemDown ); | 1289 | drawBaseButton( p, x, y, w, h, g, true, false, MenuItemDown ); |
1291 | } | 1290 | } |
1292 | else { | 1291 | else { |
1293 | drawShade( p, x, y, w, h, *colorGroup( g, MenuItem ), false, false, | 1292 | drawShade( p, x, y, w, h, *colorGroup( g, MenuItem ), false, false, |
1294 | highlightWidth( MenuItem ), borderWidth( MenuItem ), | 1293 | highlightWidth( MenuItem ), borderWidth( MenuItem ), |
1295 | shade() ); | 1294 | shade() ); |
1296 | int dw = decoWidth( MenuItem ); | 1295 | int dw = decoWidth( MenuItem ); |
1297 | if ( !isPixmap( MenuItem ) ) { | 1296 | if ( !isPixmap( MenuItem ) ) { |
1298 | p->fillRect( x + dw, y + dw, w - dw * 2, h - dw * 2, | 1297 | p->fillRect( x + dw, y + dw, w - dw * 2, h - dw * 2, |
1299 | colorGroup( g, MenuItem ) -> | 1298 | colorGroup( g, MenuItem ) -> |
1300 | brush( QColorGroup::Background ) ); | 1299 | brush( QColorGroup::Background ) ); |
1301 | } | 1300 | } |
1302 | else { | 1301 | else { |
1303 | // process inactive item pixmaps as one large item | 1302 | // process inactive item pixmaps as one large item |
1304 | p->drawTiledPixmap( x + dw, y + dw, w - dw * 2, h - dw * 2, *scalePixmap | 1303 | p->drawTiledPixmap( x + dw, y + dw, w - dw * 2, h - dw * 2, *scalePixmap |
1305 | (w, ((QWidget *)p->device())->height(), MenuItem), | 1304 | (w, ((QWidget *)p->device())->height(), MenuItem), |
1306 | //( w, p->clipRegion().boundingRect().height(), MenuItem ), // cliping does not work in Qt/E | 1305 | //( w, p->clipRegion().boundingRect().height(), MenuItem ), // cliping does not work in Qt/E |
1307 | x, y ); | 1306 | x, y ); |
1308 | } | 1307 | } |
1309 | 1308 | ||
1310 | if ( checkable && mi && mi->isChecked() ) { | 1309 | if ( checkable && mi && mi->isChecked() ) { |
1311 | // draw 'pressed' border around checkable items | 1310 | // draw 'pressed' border around checkable items |
1312 | // This is extremely important for items that have an iconset | 1311 | // This is extremely important for items that have an iconset |
1313 | // because the checkmark isn't drawn in that case | 1312 | // because the checkmark isn't drawn in that case |
1314 | // An alternative would be superimposing the checkmark over | 1313 | // An alternative would be superimposing the checkmark over |
1315 | // the iconset instead or not drawing the iconset at all. | 1314 | // the iconset instead or not drawing the iconset at all. |
1316 | int mw = checkcol + motifItemFrame; | 1315 | int mw = checkcol + motifItemFrame; |
1317 | drawShade( p, x, y, mw, h, g, true, false, | 1316 | drawShade( p, x, y, mw, h, g, true, false, |
1318 | highlightWidth( MenuItemDown ), | 1317 | highlightWidth( MenuItemDown ), |
1319 | borderWidth( MenuItemDown ), shade() ); | 1318 | borderWidth( MenuItemDown ), shade() ); |
1320 | } | 1319 | } |
1321 | } | 1320 | } |
1322 | if ( !mi ) | 1321 | if ( !mi ) |
1323 | return ; | 1322 | return ; |
1324 | if ( mi->iconSet() ) { | 1323 | if ( mi->iconSet() ) { |
1325 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; | 1324 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; |
1326 | if ( act && !dis ) | 1325 | if ( act && !dis ) |
1327 | mode = QIconSet::Active; | 1326 | mode = QIconSet::Active; |
1328 | QPixmap pixmap = mi->iconSet() ->pixmap( QIconSet::Small, mode ); | 1327 | QPixmap pixmap; |
1328 | if ( mode == QIconSet::Disabled ) | ||
1329 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
1330 | else | ||
1331 | pixmap = mi->iconSet()->pixmap(); | ||
1329 | int pixw = pixmap.width(); | 1332 | int pixw = pixmap.width(); |
1330 | int pixh = pixmap.height(); | 1333 | int pixh = pixmap.height(); |
1331 | QRect cr( x, y, checkcol, h ); | 1334 | QRect cr( x, y, checkcol, h ); |
1332 | QRect pmr( 0, 0, pixw, pixh ); | 1335 | QRect pmr( 0, 0, pixw, pixh ); |
1333 | pmr.moveCenter( cr.center() ); | 1336 | pmr.moveCenter( cr.center() ); |
1334 | p->setPen( itemg.text() ); | 1337 | p->setPen( itemg.text() ); |
1335 | p->drawPixmap( pmr.topLeft(), pixmap ); | 1338 | p->drawPixmap( pmr.topLeft(), pixmap ); |
1336 | 1339 | ||
1337 | } | 1340 | } |
1338 | else if ( checkable ) { | 1341 | else if ( checkable ) { |
1339 | int mw = checkcol + motifItemFrame; | 1342 | int mw = checkcol + motifItemFrame; |
1340 | int mh = h - 2 * motifItemFrame; | 1343 | int mh = h - 2 * motifItemFrame; |
1341 | if ( mi->isChecked() ) { | 1344 | if ( mi->isChecked() ) { |
1342 | drawCheckMark( p, x + motifItemFrame, | 1345 | drawCheckMark( p, x + motifItemFrame, |
1343 | y + motifItemFrame, mw, mh, itemg, act, dis ); | 1346 | y + motifItemFrame, mw, mh, itemg, act, dis ); |
1344 | } | 1347 | } |
1345 | } | 1348 | } |
1346 | 1349 | ||
1347 | p->setPen( colorGroup( g, act ? MenuItemDown : MenuItem ) ->text() ); | 1350 | p->setPen( colorGroup( g, act ? MenuItemDown : MenuItem ) ->text() ); |
1348 | 1351 | ||
1349 | QColor discol; | 1352 | QColor discol; |
1350 | if ( dis ) { | 1353 | if ( dis ) { |
1351 | discol = itemg.text(); | 1354 | discol = itemg.text(); |
1352 | p->setPen( discol ); | 1355 | p->setPen( discol ); |
1353 | } | 1356 | } |
1354 | 1357 | ||
1355 | int xm = motifItemFrame + checkcol + motifItemHMargin; | 1358 | int xm = motifItemFrame + checkcol + motifItemHMargin; |
1356 | 1359 | ||
1357 | QString s = mi->text(); | 1360 | QString s = mi->text(); |
1358 | if ( !s.isNull() ) { | 1361 | if ( !s.isNull() ) { |
1359 | int t = s.find( '\t' ); | 1362 | int t = s.find( '\t' ); |
1360 | int m = motifItemVMargin; | 1363 | int m = motifItemVMargin; |
1361 | const int text_flags = AlignVCenter | ShowPrefix | DontClip | SingleLine; | 1364 | const int text_flags = AlignVCenter | ShowPrefix | DontClip | SingleLine; |
1362 | if ( t >= 0 ) { | 1365 | if ( t >= 0 ) { |
1363 | if ( dis && !act ) { | 1366 | if ( dis && !act ) { |
1364 | p->setPen( g.light() ); | 1367 | p->setPen( g.light() ); |
1365 | p->drawText( x + w - tab - windowsRightBorder - motifItemHMargin - motifItemFrame + 1, | 1368 | p->drawText( x + w - tab - windowsRightBorder - motifItemHMargin - motifItemFrame + 1, |
1366 | y + m + 1, tab, h - 2 * m, text_flags, s.mid( t + 1 ) ); | 1369 | y + m + 1, tab, h - 2 * m, text_flags, s.mid( t + 1 ) ); |
1367 | p->setPen( discol ); | 1370 | p->setPen( discol ); |
1368 | } | 1371 | } |
1369 | p->drawText( x + w - tab - windowsRightBorder - motifItemHMargin - motifItemFrame, | 1372 | p->drawText( x + w - tab - windowsRightBorder - motifItemHMargin - motifItemFrame, |
1370 | y + m, tab, h - 2 * m, text_flags, s.mid( t + 1 ) ); | 1373 | y + m, tab, h - 2 * m, text_flags, s.mid( t + 1 ) ); |
1371 | } | 1374 | } |
1372 | if ( dis && !act ) { | 1375 | if ( dis && !act ) { |
1373 | p->setPen( g.light() ); | 1376 | p->setPen( g.light() ); |
1374 | p->drawText( x + xm + 1, y + m + 1, w - xm + 1, h - 2 * m, text_flags, s, t ); | 1377 | p->drawText( x + xm + 1, y + m + 1, w - xm + 1, h - 2 * m, text_flags, s, t ); |
1375 | p->setPen( discol ); | 1378 | p->setPen( discol ); |
1376 | } | 1379 | } |
1377 | p->drawText( x + xm, y + m, w - xm - tab + 1, h - 2 * m, text_flags, s, t ); | 1380 | p->drawText( x + xm, y + m, w - xm - tab + 1, h - 2 * m, text_flags, s, t ); |
1378 | } | 1381 | } |
1379 | else if ( mi->pixmap() ) { | 1382 | else if ( mi->pixmap() ) { |
1380 | QPixmap * pixmap = mi->pixmap(); | 1383 | QPixmap * pixmap = mi->pixmap(); |
1381 | if ( pixmap->depth() == 1 ) | 1384 | if ( pixmap->depth() == 1 ) |
1382 | p->setBackgroundMode( OpaqueMode ); | 1385 | p->setBackgroundMode( OpaqueMode ); |
1383 | p->drawPixmap( x + xm, y + motifItemFrame, *pixmap ); | 1386 | p->drawPixmap( x + xm, y + motifItemFrame, *pixmap ); |
1384 | if ( pixmap->depth() == 1 ) | 1387 | if ( pixmap->depth() == 1 ) |
1385 | p->setBackgroundMode( TransparentMode ); | 1388 | p->setBackgroundMode( TransparentMode ); |
1386 | } | 1389 | } |
1387 | if ( mi->popup() ) { | 1390 | if ( mi->popup() ) { |
1388 | int dim = ( h - 2 * motifItemFrame ) / 2; | 1391 | int dim = ( h - 2 * motifItemFrame ) / 2; |
1389 | if ( act ) { | 1392 | if ( act ) { |
1390 | if ( !dis ) | 1393 | if ( !dis ) |
1391 | discol = colorGroup( g, MenuItemDown ) ->text(); | 1394 | discol = colorGroup( g, MenuItemDown ) ->text(); |
1392 | //discol = white; | 1395 | //discol = white; |
1393 | QColorGroup g2( discol, g.highlight(), | 1396 | QColorGroup g2( discol, g.highlight(), |
1394 | white, white, | 1397 | white, white, |
1395 | dis ? discol : white, | 1398 | dis ? discol : white, |
1396 | discol, white ); | 1399 | discol, white ); |
1397 | drawArrow( p, RightArrow, true, | 1400 | drawArrow( p, RightArrow, true, |
1398 | x + w - motifArrowHMargin - motifItemFrame - dim, y + h / 2 - dim / 2, | 1401 | x + w - motifArrowHMargin - motifItemFrame - dim, y + h / 2 - dim / 2, |
1399 | dim, dim, g2, TRUE ); | 1402 | dim, dim, g2, TRUE ); |
1400 | } | 1403 | } |
1401 | else { | 1404 | else { |
1402 | drawArrow( p, RightArrow, | 1405 | drawArrow( p, RightArrow, |
1403 | false, | 1406 | false, |
1404 | x + w - motifArrowHMargin - motifItemFrame - dim, y + h / 2 - dim / 2, | 1407 | x + w - motifArrowHMargin - motifItemFrame - dim, y + h / 2 - dim / 2, |
1405 | dim, dim, g, mi->isEnabled() ); | 1408 | dim, dim, g, mi->isEnabled() ); |
1406 | } | 1409 | } |
1407 | } | 1410 | } |
1408 | } | 1411 | } |
1409 | 1412 | ||
1410 | void OThemeStyle::drawFocusRect( QPainter *p, const QRect &r, | 1413 | void OThemeStyle::drawFocusRect( QPainter *p, const QRect &r, |
1411 | const QColorGroup &g, const QColor *c, | 1414 | const QColorGroup &g, const QColor *c, |
1412 | bool atBorder ) | 1415 | bool atBorder ) |
1413 | { | 1416 | { |
1414 | p->setPen( g.dark() ); | 1417 | p->setPen( g.dark() ); |
1415 | if ( !is3DFocus() ) | 1418 | if ( !is3DFocus() ) |
1416 | QWindowsStyle::drawFocusRect( p, r, g, c, atBorder ); | 1419 | QWindowsStyle::drawFocusRect( p, r, g, c, atBorder ); |
1417 | else { | 1420 | else { |
1418 | int i = focusOffset(); | 1421 | int i = focusOffset(); |
1419 | p->drawLine( r.x() + i, r.y() + 1 + i, r.x() + i, r.bottom() - 1 - i ); | 1422 | p->drawLine( r.x() + i, r.y() + 1 + i, r.x() + i, r.bottom() - 1 - i ); |
1420 | p->drawLine( r.x() + 1 + i, r.y() + i, r.right() - 1 - i, r.y() + i ); | 1423 | p->drawLine( r.x() + 1 + i, r.y() + i, r.right() - 1 - i, r.y() + i ); |
1421 | p->setPen( g.light() ); | 1424 | p->setPen( g.light() ); |
1422 | p->drawLine( r.right() - i, r.y() + 1 + i, r.right() - i, r.bottom() - 1 - i ); | 1425 | p->drawLine( r.right() - i, r.y() + 1 + i, r.right() - i, r.bottom() - 1 - i ); |
1423 | p->drawLine( r.x() + 1 + i, r.bottom() - i, r.right() - 1 - i, r.bottom() - i ); | 1426 | p->drawLine( r.x() + 1 + i, r.bottom() - i, r.right() - 1 - i, r.bottom() - i ); |
1424 | } | 1427 | } |
1425 | } | 1428 | } |
1426 | 1429 | ||
1427 | #if 0 | 1430 | #if 0 |
1428 | void OThemeStyle::drawKMenuBar( QPainter *p, int x, int y, int w, int h, | 1431 | void OThemeStyle::drawKMenuBar( QPainter *p, int x, int y, int w, int h, |
1429 | const QColorGroup &g, bool, QBrush * ) | 1432 | const QColorGroup &g, bool, QBrush * ) |
1430 | { | 1433 | { |
1431 | drawBaseButton( p, x, y, w, h, *colorGroup( g, MenuBar ), false, false, | 1434 | drawBaseButton( p, x, y, w, h, *colorGroup( g, MenuBar ), false, false, |
1432 | MenuBar ); | 1435 | MenuBar ); |
1433 | } | 1436 | } |
1434 | #endif | 1437 | #endif |
1435 | 1438 | ||
1436 | void OThemeStyle::drawMenuBarItem( QPainter *p, int x, int y, int w, int h, | 1439 | void OThemeStyle::drawMenuBarItem( QPainter *p, int x, int y, int w, int h, |
1437 | QMenuItem *mi, const QColorGroup &g, | 1440 | QMenuItem *mi, const QColorGroup &g, |
1438 | bool /*enabled*/, bool active ) | 1441 | bool /*enabled*/, bool active ) |
1439 | { | 1442 | { |
1440 | if(active){ | 1443 | if(active){ |
1441 | x -= 2; // Bug in Qt/E | 1444 | x -= 2; // Bug in Qt/E |
1442 | y -= 2; | 1445 | y -= 2; |
1443 | w += 2; | 1446 | w += 2; |
1444 | h += 2; | 1447 | h += 2; |
1445 | } | 1448 | } |
1446 | 1449 | ||
1447 | const QColorGroup * cg = colorGroup( g, active ? MenuBarItem : MenuBar ); | 1450 | const QColorGroup * cg = colorGroup( g, active ? MenuBarItem : MenuBar ); |
1448 | QColor btext = cg->buttonText(); | 1451 | QColor btext = cg->buttonText(); |
1449 | if ( active ) | 1452 | if ( active ) |
1450 | drawBaseButton( p, x, y, w, h, *cg, false, false, MenuBarItem ); | 1453 | drawBaseButton( p, x, y, w, h, *cg, false, false, MenuBarItem ); |
1451 | //qDrawShadePanel(p, x, y, w, h, *cg, false, 1); | 1454 | //qDrawShadePanel(p, x, y, w, h, *cg, false, 1); |
1452 | 1455 | ||
1453 | drawItem( p, x, y, w, h, AlignCenter | ShowPrefix | DontClip | SingleLine, | 1456 | drawItem( p, x, y, w, h, AlignCenter | ShowPrefix | DontClip | SingleLine, |
1454 | *cg, mi-> isEnabled ( ), mi->pixmap(), mi->text(), | 1457 | *cg, mi-> isEnabled ( ), mi->pixmap(), mi->text(), |
1455 | -1, &btext ); | 1458 | -1, &btext ); |
1456 | } | 1459 | } |
1457 | 1460 | ||
1458 | 1461 | ||
1459 | 1462 | ||
1460 | void OThemeStyle::drawProgressBar ( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, int percent ) | 1463 | void OThemeStyle::drawProgressBar ( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, int percent ) |
1461 | { | 1464 | { |
1462 | const QColorGroup * cg = colorGroup( g, ProgressBg ); | 1465 | const QColorGroup * cg = colorGroup( g, ProgressBg ); |
1463 | QBrush bg; | 1466 | QBrush bg; |
1464 | bg.setColor( cg->color( QColorGroup::Background ) ); | 1467 | bg.setColor( cg->color( QColorGroup::Background ) ); |
1465 | if ( isPixmap( ProgressBg ) ) | 1468 | if ( isPixmap( ProgressBg ) ) |
1466 | bg.setPixmap( *uncached( ProgressBg ) ); | 1469 | bg.setPixmap( *uncached( ProgressBg ) ); |
1467 | 1470 | ||
1468 | int pw = w * percent / 100; | 1471 | int pw = w * percent / 100; |
1469 | 1472 | ||
1470 | p-> fillRect ( x + pw, y, w - pw, h, bg ); // ### TODO | 1473 | p-> fillRect ( x + pw, y, w - pw, h, bg ); // ### TODO |
1471 | 1474 | ||
1472 | drawBaseButton( p, x, y, pw, h, *cg, false, false, ProgressBar ); | 1475 | drawBaseButton( p, x, y, pw, h, *cg, false, false, ProgressBar ); |
1473 | } | 1476 | } |
1474 | 1477 | ||
1475 | #if 0 | 1478 | #if 0 |
1476 | 1479 | ||
1477 | void OThemeStyle::drawKProgressBlock( QPainter *p, int x, int y, int w, int h, | 1480 | void OThemeStyle::drawKProgressBlock( QPainter *p, int x, int y, int w, int h, |
1478 | const QColorGroup &g, QBrush * ) | 1481 | const QColorGroup &g, QBrush * ) |
1479 | { | 1482 | { |
1480 | drawBaseButton( p, x, y, w, h, *colorGroup( g, ProgressBar ), false, false, | 1483 | drawBaseButton( p, x, y, w, h, *colorGroup( g, ProgressBar ), false, false, |
1481 | ProgressBar ); | 1484 | ProgressBar ); |
1482 | } | 1485 | } |
1483 | 1486 | ||
1484 | void OThemeStyle::getKProgressBackground( const QColorGroup &g, QBrush &bg ) | 1487 | void OThemeStyle::getKProgressBackground( const QColorGroup &g, QBrush &bg ) |
1485 | { | 1488 | { |
1486 | const QColorGroup * cg = colorGroup( g, ProgressBg ); | 1489 | const QColorGroup * cg = colorGroup( g, ProgressBg ); |
1487 | bg.setColor( cg->color( QColorGroup::Background ) ); | 1490 | bg.setColor( cg->color( QColorGroup::Background ) ); |
1488 | if ( isPixmap( ProgressBg ) ) | 1491 | if ( isPixmap( ProgressBg ) ) |
1489 | bg.setPixmap( *uncached( ProgressBg ) ); | 1492 | bg.setPixmap( *uncached( ProgressBg ) ); |
1490 | } | 1493 | } |
1491 | #endif | 1494 | #endif |
1492 | 1495 | ||
1493 | void OThemeStyle::tabbarMetrics( const QTabBar* t, int& hframe, int& vframe, int& overlap ) | 1496 | void OThemeStyle::tabbarMetrics( const QTabBar* t, int& hframe, int& vframe, int& overlap ) |
1494 | { | 1497 | { |
1495 | QCommonStyle::tabbarMetrics( t, hframe, vframe, overlap ); | 1498 | QCommonStyle::tabbarMetrics( t, hframe, vframe, overlap ); |
1496 | } | 1499 | } |
1497 | 1500 | ||
1498 | void OThemeStyle::drawTab( QPainter* p, const QTabBar* tb, QTab* t , | 1501 | void OThemeStyle::drawTab( QPainter* p, const QTabBar* tb, QTab* t , |
1499 | bool selected ) | 1502 | bool selected ) |
1500 | { | 1503 | { |
1501 | WidgetType widget = selected ? ActiveTab : InactiveTab; | 1504 | WidgetType widget = selected ? ActiveTab : InactiveTab; |
1502 | const QColorGroup *cg = colorGroup( tb->colorGroup(), widget ); | 1505 | const QColorGroup *cg = colorGroup( tb->colorGroup(), widget ); |
1503 | int i; | 1506 | int i; |
1504 | int x = t->r.x(), y = t->r.y(); | 1507 | int x = t->r.x(), y = t->r.y(); |
1505 | int x2 = t->r.right(), y2 = t->r.bottom(); | 1508 | int x2 = t->r.right(), y2 = t->r.bottom(); |
1506 | int bWidth = borderWidth( widget ); | 1509 | int bWidth = borderWidth( widget ); |
1507 | int hWidth = highlightWidth( widget ); | 1510 | int hWidth = highlightWidth( widget ); |
1508 | if ( tb->shape() == QTabBar::RoundedAbove ) { | 1511 | if ( tb->shape() == QTabBar::RoundedAbove ) { |
1509 | if ( !selected ) { | 1512 | if ( !selected ) { |
1510 | p->fillRect( x, y, x2 - x + 1, 2, | 1513 | p->fillRect( x, y, x2 - x + 1, 2, |
1511 | tb->palette().normal().brush( QColorGroup::Background ) ); | 1514 | tb->palette().normal().brush( QColorGroup::Background ) ); |
1512 | y += 2; | 1515 | y += 2; |
1513 | } | 1516 | } |
1514 | p->setPen( cg->text() ); | 1517 | p->setPen( cg->text() ); |
1515 | i = 0; | 1518 | i = 0; |
1516 | if ( i < bWidth ) { | 1519 | if ( i < bWidth ) { |
1517 | p->drawLine( x, y + 1, x, y2 ); | 1520 | p->drawLine( x, y + 1, x, y2 ); |
1518 | p->drawLine( x2, y + 1, x2, y2 ); | 1521 | p->drawLine( x2, y + 1, x2, y2 ); |
1519 | p->drawLine( x + 1, y, x2 - 1, y ); | 1522 | p->drawLine( x + 1, y, x2 - 1, y ); |
1520 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1523 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1521 | p->drawLine( x, y2, x2, y2 ); | 1524 | p->drawLine( x, y2, x2, y2 ); |
1522 | --y2; | 1525 | --y2; |
1523 | } | 1526 | } |
1524 | ++i, ++x, ++y, --x2; | 1527 | ++i, ++x, ++y, --x2; |
1525 | } | 1528 | } |
1526 | for ( ; i < bWidth; ++i, ++x, ++y, --x2 ) { | 1529 | for ( ; i < bWidth; ++i, ++x, ++y, --x2 ) { |
1527 | p->drawLine( x, y, x, y2 ); | 1530 | p->drawLine( x, y, x, y2 ); |
1528 | p->drawLine( x2, y, x2, y2 ); | 1531 | p->drawLine( x2, y, x2, y2 ); |
1529 | p->drawLine( x, y, x2, y ); | 1532 | p->drawLine( x, y, x2, y ); |
1530 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1533 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1531 | p->drawLine( x, y2, x2, y2 ); | 1534 | p->drawLine( x, y2, x2, y2 ); |
1532 | --y2; | 1535 | --y2; |
1533 | } | 1536 | } |
1534 | } | 1537 | } |
1535 | i = 0; | 1538 | i = 0; |
1536 | if ( i < hWidth && bWidth == 0 ) { | 1539 | if ( i < hWidth && bWidth == 0 ) { |
1537 | p->setPen( cg->light() ); | 1540 | p->setPen( cg->light() ); |
1538 | p->drawLine( x, y + 1, x, y2 ); | 1541 | p->drawLine( x, y + 1, x, y2 ); |
1539 | p->drawLine( x + 1, y, x2 - 1, y ); | 1542 | p->drawLine( x + 1, y, x2 - 1, y ); |
1540 | p->setPen( cg->dark() ); | 1543 | p->setPen( cg->dark() ); |
1541 | p->drawLine( x2, y + 1, x2, y2 ); | 1544 | p->drawLine( x2, y + 1, x2, y2 ); |
1542 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1545 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1543 | p->drawLine( x, y2, x2, y2 ); | 1546 | p->drawLine( x, y2, x2, y2 ); |
1544 | --y2; | 1547 | --y2; |
1545 | } | 1548 | } |
1546 | ++i, ++x, ++y, --x2; | 1549 | ++i, ++x, ++y, --x2; |
1547 | } | 1550 | } |
1548 | for ( ; i < hWidth; ++i, ++x, ++y, --x2 ) { | 1551 | for ( ; i < hWidth; ++i, ++x, ++y, --x2 ) { |
1549 | p->setPen( cg->light() ); | 1552 | p->setPen( cg->light() ); |
1550 | p->drawLine( x, y, x, y2 ); | 1553 | p->drawLine( x, y, x, y2 ); |
1551 | p->drawLine( x, y, x2, y ); | 1554 | p->drawLine( x, y, x2, y ); |
1552 | p->setPen( cg->dark() ); | 1555 | p->setPen( cg->dark() ); |
1553 | p->drawLine( x2, y + 1, x2, y2 ); | 1556 | p->drawLine( x2, y + 1, x2, y2 ); |
1554 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1557 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1555 | p->drawLine( x, y2, x2, y2 ); | 1558 | p->drawLine( x, y2, x2, y2 ); |
1556 | --y2; | 1559 | --y2; |
1557 | } | 1560 | } |
1558 | } | 1561 | } |
1559 | if ( isPixmap( widget ) ) | 1562 | if ( isPixmap( widget ) ) |
1560 | p->drawTiledPixmap( x, y, x2 - x + 1, y2 - y + 1, | 1563 | p->drawTiledPixmap( x, y, x2 - x + 1, y2 - y + 1, |
1561 | *scalePixmap( x2 - x + 1, y2 - y + 1, widget ) ); | 1564 | *scalePixmap( x2 - x + 1, y2 - y + 1, widget ) ); |
1562 | else | 1565 | else |
1563 | p->fillRect( x, y, x2 - x + 1, y2 - y + 1, cg->background() ); | 1566 | p->fillRect( x, y, x2 - x + 1, y2 - y + 1, cg->background() ); |
1564 | } | 1567 | } |
1565 | else if ( tb->shape() == QTabBar::RoundedBelow ) { | 1568 | else if ( tb->shape() == QTabBar::RoundedBelow ) { |
1566 | if ( !selected ) { | 1569 | if ( !selected ) { |
1567 | p->fillRect( x, y2 - 2, x2 - x + 1, 2, | 1570 | p->fillRect( x, y2 - 2, x2 - x + 1, 2, |
1568 | tb->palette().normal().brush( QColorGroup::Background ) ); | 1571 | tb->palette().normal().brush( QColorGroup::Background ) ); |
1569 | y2 -= 2; | 1572 | y2 -= 2; |
1570 | } | 1573 | } |
1571 | p->setPen( cg->text() ); | 1574 | p->setPen( cg->text() ); |
1572 | i = 0; | 1575 | i = 0; |
1573 | if ( i < bWidth ) { | 1576 | if ( i < bWidth ) { |
1574 | p->drawLine( x, y, x, y2 - 1 ); | 1577 | p->drawLine( x, y, x, y2 - 1 ); |
1575 | p->drawLine( x2, y, x2, y2 - 1 ); | 1578 | p->drawLine( x2, y, x2, y2 - 1 ); |
1576 | p->drawLine( x + 1, y2, x2 - 1, y2 ); | 1579 | p->drawLine( x + 1, y2, x2 - 1, y2 ); |
1577 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1580 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1578 | p->drawLine( x, y, x2, y ); | 1581 | p->drawLine( x, y, x2, y ); |
1579 | ++y; | 1582 | ++y; |
1580 | } | 1583 | } |
1581 | } | 1584 | } |
1582 | for ( ; i < bWidth; ++i, ++x, --x2, --y2 ) { | 1585 | for ( ; i < bWidth; ++i, ++x, --x2, --y2 ) { |
1583 | p->drawLine( x, y, x, y2 ); | 1586 | p->drawLine( x, y, x, y2 ); |
1584 | p->drawLine( x2, y, x2, y2 ); | 1587 | p->drawLine( x2, y, x2, y2 ); |
1585 | p->drawLine( x, y2, x2, y2 ); | 1588 | p->drawLine( x, y2, x2, y2 ); |
1586 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1589 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1587 | p->drawLine( x, y, x2, y ); | 1590 | p->drawLine( x, y, x2, y ); |
1588 | ++y; | 1591 | ++y; |
1589 | } | 1592 | } |
1590 | } | 1593 | } |
1591 | i = 0; | 1594 | i = 0; |
1592 | if ( i < hWidth && bWidth == 0 ) { | 1595 | if ( i < hWidth && bWidth == 0 ) { |
1593 | p->setPen( cg->dark() ); | 1596 | p->setPen( cg->dark() ); |
1594 | p->drawLine( x + 1, y2, x2 - 1, y2 ); | 1597 | p->drawLine( x + 1, y2, x2 - 1, y2 ); |
1595 | p->drawLine( x2, y, x2, y2 - 1 ); | 1598 | p->drawLine( x2, y, x2, y2 - 1 ); |
1596 | p->setPen( cg->light() ); | 1599 | p->setPen( cg->light() ); |
1597 | p->drawLine( x, y, x, y2 - 1 ); | 1600 | p->drawLine( x, y, x, y2 - 1 ); |
1598 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1601 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1599 | p->drawLine( x, y, x2, y ); | 1602 | p->drawLine( x, y, x2, y ); |
1600 | ++y; | 1603 | ++y; |
1601 | } | 1604 | } |
1602 | ++i, ++x, --x2, --y2; | 1605 | ++i, ++x, --x2, --y2; |
1603 | } | 1606 | } |
1604 | for ( ; i < hWidth; ++i, ++x, --x2, --y2 ) { | 1607 | for ( ; i < hWidth; ++i, ++x, --x2, --y2 ) { |
1605 | p->setPen( cg->dark() ); | 1608 | p->setPen( cg->dark() ); |
1606 | p->drawLine( x, y2, x2, y2 ); | 1609 | p->drawLine( x, y2, x2, y2 ); |
1607 | p->drawLine( x2, y, x2, y2 ); | 1610 | p->drawLine( x2, y, x2, y2 ); |
1608 | p->setPen( cg->light() ); | 1611 | p->setPen( cg->light() ); |
1609 | p->drawLine( x, y, x, y2 ); | 1612 | p->drawLine( x, y, x, y2 ); |
1610 | if ( selected ? activeTabLine() : inactiveTabLine() ) { | 1613 | if ( selected ? activeTabLine() : inactiveTabLine() ) { |
1611 | p->drawLine( x, y, x2, y ); | 1614 | p->drawLine( x, y, x2, y ); |
1612 | ++y; | 1615 | ++y; |
1613 | } | 1616 | } |
1614 | } | 1617 | } |
1615 | if ( isPixmap( widget ) ) | 1618 | if ( isPixmap( widget ) ) |
1616 | p->drawTiledPixmap( x, y, x2 - x + 1, y2 - y + 1, | 1619 | p->drawTiledPixmap( x, y, x2 - x + 1, y2 - y + 1, |
1617 | *scalePixmap( x2 - x + 1, y2 - y + 1, widget ) ); | 1620 | *scalePixmap( x2 - x + 1, y2 - y + 1, widget ) ); |
1618 | else | 1621 | else |
1619 | p->fillRect( x, y, x2 - x + 1, y2 - y + 1, cg->background() ); | 1622 | p->fillRect( x, y, x2 - x + 1, y2 - y + 1, cg->background() ); |
1620 | } | 1623 | } |
1621 | else | 1624 | else |
1622 | QCommonStyle::drawTab( p, tb, t, selected ); | 1625 | QCommonStyle::drawTab( p, tb, t, selected ); |
1623 | } | 1626 | } |
1624 | 1627 | ||
1625 | void OThemeStyle::drawTabMask( QPainter* p, const QTabBar* tb, QTab* t, | 1628 | void OThemeStyle::drawTabMask( QPainter* p, const QTabBar* tb, QTab* t, |
1626 | bool selected ) | 1629 | bool selected ) |
1627 | { | 1630 | { |
1628 | QRect r( t->r ); | 1631 | QRect r( t->r ); |
1629 | 1632 | ||
1630 | if ( tb->shape() == QTabBar::RoundedAbove ) { | 1633 | if ( tb->shape() == QTabBar::RoundedAbove ) { |
1631 | if ( !selected ) | 1634 | if ( !selected ) |
1632 | r.setTop( r.top() + 2 ); | 1635 | r.setTop( r.top() + 2 ); |
1633 | p->drawLine( r.left() + 1, r.top(), r.right() - 1, r.top() ); | 1636 | p->drawLine( r.left() + 1, r.top(), r.right() - 1, r.top() ); |
1634 | QBrush b( color1, SolidPattern ); | 1637 | QBrush b( color1, SolidPattern ); |
1635 | p->fillRect( r.left(), r.top() + 1, r.width(), r.height() - 1, b ); | 1638 | p->fillRect( r.left(), r.top() + 1, r.width(), r.height() - 1, b ); |
1636 | } | 1639 | } |
1637 | else if ( tb->shape() == QTabBar::RoundedBelow ) { | 1640 | else if ( tb->shape() == QTabBar::RoundedBelow ) { |
1638 | if ( !selected ) | 1641 | if ( !selected ) |
1639 | r.setBottom( r.bottom() - 2 ); | 1642 | r.setBottom( r.bottom() - 2 ); |
1640 | p->drawLine( r.left() + 1, r.bottom(), r.right() - 1, r.bottom() ); | 1643 | p->drawLine( r.left() + 1, r.bottom(), r.right() - 1, r.bottom() ); |
1641 | QBrush b( color1, SolidPattern ); | 1644 | QBrush b( color1, SolidPattern ); |
1642 | p->fillRect( r.left(), r.top(), r.width(), r.height() - 1, b ); | 1645 | p->fillRect( r.left(), r.top(), r.width(), r.height() - 1, b ); |
1643 | } | 1646 | } |
1644 | else | 1647 | else |
1645 | QCommonStyle::drawTabMask( p, tb, t, selected ); | 1648 | QCommonStyle::drawTabMask( p, tb, t, selected ); |
1646 | 1649 | ||
1647 | } | 1650 | } |
1648 | 1651 | ||
1649 | 1652 | ||
1650 | //#include "kthemestyle.moc" | 1653 | //#include "kthemestyle.moc" |
1651 | 1654 | ||
diff --git a/noncore/styles/web/webstyle.cpp b/noncore/styles/web/webstyle.cpp index cd3cf08..7b58d89 100644 --- a/noncore/styles/web/webstyle.cpp +++ b/noncore/styles/web/webstyle.cpp | |||
@@ -1,1183 +1,1303 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> | 2 | * Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> |
3 | * | 3 | * |
4 | * This library is free software; you can redistribute it and/or | 4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Library General Public | 5 | * modify it under the terms of the GNU Library General Public |
6 | * License as published by the Free Software Foundation; either | 6 | * License as published by the Free Software Foundation; either |
7 | * version 2 of the License, or (at your option) any later version. | 7 | * version 2 of the License, or (at your option) any later version. |
8 | * | 8 | * |
9 | * This library is distributed in the hope that it will be useful, | 9 | * This library is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | * Library General Public License for more details. | 12 | * Library General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU Library General Public License | 14 | * You should have received a copy of the GNU Library General Public License |
15 | * along with this library; see the file COPYING.LIB. If not, write to | 15 | * along with this library; see the file COPYING.LIB. If not, write to |
16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | * Boston, MA 02111-1307, USA. | 17 | * Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #ifndef INCLUDE_MENUITEM_DEF | 20 | #ifndef INCLUDE_MENUITEM_DEF |
21 | #define INCLUDE_MENUITEM_DEF | 21 | #define INCLUDE_MENUITEM_DEF |
22 | #endif | 22 | #endif |
23 | 23 | ||
24 | #include <qmenudata.h> | 24 | #include <qmenudata.h> |
25 | #include <qpalette.h> | 25 | #include <qpalette.h> |
26 | #include <qbitmap.h> | 26 | #include <qbitmap.h> |
27 | #include <qtabbar.h> | 27 | #include <qtabbar.h> |
28 | #include <qpointarray.h> | 28 | #include <qpointarray.h> |
29 | #include <qscrollbar.h> | 29 | #include <qscrollbar.h> |
30 | #include <qframe.h> | 30 | #include <qframe.h> |
31 | #include <qpushbutton.h> | 31 | #include <qpushbutton.h> |
32 | #include <qdrawutil.h> | 32 | #include <qdrawutil.h> |
33 | #include <qpainter.h> | 33 | #include <qpainter.h> |
34 | 34 | ||
35 | #include "webstyle.h" | 35 | #include "webstyle.h" |
36 | 36 | ||
37 | static const int _indicatorSize = 9; | 37 | static const int _indicatorSize = 9; |
38 | static QButton * _highlightedButton = 0; | 38 | static QButton * _highlightedButton = 0; |
39 | static const int _scrollBarExtent = 12; | 39 | static const int _scrollBarExtent = 12; |
40 | 40 | ||
41 | static QFrame * _currentFrame = 0; | 41 | static QFrame * _currentFrame = 0; |
42 | static int _savedFrameLineWidth; | 42 | static int _savedFrameLineWidth; |
43 | static int _savedFrameMidLineWidth; | 43 | static int _savedFrameMidLineWidth; |
44 | static ulong _savedFrameStyle; | 44 | static ulong _savedFrameStyle; |
45 | 45 | ||
46 | static const int ITEMFRAME = 1; // menu stuff | ||
47 | static const int ITEMHMARGIN = 3; | ||
48 | static const int ITEMVMARGIN = 0; | ||
49 | |||
50 | static const int ARROWMARGIN = 6; | ||
51 | static const int RIGHTBORDER = 10; | ||
52 | static const int MINICONSIZE = 12; | ||
53 | |||
54 | |||
46 | static QColor contrastingForeground(const QColor & fg, const QColor & bg) | 55 | static QColor contrastingForeground(const QColor & fg, const QColor & bg) |
47 | { | 56 | { |
48 | int h, s, vbg, vfg; | 57 | int h, s, vbg, vfg; |
49 | 58 | ||
50 | bg.hsv(&h, &s, &vbg); | 59 | bg.hsv(&h, &s, &vbg); |
51 | fg.hsv(&h, &s, &vfg); | 60 | fg.hsv(&h, &s, &vfg); |
52 | 61 | ||
53 | int diff(vbg - vfg); | 62 | int diff(vbg - vfg); |
54 | 63 | ||
55 | if ((diff > -72) && (diff < 72)) | 64 | if ((diff > -72) && (diff < 72)) |
56 | { | 65 | { |
57 | return (vbg < 128) ? Qt::white : Qt::black; | 66 | return (vbg < 128) ? Qt::white : Qt::black; |
58 | } | 67 | } |
59 | else | 68 | else |
60 | { | 69 | { |
61 | return fg; | 70 | return fg; |
62 | } | 71 | } |
63 | } | 72 | } |
64 | 73 | ||
65 | // Gotta keep it separated. | 74 | // Gotta keep it separated. |
66 | 75 | ||
67 | static void | 76 | static void |
68 | scrollBarControlsMetrics | 77 | scrollBarControlsMetrics |
69 | ( | 78 | ( |
70 | const QScrollBar * sb, | 79 | const QScrollBar * sb, |
71 | int sliderStart, | 80 | int sliderStart, |
72 | int /* sliderMin */, | 81 | int /* sliderMin */, |
73 | int sliderMax, | 82 | int sliderMax, |
74 | int sliderLength, | 83 | int sliderLength, |
75 | int buttonDim, | 84 | int buttonDim, |
76 | QRect & rSub, | 85 | QRect & rSub, |
77 | QRect & rAdd, | 86 | QRect & rAdd, |
78 | QRect & rSubPage, | 87 | QRect & rSubPage, |
79 | QRect & rAddPage, | 88 | QRect & rAddPage, |
80 | QRect & rSlider | 89 | QRect & rSlider |
81 | ) | 90 | ) |
82 | { | 91 | { |
83 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; | 92 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; |
84 | 93 | ||
85 | int len = horizontal ? sb->width() : sb->height(); | 94 | int len = horizontal ? sb->width() : sb->height(); |
86 | 95 | ||
87 | int extent = horizontal ? sb->height() : sb->width(); | 96 | int extent = horizontal ? sb->height() : sb->width(); |
88 | 97 | ||
89 | QColorGroup g = sb->colorGroup(); | 98 | QColorGroup g = sb->colorGroup(); |
90 | 99 | ||
91 | if (sliderStart > sliderMax) | 100 | if (sliderStart > sliderMax) |
92 | sliderStart = sliderMax; | 101 | sliderStart = sliderMax; |
93 | 102 | ||
94 | int sliderEnd = sliderStart + sliderLength; | 103 | int sliderEnd = sliderStart + sliderLength; |
95 | 104 | ||
96 | int addX, addY; | 105 | int addX, addY; |
97 | int subX, subY; | 106 | int subX, subY; |
98 | int subPageX, subPageY, subPageW, subPageH; | 107 | int subPageX, subPageY, subPageW, subPageH; |
99 | int addPageX, addPageY, addPageW, addPageH; | 108 | int addPageX, addPageY, addPageW, addPageH; |
100 | int sliderX, sliderY, sliderW, sliderH; | 109 | int sliderX, sliderY, sliderW, sliderH; |
101 | 110 | ||
102 | if (horizontal) | 111 | if (horizontal) |
103 | { | 112 | { |
104 | subY = 0; | 113 | subY = 0; |
105 | addY = 0; | 114 | addY = 0; |
106 | subX = 0; | 115 | subX = 0; |
107 | addX = buttonDim; | 116 | addX = buttonDim; |
108 | 117 | ||
109 | subPageX = buttonDim * 2; | 118 | subPageX = buttonDim * 2; |
110 | subPageY = 0; | 119 | subPageY = 0; |
111 | subPageW = sliderStart - 1; | 120 | subPageW = sliderStart - 1; |
112 | subPageH = extent; | 121 | subPageH = extent; |
113 | 122 | ||
114 | addPageX = sliderEnd; | 123 | addPageX = sliderEnd; |
115 | addPageY = 0; | 124 | addPageY = 0; |
116 | addPageW = len - sliderEnd; | 125 | addPageW = len - sliderEnd; |
117 | addPageH = extent; | 126 | addPageH = extent; |
118 | 127 | ||
119 | sliderX = sliderStart; | 128 | sliderX = sliderStart; |
120 | sliderY = 0; | 129 | sliderY = 0; |
121 | sliderW = sliderLength; | 130 | sliderW = sliderLength; |
122 | sliderH = extent; | 131 | sliderH = extent; |
123 | } | 132 | } |
124 | else | 133 | else |
125 | { | 134 | { |
126 | subX = 0; | 135 | subX = 0; |
127 | addX = 0; | 136 | addX = 0; |
128 | subY = len - buttonDim * 2; | 137 | subY = len - buttonDim * 2; |
129 | addY = len - buttonDim; | 138 | addY = len - buttonDim; |
130 | 139 | ||
131 | subPageX = 0; | 140 | subPageX = 0; |
132 | subPageY = 0; | 141 | subPageY = 0; |
133 | subPageW = extent; | 142 | subPageW = extent; |
134 | subPageH = sliderStart; | 143 | subPageH = sliderStart; |
135 | 144 | ||
136 | addPageX = 0; | 145 | addPageX = 0; |
137 | addPageY = sliderEnd; | 146 | addPageY = sliderEnd; |
138 | addPageW = extent; | 147 | addPageW = extent; |
139 | addPageH = subY - sliderEnd; | 148 | addPageH = subY - sliderEnd; |
140 | 149 | ||
141 | sliderX = 0; | 150 | sliderX = 0; |
142 | sliderY = sliderStart; | 151 | sliderY = sliderStart; |
143 | sliderW = extent; | 152 | sliderW = extent; |
144 | sliderH = sliderLength; | 153 | sliderH = sliderLength; |
145 | } | 154 | } |
146 | 155 | ||
147 | rSub .setRect( subX, subY, buttonDim, buttonDim); | 156 | rSub .setRect( subX, subY, buttonDim, buttonDim); |
148 | rAdd .setRect( addX, addY, buttonDim, buttonDim); | 157 | rAdd .setRect( addX, addY, buttonDim, buttonDim); |
149 | rSubPage .setRect(subPageX, subPageY, subPageW, subPageH); | 158 | rSubPage .setRect(subPageX, subPageY, subPageW, subPageH); |
150 | rAddPage .setRect(addPageX, addPageY, addPageW, addPageH); | 159 | rAddPage .setRect(addPageX, addPageY, addPageW, addPageH); |
151 | rSlider .setRect( sliderX, sliderY, sliderW, sliderH); | 160 | rSlider .setRect( sliderX, sliderY, sliderW, sliderH); |
152 | } | 161 | } |
153 | 162 | ||
154 | // Rounded rects my way. | 163 | // Rounded rects my way. |
155 | 164 | ||
156 | static void | 165 | static void |
157 | drawFunkyRect | 166 | drawFunkyRect |
158 | ( | 167 | ( |
159 | QPainter * p, | 168 | QPainter * p, |
160 | int x, | 169 | int x, |
161 | int y, | 170 | int y, |
162 | int w, | 171 | int w, |
163 | int h, | 172 | int h, |
164 | bool small | 173 | bool small |
165 | ) | 174 | ) |
166 | { | 175 | { |
167 | p->translate(x, y); | 176 | p->translate(x, y); |
168 | 177 | ||
169 | if (small) | 178 | if (small) |
170 | { | 179 | { |
171 | p->drawLine( 2, 0, w - 3, 0 ); | 180 | p->drawLine( 2, 0, w - 3, 0 ); |
172 | p->drawLine( w - 1, 2, w - 1, h - 3 ); | 181 | p->drawLine( w - 1, 2, w - 1, h - 3 ); |
173 | p->drawLine( w - 3, h - 1, 2, h - 1 ); | 182 | p->drawLine( w - 3, h - 1, 2, h - 1 ); |
174 | p->drawLine( 0, h - 3, 0, 2 ); | 183 | p->drawLine( 0, h - 3, 0, 2 ); |
175 | 184 | ||
176 | // Use an array of points so that there's only one round-trip with the | 185 | // Use an array of points so that there's only one round-trip with the |
177 | // X server. | 186 | // X server. |
178 | 187 | ||
179 | QCOORD pointList[] = | 188 | QCOORD pointList[] = |
180 | { | 189 | { |
181 | 1, 1, | 190 | 1, 1, |
182 | w - 2, 1, | 191 | w - 2, 1, |
183 | w - 2, h - 2, | 192 | w - 2, h - 2, |
184 | 1, h - 2 | 193 | 1, h - 2 |
185 | }; | 194 | }; |
186 | 195 | ||
187 | p->drawPoints(QPointArray(4, pointList)); | 196 | p->drawPoints(QPointArray(4, pointList)); |
188 | } | 197 | } |
189 | else | 198 | else |
190 | { | 199 | { |
191 | p->drawLine( 3, 0, w - 4, 0 ); | 200 | p->drawLine( 3, 0, w - 4, 0 ); |
192 | p->drawLine( w - 1, 3, w - 1, h - 4 ); | 201 | p->drawLine( w - 1, 3, w - 1, h - 4 ); |
193 | p->drawLine( w - 4, h - 1, 3, h - 1 ); | 202 | p->drawLine( w - 4, h - 1, 3, h - 1 ); |
194 | p->drawLine( 0, h - 4, 0, 3 ); | 203 | p->drawLine( 0, h - 4, 0, 3 ); |
195 | 204 | ||
196 | QCOORD pointList[] = | 205 | QCOORD pointList[] = |
197 | { | 206 | { |
198 | 1, 2, | 207 | 1, 2, |
199 | 2, 1, | 208 | 2, 1, |
200 | w - 3, 1, | 209 | w - 3, 1, |
201 | w - 2, 2, | 210 | w - 2, 2, |
202 | w - 2, h - 3, | 211 | w - 2, h - 3, |
203 | w - 3, h - 2, | 212 | w - 3, h - 2, |
204 | 2, h - 2, | 213 | 2, h - 2, |
205 | 1, h - 3 | 214 | 1, h - 3 |
206 | }; | 215 | }; |
207 | 216 | ||
208 | p->drawPoints(QPointArray(8, pointList)); | 217 | p->drawPoints(QPointArray(8, pointList)); |
209 | } | 218 | } |
210 | 219 | ||
211 | p->translate(-x, -y); | 220 | p->translate(-x, -y); |
212 | } | 221 | } |
213 | 222 | ||
214 | WebStyle::WebStyle() | 223 | WebStyle::WebStyle() |
215 | : QWindowsStyle() | 224 | : QWindowsStyle() |
216 | { | 225 | { |
217 | setButtonDefaultIndicatorWidth(1); | 226 | setButtonDefaultIndicatorWidth(1); |
218 | setScrollBarExtent(_scrollBarExtent, _scrollBarExtent); | 227 | setScrollBarExtent(_scrollBarExtent, _scrollBarExtent); |
219 | setButtonMargin( 3 ); | 228 | setButtonMargin( 3 ); |
220 | setSliderThickness(_scrollBarExtent ); | 229 | setSliderThickness(_scrollBarExtent ); |
221 | } | 230 | } |
222 | 231 | ||
223 | WebStyle::~WebStyle() | 232 | WebStyle::~WebStyle() |
224 | { | 233 | { |
225 | // Empty. | 234 | // Empty. |
226 | } | 235 | } |
227 | 236 | ||
228 | void | 237 | void |
229 | WebStyle::polish(QApplication *) | 238 | WebStyle::polish(QApplication *) |
230 | { | 239 | { |
231 | // Empty. | 240 | // Empty. |
232 | } | 241 | } |
233 | 242 | ||
234 | void | 243 | void |
235 | WebStyle::polish(QPalette &) | 244 | WebStyle::polish(QPalette &) |
236 | { | 245 | { |
237 | // Empty. | 246 | // Empty. |
238 | } | 247 | } |
239 | 248 | ||
240 | void | 249 | void |
241 | WebStyle::unPolish(QApplication *) | 250 | WebStyle::unPolish(QApplication *) |
242 | { | 251 | { |
243 | // Empty. | 252 | // Empty. |
244 | } | 253 | } |
245 | 254 | ||
246 | void | 255 | void |
247 | WebStyle::polish(QWidget * w) | 256 | WebStyle::polish(QWidget * w) |
248 | { | 257 | { |
249 | if (w->inherits("QPushButton")) | 258 | if (w->inherits("QPushButton")) |
250 | w->installEventFilter(this); | 259 | w->installEventFilter(this); |
251 | 260 | ||
252 | else if (w->inherits("QGroupBox") || w->inherits("QFrame")) | 261 | else if (w->inherits("QGroupBox") || w->inherits("QFrame")) |
253 | { | 262 | { |
254 | QFrame * f(static_cast<QFrame *>(w)); | 263 | QFrame * f(static_cast<QFrame *>(w)); |
255 | 264 | ||
256 | if (f->frameStyle() != QFrame::NoFrame) | 265 | if (f->frameStyle() != QFrame::NoFrame) |
257 | { | 266 | { |
258 | _currentFrame = f; | 267 | _currentFrame = f; |
259 | 268 | ||
260 | _savedFrameLineWidth = f->lineWidth(); | 269 | _savedFrameLineWidth = f->lineWidth(); |
261 | _savedFrameMidLineWidth = f->midLineWidth(); | 270 | _savedFrameMidLineWidth = f->midLineWidth(); |
262 | _savedFrameStyle = f->frameStyle(); | 271 | _savedFrameStyle = f->frameStyle(); |
263 | 272 | ||
264 | if (f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine) | 273 | if (f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine) |
265 | { | 274 | { |
266 | f->setMidLineWidth(1); | 275 | f->setMidLineWidth(1); |
267 | f->setFrameStyle(f->frameShape() | QFrame::Plain); | 276 | f->setFrameStyle(f->frameShape() | QFrame::Plain); |
268 | } | 277 | } |
269 | else | 278 | else |
270 | { | 279 | { |
271 | f->setLineWidth(1); | 280 | f->setLineWidth(1); |
272 | f->setFrameStyle(QFrame::Box | QFrame::Plain); | 281 | f->setFrameStyle(QFrame::Box | QFrame::Plain); |
273 | } | 282 | } |
274 | } | 283 | } |
275 | } | 284 | } |
276 | } | 285 | } |
277 | 286 | ||
278 | void | 287 | void |
279 | WebStyle::unPolish(QWidget * w) | 288 | WebStyle::unPolish(QWidget * w) |
280 | { | 289 | { |
281 | if (w->inherits("QPushButton")) | 290 | if (w->inherits("QPushButton")) |
282 | w->removeEventFilter(this); | 291 | w->removeEventFilter(this); |
283 | 292 | ||
284 | else if (w == _currentFrame) | 293 | else if (w == _currentFrame) |
285 | { | 294 | { |
286 | QFrame * f(static_cast<QFrame *>(w)); | 295 | QFrame * f(static_cast<QFrame *>(w)); |
287 | 296 | ||
288 | f->setLineWidth(_savedFrameLineWidth); | 297 | f->setLineWidth(_savedFrameLineWidth); |
289 | f->setMidLineWidth(_savedFrameMidLineWidth); | 298 | f->setMidLineWidth(_savedFrameMidLineWidth); |
290 | f->setFrameStyle(_savedFrameStyle); | 299 | f->setFrameStyle(_savedFrameStyle); |
291 | } | 300 | } |
292 | } | 301 | } |
293 | 302 | ||
294 | bool | 303 | bool |
295 | WebStyle::eventFilter(QObject * o, QEvent * e) | 304 | WebStyle::eventFilter(QObject * o, QEvent * e) |
296 | { | 305 | { |
297 | QPushButton * pb(static_cast<QPushButton *>(o)); | 306 | QPushButton * pb(static_cast<QPushButton *>(o)); |
298 | 307 | ||
299 | if (e->type() == QEvent::Enter) | 308 | if (e->type() == QEvent::Enter) |
300 | { | 309 | { |
301 | _highlightedButton = pb; | 310 | _highlightedButton = pb; |
302 | pb->repaint(false); | 311 | pb->repaint(false); |
303 | } | 312 | } |
304 | else if (e->type() == QEvent::Leave) | 313 | else if (e->type() == QEvent::Leave) |
305 | { | 314 | { |
306 | _highlightedButton = 0; | 315 | _highlightedButton = 0; |
307 | pb->repaint(false); | 316 | pb->repaint(false); |
308 | } | 317 | } |
309 | 318 | ||
310 | return false; | 319 | return false; |
311 | } | 320 | } |
312 | 321 | ||
313 | void | 322 | void |
314 | WebStyle::drawButton | 323 | WebStyle::drawButton |
315 | ( | 324 | ( |
316 | QPainter * p, | 325 | QPainter * p, |
317 | int x, | 326 | int x, |
318 | int y, | 327 | int y, |
319 | int w, | 328 | int w, |
320 | int h, | 329 | int h, |
321 | const QColorGroup & g, | 330 | const QColorGroup & g, |
322 | bool sunken, | 331 | bool sunken, |
323 | const QBrush * fill | 332 | const QBrush * fill |
324 | ) | 333 | ) |
325 | { | 334 | { |
326 | p->save(); | 335 | p->save(); |
327 | 336 | ||
328 | if (sunken) | 337 | if (sunken) |
329 | p->setPen(contrastingForeground(g.light(), g.button())); | 338 | p->setPen(contrastingForeground(g.light(), g.button())); |
330 | else | 339 | else |
331 | p->setPen(contrastingForeground(g.mid(), g.button())); | 340 | p->setPen(contrastingForeground(g.mid(), g.button())); |
332 | 341 | ||
333 | p->setBrush(0 == fill ? NoBrush : *fill); | 342 | p->setBrush(0 == fill ? NoBrush : *fill); |
334 | 343 | ||
335 | drawFunkyRect(p, x, y, w, h, true); | 344 | drawFunkyRect(p, x, y, w, h, true); |
336 | 345 | ||
337 | p->restore(); | 346 | p->restore(); |
338 | } | 347 | } |
339 | 348 | ||
340 | QRect | 349 | QRect |
341 | WebStyle::buttonRect(int x, int y, int w, int h) | 350 | WebStyle::buttonRect(int x, int y, int w, int h) |
342 | { | 351 | { |
343 | return QRect(x + 2, y + 2, w - 4, h - 4); | 352 | return QRect(x + 2, y + 2, w - 4, h - 4); |
344 | } | 353 | } |
345 | 354 | ||
346 | void | 355 | void |
347 | WebStyle::drawBevelButton | 356 | WebStyle::drawBevelButton |
348 | ( | 357 | ( |
349 | QPainter * p, | 358 | QPainter * p, |
350 | int x, | 359 | int x, |
351 | int y, | 360 | int y, |
352 | int w, | 361 | int w, |
353 | int h, | 362 | int h, |
354 | const QColorGroup & g, | 363 | const QColorGroup & g, |
355 | bool sunken, | 364 | bool sunken, |
356 | const QBrush * fill | 365 | const QBrush * fill |
357 | ) | 366 | ) |
358 | { | 367 | { |
359 | drawButton(p, x, y, w, h, g, sunken, fill); | 368 | drawButton(p, x, y, w, h, g, sunken, fill); |
360 | } | 369 | } |
361 | 370 | ||
362 | void | 371 | void |
363 | WebStyle::drawPushButton(QPushButton * b, QPainter * p) | 372 | WebStyle::drawPushButton(QPushButton * b, QPainter * p) |
364 | { | 373 | { |
365 | // Note: painter is already translated for us. | 374 | // Note: painter is already translated for us. |
366 | 375 | ||
367 | bool sunken(b->isDown() || b->isOn()); | 376 | bool sunken(b->isDown() || b->isOn()); |
368 | bool hl(_highlightedButton == b); | 377 | bool hl(_highlightedButton == b); |
369 | 378 | ||
370 | QColor bg(b->colorGroup().button()); | 379 | QColor bg(b->colorGroup().button()); |
371 | 380 | ||
372 | p->save(); | 381 | p->save(); |
373 | p->fillRect(b->rect(), b->colorGroup().brush(QColorGroup::Background)); | 382 | p->fillRect(b->rect(), b->colorGroup().brush(QColorGroup::Background)); |
374 | 383 | ||
375 | if (b->isDefault()) | 384 | if (b->isDefault()) |
376 | { | 385 | { |
377 | QColor c(hl ? b->colorGroup().highlight() : b->colorGroup().mid()); | 386 | QColor c(hl ? b->colorGroup().highlight() : b->colorGroup().mid()); |
378 | 387 | ||
379 | p->setPen(contrastingForeground(c, bg)); | 388 | p->setPen(contrastingForeground(c, bg)); |
380 | 389 | ||
381 | drawFunkyRect(p, 0, 0, b->width(), b->height(), false); | 390 | drawFunkyRect(p, 0, 0, b->width(), b->height(), false); |
382 | } | 391 | } |
383 | 392 | ||
384 | p->fillRect | 393 | p->fillRect |
385 | ( | 394 | ( |
386 | 4, | 395 | 4, |
387 | 4, | 396 | 4, |
388 | b->width() - 8, | 397 | b->width() - 8, |
389 | b->height() - 8, | 398 | b->height() - 8, |
390 | b->colorGroup().brush(QColorGroup::Button) | 399 | b->colorGroup().brush(QColorGroup::Button) |
391 | ); | 400 | ); |
392 | 401 | ||
393 | if (b->isEnabled()) | 402 | if (b->isEnabled()) |
394 | { | 403 | { |
395 | if (sunken) | 404 | if (sunken) |
396 | { | 405 | { |
397 | p->setPen(contrastingForeground(b->colorGroup().light(), bg)); | 406 | p->setPen(contrastingForeground(b->colorGroup().light(), bg)); |
398 | } | 407 | } |
399 | else | 408 | else |
400 | { | 409 | { |
401 | if (hl) | 410 | if (hl) |
402 | p->setPen(contrastingForeground(b->colorGroup().highlight(), bg)); | 411 | p->setPen(contrastingForeground(b->colorGroup().highlight(), bg)); |
403 | else | 412 | else |
404 | p->setPen(contrastingForeground(b->colorGroup().mid(), bg)); | 413 | p->setPen(contrastingForeground(b->colorGroup().mid(), bg)); |
405 | } | 414 | } |
406 | } | 415 | } |
407 | else | 416 | else |
408 | { | 417 | { |
409 | p->setPen(b->colorGroup().button()); | 418 | p->setPen(b->colorGroup().button()); |
410 | } | 419 | } |
411 | 420 | ||
412 | drawFunkyRect(p, 3, 3, b->width() - 6, b->height() - 6, true); | 421 | drawFunkyRect(p, 3, 3, b->width() - 6, b->height() - 6, true); |
413 | 422 | ||
414 | p->restore(); | 423 | p->restore(); |
415 | } | 424 | } |
416 | 425 | ||
417 | void | 426 | void |
418 | WebStyle::drawPushButtonLabel(QPushButton * b, QPainter * p) | 427 | WebStyle::drawPushButtonLabel(QPushButton * b, QPainter * p) |
419 | { | 428 | { |
420 | // This is complicated stuff and we don't really want to mess with it. | 429 | // This is complicated stuff and we don't really want to mess with it. |
421 | 430 | ||
422 | QWindowsStyle::drawPushButtonLabel(b, p); | 431 | QWindowsStyle::drawPushButtonLabel(b, p); |
423 | } | 432 | } |
424 | 433 | ||
425 | void | 434 | void |
426 | WebStyle::drawScrollBarControls | 435 | WebStyle::drawScrollBarControls |
427 | ( | 436 | ( |
428 | QPainter * p, | 437 | QPainter * p, |
429 | const QScrollBar * sb, | 438 | const QScrollBar * sb, |
430 | int sliderStart, | 439 | int sliderStart, |
431 | uint controls, | 440 | uint controls, |
432 | uint activeControl | 441 | uint activeControl |
433 | ) | 442 | ) |
434 | { | 443 | { |
435 | p->save(); | 444 | p->save(); |
436 | 445 | ||
437 | int sliderMin, sliderMax, sliderLength, buttonDim; | 446 | int sliderMin, sliderMax, sliderLength, buttonDim; |
438 | 447 | ||
439 | scrollBarMetrics(sb, sliderMin, sliderMax, sliderLength, buttonDim); | 448 | scrollBarMetrics(sb, sliderMin, sliderMax, sliderLength, buttonDim); |
440 | 449 | ||
441 | QRect rSub, rAdd, rSubPage, rAddPage, rSlider; | 450 | QRect rSub, rAdd, rSubPage, rAddPage, rSlider; |
442 | 451 | ||
443 | scrollBarControlsMetrics | 452 | scrollBarControlsMetrics |
444 | ( | 453 | ( |
445 | sb, | 454 | sb, |
446 | sliderStart, | 455 | sliderStart, |
447 | sliderMin, | 456 | sliderMin, |
448 | sliderMax, | 457 | sliderMax, |
449 | sliderLength, | 458 | sliderLength, |
450 | buttonDim, | 459 | buttonDim, |
451 | rSub, | 460 | rSub, |
452 | rAdd, | 461 | rAdd, |
453 | rSubPage, | 462 | rSubPage, |
454 | rAddPage, | 463 | rAddPage, |
455 | rSlider | 464 | rSlider |
456 | ); | 465 | ); |
457 | 466 | ||
458 | QColorGroup g(sb->colorGroup()); | 467 | QColorGroup g(sb->colorGroup()); |
459 | 468 | ||
460 | if (controls & AddLine && rAdd.isValid()) | 469 | if (controls & AddLine && rAdd.isValid()) |
461 | { | 470 | { |
462 | bool active(activeControl & AddLine); | 471 | bool active(activeControl & AddLine); |
463 | 472 | ||
464 | QColor c(active ? g.highlight() : g.dark()); | 473 | QColor c(active ? g.highlight() : g.dark()); |
465 | 474 | ||
466 | p->setPen(c); | 475 | p->setPen(c); |
467 | p->setBrush(g.button()); | 476 | p->setBrush(g.button()); |
468 | p->drawRect(rAdd); | 477 | p->drawRect(rAdd); |
469 | 478 | ||
470 | Qt::ArrowType t = | 479 | Qt::ArrowType t = |
471 | sb->orientation() == Horizontal ? Qt::RightArrow : Qt::DownArrow; | 480 | sb->orientation() == Horizontal ? Qt::RightArrow : Qt::DownArrow; |
472 | 481 | ||
473 | // Is it me or is KStyle::drawArrow broken ? | 482 | // Is it me or is KStyle::drawArrow broken ? |
474 | 483 | ||
475 | drawArrow | 484 | drawArrow |
476 | ( | 485 | ( |
477 | p, | 486 | p, |
478 | t, | 487 | t, |
479 | true, // FIXME - down ? | 488 | true, // FIXME - down ? |
480 | rAdd.x(), | 489 | rAdd.x(), |
481 | rAdd.y(), | 490 | rAdd.y(), |
482 | rAdd.width(), | 491 | rAdd.width(), |
483 | rAdd.height(), | 492 | rAdd.height(), |
484 | g, | 493 | g, |
485 | true // FIXME - enabled ? | 494 | true // FIXME - enabled ? |
486 | ); | 495 | ); |
487 | } | 496 | } |
488 | 497 | ||
489 | if (controls & SubLine && rSub.isValid()) | 498 | if (controls & SubLine && rSub.isValid()) |
490 | { | 499 | { |
491 | bool active(activeControl & SubLine); | 500 | bool active(activeControl & SubLine); |
492 | 501 | ||
493 | QColor c(active ? g.highlight() : g.dark()); | 502 | QColor c(active ? g.highlight() : g.dark()); |
494 | 503 | ||
495 | p->setPen(c); | 504 | p->setPen(c); |
496 | p->setBrush(g.button()); | 505 | p->setBrush(g.button()); |
497 | p->drawRect(rSub); | 506 | p->drawRect(rSub); |
498 | 507 | ||
499 | Qt::ArrowType t = | 508 | Qt::ArrowType t = |
500 | sb->orientation() == Horizontal ? Qt::LeftArrow : Qt::UpArrow; | 509 | sb->orientation() == Horizontal ? Qt::LeftArrow : Qt::UpArrow; |
501 | 510 | ||
502 | drawArrow | 511 | drawArrow |
503 | ( | 512 | ( |
504 | p, | 513 | p, |
505 | t, | 514 | t, |
506 | true, // FIXME - down ? | 515 | true, // FIXME - down ? |
507 | rSub.x(), | 516 | rSub.x(), |
508 | rSub.y(), | 517 | rSub.y(), |
509 | rSub.width(), | 518 | rSub.width(), |
510 | rSub.height(), | 519 | rSub.height(), |
511 | g, | 520 | g, |
512 | true // FIXME - enabled ? | 521 | true // FIXME - enabled ? |
513 | ); | 522 | ); |
514 | } | 523 | } |
515 | 524 | ||
516 | if (controls & SubPage && rSubPage.isValid()) | 525 | if (controls & SubPage && rSubPage.isValid()) |
517 | { | 526 | { |
518 | p->setPen(g.mid()); | 527 | p->setPen(g.mid()); |
519 | p->setBrush(g.base()); | 528 | p->setBrush(g.base()); |
520 | p->drawRect(rSubPage); | 529 | p->drawRect(rSubPage); |
521 | } | 530 | } |
522 | 531 | ||
523 | if (controls & AddPage && rAddPage.isValid()) | 532 | if (controls & AddPage && rAddPage.isValid()) |
524 | { | 533 | { |
525 | p->setPen(g.mid()); | 534 | p->setPen(g.mid()); |
526 | p->setBrush(g.base()); | 535 | p->setBrush(g.base()); |
527 | p->drawRect(rAddPage); | 536 | p->drawRect(rAddPage); |
528 | } | 537 | } |
529 | 538 | ||
530 | if (controls & Slider && rSlider.isValid()) | 539 | if (controls & Slider && rSlider.isValid()) |
531 | { | 540 | { |
532 | p->setPen(activeControl & Slider ? g.highlight() : g.dark()); | 541 | p->setPen(activeControl & Slider ? g.highlight() : g.dark()); |
533 | 542 | ||
534 | p->setBrush(g.button()); | 543 | p->setBrush(g.button()); |
535 | p->drawRect(rSlider); | 544 | p->drawRect(rSlider); |
536 | 545 | ||
537 | p->setBrush(g.light()); | 546 | p->setBrush(g.light()); |
538 | p->setPen(g.dark()); | 547 | p->setPen(g.dark()); |
539 | 548 | ||
540 | if (sliderLength > _scrollBarExtent * 2) | 549 | if (sliderLength > _scrollBarExtent * 2) |
541 | { | 550 | { |
542 | int ellipseSize = | 551 | int ellipseSize = |
543 | Horizontal == sb->orientation() | 552 | Horizontal == sb->orientation() |
544 | ? | 553 | ? |
545 | rSlider.height() - 4 | 554 | rSlider.height() - 4 |
546 | : | 555 | : |
547 | rSlider.width() - 4 | 556 | rSlider.width() - 4 |
548 | ; | 557 | ; |
549 | 558 | ||
550 | QPoint center(rSlider.center()); | 559 | QPoint center(rSlider.center()); |
551 | 560 | ||
552 | if (Horizontal == sb->orientation()) | 561 | if (Horizontal == sb->orientation()) |
553 | { | 562 | { |
554 | p->drawEllipse | 563 | p->drawEllipse |
555 | ( | 564 | ( |
556 | center.x() - ellipseSize / 2, rSlider.y() + 2, | 565 | center.x() - ellipseSize / 2, rSlider.y() + 2, |
557 | ellipseSize, ellipseSize | 566 | ellipseSize, ellipseSize |
558 | ); | 567 | ); |
559 | } | 568 | } |
560 | else | 569 | else |
561 | { | 570 | { |
562 | p->drawEllipse | 571 | p->drawEllipse |
563 | ( | 572 | ( |
564 | rSlider.x() + 2, center.y() - ellipseSize / 2, | 573 | rSlider.x() + 2, center.y() - ellipseSize / 2, |
565 | ellipseSize, ellipseSize | 574 | ellipseSize, ellipseSize |
566 | ); | 575 | ); |
567 | } | 576 | } |
568 | } | 577 | } |
569 | } | 578 | } |
570 | 579 | ||
571 | p->restore(); | 580 | p->restore(); |
572 | } | 581 | } |
573 | 582 | ||
574 | QStyle::ScrollControl | 583 | QStyle::ScrollControl |
575 | WebStyle::scrollBarPointOver | 584 | WebStyle::scrollBarPointOver |
576 | ( | 585 | ( |
577 | const QScrollBar * sb, | 586 | const QScrollBar * sb, |
578 | int sliderStart, | 587 | int sliderStart, |
579 | const QPoint & point | 588 | const QPoint & point |
580 | ) | 589 | ) |
581 | { | 590 | { |
582 | if (!sb->rect().contains(point)) | 591 | if (!sb->rect().contains(point)) |
583 | return NoScroll; | 592 | return NoScroll; |
584 | 593 | ||
585 | int sliderMin, sliderMax, sliderLength, buttonDim; | 594 | int sliderMin, sliderMax, sliderLength, buttonDim; |
586 | 595 | ||
587 | scrollBarMetrics(sb, sliderMin, sliderMax, sliderLength, buttonDim); | 596 | scrollBarMetrics(sb, sliderMin, sliderMax, sliderLength, buttonDim); |
588 | 597 | ||
589 | if (sb->orientation() == QScrollBar::Horizontal) | 598 | if (sb->orientation() == QScrollBar::Horizontal) |
590 | { | 599 | { |
591 | int x = point.x(); | 600 | int x = point.x(); |
592 | 601 | ||
593 | if (x <= buttonDim) | 602 | if (x <= buttonDim) |
594 | return SubLine; | 603 | return SubLine; |
595 | 604 | ||
596 | else if (x <= buttonDim * 2) | 605 | else if (x <= buttonDim * 2) |
597 | return AddLine; | 606 | return AddLine; |
598 | 607 | ||
599 | else if (x < sliderStart) | 608 | else if (x < sliderStart) |
600 | return SubPage; | 609 | return SubPage; |
601 | 610 | ||
602 | else if (x < sliderStart+sliderLength) | 611 | else if (x < sliderStart+sliderLength) |
603 | return Slider; | 612 | return Slider; |
604 | 613 | ||
605 | return AddPage; | 614 | return AddPage; |
606 | } | 615 | } |
607 | else | 616 | else |
608 | { | 617 | { |
609 | int y = point.y(); | 618 | int y = point.y(); |
610 | 619 | ||
611 | if (y < sliderStart) | 620 | if (y < sliderStart) |
612 | return SubPage; | 621 | return SubPage; |
613 | 622 | ||
614 | else if (y < sliderStart + sliderLength) | 623 | else if (y < sliderStart + sliderLength) |
615 | return Slider; | 624 | return Slider; |
616 | 625 | ||
617 | else if (y < sliderMax + sliderLength) | 626 | else if (y < sliderMax + sliderLength) |
618 | return AddPage; | 627 | return AddPage; |
619 | 628 | ||
620 | else if (y < sliderMax + sliderLength + buttonDim) | 629 | else if (y < sliderMax + sliderLength + buttonDim) |
621 | return SubLine; | 630 | return SubLine; |
622 | 631 | ||
623 | return AddLine; | 632 | return AddLine; |
624 | } | 633 | } |
625 | } | 634 | } |
626 | 635 | ||
627 | void | 636 | void |
628 | WebStyle::scrollBarMetrics | 637 | WebStyle::scrollBarMetrics |
629 | ( | 638 | ( |
630 | const QScrollBar * sb, | 639 | const QScrollBar * sb, |
631 | int & sliderMin, | 640 | int & sliderMin, |
632 | int & sliderMax, | 641 | int & sliderMax, |
633 | int & sliderLength, | 642 | int & sliderLength, |
634 | int & buttonDim | 643 | int & buttonDim |
635 | ) | 644 | ) |
636 | { | 645 | { |
637 | // return QWindowsStyle::scrollBarMetrics(sb, sliderMin, sliderMax, | 646 | // return QWindowsStyle::scrollBarMetrics(sb, sliderMin, sliderMax, |
638 | // sliderLength, buttonDim ); | 647 | // sliderLength, buttonDim ); |
639 | int maxlen; | 648 | int maxlen; |
640 | 649 | ||
641 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; | 650 | bool horizontal = sb->orientation() == QScrollBar::Horizontal; |
642 | 651 | ||
643 | int len = (horizontal) ? sb->width() : sb->height(); | 652 | int len = (horizontal) ? sb->width() : sb->height(); |
644 | 653 | ||
645 | int extent = (horizontal) ? sb->height() : sb->width(); | 654 | int extent = (horizontal) ? sb->height() : sb->width(); |
646 | 655 | ||
647 | if (len > (extent - 1) * 2) | 656 | if (len > (extent - 1) * 2) |
648 | buttonDim = extent; | 657 | buttonDim = extent; |
649 | else | 658 | else |
650 | buttonDim = len / 2 - 1; | 659 | buttonDim = len / 2 - 1; |
651 | 660 | ||
652 | if (horizontal) | 661 | if (horizontal) |
653 | sliderMin = buttonDim * 2; | 662 | sliderMin = buttonDim * 2; |
654 | else | 663 | else |
655 | sliderMin = 1; | 664 | sliderMin = 1; |
656 | 665 | ||
657 | maxlen = len - buttonDim * 2 - 1; | 666 | maxlen = len - buttonDim * 2 - 1; |
658 | 667 | ||
659 | int div = QMAX(1, (sb->maxValue() - sb->minValue() + sb->pageStep() ) ); | 668 | int div = QMAX(1, (sb->maxValue() - sb->minValue() + sb->pageStep() ) ); |
660 | 669 | ||
661 | sliderLength = | 670 | sliderLength = |
662 | (sb->pageStep() * maxlen) / div; | 671 | (sb->pageStep() * maxlen) / div; |
663 | 672 | ||
664 | if (sliderLength < _scrollBarExtent) | 673 | if (sliderLength < _scrollBarExtent) |
665 | sliderLength = _scrollBarExtent; | 674 | sliderLength = _scrollBarExtent; |
666 | 675 | ||
667 | if (sliderLength > maxlen) | 676 | if (sliderLength > maxlen) |
668 | sliderLength = maxlen; | 677 | sliderLength = maxlen; |
669 | 678 | ||
670 | sliderMax = sliderMin + maxlen - sliderLength; | 679 | sliderMax = sliderMin + maxlen - sliderLength; |
671 | } | 680 | } |
672 | 681 | ||
673 | QSize | 682 | QSize |
674 | WebStyle::indicatorSize() const | 683 | WebStyle::indicatorSize() const |
675 | { | 684 | { |
676 | return QSize(_indicatorSize, _indicatorSize); | 685 | return QSize(_indicatorSize, _indicatorSize); |
677 | } | 686 | } |
678 | 687 | ||
679 | void | 688 | void |
680 | WebStyle::drawIndicator | 689 | WebStyle::drawIndicator |
681 | ( | 690 | ( |
682 | QPainter * p, | 691 | QPainter * p, |
683 | int x, | 692 | int x, |
684 | int y, | 693 | int y, |
685 | int w, | 694 | int w, |
686 | int h, | 695 | int h, |
687 | const QColorGroup & g, | 696 | const QColorGroup & g, |
688 | int state, | 697 | int state, |
689 | bool down, | 698 | bool down, |
690 | bool enabled | 699 | bool enabled |
691 | ) | 700 | ) |
692 | { | 701 | { |
693 | p->save(); | 702 | p->save(); |
694 | 703 | ||
695 | p->fillRect(x, y, w, h, g.background()); | 704 | p->fillRect(x, y, w, h, g.background()); |
696 | 705 | ||
697 | if (enabled) | 706 | if (enabled) |
698 | { | 707 | { |
699 | p->setPen(down ? g.highlight() : contrastingForeground(g.dark(), g.background())); | 708 | p->setPen(down ? g.highlight() : contrastingForeground(g.dark(), g.background())); |
700 | } | 709 | } |
701 | else | 710 | else |
702 | { | 711 | { |
703 | g.mid(); | 712 | g.mid(); |
704 | } | 713 | } |
705 | 714 | ||
706 | p->drawRect(x, y, w, h); | 715 | p->drawRect(x, y, w, h); |
707 | 716 | ||
708 | if (state != QButton::Off) | 717 | if (state != QButton::Off) |
709 | { | 718 | { |
710 | p->fillRect(x + 2, y + 2, w - 4, h - 4, enabled ? g.highlight() : g.mid()); | 719 | p->fillRect(x + 2, y + 2, w - 4, h - 4, enabled ? g.highlight() : g.mid()); |
711 | 720 | ||
712 | if (state == QButton::NoChange) | 721 | if (state == QButton::NoChange) |
713 | { | 722 | { |
714 | p->fillRect(x + 4, y + 4, w - 8, h - 8, g.background()); | 723 | p->fillRect(x + 4, y + 4, w - 8, h - 8, g.background()); |
715 | } | 724 | } |
716 | } | 725 | } |
717 | 726 | ||
718 | p->restore(); | 727 | p->restore(); |
719 | } | 728 | } |
720 | 729 | ||
721 | QSize | 730 | QSize |
722 | WebStyle::exclusiveIndicatorSize() const | 731 | WebStyle::exclusiveIndicatorSize() const |
723 | { | 732 | { |
724 | return QSize(_indicatorSize+2, _indicatorSize+2); | 733 | return QSize(_indicatorSize+2, _indicatorSize+2); |
725 | } | 734 | } |
726 | 735 | ||
727 | void | 736 | void |
728 | WebStyle::drawExclusiveIndicator | 737 | WebStyle::drawExclusiveIndicator |
729 | ( | 738 | ( |
730 | QPainter * p, | 739 | QPainter * p, |
731 | int x, | 740 | int x, |
732 | int y, | 741 | int y, |
733 | int w, | 742 | int w, |
734 | int h, | 743 | int h, |
735 | const QColorGroup & g, | 744 | const QColorGroup & g, |
736 | bool on, | 745 | bool on, |
737 | bool down, | 746 | bool down, |
738 | bool enabled | 747 | bool enabled |
739 | ) | 748 | ) |
740 | { | 749 | { |
741 | p->save(); | 750 | p->save(); |
742 | 751 | ||
743 | p->fillRect(x, y, w, h, g.background()); | 752 | p->fillRect(x, y, w, h, g.background()); |
744 | 753 | ||
745 | if (enabled) | 754 | if (enabled) |
746 | { | 755 | { |
747 | p->setPen(down ? g.highlight() : contrastingForeground(g.dark(), g.background())); | 756 | p->setPen(down ? g.highlight() : contrastingForeground(g.dark(), g.background())); |
748 | } | 757 | } |
749 | else | 758 | else |
750 | { | 759 | { |
751 | p->setPen(g.mid()); | 760 | p->setPen(g.mid()); |
752 | } | 761 | } |
753 | 762 | ||
754 | p->setBrush(g.brush(QColorGroup::Background)); | 763 | p->setBrush(g.brush(QColorGroup::Background)); |
755 | 764 | ||
756 | // Avoid misshapen ellipses. Qt or X bug ? Who knows... | 765 | // Avoid misshapen ellipses. Qt or X bug ? Who knows... |
757 | 766 | ||
758 | if (0 == w % 2) | 767 | if (0 == w % 2) |
759 | --w; | 768 | --w; |
760 | 769 | ||
761 | if (0 == h % 2) | 770 | if (0 == h % 2) |
762 | --h; | 771 | --h; |
763 | 772 | ||
764 | p->drawEllipse(x, y, w, h); | 773 | p->drawEllipse(x, y, w, h); |
765 | 774 | ||
766 | if (on) | 775 | if (on) |
767 | { | 776 | { |
768 | p->setPen(enabled ? g.highlight() : g.mid()); | 777 | p->setPen(enabled ? g.highlight() : g.mid()); |
769 | p->setBrush(enabled ? g.highlight() : g.mid()); | 778 | p->setBrush(enabled ? g.highlight() : g.mid()); |
770 | p->drawEllipse(x + 3, y + 3, w - 6, h - 6); | 779 | p->drawEllipse(x + 3, y + 3, w - 6, h - 6); |
771 | } | 780 | } |
772 | 781 | ||
773 | p->restore(); | 782 | p->restore(); |
774 | } | 783 | } |
775 | 784 | ||
776 | void | 785 | void |
777 | WebStyle::drawIndicatorMask | 786 | WebStyle::drawIndicatorMask |
778 | ( | 787 | ( |
779 | QPainter * p, | 788 | QPainter * p, |
780 | int x, | 789 | int x, |
781 | int y, | 790 | int y, |
782 | int w, | 791 | int w, |
783 | int h, | 792 | int h, |
784 | int /* state */ | 793 | int /* state */ |
785 | ) | 794 | ) |
786 | { | 795 | { |
787 | p->fillRect(x, y, w, h, Qt::color1); | 796 | p->fillRect(x, y, w, h, Qt::color1); |
788 | } | 797 | } |
789 | 798 | ||
790 | void | 799 | void |
791 | WebStyle::drawExclusiveIndicatorMask | 800 | WebStyle::drawExclusiveIndicatorMask |
792 | ( | 801 | ( |
793 | QPainter * p, | 802 | QPainter * p, |
794 | int x, | 803 | int x, |
795 | int y, | 804 | int y, |
796 | int w, | 805 | int w, |
797 | int h, | 806 | int h, |
798 | bool /* on */ | 807 | bool /* on */ |
799 | ) | 808 | ) |
800 | { | 809 | { |
801 | if (0 == w % 2) | 810 | if (0 == w % 2) |
802 | --w; | 811 | --w; |
803 | 812 | ||
804 | if (0 == h % 2) | 813 | if (0 == h % 2) |
805 | --h; | 814 | --h; |
806 | 815 | ||
807 | p->setPen(Qt::color1); | 816 | p->setPen(Qt::color1); |
808 | p->setBrush(Qt::color1); | 817 | p->setBrush(Qt::color1); |
809 | p->drawEllipse(x, y, w, h); | 818 | p->drawEllipse(x, y, w, h); |
810 | } | 819 | } |
811 | 820 | ||
812 | void | 821 | void |
813 | WebStyle::drawComboButton | 822 | WebStyle::drawComboButton |
814 | ( | 823 | ( |
815 | QPainter * p, | 824 | QPainter * p, |
816 | int x, | 825 | int x, |
817 | int y, | 826 | int y, |
818 | int w, | 827 | int w, |
819 | int h, | 828 | int h, |
820 | const QColorGroup & g, | 829 | const QColorGroup & g, |
821 | bool sunken, | 830 | bool sunken, |
822 | bool editable, | 831 | bool editable, |
823 | bool enabled, | 832 | bool enabled, |
824 | const QBrush * fill | 833 | const QBrush * fill |
825 | ) | 834 | ) |
826 | { | 835 | { |
827 | p->save(); | 836 | p->save(); |
828 | 837 | ||
829 | p->setPen(NoPen); | 838 | p->setPen(NoPen); |
830 | p->setBrush(0 == fill ? g.brush(QColorGroup::Background) : *fill); | 839 | p->setBrush(0 == fill ? g.brush(QColorGroup::Background) : *fill); |
831 | p->drawRect(x, y, w, h); | 840 | p->drawRect(x, y, w, h); |
832 | 841 | ||
833 | if (enabled) | 842 | if (enabled) |
834 | { | 843 | { |
835 | if (sunken) | 844 | if (sunken) |
836 | p->setPen(contrastingForeground(g.highlight(), g.background())); | 845 | p->setPen(contrastingForeground(g.highlight(), g.background())); |
837 | else | 846 | else |
838 | p->setPen(contrastingForeground(g.mid(), g.background())); | 847 | p->setPen(contrastingForeground(g.mid(), g.background())); |
839 | } | 848 | } |
840 | else | 849 | else |
841 | { | 850 | { |
842 | p->setPen(contrastingForeground(g.mid(), g.background())); | 851 | p->setPen(contrastingForeground(g.mid(), g.background())); |
843 | } | 852 | } |
844 | 853 | ||
845 | drawFunkyRect(p, x, y, w, h, true); | 854 | drawFunkyRect(p, x, y, w, h, true); |
846 | 855 | ||
847 | p->drawPoint(w - 10, h - 6); | 856 | p->drawPoint(w - 10, h - 6); |
848 | p->drawPoint(w - 9, h - 6); | 857 | p->drawPoint(w - 9, h - 6); |
849 | p->drawPoint(w - 8, h - 6); | 858 | p->drawPoint(w - 8, h - 6); |
850 | p->drawPoint(w - 7, h - 6); | 859 | p->drawPoint(w - 7, h - 6); |
851 | p->drawPoint(w - 6, h - 6); | 860 | p->drawPoint(w - 6, h - 6); |
852 | 861 | ||
853 | p->drawPoint(w - 9, h - 7); | 862 | p->drawPoint(w - 9, h - 7); |
854 | p->drawPoint(w - 8, h - 7); | 863 | p->drawPoint(w - 8, h - 7); |
855 | p->drawPoint(w - 7, h - 7); | 864 | p->drawPoint(w - 7, h - 7); |
856 | p->drawPoint(w - 6, h - 7); | 865 | p->drawPoint(w - 6, h - 7); |
857 | 866 | ||
858 | p->drawPoint(w - 8, h - 8); | 867 | p->drawPoint(w - 8, h - 8); |
859 | p->drawPoint(w - 7, h - 8); | 868 | p->drawPoint(w - 7, h - 8); |
860 | p->drawPoint(w - 6, h - 8); | 869 | p->drawPoint(w - 6, h - 8); |
861 | 870 | ||
862 | p->drawPoint(w - 7, h - 9); | 871 | p->drawPoint(w - 7, h - 9); |
863 | p->drawPoint(w - 6, h - 9); | 872 | p->drawPoint(w - 6, h - 9); |
864 | 873 | ||
865 | p->drawPoint(w - 6, h - 10); | 874 | p->drawPoint(w - 6, h - 10); |
866 | 875 | ||
867 | if (editable) | 876 | if (editable) |
868 | p->fillRect(comboButtonFocusRect(x, y, w, h), Qt::red); | 877 | p->fillRect(comboButtonFocusRect(x, y, w, h), Qt::red); |
869 | 878 | ||
870 | p->restore(); | 879 | p->restore(); |
871 | } | 880 | } |
872 | 881 | ||
873 | QRect | 882 | QRect |
874 | WebStyle::comboButtonRect(int x, int y, int w, int h) | 883 | WebStyle::comboButtonRect(int x, int y, int w, int h) |
875 | { | 884 | { |
876 | return QRect(x + 2, y + 2, w - 20, h - 4); | 885 | return QRect(x + 2, y + 2, w - 20, h - 4); |
877 | } | 886 | } |
878 | 887 | ||
879 | QRect | 888 | QRect |
880 | WebStyle::comboButtonFocusRect(int x, int y, int w, int h) | 889 | WebStyle::comboButtonFocusRect(int x, int y, int w, int h) |
881 | { | 890 | { |
882 | return QRect(x + 2, y + 2, w - 20, h - 4); | 891 | return QRect(x + 2, y + 2, w - 20, h - 4); |
883 | } | 892 | } |
884 | 893 | ||
885 | int | 894 | int |
886 | WebStyle::sliderLength() const | 895 | WebStyle::sliderLength() const |
887 | { | 896 | { |
888 | return 13; | 897 | return 13; |
889 | } | 898 | } |
890 | 899 | ||
891 | void | 900 | void |
892 | WebStyle::drawSliderGroove | 901 | WebStyle::drawSliderGroove |
893 | ( | 902 | ( |
894 | QPainter * p, | 903 | QPainter * p, |
895 | int x, | 904 | int x, |
896 | int y, | 905 | int y, |
897 | int w, | 906 | int w, |
898 | int h, | 907 | int h, |
899 | const QColorGroup & g, | 908 | const QColorGroup & g, |
900 | QCOORD /* c */, | 909 | QCOORD /* c */, |
901 | Orientation o | 910 | Orientation o |
902 | ) | 911 | ) |
903 | { | 912 | { |
904 | p->save(); | 913 | p->save(); |
905 | 914 | ||
906 | p->setPen(QPen(g.dark(), 0, Qt::DotLine)); | 915 | p->setPen(QPen(g.dark(), 0, Qt::DotLine)); |
907 | 916 | ||
908 | if( o == Qt::Horizontal ) | 917 | if( o == Qt::Horizontal ) |
909 | p->drawLine(x, y + h / 2, w, y + h / 2); | 918 | p->drawLine(x, y + h / 2, w, y + h / 2); |
910 | else | 919 | else |
911 | if( o == Qt::Vertical ) | 920 | if( o == Qt::Vertical ) |
912 | p->drawLine(x + w / 2, y, x + w / 2, h); | 921 | p->drawLine(x + w / 2, y, x + w / 2, h); |
913 | 922 | ||
914 | p->restore(); | 923 | p->restore(); |
915 | } | 924 | } |
916 | 925 | ||
917 | void | 926 | void |
918 | WebStyle::drawArrow | 927 | WebStyle::drawArrow |
919 | ( | 928 | ( |
920 | QPainter * p, | 929 | QPainter * p, |
921 | Qt::ArrowType type, | 930 | Qt::ArrowType type, |
922 | bool down, | 931 | bool down, |
923 | int x, | 932 | int x, |
924 | int y, | 933 | int y, |
925 | int w, | 934 | int w, |
926 | int h, | 935 | int h, |
927 | const QColorGroup & g, | 936 | const QColorGroup & g, |
928 | bool enabled, | 937 | bool enabled, |
929 | const QBrush * fill | 938 | const QBrush * fill |
930 | ) | 939 | ) |
931 | { | 940 | { |
932 | QWindowsStyle::drawArrow(p, type, down, x, y, w, h, g, enabled, fill); | 941 | QWindowsStyle::drawArrow(p, type, down, x, y, w, h, g, enabled, fill); |
933 | } | 942 | } |
934 | 943 | ||
935 | void | 944 | void |
936 | WebStyle::drawSlider | 945 | WebStyle::drawSlider |
937 | ( | 946 | ( |
938 | QPainter * p, | 947 | QPainter * p, |
939 | int x, | 948 | int x, |
940 | int y, | 949 | int y, |
941 | int w, | 950 | int w, |
942 | int h, | 951 | int h, |
943 | const QColorGroup & g, | 952 | const QColorGroup & g, |
944 | Orientation o, | 953 | Orientation o, |
945 | bool /* tickAbove */, | 954 | bool /* tickAbove */, |
946 | bool /* tickBelow */ | 955 | bool /* tickBelow */ |
947 | ) | 956 | ) |
948 | { | 957 | { |
949 | p->save(); | 958 | p->save(); |
950 | 959 | ||
951 | p->fillRect(x + 1, y + 1, w - 2, h - 2, g.background()); | 960 | p->fillRect(x + 1, y + 1, w - 2, h - 2, g.background()); |
952 | p->setPen(g.dark()); | 961 | p->setPen(g.dark()); |
953 | p->setBrush(g.light()); | 962 | p->setBrush(g.light()); |
954 | 963 | ||
955 | int sl = sliderLength(); | 964 | int sl = sliderLength(); |
956 | 965 | ||
957 | if( o == Qt::Horizontal ) | 966 | if( o == Qt::Horizontal ) |
958 | p->drawEllipse(x, y + h / 2 - sl / 2, sl, sl); | 967 | p->drawEllipse(x, y + h / 2 - sl / 2, sl, sl); |
959 | else | 968 | else |
960 | if( o == Qt::Vertical ) | 969 | if( o == Qt::Vertical ) |
961 | p->drawEllipse(x + w / 2 - sl / 2, y, sl, sl); | 970 | p->drawEllipse(x + w / 2 - sl / 2, y, sl, sl); |
962 | 971 | ||
963 | p->restore(); | 972 | p->restore(); |
964 | } | 973 | } |
965 | 974 | ||
966 | void | 975 | void |
967 | WebStyle::drawPopupMenuItem | 976 | WebStyle::drawPopupMenuItem |
968 | ( | 977 | ( |
969 | QPainter * p, | 978 | QPainter * p, |
970 | bool checkable, | 979 | bool checkable, |
971 | int maxpmw, | 980 | int maxpmw, |
972 | int tab, | 981 | int tabwidth, |
973 | QMenuItem * mi, | 982 | QMenuItem * mi, |
974 | const QPalette & pal, | 983 | const QPalette & pal, |
975 | bool act, | 984 | bool act, |
976 | bool enabled, | 985 | bool enabled, |
977 | int x, | 986 | int x, |
978 | int y, | 987 | int y, |
979 | int w, | 988 | int w, |
980 | int h | 989 | int h |
981 | ) | 990 | ) |
982 | { | 991 | { |
983 | // TODO | 992 | // TODO |
984 | QWindowsStyle::drawPopupMenuItem(p, checkable, maxpmw, tab, mi, pal, act, enabled, x, y, w, h); | 993 | //QWindowsStyle::drawPopupMenuItem(p, checkable, maxpmw, tab, mi, pal, act, enabled, x, y, w, h); |
994 | if ( !mi ) | ||
995 | return; | ||
996 | |||
997 | QRect rect(x, y, w, h ); | ||
998 | int x2, y2; | ||
999 | x2 = rect.right(); | ||
1000 | y2 = rect.bottom(); | ||
1001 | const QColorGroup& g = pal.active(); | ||
1002 | QColorGroup itemg = !enabled ? pal.disabled() : pal.active(); | ||
1003 | |||
1004 | if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20); | ||
1005 | |||
1006 | if (act && enabled ) | ||
1007 | p->fillRect(x, y, w, h, g.highlight() ); | ||
1008 | else | ||
1009 | p->fillRect(x, y, w, h, g.background() ); | ||
1010 | |||
1011 | // draw seperator | ||
1012 | if (mi->isSeparator() ) { | ||
1013 | p->setPen( g.dark() ); | ||
1014 | p->drawLine( x+8, y+1, x+w-8, y+1 ); | ||
1015 | |||
1016 | p->setPen( g.mid() ); | ||
1017 | p->drawLine( x+8, y, x+w-8, y ); | ||
1018 | p->drawPoint(x+w,y+1); | ||
1019 | |||
1020 | p->setPen( g.midlight() ); | ||
1021 | p->drawLine( x+8, y-1, x+w-8, y-1 ); | ||
1022 | p->drawPoint(x+8, y ); | ||
1023 | return; | ||
1024 | } | ||
1025 | |||
1026 | // draw icon | ||
1027 | QIconSet::Mode mode; | ||
1028 | if ( mi->iconSet() && !mi->isChecked() ) { | ||
1029 | if ( act ) | ||
1030 | mode = enabled ? QIconSet::Active : QIconSet::Disabled; | ||
1031 | else | ||
1032 | mode = enabled ? QIconSet::Normal : QIconSet::Disabled; | ||
1033 | QPixmap pixmap; | ||
1034 | if ( mode == QIconSet::Disabled ) | ||
1035 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
1036 | else | ||
1037 | pixmap = mi->iconSet()->pixmap(); | ||
1038 | QRect pmrect(0, 0, pixmap.width(), pixmap.height() ); | ||
1039 | QRect cr(x, y, maxpmw, h ); | ||
1040 | pmrect.moveCenter( cr.center() ); | ||
1041 | p->drawPixmap(pmrect.topLeft(), pixmap); | ||
1042 | } | ||
1043 | |||
1044 | // draw check | ||
1045 | if(mi->isChecked() ) { | ||
1046 | drawCheckMark(p, x, y, maxpmw, h, itemg, act, !enabled ); | ||
1047 | } | ||
1048 | |||
1049 | |||
1050 | // draw text | ||
1051 | int xm = maxpmw + 2; | ||
1052 | int xp = x + xm; | ||
1053 | int tw = w -xm - 2; | ||
1054 | |||
1055 | p->setPen( enabled ? ( act ? g.highlightedText() : g.buttonText() ) : | ||
1056 | g.mid() ); | ||
1057 | |||
1058 | |||
1059 | if ( mi->custom() ) { | ||
1060 | p->save(); | ||
1061 | mi->custom()->paint(p, g, act, enabled, | ||
1062 | xp, y+1, tw, h-2 ); | ||
1063 | p->restore(); | ||
1064 | }else { // draw label | ||
1065 | QString text = mi->text(); | ||
1066 | if (!text.isNull() ) { | ||
1067 | int t = text.find('\t'); | ||
1068 | const int tflags = AlignVCenter | DontClip | | ||
1069 | ShowPrefix | SingleLine | | ||
1070 | AlignLeft; | ||
1071 | |||
1072 | if (t >= 0) { | ||
1073 | int tabx = x + w - tabwidth - RIGHTBORDER - | ||
1074 | ITEMHMARGIN - ITEMFRAME; | ||
1075 | p->drawText(tabx, y+ITEMVMARGIN, tabwidth, | ||
1076 | h-2*ITEMVMARGIN, tflags, | ||
1077 | text.mid(t+1) ); | ||
1078 | text = text.left(t ); | ||
1079 | } | ||
1080 | |||
1081 | // draw left label | ||
1082 | p->drawText(xp, y+ITEMVMARGIN, | ||
1083 | tw, h-2*ITEMVMARGIN, | ||
1084 | tflags, text, t); | ||
1085 | }else if ( mi->pixmap() ) { // pixmap as label | ||
1086 | QPixmap pixmap = *mi->pixmap(); | ||
1087 | if ( pixmap.depth() == 1 ) | ||
1088 | p->setBackgroundMode( OpaqueMode ); | ||
1089 | |||
1090 | int dx = ((w-pixmap.width() ) /2 ) + | ||
1091 | ((w - pixmap.width()) %2 ); | ||
1092 | p->drawPixmap(x+dx, y+ITEMFRAME, pixmap ); | ||
1093 | |||
1094 | if ( pixmap.depth() == 1 ) | ||
1095 | p->setBackgroundMode( TransparentMode ); | ||
1096 | } | ||
1097 | } | ||
1098 | |||
1099 | if ( mi->popup() ) { // draw submenu arrow | ||
1100 | int dim = (h-2*ITEMFRAME) / 2; | ||
1101 | drawArrow( p, RightArrow, false, | ||
1102 | x+w-ARROWMARGIN-ITEMFRAME-dim, | ||
1103 | y+h/2-dim/2, dim, dim, g, enabled ); | ||
1104 | } | ||
985 | } | 1105 | } |
986 | 1106 | ||
987 | void | 1107 | void |
988 | WebStyle::drawFocusRect | 1108 | WebStyle::drawFocusRect |
989 | ( | 1109 | ( |
990 | QPainter * p, | 1110 | QPainter * p, |
991 | const QRect & r, | 1111 | const QRect & r, |
992 | const QColorGroup & g, | 1112 | const QColorGroup & g, |
993 | const QColor * pen, | 1113 | const QColor * pen, |
994 | bool atBorder | 1114 | bool atBorder |
995 | ) | 1115 | ) |
996 | { | 1116 | { |
997 | p->save(); | 1117 | p->save(); |
998 | 1118 | ||
999 | if (0 != pen) | 1119 | if (0 != pen) |
1000 | p->setPen(0 == pen ? g.foreground() : *pen); | 1120 | p->setPen(0 == pen ? g.foreground() : *pen); |
1001 | p->setBrush(NoBrush); | 1121 | p->setBrush(NoBrush); |
1002 | 1122 | ||
1003 | if (atBorder) | 1123 | if (atBorder) |
1004 | { | 1124 | { |
1005 | p->drawRect(QRect(r.x() + 1, r.y() + 1, r.width() - 2, r.height() - 2)); | 1125 | p->drawRect(QRect(r.x() + 1, r.y() + 1, r.width() - 2, r.height() - 2)); |
1006 | } | 1126 | } |
1007 | else | 1127 | else |
1008 | { | 1128 | { |
1009 | p->drawRect(r); | 1129 | p->drawRect(r); |
1010 | } | 1130 | } |
1011 | 1131 | ||
1012 | p->restore(); | 1132 | p->restore(); |
1013 | } | 1133 | } |
1014 | 1134 | ||
1015 | void | 1135 | void |
1016 | WebStyle::drawPanel | 1136 | WebStyle::drawPanel |
1017 | ( | 1137 | ( |
1018 | QPainter * p, | 1138 | QPainter * p, |
1019 | int x, | 1139 | int x, |
1020 | int y, | 1140 | int y, |
1021 | int w, | 1141 | int w, |
1022 | int h, | 1142 | int h, |
1023 | const QColorGroup & g, | 1143 | const QColorGroup & g, |
1024 | bool /* sunken */, | 1144 | bool /* sunken */, |
1025 | int /* lineWidth */, | 1145 | int /* lineWidth */, |
1026 | const QBrush * fill | 1146 | const QBrush * fill |
1027 | ) | 1147 | ) |
1028 | { | 1148 | { |
1029 | p->save(); | 1149 | p->save(); |
1030 | 1150 | ||
1031 | p->setPen(g.dark()); | 1151 | p->setPen(g.dark()); |
1032 | 1152 | ||
1033 | p->setBrush(0 == fill ? NoBrush : *fill); | 1153 | p->setBrush(0 == fill ? NoBrush : *fill); |
1034 | 1154 | ||
1035 | p->drawRect(x, y, w, h); | 1155 | p->drawRect(x, y, w, h); |
1036 | 1156 | ||
1037 | p->restore(); | 1157 | p->restore(); |
1038 | } | 1158 | } |
1039 | 1159 | ||
1040 | void | 1160 | void |
1041 | WebStyle::drawPopupPanel | 1161 | WebStyle::drawPopupPanel |
1042 | ( | 1162 | ( |
1043 | QPainter * p, | 1163 | QPainter * p, |
1044 | int x, | 1164 | int x, |
1045 | int y, | 1165 | int y, |
1046 | int w, | 1166 | int w, |
1047 | int h, | 1167 | int h, |
1048 | const QColorGroup & g, | 1168 | const QColorGroup & g, |
1049 | int /* lineWidth */, | 1169 | int /* lineWidth */, |
1050 | const QBrush * fill | 1170 | const QBrush * fill |
1051 | ) | 1171 | ) |
1052 | { | 1172 | { |
1053 | p->save(); | 1173 | p->save(); |
1054 | 1174 | ||
1055 | p->setPen(g.dark()); | 1175 | p->setPen(g.dark()); |
1056 | 1176 | ||
1057 | p->setBrush(0 == fill ? NoBrush : *fill); | 1177 | p->setBrush(0 == fill ? NoBrush : *fill); |
1058 | 1178 | ||
1059 | p->drawRect(x, y, w, h); | 1179 | p->drawRect(x, y, w, h); |
1060 | 1180 | ||
1061 | p->restore(); | 1181 | p->restore(); |
1062 | } | 1182 | } |
1063 | 1183 | ||
1064 | void | 1184 | void |
1065 | WebStyle::drawSeparator | 1185 | WebStyle::drawSeparator |
1066 | ( | 1186 | ( |
1067 | QPainter * p, | 1187 | QPainter * p, |
1068 | int x, | 1188 | int x, |
1069 | int y, | 1189 | int y, |
1070 | int w, | 1190 | int w, |
1071 | int h, | 1191 | int h, |
1072 | const QColorGroup & g, | 1192 | const QColorGroup & g, |
1073 | bool /* sunken */, | 1193 | bool /* sunken */, |
1074 | int /* lineWidth */, | 1194 | int /* lineWidth */, |
1075 | int /* midLineWidth */ | 1195 | int /* midLineWidth */ |
1076 | ) | 1196 | ) |
1077 | { | 1197 | { |
1078 | p->save(); | 1198 | p->save(); |
1079 | 1199 | ||
1080 | p->setPen(g.dark()); | 1200 | p->setPen(g.dark()); |
1081 | 1201 | ||
1082 | if (w > h) | 1202 | if (w > h) |
1083 | { | 1203 | { |
1084 | p->drawLine(x, y + h / 2, x + w, y + h / 2); | 1204 | p->drawLine(x, y + h / 2, x + w, y + h / 2); |
1085 | } | 1205 | } |
1086 | else | 1206 | else |
1087 | { | 1207 | { |
1088 | p->drawLine(x + w / 2, y, x + w / 2, y + h); | 1208 | p->drawLine(x + w / 2, y, x + w / 2, y + h); |
1089 | } | 1209 | } |
1090 | 1210 | ||
1091 | p->restore(); | 1211 | p->restore(); |
1092 | } | 1212 | } |
1093 | 1213 | ||
1094 | void | 1214 | void |
1095 | WebStyle::drawTab | 1215 | WebStyle::drawTab |
1096 | ( | 1216 | ( |
1097 | QPainter * p, | 1217 | QPainter * p, |
1098 | const QTabBar * tabBar, | 1218 | const QTabBar * tabBar, |
1099 | QTab * tab, | 1219 | QTab * tab, |
1100 | bool selected | 1220 | bool selected |
1101 | ) | 1221 | ) |
1102 | { | 1222 | { |
1103 | QRect r(tab->rect()); | 1223 | QRect r(tab->rect()); |
1104 | 1224 | ||
1105 | QColorGroup g(tabBar->colorGroup()); | 1225 | QColorGroup g(tabBar->colorGroup()); |
1106 | 1226 | ||
1107 | p->save(); | 1227 | p->save(); |
1108 | 1228 | ||
1109 | p->setPen(selected ? g.dark() : g.mid()); | 1229 | p->setPen(selected ? g.dark() : g.mid()); |
1110 | p->fillRect(r, g.brush(QColorGroup::Background)); | 1230 | p->fillRect(r, g.brush(QColorGroup::Background)); |
1111 | 1231 | ||
1112 | switch (tabBar->shape()) | 1232 | switch (tabBar->shape()) |
1113 | { | 1233 | { |
1114 | case QTabBar::RoundedAbove: | 1234 | case QTabBar::RoundedAbove: |
1115 | case QTabBar::TriangularAbove: | 1235 | case QTabBar::TriangularAbove: |
1116 | p->drawLine(r.left(), r.top(), r.left(), r.bottom()); | 1236 | p->drawLine(r.left(), r.top(), r.left(), r.bottom()); |
1117 | p->drawLine(r.left(), r.top(), r.right(), r.top()); | 1237 | p->drawLine(r.left(), r.top(), r.right(), r.top()); |
1118 | p->drawLine(r.right(), r.top(), r.right(), r.bottom()); | 1238 | p->drawLine(r.right(), r.top(), r.right(), r.bottom()); |
1119 | if (!selected) | 1239 | if (!selected) |
1120 | { | 1240 | { |
1121 | p->setPen(g.dark()); | 1241 | p->setPen(g.dark()); |
1122 | p->drawLine(r.left(), r.bottom(), r.right(), r.bottom()); | 1242 | p->drawLine(r.left(), r.bottom(), r.right(), r.bottom()); |
1123 | } | 1243 | } |
1124 | break; | 1244 | break; |
1125 | case QTabBar::RoundedBelow: | 1245 | case QTabBar::RoundedBelow: |
1126 | case QTabBar::TriangularBelow: | 1246 | case QTabBar::TriangularBelow: |
1127 | if (!selected) | 1247 | if (!selected) |
1128 | { | 1248 | { |
1129 | p->setPen(g.dark()); | 1249 | p->setPen(g.dark()); |
1130 | p->drawLine(r.left(), r.top(), r.right(), r.top()); | 1250 | p->drawLine(r.left(), r.top(), r.right(), r.top()); |
1131 | } | 1251 | } |
1132 | p->drawLine(r.left(), r.top(), r.left(), r.bottom()); | 1252 | p->drawLine(r.left(), r.top(), r.left(), r.bottom()); |
1133 | p->drawLine(r.left(), r.bottom(), r.right(), r.bottom()); | 1253 | p->drawLine(r.left(), r.bottom(), r.right(), r.bottom()); |
1134 | p->drawLine(r.right(), r.top(), r.right(), r.bottom()); | 1254 | p->drawLine(r.right(), r.top(), r.right(), r.bottom()); |
1135 | break; | 1255 | break; |
1136 | } | 1256 | } |
1137 | 1257 | ||
1138 | p->restore(); | 1258 | p->restore(); |
1139 | } | 1259 | } |
1140 | 1260 | ||
1141 | void | 1261 | void |
1142 | WebStyle::drawTabMask | 1262 | WebStyle::drawTabMask |
1143 | ( | 1263 | ( |
1144 | QPainter * p, | 1264 | QPainter * p, |
1145 | const QTabBar *, | 1265 | const QTabBar *, |
1146 | QTab * tab, | 1266 | QTab * tab, |
1147 | bool | 1267 | bool |
1148 | ) | 1268 | ) |
1149 | { | 1269 | { |
1150 | p->fillRect(tab->rect(), Qt::color1); | 1270 | p->fillRect(tab->rect(), Qt::color1); |
1151 | } | 1271 | } |
1152 | 1272 | ||
1153 | 1273 | ||
1154 | int | 1274 | int |
1155 | WebStyle::popupMenuItemHeight(bool, QMenuItem * i, const QFontMetrics & fm) | 1275 | WebStyle::popupMenuItemHeight(bool, QMenuItem * i, const QFontMetrics & fm) |
1156 | { | 1276 | { |
1157 | if (i->isSeparator()) | 1277 | if (i->isSeparator()) |
1158 | return 1; | 1278 | return 1; |
1159 | 1279 | ||
1160 | int h = 0; | 1280 | int h = 0; |
1161 | 1281 | ||
1162 | if (0 != i->pixmap()) | 1282 | if (0 != i->pixmap()) |
1163 | { | 1283 | { |
1164 | h = i->pixmap()->height(); | 1284 | h = i->pixmap()->height(); |
1165 | } | 1285 | } |
1166 | 1286 | ||
1167 | if (0 != i->iconSet()) | 1287 | if (0 != i->iconSet()) |
1168 | { | 1288 | { |
1169 | h = QMAX | 1289 | h = QMAX |
1170 | ( | 1290 | ( |
1171 | i->iconSet()->pixmap(QIconSet::Small, QIconSet::Normal).height(), | 1291 | i->iconSet()->pixmap().height(), |
1172 | h | 1292 | h |
1173 | ); | 1293 | ); |
1174 | } | 1294 | } |
1175 | 1295 | ||
1176 | h = QMAX(fm.height() + 4, h); | 1296 | h = QMAX(fm.height() + 4, h); |
1177 | 1297 | ||
1178 | h = QMAX(18, h); | 1298 | h = QMAX(18, h); |
1179 | 1299 | ||
1180 | return h; | 1300 | return h; |
1181 | 1301 | ||
1182 | } | 1302 | } |
1183 | 1303 | ||
diff --git a/noncore/styles/web/webstyle.h b/noncore/styles/web/webstyle.h index 83ab784..d6f153b 100644 --- a/noncore/styles/web/webstyle.h +++ b/noncore/styles/web/webstyle.h | |||
@@ -1,299 +1,299 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> | 2 | * Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> |
3 | * | 3 | * |
4 | * This library is free software; you can redistribute it and/or | 4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Library General Public | 5 | * modify it under the terms of the GNU Library General Public |
6 | * License as published by the Free Software Foundation; either | 6 | * License as published by the Free Software Foundation; either |
7 | * version 2 of the License, or (at your option) any later version. | 7 | * version 2 of the License, or (at your option) any later version. |
8 | * | 8 | * |
9 | * This library is distributed in the hope that it will be useful, | 9 | * This library is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | * Library General Public License for more details. | 12 | * Library General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU Library General Public License | 14 | * You should have received a copy of the GNU Library General Public License |
15 | * along with this library; see the file COPYING.LIB. If not, write to | 15 | * along with this library; see the file COPYING.LIB. If not, write to |
16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | * Boston, MA 02111-1307, USA. | 17 | * Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #ifndef WEB_STYLE_H | 20 | #ifndef WEB_STYLE_H |
21 | #define WEB_STYLE_H | 21 | #define WEB_STYLE_H |
22 | 22 | ||
23 | #include <qstyle.h> | 23 | #include <qstyle.h> |
24 | #include <qwindowsstyle.h> | 24 | #include <qwindowsstyle.h> |
25 | #include <qpalette.h> | 25 | #include <qpalette.h> |
26 | 26 | ||
27 | class QPainter; | 27 | class QPainter; |
28 | class QScrollBar; | 28 | class QScrollBar; |
29 | class QPushButton; | 29 | class QPushButton; |
30 | class QWidget; | 30 | class QWidget; |
31 | 31 | ||
32 | class WebStyle : public QWindowsStyle { | 32 | class WebStyle : public QWindowsStyle { |
33 | public: | 33 | public: |
34 | 34 | ||
35 | WebStyle(); | 35 | WebStyle(); |
36 | 36 | ||
37 | ~WebStyle(); | 37 | ~WebStyle(); |
38 | 38 | ||
39 | void polish(QApplication *); | 39 | void polish(QApplication *); |
40 | 40 | ||
41 | void unPolish(QWidget *); | 41 | void unPolish(QWidget *); |
42 | 42 | ||
43 | void polish(QWidget *); | 43 | void polish(QWidget *); |
44 | 44 | ||
45 | void polish(QPalette &); | 45 | void polish(QPalette &); |
46 | 46 | ||
47 | void unPolish(QApplication *); | 47 | void unPolish(QApplication *); |
48 | 48 | ||
49 | void drawButton | 49 | void drawButton |
50 | ( | 50 | ( |
51 | QPainter * p, | 51 | QPainter * p, |
52 | int x, | 52 | int x, |
53 | int y, | 53 | int y, |
54 | int w, | 54 | int w, |
55 | int h, | 55 | int h, |
56 | const QColorGroup & g, | 56 | const QColorGroup & g, |
57 | bool sunken = false, | 57 | bool sunken = false, |
58 | const QBrush * fill = 0 | 58 | const QBrush * fill = 0 |
59 | ); | 59 | ); |
60 | 60 | ||
61 | QRect buttonRect(int x, int y, int w, int h); | 61 | QRect buttonRect(int x, int y, int w, int h); |
62 | 62 | ||
63 | void drawBevelButton | 63 | void drawBevelButton |
64 | ( | 64 | ( |
65 | QPainter *, | 65 | QPainter *, |
66 | int x, | 66 | int x, |
67 | int y, | 67 | int y, |
68 | int w, | 68 | int w, |
69 | int h, | 69 | int h, |
70 | const QColorGroup &, | 70 | const QColorGroup &, |
71 | bool sunken = false, | 71 | bool sunken = false, |
72 | const QBrush * fill = 0 | 72 | const QBrush * fill = 0 |
73 | ); | 73 | ); |
74 | 74 | ||
75 | void drawPushButton(QPushButton *, QPainter *); | 75 | void drawPushButton(QPushButton *, QPainter *); |
76 | 76 | ||
77 | virtual void drawPushButtonLabel(QPushButton *, QPainter *); | 77 | virtual void drawPushButtonLabel(QPushButton *, QPainter *); |
78 | 78 | ||
79 | void drawScrollBarControls | 79 | void drawScrollBarControls |
80 | ( | 80 | ( |
81 | QPainter *, | 81 | QPainter *, |
82 | const QScrollBar *, | 82 | const QScrollBar *, |
83 | int sliderStart, | 83 | int sliderStart, |
84 | uint controls, | 84 | uint controls, |
85 | uint activeControl | 85 | uint activeControl |
86 | ); | 86 | ); |
87 | 87 | ||
88 | QStyle::ScrollControl scrollBarPointOver | 88 | QStyle::ScrollControl scrollBarPointOver |
89 | ( | 89 | ( |
90 | const QScrollBar *, | 90 | const QScrollBar *, |
91 | int sliderStart, | 91 | int sliderStart, |
92 | const QPoint & | 92 | const QPoint & |
93 | ); | 93 | ); |
94 | 94 | ||
95 | void scrollBarMetrics | 95 | void scrollBarMetrics |
96 | ( | 96 | ( |
97 | const QScrollBar *, | 97 | const QScrollBar *, |
98 | int & sliderMin, | 98 | int & sliderMin, |
99 | int & sliderMax, | 99 | int & sliderMax, |
100 | int & sliderLength, | 100 | int & sliderLength, |
101 | int & buttonDim | 101 | int & buttonDim |
102 | ); | 102 | ); |
103 | 103 | ||
104 | QSize indicatorSize() const; | 104 | QSize indicatorSize() const; |
105 | 105 | ||
106 | void drawIndicator | 106 | void drawIndicator |
107 | ( | 107 | ( |
108 | QPainter *, | 108 | QPainter *, |
109 | int x, | 109 | int x, |
110 | int y, | 110 | int y, |
111 | int w, | 111 | int w, |
112 | int h, | 112 | int h, |
113 | const QColorGroup &, | 113 | const QColorGroup &, |
114 | int state, | 114 | int state, |
115 | bool down = false, | 115 | bool down = false, |
116 | bool enabled = true | 116 | bool enabled = true |
117 | ); | 117 | ); |
118 | 118 | ||
119 | QSize exclusiveIndicatorSize() const; | 119 | QSize exclusiveIndicatorSize() const; |
120 | 120 | ||
121 | void drawExclusiveIndicator | 121 | void drawExclusiveIndicator |
122 | ( | 122 | ( |
123 | QPainter *, | 123 | QPainter *, |
124 | int x, | 124 | int x, |
125 | int y, | 125 | int y, |
126 | int w, | 126 | int w, |
127 | int h, | 127 | int h, |
128 | const QColorGroup &, | 128 | const QColorGroup &, |
129 | bool on, | 129 | bool on, |
130 | bool down = false, | 130 | bool down = false, |
131 | bool enabled = true | 131 | bool enabled = true |
132 | ); | 132 | ); |
133 | 133 | ||
134 | void drawIndicatorMask | 134 | void drawIndicatorMask |
135 | ( | 135 | ( |
136 | QPainter *, | 136 | QPainter *, |
137 | int x, | 137 | int x, |
138 | int y, | 138 | int y, |
139 | int w, | 139 | int w, |
140 | int h, | 140 | int h, |
141 | int state | 141 | int state |
142 | ); | 142 | ); |
143 | 143 | ||
144 | void drawExclusiveIndicatorMask | 144 | void drawExclusiveIndicatorMask |
145 | ( | 145 | ( |
146 | QPainter *, | 146 | QPainter *, |
147 | int x, | 147 | int x, |
148 | int y, | 148 | int y, |
149 | int w, | 149 | int w, |
150 | int h, | 150 | int h, |
151 | bool on | 151 | bool on |
152 | ); | 152 | ); |
153 | 153 | ||
154 | void drawComboButton | 154 | void drawComboButton |
155 | ( | 155 | ( |
156 | QPainter *, | 156 | QPainter *, |
157 | int x, | 157 | int x, |
158 | int y, | 158 | int y, |
159 | int w, | 159 | int w, |
160 | int h, | 160 | int h, |
161 | const QColorGroup &, | 161 | const QColorGroup &, |
162 | bool sunken = false, | 162 | bool sunken = false, |
163 | bool editable = false, | 163 | bool editable = false, |
164 | bool enabled = true, | 164 | bool enabled = true, |
165 | const QBrush * fill = 0 | 165 | const QBrush * fill = 0 |
166 | ); | 166 | ); |
167 | 167 | ||
168 | QRect comboButtonRect(int x, int y, int w, int h); | 168 | QRect comboButtonRect(int x, int y, int w, int h); |
169 | 169 | ||
170 | QRect comboButtonFocusRect(int x, int y, int w, int h); | 170 | QRect comboButtonFocusRect(int x, int y, int w, int h); |
171 | 171 | ||
172 | int sliderLength() const; | 172 | int sliderLength() const; |
173 | 173 | ||
174 | void drawSliderGroove | 174 | void drawSliderGroove |
175 | ( | 175 | ( |
176 | QPainter *, | 176 | QPainter *, |
177 | int x, | 177 | int x, |
178 | int y, | 178 | int y, |
179 | int w, | 179 | int w, |
180 | int h, | 180 | int h, |
181 | const QColorGroup &, | 181 | const QColorGroup &, |
182 | QCOORD, | 182 | QCOORD, |
183 | Orientation | 183 | Orientation |
184 | ); | 184 | ); |
185 | 185 | ||
186 | void drawArrow | 186 | void drawArrow |
187 | ( | 187 | ( |
188 | QPainter *, | 188 | QPainter *, |
189 | Qt::ArrowType, | 189 | Qt::ArrowType, |
190 | bool down, | 190 | bool down, |
191 | int x, | 191 | int x, |
192 | int y, | 192 | int y, |
193 | int w, | 193 | int w, |
194 | int h, | 194 | int h, |
195 | const QColorGroup &, | 195 | const QColorGroup &, |
196 | bool enabled = true, | 196 | bool enabled = true, |
197 | const QBrush * fill = 0 | 197 | const QBrush * fill = 0 |
198 | ); | 198 | ); |
199 | 199 | ||
200 | void drawSlider | 200 | void drawSlider |
201 | ( | 201 | ( |
202 | QPainter *, | 202 | QPainter *, |
203 | int x, | 203 | int x, |
204 | int y, | 204 | int y, |
205 | int w, | 205 | int w, |
206 | int h, | 206 | int h, |
207 | const QColorGroup &, | 207 | const QColorGroup &, |
208 | Orientation, | 208 | Orientation, |
209 | bool tickAbove, | 209 | bool tickAbove, |
210 | bool tickBelow | 210 | bool tickBelow |
211 | ); | 211 | ); |
212 | 212 | ||
213 | void drawPopupMenuItem | 213 | void drawPopupMenuItem |
214 | ( | 214 | ( |
215 | QPainter *, | 215 | QPainter *, |
216 | bool checkable, | 216 | bool checkable, |
217 | int maxpmw, | 217 | int maxpmw, |
218 | int tab, | 218 | int tabwidth, |
219 | QMenuItem *, | 219 | QMenuItem *, |
220 | const QPalette &, | 220 | const QPalette &, |
221 | bool act, | 221 | bool act, |
222 | bool enabled, | 222 | bool enabled, |
223 | int x, | 223 | int x, |
224 | int y, | 224 | int y, |
225 | int w, | 225 | int w, |
226 | int h | 226 | int h |
227 | ); | 227 | ); |
228 | 228 | ||
229 | void drawFocusRect | 229 | void drawFocusRect |
230 | ( | 230 | ( |
231 | QPainter *, | 231 | QPainter *, |
232 | const QRect &, | 232 | const QRect &, |
233 | const QColorGroup &, | 233 | const QColorGroup &, |
234 | const QColor * pen, | 234 | const QColor * pen, |
235 | bool atBorder | 235 | bool atBorder |
236 | ); | 236 | ); |
237 | 237 | ||
238 | void drawPanel | 238 | void drawPanel |
239 | ( | 239 | ( |
240 | QPainter *, | 240 | QPainter *, |
241 | int x, | 241 | int x, |
242 | int y, | 242 | int y, |
243 | int w, | 243 | int w, |
244 | int h, | 244 | int h, |
245 | const QColorGroup &, | 245 | const QColorGroup &, |
246 | bool sunken, | 246 | bool sunken, |
247 | int lineWidth = 1, | 247 | int lineWidth = 1, |
248 | const QBrush * = 0 | 248 | const QBrush * = 0 |
249 | ); | 249 | ); |
250 | 250 | ||
251 | void drawPopupPanel | 251 | void drawPopupPanel |
252 | ( | 252 | ( |
253 | QPainter *, | 253 | QPainter *, |
254 | int x, | 254 | int x, |
255 | int y, | 255 | int y, |
256 | int w, | 256 | int w, |
257 | int h, | 257 | int h, |
258 | const QColorGroup &, | 258 | const QColorGroup &, |
259 | int lineWidth = 2, | 259 | int lineWidth = 2, |
260 | const QBrush * = 0 | 260 | const QBrush * = 0 |
261 | ); | 261 | ); |
262 | 262 | ||
263 | void drawSeparator | 263 | void drawSeparator |
264 | ( | 264 | ( |
265 | QPainter *, | 265 | QPainter *, |
266 | int x, | 266 | int x, |
267 | int y, | 267 | int y, |
268 | int w, | 268 | int w, |
269 | int h, | 269 | int h, |
270 | const QColorGroup &, | 270 | const QColorGroup &, |
271 | bool sunken = true, | 271 | bool sunken = true, |
272 | int lineWidth = 1, | 272 | int lineWidth = 1, |
273 | int midLineWidth = 0 | 273 | int midLineWidth = 0 |
274 | ); | 274 | ); |
275 | 275 | ||
276 | void drawTab | 276 | void drawTab |
277 | ( | 277 | ( |
278 | QPainter * p, | 278 | QPainter * p, |
279 | const QTabBar * tabBar, | 279 | const QTabBar * tabBar, |
280 | QTab * tab, | 280 | QTab * tab, |
281 | bool selected | 281 | bool selected |
282 | ); | 282 | ); |
283 | 283 | ||
284 | void drawTabMask | 284 | void drawTabMask |
285 | ( | 285 | ( |
286 | QPainter * p, | 286 | QPainter * p, |
287 | const QTabBar *, | 287 | const QTabBar *, |
288 | QTab * tab, | 288 | QTab * tab, |
289 | bool | 289 | bool |
290 | ); | 290 | ); |
291 | 291 | ||
292 | int popupMenuItemHeight(bool, QMenuItem *, const QFontMetrics &); | 292 | int popupMenuItemHeight(bool, QMenuItem *, const QFontMetrics &); |
293 | 293 | ||
294 | GUIStyle guiStyle() const { return Qt::MotifStyle; } | 294 | GUIStyle guiStyle() const { return Qt::MotifStyle; } |
295 | 295 | ||
296 | bool eventFilter(QObject *, QEvent *); | 296 | bool eventFilter(QObject *, QEvent *); |
297 | }; | 297 | }; |
298 | 298 | ||
299 | #endif | 299 | #endif |