-rw-r--r-- | libopie/otabwidget.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libopie/otabwidget.cpp b/libopie/otabwidget.cpp index 1b8c085..3a9a5ec 100644 --- a/libopie/otabwidget.cpp +++ b/libopie/otabwidget.cpp | |||
@@ -1,97 +1,98 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> | 4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include "otabwidget.h" | 32 | #include "otabwidget.h" |
33 | 33 | ||
34 | #include <qpe/applnk.h> | ||
34 | #include <qpe/config.h> | 35 | #include <qpe/config.h> |
35 | #include <qpe/resource.h> | 36 | #include <qpe/resource.h> |
36 | #include <opie/otabbar.h> | 37 | #include <opie/otabbar.h> |
37 | 38 | ||
38 | #include <qcombobox.h> | 39 | #include <qcombobox.h> |
39 | #include <qwidgetstack.h> | 40 | #include <qwidgetstack.h> |
40 | 41 | ||
41 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) | 42 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) |
42 | : QWidget( parent, name ) | 43 | : QWidget( parent, name ) |
43 | { | 44 | { |
44 | if ( s == Global ) | 45 | if ( s == Global ) |
45 | { | 46 | { |
46 | Config config( "qpe" ); | 47 | Config config( "qpe" ); |
47 | config.setGroup( "Appearance" ); | 48 | config.setGroup( "Appearance" ); |
48 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); | 49 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); |
49 | if ( s <= Global || s > IconList) | 50 | if ( s <= Global || s > IconList) |
50 | { | 51 | { |
51 | s = IconTab; | 52 | s = IconTab; |
52 | } | 53 | } |
53 | QString pos = config.readEntry( "TabPosition", "Top"); | 54 | QString pos = config.readEntry( "TabPosition", "Top"); |
54 | if ( pos == "Bottom" ) | 55 | if ( pos == "Bottom" ) |
55 | { | 56 | { |
56 | p = Bottom; | 57 | p = Bottom; |
57 | } | 58 | } |
58 | else | 59 | else |
59 | { | 60 | { |
60 | p = Top; | 61 | p = Top; |
61 | } | 62 | } |
62 | } | 63 | } |
63 | 64 | ||
64 | widgetStack = new QWidgetStack( this, "widgetstack" ); | 65 | widgetStack = new QWidgetStack( this, "widgetstack" ); |
65 | widgetStack->setFrameStyle( QFrame::NoFrame ); | 66 | widgetStack->setFrameStyle( QFrame::NoFrame ); |
66 | widgetStack->setLineWidth( style().defaultFrameWidth() ); | 67 | widgetStack->setLineWidth( style().defaultFrameWidth() ); |
67 | 68 | ||
68 | tabBarStack = new QWidgetStack( this, "tabbarstack" ); | 69 | tabBarStack = new QWidgetStack( this, "tabbarstack" ); |
69 | 70 | ||
70 | tabBar = new OTabBar( tabBarStack, "tabbar" ); | 71 | tabBar = new OTabBar( tabBarStack, "tabbar" ); |
71 | tabBarStack->addWidget( tabBar, 0 ); | 72 | tabBarStack->addWidget( tabBar, 0 ); |
72 | connect( tabBar, SIGNAL( selected( int ) ), this, SLOT( slotTabBarSelected( int ) ) ); | 73 | connect( tabBar, SIGNAL( selected( int ) ), this, SLOT( slotTabBarSelected( int ) ) ); |
73 | 74 | ||
74 | tabList = new QComboBox( false, tabBarStack, "tablist" ); | 75 | tabList = new QComboBox( false, tabBarStack, "tablist" ); |
75 | tabBarStack->addWidget( tabList, 1 ); | 76 | tabBarStack->addWidget( tabList, 1 ); |
76 | connect( tabList, SIGNAL( activated( int ) ), this, SLOT( slotTabListSelected( int ) ) ); | 77 | connect( tabList, SIGNAL( activated( int ) ), this, SLOT( slotTabListSelected( int ) ) ); |
77 | 78 | ||
78 | tabBarPosition = p; | 79 | tabBarPosition = p; |
79 | setTabStyle( s ); | 80 | setTabStyle( s ); |
80 | setTabPosition( p ); | 81 | setTabPosition( p ); |
81 | 82 | ||
82 | currTab= 0x0; | 83 | currTab= 0x0; |
83 | } | 84 | } |
84 | 85 | ||
85 | OTabWidget::~OTabWidget() | 86 | OTabWidget::~OTabWidget() |
86 | { | 87 | { |
87 | } | 88 | } |
88 | 89 | ||
89 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) | 90 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) |
90 | { | 91 | { |
91 | QPixmap iconset = loadSmooth( icon ); | 92 | QPixmap iconset = loadSmooth( icon ); |
92 | 93 | ||
93 | QTab *tab = new QTab(); | 94 | QTab *tab = new QTab(); |
94 | if ( tabBarStyle == IconTab ) | 95 | if ( tabBarStyle == IconTab ) |
95 | { | 96 | { |
96 | tab->label = QString::null; | 97 | tab->label = QString::null; |
97 | } | 98 | } |
@@ -265,132 +266,131 @@ void OTabWidget::setTabStyle( TabStyle s ) | |||
265 | tabBarStack->raiseWidget( tabBar ); | 266 | tabBarStack->raiseWidget( tabBar ); |
266 | } | 267 | } |
267 | else if ( tabBarStyle == TextList || tabBarStyle == IconList ) | 268 | else if ( tabBarStyle == TextList || tabBarStyle == IconList ) |
268 | { | 269 | { |
269 | tabList->clear(); | 270 | tabList->clear(); |
270 | for ( OTabInfo *tabinfo = tabs.first(); tabinfo; tabinfo = tabs.next() ) | 271 | for ( OTabInfo *tabinfo = tabs.first(); tabinfo; tabinfo = tabs.next() ) |
271 | { | 272 | { |
272 | if ( tabBarStyle == IconList ) | 273 | if ( tabBarStyle == IconList ) |
273 | { | 274 | { |
274 | tabList->insertItem( loadSmooth( tabinfo->icon() ), tabinfo->label() ); | 275 | tabList->insertItem( loadSmooth( tabinfo->icon() ), tabinfo->label() ); |
275 | } | 276 | } |
276 | else | 277 | else |
277 | { | 278 | { |
278 | tabList->insertItem( tabinfo->label() ); | 279 | tabList->insertItem( tabinfo->label() ); |
279 | } | 280 | } |
280 | } | 281 | } |
281 | tabBarStack->raiseWidget( tabList ); | 282 | tabBarStack->raiseWidget( tabList ); |
282 | } | 283 | } |
283 | setUpLayout(); | 284 | setUpLayout(); |
284 | } | 285 | } |
285 | 286 | ||
286 | OTabWidget::TabPosition OTabWidget::tabPosition() const | 287 | OTabWidget::TabPosition OTabWidget::tabPosition() const |
287 | { | 288 | { |
288 | return tabBarPosition; | 289 | return tabBarPosition; |
289 | } | 290 | } |
290 | 291 | ||
291 | void OTabWidget::setTabPosition( TabPosition p ) | 292 | void OTabWidget::setTabPosition( TabPosition p ) |
292 | { | 293 | { |
293 | tabBarPosition = p; | 294 | tabBarPosition = p; |
294 | if ( tabBarPosition == Top ) | 295 | if ( tabBarPosition == Top ) |
295 | { | 296 | { |
296 | tabBar->setShape( QTabBar::RoundedAbove ); | 297 | tabBar->setShape( QTabBar::RoundedAbove ); |
297 | } | 298 | } |
298 | else | 299 | else |
299 | { | 300 | { |
300 | tabBar->setShape( QTabBar::RoundedBelow ); | 301 | tabBar->setShape( QTabBar::RoundedBelow ); |
301 | } | 302 | } |
302 | setUpLayout(); | 303 | setUpLayout(); |
303 | } | 304 | } |
304 | 305 | ||
305 | void OTabWidget::slotTabBarSelected( int id ) | 306 | void OTabWidget::slotTabBarSelected( int id ) |
306 | { | 307 | { |
307 | OTabInfo *newtab = tabs.first(); | 308 | OTabInfo *newtab = tabs.first(); |
308 | while ( newtab && newtab->id() != id ) | 309 | while ( newtab && newtab->id() != id ) |
309 | { | 310 | { |
310 | newtab = tabs.next(); | 311 | newtab = tabs.next(); |
311 | } | 312 | } |
312 | if ( newtab && newtab->id() == id ) | 313 | if ( newtab && newtab->id() == id ) |
313 | { | 314 | { |
314 | selectTab( newtab ); | 315 | selectTab( newtab ); |
315 | } | 316 | } |
316 | } | 317 | } |
317 | 318 | ||
318 | void OTabWidget::slotTabListSelected( int index ) | 319 | void OTabWidget::slotTabListSelected( int index ) |
319 | { | 320 | { |
320 | OTabInfo *newtab = tabs.at( index ); | 321 | OTabInfo *newtab = tabs.at( index ); |
321 | if ( newtab ) | 322 | if ( newtab ) |
322 | { | 323 | { |
323 | selectTab( newtab ); | 324 | selectTab( newtab ); |
324 | } | 325 | } |
325 | } | 326 | } |
326 | 327 | ||
327 | QPixmap OTabWidget::loadSmooth( const QString &name ) | 328 | QPixmap OTabWidget::loadSmooth( const QString &name ) |
328 | { | 329 | { |
329 | QImage image = Resource::loadImage( name ); | 330 | QPixmap p; |
330 | QPixmap pixmap; | 331 | p.convertFromImage( Resource::loadImage( name ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); |
331 | pixmap.convertFromImage( image.smoothScale( 14, 14 ) ); | 332 | return p; |
332 | return pixmap; | ||
333 | } | 333 | } |
334 | 334 | ||
335 | void OTabWidget::selectTab( OTabInfo *tab ) | 335 | void OTabWidget::selectTab( OTabInfo *tab ) |
336 | { | 336 | { |
337 | if ( tabBarStyle == IconTab ) | 337 | if ( tabBarStyle == IconTab ) |
338 | { | 338 | { |
339 | if ( currTab ) | 339 | if ( currTab ) |
340 | { | 340 | { |
341 | tabBar->tab( currTab->id() )->setText( QString::null ); | 341 | tabBar->tab( currTab->id() )->setText( QString::null ); |
342 | setUpLayout(); | 342 | setUpLayout(); |
343 | } | 343 | } |
344 | tabBar->tab( tab->id() )->setText( tab->label() ); | 344 | tabBar->tab( tab->id() )->setText( tab->label() ); |
345 | tabBar->setCurrentTab( tab->id() ); | 345 | tabBar->setCurrentTab( tab->id() ); |
346 | setUpLayout(); | 346 | setUpLayout(); |
347 | tabBar->update(); | 347 | tabBar->update(); |
348 | } | 348 | } |
349 | else | 349 | else |
350 | { | 350 | { |
351 | tabBar->setCurrentTab( tab->id() ); | 351 | tabBar->setCurrentTab( tab->id() ); |
352 | } | 352 | } |
353 | 353 | ||
354 | widgetStack->raiseWidget( tab->control() ); | 354 | widgetStack->raiseWidget( tab->control() ); |
355 | 355 | ||
356 | emit currentChanged( tab->control() ); | 356 | emit currentChanged( tab->control() ); |
357 | 357 | ||
358 | currTab = tab; | 358 | currTab = tab; |
359 | } | 359 | } |
360 | 360 | ||
361 | void OTabWidget::setUpLayout() | 361 | void OTabWidget::setUpLayout() |
362 | { | 362 | { |
363 | tabBar->layoutTabs(); | 363 | tabBar->layoutTabs(); |
364 | QSize t( tabBarStack->sizeHint() ); | 364 | QSize t( tabBarStack->sizeHint() ); |
365 | if ( tabBarStyle == IconTab ) | 365 | if ( tabBarStyle == IconTab ) |
366 | { | 366 | { |
367 | if ( t.width() > width() ) | 367 | if ( t.width() > width() ) |
368 | t.setWidth( width() ); | 368 | t.setWidth( width() ); |
369 | } | 369 | } |
370 | else | 370 | else |
371 | { | 371 | { |
372 | t.setWidth( width() ); | 372 | t.setWidth( width() ); |
373 | } | 373 | } |
374 | int lw = widgetStack->lineWidth(); | 374 | int lw = widgetStack->lineWidth(); |
375 | if ( tabBarPosition == Bottom ) | 375 | if ( tabBarPosition == Bottom ) |
376 | { | 376 | { |
377 | tabBarStack->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); | 377 | tabBarStack->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() ); |
378 | widgetStack->setGeometry( 0, 0, width(), height()-t.height()+QMAX(0, lw-2) ); | 378 | widgetStack->setGeometry( 0, 0, width(), height()-t.height()+QMAX(0, lw-2) ); |
379 | } | 379 | } |
380 | else | 380 | else |
381 | { | 381 | { |
382 | tabBarStack->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); | 382 | tabBarStack->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() ); |
383 | widgetStack->setGeometry( 0, t.height()-lw, width(), height()-t.height()+QMAX( 0, lw-2 ) ); | 383 | widgetStack->setGeometry( 0, t.height()-lw, width(), height()-t.height()+QMAX( 0, lw-2 ) ); |
384 | } | 384 | } |
385 | 385 | ||
386 | if ( autoMask() ) | 386 | if ( autoMask() ) |
387 | updateMask(); | 387 | updateMask(); |
388 | } | 388 | } |
389 | 389 | ||
390 | QSize OTabWidget::sizeHint() const | 390 | QSize OTabWidget::sizeHint() const |
391 | { | 391 | { |
392 | QSize s( widgetStack->sizeHint() ); | 392 | QSize s( widgetStack->sizeHint() ); |
393 | QSize t( tabBarStack->sizeHint() ); | 393 | QSize t( tabBarStack->sizeHint() ); |
394 | return QSize( QMAX( s.width(), t.width() ), s.height() + t.height() ); | 394 | return QSize( QMAX( s.width(), t.width() ), s.height() + t.height() ); |
395 | } | 395 | } |
396 | 396 | ||