* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
+ * Antoine Cellerier <dionoea@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
p_control = new StringConfigControl( p_this, p_item, parent,
l, line, false );
else
- fprintf(stderr, "TODO\n" );
+ p_control = new StringListConfigControl( p_this, p_item,
+ parent, false, l, line );
break;
case CONFIG_ITEM_INTEGER:
if( p_item->i_list )
- fprintf( stderr, "Todo\n" );
+ p_control = new IntegerListConfigControl( p_this, p_item,
+ parent, false, l, line );
else if( p_item->i_min || p_item->i_max )
fprintf( stderr, "Todo\n" );
else
{
text->setText( qfu(p_item->psz_value) );
text->setToolTip( qfu(p_item->psz_longtext) );
- label->setToolTip( qfu(p_item->psz_longtext) );
+ if( label )
+ label->setToolTip( qfu(p_item->psz_longtext) );
+}
+
+/********* String / choice list **********/
+StringListConfigControl::StringListConfigControl( vlc_object_t *_p_this,
+ module_config_t *_p_item, QWidget *_parent, bool bycat,
+ QGridLayout *l, int line) :
+ VStringConfigControl( _p_this, _p_item, _parent )
+{
+ label = new QLabel( qfu(p_item->psz_text) );
+ combo = new QComboBox();
+ finish( bycat );
+ if( !l )
+ {
+ QHBoxLayout *layout = new QHBoxLayout();
+ layout->addWidget( label ); layout->addWidget( combo );
+ widget->setLayout( layout );
+ }
+ else
+ {
+ l->addWidget( label, line, 0 );
+ l->addWidget( combo, line, 1, Qt::AlignRight );
+ }
+}
+StringListConfigControl::StringListConfigControl( vlc_object_t *_p_this,
+ module_config_t *_p_item, QLabel *_label, QComboBox *_combo,
+ bool bycat ) : VStringConfigControl( _p_this, _p_item )
+{
+ combo = _combo;
+ label = _label;
+ finish( bycat );
+}
+
+void StringListConfigControl::finish( bool bycat )
+{
+ combo->setEditable( false );
+
+ for( int i_index = 0; i_index < p_item->i_list; i_index++ )
+ {
+ combo->addItem( qfu(p_item->ppsz_list_text ?
+ p_item->ppsz_list_text[i_index] :
+ p_item->ppsz_list[i_index] ),
+ QVariant( p_item->ppsz_list[i_index] ) );
+ if( p_item->psz_value && !strcmp( p_item->psz_value,
+ p_item->ppsz_list[i_index] ) )
+ combo->setCurrentIndex( combo->count() - 1 );
+ }
+ combo->setToolTip( qfu(p_item->psz_longtext) );
+ if( label )
+ label->setToolTip( qfu(p_item->psz_longtext) );
+}
+
+QString StringListConfigControl::getValue()
+{
+ return combo->itemData( combo->currentIndex() ).toString();
}
/********* Module **********/
}
vlc_list_release( p_list );
combo->setToolTip( qfu(p_item->psz_longtext) );
- label->setToolTip( qfu(p_item->psz_longtext) );
+ if( label )
+ label->setToolTip( qfu(p_item->psz_longtext) );
}
QString ModuleConfigControl::getValue()
spin->setMaximum( 2000000000 );
spin->setValue( p_item->i_value );
spin->setToolTip( qfu(p_item->psz_longtext) );
- label->setToolTip( qfu(p_item->psz_longtext) );
+ if( label )
+ label->setToolTip( qfu(p_item->psz_longtext) );
}
int IntegerConfigControl::getValue()
{
return spin->value();
}
+
+/********* Integer / choice list **********/
+IntegerListConfigControl::IntegerListConfigControl( vlc_object_t *_p_this,
+ module_config_t *_p_item, QWidget *_parent, bool bycat,
+ QGridLayout *l, int line) :
+ VIntConfigControl( _p_this, _p_item, _parent )
+{
+ label = new QLabel( qfu(p_item->psz_text) );
+ combo = new QComboBox();
+ finish( bycat );
+ if( !l )
+ {
+ QHBoxLayout *layout = new QHBoxLayout();
+ layout->addWidget( label ); layout->addWidget( combo );
+ widget->setLayout( layout );
+ }
+ else
+ {
+ l->addWidget( label, line, 0 );
+ l->addWidget( combo, line, 1, Qt::AlignRight );
+ }
+}
+IntegerListConfigControl::IntegerListConfigControl( vlc_object_t *_p_this,
+ module_config_t *_p_item, QLabel *_label, QComboBox *_combo,
+ bool bycat ) : VIntConfigControl( _p_this, _p_item )
+{
+ combo = _combo;
+ label = _label;
+ finish( bycat );
+}
+
+void IntegerListConfigControl::finish( bool bycat )
+{
+ combo->setEditable( false );
+
+ for( int i_index = 0; i_index < p_item->i_list; i_index++ )
+ {
+ combo->addItem( qfu(p_item->ppsz_list_text[i_index] ),
+ QVariant( p_item->pi_list[i_index] ) );
+ if( p_item->i_value == p_item->pi_list[i_index] )
+ combo->setCurrentIndex( combo->count() - 1 );
+ }
+ combo->setToolTip( qfu(p_item->psz_longtext) );
+ if( label )
+ label->setToolTip( qfu(p_item->psz_longtext) );
+}
+
+int IntegerListConfigControl::getValue()
+{
+ return combo->itemData( combo->currentIndex() ).toInt();
+}
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
+ * Antoine Cellerier <dionoea@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
void finish();
};
+class IntegerListConfigControl : public VIntConfigControl
+{
+public:
+ IntegerListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
+ bool, QGridLayout*, int );
+ IntegerListConfigControl( vlc_object_t *, module_config_t *, QLabel *,
+ QComboBox*, bool );
+ virtual ~IntegerListConfigControl() {};
+ virtual int getValue();
+ virtual void hide() { combo->hide(); label->hide(); }
+ virtual void show() { combo->show(); label->show(); }
+private:
+ void finish( bool );
+ QLabel *label;
+ QComboBox *combo;
+};
+
#if 0
class BoolConfigControl : public VIntConfigControl
{
QLabel *label;
QComboBox *combo;
};
+
+class StringListConfigControl : public VStringConfigControl
+{
+public:
+ StringListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
+ bool, QGridLayout*, int );
+ StringListConfigControl( vlc_object_t *, module_config_t *, QLabel *,
+ QComboBox*, bool );
+ virtual ~StringListConfigControl() {};
+ virtual QString getValue();
+ virtual void hide() { combo->hide(); label->hide(); }
+ virtual void show() { combo->show(); label->show(); }
+private:
+ void finish( bool );
+ QLabel *label;
+ QComboBox *combo;
+};
#if 0
struct ModuleCheckBox {
QCheckBox *checkbox;
SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
int number ) : QWidget( _parent ), p_intf( _p_intf )
{
- switch( number )
- {
- case SPrefsVideo:
- {
- Ui::SPrefsVideo ui;
- ui.setupUi( this );
- break;
- }
+ module_config_t *p_config;
+ ConfigControl *control;
+
+#define CONFIG_GENERIC( option, type, label, qcontrol ) \
+ p_config = config_FindConfig( VLC_OBJECT(p_intf), option ); \
+ if( p_config ) \
+ { \
+ control = new type ## ConfigControl( VLC_OBJECT(p_intf), \
+ p_config, label, ui.qcontrol, false ); \
+ controls.append( control ); \
+ }
- case SPrefsAudio:
- {
- Ui::SPrefsAudio ui;
+#define START_SPREFS_CAT( name ) \
+ case SPrefs ## name: \
+ { \
+ Ui::SPrefs ## name ui; \
ui.setupUi( this );
- break;
- }
- case SPrefsInputAndCodecs:
- {
- break;
+#define END_SPREFS_CAT \
+ break; \
}
- case SPrefsPlaylist:
- {
- Ui::SPrefsPlaylist ui;
- ui.setupUi( this );
- break;
- }
- case SPrefsInterface:
- {
- break;
- }
+ switch( number )
+ {
+ START_SPREFS_CAT( Video );
+ END_SPREFS_CAT;
- case SPrefsSubtitles:
- {
- Ui::SPrefsSubtitles ui;
- ui.setupUi( this );
- break;
- }
+ START_SPREFS_CAT( Audio );
+ END_SPREFS_CAT;
- case SPrefsAdvanced:
- {
- Ui::SPrefsTrivial ui;
- ui.setupUi( this );
- module_config_t *p_config =
- config_FindConfig( VLC_OBJECT(p_intf), "memcpy" );
- ConfigControl *control =
- new ModuleConfigControl( VLC_OBJECT(p_intf),
- p_config, ui.memcpyLabel, ui.memcpyCombo, false );
- controls.append( control );
- break;
- }
+ case SPrefsInputAndCodecs: break;
+
+ START_SPREFS_CAT( Playlist );
+ END_SPREFS_CAT;
+
+ case SPrefsInterface: break;
+
+ START_SPREFS_CAT( Subtitles );
+
+ CONFIG_GENERIC( "subsdec-encoding", StringList, NULL, encoding );
+ CONFIG_GENERIC( "sub-language", String, NULL, preferedLanguage );
+ CONFIG_GENERIC( "freetype-font", String, NULL, font );
+ CONFIG_GENERIC( "freetype-color", IntegerList, NULL, fontColor );
+ CONFIG_GENERIC( "freetype-rel-fontsize", IntegerList, NULL,
+ fontSize );
+
+ END_SPREFS_CAT;
+
+ case SPrefsAdvanced: break;
}
}