Commit 723b9879 authored by Antoine Cellerier's avatar Antoine Cellerier

Some more prefs fun:

 * preferences_widgets.cpp: implement string and int with choice list
 * other: simple prefs subtitles dialog
parent f7c69bbe
......@@ -5,6 +5,7 @@
* $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
......@@ -70,11 +71,13 @@ ConfigControl *ConfigControl::createControl( vlc_object_t *p_this,
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
......@@ -128,9 +131,64 @@ void StringConfigControl::finish()
{
text->setText( qfu(p_item->psz_value) );
text->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 **********/
ModuleConfigControl::ModuleConfigControl( vlc_object_t *_p_this,
module_config_t *_p_item, QWidget *_parent, bool bycat,
......@@ -203,6 +261,7 @@ void ModuleConfigControl::finish( bool bycat )
}
vlc_list_release( p_list );
combo->setToolTip( qfu(p_item->psz_longtext) );
if( label )
label->setToolTip( qfu(p_item->psz_longtext) );
}
......@@ -254,6 +313,7 @@ void IntegerConfigControl::finish()
spin->setMaximum( 2000000000 );
spin->setValue( p_item->i_value );
spin->setToolTip( qfu(p_item->psz_longtext) );
if( label )
label->setToolTip( qfu(p_item->psz_longtext) );
}
......@@ -261,3 +321,54 @@ 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();
}
......@@ -5,6 +5,7 @@
* $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
......@@ -104,6 +105,23 @@ private:
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
{
......@@ -190,6 +208,23 @@ private:
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;
......
......@@ -107,58 +107,56 @@ void SPrefsCatList::DoAll( bool doclean )
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:
switch( number )
{
break;
}
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;
}
}
......
......@@ -22,6 +22,9 @@
<property name="spacing" >
<number>6</number>
</property>
<item row="0" column="1" >
<widget class="QLineEdit" name="preferedLanguage" />
</item>
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
......@@ -88,25 +91,9 @@
</layout>
</widget>
</item>
<item row="0" column="1" >
<widget class="QComboBox" name="preferedLanguage" />
</item>
<item row="1" column="1" >
<widget class="QComboBox" name="encoding" />
</item>
<item row="3" column="0" colspan="2" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" >
<size>
<width>501</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<pixmapfunction></pixmapfunction>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment