author | zecke <zecke> | 2005-03-06 14:04:57 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-03-06 14:04:57 (UTC) |
commit | 125fa91f604cf9b7f3272798e72b6725fca9e23f (patch) (unidiff) | |
tree | f7d328df5173a56254b6d5c8627eb53f897d9ebe /libopie2 | |
parent | fe51b2ed0ec3bccbcac880623123d2abc5d71a4e (diff) | |
download | opie-125fa91f604cf9b7f3272798e72b6725fca9e23f.zip opie-125fa91f604cf9b7f3272798e72b6725fca9e23f.tar.gz opie-125fa91f604cf9b7f3272798e72b6725fca9e23f.tar.bz2 |
-When going back from BigScreen to SmallScreen we resize the widgetstack,
show it and raise the 'main widget'
This should fix all bugs alwin spotted while deploying OWidgetStack
on Opie-Eye
-rw-r--r-- | libopie2/opieui/big-screen/owidgetstack.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libopie2/opieui/big-screen/owidgetstack.cpp b/libopie2/opieui/big-screen/owidgetstack.cpp index 00194b4..ac46cca 100644 --- a/libopie2/opieui/big-screen/owidgetstack.cpp +++ b/libopie2/opieui/big-screen/owidgetstack.cpp | |||
@@ -288,49 +288,49 @@ void OWidgetStack::raiseWidget( QWidget* wid) { | |||
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*, QEvent* e) { |
313 | if ( e->type() == QEvent::Resize && !m_forced ) { | 313 | if ( e->type() == QEvent::Resize && !m_forced ) { |
314 | QResizeEvent *res = static_cast<QResizeEvent*>( e ); | 314 | QResizeEvent *res = static_cast<QResizeEvent*>( e ); |
315 | QSize size = res->size(); | 315 | QSize size = res->size(); |
316 | if ( size.width() >= mode_size ) | 316 | if ( size.width() >= mode_size ) |
317 | switchTop(); | 317 | switchTop(); |
318 | else | 318 | else |
319 | switchStack(); | 319 | switchStack(); |
320 | } | 320 | } |
321 | return false; | 321 | return false; |
322 | } | 322 | } |
323 | 323 | ||
324 | 324 | ||
325 | /** | 325 | /** |
326 | * @internal_resons | 326 | * @internal_resons |
327 | */ | 327 | */ |
328 | void OWidgetStack::resizeEvent( QResizeEvent* ev ) { | 328 | void OWidgetStack::resizeEvent( QResizeEvent* ev ) { |
329 | QFrame::resizeEvent( ev ); | 329 | QFrame::resizeEvent( ev ); |
330 | if (m_mode == SmallScreen ) | 330 | if (m_mode == SmallScreen ) |
331 | m_stack->setGeometry( frameRect() ); | 331 | m_stack->setGeometry( frameRect() ); |
332 | else | 332 | else |
333 | if (m_mWidget ) | 333 | if (m_mWidget ) |
334 | m_mWidget->setGeometry( frameRect() ); | 334 | m_mWidget->setGeometry( frameRect() ); |
335 | 335 | ||
336 | } | 336 | } |
@@ -367,62 +367,67 @@ void OWidgetStack::setMainWindow( QWidget* wid ) { | |||
367 | m_mWidget = wid; | 367 | m_mWidget = wid; |
368 | } | 368 | } |
369 | 369 | ||
370 | /** | 370 | /** |
371 | * this is an overloaded member and only differs | 371 | * this is an overloaded member and only differs |
372 | * in the type of arguments. | 372 | * in the type of arguments. |
373 | * @see setMainWindow(QWidget*) | 373 | * @see setMainWindow(QWidget*) |
374 | */ | 374 | */ |
375 | void OWidgetStack::setMainWindow( int id) { | 375 | void OWidgetStack::setMainWindow( int id) { |
376 | setMainWindow( widget( id ) ); | 376 | setMainWindow( widget( id ) ); |
377 | } | 377 | } |
378 | 378 | ||
379 | 379 | ||
380 | /* | 380 | /* |
381 | * this function switches to a stack ;) | 381 | * this function switches to a stack ;) |
382 | */ | 382 | */ |
383 | void OWidgetStack::switchStack() { | 383 | void OWidgetStack::switchStack() { |
384 | if (m_stack ) { | 384 | if (m_stack ) { |
385 | m_stack->setGeometry( frameRect() ); | 385 | m_stack->setGeometry( frameRect() ); |
386 | return; | 386 | return; |
387 | } | 387 | } |
388 | 388 | ||
389 | m_mode = SmallScreen; | 389 | m_mode = SmallScreen; |
390 | m_stack = new QWidgetStack(this); | 390 | m_stack = new QWidgetStack(this); |
391 | m_stack->setGeometry( frameRect() ); | ||
392 | m_stack->show(); | ||
391 | 393 | ||
392 | connect(m_stack, SIGNAL(aboutToShow(QWidget*) ), | 394 | connect(m_stack, SIGNAL(aboutToShow(QWidget*) ), |
393 | this, SIGNAL(aboutToShow(QWidget*) ) ); | 395 | this, SIGNAL(aboutToShow(QWidget*) ) ); |
394 | connect(m_stack, SIGNAL(aboutToShow(int) ), | 396 | connect(m_stack, SIGNAL(aboutToShow(int) ), |
395 | this, SIGNAL(aboutToShow(int) ) ); | 397 | this, SIGNAL(aboutToShow(int) ) ); |
396 | 398 | ||
397 | /* now reparent the widgets... luckily QWidgetSatck does most of the work */ | 399 | /* now reparent the widgets... luckily QWidgetSatck does most of the work */ |
398 | if (m_list.isEmpty() ) | 400 | if (m_list.isEmpty() ) |
399 | return; | 401 | return; |
400 | 402 | ||
401 | QMap<int, QWidget*>::Iterator it = m_list.begin(); | 403 | QMap<int, QWidget*>::Iterator it = m_list.begin(); |
402 | for ( ; it != m_list.end(); ++it ) | 404 | for ( ; it != m_list.end(); ++it ) |
403 | m_stack->addWidget( it.data(), it.key() ); | 405 | m_stack->addWidget( it.data(), it.key() ); |
404 | 406 | ||
407 | if ( m_mWidget ) | ||
408 | m_stack->raiseWidget( m_mWidget ); | ||
409 | |||
405 | 410 | ||
406 | } | 411 | } |
407 | 412 | ||
408 | /* | 413 | /* |
409 | * we will switch to top level mode | 414 | * we will switch to top level mode |
410 | * reparent the list of widgets and then delete the stack | 415 | * reparent the list of widgets and then delete the stack |
411 | */ | 416 | */ |
412 | void OWidgetStack::switchTop() { | 417 | void OWidgetStack::switchTop() { |
413 | m_mode = BigScreen; | 418 | m_mode = BigScreen; |
414 | /* this works because it is guaranteed that switchStack was called at least once*/ | 419 | /* this works because it is guaranteed that switchStack was called at least once*/ |
415 | if (!m_stack && m_mWidget) { | 420 | if (!m_stack && m_mWidget) { |
416 | m_mWidget->setGeometry( frameRect() ); | 421 | m_mWidget->setGeometry( frameRect() ); |
417 | return; | 422 | return; |
418 | }else if (!m_stack) | 423 | }else if (!m_stack) |
419 | return; | 424 | return; |
420 | 425 | ||
421 | if (!m_list.isEmpty() ) { | 426 | if (!m_list.isEmpty() ) { |
422 | QMap<int, QWidget*>::Iterator it = m_list.begin(); | 427 | QMap<int, QWidget*>::Iterator it = m_list.begin(); |
423 | for ( ; it != m_list.end(); ++it ) { | 428 | for ( ; it != m_list.end(); ++it ) { |
424 | /* better than reparenting twice */ | 429 | /* better than reparenting twice */ |
425 | if ( it.data() == m_mWidget ) { | 430 | if ( it.data() == m_mWidget ) { |
426 | m_mWidget->reparent(this, 0, frameRect().topLeft() ); | 431 | m_mWidget->reparent(this, 0, frameRect().topLeft() ); |
427 | m_mWidget->setGeometry( frameRect() ); | 432 | m_mWidget->setGeometry( frameRect() ); |
428 | m_mWidget->show(); | 433 | m_mWidget->show(); |