-rw-r--r-- | libopie2/opieui/big-screen/owidgetstack.cpp | 2 | ||||
-rw-r--r-- | libopie2/opieui/ofontselector.cpp | 1 | ||||
-rw-r--r-- | libopie2/opieui/olistview.cpp | 20 | ||||
-rw-r--r-- | libopie2/opieui/oselector.cpp | 2 | ||||
-rw-r--r-- | libopie2/opieui/owait.cpp | 1 |
5 files changed, 17 insertions, 9 deletions
diff --git a/libopie2/opieui/big-screen/owidgetstack.cpp b/libopie2/opieui/big-screen/owidgetstack.cpp index de7f83f..9c9f7ec 100644 --- a/libopie2/opieui/big-screen/owidgetstack.cpp +++ b/libopie2/opieui/big-screen/owidgetstack.cpp | |||
@@ -249,193 +249,193 @@ QWidget* OWidgetStack::visibleWidget()const { | |||
249 | return m_mWidget; | 249 | return m_mWidget; |
250 | 250 | ||
251 | } | 251 | } |
252 | 252 | ||
253 | /** | 253 | /** |
254 | * This method raises the widget wit the specefic id. | 254 | * This method raises the widget wit the specefic id. |
255 | * Note that in BigScreen mode the widget is made visible | 255 | * Note that in BigScreen mode the widget is made visible |
256 | * but the other ( previous) visible widget(s) will not | 256 | * but the other ( previous) visible widget(s) will not |
257 | * be made invisible. If you need this use hideWidget(). | 257 | * be made invisible. If you need this use hideWidget(). |
258 | * | 258 | * |
259 | * @param id Raise the widget with id | 259 | * @param id Raise the widget with id |
260 | */ | 260 | */ |
261 | void OWidgetStack::raiseWidget( int id) { | 261 | void OWidgetStack::raiseWidget( int id) { |
262 | return raiseWidget( widget( id ) ); | 262 | return raiseWidget( widget( id ) ); |
263 | } | 263 | } |
264 | 264 | ||
265 | /** | 265 | /** |
266 | * This is an overloaded function and only differs in its parameters. | 266 | * This is an overloaded function and only differs in its parameters. |
267 | * @see raiseWidget( int ) | 267 | * @see raiseWidget( int ) |
268 | */ | 268 | */ |
269 | void OWidgetStack::raiseWidget( QWidget* wid) { | 269 | void OWidgetStack::raiseWidget( QWidget* wid) { |
270 | m_last = wid; | 270 | m_last = wid; |
271 | if (m_mode == SmallScreen ) | 271 | if (m_mode == SmallScreen ) |
272 | m_stack->raiseWidget( wid ); | 272 | m_stack->raiseWidget( wid ); |
273 | else { | 273 | else { |
274 | int ide; | 274 | int ide; |
275 | emit aboutToShow( wid ); | 275 | emit aboutToShow( wid ); |
276 | /* if someone is connected and the widget is actually available */ | 276 | /* if someone is connected and the widget is actually available */ |
277 | if ( receivers( SIGNAL(aboutToShow(int) ) ) && | 277 | if ( receivers( SIGNAL(aboutToShow(int) ) ) && |
278 | ( (ide = id( wid ) ) != -1 ) ) | 278 | ( (ide = id( wid ) ) != -1 ) ) |
279 | emit aboutToShow( ide ); | 279 | emit aboutToShow( ide ); |
280 | 280 | ||
281 | /* ### FIXME PLACE THE WIDGET right */ | 281 | /* ### FIXME PLACE THE WIDGET right */ |
282 | wid->show(); | 282 | wid->show(); |
283 | } | 283 | } |
284 | } | 284 | } |
285 | 285 | ||
286 | /** | 286 | /** |
287 | * This will hide the currently visible widget | 287 | * This will hide the currently visible widget |
288 | * and raise the widget specified by the parameter. | 288 | * and raise the widget specified by the parameter. |
289 | * Note that this method does not use visibleWIdget but remembers | 289 | * Note that this method does not use visibleWIdget but remembers |
290 | * the last raisedWidget | 290 | * the last raisedWidget |
291 | */ | 291 | */ |
292 | void OWidgetStack::hideWidget( int id) { | 292 | void OWidgetStack::hideWidget( int id) { |
293 | /* hiding our main widget wouldn't be smart */ | 293 | /* hiding our main widget wouldn't be smart */ |
294 | if ( m_mode == BigScreen && m_last != m_mWidget ) | 294 | if ( m_mode == BigScreen && m_last != m_mWidget ) |
295 | m_last->hide(); | 295 | m_last->hide(); |
296 | raiseWidget( id ); | 296 | raiseWidget( id ); |
297 | } | 297 | } |
298 | 298 | ||
299 | /** | 299 | /** |
300 | * This is overloaded and only differs in the parameters | 300 | * This is overloaded and only differs in the parameters |
301 | * it takes. | 301 | * it takes. |
302 | */ | 302 | */ |
303 | void OWidgetStack::hideWidget( QWidget* wid) { | 303 | void OWidgetStack::hideWidget( QWidget* wid) { |
304 | /* still not smart */ | 304 | /* still not smart */ |
305 | if ( m_mode == BigScreen && m_last != m_mWidget ) | 305 | if ( m_mode == BigScreen && m_last != m_mWidget ) |
306 | m_last->hide(); | 306 | m_last->hide(); |
307 | 307 | ||
308 | raiseWidget( wid ); | 308 | raiseWidget( wid ); |
309 | } | 309 | } |
310 | 310 | ||
311 | 311 | ||
312 | bool OWidgetStack::eventFilter( QObject* obj, QEvent* e) { | 312 | bool OWidgetStack::eventFilter( QObject* obj, QEvent* e) { |
313 | owarn << " " << obj->name() << " " << obj->className() << "" << oendl; | 313 | owarn << " " << obj->name() << " " << obj->className() << "" << oendl; |
314 | if ( e->type() == QEvent::Resize ) { | 314 | if ( e->type() == QEvent::Resize ) { |
315 | QResizeEvent *res = static_cast<QResizeEvent*>( e ); | 315 | QResizeEvent *res = static_cast<QResizeEvent*>( e ); |
316 | QSize size = res->size(); | 316 | QSize size = res->size(); |
317 | if ( size.width() >= mode_size ) | 317 | if ( size.width() >= mode_size ) |
318 | switchTop(); | 318 | switchTop(); |
319 | else | 319 | else |
320 | switchStack(); | 320 | switchStack(); |
321 | } | 321 | } |
322 | return false; | 322 | return false; |
323 | } | 323 | } |
324 | 324 | ||
325 | 325 | ||
326 | /** | 326 | /** |
327 | * @internal_resons | 327 | * @internal_resons |
328 | */ | 328 | */ |
329 | void OWidgetStack::resizeEvent( QResizeEvent* ev ) { | 329 | void OWidgetStack::resizeEvent( QResizeEvent* ev ) { |
330 | QFrame::resizeEvent( ev ); | 330 | QFrame::resizeEvent( ev ); |
331 | if (m_mode == SmallScreen ) | 331 | if (m_mode == SmallScreen ) |
332 | m_stack->setGeometry( frameRect() ); | 332 | m_stack->setGeometry( frameRect() ); |
333 | else | 333 | else |
334 | if (m_mWidget ) | 334 | if (m_mWidget ) |
335 | m_mWidget->setGeometry( frameRect() ); | 335 | m_mWidget->setGeometry( frameRect() ); |
336 | 336 | ||
337 | } | 337 | } |
338 | 338 | ||
339 | /** | 339 | /** |
340 | * setMainWindow gives the OWidgetStack a hint which | 340 | * setMainWindow gives the OWidgetStack a hint which |
341 | * window should always stay inside the stack. | 341 | * window should always stay inside the stack. |
342 | * Normally the first added widget is considered to be | 342 | * Normally the first added widget is considered to be |
343 | * the mainwindow but you can change this with this | 343 | * the mainwindow but you can change this with this |
344 | * function. | 344 | * function. |
345 | * If in BigScreen mode the current mainwindow will be reparented | 345 | * If in BigScreen mode the current mainwindow will be reparented |
346 | * and hidden. The position will be taken by the new one. | 346 | * and hidden. The position will be taken by the new one. |
347 | * If the old MainWindow was hidden the new window will | 347 | * If the old MainWindow was hidden the new window will |
348 | * also be hidden. If the window was visible the new mainwindow | 348 | * also be hidden. If the window was visible the new mainwindow |
349 | * will be made visible too and the old one hidden. If there | 349 | * will be made visible too and the old one hidden. If there |
350 | * was no mainwindow it will be hidden as well. | 350 | * was no mainwindow it will be hidden as well. |
351 | * | 351 | * |
352 | * @param wid The new mainwindow | 352 | * @param wid The new mainwindow |
353 | */ | 353 | */ |
354 | void OWidgetStack::setMainWindow( QWidget* wid ) { | 354 | void OWidgetStack::setMainWindow( QWidget* wid ) { |
355 | if (m_mode == BigScreen ) { | 355 | if (m_mode == BigScreen ) { |
356 | bool wasVisible = false; | 356 | bool wasVisible = false; |
357 | if (m_mWidget ) { | 357 | if (m_mWidget ) { |
358 | wasVisible = !m_mWidget->isHidden(); | 358 | wasVisible = !m_mWidget->isHidden(); |
359 | /* hidden by default */ | 359 | /* hidden by default */ |
360 | m_mWidget->reparent(0, WType_TopLevel, QPoint(10, 10) ); | 360 | m_mWidget->reparent(0, WType_TopLevel, QPoint(10, 10) ); |
361 | } | 361 | } |
362 | wid->reparent(this, 0, frameRect().topLeft() ); | 362 | wid->reparent(this, 0, frameRect().topLeft() ); |
363 | 363 | ||
364 | if (wasVisible) | 364 | if (wasVisible) |
365 | wid->show(); | 365 | wid->show(); |
366 | } | 366 | } |
367 | 367 | ||
368 | m_mWidget = wid; | 368 | m_mWidget = wid; |
369 | } | 369 | } |
370 | 370 | ||
371 | /** | 371 | /** |
372 | * this is an overloaded member and only differs | 372 | * this is an overloaded member and only differs |
373 | * in the type of arguments. | 373 | * in the type of arguments. |
374 | * @see setMainWindow(QWidget*) | 374 | * @see setMainWindow(QWidget*) |
375 | */ | 375 | */ |
376 | void OWidgetStack::setMainWindow( int id) { | 376 | void OWidgetStack::setMainWindow( int id) { |
377 | setMainWindow( widget( id ) ); | 377 | setMainWindow( widget( id ) ); |
378 | } | 378 | } |
379 | 379 | ||
380 | 380 | ||
381 | /* | 381 | /* |
382 | * this function switches to a stack ;) | 382 | * this function switches to a stack ;) |
383 | */ | 383 | */ |
384 | void OWidgetStack::switchStack() { | 384 | void OWidgetStack::switchStack() { |
385 | if (m_stack ) { | 385 | if (m_stack ) { |
386 | m_stack->setGeometry( frameRect() ); | 386 | m_stack->setGeometry( frameRect() ); |
387 | return; | 387 | return; |
388 | } | 388 | } |
389 | 389 | ||
390 | m_mode = SmallScreen; | 390 | m_mode = SmallScreen; |
391 | m_stack = new QWidgetStack(this); | 391 | m_stack = new QWidgetStack(this); |
392 | 392 | ||
393 | connect(m_stack, SIGNAL(aboutToShow(QWidget*) ), | 393 | connect(m_stack, SIGNAL(aboutToShow(QWidget*) ), |
394 | this, SIGNAL(aboutToShow(QWidget*) ) ); | 394 | this, SIGNAL(aboutToShow(QWidget*) ) ); |
395 | connect(m_stack, SIGNAL(aboutToShow(int) ), | 395 | connect(m_stack, SIGNAL(aboutToShow(int) ), |
396 | this, SIGNAL(aboutToShow(int) ) ); | 396 | this, SIGNAL(aboutToShow(int) ) ); |
397 | 397 | ||
398 | /* now reparent the widgets... luckily QWidgetSatck does most of the work */ | 398 | /* now reparent the widgets... luckily QWidgetSatck does most of the work */ |
399 | if (m_list.isEmpty() ) | 399 | if (m_list.isEmpty() ) |
400 | return; | 400 | return; |
401 | 401 | ||
402 | QMap<int, QWidget*>::Iterator it = m_list.begin(); | 402 | QMap<int, QWidget*>::Iterator it = m_list.begin(); |
403 | for ( ; it != m_list.end(); ++it ) | 403 | for ( ; it != m_list.end(); ++it ) |
404 | m_stack->addWidget( it.data(), it.key() ); | 404 | m_stack->addWidget( it.data(), it.key() ); |
405 | 405 | ||
406 | 406 | ||
407 | } | 407 | } |
408 | 408 | ||
409 | /* | 409 | /* |
410 | * we will switch to top level mode | 410 | * we will switch to top level mode |
411 | * reparent the list of widgets and then delete the stack | 411 | * reparent the list of widgets and then delete the stack |
412 | */ | 412 | */ |
413 | void OWidgetStack::switchTop() { | 413 | void OWidgetStack::switchTop() { |
414 | m_mode = BigScreen; | 414 | m_mode = BigScreen; |
415 | /* this works because it is guaranteed that switchStack was called at least once*/ | 415 | /* this works because it is guaranteed that switchStack was called at least once*/ |
416 | if (!m_stack && m_mWidget) { | 416 | if (!m_stack && m_mWidget) { |
417 | m_mWidget->setGeometry( frameRect() ); | 417 | m_mWidget->setGeometry( frameRect() ); |
418 | return; | 418 | return; |
419 | }else if (!m_stack) | 419 | }else if (!m_stack) |
420 | return; | 420 | return; |
421 | 421 | ||
422 | if (!m_list.isEmpty() ) { | 422 | if (!m_list.isEmpty() ) { |
423 | QMap<int, QWidget*>::Iterator it = m_list.begin(); | 423 | QMap<int, QWidget*>::Iterator it = m_list.begin(); |
424 | for ( ; it != m_list.end(); ++it ) { | 424 | for ( ; it != m_list.end(); ++it ) { |
425 | /* better than reparenting twice */ | 425 | /* better than reparenting twice */ |
426 | if ( it.data() == m_mWidget ) { | 426 | if ( it.data() == m_mWidget ) { |
427 | m_mWidget->reparent(this, 0, frameRect().topLeft() ); | 427 | m_mWidget->reparent(this, 0, frameRect().topLeft() ); |
428 | m_mWidget->setGeometry( frameRect() ); | 428 | m_mWidget->setGeometry( frameRect() ); |
429 | m_mWidget->show(); | 429 | m_mWidget->show(); |
430 | }else | 430 | }else |
431 | /* ### FIXME we need to place the widget better */ | 431 | /* ### FIXME we need to place the widget better */ |
432 | it.data()->reparent(0, WType_TopLevel, QPoint(10, 10) ); | 432 | it.data()->reparent(0, WType_TopLevel, QPoint(10, 10) ); |
433 | } | 433 | } |
434 | } | 434 | } |
435 | 435 | ||
436 | delete m_stack; | 436 | delete m_stack; |
437 | m_stack = 0; | 437 | m_stack = 0; |
438 | } | 438 | } |
439 | 439 | ||
440 | } | 440 | } |
441 | } \ No newline at end of file | 441 | } |
diff --git a/libopie2/opieui/ofontselector.cpp b/libopie2/opieui/ofontselector.cpp index 6763ee6..4870cd9 100644 --- a/libopie2/opieui/ofontselector.cpp +++ b/libopie2/opieui/ofontselector.cpp | |||
@@ -4,384 +4,385 @@ | |||
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | /* OPIE */ | 30 | /* OPIE */ |
31 | #include <opie2/ofontselector.h> | 31 | #include <opie2/ofontselector.h> |
32 | #include <qpe/fontdatabase.h> | 32 | #include <qpe/fontdatabase.h> |
33 | 33 | ||
34 | /* QT */ | 34 | /* QT */ |
35 | #include <qlayout.h> | 35 | #include <qlayout.h> |
36 | #include <qlistbox.h> | 36 | #include <qlistbox.h> |
37 | #include <qcombobox.h> | 37 | #include <qcombobox.h> |
38 | #include <qlabel.h> | 38 | #include <qlabel.h> |
39 | #include <qmultilineedit.h> | 39 | #include <qmultilineedit.h> |
40 | 40 | ||
41 | 41 | ||
42 | namespace Opie { | 42 | namespace Opie { |
43 | namespace Ui { | 43 | namespace Ui { |
44 | namespace Internal { | 44 | namespace Internal { |
45 | 45 | ||
46 | class OFontSelectorPrivate | 46 | class OFontSelectorPrivate |
47 | { | 47 | { |
48 | public: | 48 | public: |
49 | QListBox * m_font_family_list; | 49 | QListBox * m_font_family_list; |
50 | QComboBox * m_font_style_list; | 50 | QComboBox * m_font_style_list; |
51 | QComboBox * m_font_size_list; | 51 | QComboBox * m_font_size_list; |
52 | QMultiLineEdit *m_preview; | 52 | QMultiLineEdit *m_preview; |
53 | 53 | ||
54 | bool m_pointbug : 1; | 54 | bool m_pointbug : 1; |
55 | 55 | ||
56 | FontDatabase m_fdb; | 56 | FontDatabase m_fdb; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | class FontListItem : public QListBoxText | 59 | class FontListItem : public QListBoxText |
60 | { | 60 | { |
61 | public: | 61 | public: |
62 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText() | 62 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText() |
63 | { | 63 | { |
64 | m_name = t; | 64 | m_name = t; |
65 | m_styles = styles; | 65 | m_styles = styles; |
66 | m_sizes = sizes; | 66 | m_sizes = sizes; |
67 | 67 | ||
68 | QString str = t; | 68 | QString str = t; |
69 | str [0] = str [0]. upper(); | 69 | str [0] = str [0]. upper(); |
70 | setText ( str ); | 70 | setText ( str ); |
71 | } | 71 | } |
72 | 72 | ||
73 | QString family() const | 73 | QString family() const |
74 | { | 74 | { |
75 | return m_name; | 75 | return m_name; |
76 | } | 76 | } |
77 | 77 | ||
78 | const QStringList &styles() const | 78 | const QStringList &styles() const |
79 | { | 79 | { |
80 | return m_styles; | 80 | return m_styles; |
81 | } | 81 | } |
82 | 82 | ||
83 | const QValueList<int> &sizes() const | 83 | const QValueList<int> &sizes() const |
84 | { | 84 | { |
85 | return m_sizes; | 85 | return m_sizes; |
86 | } | 86 | } |
87 | 87 | ||
88 | private: | 88 | private: |
89 | QStringList m_styles; | 89 | QStringList m_styles; |
90 | QValueList<int> m_sizes; | 90 | QValueList<int> m_sizes; |
91 | QString m_name; | 91 | QString m_name; |
92 | }; | 92 | }; |
93 | } | 93 | } |
94 | } | 94 | } |
95 | } | 95 | } |
96 | 96 | ||
97 | 97 | ||
98 | using namespace Opie::Ui; | 98 | using namespace Opie::Ui; |
99 | using namespace Opie::Ui::Internal; | 99 | using namespace Opie::Ui::Internal; |
100 | 100 | ||
101 | static int findItemCB( QComboBox *box, const QString &str ) | 101 | static int findItemCB( QComboBox *box, const QString &str ) |
102 | { | 102 | { |
103 | for ( int i = 0; i < box->count(); i++ ) | 103 | for ( int i = 0; i < box->count(); i++ ) |
104 | { | 104 | { |
105 | if ( box->text ( i ) == str ) | 105 | if ( box->text ( i ) == str ) |
106 | return i; | 106 | return i; |
107 | } | 107 | } |
108 | return -1; | 108 | return -1; |
109 | } | 109 | } |
110 | 110 | ||
111 | /* static same as anon. namespace */ | 111 | /* static same as anon. namespace */ |
112 | static int qt_version() | 112 | static int qt_version() |
113 | { | 113 | { |
114 | const char *qver = qVersion(); | 114 | const char *qver = qVersion(); |
115 | 115 | ||
116 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); | 116 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); |
117 | } | 117 | } |
118 | 118 | ||
119 | /** | 119 | /** |
120 | * Constructs the Selector object | 120 | * Constructs the Selector object |
121 | * @param withpreview If a font preview should be given | 121 | * @param withpreview If a font preview should be given |
122 | * @param parent The parent of the Font Selector | 122 | * @param parent The parent of the Font Selector |
123 | * @param name The name of the object | 123 | * @param name The name of the object |
124 | * @param fl WidgetFlags | 124 | * @param fl WidgetFlags |
125 | */ | 125 | */ |
126 | OFontSelector::OFontSelector( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) | 126 | OFontSelector::OFontSelector( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) |
127 | { | 127 | { |
128 | d = new OFontSelectorPrivate(); | 128 | d = new OFontSelectorPrivate(); |
129 | 129 | ||
130 | QGridLayout *gridLayout = new QGridLayout( this, 0, 0, 4, 4 ); | 130 | QGridLayout *gridLayout = new QGridLayout( this, 0, 0, 4, 4 ); |
131 | gridLayout->setRowStretch( 4, 10 ); | 131 | gridLayout->setRowStretch( 4, 10 ); |
132 | 132 | ||
133 | d->m_font_family_list = new QListBox( this, "FontListBox" ); | 133 | d->m_font_family_list = new QListBox( this, "FontListBox" ); |
134 | gridLayout->addMultiCellWidget( d->m_font_family_list, 0, 4, 0, 0 ); | 134 | gridLayout->addMultiCellWidget( d->m_font_family_list, 0, 4, 0, 0 ); |
135 | connect( d->m_font_family_list, SIGNAL( highlighted(int) ), this, SLOT( fontFamilyClicked(int) ) ); | 135 | connect( d->m_font_family_list, SIGNAL( highlighted(int) ), this, SLOT( fontFamilyClicked(int) ) ); |
136 | 136 | ||
137 | QLabel *label = new QLabel( tr( "Style" ), this ); | 137 | QLabel *label = new QLabel( tr( "Style" ), this ); |
138 | gridLayout->addWidget( label, 0, 1 ); | 138 | gridLayout->addWidget( label, 0, 1 ); |
139 | 139 | ||
140 | d->m_font_style_list = new QComboBox( this, "StyleListBox" ); | 140 | d->m_font_style_list = new QComboBox( this, "StyleListBox" ); |
141 | connect( d->m_font_style_list, SIGNAL( activated(int) ), this, SLOT( fontStyleClicked(int) ) ); | 141 | connect( d->m_font_style_list, SIGNAL( activated(int) ), this, SLOT( fontStyleClicked(int) ) ); |
142 | gridLayout->addWidget( d->m_font_style_list, 1, 1 ); | 142 | gridLayout->addWidget( d->m_font_style_list, 1, 1 ); |
143 | 143 | ||
144 | label = new QLabel( tr( "Size" ), this ); | 144 | label = new QLabel( tr( "Size" ), this ); |
145 | gridLayout->addWidget( label, 2, 1 ); | 145 | gridLayout->addWidget( label, 2, 1 ); |
146 | 146 | ||
147 | d->m_font_size_list = new QComboBox( this, "SizeListBox" ); | 147 | d->m_font_size_list = new QComboBox( this, "SizeListBox" ); |
148 | connect( d->m_font_size_list, SIGNAL( activated(int) ), | 148 | connect( d->m_font_size_list, SIGNAL( activated(int) ), |
149 | this, SLOT( fontSizeClicked(int) ) ); | 149 | this, SLOT( fontSizeClicked(int) ) ); |
150 | gridLayout->addWidget( d->m_font_size_list, 3, 1 ); | 150 | gridLayout->addWidget( d->m_font_size_list, 3, 1 ); |
151 | 151 | ||
152 | d->m_pointbug = ( qt_version() <= 233 ); | 152 | d->m_pointbug = ( qt_version() <= 233 ); |
153 | 153 | ||
154 | if ( withpreview ) | 154 | if ( withpreview ) |
155 | { | 155 | { |
156 | d->m_preview = new QMultiLineEdit ( this, "Preview" ); | 156 | d->m_preview = new QMultiLineEdit ( this, "Preview" ); |
157 | d->m_preview->setAlignment ( AlignCenter ); | 157 | d->m_preview->setAlignment ( AlignCenter ); |
158 | d->m_preview->setWordWrap ( QMultiLineEdit::WidgetWidth ); | 158 | d->m_preview->setWordWrap ( QMultiLineEdit::WidgetWidth ); |
159 | d->m_preview->setMargin ( 3 ); | 159 | d->m_preview->setMargin ( 3 ); |
160 | d->m_preview->setText ( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" )); | 160 | d->m_preview->setText ( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" )); |
161 | gridLayout->addRowSpacing ( 5, 4 ); | 161 | gridLayout->addRowSpacing ( 5, 4 ); |
162 | gridLayout->addMultiCellWidget ( d->m_preview, 6, 6, 0, 1 ); | 162 | gridLayout->addMultiCellWidget ( d->m_preview, 6, 6, 0, 1 ); |
163 | gridLayout->setRowStretch ( 6, 5 ); | 163 | gridLayout->setRowStretch ( 6, 5 ); |
164 | } | 164 | } |
165 | else | 165 | else |
166 | d->m_preview = 0; | 166 | d->m_preview = 0; |
167 | 167 | ||
168 | loadFonts ( d->m_font_family_list ); | 168 | loadFonts ( d->m_font_family_list ); |
169 | } | 169 | } |
170 | 170 | ||
171 | OFontSelector::~OFontSelector() | 171 | OFontSelector::~OFontSelector() |
172 | { | 172 | { |
173 | delete d; | 173 | delete d; |
174 | } | 174 | } |
175 | 175 | ||
176 | /** | 176 | /** |
177 | * This methods tries to set the font | 177 | * This methods tries to set the font |
178 | * @param f The wishes font | 178 | * @param f The wishes font |
179 | * @return success or failure | 179 | * @return success or failure |
180 | */ | 180 | */ |
181 | bool OFontSelector::setSelectedFont ( const QFont &f ) | 181 | bool OFontSelector::setSelectedFont ( const QFont &f ) |
182 | { | 182 | { |
183 | return setSelectedFont ( f. family(), d->m_fdb. styleString ( f ), f. pointSize(), QFont::encodingName ( f. charSet())); | 183 | return setSelectedFont ( f. family(), d->m_fdb. styleString ( f ), f. pointSize(), QFont::encodingName ( f. charSet())); |
184 | } | 184 | } |
185 | 185 | ||
186 | 186 | ||
187 | /** | 187 | /** |
188 | * This is an overloaded method @see setSelectedFont | 188 | * This is an overloaded method @see setSelectedFont |
189 | * @param familyStr The family of the font | 189 | * @param familyStr The family of the font |
190 | * @param styleStr The style of the font | 190 | * @param styleStr The style of the font |
191 | * @param sizeVal The size of font | 191 | * @param sizeVal The size of font |
192 | * @param charset The charset to be used. Will be deprecated by QT3 | 192 | * @param charset The charset to be used. Will be deprecated by QT3 |
193 | */ | 193 | */ |
194 | bool OFontSelector::setSelectedFont( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) | 194 | bool OFontSelector::setSelectedFont( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) |
195 | { | 195 | { |
196 | Q_CONST_UNUSED( charset ) | ||
196 | QString sizeStr = QString::number ( sizeVal ); | 197 | QString sizeStr = QString::number ( sizeVal ); |
197 | 198 | ||
198 | QListBoxItem *family = d->m_font_family_list->findItem ( familyStr ); | 199 | QListBoxItem *family = d->m_font_family_list->findItem ( familyStr ); |
199 | if ( !family ) | 200 | if ( !family ) |
200 | family = d->m_font_family_list->findItem ( "Helvetica" ); | 201 | family = d->m_font_family_list->findItem ( "Helvetica" ); |
201 | if ( !family ) | 202 | if ( !family ) |
202 | family = d->m_font_family_list->firstItem(); | 203 | family = d->m_font_family_list->firstItem(); |
203 | d->m_font_family_list->setCurrentItem ( family ); | 204 | d->m_font_family_list->setCurrentItem ( family ); |
204 | fontFamilyClicked ( d->m_font_family_list->index ( family )); | 205 | fontFamilyClicked ( d->m_font_family_list->index ( family )); |
205 | 206 | ||
206 | int style = findItemCB ( d->m_font_style_list, styleStr ); | 207 | int style = findItemCB ( d->m_font_style_list, styleStr ); |
207 | if ( style < 0 ) | 208 | if ( style < 0 ) |
208 | style = findItemCB ( d->m_font_style_list, "Regular" ); | 209 | style = findItemCB ( d->m_font_style_list, "Regular" ); |
209 | if ( style < 0 && d->m_font_style_list->count() > 0 ) | 210 | if ( style < 0 && d->m_font_style_list->count() > 0 ) |
210 | style = 0; | 211 | style = 0; |
211 | d->m_font_style_list->setCurrentItem ( style ); | 212 | d->m_font_style_list->setCurrentItem ( style ); |
212 | fontStyleClicked ( style ); | 213 | fontStyleClicked ( style ); |
213 | 214 | ||
214 | int size = findItemCB ( d->m_font_size_list, sizeStr ); | 215 | int size = findItemCB ( d->m_font_size_list, sizeStr ); |
215 | if ( size < 0 ) | 216 | if ( size < 0 ) |
216 | size = findItemCB ( d->m_font_size_list, "10" ); | 217 | size = findItemCB ( d->m_font_size_list, "10" ); |
217 | if ( size < 0 && d->m_font_size_list->count() > 0 ) | 218 | if ( size < 0 && d->m_font_size_list->count() > 0 ) |
218 | size = 0; | 219 | size = 0; |
219 | d->m_font_size_list->setCurrentItem ( size ); | 220 | d->m_font_size_list->setCurrentItem ( size ); |
220 | fontSizeClicked ( size ); | 221 | fontSizeClicked ( size ); |
221 | 222 | ||
222 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); | 223 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); |
223 | } | 224 | } |
224 | 225 | ||
225 | /** | 226 | /** |
226 | * This method returns the name, style and size of the currently selected | 227 | * This method returns the name, style and size of the currently selected |
227 | * font or false if no font is selected | 228 | * font or false if no font is selected |
228 | * @param family The font family will be written there | 229 | * @param family The font family will be written there |
229 | * @param style The style will be written there | 230 | * @param style The style will be written there |
230 | * @param size The size will be written there | 231 | * @param size The size will be written there |
231 | * @return success or failure | 232 | * @return success or failure |
232 | */ | 233 | */ |
233 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) | 234 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) |
234 | { | 235 | { |
235 | QString dummy; | 236 | QString dummy; |
236 | return selectedFont ( family, style, size, dummy ); | 237 | return selectedFont ( family, style, size, dummy ); |
237 | } | 238 | } |
238 | 239 | ||
239 | 240 | ||
240 | /** | 241 | /** |
241 | * This method does return the font family or QString::null if there is | 242 | * This method does return the font family or QString::null if there is |
242 | * no font item selected | 243 | * no font item selected |
243 | * @return the font family | 244 | * @return the font family |
244 | */ | 245 | */ |
245 | QString OFontSelector::fontFamily() const | 246 | QString OFontSelector::fontFamily() const |
246 | { | 247 | { |
247 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); | 248 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); |
248 | 249 | ||
249 | return fli ? fli->family() : QString::null; | 250 | return fli ? fli->family() : QString::null; |
250 | } | 251 | } |
251 | 252 | ||
252 | /** | 253 | /** |
253 | * This method will return the style of the font or QString::null | 254 | * This method will return the style of the font or QString::null |
254 | * @return the style of the font | 255 | * @return the style of the font |
255 | */ | 256 | */ |
256 | QString OFontSelector::fontStyle() const | 257 | QString OFontSelector::fontStyle() const |
257 | { | 258 | { |
258 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); | 259 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); |
259 | int fst = d->m_font_style_list->currentItem(); | 260 | int fst = d->m_font_style_list->currentItem(); |
260 | 261 | ||
261 | return ( fli && fst >= 0 ) ? fli->styles() [fst] : QString::null; | 262 | return ( fli && fst >= 0 ) ? fli->styles() [fst] : QString::null; |
262 | } | 263 | } |
263 | 264 | ||
264 | /** | 265 | /** |
265 | * This method will return the font size or 10 if no font size is available | 266 | * This method will return the font size or 10 if no font size is available |
266 | */ | 267 | */ |
267 | int OFontSelector::fontSize() const | 268 | int OFontSelector::fontSize() const |
268 | { | 269 | { |
269 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); | 270 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); |
270 | int fsi = d->m_font_size_list->currentItem(); | 271 | int fsi = d->m_font_size_list->currentItem(); |
271 | 272 | ||
272 | return ( fli && fsi >= 0 ) ? fli->sizes() [fsi] : 10; | 273 | return ( fli && fsi >= 0 ) ? fli->sizes() [fsi] : 10; |
273 | } | 274 | } |
274 | 275 | ||
275 | /** | 276 | /** |
276 | * returns the charset of the font or QString::null | 277 | * returns the charset of the font or QString::null |
277 | */ | 278 | */ |
278 | QString OFontSelector::fontCharSet() const | 279 | QString OFontSelector::fontCharSet() const |
279 | { | 280 | { |
280 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); | 281 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( d->m_font_family_list->currentItem()); |
281 | 282 | ||
282 | return fli ? d->m_fdb. charSets ( fli->family()) [0] : QString::null; | 283 | return fli ? d->m_fdb. charSets ( fli->family()) [0] : QString::null; |
283 | } | 284 | } |
284 | 285 | ||
285 | /** | 286 | /** |
286 | * Overloaded member function see above | 287 | * Overloaded member function see above |
287 | * @see selectedFont | 288 | * @see selectedFont |
288 | */ | 289 | */ |
289 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size, QString &charset ) | 290 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size, QString &charset ) |
290 | { | 291 | { |
291 | int ffa = d->m_font_family_list->currentItem(); | 292 | int ffa = d->m_font_family_list->currentItem(); |
292 | int fst = d->m_font_style_list->currentItem(); | 293 | int fst = d->m_font_style_list->currentItem(); |
293 | int fsi = d->m_font_size_list->currentItem(); | 294 | int fsi = d->m_font_size_list->currentItem(); |
294 | 295 | ||
295 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( ffa ); | 296 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( ffa ); |
296 | 297 | ||
297 | if ( fli ) | 298 | if ( fli ) |
298 | { | 299 | { |
299 | family = fli->family(); | 300 | family = fli->family(); |
300 | style = fst >= 0 ? fli->styles() [fst] : QString::null; | 301 | style = fst >= 0 ? fli->styles() [fst] : QString::null; |
301 | size = fsi >= 0 ? fli->sizes() [fsi] : 10; | 302 | size = fsi >= 0 ? fli->sizes() [fsi] : 10; |
302 | charset = d->m_fdb. charSets ( fli->family()) [0]; | 303 | charset = d->m_fdb. charSets ( fli->family()) [0]; |
303 | 304 | ||
304 | return true; | 305 | return true; |
305 | } | 306 | } |
306 | else | 307 | else |
307 | return false; | 308 | return false; |
308 | } | 309 | } |
309 | 310 | ||
310 | void OFontSelector::loadFonts ( QListBox *list ) | 311 | void OFontSelector::loadFonts ( QListBox *list ) |
311 | { | 312 | { |
312 | QStringList f = d->m_fdb. families(); | 313 | QStringList f = d->m_fdb. families(); |
313 | 314 | ||
314 | for ( QStringList::ConstIterator it = f. begin(); it != f. end(); ++it ) | 315 | for ( QStringList::ConstIterator it = f. begin(); it != f. end(); ++it ) |
315 | { | 316 | { |
316 | QValueList <int> ps = d->m_fdb. pointSizes ( *it ); | 317 | QValueList <int> ps = d->m_fdb. pointSizes ( *it ); |
317 | 318 | ||
318 | if ( d->m_pointbug ) | 319 | if ( d->m_pointbug ) |
319 | { | 320 | { |
320 | for ( QValueList <int>::Iterator it = ps. begin(); it != ps. end(); it++ ) | 321 | for ( QValueList <int>::Iterator it = ps. begin(); it != ps. end(); it++ ) |
321 | *it /= 10; | 322 | *it /= 10; |
322 | } | 323 | } |
323 | 324 | ||
324 | list->insertItem ( new FontListItem ( *it, d->m_fdb. styles ( *it ), ps )); | 325 | list->insertItem ( new FontListItem ( *it, d->m_fdb. styles ( *it ), ps )); |
325 | } | 326 | } |
326 | } | 327 | } |
327 | 328 | ||
328 | void OFontSelector::fontFamilyClicked ( int index ) | 329 | void OFontSelector::fontFamilyClicked ( int index ) |
329 | { | 330 | { |
330 | QString oldstyle = d->m_font_style_list->currentText(); | 331 | QString oldstyle = d->m_font_style_list->currentText(); |
331 | QString oldsize = d->m_font_size_list->currentText(); | 332 | QString oldsize = d->m_font_size_list->currentText(); |
332 | 333 | ||
333 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( index ); | 334 | FontListItem *fli = (FontListItem *) d->m_font_family_list->item ( index ); |
334 | 335 | ||
335 | d->m_font_style_list->clear(); | 336 | d->m_font_style_list->clear(); |
336 | d->m_font_style_list->insertStringList ( fli->styles()); | 337 | d->m_font_style_list->insertStringList ( fli->styles()); |
337 | d->m_font_style_list->setEnabled ( !fli->styles(). isEmpty()); | 338 | d->m_font_style_list->setEnabled ( !fli->styles(). isEmpty()); |
338 | 339 | ||
339 | int i; | 340 | int i; |
340 | 341 | ||
341 | i = findItemCB ( d->m_font_style_list, oldstyle ); | 342 | i = findItemCB ( d->m_font_style_list, oldstyle ); |
342 | if ( i < 0 ) | 343 | if ( i < 0 ) |
343 | i = findItemCB ( d->m_font_style_list, "Regular" ); | 344 | i = findItemCB ( d->m_font_style_list, "Regular" ); |
344 | if (( i < 0 ) && ( d->m_font_style_list->count() > 0 )) | 345 | if (( i < 0 ) && ( d->m_font_style_list->count() > 0 )) |
345 | i = 0; | 346 | i = 0; |
346 | 347 | ||
347 | if ( i >= 0 ) | 348 | if ( i >= 0 ) |
348 | { | 349 | { |
349 | d->m_font_style_list->setCurrentItem ( i ); | 350 | d->m_font_style_list->setCurrentItem ( i ); |
350 | fontStyleClicked ( i ); | 351 | fontStyleClicked ( i ); |
351 | } | 352 | } |
352 | 353 | ||
353 | d->m_font_size_list->clear(); | 354 | d->m_font_size_list->clear(); |
354 | QValueList<int> sl = fli->sizes(); | 355 | QValueList<int> sl = fli->sizes(); |
355 | 356 | ||
356 | for ( QValueList<int>::Iterator it = sl. begin(); it != sl. end(); ++it ) | 357 | for ( QValueList<int>::Iterator it = sl. begin(); it != sl. end(); ++it ) |
357 | d->m_font_size_list->insertItem ( QString::number ( *it )); | 358 | d->m_font_size_list->insertItem ( QString::number ( *it )); |
358 | 359 | ||
359 | i = findItemCB ( d->m_font_size_list, oldsize ); | 360 | i = findItemCB ( d->m_font_size_list, oldsize ); |
360 | if ( i < 0 ) | 361 | if ( i < 0 ) |
361 | i = findItemCB ( d->m_font_size_list, "10" ); | 362 | i = findItemCB ( d->m_font_size_list, "10" ); |
362 | if (( i < 0 ) && ( d->m_font_size_list->count() > 0 )) | 363 | if (( i < 0 ) && ( d->m_font_size_list->count() > 0 )) |
363 | i = 0; | 364 | i = 0; |
364 | 365 | ||
365 | if ( i >= 0 ) | 366 | if ( i >= 0 ) |
366 | { | 367 | { |
367 | d->m_font_size_list->setCurrentItem ( i ); | 368 | d->m_font_size_list->setCurrentItem ( i ); |
368 | fontSizeClicked ( i ); | 369 | fontSizeClicked ( i ); |
369 | } | 370 | } |
370 | changeFont(); | 371 | changeFont(); |
371 | } | 372 | } |
372 | 373 | ||
373 | void OFontSelector::fontStyleClicked ( int /*index*/ ) | 374 | void OFontSelector::fontStyleClicked ( int /*index*/ ) |
374 | { | 375 | { |
375 | changeFont(); | 376 | changeFont(); |
376 | } | 377 | } |
377 | 378 | ||
378 | void OFontSelector::fontSizeClicked ( int /*index*/ ) | 379 | void OFontSelector::fontSizeClicked ( int /*index*/ ) |
379 | { | 380 | { |
380 | changeFont(); | 381 | changeFont(); |
381 | } | 382 | } |
382 | 383 | ||
383 | void OFontSelector::changeFont() | 384 | void OFontSelector::changeFont() |
384 | { | 385 | { |
385 | QFont f = selectedFont(); | 386 | QFont f = selectedFont(); |
386 | 387 | ||
387 | if ( d->m_preview ) | 388 | if ( d->m_preview ) |
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp index b90c786..67b4b83 100644 --- a/libopie2/opieui/olistview.cpp +++ b/libopie2/opieui/olistview.cpp | |||
@@ -1,764 +1,768 @@ | |||
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 | ||
39 | using namespace Opie::Core; | 39 | using namespace Opie::Core; |
40 | 40 | ||
41 | 41 | ||
42 | namespace Opie { | 42 | namespace Opie { |
43 | namespace Ui { | 43 | namespace Ui { |
44 | /*====================================================================================== | 44 | /*====================================================================================== |
45 | * OListView | 45 | * OListView |
46 | *======================================================================================*/ | 46 | *======================================================================================*/ |
47 | 47 | ||
48 | OListView::OListView( QWidget *parent, const char *name, WFlags fl ) | 48 | OListView::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 | ||
59 | OListView::~OListView() | 59 | OListView::~OListView() |
60 | { | 60 | { |
61 | } | 61 | } |
62 | 62 | ||
63 | void OListView::setFullWidth( bool fullWidth ) | 63 | void OListView::setFullWidth( bool fullWidth ) |
64 | { | 64 | { |
65 | m_fullWidth = fullWidth; | 65 | m_fullWidth = fullWidth; |
66 | #if QT_VERSION > 290 | 66 | #if QT_VERSION > 290 |
67 | header()->setStretchEnabled( fullWidth, columns()-1 ); | 67 | header()->setStretchEnabled( fullWidth, columns()-1 ); |
68 | #endif | 68 | #endif |
69 | } | 69 | } |
70 | 70 | ||
71 | bool OListView::fullWidth() const | 71 | bool OListView::fullWidth() const |
72 | { | 72 | { |
73 | return m_fullWidth; | 73 | return m_fullWidth; |
74 | } | 74 | } |
75 | 75 | ||
76 | int OListView::addColumn( const QString& label, int width ) | 76 | int 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 > 290 |
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 | ||
88 | int OListView::addColumn( const QIconSet& iconset, const QString& label, int width ) | 88 | int 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 > 290 |
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 | ||
100 | void OListView::removeColumn( int index ) | 100 | void OListView::removeColumn( int index ) |
101 | { | 101 | { |
102 | QListView::removeColumn(index); | 102 | QListView::removeColumn(index); |
103 | #if QT_VERSION > 290 | 103 | #if QT_VERSION > 290 |
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 | ||
111 | const QColor& OListView::alternateBackground() const | 111 | const QColor& OListView::alternateBackground() const |
112 | { | 112 | { |
113 | return m_alternateBackground; | 113 | return m_alternateBackground; |
114 | } | 114 | } |
115 | 115 | ||
116 | void OListView::setAlternateBackground( const QColor &c ) | 116 | void OListView::setAlternateBackground( const QColor &c ) |
117 | { | 117 | { |
118 | m_alternateBackground = c; | 118 | m_alternateBackground = c; |
119 | repaint(); | 119 | repaint(); |
120 | } | 120 | } |
121 | 121 | ||
122 | const QPen& OListView::columnSeparator() const | 122 | const QPen& OListView::columnSeparator() const |
123 | { | 123 | { |
124 | return m_columnSeparator; | 124 | return m_columnSeparator; |
125 | } | 125 | } |
126 | 126 | ||
127 | void OListView::setColumnSeparator( const QPen& p ) | 127 | void OListView::setColumnSeparator( const QPen& p ) |
128 | { | 128 | { |
129 | m_columnSeparator = p; | 129 | m_columnSeparator = p; |
130 | repaint(); | 130 | repaint(); |
131 | } | 131 | } |
132 | 132 | ||
133 | void OListView::expand(QListViewItem *item) | 133 | void OListView::expand(QListViewItem *item) |
134 | { | 134 | { |
135 | ((OListViewItem*)item)->expand(); | 135 | ((OListViewItem*)item)->expand(); |
136 | } | 136 | } |
137 | 137 | ||
138 | OListViewItem* OListView::childFactory() | 138 | OListViewItem* 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 |
144 | void OListView::serializeTo( QDataStream& s ) const | 144 | void 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 | ||
175 | void OListView::serializeFrom( QDataStream& s ) | 175 | void 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 | ||
209 | void OListView::expand() | 209 | void 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 | ||
221 | void OListView::collapse() | 221 | void 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 | ||
232 | QDataStream& operator<<( QDataStream& s, const OListView& lv ) | 232 | QDataStream& operator<<( QDataStream& s, const OListView& lv ) |
233 | { | 233 | { |
234 | lv.serializeTo( s ); | 234 | lv.serializeTo( s ); |
235 | return s; | ||
235 | } | 236 | } |
236 | 237 | ||
237 | QDataStream& operator>>( QDataStream& s, OListView& lv ) | 238 | QDataStream& operator>>( QDataStream& s, OListView& lv ) |
238 | { | 239 | { |
239 | lv.serializeFrom( s ); | 240 | lv.serializeFrom( s ); |
241 | return s; | ||
240 | } | 242 | } |
241 | #endif // QT_NO_DATASTREAM | 243 | #endif // QT_NO_DATASTREAM |
242 | 244 | ||
243 | /*====================================================================================== | 245 | /*====================================================================================== |
244 | * OListViewItem | 246 | * OListViewItem |
245 | *======================================================================================*/ | 247 | *======================================================================================*/ |
246 | 248 | ||
247 | OListViewItem::OListViewItem(QListView *parent) | 249 | OListViewItem::OListViewItem(QListView *parent) |
248 | : QListViewItem(parent) | 250 | : QListViewItem(parent) |
249 | { | 251 | { |
250 | init(); | 252 | init(); |
251 | } | 253 | } |
252 | 254 | ||
253 | 255 | ||
254 | OListViewItem::OListViewItem(QListViewItem *parent) | 256 | OListViewItem::OListViewItem(QListViewItem *parent) |
255 | : QListViewItem(parent) | 257 | : QListViewItem(parent) |
256 | { | 258 | { |
257 | init(); | 259 | init(); |
258 | } | 260 | } |
259 | 261 | ||
260 | 262 | ||
261 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) | 263 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) |
262 | : QListViewItem(parent, after) | 264 | : QListViewItem(parent, after) |
263 | { | 265 | { |
264 | init(); | 266 | init(); |
265 | } | 267 | } |
266 | 268 | ||
267 | 269 | ||
268 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) | 270 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) |
269 | : QListViewItem(parent, after) | 271 | : QListViewItem(parent, after) |
270 | { | 272 | { |
271 | init(); | 273 | init(); |
272 | } | 274 | } |
273 | 275 | ||
274 | 276 | ||
275 | OListViewItem::OListViewItem(QListView *parent, | 277 | OListViewItem::OListViewItem(QListView *parent, |
276 | QString label1, QString label2, QString label3, QString label4, | 278 | QString label1, QString label2, QString label3, QString label4, |
277 | QString label5, QString label6, QString label7, QString label8) | 279 | QString label5, QString label6, QString label7, QString label8) |
278 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) | 280 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) |
279 | { | 281 | { |
280 | init(); | 282 | init(); |
281 | } | 283 | } |
282 | 284 | ||
283 | 285 | ||
284 | OListViewItem::OListViewItem(QListViewItem *parent, | 286 | OListViewItem::OListViewItem(QListViewItem *parent, |
285 | QString label1, QString label2, QString label3, QString label4, | 287 | QString label1, QString label2, QString label3, QString label4, |
286 | QString label5, QString label6, QString label7, QString label8) | 288 | QString label5, QString label6, QString label7, QString label8) |
287 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) | 289 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) |
288 | { | 290 | { |
289 | init(); | 291 | init(); |
290 | } | 292 | } |
291 | 293 | ||
292 | 294 | ||
293 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, | 295 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, |
294 | QString label1, QString label2, QString label3, QString label4, | 296 | QString label1, QString label2, QString label3, QString label4, |
295 | QString label5, QString label6, QString label7, QString label8) | 297 | QString label5, QString label6, QString label7, QString label8) |
296 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) | 298 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) |
297 | { | 299 | { |
298 | init(); | 300 | init(); |
299 | } | 301 | } |
300 | 302 | ||
301 | 303 | ||
302 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, | 304 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, |
303 | QString label1, QString label2, QString label3, QString label4, | 305 | QString label1, QString label2, QString label3, QString label4, |
304 | QString label5, QString label6, QString label7, QString label8) | 306 | QString label5, QString label6, QString label7, QString label8) |
305 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) | 307 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) |
306 | { | 308 | { |
307 | init(); | 309 | init(); |
308 | } | 310 | } |
309 | 311 | ||
310 | 312 | ||
311 | OListViewItem::~OListViewItem() | 313 | OListViewItem::~OListViewItem() |
312 | { | 314 | { |
313 | } | 315 | } |
314 | 316 | ||
315 | 317 | ||
316 | void OListViewItem::init() | 318 | void OListViewItem::init() |
317 | { | 319 | { |
318 | m_known = false; | 320 | m_known = false; |
319 | } | 321 | } |
320 | 322 | ||
321 | 323 | ||
322 | const QColor &OListViewItem::backgroundColor() | 324 | const QColor &OListViewItem::backgroundColor() |
323 | { | 325 | { |
324 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : | 326 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : |
325 | listView()->viewport()->colorGroup().base(); | 327 | listView()->viewport()->colorGroup().base(); |
326 | } | 328 | } |
327 | 329 | ||
328 | 330 | ||
329 | bool OListViewItem::isAlternate() | 331 | bool OListViewItem::isAlternate() |
330 | { | 332 | { |
331 | OListView *lv = static_cast<OListView*>( listView() ); | 333 | OListView *lv = static_cast<OListView*>( listView() ); |
332 | 334 | ||
333 | // check if the item above is an OListViewItem | 335 | // check if the item above is an OListViewItem |
334 | OListViewItem *above = static_cast<OListViewItem*>( itemAbove() ); | 336 | OListViewItem *above = static_cast<OListViewItem*>( itemAbove() ); |
335 | /*if (! itemAbove()->inherits( "OListViewItem" )) return false;*/ | 337 | /*if (! itemAbove()->inherits( "OListViewItem" )) return false;*/ |
336 | 338 | ||
337 | // check if we have a valid alternate background color | 339 | // check if we have a valid alternate background color |
338 | if (!(lv && lv->alternateBackground().isValid())) return false; | 340 | if (!(lv && lv->alternateBackground().isValid())) return false; |
339 | 341 | ||
340 | m_known = above ? above->m_known : true; | 342 | m_known = above ? above->m_known : true; |
341 | if (m_known) | 343 | if (m_known) |
342 | { | 344 | { |
343 | m_odd = above ? !above->m_odd : false; | 345 | m_odd = above ? !above->m_odd : false; |
344 | } | 346 | } |
345 | else | 347 | else |
346 | { | 348 | { |
347 | OListViewItem *item; | 349 | OListViewItem *item; |
348 | bool previous = true; | 350 | bool previous = true; |
349 | if (parent()) | 351 | if (parent()) |
350 | { | 352 | { |
351 | item = static_cast<OListViewItem *>(parent()); | 353 | item = static_cast<OListViewItem *>(parent()); |
352 | if ( item /*&& item->inherits( "OListViewItem" )*/ ) previous = item->m_odd; | 354 | if ( item /*&& item->inherits( "OListViewItem" )*/ ) previous = item->m_odd; |
353 | item = static_cast<OListViewItem *>(parent()->firstChild()); | 355 | item = static_cast<OListViewItem *>(parent()->firstChild()); |
354 | /* if ( !item.inherits( "OListViewItem" ) item = 0; */ | 356 | /* if ( !item.inherits( "OListViewItem" ) item = 0; */ |
355 | } | 357 | } |
356 | else | 358 | else |
357 | { | 359 | { |
358 | item = static_cast<OListViewItem *>(lv->firstChild()); | 360 | item = static_cast<OListViewItem *>(lv->firstChild()); |
359 | } | 361 | } |
360 | 362 | ||
361 | while(item) | 363 | while(item) |
362 | { | 364 | { |
363 | item->m_odd = previous = !previous; | 365 | item->m_odd = previous = !previous; |
364 | item->m_known = true; | 366 | item->m_known = true; |
365 | item = static_cast<OListViewItem *>(item->nextSibling()); | 367 | item = static_cast<OListViewItem *>(item->nextSibling()); |
366 | /* if (!item.inherits( "OListViewItem" ) ) break; */ | 368 | /* if (!item.inherits( "OListViewItem" ) ) break; */ |
367 | } | 369 | } |
368 | } | 370 | } |
369 | return m_odd; | 371 | return m_odd; |
370 | } | 372 | } |
371 | 373 | ||
372 | 374 | ||
373 | void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) | 375 | void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) |
374 | { | 376 | { |
375 | QColorGroup _cg = cg; | 377 | QColorGroup _cg = cg; |
376 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); | 378 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); |
377 | if (pm && !pm->isNull()) | 379 | if (pm && !pm->isNull()) |
378 | { | 380 | { |
379 | _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); | 381 | _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); |
380 | p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); | 382 | p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); |
381 | } | 383 | } |
382 | else if ( isAlternate() ) | 384 | else if ( isAlternate() ) |
383 | { | 385 | { |
384 | _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); | 386 | _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); |
385 | } | 387 | } |
386 | QListViewItem::paintCell( p, _cg, column, width, alignment ); | 388 | QListViewItem::paintCell( p, _cg, column, width, alignment ); |
387 | 389 | ||
388 | //FIXME: Use styling here! | 390 | //FIXME: Use styling here! |
389 | 391 | ||
390 | const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); | 392 | const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); |
391 | p->setPen( pen ); | 393 | p->setPen( pen ); |
392 | p->drawLine( width-1, 0, width-1, height() ); | 394 | p->drawLine( width-1, 0, width-1, height() ); |
393 | } | 395 | } |
394 | 396 | ||
395 | 397 | ||
396 | OListViewItem* OListViewItem::childFactory() | 398 | OListViewItem* OListViewItem::childFactory() |
397 | { | 399 | { |
398 | return new OListViewItem( this ); | 400 | return new OListViewItem( this ); |
399 | } | 401 | } |
400 | 402 | ||
401 | 403 | ||
402 | #ifndef QT_NO_DATASTREAM | 404 | #ifndef QT_NO_DATASTREAM |
403 | void OListViewItem::serializeTo( QDataStream& s ) const | 405 | void OListViewItem::serializeTo( QDataStream& s ) const |
404 | { | 406 | { |
405 | #warning Caution... the binary format is still under construction... | 407 | #warning Caution... the binary format is still under construction... |
406 | odebug << "storing OListViewItem..." << oendl; | 408 | odebug << "storing OListViewItem..." << oendl; |
407 | 409 | ||
408 | // store item text | 410 | // store item text |
409 | for ( int i = 0; i < listView()->columns(); ++i ) | 411 | for ( int i = 0; i < listView()->columns(); ++i ) |
410 | { | 412 | { |
411 | s << text( i ); | 413 | s << text( i ); |
412 | } | 414 | } |
413 | 415 | ||
414 | // calculate the number of children to serialize | 416 | // calculate the number of children to serialize |
415 | int items = 0; | 417 | int items = 0; |
416 | QListViewItem* item = firstChild(); | 418 | QListViewItem* item = firstChild(); |
417 | while ( item ) | 419 | while ( item ) |
418 | { | 420 | { |
419 | item = item->nextSibling(); | 421 | item = item->nextSibling(); |
420 | items++; | 422 | items++; |
421 | } | 423 | } |
422 | 424 | ||
423 | // store number of items and the items itself | 425 | // store number of items and the items itself |
424 | s << items; | 426 | s << items; |
425 | item = firstChild(); | 427 | item = firstChild(); |
426 | for ( int i = 0; i < items; ++i ) | 428 | for ( int i = 0; i < items; ++i ) |
427 | { | 429 | { |
428 | s << *static_cast<OListViewItem*>( item ); | 430 | s << *static_cast<OListViewItem*>( item ); |
429 | item = item->nextSibling(); | 431 | item = item->nextSibling(); |
430 | } | 432 | } |
431 | 433 | ||
432 | odebug << "OListviewItem stored." << oendl; | 434 | odebug << "OListviewItem stored." << oendl; |
433 | } | 435 | } |
434 | 436 | ||
435 | 437 | ||
436 | void OListViewItem::serializeFrom( QDataStream& s ) | 438 | void OListViewItem::serializeFrom( QDataStream& s ) |
437 | { | 439 | { |
438 | #warning Caution... the binary format is still under construction... | 440 | #warning Caution... the binary format is still under construction... |
439 | odebug << "loading OListViewItem..." << oendl; | 441 | odebug << "loading OListViewItem..." << oendl; |
440 | 442 | ||
441 | for ( int i = 0; i < listView()->columns(); ++i ) | 443 | for ( int i = 0; i < listView()->columns(); ++i ) |
442 | { | 444 | { |
443 | QString coltext; | 445 | QString coltext; |
444 | s >> coltext; | 446 | s >> coltext; |
445 | odebug << "read text '" << coltext << "' for column " << i << "" << oendl; | 447 | odebug << "read text '" << coltext << "' for column " << i << "" << oendl; |
446 | setText( i, coltext ); | 448 | setText( i, coltext ); |
447 | } | 449 | } |
448 | 450 | ||
449 | int items; | 451 | int items; |
450 | s >> items; | 452 | s >> items; |
451 | odebug << "read number of items = " << items << "" << oendl; | 453 | odebug << "read number of items = " << items << "" << oendl; |
452 | 454 | ||
453 | for ( int i = 0; i < items; ++i ) | 455 | for ( int i = 0; i < items; ++i ) |
454 | { | 456 | { |
455 | OListViewItem* item = childFactory(); | 457 | OListViewItem* item = childFactory(); |
456 | s >> (*item); | 458 | s >> (*item); |
457 | } | 459 | } |
458 | 460 | ||
459 | odebug << "OListViewItem loaded." << oendl; | 461 | odebug << "OListViewItem loaded." << oendl; |
460 | } | 462 | } |
461 | 463 | ||
462 | 464 | ||
463 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) | 465 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) |
464 | { | 466 | { |
465 | lvi.serializeTo( s ); | 467 | lvi.serializeTo( s ); |
468 | return s; | ||
466 | } | 469 | } |
467 | 470 | ||
468 | 471 | ||
469 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | 472 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) |
470 | { | 473 | { |
471 | lvi.serializeFrom( s ); | 474 | lvi.serializeFrom( s ); |
475 | return s; | ||
472 | } | 476 | } |
473 | #endif // QT_NO_DATASTREAM | 477 | #endif // QT_NO_DATASTREAM |
474 | 478 | ||
475 | 479 | ||
476 | /*====================================================================================== | 480 | /*====================================================================================== |
477 | * OCheckListItem | 481 | * OCheckListItem |
478 | *======================================================================================*/ | 482 | *======================================================================================*/ |
479 | 483 | ||
480 | OCheckListItem::OCheckListItem( QCheckListItem* parent, const QString& text, Type t ) | 484 | OCheckListItem::OCheckListItem( QCheckListItem* parent, const QString& text, Type t ) |
481 | :QCheckListItem( parent, text, t ) | 485 | :QCheckListItem( parent, text, t ) |
482 | { | 486 | { |
483 | init(); | 487 | init(); |
484 | } | 488 | } |
485 | 489 | ||
486 | 490 | ||
487 | OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, Type t) | 491 | OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, Type t) |
488 | :QCheckListItem( parent, text, t ) | 492 | :QCheckListItem( parent, text, t ) |
489 | { | 493 | { |
490 | init(); | 494 | init(); |
491 | } | 495 | } |
492 | 496 | ||
493 | 497 | ||
494 | OCheckListItem::OCheckListItem( QListView* parent, const QString& text, Type t ) | 498 | OCheckListItem::OCheckListItem( QListView* parent, const QString& text, Type t ) |
495 | :QCheckListItem( parent, text, t ) | 499 | :QCheckListItem( parent, text, t ) |
496 | { | 500 | { |
497 | init(); | 501 | init(); |
498 | } | 502 | } |
499 | 503 | ||
500 | 504 | ||
501 | OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, const QPixmap& p ) | 505 | OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, const QPixmap& p ) |
502 | :QCheckListItem( parent, text, p ) | 506 | :QCheckListItem( parent, text, p ) |
503 | { | 507 | { |
504 | init(); | 508 | init(); |
505 | } | 509 | } |
506 | 510 | ||
507 | 511 | ||
508 | OCheckListItem::OCheckListItem( QListView* parent, const QString& text, const QPixmap& p ) | 512 | OCheckListItem::OCheckListItem( QListView* parent, const QString& text, const QPixmap& p ) |
509 | :QCheckListItem( parent, text, p ) | 513 | :QCheckListItem( parent, text, p ) |
510 | { | 514 | { |
511 | init(); | 515 | init(); |
512 | } | 516 | } |
513 | 517 | ||
514 | 518 | ||
515 | OCheckListItem::~OCheckListItem() | 519 | OCheckListItem::~OCheckListItem() |
516 | { | 520 | { |
517 | } | 521 | } |
518 | 522 | ||
519 | void OCheckListItem::init() | 523 | void OCheckListItem::init() |
520 | { | 524 | { |
521 | m_known = false; | 525 | m_known = false; |
522 | } | 526 | } |
523 | 527 | ||
524 | 528 | ||
525 | const QColor &OCheckListItem::backgroundColor() | 529 | const QColor &OCheckListItem::backgroundColor() |
526 | { | 530 | { |
527 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : | 531 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : |
528 | listView()->viewport()->colorGroup().base(); | 532 | listView()->viewport()->colorGroup().base(); |
529 | } | 533 | } |
530 | 534 | ||
531 | 535 | ||
532 | bool OCheckListItem::isAlternate() | 536 | bool OCheckListItem::isAlternate() |
533 | { | 537 | { |
534 | OListView *lv = static_cast<OListView*>( listView() ); | 538 | OListView *lv = static_cast<OListView*>( listView() ); |
535 | 539 | ||
536 | // check if the item above is an OCheckListItem | 540 | // check if the item above is an OCheckListItem |
537 | OCheckListItem *above = static_cast<OCheckListItem*>( itemAbove() ); | 541 | OCheckListItem *above = static_cast<OCheckListItem*>( itemAbove() ); |
538 | /*if (! itemAbove()->inherits( "OCheckListItem" )) return false;*/ | 542 | /*if (! itemAbove()->inherits( "OCheckListItem" )) return false;*/ |
539 | 543 | ||
540 | // check if we have a valid alternate background color | 544 | // check if we have a valid alternate background color |
541 | if (!(lv && lv->alternateBackground().isValid())) return false; | 545 | if (!(lv && lv->alternateBackground().isValid())) return false; |
542 | 546 | ||
543 | m_known = above ? above->m_known : true; | 547 | m_known = above ? above->m_known : true; |
544 | if (m_known) | 548 | if (m_known) |
545 | { | 549 | { |
546 | m_odd = above ? !above->m_odd : false; | 550 | m_odd = above ? !above->m_odd : false; |
547 | } | 551 | } |
548 | else | 552 | else |
549 | { | 553 | { |
550 | OCheckListItem *item; | 554 | OCheckListItem *item; |
551 | bool previous = true; | 555 | bool previous = true; |
552 | if (parent()) | 556 | if (parent()) |
553 | { | 557 | { |
554 | item = static_cast<OCheckListItem *>(parent()); | 558 | item = static_cast<OCheckListItem *>(parent()); |
555 | if ( item /*&& item->inherits( "OCheckListItem" )*/ ) previous = item->m_odd; | 559 | if ( item /*&& item->inherits( "OCheckListItem" )*/ ) previous = item->m_odd; |
556 | item = static_cast<OCheckListItem *>(parent()->firstChild()); | 560 | item = static_cast<OCheckListItem *>(parent()->firstChild()); |
557 | /* if ( !item.inherits( "OCheckListItem" ) item = 0; */ | 561 | /* if ( !item.inherits( "OCheckListItem" ) item = 0; */ |
558 | } | 562 | } |
559 | else | 563 | else |
560 | { | 564 | { |
561 | item = static_cast<OCheckListItem *>(lv->firstChild()); | 565 | item = static_cast<OCheckListItem *>(lv->firstChild()); |
562 | } | 566 | } |
563 | 567 | ||
564 | while(item) | 568 | while(item) |
565 | { | 569 | { |
566 | item->m_odd = previous = !previous; | 570 | item->m_odd = previous = !previous; |
567 | item->m_known = true; | 571 | item->m_known = true; |
568 | item = static_cast<OCheckListItem *>(item->nextSibling()); | 572 | item = static_cast<OCheckListItem *>(item->nextSibling()); |
569 | /* if (!item.inherits( "OCheckListItem" ) ) break; */ | 573 | /* if (!item.inherits( "OCheckListItem" ) ) break; */ |
570 | } | 574 | } |
571 | } | 575 | } |
572 | return m_odd; | 576 | return m_odd; |
573 | } | 577 | } |
574 | 578 | ||
575 | 579 | ||
576 | void OCheckListItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) | 580 | void OCheckListItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) |
577 | { | 581 | { |
578 | QColorGroup _cg = cg; | 582 | QColorGroup _cg = cg; |
579 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); | 583 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); |
580 | if (pm && !pm->isNull()) | 584 | if (pm && !pm->isNull()) |
581 | { | 585 | { |
582 | _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); | 586 | _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); |
583 | p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); | 587 | p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); |
584 | } | 588 | } |
585 | else if ( isAlternate() ) | 589 | else if ( isAlternate() ) |
586 | { | 590 | { |
587 | _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); | 591 | _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); |
588 | } | 592 | } |
589 | QCheckListItem::paintCell( p, _cg, column, width, alignment ); | 593 | QCheckListItem::paintCell( p, _cg, column, width, alignment ); |
590 | 594 | ||
591 | //FIXME: Use styling here! | 595 | //FIXME: Use styling here! |
592 | 596 | ||
593 | const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); | 597 | const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); |
594 | p->setPen( pen ); | 598 | p->setPen( pen ); |
595 | p->drawLine( width-1, 0, width-1, height() ); | 599 | p->drawLine( width-1, 0, width-1, height() ); |
596 | } | 600 | } |
597 | 601 | ||
598 | 602 | ||
599 | /*====================================================================================== | 603 | /*====================================================================================== |
600 | * ONamedListView | 604 | * ONamedListView |
601 | *======================================================================================*/ | 605 | *======================================================================================*/ |
602 | 606 | ||
603 | ONamedListView::ONamedListView( QWidget *parent, const char *name ) | 607 | ONamedListView::ONamedListView( QWidget *parent, const char *name ) |
604 | :OListView( parent, name ) | 608 | :OListView( parent, name ) |
605 | { | 609 | { |
606 | } | 610 | } |
607 | 611 | ||
608 | 612 | ||
609 | ONamedListView::~ONamedListView() | 613 | ONamedListView::~ONamedListView() |
610 | { | 614 | { |
611 | } | 615 | } |
612 | 616 | ||
613 | 617 | ||
614 | void ONamedListView::addColumns( const QStringList& columns ) | 618 | void ONamedListView::addColumns( const QStringList& columns ) |
615 | { | 619 | { |
616 | for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) | 620 | for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) |
617 | { | 621 | { |
618 | odebug << "adding column " << *it << "" << oendl; | 622 | odebug << "adding column " << *it << "" << oendl; |
619 | addColumn( *it ); | 623 | addColumn( *it ); |
620 | } | 624 | } |
621 | } | 625 | } |
622 | 626 | ||
623 | 627 | ||
624 | int ONamedListView::findColumn( const QString& text ) const | 628 | int ONamedListView::findColumn( const QString& text ) const |
625 | { | 629 | { |
626 | //FIXME: If used excessively, this will slow down performance of updates | 630 | //FIXME: If used excessively, this will slow down performance of updates |
627 | //FIXME: because of the linear search over all column texts. | 631 | //FIXME: because of the linear search over all column texts. |
628 | //FIXME: I will optimize later by using a hash map. | 632 | //FIXME: I will optimize later by using a hash map. |
629 | for ( int i = 0; i < columns(); ++i ) | 633 | for ( int i = 0; i < columns(); ++i ) |
630 | if ( columnText( i ) == text ) | 634 | if ( columnText( i ) == text ) |
631 | return i; | 635 | return i; |
632 | return -1; | 636 | return -1; |
633 | } | 637 | } |
634 | 638 | ||
635 | 639 | ||
636 | ONamedListViewItem* ONamedListView::find( int column, const QString& text, int recurse ) const | 640 | ONamedListViewItem* ONamedListView::find( int column, const QString& text, int recurse ) const |
637 | { | 641 | { |
638 | return find( (ONamedListViewItem*) firstChild(), column, text, recurse ); | 642 | return find( (ONamedListViewItem*) firstChild(), column, text, recurse ); |
639 | } | 643 | } |
640 | 644 | ||
641 | 645 | ||
642 | ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, int column, const QString& text, int recurse ) const | 646 | ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, int column, const QString& text, int recurse ) const |
643 | { | 647 | { |
644 | ONamedListViewItem* result; | 648 | ONamedListViewItem* result; |
645 | while ( item && item->text( column ) != text ) | 649 | while ( item && item->text( column ) != text ) |
646 | { | 650 | { |
647 | odebug << "checked " << item->text( column ) << "" << oendl; | 651 | odebug << "checked " << item->text( column ) << "" << oendl; |
648 | 652 | ||
649 | if ( recurse < 0 || recurse > 0 ) | 653 | if ( recurse < 0 || recurse > 0 ) |
650 | { | 654 | { |
651 | odebug << "recursion is " << recurse << " - recursing into..." << oendl; | 655 | odebug << "recursion is " << recurse << " - recursing into..." << oendl; |
652 | result = find( (ONamedListViewItem*) item->firstChild(), column, text, recurse-1 ); | 656 | result = find( (ONamedListViewItem*) item->firstChild(), column, text, recurse-1 ); |
653 | if ( result ) return result; | 657 | if ( result ) return result; |
654 | } | 658 | } |
655 | 659 | ||
656 | 660 | ||
657 | item = (ONamedListViewItem*) item->itemBelow(); | 661 | item = (ONamedListViewItem*) item->itemBelow(); |
658 | } | 662 | } |
659 | if ( item && item->text( column ) == text ) | 663 | if ( item && item->text( column ) == text ) |
660 | return item; | 664 | return item; |
661 | else | 665 | else |
662 | return 0; | 666 | return 0; |
663 | } | 667 | } |
664 | 668 | ||
665 | 669 | ||
666 | ONamedListViewItem* ONamedListView::find( const QString& column, const QString& text, int recurse ) const | 670 | ONamedListViewItem* ONamedListView::find( const QString& column, const QString& text, int recurse ) const |
667 | { | 671 | { |
668 | int col = findColumn( column ); | 672 | int col = findColumn( column ); |
669 | if ( col != -1 ) | 673 | if ( col != -1 ) |
670 | return find( (ONamedListViewItem*) firstChild(), col, text, recurse ); | 674 | return find( (ONamedListViewItem*) firstChild(), col, text, recurse ); |
671 | else | 675 | else |
672 | return 0; | 676 | return 0; |
673 | } | 677 | } |
674 | 678 | ||
675 | 679 | ||
676 | ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, const QString& column, const QString& text, int recurse ) const | 680 | ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, const QString& column, const QString& text, int recurse ) const |
677 | { | 681 | { |
678 | int col = findColumn( column ); | 682 | int col = findColumn( column ); |
679 | if ( col != -1 ) | 683 | if ( col != -1 ) |
680 | return find( item, col, text, recurse ); | 684 | return find( item, col, text, recurse ); |
681 | else | 685 | else |
682 | return 0; | 686 | return 0; |
683 | } | 687 | } |
684 | 688 | ||
685 | 689 | ||
686 | /*====================================================================================== | 690 | /*====================================================================================== |
687 | * ONamedListViewItem | 691 | * ONamedListViewItem |
688 | *======================================================================================*/ | 692 | *======================================================================================*/ |
689 | 693 | ||
690 | ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) | 694 | ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) |
691 | :OListViewItem( parent ) | 695 | :OListViewItem( parent ) |
692 | { | 696 | { |
693 | setText( texts ); | 697 | setText( texts ); |
694 | } | 698 | } |
695 | 699 | ||
696 | 700 | ||
697 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) | 701 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) |
698 | :OListViewItem( parent ) | 702 | :OListViewItem( parent ) |
699 | { | 703 | { |
700 | setText( texts ); | 704 | setText( texts ); |
701 | } | 705 | } |
702 | 706 | ||
703 | 707 | ||
704 | ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ) | 708 | ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ) |
705 | :OListViewItem( parent, after ) | 709 | :OListViewItem( parent, after ) |
706 | { | 710 | { |
707 | setText( texts ); | 711 | setText( texts ); |
708 | } | 712 | } |
709 | 713 | ||
710 | 714 | ||
711 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ) | 715 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ) |
712 | :OListViewItem( parent, after ) | 716 | :OListViewItem( parent, after ) |
713 | { | 717 | { |
714 | setText( texts ); | 718 | setText( texts ); |
715 | } | 719 | } |
716 | 720 | ||
717 | 721 | ||
718 | ONamedListViewItem::~ONamedListViewItem() | 722 | ONamedListViewItem::~ONamedListViewItem() |
719 | { | 723 | { |
720 | } | 724 | } |
721 | 725 | ||
722 | 726 | ||
723 | void ONamedListViewItem::setText( const QStringList& texts ) | 727 | void ONamedListViewItem::setText( const QStringList& texts ) |
724 | { | 728 | { |
725 | int col = 0; | 729 | int col = 0; |
726 | for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) | 730 | for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) |
727 | { | 731 | { |
728 | odebug << "setting column " << col << " = text " << *it << "" << oendl; | 732 | odebug << "setting column " << col << " = text " << *it << "" << oendl; |
729 | OListViewItem::setText( col++, *it ); | 733 | OListViewItem::setText( col++, *it ); |
730 | } | 734 | } |
731 | 735 | ||
732 | } | 736 | } |
733 | 737 | ||
734 | 738 | ||
735 | void ONamedListViewItem::setText( const QString& column, const QString& text ) | 739 | void ONamedListViewItem::setText( const QString& column, const QString& text ) |
736 | { | 740 | { |
737 | //FIXME: If used excessively, this will slow down performance of updates | 741 | //FIXME: If used excessively, this will slow down performance of updates |
738 | //FIXME: because of the linear search over all column texts. | 742 | //FIXME: because of the linear search over all column texts. |
739 | //FIXME: I will optimize later by using a hash map. | 743 | //FIXME: I will optimize later by using a hash map. |
740 | int col = ( (ONamedListView*) listView() )->findColumn( column ); | 744 | int col = ( (ONamedListView*) listView() )->findColumn( column ); |
741 | if ( col != -1 ) | 745 | if ( col != -1 ) |
742 | OListViewItem::setText( col, text ); | 746 | OListViewItem::setText( col, text ); |
743 | else | 747 | else |
744 | owarn << "ONamedListViewItem::setText(): Warning! Columntext '" << column << "' not found." << oendl; | 748 | owarn << "ONamedListViewItem::setText(): Warning! Columntext '" << column << "' not found." << oendl; |
745 | } | 749 | } |
746 | 750 | ||
747 | 751 | ||
748 | ONamedListViewItem* ONamedListViewItem::find( int column, const QString& text, int recurse ) const | 752 | ONamedListViewItem* ONamedListViewItem::find( int column, const QString& text, int recurse ) const |
749 | { | 753 | { |
750 | return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), column, text, recurse ); | 754 | return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), column, text, recurse ); |
751 | } | 755 | } |
752 | 756 | ||
753 | 757 | ||
754 | ONamedListViewItem* ONamedListViewItem::find( const QString& column, const QString& text, int recurse ) const | 758 | ONamedListViewItem* ONamedListViewItem::find( const QString& column, const QString& text, int recurse ) const |
755 | { | 759 | { |
756 | int col = ( (ONamedListView*) listView() )->findColumn( column ); | 760 | int col = ( (ONamedListView*) listView() )->findColumn( column ); |
757 | if ( col != -1 ) | 761 | if ( col != -1 ) |
758 | return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), col, text, recurse ); | 762 | return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), col, text, recurse ); |
759 | else | 763 | else |
760 | return 0; | 764 | return 0; |
761 | } | 765 | } |
762 | 766 | ||
763 | } | 767 | } |
764 | } | 768 | } |
diff --git a/libopie2/opieui/oselector.cpp b/libopie2/opieui/oselector.cpp index 5f6f10f..05543c5 100644 --- a/libopie2/opieui/oselector.cpp +++ b/libopie2/opieui/oselector.cpp | |||
@@ -1,340 +1,342 @@ | |||
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 | ||
39 | using namespace Opie::Ui; | 39 | using namespace Opie::Ui; |
40 | 40 | ||
41 | OXYSelector::OXYSelector( QWidget *parent, const char *name ) | 41 | OXYSelector::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 | ||
55 | OXYSelector::~OXYSelector() | 55 | OXYSelector::~OXYSelector() |
56 | {} | 56 | {} |
57 | 57 | ||
58 | 58 | ||
59 | void OXYSelector::setRange( int _minX, int _minY, int _maxX, int _maxY ) | 59 | void 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 | ||
69 | void OXYSelector::setValues( int _xPos, int _yPos ) | 69 | void 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 | ||
90 | QRect OXYSelector::contentsRect() const | 90 | QRect 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 | ||
95 | void OXYSelector::paintEvent( QPaintEvent *ev ) | 95 | void 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 | ||
122 | void OXYSelector::mousePressEvent( QMouseEvent *e ) | 122 | void 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 | ||
131 | void OXYSelector::mouseMoveEvent( QMouseEvent *e ) | 131 | void 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 | ||
140 | void OXYSelector::wheelEvent( QWheelEvent *e ) | 140 | void OXYSelector::wheelEvent( QWheelEvent *e ) |
141 | { | 141 | { |
142 | #if QT_VERSION > 290 | 142 | #if QT_VERSION > 290 |
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 | ||
150 | Q_UNUSED( e ) | ||
149 | #endif | 151 | #endif |
150 | } | 152 | } |
151 | 153 | ||
152 | void OXYSelector::valuesFromPosition( int x, int y, int &xVal, int &yVal ) const | 154 | void OXYSelector::valuesFromPosition( int x, int y, int &xVal, int &yVal ) const |
153 | { | 155 | { |
154 | xVal = ( (maxX-minX) * (x-2) ) / ( width()-4 ); | 156 | xVal = ( (maxX-minX) * (x-2) ) / ( width()-4 ); |
155 | yVal = maxY - ( ( (maxY-minY) * (y-2) ) / ( height()-4 ) ); | 157 | yVal = maxY - ( ( (maxY-minY) * (y-2) ) / ( height()-4 ) ); |
156 | 158 | ||
157 | if ( xVal > maxX ) | 159 | if ( xVal > maxX ) |
158 | xVal = maxX; | 160 | xVal = maxX; |
159 | else if ( xVal < minX ) | 161 | else if ( xVal < minX ) |
160 | xVal = minX; | 162 | xVal = minX; |
161 | 163 | ||
162 | if ( yVal > maxY ) | 164 | if ( yVal > maxY ) |
163 | yVal = maxY; | 165 | yVal = maxY; |
164 | else if ( yVal < minY ) | 166 | else if ( yVal < minY ) |
165 | yVal = minY; | 167 | yVal = minY; |
166 | } | 168 | } |
167 | 169 | ||
168 | void OXYSelector::setPosition( int xp, int yp ) | 170 | void OXYSelector::setPosition( int xp, int yp ) |
169 | { | 171 | { |
170 | if ( xp < 2 ) | 172 | if ( xp < 2 ) |
171 | xp = 2; | 173 | xp = 2; |
172 | else if ( xp > width() - 2 ) | 174 | else if ( xp > width() - 2 ) |
173 | xp = width() - 2; | 175 | xp = width() - 2; |
174 | 176 | ||
175 | if ( yp < 2 ) | 177 | if ( yp < 2 ) |
176 | yp = 2; | 178 | yp = 2; |
177 | else if ( yp > height() - 2 ) | 179 | else if ( yp > height() - 2 ) |
178 | yp = height() - 2; | 180 | yp = height() - 2; |
179 | 181 | ||
180 | QPainter painter; | 182 | QPainter painter; |
181 | painter.begin( this ); | 183 | painter.begin( this ); |
182 | 184 | ||
183 | bitBlt( this, px - STORE_W, py - STORE_W, &store, 0, 0, | 185 | bitBlt( this, px - STORE_W, py - STORE_W, &store, 0, 0, |
184 | STORE_W2, STORE_W2, CopyROP ); | 186 | STORE_W2, STORE_W2, CopyROP ); |
185 | bitBlt( &store, 0, 0, this, xp - STORE_W, yp - STORE_W, | 187 | bitBlt( &store, 0, 0, this, xp - STORE_W, yp - STORE_W, |
186 | STORE_W2, STORE_W2, CopyROP ); | 188 | STORE_W2, STORE_W2, CopyROP ); |
187 | drawCursor( &painter, xp, yp ); | 189 | drawCursor( &painter, xp, yp ); |
188 | px = xp; | 190 | px = xp; |
189 | py = yp; | 191 | py = yp; |
190 | 192 | ||
191 | painter.end(); | 193 | painter.end(); |
192 | } | 194 | } |
193 | 195 | ||
194 | void OXYSelector::drawContents( QPainter * ) | 196 | void OXYSelector::drawContents( QPainter * ) |
195 | {} | 197 | {} |
196 | 198 | ||
197 | 199 | ||
198 | void OXYSelector::drawCursor( QPainter *p, int xp, int yp ) | 200 | void OXYSelector::drawCursor( QPainter *p, int xp, int yp ) |
199 | { | 201 | { |
200 | p->setPen( QPen( white ) ); | 202 | p->setPen( QPen( white ) ); |
201 | 203 | ||
202 | p->drawLine( xp - 6, yp - 6, xp - 2, yp - 2 ); | 204 | p->drawLine( xp - 6, yp - 6, xp - 2, yp - 2 ); |
203 | p->drawLine( xp - 6, yp + 6, xp - 2, yp + 2 ); | 205 | p->drawLine( xp - 6, yp + 6, xp - 2, yp + 2 ); |
204 | p->drawLine( xp + 6, yp - 6, xp + 2, yp - 2 ); | 206 | p->drawLine( xp + 6, yp - 6, xp + 2, yp - 2 ); |
205 | p->drawLine( xp + 6, yp + 6, xp + 2, yp + 2 ); | 207 | p->drawLine( xp + 6, yp + 6, xp + 2, yp + 2 ); |
206 | } | 208 | } |
207 | 209 | ||
208 | //----------------------------------------------------------------------------- | 210 | //----------------------------------------------------------------------------- |
209 | /* | 211 | /* |
210 | * 1D value selector with contents drawn by derived class. | 212 | * 1D value selector with contents drawn by derived class. |
211 | * See OColorDialog for example. | 213 | * See OColorDialog for example. |
212 | */ | 214 | */ |
213 | 215 | ||
214 | 216 | ||
215 | OSelector::OSelector( QWidget *parent, const char *name ) | 217 | OSelector::OSelector( QWidget *parent, const char *name ) |
216 | : QWidget( parent, name ), QRangeControl() | 218 | : QWidget( parent, name ), QRangeControl() |
217 | { | 219 | { |
218 | _orientation = Horizontal; | 220 | _orientation = Horizontal; |
219 | _indent = TRUE; | 221 | _indent = TRUE; |
220 | } | 222 | } |
221 | 223 | ||
222 | OSelector::OSelector( Orientation o, QWidget *parent, const char *name ) | 224 | OSelector::OSelector( Orientation o, QWidget *parent, const char *name ) |
223 | : QWidget( parent, name ), QRangeControl() | 225 | : QWidget( parent, name ), QRangeControl() |
224 | { | 226 | { |
225 | _orientation = o; | 227 | _orientation = o; |
226 | _indent = TRUE; | 228 | _indent = TRUE; |
227 | } | 229 | } |
228 | 230 | ||
229 | 231 | ||
230 | OSelector::~OSelector() | 232 | OSelector::~OSelector() |
231 | {} | 233 | {} |
232 | 234 | ||
233 | 235 | ||
234 | QRect OSelector::contentsRect() const | 236 | QRect OSelector::contentsRect() const |
235 | { | 237 | { |
236 | if ( orientation() == Vertical ) | 238 | if ( orientation() == Vertical ) |
237 | return QRect( 2, 5, width()-9, height()-10 ); | 239 | return QRect( 2, 5, width()-9, height()-10 ); |
238 | else | 240 | else |
239 | return QRect( 5, 2, width()-10, height()-9 ); | 241 | return QRect( 5, 2, width()-10, height()-9 ); |
240 | } | 242 | } |
241 | 243 | ||
242 | void OSelector::paintEvent( QPaintEvent * ) | 244 | void OSelector::paintEvent( QPaintEvent * ) |
243 | { | 245 | { |
244 | QPainter painter; | 246 | QPainter painter; |
245 | 247 | ||
246 | painter.begin( this ); | 248 | painter.begin( this ); |
247 | 249 | ||
248 | drawContents( &painter ); | 250 | drawContents( &painter ); |
249 | 251 | ||
250 | QBrush brush; | 252 | QBrush brush; |
251 | 253 | ||
252 | if ( indent() ) | 254 | if ( indent() ) |
253 | { | 255 | { |
254 | if ( orientation() == Vertical ) | 256 | if ( orientation() == Vertical ) |
255 | qDrawShadePanel( &painter, 0, 3, width()-5, height()-6, | 257 | qDrawShadePanel( &painter, 0, 3, width()-5, height()-6, |
256 | colorGroup(), TRUE, 2, &brush ); | 258 | colorGroup(), TRUE, 2, &brush ); |
257 | else | 259 | else |
258 | qDrawShadePanel( &painter, 3, 0, width()-6, height()-5, | 260 | qDrawShadePanel( &painter, 3, 0, width()-6, height()-5, |
259 | colorGroup(), TRUE, 2, &brush ); | 261 | colorGroup(), TRUE, 2, &brush ); |
260 | } | 262 | } |
261 | 263 | ||
262 | QPoint pos = calcArrowPos( value() ); | 264 | QPoint pos = calcArrowPos( value() ); |
263 | drawArrow( &painter, TRUE, pos ); | 265 | drawArrow( &painter, TRUE, pos ); |
264 | 266 | ||
265 | painter.end(); | 267 | painter.end(); |
266 | } | 268 | } |
267 | 269 | ||
268 | void OSelector::mousePressEvent( QMouseEvent *e ) | 270 | void OSelector::mousePressEvent( QMouseEvent *e ) |
269 | { | 271 | { |
270 | moveArrow( e->pos() ); | 272 | moveArrow( e->pos() ); |
271 | } | 273 | } |
272 | 274 | ||
273 | void OSelector::mouseMoveEvent( QMouseEvent *e ) | 275 | void OSelector::mouseMoveEvent( QMouseEvent *e ) |
274 | { | 276 | { |
275 | moveArrow( e->pos() ); | 277 | moveArrow( e->pos() ); |
276 | } | 278 | } |
277 | 279 | ||
278 | void OSelector::wheelEvent( QWheelEvent *e ) | 280 | void OSelector::wheelEvent( QWheelEvent *e ) |
279 | { | 281 | { |
280 | int val = value() + e->delta()/120; | 282 | int val = value() + e->delta()/120; |
281 | emit valueChanged( val ); | 283 | emit valueChanged( val ); |
282 | setValue( val ); | 284 | setValue( val ); |
283 | } | 285 | } |
284 | 286 | ||
285 | void OSelector::valueChange() | 287 | void OSelector::valueChange() |
286 | { | 288 | { |
287 | QPainter painter; | 289 | QPainter painter; |
288 | QPoint pos; | 290 | QPoint pos; |
289 | 291 | ||
290 | painter.begin( this ); | 292 | painter.begin( this ); |
291 | 293 | ||
292 | pos = calcArrowPos( prevValue() ); | 294 | pos = calcArrowPos( prevValue() ); |
293 | drawArrow( &painter, FALSE, pos ); | 295 | drawArrow( &painter, FALSE, pos ); |
294 | 296 | ||
295 | pos = calcArrowPos( value() ); | 297 | pos = calcArrowPos( value() ); |
296 | drawArrow( &painter, TRUE, pos ); | 298 | drawArrow( &painter, TRUE, pos ); |
297 | 299 | ||
298 | painter.end(); | 300 | painter.end(); |
299 | } | 301 | } |
300 | 302 | ||
301 | void OSelector::moveArrow( const QPoint &pos ) | 303 | void OSelector::moveArrow( const QPoint &pos ) |
302 | { | 304 | { |
303 | int val; | 305 | int val; |
304 | 306 | ||
305 | if ( orientation() == Vertical ) | 307 | if ( orientation() == Vertical ) |
306 | val = ( maxValue() - minValue() ) * (height()-pos.y()-3) | 308 | val = ( maxValue() - minValue() ) * (height()-pos.y()-3) |
307 | / (height()-10) + minValue(); | 309 | / (height()-10) + minValue(); |
308 | else | 310 | else |
309 | val = ( maxValue() - minValue() ) * (width()-pos.x()-3) | 311 | val = ( maxValue() - minValue() ) * (width()-pos.x()-3) |
310 | / (width()-10) + minValue(); | 312 | / (width()-10) + minValue(); |
311 | 313 | ||
312 | if ( val > maxValue() ) | 314 | if ( val > maxValue() ) |
313 | val = maxValue(); | 315 | val = maxValue(); |
314 | if ( val < minValue() ) | 316 | if ( val < minValue() ) |
315 | val = minValue(); | 317 | val = minValue(); |
316 | 318 | ||
317 | emit valueChanged( val ); | 319 | emit valueChanged( val ); |
318 | setValue( val ); | 320 | setValue( val ); |
319 | } | 321 | } |
320 | 322 | ||
321 | QPoint OSelector::calcArrowPos( int val ) | 323 | QPoint OSelector::calcArrowPos( int val ) |
322 | { | 324 | { |
323 | QPoint p; | 325 | QPoint p; |
324 | 326 | ||
325 | if ( orientation() == Vertical ) | 327 | if ( orientation() == Vertical ) |
326 | { | 328 | { |
327 | p.setY( height() - ( (height()-10) * val | 329 | p.setY( height() - ( (height()-10) * val |
328 | / ( maxValue() - minValue() ) + 5 ) ); | 330 | / ( maxValue() - minValue() ) + 5 ) ); |
329 | p.setX( width() - 5 ); | 331 | p.setX( width() - 5 ); |
330 | } | 332 | } |
331 | else | 333 | else |
332 | { | 334 | { |
333 | p.setX( width() - ( (width()-10) * val | 335 | p.setX( width() - ( (width()-10) * val |
334 | / ( maxValue() - minValue() ) + 5 ) ); | 336 | / ( maxValue() - minValue() ) + 5 ) ); |
335 | p.setY( height() - 5 ); | 337 | p.setY( height() - 5 ); |
336 | } | 338 | } |
337 | 339 | ||
338 | return p; | 340 | return p; |
339 | } | 341 | } |
340 | 342 | ||
diff --git a/libopie2/opieui/owait.cpp b/libopie2/opieui/owait.cpp index 9519888..ec1f25a 100644 --- a/libopie2/opieui/owait.cpp +++ b/libopie2/opieui/owait.cpp | |||
@@ -1,112 +1,113 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 Maximilian Reiss <harlekin@handhelds.org> | 3 | Copyright (C) 2003 Maximilian Reiss <harlekin@handhelds.org> |
4 | =. | 4 | =. |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "owait.h" | 31 | #include "owait.h" |
32 | 32 | ||
33 | /* OPIE */ | 33 | /* OPIE */ |
34 | #include <qpe/qpeapplication.h> | 34 | #include <qpe/qpeapplication.h> |
35 | #include <qpe/resource.h> | 35 | #include <qpe/resource.h> |
36 | 36 | ||
37 | /* QT */ | 37 | /* QT */ |
38 | #include <qlayout.h> | 38 | #include <qlayout.h> |
39 | #include <qpainter.h> | 39 | #include <qpainter.h> |
40 | 40 | ||
41 | using namespace Opie::Ui; | 41 | using namespace Opie::Ui; |
42 | 42 | ||
43 | static int frame = 0; | 43 | static int frame = 0; |
44 | 44 | ||
45 | /** | 45 | /** |
46 | * This will construct a modal dialog. | 46 | * This will construct a modal dialog. |
47 | * | 47 | * |
48 | * The default timer length is 10. | 48 | * The default timer length is 10. |
49 | * | 49 | * |
50 | * @param parent The parent of the widget | 50 | * @param parent The parent of the widget |
51 | * @param msg The name of the object | 51 | * @param msg The name of the object |
52 | * @param dispIcon Display Icon? | 52 | * @param dispIcon Display Icon? |
53 | */ | 53 | */ |
54 | OWait::OWait( QWidget *parent, const char* msg, bool dispIcon ) | 54 | OWait::OWait( QWidget *parent, const char* msg, bool dispIcon ) |
55 | :QDialog( parent, msg, TRUE, WStyle_Customize ) | 55 | :QDialog( parent, msg, TRUE, WStyle_Customize ) |
56 | { | 56 | { |
57 | 57 | ||
58 | Q_UNUSED( dispIcon ) | ||
58 | 59 | ||
59 | QHBoxLayout * hbox = new QHBoxLayout( this ); | 60 | QHBoxLayout * hbox = new QHBoxLayout( this ); |
60 | 61 | ||
61 | m_lb = new QLabel( this ); | 62 | m_lb = new QLabel( this ); |
62 | m_lb->setBackgroundMode ( NoBackground ); | 63 | m_lb->setBackgroundMode ( NoBackground ); |
63 | 64 | ||
64 | hbox->addWidget( m_lb ); | 65 | hbox->addWidget( m_lb ); |
65 | hbox->activate(); | 66 | hbox->activate(); |
66 | 67 | ||
67 | m_pix = Resource::loadPixmap( "BigBusy" ); | 68 | m_pix = Resource::loadPixmap( "BigBusy" ); |
68 | m_aniSize = m_pix.height(); | 69 | m_aniSize = m_pix.height(); |
69 | resize( m_aniSize, m_aniSize ); | 70 | resize( m_aniSize, m_aniSize ); |
70 | 71 | ||
71 | m_timerLength = 10; | 72 | m_timerLength = 10; |
72 | 73 | ||
73 | m_waitTimer = new QTimer( this ); | 74 | m_waitTimer = new QTimer( this ); |
74 | connect( m_waitTimer, SIGNAL( timeout() ), this, SLOT( hide() ) ); | 75 | connect( m_waitTimer, SIGNAL( timeout() ), this, SLOT( hide() ) ); |
75 | } | 76 | } |
76 | 77 | ||
77 | void OWait::timerEvent( QTimerEvent * ) | 78 | void OWait::timerEvent( QTimerEvent * ) |
78 | { | 79 | { |
79 | frame = ( ++frame ) % 4; | 80 | frame = ( ++frame ) % 4; |
80 | repaint(); | 81 | repaint(); |
81 | } | 82 | } |
82 | 83 | ||
83 | void OWait::paintEvent( QPaintEvent * ) | 84 | void OWait::paintEvent( QPaintEvent * ) |
84 | { | 85 | { |
85 | QPainter p( m_lb ); | 86 | QPainter p( m_lb ); |
86 | p.drawPixmap( 0, 0, m_pix, m_aniSize * frame, 0, m_aniSize, m_aniSize ); | 87 | p.drawPixmap( 0, 0, m_pix, m_aniSize * frame, 0, m_aniSize, m_aniSize ); |
87 | } | 88 | } |
88 | 89 | ||
89 | void OWait::show() | 90 | void OWait::show() |
90 | { | 91 | { |
91 | 92 | ||
92 | move( ( ( qApp->desktop() ->width() ) / 2 ) - ( m_aniSize / 2 ), ( ( qApp->desktop() ->height() ) / 2 ) - ( m_aniSize / 2 ) ); | 93 | move( ( ( qApp->desktop() ->width() ) / 2 ) - ( m_aniSize / 2 ), ( ( qApp->desktop() ->height() ) / 2 ) - ( m_aniSize / 2 ) ); |
93 | startTimer( 300 ); | 94 | startTimer( 300 ); |
94 | m_waitTimer->start( m_timerLength * 1000, true ); | 95 | m_waitTimer->start( m_timerLength * 1000, true ); |
95 | QDialog::show(); | 96 | QDialog::show(); |
96 | } | 97 | } |
97 | 98 | ||
98 | void OWait::hide() | 99 | void OWait::hide() |
99 | { | 100 | { |
100 | killTimers(); | 101 | killTimers(); |
101 | m_waitTimer->stop(); | 102 | m_waitTimer->stop(); |
102 | frame = 0; | 103 | frame = 0; |
103 | QDialog::hide(); | 104 | QDialog::hide(); |
104 | } | 105 | } |
105 | 106 | ||
106 | void OWait::setTimerLength( int length ) | 107 | void OWait::setTimerLength( int length ) |
107 | { | 108 | { |
108 | m_timerLength = length; | 109 | m_timerLength = length; |
109 | } | 110 | } |
110 | 111 | ||
111 | OWait::~OWait() | 112 | OWait::~OWait() |
112 | {} | 113 | {} |