X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fdialogs%2Fpreferences.cpp;h=2bfa9db793a3488580724f2b5ef0fa7256551e67;hb=30a0d8c1592f781f49c64f12f972e5ba67b0a5e1;hp=d48b00a3865326eae8c02ba28cb94bcee4ffe892;hpb=9c18c4736edfa382501903fbbe24e794b1eb7630;p=vlc diff --git a/modules/gui/qt4/dialogs/preferences.cpp b/modules/gui/qt4/dialogs/preferences.cpp index d48b00a386..2bfa9db793 100644 --- a/modules/gui/qt4/dialogs/preferences.cpp +++ b/modules/gui/qt4/dialogs/preferences.cpp @@ -22,9 +22,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include "dialogs/preferences.hpp" -#include "dialogs_provider.hpp" #include "util/qvlcframe.hpp" +#include "dialogs/errors.hpp" #include "components/complete_preferences.hpp" #include "components/simple_preferences.hpp" @@ -32,19 +36,21 @@ #include #include #include -#include #include -#include #include #include -PrefsDialog *PrefsDialog::instance = NULL; - PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) : QVLCDialog( parent, _p_intf ) { QGridLayout *main_layout = new QGridLayout( this ); setWindowTitle( qtr( "Preferences" ) ); + setWindowRole( "vlc-preferences" ); + setWindowModality( Qt::WindowModal ); + + /* Whether we want it or not, we need to destroy on close to get + consistency when reset */ + setAttribute( Qt::WA_DeleteOnClose ); /* Create Panels */ tree_panel = new QWidget; @@ -55,13 +61,15 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) main_panel->setLayout( main_panel_l ); /* Choice for types */ - types = new QGroupBox( "Show settings" ); + types = new QGroupBox( qtr("Show settings") ); types->setAlignment( Qt::AlignHCenter ); QHBoxLayout *types_l = new QHBoxLayout; types_l->setSpacing( 3 ); types_l->setMargin( 3 ); - small = new QRadioButton( qtr("Basic"), types ); + small = new QRadioButton( qtr( "Simple" ), types ); + small->setToolTip( qtr( "Switch to simple preferences view" ) ); types_l->addWidget( small ); all = new QRadioButton( qtr("All"), types ); types_l->addWidget( all ); + all->setToolTip( qtr( "Switch to full preferences view" ) ); types->setLayout( types_l ); small->setChecked( true ); @@ -74,34 +82,42 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) /* Buttons */ QDialogButtonBox *buttonsBox = new QDialogButtonBox(); QPushButton *save = new QPushButton( qtr( "&Save" ) ); + save->setToolTip( qtr( "Save and close the dialog" ) ); QPushButton *cancel = new QPushButton( qtr( "&Cancel" ) ); QPushButton *reset = new QPushButton( qtr( "&Reset Preferences" ) ); buttonsBox->addButton( save, QDialogButtonBox::AcceptRole ); buttonsBox->addButton( cancel, QDialogButtonBox::RejectRole ); - buttonsBox->addButton( reset, QDialogButtonBox::ActionRole ); + buttonsBox->addButton( reset, QDialogButtonBox::ResetRole ); /* Layout */ main_layout->addWidget( tree_panel, 0, 0, 3, 1 ); main_layout->addWidget( types, 3, 0, 2, 1 ); - main_layout->addWidget( main_panel, 0, 1, 4, 1 ); - main_layout->addWidget( buttonsBox, 4, 1, 1 ,2 ); + main_layout->addWidget( main_panel, 0, 1, 4, 2 ); + main_layout->addWidget( buttonsBox, 4, 2, 1 ,1 ); main_layout->setColumnMinimumWidth( 0, 150 ); + main_layout->setColumnMinimumWidth( 1, 10 ); main_layout->setColumnStretch( 0, 1 ); - main_layout->setColumnStretch( 1, 3 ); + main_layout->setColumnStretch( 1, 0 ); + main_layout->setColumnStretch( 2, 10 ); main_layout->setRowStretch( 2, 4 ); + main_layout->setMargin( 9 ); setLayout( main_layout ); /* Margins */ tree_panel_l->setMargin( 1 ); - main_panel_l->setMargin( 3 ); + main_panel_l->setContentsMargins( 6, 0, 0, 3 ); + b_small = (p_intf->p_sys->i_screenHeight < 750); + if( b_small ) msg_Dbg( p_intf, "Small"); + setMaximumHeight( p_intf->p_sys->i_screenHeight ); for( int i = 0; i < SPrefsMax ; i++ ) simple_panels[i] = NULL; - if( config_GetInt( p_intf, "qt-advanced-pref" ) == 1 ) + if( var_InheritBool( p_intf, "qt-advanced-pref" ) + || var_InheritBool( p_intf, "advanced" ) ) setAdvanced(); else setSmall(); @@ -113,7 +129,7 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf ) BUTTONACT( small, setSmall() ); BUTTONACT( all, setAdvanced() ); - resize( 750, sizeHint().height() ); + resize( 780, sizeHint().height() ); } void PrefsDialog::setAdvanced() @@ -166,7 +182,7 @@ void PrefsDialog::setSmall() /* If no simple_tree, create one, connect it */ if( !simple_tree ) { - simple_tree = new SPrefsCatList( p_intf, tree_panel ); + simple_tree = new SPrefsCatList( p_intf, tree_panel, b_small ); CONNECT( simple_tree, currentItemChanged( int ), this, changeSimplePanel( int ) ); @@ -183,7 +199,7 @@ void PrefsDialog::setSmall() if( !current_simple_panel ) { current_simple_panel = - new SPrefsPanel( p_intf, main_panel, SPrefsDefaultCat ); + new SPrefsPanel( p_intf, main_panel, SPrefsDefaultCat, b_small ); simple_panels[SPrefsDefaultCat] = current_simple_panel; main_panel_l->addWidget( current_simple_panel ); } @@ -201,7 +217,7 @@ void PrefsDialog::changeSimplePanel( int number ) current_simple_panel = simple_panels[number]; if( !current_simple_panel ) { - current_simple_panel = new SPrefsPanel( p_intf, main_panel, number ); + current_simple_panel = new SPrefsPanel( p_intf, main_panel, number, b_small ); simple_panels[number] = current_simple_panel; main_panel_l->addWidget( current_simple_panel ); } @@ -212,6 +228,7 @@ void PrefsDialog::changeSimplePanel( int number ) /* Changing from one Advanced Panel to another */ void PrefsDialog::changeAdvPanel( QTreeWidgetItem *item ) { + if( item == NULL ) return; PrefsItemData *data = item->data( 0, Qt::UserRole ).value(); if( advanced_panel ) @@ -278,50 +295,18 @@ void PrefsDialog::save() } /* Save to file */ - config_SaveConfigFile( p_intf, NULL ); - - /* Delete the other panel in order to force its reload after clicking - on apply. In fact, if we don't do that, the preferences from the other - panels won't be accurate, so we would have to recreate the whole dialog, - and we don't want that.*/ - if( small->isChecked() && advanced_panel ) + if( config_SaveConfigFile( p_intf, NULL ) != 0 ) { - /* Deleting only the active panel from the advanced config doesn't work - because the data records of PrefsItemData contains still a - reference to it only cleanAll() is sure to remove all Panels! */ - advanced_tree->cleanAll(); - advanced_panel = NULL; + ErrorsDialog::getInstance (p_intf)->addError( qtr( "Cannot save Configuration" ), + qtr("Preferences file could not be saved") ); } - if( all->isChecked() && current_simple_panel ) - { - for( int i = 0 ; i< SPrefsMax; i++ ) - { - if( simple_panels[i] ) - { - delete simple_panels[i]; - simple_panels[i] = NULL; - } - } - current_simple_panel = NULL; - } - - hide(); + accept(); } /* Clean the preferences, dunno if it does something really */ void PrefsDialog::cancel() { - if( small->isChecked() && simple_tree ) - { - for( int i = 0 ; i< SPrefsMax; i++ ) - if( simple_panels[i] ) simple_panels[i]->clean(); - } - else if( all->isChecked() && advanced_tree ) - { - advanced_tree->cleanAll(); - advanced_panel = NULL; - } - hide(); + reject(); } /* Reset all the preferences, when you click the button */ @@ -330,8 +315,7 @@ void PrefsDialog::reset() int ret = QMessageBox::question( this, qtr( "Reset Preferences" ), - qtr( "This will reset your VLC media player preferences.\n" - "Are you sure you want to continue?" ), + qtr( "Are you sure you want to reset your VLC media player preferences?" ), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok); @@ -339,5 +323,8 @@ void PrefsDialog::reset() { config_ResetAll( p_intf ); config_SaveConfigFile( p_intf, NULL ); + getSettings()->clear(); + + accept(); } }