#include "util/qvlcframe.hpp"
#include "components/preferences.hpp"
+#include "components/simple_preferences.hpp"
#include "qt4.hpp"
#include <QHBoxLayout>
PrefsDialog::PrefsDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
{
- layout = new QHBoxLayout();
- QVBoxLayout * main_layout = new QVBoxLayout();
+ QGridLayout *main_layout = new QGridLayout(this);
setWindowTitle( qtr("Preferences" ) );
resize( 800, 450 );
- advanced_tree = NULL;
- simple_tree = NULL;
- simple_panel = NULL;
- advanced_panel = NULL;
-
- vertical = new QVBoxLayout();
+ tree_panel = new QWidget(0);
+ tree_panel_l = new QHBoxLayout;
+ tree_panel->setLayout( tree_panel_l );
+ main_panel = new QWidget(0);
+ main_panel_l = new QHBoxLayout;
+ main_panel->setLayout( main_panel_l );
// Choice for types
types = new QGroupBox( "Show settings" );
- QHBoxLayout *tl = new QHBoxLayout();
+ QHBoxLayout *tl = new QHBoxLayout(0);
tl->setSpacing( 3 ); tl->setMargin( 3 );
- small = new QRadioButton( "Basic", types );
- all = new QRadioButton( "All", types );
- tl->addWidget( small );
- tl->addWidget( all );
- types->setLayout(tl );
-
- layout->addLayout( vertical, 1 );
-
- all->setChecked( true );
-
- main_layout->addLayout( layout );
+ small = new QRadioButton( "Basic", types ); tl->addWidget( small );
+ all = new QRadioButton( "All", types ); tl->addWidget( all );
+ types->setLayout(tl);
+ small->setChecked( true );
+#if 0
adv_chk = new QCheckBox("Advanced options");
- main_layout->addWidget( adv_chk );
+#endif
+ advanced_tree = NULL;
+ simple_tree = NULL;
+ simple_panel = NULL;
+ advanced_panel = NULL;
- setAll();
+ main_layout->addWidget( types, 0,0,1,1 );
+ main_layout->addWidget( tree_panel, 1,0,1,1 );
+#if 0
+ main_layout->addWidget( adv_chk , 2,0,1,1 );
+#endif
+ main_layout->addWidget( main_panel, 0, 1, 2, 1 );
+ main_layout->setColumnMinimumWidth( 0, 200 );
+ main_layout->setColumnStretch( 0, 1 );
+ main_layout->setColumnStretch( 1,3 );
+
+ setSmall();
+#if 0
connect( adv_chk, SIGNAL( toggled(bool) ),
this, SLOT( setAdvanced( bool ) ) );
+#endif
+
+ QPushButton *save, *cancel;
+ QHBoxLayout *buttonsLayout =
+ QVLCFrame::doButtons( this, NULL, &save, _("Save"),
+ &cancel, _("Cancel"),
+ NULL, NULL );
+ connect( save, SIGNAL( clicked() ), this, SLOT( save() ) );
+ connect( cancel, SIGNAL( clicked() ), this, SLOT( cancel() ) );
+ main_layout->addLayout( buttonsLayout, 2,0, 1 ,3 );
+
setLayout( main_layout );
connect( small, SIGNAL( clicked() ), this, SLOT( setSmall()) );
connect( all, SIGNAL( clicked() ), this, SLOT( setAll()) );
}
-
+#if 0
void PrefsDialog::setAdvanced( bool advanced )
{
if( advanced_panel )
advanced_panel->setAdvanced( advanced );
}
-
+#endif
void PrefsDialog::setAll()
{
- while( (vertical->takeAt(0)) != 0 ) {}
if( simple_tree )
+ {
+ tree_panel_l->removeWidget( simple_tree );
simple_tree->hide();
+ }
if( !advanced_tree )
{
- advanced_tree = new PrefsTree( p_intf, this );
+ advanced_tree = new PrefsTree( p_intf, tree_panel );
connect( advanced_tree,
SIGNAL( currentItemChanged( QTreeWidgetItem *, QTreeWidgetItem *) ),
this, SLOT( changePanel( QTreeWidgetItem * ) ) );
}
+ tree_panel_l->addWidget( advanced_tree );
advanced_tree->show();
- setAdvanced( adv_chk->isChecked() );
- vertical->addWidget( types );
- vertical->addWidget( advanced_tree );
-
- if( layout->count() == 2 )
- layout->takeAt(1);
- if( !advanced_panel )
- advanced_panel = new PrefsPanel( this );
- layout->addWidget( advanced_panel, 3 ) ;
+ if( simple_panel )
+ {
+ main_panel_l->removeWidget( simple_panel );
+ simple_panel->hide();
+ }
+ if( !advanced_panel )
+ advanced_panel = new PrefsPanel( main_panel );
+ main_panel_l->addWidget( advanced_panel );
+ advanced_panel->show();
+#if 0
+ adv_chk->show();
+#endif
}
void PrefsDialog::setSmall()
{
- while( (vertical->takeAt(0)) != 0 ) {}
if( advanced_tree )
+ {
+ tree_panel_l->removeWidget( advanced_tree );
advanced_tree->hide();
-
+ }
if( !simple_tree )
- simple_tree = new QTreeWidget();
+ {
+ simple_tree = new SPrefsCatList( p_intf, tree_panel );
+ connect( simple_tree,
+ SIGNAL( currentItemChanged( QListWidgetItem *, QListWidgetItem *) ),
+ this, SLOT( changeSimplePanel( QListWidgetItem * ) ) );
+ }
+ tree_panel_l->addWidget( simple_tree );
simple_tree->show();
- vertical->addWidget( types );
- vertical->addWidget( simple_tree );
-
- if( layout->count() == 2 )
- layout->takeAt(1);
+ if( advanced_panel )
+ {
+ main_panel_l->removeWidget( advanced_panel );
+ advanced_panel->hide();
+ }
if( !simple_panel )
- simple_panel = new QWidget();
- layout->addWidget( simple_panel, 3 ) ;
+ simple_panel = new SPrefsPanel( p_intf, main_panel, SPrefsDefaultCat );
+ main_panel_l->addWidget( simple_panel );
+ simple_panel->show();
+#if 0
+ adv_chk->hide();
+#endif
}
-
-void PrefsDialog::init()
+PrefsDialog::~PrefsDialog()
{
}
-PrefsDialog::~PrefsDialog()
+void PrefsDialog::changeSimplePanel( QListWidgetItem *item )
{
+ int number = item->data( Qt::UserRole ).toInt();
+ if( simple_panel )
+ {
+ main_panel_l->removeWidget( simple_panel );
+ simple_panel->hide();
+ /* Don't do this once it works, you would loose all changes */
+ delete simple_panel;
+ }
+ simple_panel = new SPrefsPanel( p_intf, main_panel, number );
+ main_panel_l->addWidget( simple_panel );
+ simple_panel->show();
}
void PrefsDialog::changePanel( QTreeWidgetItem *item )
if( advanced_panel )
{
- layout->removeWidget( advanced_panel );
+ main_panel_l->removeWidget( advanced_panel );
advanced_panel->hide();
}
if( !data->panel )
{
- data->panel = new PrefsPanel( p_intf, this, data );
+ data->panel = new PrefsPanel( p_intf, main_panel , data, true );
+#if 0
+ adv_chk->isChecked() );
+#endif
}
advanced_panel = data->panel;
+ main_panel_l->addWidget( advanced_panel );
advanced_panel->show();
+#if 0
setAdvanced( adv_chk->isChecked() );
- layout->addWidget( advanced_panel, 3 );
+#endif
+}
+
+void PrefsDialog::save()
+{
+ if( small->isChecked() && simple_tree )
+ simple_tree->applyAll();
+ else if( all->isChecked() && advanced_tree )
+ advanced_tree->applyAll();
+ config_SaveConfigFile( p_intf, NULL );
+ hide();
+}
+void PrefsDialog::cancel()
+{
+ if( small->isChecked() && simple_tree )
+ {
+ simple_tree->cleanAll();
+ simple_panel = NULL;
+ }
+ else if( all->isChecked() && advanced_tree )
+ {
+ advanced_tree->cleanAll();
+ advanced_panel = NULL;
+ }
+ hide();
}