#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"
#include <QHBoxLayout>
#include <QGroupBox>
#include <QRadioButton>
-#include <QVBoxLayout>
#include <QPushButton>
-#include <QCheckBox>
#include <QMessageBox>
#include <QDialogButtonBox>
-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 */
/* 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" ) );
main_layout->setColumnMinimumWidth( 1, 10 );
main_layout->setColumnStretch( 0, 1 );
main_layout->setColumnStretch( 1, 0 );
- main_layout->setColumnStretch( 2, 3 );
+ main_layout->setColumnStretch( 2, 10 );
main_layout->setRowStretch( 2, 4 );
/* Margins */
tree_panel_l->setMargin( 1 );
- main_panel_l->setLayoutMargins( 6, 0, 0, 3, 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();
BUTTONACT( small, setSmall() );
BUTTONACT( all, setAdvanced() );
- resize( 750, sizeHint().height() );
+ resize( 780, sizeHint().height() );
}
void PrefsDialog::setAdvanced()
/* 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 ) );
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 );
}
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 );
}
}
/* Save to file */
- config_SaveConfigFile( p_intf, NULL );
-
- destroyPanels();
-
- hide();
-}
-
-void PrefsDialog::destroyPanels()
-{
- msg_Dbg( p_intf, "Destroying the Panels" );
- /* 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;
- }
- 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;
+ ErrorsDialog::getInstance (p_intf)->addError( qtr( "Cannot save Configuration" ),
+ qtr("Preferences file could not be saved") );
}
+ 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 */
config_SaveConfigFile( p_intf, NULL );
getSettings()->clear();
- close();
- instance = NULL;
- PrefsDialog::getInstance( p_intf )->show();
+ accept();
}
}