[vlc-commits] Qt: preferences: use StackedWidget for simple layout
Francois Cartegnie
git at videolan.org
Thu Mar 22 15:43:54 CET 2012
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | 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;
More information about the vlc-commits
mailing list