vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Mar 16 20:17:23 2012 +0100| [46d15dbafc4a2a95553b3a7b81d5b6fef880512d] | committer: Francois Cartegnie
Qt: preferences: use StackedWidget for simple layout > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=46d15dbafc4a2a95553b3a7b81d5b6fef880512d --- modules/gui/qt4/dialogs/preferences.cpp | 40 +++++++++++-------------------- modules/gui/qt4/dialogs/preferences.hpp | 4 +- 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/modules/gui/qt4/dialogs/preferences.cpp b/modules/gui/qt4/dialogs/preferences.cpp index 43377bf..d18118a 100644 --- a/modules/gui/qt4/dialogs/preferences.cpp +++ b/modules/gui/qt4/dialogs/preferences.cpp @@ -62,9 +62,6 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) advanced_tree_panel = new QWidget; advanced_tree_panel->setLayout( new QVBoxLayout ); - simple_main_panel = new QWidget; - simple_main_panel->setLayout( new QHBoxLayout ); - advanced_main_panel = new QWidget; advanced_main_panel->setLayout( new QHBoxLayout ); @@ -85,7 +82,7 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) advanced_tree = NULL; tree_filter = NULL; simple_tree = NULL; - current_simple_panel = NULL; + simple_panels_stack = new QStackedWidget; advanced_panel = NULL; /* Buttons */ @@ -111,7 +108,7 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) stack->insertWidget( ADVANCED, advanced_split_widget ); simple_split_widget->layout()->addWidget( simple_tree_panel ); - simple_split_widget->layout()->addWidget( simple_main_panel ); + simple_split_widget->layout()->addWidget( simple_panels_stack ); simple_split_widget->layout()->setMargin( 0 ); advanced_split_widget->layout()->addWidget( advanced_tree_panel ); @@ -128,7 +125,7 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) /* Margins */ simple_tree_panel->layout()->setMargin( 1 ); - simple_main_panel->layout()->setContentsMargins( 6, 0, 0, 3 ); + simple_panels_stack->layout()->setContentsMargins( 6, 0, 0, 3 ); b_small = (p_intf->p_sys->i_screenHeight < 750); if( b_small ) msg_Dbg( p_intf, "Small Resolution"); @@ -180,7 +177,7 @@ void PrefsDialog::setAdvanced() /* If no advanced Panel exist, create one, attach it and show it*/ if( !advanced_panel ) { - advanced_panel = new AdvPrefsPanel( simple_main_panel ); + advanced_panel = new AdvPrefsPanel( advanced_main_panel ); advanced_main_panel->layout()->addWidget( advanced_panel ); } @@ -207,13 +204,8 @@ void PrefsDialog::setSmall() simple_tree_panel->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred ); } - if( !current_simple_panel ) - { - current_simple_panel = - new SPrefsPanel( p_intf, simple_main_panel, SPrefsDefaultCat, b_small ); - simple_panels[SPrefsDefaultCat] = current_simple_panel; - simple_main_panel->layout()->addWidget( current_simple_panel ); - } + if( ! simple_panels[SPrefsDefaultCat] ) + changeSimplePanel( SPrefsDefaultCat ); small->setChecked( true ); stack->setCurrentIndex( SIMPLE ); @@ -222,18 +214,13 @@ void PrefsDialog::setSmall() /* Switching from on simple panel to another */ void PrefsDialog::changeSimplePanel( int number ) { - if( current_simple_panel ) - if( current_simple_panel->isVisible() ) current_simple_panel->hide(); - - current_simple_panel = simple_panels[number]; - if( !current_simple_panel ) + if( ! simple_panels[number] ) { - current_simple_panel = new SPrefsPanel( p_intf, simple_main_panel, number, b_small ); - simple_panels[number] = current_simple_panel; - simple_main_panel->layout()->addWidget( current_simple_panel ); + SPrefsPanel *insert = new SPrefsPanel( p_intf, simple_panels_stack, number, b_small ) ; + simple_panels_stack->insertWidget( number, insert ); + simple_panels[number] = insert; } - - current_simple_panel->show(); + simple_panels_stack->setCurrentWidget( simple_panels[number] ); } /* Changing from one Advanced Panel to another */ @@ -247,7 +234,7 @@ void PrefsDialog::changeAdvPanel( QTreeWidgetItem *item ) if( !data->panel ) { - data->panel = new AdvPrefsPanel( p_intf, simple_main_panel , data ); + data->panel = new AdvPrefsPanel( p_intf, advanced_main_panel, data ); advanced_main_panel->layout()->addWidget( data->panel ); } @@ -296,7 +283,8 @@ void PrefsDialog::save() { msg_Dbg( p_intf, "Saving the simple preferences" ); for( int i = 0 ; i< SPrefsMax; i++ ){ - if( simple_panels[i] )simple_panels[i]->apply(); + if( simple_panels_stack->widget(i) ) + qobject_cast<SPrefsPanel *>(simple_panels_stack->widget(i))->apply(); } } else if( all->isChecked() && advanced_tree->isVisible() ) diff --git a/modules/gui/qt4/dialogs/preferences.hpp b/modules/gui/qt4/dialogs/preferences.hpp index 7619a84..d388717 100644 --- a/modules/gui/qt4/dialogs/preferences.hpp +++ b/modules/gui/qt4/dialogs/preferences.hpp @@ -56,11 +56,11 @@ private: enum { SIMPLE, ADVANCED }; QStackedWidget *stack; - QWidget *simple_main_panel, *advanced_main_panel; + QWidget *advanced_main_panel; QWidget *simple_split_widget, *advanced_split_widget; AdvPrefsPanel *advanced_panel; - SPrefsPanel *current_simple_panel; + QStackedWidget *simple_panels_stack; SPrefsPanel *simple_panels[SPrefsMax]; QWidget *simple_tree_panel; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
