summaryrefslogtreecommitdiff
path: root/libopie2/opieui
authorar <ar>2005-01-21 20:19:00 (UTC)
committer ar <ar>2005-01-21 20:19:00 (UTC)
commit55eccecc08f839878e5743d6e6be25af386b5a3f (patch) (unidiff)
treefd663ded2a2c097ce53bac6c021ca652ef5b5508 /libopie2/opieui
parentcd51d382be50bc021739395309e23760f1619759 (diff)
downloadopie-55eccecc08f839878e5743d6e6be25af386b5a3f.zip
opie-55eccecc08f839878e5743d6e6be25af386b5a3f.tar.gz
opie-55eccecc08f839878e5743d6e6be25af386b5a3f.tar.bz2
- make opie compilable against qte 2.3.10 snapshot
change QT_VERSION > 290 into QT_VERSION <= 0x030000
Diffstat (limited to 'libopie2/opieui') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/olistview.cpp8
-rw-r--r--libopie2/opieui/opopupmenu.cpp4
-rw-r--r--libopie2/opieui/oselector.cpp2
-rw-r--r--libopie2/opieui/oselector.h4
4 files changed, 9 insertions, 9 deletions
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp
index 67b4b83..4386e0e 100644
--- a/libopie2/opieui/olistview.cpp
+++ b/libopie2/opieui/olistview.cpp
@@ -1,295 +1,295 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3 =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> 3 =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 .=l. 4 .=l.
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This program is free software; you can 6 _;:,     .>    :=|. This program 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 Library General Public 8:`=1 )Y*s>-.--   : the terms of the GNU Library 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 program is distributed in the hope that 13    .i_,=:_.      -<s. This program 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 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more 18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details. 19++=   -.     .`     .: details.
20 :     =  ...= . :.=- 20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU 21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with 22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB. 23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation, 24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330, 25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30/* QT */ 30/* QT */
31 31
32#include <qpixmap.h> 32#include <qpixmap.h>
33 33
34/* OPIE */ 34/* OPIE */
35 35
36#include <opie2/odebug.h> 36#include <opie2/odebug.h>
37#include <opie2/olistview.h> 37#include <opie2/olistview.h>
38 38
39using namespace Opie::Core; 39using namespace Opie::Core;
40 40
41 41
42namespace Opie { 42namespace Opie {
43namespace Ui { 43namespace Ui {
44/*====================================================================================== 44/*======================================================================================
45 * OListView 45 * OListView
46 *======================================================================================*/ 46 *======================================================================================*/
47 47
48OListView::OListView( QWidget *parent, const char *name, WFlags fl ) 48OListView::OListView( QWidget *parent, const char *name, WFlags fl )
49 :QListView( parent, name, fl ) 49 :QListView( parent, name, fl )
50{ 50{
51 //FIXME: get from global settings and calculate ==> see oglobalsettings.* 51 //FIXME: get from global settings and calculate ==> see oglobalsettings.*
52 52
53 m_alternateBackground = QColor( 238, 246, 255 ); 53 m_alternateBackground = QColor( 238, 246, 255 );
54 m_columnSeparator = QPen( QColor( 150, 160, 170 ), 0, DotLine ); 54 m_columnSeparator = QPen( QColor( 150, 160, 170 ), 0, DotLine );
55 m_fullWidth = true; 55 m_fullWidth = true;
56 connect( this, SIGNAL(expanded(QListViewItem*)), SLOT(expand(QListViewItem*))); 56 connect( this, SIGNAL(expanded(QListViewItem*)), SLOT(expand(QListViewItem*)));
57} 57}
58 58
59OListView::~OListView() 59OListView::~OListView()
60{ 60{
61} 61}
62 62
63void OListView::setFullWidth( bool fullWidth ) 63void OListView::setFullWidth( bool fullWidth )
64{ 64{
65 m_fullWidth = fullWidth; 65 m_fullWidth = fullWidth;
66 #if QT_VERSION > 290 66 #if QT_VERSION >= 0x030000
67 header()->setStretchEnabled( fullWidth, columns()-1 ); 67 header()->setStretchEnabled( fullWidth, columns()-1 );
68 #endif 68 #endif
69} 69}
70 70
71bool OListView::fullWidth() const 71bool OListView::fullWidth() const
72{ 72{
73 return m_fullWidth; 73 return m_fullWidth;
74} 74}
75 75
76int OListView::addColumn( const QString& label, int width ) 76int OListView::addColumn( const QString& label, int width )
77{ 77{
78 int result = QListView::addColumn( label, width ); 78 int result = QListView::addColumn( label, width );
79 #if QT_VERSION > 290 79 #if QT_VERSION >= 0x030000
80 if (m_fullWidth) { 80 if (m_fullWidth) {
81 header()->setStretchEnabled( false, columns()-2 ); 81 header()->setStretchEnabled( false, columns()-2 );
82 header()->setStretchEnabled( true, columns()-1 ); 82 header()->setStretchEnabled( true, columns()-1 );
83 } 83 }
84 #endif 84 #endif
85 return result; 85 return result;
86} 86}
87 87
88int OListView::addColumn( const QIconSet& iconset, const QString& label, int width ) 88int OListView::addColumn( const QIconSet& iconset, const QString& label, int width )
89{ 89{
90 int result = QListView::addColumn( iconset, label, width ); 90 int result = QListView::addColumn( iconset, label, width );
91 #if QT_VERSION > 290 91 #if QT_VERSION >= 0x030000
92 if (m_fullWidth) { 92 if (m_fullWidth) {
93 header()->setStretchEnabled( false, columns()-2 ); 93 header()->setStretchEnabled( false, columns()-2 );
94 header()->setStretchEnabled( true, columns()-1 ); 94 header()->setStretchEnabled( true, columns()-1 );
95 } 95 }
96 #endif 96 #endif
97 return result; 97 return result;
98} 98}
99 99
100void OListView::removeColumn( int index ) 100void OListView::removeColumn( int index )
101{ 101{
102 QListView::removeColumn(index); 102 QListView::removeColumn(index);
103 #if QT_VERSION > 290 103 #if QT_VERSION >= 0x030000
104 if ( m_fullWidth && index == columns() ) 104 if ( m_fullWidth && index == columns() )
105 { 105 {
106 header()->setStretchEnabled( true, columns()-1 ); 106 header()->setStretchEnabled( true, columns()-1 );
107 } 107 }
108 #endif 108 #endif
109} 109}
110 110
111const QColor& OListView::alternateBackground() const 111const QColor& OListView::alternateBackground() const
112{ 112{
113 return m_alternateBackground; 113 return m_alternateBackground;
114} 114}
115 115
116void OListView::setAlternateBackground( const QColor &c ) 116void OListView::setAlternateBackground( const QColor &c )
117{ 117{
118 m_alternateBackground = c; 118 m_alternateBackground = c;
119 repaint(); 119 repaint();
120} 120}
121 121
122const QPen& OListView::columnSeparator() const 122const QPen& OListView::columnSeparator() const
123{ 123{
124 return m_columnSeparator; 124 return m_columnSeparator;
125} 125}
126 126
127void OListView::setColumnSeparator( const QPen& p ) 127void OListView::setColumnSeparator( const QPen& p )
128{ 128{
129 m_columnSeparator = p; 129 m_columnSeparator = p;
130 repaint(); 130 repaint();
131} 131}
132 132
133void OListView::expand(QListViewItem *item) 133void OListView::expand(QListViewItem *item)
134{ 134{
135 ((OListViewItem*)item)->expand(); 135 ((OListViewItem*)item)->expand();
136} 136}
137 137
138OListViewItem* OListView::childFactory() 138OListViewItem* OListView::childFactory()
139{ 139{
140 return new OListViewItem( this ); 140 return new OListViewItem( this );
141} 141}
142 142
143#ifndef QT_NO_DATASTREAM 143#ifndef QT_NO_DATASTREAM
144void OListView::serializeTo( QDataStream& s ) const 144void OListView::serializeTo( QDataStream& s ) const
145{ 145{
146 #warning Caution... the binary format is still under construction... 146 #warning Caution... the binary format is still under construction...
147 odebug << "storing OListView..." << oendl; 147 odebug << "storing OListView..." << oendl;
148 148
149 // store number of columns and the labels 149 // store number of columns and the labels
150 s << columns(); 150 s << columns();
151 for ( int i = 0; i < columns(); ++i ) 151 for ( int i = 0; i < columns(); ++i )
152 s << columnText( i ); 152 s << columnText( i );
153 153
154 // calculate the number of top-level items to serialize 154 // calculate the number of top-level items to serialize
155 int items = 0; 155 int items = 0;
156 QListViewItem* item = firstChild(); 156 QListViewItem* item = firstChild();
157 while ( item ) 157 while ( item )
158 { 158 {
159 item = item->nextSibling(); 159 item = item->nextSibling();
160 items++; 160 items++;
161 } 161 }
162 162
163 // store number of items and the items itself 163 // store number of items and the items itself
164 s << items; 164 s << items;
165 item = firstChild(); 165 item = firstChild();
166 for ( int i = 0; i < items; ++i ) 166 for ( int i = 0; i < items; ++i )
167 { 167 {
168 s << *static_cast<OListViewItem*>( item ); 168 s << *static_cast<OListViewItem*>( item );
169 item = item->nextSibling(); 169 item = item->nextSibling();
170 } 170 }
171 171
172 odebug << "OListview stored." << oendl; 172 odebug << "OListview stored." << oendl;
173} 173}
174 174
175void OListView::serializeFrom( QDataStream& s ) 175void OListView::serializeFrom( QDataStream& s )
176{ 176{
177 #warning Caution... the binary format is still under construction... 177 #warning Caution... the binary format is still under construction...
178 odebug << "loading OListView..." << oendl; 178 odebug << "loading OListView..." << oendl;
179 179
180 int cols; 180 int cols;
181 s >> cols; 181 s >> cols;
182 odebug << "read number of columns = " << cols << oendl; 182 odebug << "read number of columns = " << cols << oendl;
183 183
184 while ( columns() < cols ) addColumn( QString::null ); 184 while ( columns() < cols ) addColumn( QString::null );
185 185
186 for ( int i = 0; i < cols; ++i ) 186 for ( int i = 0; i < cols; ++i )
187 { 187 {
188 QString coltext; 188 QString coltext;
189 s >> coltext; 189 s >> coltext;
190 odebug << "read text '" << coltext << "' for column " << i << "" << oendl; 190 odebug << "read text '" << coltext << "' for column " << i << "" << oendl;
191 setColumnText( i, coltext ); 191 setColumnText( i, coltext );
192 } 192 }
193 193
194 int items; 194 int items;
195 s >> items; 195 s >> items;
196 odebug << "read number of items = " << items << oendl; 196 odebug << "read number of items = " << items << oendl;
197 197
198 for ( int i = 0; i < items; ++i ) 198 for ( int i = 0; i < items; ++i )
199 { 199 {
200 OListViewItem* item = childFactory(); 200 OListViewItem* item = childFactory();
201 s >> *item; 201 s >> *item;
202 } 202 }
203 203
204 odebug << "OListView loaded." << oendl; 204 odebug << "OListView loaded." << oendl;
205 205
206} 206}
207 207
208 208
209void OListView::expand() 209void OListView::expand()
210{ 210{
211 odebug << "OListView::expand" << oendl; 211 odebug << "OListView::expand" << oendl;
212 212
213 QListViewItemIterator it( this ); 213 QListViewItemIterator it( this );
214 while ( it.current() ) { 214 while ( it.current() ) {
215 it.current()->setOpen( true ); 215 it.current()->setOpen( true );
216 ++it; 216 ++it;
217 } 217 }
218} 218}
219 219
220 220
221void OListView::collapse() 221void OListView::collapse()
222{ 222{
223 odebug << "OListView::collapse" << oendl; 223 odebug << "OListView::collapse" << oendl;
224 QListViewItemIterator it( this ); 224 QListViewItemIterator it( this );
225 while ( it.current() ) { 225 while ( it.current() ) {
226 it.current()->setOpen( false ); 226 it.current()->setOpen( false );
227 ++it; 227 ++it;
228 } 228 }
229} 229}
230 230
231 231
232QDataStream& operator<<( QDataStream& s, const OListView& lv ) 232QDataStream& operator<<( QDataStream& s, const OListView& lv )
233{ 233{
234 lv.serializeTo( s ); 234 lv.serializeTo( s );
235 return s; 235 return s;
236} 236}
237 237
238QDataStream& operator>>( QDataStream& s, OListView& lv ) 238QDataStream& operator>>( QDataStream& s, OListView& lv )
239{ 239{
240 lv.serializeFrom( s ); 240 lv.serializeFrom( s );
241 return s; 241 return s;
242} 242}
243#endif // QT_NO_DATASTREAM 243#endif // QT_NO_DATASTREAM
244 244
245/*====================================================================================== 245/*======================================================================================
246 * OListViewItem 246 * OListViewItem
247 *======================================================================================*/ 247 *======================================================================================*/
248 248
249OListViewItem::OListViewItem(QListView *parent) 249OListViewItem::OListViewItem(QListView *parent)
250 : QListViewItem(parent) 250 : QListViewItem(parent)
251{ 251{
252 init(); 252 init();
253} 253}
254 254
255 255
256OListViewItem::OListViewItem(QListViewItem *parent) 256OListViewItem::OListViewItem(QListViewItem *parent)
257 : QListViewItem(parent) 257 : QListViewItem(parent)
258{ 258{
259 init(); 259 init();
260} 260}
261 261
262 262
263OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) 263OListViewItem::OListViewItem(QListView *parent, QListViewItem *after)
264 : QListViewItem(parent, after) 264 : QListViewItem(parent, after)
265{ 265{
266 init(); 266 init();
267} 267}
268 268
269 269
270OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) 270OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after)
271 : QListViewItem(parent, after) 271 : QListViewItem(parent, after)
272{ 272{
273 init(); 273 init();
274} 274}
275 275
276 276
277OListViewItem::OListViewItem(QListView *parent, 277OListViewItem::OListViewItem(QListView *parent,
278 QString label1, QString label2, QString label3, QString label4, 278 QString label1, QString label2, QString label3, QString label4,
279 QString label5, QString label6, QString label7, QString label8) 279 QString label5, QString label6, QString label7, QString label8)
280 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) 280 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8)
281{ 281{
282 init(); 282 init();
283} 283}
284 284
285 285
286OListViewItem::OListViewItem(QListViewItem *parent, 286OListViewItem::OListViewItem(QListViewItem *parent,
287 QString label1, QString label2, QString label3, QString label4, 287 QString label1, QString label2, QString label3, QString label4,
288 QString label5, QString label6, QString label7, QString label8) 288 QString label5, QString label6, QString label7, QString label8)
289 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) 289 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8)
290{ 290{
291 init(); 291 init();
292} 292}
293 293
294 294
295OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, 295OListViewItem::OListViewItem(QListView *parent, QListViewItem *after,
diff --git a/libopie2/opieui/opopupmenu.cpp b/libopie2/opieui/opopupmenu.cpp
index 50c613f..5ce048e 100644
--- a/libopie2/opieui/opopupmenu.cpp
+++ b/libopie2/opieui/opopupmenu.cpp
@@ -1,280 +1,280 @@
1/* This file is part of the KDE libraries 1/* This file is part of the KDE libraries
2 Copyright (C) 2000 Daniel M. Duley <mosfet@kde.org> 2 Copyright (C) 2000 Daniel M. Duley <mosfet@kde.org>
3 Copyright (C) 2002 Hamish Rodda <meddie@yoyo.its.monash.edu.au> 3 Copyright (C) 2002 Hamish Rodda <meddie@yoyo.its.monash.edu.au>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License version 2 as published by the Free Software Foundation. 7 License version 2 as published by the Free Software Foundation.
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/* OPIE */ 20/* OPIE */
21#include <opie2/opopupmenu.h> 21#include <opie2/opopupmenu.h>
22#include <opie2/oconfig.h> 22#include <opie2/oconfig.h>
23#include <opie2/odebug.h> 23#include <opie2/odebug.h>
24 24
25/* QT */ 25/* QT */
26#include <qdrawutil.h> 26#include <qdrawutil.h>
27#include <qtimer.h> 27#include <qtimer.h>
28 28
29 29
30using namespace Opie::Core; 30using namespace Opie::Core;
31using namespace Opie::Ui; 31using namespace Opie::Ui;
32 32
33OPopupTitle::OPopupTitle(QWidget *parent, const char *name) 33OPopupTitle::OPopupTitle(QWidget *parent, const char *name)
34 : QWidget(parent, name) 34 : QWidget(parent, name)
35{ 35{
36 setMinimumSize(16, fontMetrics().height()+8); 36 setMinimumSize(16, fontMetrics().height()+8);
37} 37}
38 38
39OPopupTitle::OPopupTitle(OPixmapEffect::GradientType /* gradient */, 39OPopupTitle::OPopupTitle(OPixmapEffect::GradientType /* gradient */,
40 const QColor &/* color */, const QColor &/* textColor */, 40 const QColor &/* color */, const QColor &/* textColor */,
41 QWidget *parent, const char *name) 41 QWidget *parent, const char *name)
42 : QWidget(parent, name) 42 : QWidget(parent, name)
43{ 43{
44 setMinimumSize(16, fontMetrics().height()+8); 44 setMinimumSize(16, fontMetrics().height()+8);
45} 45}
46 46
47OPopupTitle::OPopupTitle(const OPixmap & /* background */, const QColor &/* color */, 47OPopupTitle::OPopupTitle(const OPixmap & /* background */, const QColor &/* color */,
48 const QColor &/* textColor */, QWidget *parent, 48 const QColor &/* textColor */, QWidget *parent,
49 const char *name) 49 const char *name)
50 : QWidget(parent, name) 50 : QWidget(parent, name)
51{ 51{
52 setMinimumSize(16, fontMetrics().height()+8); 52 setMinimumSize(16, fontMetrics().height()+8);
53} 53}
54 54
55void OPopupTitle::setTitle(const QString &text, const QPixmap *icon) 55void OPopupTitle::setTitle(const QString &text, const QPixmap *icon)
56{ 56{
57 titleStr = text; 57 titleStr = text;
58 if (icon) 58 if (icon)
59 miniicon = *icon; 59 miniicon = *icon;
60 else 60 else
61 miniicon.resize(0, 0); 61 miniicon.resize(0, 0);
62 62
63 int w = miniicon.width()+fontMetrics().width(titleStr); 63 int w = miniicon.width()+fontMetrics().width(titleStr);
64 int h = QMAX( fontMetrics().height(), miniicon.height() ); 64 int h = QMAX( fontMetrics().height(), miniicon.height() );
65 setMinimumSize( w+16, h+8 ); 65 setMinimumSize( w+16, h+8 );
66} 66}
67 67
68void OPopupTitle::setText( const QString &text ) 68void OPopupTitle::setText( const QString &text )
69{ 69{
70 titleStr = text; 70 titleStr = text;
71 int w = miniicon.width()+fontMetrics().width(titleStr); 71 int w = miniicon.width()+fontMetrics().width(titleStr);
72 int h = QMAX( fontMetrics().height(), miniicon.height() ); 72 int h = QMAX( fontMetrics().height(), miniicon.height() );
73 setMinimumSize( w+16, h+8 ); 73 setMinimumSize( w+16, h+8 );
74} 74}
75 75
76void OPopupTitle::setIcon( const QPixmap &pix ) 76void OPopupTitle::setIcon( const QPixmap &pix )
77{ 77{
78 miniicon = pix; 78 miniicon = pix;
79 int w = miniicon.width()+fontMetrics().width(titleStr); 79 int w = miniicon.width()+fontMetrics().width(titleStr);
80 int h = QMAX( fontMetrics().height(), miniicon.height() ); 80 int h = QMAX( fontMetrics().height(), miniicon.height() );
81 setMinimumSize( w+16, h+8 ); 81 setMinimumSize( w+16, h+8 );
82} 82}
83 83
84void OPopupTitle::paintEvent(QPaintEvent *) 84void OPopupTitle::paintEvent(QPaintEvent *)
85{ 85{
86 QRect r(rect()); 86 QRect r(rect());
87 QPainter p(this); 87 QPainter p(this);
88 #if QT_VERSION > 290 88 #if QT_VERSION >= 0x030000
89 qApp->style().drawPrimitive(QStyle::PE_HeaderSection, &p, r, palette().active()); 89 qApp->style().drawPrimitive(QStyle::PE_HeaderSection, &p, r, palette().active());
90 #else 90 #else
91 #warning OPopupMenu is not fully functional on Qt2 91 #warning OPopupMenu is not fully functional on Qt2
92 #endif 92 #endif
93 93
94 if (!miniicon.isNull()) 94 if (!miniicon.isNull())
95 p.drawPixmap(4, (r.height()-miniicon.height())/2, miniicon); 95 p.drawPixmap(4, (r.height()-miniicon.height())/2, miniicon);
96 96
97 if (!titleStr.isNull()) 97 if (!titleStr.isNull())
98 { 98 {
99 p.setPen(palette().active().text()); 99 p.setPen(palette().active().text());
100 QFont f = p.font(); 100 QFont f = p.font();
101 f.setBold(true); 101 f.setBold(true);
102 p.setFont(f); 102 p.setFont(f);
103 if(!miniicon.isNull()) 103 if(!miniicon.isNull())
104 { 104 {
105 p.drawText(miniicon.width()+8, 0, width()-(miniicon.width()+8), 105 p.drawText(miniicon.width()+8, 0, width()-(miniicon.width()+8),
106 height(), AlignLeft | AlignVCenter | SingleLine, 106 height(), AlignLeft | AlignVCenter | SingleLine,
107 titleStr); 107 titleStr);
108 } 108 }
109 else 109 else
110 { 110 {
111 p.drawText(0, 0, width(), height(), 111 p.drawText(0, 0, width(), height(),
112 AlignCenter | SingleLine, titleStr); 112 AlignCenter | SingleLine, titleStr);
113 } 113 }
114 } 114 }
115 115
116 p.setPen(palette().active().highlight()); 116 p.setPen(palette().active().highlight());
117 p.drawLine(0, 0, r.right(), 0); 117 p.drawLine(0, 0, r.right(), 0);
118} 118}
119 119
120QSize OPopupTitle::sizeHint() const 120QSize OPopupTitle::sizeHint() const
121{ 121{
122 return(minimumSize()); 122 return(minimumSize());
123} 123}
124 124
125class OPopupMenu::OPopupMenuPrivate 125class OPopupMenu::OPopupMenuPrivate
126{ 126{
127public: 127public:
128 OPopupMenuPrivate () 128 OPopupMenuPrivate ()
129 : noMatches(false) 129 : noMatches(false)
130 , shortcuts(false) 130 , shortcuts(false)
131 , autoExec(false) 131 , autoExec(false)
132 , lastHitIndex(-1) 132 , lastHitIndex(-1)
133 , m_ctxMenu(0) 133 , m_ctxMenu(0)
134 {} 134 {}
135 135
136 ~OPopupMenuPrivate () 136 ~OPopupMenuPrivate ()
137 { 137 {
138 delete m_ctxMenu; 138 delete m_ctxMenu;
139 } 139 }
140 140
141 QString m_lastTitle; 141 QString m_lastTitle;
142 142
143 // variables for keyboard navigation 143 // variables for keyboard navigation
144 QTimer clearTimer; 144 QTimer clearTimer;
145 145
146 bool noMatches : 1; 146 bool noMatches : 1;
147 bool shortcuts : 1; 147 bool shortcuts : 1;
148 bool autoExec : 1; 148 bool autoExec : 1;
149 149
150 QString keySeq; 150 QString keySeq;
151 QString originalText; 151 QString originalText;
152 152
153 int lastHitIndex; 153 int lastHitIndex;
154 154
155 // support for RMB menus on menus 155 // support for RMB menus on menus
156 QPopupMenu* m_ctxMenu; 156 QPopupMenu* m_ctxMenu;
157 static bool s_continueCtxMenuShow; 157 static bool s_continueCtxMenuShow;
158 static int s_highlightedItem; 158 static int s_highlightedItem;
159 static OPopupMenu* s_contextedMenu; 159 static OPopupMenu* s_contextedMenu;
160}; 160};
161 161
162int OPopupMenu::OPopupMenuPrivate::s_highlightedItem(-1); 162int OPopupMenu::OPopupMenuPrivate::s_highlightedItem(-1);
163OPopupMenu* OPopupMenu::OPopupMenuPrivate::s_contextedMenu(0); 163OPopupMenu* OPopupMenu::OPopupMenuPrivate::s_contextedMenu(0);
164bool OPopupMenu::OPopupMenuPrivate::s_continueCtxMenuShow(true); 164bool OPopupMenu::OPopupMenuPrivate::s_continueCtxMenuShow(true);
165 165
166OPopupMenu::OPopupMenu(QWidget *parent, const char *name) 166OPopupMenu::OPopupMenu(QWidget *parent, const char *name)
167 : QPopupMenu(parent, name) 167 : QPopupMenu(parent, name)
168{ 168{
169 d = new OPopupMenuPrivate; 169 d = new OPopupMenuPrivate;
170 resetKeyboardVars(); 170 resetKeyboardVars();
171 connect(&(d->clearTimer), SIGNAL(timeout()), SLOT(resetKeyboardVars())); 171 connect(&(d->clearTimer), SIGNAL(timeout()), SLOT(resetKeyboardVars()));
172} 172}
173 173
174OPopupMenu::~OPopupMenu() 174OPopupMenu::~OPopupMenu()
175{ 175{
176 if (OPopupMenuPrivate::s_contextedMenu == this) 176 if (OPopupMenuPrivate::s_contextedMenu == this)
177 { 177 {
178 OPopupMenuPrivate::s_contextedMenu = 0; 178 OPopupMenuPrivate::s_contextedMenu = 0;
179 OPopupMenuPrivate::s_highlightedItem = -1; 179 OPopupMenuPrivate::s_highlightedItem = -1;
180 } 180 }
181 181
182 delete d; 182 delete d;
183} 183}
184 184
185int OPopupMenu::insertTitle(const QString &text, int id, int index) 185int OPopupMenu::insertTitle(const QString &text, int id, int index)
186{ 186{
187 OPopupTitle *titleItem = new OPopupTitle(); 187 OPopupTitle *titleItem = new OPopupTitle();
188 titleItem->setTitle(text); 188 titleItem->setTitle(text);
189 int ret = insertItem(titleItem, id, index); 189 int ret = insertItem(titleItem, id, index);
190 setItemEnabled(id, false); 190 setItemEnabled(id, false);
191 return ret; 191 return ret;
192} 192}
193 193
194int OPopupMenu::insertTitle(const QPixmap &icon, const QString &text, int id, 194int OPopupMenu::insertTitle(const QPixmap &icon, const QString &text, int id,
195 int index) 195 int index)
196{ 196{
197 OPopupTitle *titleItem = new OPopupTitle(); 197 OPopupTitle *titleItem = new OPopupTitle();
198 titleItem->setTitle(text, &icon); 198 titleItem->setTitle(text, &icon);
199 int ret = insertItem(titleItem, id, index); 199 int ret = insertItem(titleItem, id, index);
200 setItemEnabled(id, false); 200 setItemEnabled(id, false);
201 return ret; 201 return ret;
202} 202}
203 203
204void OPopupMenu::changeTitle(int id, const QString &text) 204void OPopupMenu::changeTitle(int id, const QString &text)
205{ 205{
206 QMenuItem *item = findItem(id); 206 QMenuItem *item = findItem(id);
207 if(item){ 207 if(item){
208 if(item->widget()) 208 if(item->widget())
209 ((OPopupTitle *)item->widget())->setTitle(text); 209 ((OPopupTitle *)item->widget())->setTitle(text);
210#ifndef NDEBUG 210#ifndef NDEBUG
211 else 211 else
212 owarn << "KPopupMenu: changeTitle() called with non-title id " << id << "" << oendl; 212 owarn << "KPopupMenu: changeTitle() called with non-title id " << id << "" << oendl;
213#endif 213#endif
214 } 214 }
215#ifndef NDEBUG 215#ifndef NDEBUG
216 else 216 else
217 owarn << "KPopupMenu: changeTitle() called with invalid id " << id << "" << oendl; 217 owarn << "KPopupMenu: changeTitle() called with invalid id " << id << "" << oendl;
218#endif 218#endif
219} 219}
220 220
221void OPopupMenu::changeTitle(int id, const QPixmap &icon, const QString &text) 221void OPopupMenu::changeTitle(int id, const QPixmap &icon, const QString &text)
222{ 222{
223 QMenuItem *item = findItem(id); 223 QMenuItem *item = findItem(id);
224 if(item){ 224 if(item){
225 if(item->widget()) 225 if(item->widget())
226 ((OPopupTitle *)item->widget())->setTitle(text, &icon); 226 ((OPopupTitle *)item->widget())->setTitle(text, &icon);
227#ifndef NDEBUG 227#ifndef NDEBUG
228 else 228 else
229 owarn << "KPopupMenu: changeTitle() called with non-title id " << id << "" << oendl; 229 owarn << "KPopupMenu: changeTitle() called with non-title id " << id << "" << oendl;
230#endif 230#endif
231 } 231 }
232#ifndef NDEBUG 232#ifndef NDEBUG
233 else 233 else
234 owarn << "KPopupMenu: changeTitle() called with invalid id " << id << "" << oendl; 234 owarn << "KPopupMenu: changeTitle() called with invalid id " << id << "" << oendl;
235#endif 235#endif
236} 236}
237 237
238QString OPopupMenu::title(int id) const 238QString OPopupMenu::title(int id) const
239{ 239{
240 if(id == -1) // obsolete 240 if(id == -1) // obsolete
241 return(d->m_lastTitle); 241 return(d->m_lastTitle);
242 QMenuItem *item = findItem(id); 242 QMenuItem *item = findItem(id);
243 if(item){ 243 if(item){
244 if(item->widget()) 244 if(item->widget())
245 return(((OPopupTitle *)item->widget())->title()); 245 return(((OPopupTitle *)item->widget())->title());
246 else 246 else
247 owarn << "OPopupMenu: title() called with non-title id " << id << "." << oendl; 247 owarn << "OPopupMenu: title() called with non-title id " << id << "." << oendl;
248 } 248 }
249 else 249 else
250 owarn << "OPopupMenu: title() called with invalid id " << id << "." << oendl; 250 owarn << "OPopupMenu: title() called with invalid id " << id << "." << oendl;
251 return(QString::null); 251 return(QString::null);
252} 252}
253 253
254QPixmap OPopupMenu::titlePixmap(int id) const 254QPixmap OPopupMenu::titlePixmap(int id) const
255{ 255{
256 QMenuItem *item = findItem(id); 256 QMenuItem *item = findItem(id);
257 if(item){ 257 if(item){
258 if(item->widget()) 258 if(item->widget())
259 return(((OPopupTitle *)item->widget())->icon()); 259 return(((OPopupTitle *)item->widget())->icon());
260 else 260 else
261 owarn << "KPopupMenu: titlePixmap() called with non-title id " << id << "." << oendl; 261 owarn << "KPopupMenu: titlePixmap() called with non-title id " << id << "." << oendl;
262 } 262 }
263 else 263 else
264 owarn << "KPopupMenu: titlePixmap() called with invalid id " << id << "." << oendl; 264 owarn << "KPopupMenu: titlePixmap() called with invalid id " << id << "." << oendl;
265 QPixmap tmp; 265 QPixmap tmp;
266 return(tmp); 266 return(tmp);
267} 267}
268 268
269/** 269/**
270 * This is re-implemented for keyboard navigation. 270 * This is re-implemented for keyboard navigation.
271 */ 271 */
272void OPopupMenu::closeEvent(QCloseEvent*e) 272void OPopupMenu::closeEvent(QCloseEvent*e)
273{ 273{
274 if (d->shortcuts) 274 if (d->shortcuts)
275 resetKeyboardVars(); 275 resetKeyboardVars();
276 QPopupMenu::closeEvent(e); 276 QPopupMenu::closeEvent(e);
277} 277}
278 278
279void OPopupMenu::keyPressEvent(QKeyEvent* e) 279void OPopupMenu::keyPressEvent(QKeyEvent* e)
280{ 280{
@@ -360,241 +360,241 @@ void OPopupMenu::keyPressEvent(QKeyEvent* e)
360 360
361 // retrieve the right text 361 // retrieve the right text
362 // (the last selected item one may have additional ampersands) 362 // (the last selected item one may have additional ampersands)
363 if (i == d->lastHitIndex) 363 if (i == d->lastHitIndex)
364 thisText = d->originalText; 364 thisText = d->originalText;
365 else 365 else
366 thisText = text(j); 366 thisText = text(j);
367 367
368 // if there is an accelerator present, remove it 368 // if there is an accelerator present, remove it
369 if ((int)accel(j) != 0) 369 if ((int)accel(j) != 0)
370 thisText = thisText.replace(QRegExp("&"), ""); 370 thisText = thisText.replace(QRegExp("&"), "");
371 371
372 // chop text to the search length 372 // chop text to the search length
373 thisText = thisText.left(seqLen); 373 thisText = thisText.left(seqLen);
374 374
375 // do the search 375 // do the search
376 if (thisText.find(d->keySeq, 0, false) == 0) { 376 if (thisText.find(d->keySeq, 0, false) == 0) {
377 377
378 if (firstpass) { 378 if (firstpass) {
379 // match 379 // match
380 setActiveItem(i); 380 setActiveItem(i);
381 381
382 // check to see if we're underlining a different item 382 // check to see if we're underlining a different item
383 if (d->lastHitIndex != i) 383 if (d->lastHitIndex != i)
384 // yes; revert the underlining 384 // yes; revert the underlining
385 changeItem(idAt(d->lastHitIndex), d->originalText); 385 changeItem(idAt(d->lastHitIndex), d->originalText);
386 386
387 // set the original text if it's a different item 387 // set the original text if it's a different item
388 if (d->lastHitIndex != i || d->lastHitIndex == -1) 388 if (d->lastHitIndex != i || d->lastHitIndex == -1)
389 d->originalText = text(j); 389 d->originalText = text(j);
390 390
391 // underline the currently selected item 391 // underline the currently selected item
392 changeItem(j, underlineText(d->originalText, d->keySeq.length())); 392 changeItem(j, underlineText(d->originalText, d->keySeq.length()));
393 393
394 // remeber what's going on 394 // remeber what's going on
395 d->lastHitIndex = i; 395 d->lastHitIndex = i;
396 396
397 // start/restart the clear timer 397 // start/restart the clear timer
398 d->clearTimer.start(5000, true); 398 d->clearTimer.start(5000, true);
399 399
400 // go around for another try, to see if we can execute 400 // go around for another try, to see if we can execute
401 firstpass = false; 401 firstpass = false;
402 } else { 402 } else {
403 // don't allow execution 403 // don't allow execution
404 return; 404 return;
405 } 405 }
406 } 406 }
407 407
408 // fall through to allow execution 408 // fall through to allow execution
409 } 409 }
410 410
411 if (!firstpass) { 411 if (!firstpass) {
412 if (d->autoExec) { 412 if (d->autoExec) {
413 // activate anything 413 // activate anything
414 activateItemAt(d->lastHitIndex); 414 activateItemAt(d->lastHitIndex);
415 resetKeyboardVars(); 415 resetKeyboardVars();
416 416
417 } else if (findItem(idAt(d->lastHitIndex)) && 417 } else if (findItem(idAt(d->lastHitIndex)) &&
418 findItem(idAt(d->lastHitIndex))->popup()) { 418 findItem(idAt(d->lastHitIndex))->popup()) {
419 // only activate sub-menus 419 // only activate sub-menus
420 activateItemAt(d->lastHitIndex); 420 activateItemAt(d->lastHitIndex);
421 resetKeyboardVars(); 421 resetKeyboardVars();
422 } 422 }
423 423
424 return; 424 return;
425 } 425 }
426 426
427 // no matches whatsoever, clean up 427 // no matches whatsoever, clean up
428 resetKeyboardVars(true); 428 resetKeyboardVars(true);
429 //e->ignore(); 429 //e->ignore();
430 QPopupMenu::keyPressEvent(e); 430 QPopupMenu::keyPressEvent(e);
431} 431}
432 432
433QString OPopupMenu::underlineText(const QString& text, uint length) 433QString OPopupMenu::underlineText(const QString& text, uint length)
434{ 434{
435 QString ret = text; 435 QString ret = text;
436 for (uint i = 0; i < length; i++) { 436 for (uint i = 0; i < length; i++) {
437 if (ret[2*i] != '&') 437 if (ret[2*i] != '&')
438 ret.insert(2*i, "&"); 438 ret.insert(2*i, "&");
439 } 439 }
440 return ret; 440 return ret;
441} 441}
442 442
443void OPopupMenu::resetKeyboardVars(bool noMatches /* = false */) 443void OPopupMenu::resetKeyboardVars(bool noMatches /* = false */)
444{ 444{
445 // Clean up keyboard variables 445 // Clean up keyboard variables
446 if (d->lastHitIndex != -1) { 446 if (d->lastHitIndex != -1) {
447 changeItem(idAt(d->lastHitIndex), d->originalText); 447 changeItem(idAt(d->lastHitIndex), d->originalText);
448 d->lastHitIndex = -1; 448 d->lastHitIndex = -1;
449 } 449 }
450 450
451 if (!noMatches) { 451 if (!noMatches) {
452 d->keySeq = QString::null; 452 d->keySeq = QString::null;
453 } 453 }
454 454
455 d->noMatches = noMatches; 455 d->noMatches = noMatches;
456} 456}
457 457
458void OPopupMenu::setKeyboardShortcutsEnabled(bool enable) 458void OPopupMenu::setKeyboardShortcutsEnabled(bool enable)
459{ 459{
460 d->shortcuts = enable; 460 d->shortcuts = enable;
461} 461}
462 462
463void OPopupMenu::setKeyboardShortcutsExecute(bool enable) 463void OPopupMenu::setKeyboardShortcutsExecute(bool enable)
464{ 464{
465 d->autoExec = enable; 465 d->autoExec = enable;
466} 466}
467/** 467/**
468 * End keyboard navigation. 468 * End keyboard navigation.
469 */ 469 */
470 470
471/** 471/**
472 * RMB menus on menus 472 * RMB menus on menus
473 */ 473 */
474QPopupMenu* OPopupMenu::contextMenu() 474QPopupMenu* OPopupMenu::contextMenu()
475{ 475{
476 if (!d->m_ctxMenu) 476 if (!d->m_ctxMenu)
477 { 477 {
478 d->m_ctxMenu = new QPopupMenu(this); 478 d->m_ctxMenu = new QPopupMenu(this);
479 installEventFilter(this); 479 installEventFilter(this);
480 connect(d->m_ctxMenu, SIGNAL(aboutToHide()), this, SLOT(ctxMenuHiding())); 480 connect(d->m_ctxMenu, SIGNAL(aboutToHide()), this, SLOT(ctxMenuHiding()));
481 } 481 }
482 482
483 return d->m_ctxMenu; 483 return d->m_ctxMenu;
484} 484}
485 485
486void OPopupMenu::cancelContextMenuShow() 486void OPopupMenu::cancelContextMenuShow()
487{ 487{
488 OPopupMenuPrivate::s_continueCtxMenuShow = false; 488 OPopupMenuPrivate::s_continueCtxMenuShow = false;
489} 489}
490 490
491int OPopupMenu::contextMenuFocusItem() 491int OPopupMenu::contextMenuFocusItem()
492{ 492{
493 return OPopupMenuPrivate::s_highlightedItem; 493 return OPopupMenuPrivate::s_highlightedItem;
494} 494}
495 495
496OPopupMenu* OPopupMenu::contextMenuFocus() 496OPopupMenu* OPopupMenu::contextMenuFocus()
497{ 497{
498 return OPopupMenuPrivate::s_contextedMenu; 498 return OPopupMenuPrivate::s_contextedMenu;
499} 499}
500 500
501void OPopupMenu::itemHighlighted(int /* whichItem */) 501void OPopupMenu::itemHighlighted(int /* whichItem */)
502{ 502{
503 if (!d->m_ctxMenu || !d->m_ctxMenu->isVisible()) 503 if (!d->m_ctxMenu || !d->m_ctxMenu->isVisible())
504 { 504 {
505 return; 505 return;
506 } 506 }
507 507
508 d->m_ctxMenu->hide(); 508 d->m_ctxMenu->hide();
509 showCtxMenu(mapFromGlobal(QCursor::pos())); 509 showCtxMenu(mapFromGlobal(QCursor::pos()));
510} 510}
511 511
512void OPopupMenu::showCtxMenu(QPoint pos) 512void OPopupMenu::showCtxMenu(QPoint pos)
513{ 513{
514 OPopupMenuPrivate::s_highlightedItem = idAt(pos); 514 OPopupMenuPrivate::s_highlightedItem = idAt(pos);
515 515
516 if (OPopupMenuPrivate::s_highlightedItem == -1) 516 if (OPopupMenuPrivate::s_highlightedItem == -1)
517 { 517 {
518 OPopupMenuPrivate::s_contextedMenu = 0; 518 OPopupMenuPrivate::s_contextedMenu = 0;
519 return; 519 return;
520 } 520 }
521 521
522 emit aboutToShowContextMenu(this, OPopupMenuPrivate::s_highlightedItem, d->m_ctxMenu); 522 emit aboutToShowContextMenu(this, OPopupMenuPrivate::s_highlightedItem, d->m_ctxMenu);
523 523
524 if (!OPopupMenuPrivate::s_continueCtxMenuShow) 524 if (!OPopupMenuPrivate::s_continueCtxMenuShow)
525 { 525 {
526 OPopupMenuPrivate::s_continueCtxMenuShow = true; 526 OPopupMenuPrivate::s_continueCtxMenuShow = true;
527 return; 527 return;
528 } 528 }
529 529
530 OPopupMenuPrivate::s_contextedMenu = this; 530 OPopupMenuPrivate::s_contextedMenu = this;
531 d->m_ctxMenu->popup(this->mapToGlobal(pos)); 531 d->m_ctxMenu->popup(this->mapToGlobal(pos));
532 connect(this, SIGNAL(highlighted(int)), this, SLOT(itemHighlighted(int))); 532 connect(this, SIGNAL(highlighted(int)), this, SLOT(itemHighlighted(int)));
533} 533}
534 534
535void OPopupMenu::ctxMenuHiding() 535void OPopupMenu::ctxMenuHiding()
536{ 536{
537 disconnect(this, SIGNAL(highlighted(int)), this, SLOT(itemHighlighted(int))); 537 disconnect(this, SIGNAL(highlighted(int)), this, SLOT(itemHighlighted(int)));
538 OPopupMenuPrivate::s_continueCtxMenuShow = true; 538 OPopupMenuPrivate::s_continueCtxMenuShow = true;
539} 539}
540 540
541bool OPopupMenu::eventFilter(QObject* obj, QEvent* event) 541bool OPopupMenu::eventFilter(QObject* obj, QEvent* event)
542{ 542{
543 if (d->m_ctxMenu && obj == this) 543 if (d->m_ctxMenu && obj == this)
544 { 544 {
545 if (event->type() == QEvent::MouseButtonRelease) 545 if (event->type() == QEvent::MouseButtonRelease)
546 { 546 {
547 if (d->m_ctxMenu->isVisible()) 547 if (d->m_ctxMenu->isVisible())
548 { 548 {
549 return true; 549 return true;
550 } 550 }
551 } 551 }
552 #if QT_VERSION > 290 552 #if QT_VERSION >= 0x030000
553 else if (event->type() == QEvent::ContextMenu) 553 else if (event->type() == QEvent::ContextMenu)
554 #else 554 #else
555 else if ( (event->type() == QEvent::MouseButtonPress) && 555 else if ( (event->type() == QEvent::MouseButtonPress) &&
556 ( (QMouseEvent*) event )->button() == QMouseEvent::RightButton ) 556 ( (QMouseEvent*) event )->button() == QMouseEvent::RightButton )
557 #endif 557 #endif
558 { 558 {
559 showCtxMenu(mapFromGlobal(QCursor::pos())); 559 showCtxMenu(mapFromGlobal(QCursor::pos()));
560 return true; 560 return true;
561 } 561 }
562 } 562 }
563 563
564 return QWidget::eventFilter(obj, event); 564 return QWidget::eventFilter(obj, event);
565} 565}
566 566
567void OPopupMenu::hideEvent(QHideEvent*) 567void OPopupMenu::hideEvent(QHideEvent*)
568{ 568{
569 if (d->m_ctxMenu) 569 if (d->m_ctxMenu)
570 { 570 {
571 d->m_ctxMenu->hide(); 571 d->m_ctxMenu->hide();
572 } 572 }
573} 573}
574/** 574/**
575 * end of RMB menus on menus support 575 * end of RMB menus on menus support
576 */ 576 */
577 577
578// Obsolete 578// Obsolete
579OPopupMenu::OPopupMenu(const QString& title, QWidget *parent, const char *name) 579OPopupMenu::OPopupMenu(const QString& title, QWidget *parent, const char *name)
580 : QPopupMenu(parent, name) 580 : QPopupMenu(parent, name)
581{ 581{
582 d = new OPopupMenuPrivate; 582 d = new OPopupMenuPrivate;
583 setTitle(title); 583 setTitle(title);
584} 584}
585 585
586// Obsolete 586// Obsolete
587void OPopupMenu::setTitle(const QString &title) 587void OPopupMenu::setTitle(const QString &title)
588{ 588{
589 OPopupTitle *titleItem = new OPopupTitle(); 589 OPopupTitle *titleItem = new OPopupTitle();
590 titleItem->setTitle(title); 590 titleItem->setTitle(title);
591 insertItem(titleItem); 591 insertItem(titleItem);
592 d->m_lastTitle = title; 592 d->m_lastTitle = title;
593} 593}
594 594
595void OPopupTitle::virtual_hook( int, void* ) 595void OPopupTitle::virtual_hook( int, void* )
596{ /*BASE::virtual_hook( id, data );*/ } 596{ /*BASE::virtual_hook( id, data );*/ }
597 597
598void OPopupMenu::virtual_hook( int, void* ) 598void OPopupMenu::virtual_hook( int, void* )
599{ /*BASE::virtual_hook( id, data );*/ } 599{ /*BASE::virtual_hook( id, data );*/ }
600 600
diff --git a/libopie2/opieui/oselector.cpp b/libopie2/opieui/oselector.cpp
index 05543c5..936dfe6 100644
--- a/libopie2/opieui/oselector.cpp
+++ b/libopie2/opieui/oselector.cpp
@@ -1,334 +1,334 @@
1/* This file is part of the KDE libraries 1/* This file is part of the KDE libraries
2 Copyright (C) 1997 Martin Jones (mjones@kde.org) 2 Copyright (C) 1997 Martin Jones (mjones@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/* QT */ 20/* QT */
21 21
22#include <qimage.h> 22#include <qimage.h>
23#include <qdrawutil.h> 23#include <qdrawutil.h>
24 24
25/* OPIE */ 25/* OPIE */
26 26
27#include <opie2/oimageeffect.h> 27#include <opie2/oimageeffect.h>
28#include <opie2/oselector.h> 28#include <opie2/oselector.h>
29 29
30#define STORE_W 8 30#define STORE_W 8
31#define STORE_W2 STORE_W * 2 31#define STORE_W2 STORE_W * 2
32 32
33//----------------------------------------------------------------------------- 33//-----------------------------------------------------------------------------
34/* 34/*
35 * 2D value selector. 35 * 2D value selector.
36 * The contents of the selector are drawn by derived class. 36 * The contents of the selector are drawn by derived class.
37 */ 37 */
38 38
39using namespace Opie::Ui; 39using namespace Opie::Ui;
40 40
41OXYSelector::OXYSelector( QWidget *parent, const char *name ) 41OXYSelector::OXYSelector( QWidget *parent, const char *name )
42 : QWidget( parent, name ) 42 : QWidget( parent, name )
43{ 43{
44 xPos = 0; 44 xPos = 0;
45 yPos = 0; 45 yPos = 0;
46 minX = 0; 46 minX = 0;
47 minY = 0; 47 minY = 0;
48 maxX = 100; 48 maxX = 100;
49 maxY = 100; 49 maxY = 100;
50 store.setOptimization( QPixmap::BestOptim ); 50 store.setOptimization( QPixmap::BestOptim );
51 store.resize( STORE_W2, STORE_W2 ); 51 store.resize( STORE_W2, STORE_W2 );
52} 52}
53 53
54 54
55OXYSelector::~OXYSelector() 55OXYSelector::~OXYSelector()
56{} 56{}
57 57
58 58
59void OXYSelector::setRange( int _minX, int _minY, int _maxX, int _maxY ) 59void OXYSelector::setRange( int _minX, int _minY, int _maxX, int _maxY )
60{ 60{
61 px = 2; 61 px = 2;
62 py = 2; 62 py = 2;
63 minX = _minX; 63 minX = _minX;
64 minY = _minY; 64 minY = _minY;
65 maxX = _maxX; 65 maxX = _maxX;
66 maxY = _maxY; 66 maxY = _maxY;
67} 67}
68 68
69void OXYSelector::setValues( int _xPos, int _yPos ) 69void OXYSelector::setValues( int _xPos, int _yPos )
70{ 70{
71 xPos = _xPos; 71 xPos = _xPos;
72 yPos = _yPos; 72 yPos = _yPos;
73 73
74 if ( xPos > maxX ) 74 if ( xPos > maxX )
75 xPos = maxX; 75 xPos = maxX;
76 else if ( xPos < minX ) 76 else if ( xPos < minX )
77 xPos = minX; 77 xPos = minX;
78 78
79 if ( yPos > maxY ) 79 if ( yPos > maxY )
80 yPos = maxY; 80 yPos = maxY;
81 else if ( yPos < minY ) 81 else if ( yPos < minY )
82 yPos = minY; 82 yPos = minY;
83 83
84 int xp = 2 + (width() - 4) * xPos / (maxX - minX); 84 int xp = 2 + (width() - 4) * xPos / (maxX - minX);
85 int yp = height() - 2 - (height() - 4) * yPos / (maxY - minY); 85 int yp = height() - 2 - (height() - 4) * yPos / (maxY - minY);
86 86
87 setPosition( xp, yp ); 87 setPosition( xp, yp );
88} 88}
89 89
90QRect OXYSelector::contentsRect() const 90QRect OXYSelector::contentsRect() const
91{ 91{
92 return QRect( 2, 2, width()-4, height()-4 ); 92 return QRect( 2, 2, width()-4, height()-4 );
93} 93}
94 94
95void OXYSelector::paintEvent( QPaintEvent *ev ) 95void OXYSelector::paintEvent( QPaintEvent *ev )
96{ 96{
97 QRect cursorRect( px - STORE_W, py - STORE_W, STORE_W2, STORE_W2); 97 QRect cursorRect( px - STORE_W, py - STORE_W, STORE_W2, STORE_W2);
98 QRect paintRect = ev->rect(); 98 QRect paintRect = ev->rect();
99 99
100 QPainter painter; 100 QPainter painter;
101 painter.begin( this ); 101 painter.begin( this );
102 102
103 QBrush brush; 103 QBrush brush;
104 qDrawShadePanel( &painter, 0, 0, width(), height(), colorGroup(), 104 qDrawShadePanel( &painter, 0, 0, width(), height(), colorGroup(),
105 TRUE, 2, &brush ); 105 TRUE, 2, &brush );
106 106
107 drawContents( &painter ); 107 drawContents( &painter );
108 if (paintRect.contains(cursorRect)) 108 if (paintRect.contains(cursorRect))
109 { 109 {
110 bitBlt( &store, 0, 0, this, px - STORE_W, py - STORE_W, 110 bitBlt( &store, 0, 0, this, px - STORE_W, py - STORE_W,
111 STORE_W2, STORE_W2, CopyROP ); 111 STORE_W2, STORE_W2, CopyROP );
112 drawCursor( &painter, px, py ); 112 drawCursor( &painter, px, py );
113 } 113 }
114 else if (paintRect.intersects(cursorRect)) 114 else if (paintRect.intersects(cursorRect))
115 { 115 {
116 repaint( cursorRect, false); 116 repaint( cursorRect, false);
117 } 117 }
118 118
119 painter.end(); 119 painter.end();
120} 120}
121 121
122void OXYSelector::mousePressEvent( QMouseEvent *e ) 122void OXYSelector::mousePressEvent( QMouseEvent *e )
123{ 123{
124 int xVal, yVal; 124 int xVal, yVal;
125 valuesFromPosition( e->pos().x() - 2, e->pos().y() - 2, xVal, yVal ); 125 valuesFromPosition( e->pos().x() - 2, e->pos().y() - 2, xVal, yVal );
126 setValues( xVal, yVal ); 126 setValues( xVal, yVal );
127 127
128 emit valueChanged( xPos, yPos ); 128 emit valueChanged( xPos, yPos );
129} 129}
130 130
131void OXYSelector::mouseMoveEvent( QMouseEvent *e ) 131void OXYSelector::mouseMoveEvent( QMouseEvent *e )
132{ 132{
133 int xVal, yVal; 133 int xVal, yVal;
134 valuesFromPosition( e->pos().x() - 2, e->pos().y() - 2, xVal, yVal ); 134 valuesFromPosition( e->pos().x() - 2, e->pos().y() - 2, xVal, yVal );
135 setValues( xVal, yVal ); 135 setValues( xVal, yVal );
136 136
137 emit valueChanged( xPos, yPos ); 137 emit valueChanged( xPos, yPos );
138} 138}
139 139
140void OXYSelector::wheelEvent( QWheelEvent *e ) 140void OXYSelector::wheelEvent( QWheelEvent *e )
141{ 141{
142 #if QT_VERSION > 290 142 #if QT_VERSION >= 0x030000
143 if ( e->orientation() == Qt::Horizontal ) 143 if ( e->orientation() == Qt::Horizontal )
144 setValues( xValue() + e->delta()/120, yValue() ); 144 setValues( xValue() + e->delta()/120, yValue() );
145 else 145 else
146 setValues( xValue(), yValue() + e->delta()/120 ); 146 setValues( xValue(), yValue() + e->delta()/120 );
147 147
148 emit valueChanged( xPos, yPos ); 148 emit valueChanged( xPos, yPos );
149 #else 149 #else
150 Q_UNUSED( e ) 150 Q_UNUSED( e )
151 #endif 151 #endif
152} 152}
153 153
154void OXYSelector::valuesFromPosition( int x, int y, int &xVal, int &yVal ) const 154void OXYSelector::valuesFromPosition( int x, int y, int &xVal, int &yVal ) const
155{ 155{
156 xVal = ( (maxX-minX) * (x-2) ) / ( width()-4 ); 156 xVal = ( (maxX-minX) * (x-2) ) / ( width()-4 );
157 yVal = maxY - ( ( (maxY-minY) * (y-2) ) / ( height()-4 ) ); 157 yVal = maxY - ( ( (maxY-minY) * (y-2) ) / ( height()-4 ) );
158 158
159 if ( xVal > maxX ) 159 if ( xVal > maxX )
160 xVal = maxX; 160 xVal = maxX;
161 else if ( xVal < minX ) 161 else if ( xVal < minX )
162 xVal = minX; 162 xVal = minX;
163 163
164 if ( yVal > maxY ) 164 if ( yVal > maxY )
165 yVal = maxY; 165 yVal = maxY;
166 else if ( yVal < minY ) 166 else if ( yVal < minY )
167 yVal = minY; 167 yVal = minY;
168} 168}
169 169
170void OXYSelector::setPosition( int xp, int yp ) 170void OXYSelector::setPosition( int xp, int yp )
171{ 171{
172 if ( xp < 2 ) 172 if ( xp < 2 )
173 xp = 2; 173 xp = 2;
174 else if ( xp > width() - 2 ) 174 else if ( xp > width() - 2 )
175 xp = width() - 2; 175 xp = width() - 2;
176 176
177 if ( yp < 2 ) 177 if ( yp < 2 )
178 yp = 2; 178 yp = 2;
179 else if ( yp > height() - 2 ) 179 else if ( yp > height() - 2 )
180 yp = height() - 2; 180 yp = height() - 2;
181 181
182 QPainter painter; 182 QPainter painter;
183 painter.begin( this ); 183 painter.begin( this );
184 184
185 bitBlt( this, px - STORE_W, py - STORE_W, &store, 0, 0, 185 bitBlt( this, px - STORE_W, py - STORE_W, &store, 0, 0,
186 STORE_W2, STORE_W2, CopyROP ); 186 STORE_W2, STORE_W2, CopyROP );
187 bitBlt( &store, 0, 0, this, xp - STORE_W, yp - STORE_W, 187 bitBlt( &store, 0, 0, this, xp - STORE_W, yp - STORE_W,
188 STORE_W2, STORE_W2, CopyROP ); 188 STORE_W2, STORE_W2, CopyROP );
189 drawCursor( &painter, xp, yp ); 189 drawCursor( &painter, xp, yp );
190 px = xp; 190 px = xp;
191 py = yp; 191 py = yp;
192 192
193 painter.end(); 193 painter.end();
194} 194}
195 195
196void OXYSelector::drawContents( QPainter * ) 196void OXYSelector::drawContents( QPainter * )
197{} 197{}
198 198
199 199
200void OXYSelector::drawCursor( QPainter *p, int xp, int yp ) 200void OXYSelector::drawCursor( QPainter *p, int xp, int yp )
201{ 201{
202 p->setPen( QPen( white ) ); 202 p->setPen( QPen( white ) );
203 203
204 p->drawLine( xp - 6, yp - 6, xp - 2, yp - 2 ); 204 p->drawLine( xp - 6, yp - 6, xp - 2, yp - 2 );
205 p->drawLine( xp - 6, yp + 6, xp - 2, yp + 2 ); 205 p->drawLine( xp - 6, yp + 6, xp - 2, yp + 2 );
206 p->drawLine( xp + 6, yp - 6, xp + 2, yp - 2 ); 206 p->drawLine( xp + 6, yp - 6, xp + 2, yp - 2 );
207 p->drawLine( xp + 6, yp + 6, xp + 2, yp + 2 ); 207 p->drawLine( xp + 6, yp + 6, xp + 2, yp + 2 );
208} 208}
209 209
210//----------------------------------------------------------------------------- 210//-----------------------------------------------------------------------------
211/* 211/*
212 * 1D value selector with contents drawn by derived class. 212 * 1D value selector with contents drawn by derived class.
213 * See OColorDialog for example. 213 * See OColorDialog for example.
214 */ 214 */
215 215
216 216
217OSelector::OSelector( QWidget *parent, const char *name ) 217OSelector::OSelector( QWidget *parent, const char *name )
218 : QWidget( parent, name ), QRangeControl() 218 : QWidget( parent, name ), QRangeControl()
219{ 219{
220 _orientation = Horizontal; 220 _orientation = Horizontal;
221 _indent = TRUE; 221 _indent = TRUE;
222} 222}
223 223
224OSelector::OSelector( Orientation o, QWidget *parent, const char *name ) 224OSelector::OSelector( Orientation o, QWidget *parent, const char *name )
225 : QWidget( parent, name ), QRangeControl() 225 : QWidget( parent, name ), QRangeControl()
226{ 226{
227 _orientation = o; 227 _orientation = o;
228 _indent = TRUE; 228 _indent = TRUE;
229} 229}
230 230
231 231
232OSelector::~OSelector() 232OSelector::~OSelector()
233{} 233{}
234 234
235 235
236QRect OSelector::contentsRect() const 236QRect OSelector::contentsRect() const
237{ 237{
238 if ( orientation() == Vertical ) 238 if ( orientation() == Vertical )
239 return QRect( 2, 5, width()-9, height()-10 ); 239 return QRect( 2, 5, width()-9, height()-10 );
240 else 240 else
241 return QRect( 5, 2, width()-10, height()-9 ); 241 return QRect( 5, 2, width()-10, height()-9 );
242} 242}
243 243
244void OSelector::paintEvent( QPaintEvent * ) 244void OSelector::paintEvent( QPaintEvent * )
245{ 245{
246 QPainter painter; 246 QPainter painter;
247 247
248 painter.begin( this ); 248 painter.begin( this );
249 249
250 drawContents( &painter ); 250 drawContents( &painter );
251 251
252 QBrush brush; 252 QBrush brush;
253 253
254 if ( indent() ) 254 if ( indent() )
255 { 255 {
256 if ( orientation() == Vertical ) 256 if ( orientation() == Vertical )
257 qDrawShadePanel( &painter, 0, 3, width()-5, height()-6, 257 qDrawShadePanel( &painter, 0, 3, width()-5, height()-6,
258 colorGroup(), TRUE, 2, &brush ); 258 colorGroup(), TRUE, 2, &brush );
259 else 259 else
260 qDrawShadePanel( &painter, 3, 0, width()-6, height()-5, 260 qDrawShadePanel( &painter, 3, 0, width()-6, height()-5,
261 colorGroup(), TRUE, 2, &brush ); 261 colorGroup(), TRUE, 2, &brush );
262 } 262 }
263 263
264 QPoint pos = calcArrowPos( value() ); 264 QPoint pos = calcArrowPos( value() );
265 drawArrow( &painter, TRUE, pos ); 265 drawArrow( &painter, TRUE, pos );
266 266
267 painter.end(); 267 painter.end();
268} 268}
269 269
270void OSelector::mousePressEvent( QMouseEvent *e ) 270void OSelector::mousePressEvent( QMouseEvent *e )
271{ 271{
272 moveArrow( e->pos() ); 272 moveArrow( e->pos() );
273} 273}
274 274
275void OSelector::mouseMoveEvent( QMouseEvent *e ) 275void OSelector::mouseMoveEvent( QMouseEvent *e )
276{ 276{
277 moveArrow( e->pos() ); 277 moveArrow( e->pos() );
278} 278}
279 279
280void OSelector::wheelEvent( QWheelEvent *e ) 280void OSelector::wheelEvent( QWheelEvent *e )
281{ 281{
282 int val = value() + e->delta()/120; 282 int val = value() + e->delta()/120;
283 emit valueChanged( val ); 283 emit valueChanged( val );
284 setValue( val ); 284 setValue( val );
285} 285}
286 286
287void OSelector::valueChange() 287void OSelector::valueChange()
288{ 288{
289 QPainter painter; 289 QPainter painter;
290 QPoint pos; 290 QPoint pos;
291 291
292 painter.begin( this ); 292 painter.begin( this );
293 293
294 pos = calcArrowPos( prevValue() ); 294 pos = calcArrowPos( prevValue() );
295 drawArrow( &painter, FALSE, pos ); 295 drawArrow( &painter, FALSE, pos );
296 296
297 pos = calcArrowPos( value() ); 297 pos = calcArrowPos( value() );
298 drawArrow( &painter, TRUE, pos ); 298 drawArrow( &painter, TRUE, pos );
299 299
300 painter.end(); 300 painter.end();
301} 301}
302 302
303void OSelector::moveArrow( const QPoint &pos ) 303void OSelector::moveArrow( const QPoint &pos )
304{ 304{
305 int val; 305 int val;
306 306
307 if ( orientation() == Vertical ) 307 if ( orientation() == Vertical )
308 val = ( maxValue() - minValue() ) * (height()-pos.y()-3) 308 val = ( maxValue() - minValue() ) * (height()-pos.y()-3)
309 / (height()-10) + minValue(); 309 / (height()-10) + minValue();
310 else 310 else
311 val = ( maxValue() - minValue() ) * (width()-pos.x()-3) 311 val = ( maxValue() - minValue() ) * (width()-pos.x()-3)
312 / (width()-10) + minValue(); 312 / (width()-10) + minValue();
313 313
314 if ( val > maxValue() ) 314 if ( val > maxValue() )
315 val = maxValue(); 315 val = maxValue();
316 if ( val < minValue() ) 316 if ( val < minValue() )
317 val = minValue(); 317 val = minValue();
318 318
319 emit valueChanged( val ); 319 emit valueChanged( val );
320 setValue( val ); 320 setValue( val );
321} 321}
322 322
323QPoint OSelector::calcArrowPos( int val ) 323QPoint OSelector::calcArrowPos( int val )
324{ 324{
325 QPoint p; 325 QPoint p;
326 326
327 if ( orientation() == Vertical ) 327 if ( orientation() == Vertical )
328 { 328 {
329 p.setY( height() - ( (height()-10) * val 329 p.setY( height() - ( (height()-10) * val
330 / ( maxValue() - minValue() ) + 5 ) ); 330 / ( maxValue() - minValue() ) + 5 ) );
331 p.setX( width() - 5 ); 331 p.setX( width() - 5 );
332 } 332 }
333 else 333 else
334 { 334 {
diff --git a/libopie2/opieui/oselector.h b/libopie2/opieui/oselector.h
index fe75a46..3dbdb38 100644
--- a/libopie2/opieui/oselector.h
+++ b/libopie2/opieui/oselector.h
@@ -19,400 +19,400 @@
19//----------------------------------------------------------------------------- 19//-----------------------------------------------------------------------------
20// Selector widgets for KDE Color Selector, but probably useful for other 20// Selector widgets for KDE Color Selector, but probably useful for other
21// stuff also. 21// stuff also.
22 22
23#ifndef __OSELECT_H__ 23#ifndef __OSELECT_H__
24#define __OSELECT_H__ 24#define __OSELECT_H__
25 25
26#include <qwidget.h> 26#include <qwidget.h>
27#include <qrangecontrol.h> 27#include <qrangecontrol.h>
28#include <qpixmap.h> 28#include <qpixmap.h>
29 29
30 30
31namespace Opie { 31namespace Opie {
32namespace Ui { 32namespace Ui {
33/** 33/**
34 * OXYSelector is the base class for other widgets which 34 * OXYSelector is the base class for other widgets which
35 * provides the ability to choose from a two-dimensional 35 * provides the ability to choose from a two-dimensional
36 * range of values. The currently chosen value is indicated 36 * range of values. The currently chosen value is indicated
37 * by a cross. An example is the @ref OHSSelector which 37 * by a cross. An example is the @ref OHSSelector which
38 * allows to choose from a range of colors, and which is 38 * allows to choose from a range of colors, and which is
39 * used in OColorDialog. 39 * used in OColorDialog.
40 * 40 *
41 * A custom drawing routine for the widget surface has 41 * A custom drawing routine for the widget surface has
42 * to be provided by the subclass. 42 * to be provided by the subclass.
43 */ 43 */
44class OXYSelector : public QWidget 44class OXYSelector : public QWidget
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47 47
48public: 48public:
49 /** 49 /**
50 * Constructs a two-dimensional selector widget which 50 * Constructs a two-dimensional selector widget which
51 * has a value range of [0..100] in both directions. 51 * has a value range of [0..100] in both directions.
52 */ 52 */
53 OXYSelector( QWidget *parent=0, const char *name=0 ); 53 OXYSelector( QWidget *parent=0, const char *name=0 );
54 /** 54 /**
55 * Destructs the widget. 55 * Destructs the widget.
56 */ 56 */
57 ~OXYSelector(); 57 ~OXYSelector();
58 58
59 /** 59 /**
60 * Sets the current values in horizontal and 60 * Sets the current values in horizontal and
61 * vertical direction. 61 * vertical direction.
62 */ 62 */
63 void setValues( int xPos, int yPos ); 63 void setValues( int xPos, int yPos );
64 /** 64 /**
65 * Sets the range of possible values. 65 * Sets the range of possible values.
66 */ 66 */
67 void setRange( int minX, int minY, int maxX, int maxY ); 67 void setRange( int minX, int minY, int maxX, int maxY );
68 68
69 /** 69 /**
70 * @return the current value in horizontal direction. 70 * @return the current value in horizontal direction.
71 */ 71 */
72 int xValue() const {return xPos; } 72 int xValue() const {return xPos; }
73 /** 73 /**
74 * @return the current value in vertical direction. 74 * @return the current value in vertical direction.
75 */ 75 */
76 int yValue() const {return yPos; } 76 int yValue() const {return yPos; }
77 77
78 /** 78 /**
79 * @return the rectangle on which subclasses should draw. 79 * @return the rectangle on which subclasses should draw.
80 */ 80 */
81 QRect contentsRect() const; 81 QRect contentsRect() const;
82 82
83signals: 83signals:
84 /** 84 /**
85 * This signal is emitted whenever the user chooses a value, 85 * This signal is emitted whenever the user chooses a value,
86 * e.g. by clicking with the mouse on the widget. 86 * e.g. by clicking with the mouse on the widget.
87 */ 87 */
88 void valueChanged( int x, int y ); 88 void valueChanged( int x, int y );
89 89
90protected: 90protected:
91 /** 91 /**
92 * Override this function to draw the contents of the widget. 92 * Override this function to draw the contents of the widget.
93 * The default implementation does nothing. 93 * The default implementation does nothing.
94 * 94 *
95 * Draw within @ref contentsRect() only. 95 * Draw within @ref contentsRect() only.
96 */ 96 */
97 virtual void drawContents( QPainter * ); 97 virtual void drawContents( QPainter * );
98 /** 98 /**
99 * Override this function to draw the cursor which 99 * Override this function to draw the cursor which
100 * indicates the currently selected value pair. 100 * indicates the currently selected value pair.
101 */ 101 */
102 virtual void drawCursor( QPainter *p, int xp, int yp ); 102 virtual void drawCursor( QPainter *p, int xp, int yp );
103 /** 103 /**
104 * @reimplemented 104 * @reimplemented
105 */ 105 */
106 virtual void paintEvent( QPaintEvent *e ); 106 virtual void paintEvent( QPaintEvent *e );
107 /** 107 /**
108 * @reimplemented 108 * @reimplemented
109 */ 109 */
110 virtual void mousePressEvent( QMouseEvent *e ); 110 virtual void mousePressEvent( QMouseEvent *e );
111 /** 111 /**
112 * @reimplemented 112 * @reimplemented
113 */ 113 */
114 virtual void mouseMoveEvent( QMouseEvent *e ); 114 virtual void mouseMoveEvent( QMouseEvent *e );
115 /** 115 /**
116 * @reimplemented 116 * @reimplemented
117 */ 117 */
118 virtual void wheelEvent( QWheelEvent * ); 118 virtual void wheelEvent( QWheelEvent * );
119 /** 119 /**
120 * Converts a pixel position to its corresponding values. 120 * Converts a pixel position to its corresponding values.
121 */ 121 */
122 void valuesFromPosition( int x, int y, int& xVal, int& yVal ) const; 122 void valuesFromPosition( int x, int y, int& xVal, int& yVal ) const;
123 123
124private: 124private:
125 void setPosition( int xp, int yp ); 125 void setPosition( int xp, int yp );
126 int px; 126 int px;
127 int py; 127 int py;
128 int xPos; 128 int xPos;
129 int yPos; 129 int yPos;
130 int minX; 130 int minX;
131 int maxX; 131 int maxX;
132 int minY; 132 int minY;
133 int maxY; 133 int maxY;
134 QPixmap store; 134 QPixmap store;
135 135
136private: 136private:
137 class OXYSelectorPrivate; 137 class OXYSelectorPrivate;
138 OXYSelectorPrivate *d; 138 OXYSelectorPrivate *d;
139}; 139};
140 140
141 141
142/** 142/**
143 * OSelector is the base class for other widgets which 143 * OSelector is the base class for other widgets which
144 * provides the ability to choose from a one-dimensional 144 * provides the ability to choose from a one-dimensional
145 * range of values. An example is the @ref OGradientSelector 145 * range of values. An example is the @ref OGradientSelector
146 * which allows to choose from a range of colors. 146 * which allows to choose from a range of colors.
147 * 147 *
148 * A custom drawing routine for the widget surface has 148 * A custom drawing routine for the widget surface has
149 * to be provided by the subclass. 149 * to be provided by the subclass.
150 */ 150 */
151class OSelector : public QWidget, public QRangeControl 151class OSelector : public QWidget, public QRangeControl
152{ 152{
153 Q_OBJECT 153 Q_OBJECT
154 Q_PROPERTY( int value READ value WRITE setValue ) 154 Q_PROPERTY( int value READ value WRITE setValue )
155 Q_PROPERTY( int minValue READ minValue WRITE setMinValue ) 155 Q_PROPERTY( int minValue READ minValue WRITE setMinValue )
156 Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue ) 156 Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue )
157public: 157public:
158 158
159 /** 159 /**
160 * Constructs a horizontal one-dimensional selection widget. 160 * Constructs a horizontal one-dimensional selection widget.
161 */ 161 */
162 OSelector( QWidget *parent=0, const char *name=0 ); 162 OSelector( QWidget *parent=0, const char *name=0 );
163 /** 163 /**
164 * Constructs a one-dimensional selection widget with 164 * Constructs a one-dimensional selection widget with
165 * a given orientation. 165 * a given orientation.
166 */ 166 */
167 OSelector( Orientation o, QWidget *parent = 0L, const char *name = 0L ); 167 OSelector( Orientation o, QWidget *parent = 0L, const char *name = 0L );
168 /* 168 /*
169 * Destructs the widget. 169 * Destructs the widget.
170 */ 170 */
171 ~OSelector(); 171 ~OSelector();
172 172
173 /** 173 /**
174 * @return the orientation of the widget. 174 * @return the orientation of the widget.
175 */ 175 */
176 Orientation orientation() const 176 Orientation orientation() const
177 {return _orientation; } 177 {return _orientation; }
178 178
179 /** 179 /**
180 * @return the rectangle on which subclasses should draw. 180 * @return the rectangle on which subclasses should draw.
181 */ 181 */
182 QRect contentsRect() const; 182 QRect contentsRect() const;
183 183
184 /** 184 /**
185 * Sets the indent option of the widget to i. 185 * Sets the indent option of the widget to i.
186 * This determines whether a shaded frame is drawn. 186 * This determines whether a shaded frame is drawn.
187 */ 187 */
188 void setIndent( bool i ) 188 void setIndent( bool i )
189 {_indent = i; } 189 {_indent = i; }
190 /** 190 /**
191 * @return whether the indent option is set. 191 * @return whether the indent option is set.
192 */ 192 */
193 bool indent() const 193 bool indent() const
194 {return _indent; } 194 {return _indent; }
195 195
196 /** 196 /**
197 * Sets the value. 197 * Sets the value.
198 */ 198 */
199 void setValue(int value) 199 void setValue(int value)
200 { QRangeControl::setValue(value); } 200 { QRangeControl::setValue(value); }
201 201
202 /** 202 /**
203 * @returns the value. 203 * @returns the value.
204 */ 204 */
205 int value() const 205 int value() const
206 { return QRangeControl::value(); } 206 { return QRangeControl::value(); }
207 207
208 /** 208 /**
209 * Sets the min value. 209 * Sets the min value.
210 */ 210 */
211 #if ( QT_VERSION > 290 ) 211 #if ( QT_VERSION >= 0x030000 )
212 void setMinValue(int value) { QRangeControl::setMinValue(value); } 212 void setMinValue(int value) { QRangeControl::setMinValue(value); }
213 #else 213 #else
214 void setMinValue(int value) { QRangeControl::setRange(value,QRangeControl::maxValue()); } 214 void setMinValue(int value) { QRangeControl::setRange(value,QRangeControl::maxValue()); }
215 #endif 215 #endif
216 216
217 /** 217 /**
218 * @return the min value. 218 * @return the min value.
219 */ 219 */
220 int minValue() const 220 int minValue() const
221 { return QRangeControl::minValue(); } 221 { return QRangeControl::minValue(); }
222 222
223 /** 223 /**
224 * Sets the max value. 224 * Sets the max value.
225 */ 225 */
226 #if ( QT_VERSION > 290 ) 226 #if ( QT_VERSION >= 0x030000 )
227 void setMaxValue(int value) { QRangeControl::setMaxValue(value); } 227 void setMaxValue(int value) { QRangeControl::setMaxValue(value); }
228 #else 228 #else
229 void setMaxValue(int value) { QRangeControl::setRange(QRangeControl::minValue(),value); } 229 void setMaxValue(int value) { QRangeControl::setRange(QRangeControl::minValue(),value); }
230 #endif 230 #endif
231 231
232 /** 232 /**
233 * @return the max value. 233 * @return the max value.
234 */ 234 */
235 int maxValue() const 235 int maxValue() const
236 { return QRangeControl::maxValue(); } 236 { return QRangeControl::maxValue(); }
237 237
238signals: 238signals:
239 /** 239 /**
240 * This signal is emitted whenever the user chooses a value, 240 * This signal is emitted whenever the user chooses a value,
241 * e.g. by clicking with the mouse on the widget. 241 * e.g. by clicking with the mouse on the widget.
242 */ 242 */
243 void valueChanged( int value ); 243 void valueChanged( int value );
244 244
245protected: 245protected:
246 /** 246 /**
247 * Override this function to draw the contents of the control. 247 * Override this function to draw the contents of the control.
248 * The default implementation does nothing. 248 * The default implementation does nothing.
249 * 249 *
250 * Draw only within contentsRect(). 250 * Draw only within contentsRect().
251 */ 251 */
252 virtual void drawContents( QPainter * ); 252 virtual void drawContents( QPainter * );
253 /** 253 /**
254 * Override this function to draw the cursor which 254 * Override this function to draw the cursor which
255 * indicates the current value. This function is 255 * indicates the current value. This function is
256 * always called twice, once with argument show=false 256 * always called twice, once with argument show=false
257 * to clear the old cursor, once with argument show=true 257 * to clear the old cursor, once with argument show=true
258 * to draw the new one. 258 * to draw the new one.
259 */ 259 */
260 virtual void drawArrow( QPainter *painter, bool show, const QPoint &pos ); 260 virtual void drawArrow( QPainter *painter, bool show, const QPoint &pos );
261 261
262 /** 262 /**
263 * @reimplemented 263 * @reimplemented
264 */ 264 */
265 virtual void valueChange(); 265 virtual void valueChange();
266 /** 266 /**
267 * @reimplemented 267 * @reimplemented
268 */ 268 */
269 virtual void paintEvent( QPaintEvent * ); 269 virtual void paintEvent( QPaintEvent * );
270 /** 270 /**
271 * @reimplemented 271 * @reimplemented
272 */ 272 */
273 virtual void mousePressEvent( QMouseEvent *e ); 273 virtual void mousePressEvent( QMouseEvent *e );
274 /** 274 /**
275 * @reimplemented 275 * @reimplemented
276 */ 276 */
277 virtual void mouseMoveEvent( QMouseEvent *e ); 277 virtual void mouseMoveEvent( QMouseEvent *e );
278 /** 278 /**
279 * @reimplemented 279 * @reimplemented
280 */ 280 */
281 virtual void wheelEvent( QWheelEvent * ); 281 virtual void wheelEvent( QWheelEvent * );
282 282
283private: 283private:
284 QPoint calcArrowPos( int val ); 284 QPoint calcArrowPos( int val );
285 void moveArrow( const QPoint &pos ); 285 void moveArrow( const QPoint &pos );
286 286
287 Orientation _orientation; 287 Orientation _orientation;
288 bool _indent; 288 bool _indent;
289 289
290private: 290private:
291 class OSelectorPrivate; 291 class OSelectorPrivate;
292 OSelectorPrivate *d; 292 OSelectorPrivate *d;
293}; 293};
294 294
295 295
296/** 296/**
297 * The OGradientSelector widget allows the user to choose 297 * The OGradientSelector widget allows the user to choose
298 * from a one-dimensional range of colors which is given as a 298 * from a one-dimensional range of colors which is given as a
299 * gradient between two colors provided by the programmer. 299 * gradient between two colors provided by the programmer.
300 */ 300 */
301class OGradientSelector : public OSelector 301class OGradientSelector : public OSelector
302{ 302{
303 Q_OBJECT 303 Q_OBJECT
304 304
305 Q_PROPERTY( QColor firstColor READ firstColor WRITE setFirstColor ) 305 Q_PROPERTY( QColor firstColor READ firstColor WRITE setFirstColor )
306 Q_PROPERTY( QColor secondColor READ secondColor WRITE setSecondColor ) 306 Q_PROPERTY( QColor secondColor READ secondColor WRITE setSecondColor )
307 Q_PROPERTY( QString firstText READ firstText WRITE setFirstText ) 307 Q_PROPERTY( QString firstText READ firstText WRITE setFirstText )
308 Q_PROPERTY( QString secondText READ secondText WRITE setSecondText ) 308 Q_PROPERTY( QString secondText READ secondText WRITE setSecondText )
309 309
310public: 310public:
311 /** 311 /**
312 * Constructs a horizontal color selector which 312 * Constructs a horizontal color selector which
313 * contains a gradient between white and black. 313 * contains a gradient between white and black.
314 */ 314 */
315 OGradientSelector( QWidget *parent=0, const char *name=0 ); 315 OGradientSelector( QWidget *parent=0, const char *name=0 );
316 /** 316 /**
317 * Constructs a colors selector with orientation o which 317 * Constructs a colors selector with orientation o which
318 * contains a gradient between white and black. 318 * contains a gradient between white and black.
319 */ 319 */
320 OGradientSelector( Orientation o, QWidget *parent=0, const char *name=0 ); 320 OGradientSelector( Orientation o, QWidget *parent=0, const char *name=0 );
321 /** 321 /**
322 * Destructs the widget. 322 * Destructs the widget.
323 */ 323 */
324 ~OGradientSelector(); 324 ~OGradientSelector();
325 /** 325 /**
326 * Sets the two colors which span the gradient. 326 * Sets the two colors which span the gradient.
327 */ 327 */
328 void setColors( const QColor &col1, const QColor &col2 ) 328 void setColors( const QColor &col1, const QColor &col2 )
329 {color1 = col1; color2 = col2; update();} 329 {color1 = col1; color2 = col2; update();}
330 void setText( const QString &t1, const QString &t2 ) 330 void setText( const QString &t1, const QString &t2 )
331 {text1 = t1; text2 = t2; update(); } 331 {text1 = t1; text2 = t2; update(); }
332 332
333 /** 333 /**
334 * Set each color on its own. 334 * Set each color on its own.
335 */ 335 */
336 void setFirstColor( const QColor &col ) 336 void setFirstColor( const QColor &col )
337 { color1 = col; update(); } 337 { color1 = col; update(); }
338 void setSecondColor( const QColor &col ) 338 void setSecondColor( const QColor &col )
339 { color2 = col; update(); } 339 { color2 = col; update(); }
340 340
341 /** 341 /**
342 * Set each description on its own 342 * Set each description on its own
343 */ 343 */
344 void setFirstText( const QString &t ) 344 void setFirstText( const QString &t )
345 { text1 = t; update(); } 345 { text1 = t; update(); }
346 void setSecondText( const QString &t ) 346 void setSecondText( const QString &t )
347 { text2 = t; update(); } 347 { text2 = t; update(); }
348 348
349 const QColor firstColor() const 349 const QColor firstColor() const
350 { return color1; } 350 { return color1; }
351 const QColor secondColor() const 351 const QColor secondColor() const
352 { return color2; } 352 { return color2; }
353 353
354 const QString firstText() const 354 const QString firstText() const
355 { return text1; } 355 { return text1; }
356 const QString secondText() const 356 const QString secondText() const
357 { return text2; } 357 { return text2; }
358 358
359protected: 359protected:
360 /** 360 /**
361 * @reimplemented 361 * @reimplemented
362 */ 362 */
363 virtual void drawContents( QPainter * ); 363 virtual void drawContents( QPainter * );
364 364
365 /** 365 /**
366 * @reimplemented 366 * @reimplemented
367 */ 367 */
368 virtual QSize minimumSize() const 368 virtual QSize minimumSize() const
369 { return sizeHint(); } 369 { return sizeHint(); }
370 370
371private: 371private:
372 void init(); 372 void init();
373 QColor color1; 373 QColor color1;
374 QColor color2; 374 QColor color2;
375 QString text1; 375 QString text1;
376 QString text2; 376 QString text2;
377 377
378private: 378private:
379 class OGradientSelectorPrivate; 379 class OGradientSelectorPrivate;
380 OGradientSelectorPrivate *d; 380 OGradientSelectorPrivate *d;
381}; 381};
382 382
383/** 383/**
384 * Widget for Hue/Saturation selection. 384 * Widget for Hue/Saturation selection.
385 * The actual values can be fetched using the inherited xValue and yValue 385 * The actual values can be fetched using the inherited xValue and yValue
386 * methods. 386 * methods.
387 * 387 *
388 * @see OXYSelector, OValueSelector, OColorDialog 388 * @see OXYSelector, OValueSelector, OColorDialog
389 * @author Martin Jones (mjones@kde.org) 389 * @author Martin Jones (mjones@kde.org)
390 * @version $Id$ 390 * @version $Id$
391*/ 391*/
392class OHSSelector : public OXYSelector 392class OHSSelector : public OXYSelector
393{ 393{
394 Q_OBJECT 394 Q_OBJECT
395 395
396public: 396public:
397 /** 397 /**
398 * Constructs a hue/saturation selection widget. 398 * Constructs a hue/saturation selection widget.
399 */ 399 */
400 OHSSelector( QWidget *parent=0, const char *name=0 ); 400 OHSSelector( QWidget *parent=0, const char *name=0 );
401 401
402protected: 402protected:
403 /** 403 /**
404 * Draws the contents of the widget on a pixmap, 404 * Draws the contents of the widget on a pixmap,
405 * which is used for buffering. 405 * which is used for buffering.
406 */ 406 */
407 virtual void drawPalette( QPixmap *pixmap ); 407 virtual void drawPalette( QPixmap *pixmap );
408 /** 408 /**
409 * @reimplemented 409 * @reimplemented
410 */ 410 */
411 virtual void resizeEvent( QResizeEvent * ); 411 virtual void resizeEvent( QResizeEvent * );
412 /** 412 /**
413 * Reimplemented from OXYSelector. This drawing is 413 * Reimplemented from OXYSelector. This drawing is
414 * buffered in a pixmap here. As real drawing 414 * buffered in a pixmap here. As real drawing
415 * routine, drawPalette() is used. 415 * routine, drawPalette() is used.
416 */ 416 */
417 virtual void drawContents( QPainter *painter ); 417 virtual void drawContents( QPainter *painter );
418 418