1
mirror of https://code.videolan.org/videolan/vlc synced 2024-10-03 01:31:53 +02:00

qt: enable creating controls in box layouts

Needed shortly for the editing dialog of 'expert' prefs mode.

Note that I have not implemented it for `KeySelectorControl` since
I intend to exclude hotkeys entirely from expert mode.
This commit is contained in:
Lyndon Brown 2019-05-12 00:01:22 +01:00 committed by Jean-Baptiste Kempf
parent 7f35d0fcfd
commit 3eb4edb38e
2 changed files with 106 additions and 5 deletions

View File

@ -85,8 +85,7 @@ QString formatTooltip(const QString & tooltip)
}
ConfigControl *ConfigControl::createControl( module_config_t *p_item,
QWidget *parent,
QGridLayout *l, int line )
QWidget *parent )
{
ConfigControl *p_control = NULL;
@ -144,10 +143,29 @@ ConfigControl *ConfigControl::createControl( module_config_t *p_item,
default:
break;
}
if ( p_control ) p_control->insertInto( l, line );
return p_control;
}
ConfigControl *ConfigControl::createControl( module_config_t *item,
QWidget *parent,
QGridLayout *l, int line )
{
ConfigControl *control = createControl( item, parent );
if ( control )
control->insertInto( l, line );
return control;
}
ConfigControl *ConfigControl::createControl( module_config_t *item,
QWidget *parent,
QBoxLayout *l, int index )
{
ConfigControl *control = createControl( item, parent );
if ( control )
control->insertInto( l, index );
return control;
}
/*******************************************************
* Simple widgets
*******************************************************/
@ -222,6 +240,12 @@ void StringConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( text, line, LAST_COLUMN, Qt::AlignRight );
}
void StringConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, text );
}
void StringConfigControl::finish()
{
text->setText( qfu(p_item->value.psz) );
@ -305,6 +329,16 @@ void FileConfigControl::insertInto( QGridLayout *l, int line )
l->addLayout( textAndButton, line, LAST_COLUMN );
}
void FileConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
QHBoxLayout *textAndButton = new QHBoxLayout();
textAndButton->setMargin( 0 );
textAndButton->addWidget( text, 2 );
textAndButton->addWidget( browse, 0 );
l->insertLayout( index + 1, textAndButton );
}
void FileConfigControl::updateField()
{
QString file;
@ -406,6 +440,12 @@ void FontConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( font, line, 1, 1, -1 );
}
void FontConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, font );
}
void FontConfigControl::changeVisibility( bool visible )
{
font->setVisible( visible );
@ -453,6 +493,12 @@ void StringListConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( combo, line, LAST_COLUMN, Qt::AlignRight );
}
void StringListConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, combo );
}
void StringListConfigControl::comboIndexChanged( int i_index )
{
Q_UNUSED( i_index );
@ -572,6 +618,12 @@ void ModuleConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( combo, line, LAST_COLUMN );
}
void ModuleConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, combo );
}
void ModuleConfigControl::finish( )
{
combo->setEditable( false );
@ -665,6 +717,11 @@ void ModuleListConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( groupBox, line, 0, 1, -1 );
}
void ModuleListConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, groupBox );
}
ModuleListConfigControl::~ModuleListConfigControl()
{
foreach ( checkBoxListItem *it, modules )
@ -822,6 +879,12 @@ void IntegerConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( spin, line, LAST_COLUMN, Qt::AlignRight );
}
void IntegerConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, spin );
}
void IntegerConfigControl::finish()
{
spin->setMaximum( 2000000000 );
@ -904,7 +967,6 @@ int IntegerRangeSliderConfigControl::getValue() const
return slider->value();
}
/********* Integer / choice list **********/
IntegerListConfigControl::IntegerListConfigControl( module_config_t *_p_item,
QWidget *p ) :
@ -940,7 +1002,13 @@ void IntegerListConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( combo, line, LAST_COLUMN, Qt::AlignRight );
}
void IntegerListConfigControl::finish(module_config_t *p_module_config )
void IntegerListConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, combo );
}
void IntegerListConfigControl::finish( module_config_t *p_module_config )
{
combo->setEditable( false );
@ -1004,6 +1072,11 @@ void BoolConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( checkbox, line, 0, 1, -1 );
}
void BoolConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, checkbox );
}
void BoolConfigControl::finish()
{
checkbox->setChecked( p_item->value.i );
@ -1047,6 +1120,12 @@ void ColorConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( color_but, line, LAST_COLUMN, Qt::AlignRight );
}
void ColorConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, color_but );
}
void ColorConfigControl::finish()
{
i_color = p_item->value.i;
@ -1129,6 +1208,12 @@ void FloatConfigControl::insertInto( QGridLayout *l, int line )
l->addWidget( spin, line, LAST_COLUMN, Qt::AlignRight );
}
void FloatConfigControl::insertInto( QBoxLayout *l, int index )
{
l->insertWidget( index, label );
l->insertWidget( index + 1, spin );
}
void FloatConfigControl::finish()
{
spin->setMaximum( 2000000000. );

View File

@ -85,10 +85,15 @@ public:
void hide() { changeVisibility( false ); }
void show() { changeVisibility( true ); }
/* ConfigControl factory */
static ConfigControl * createControl( module_config_t*, QWidget* );
static ConfigControl * createControl( module_config_t*, QWidget*,
QGridLayout *, int line = 0 );
static ConfigControl * createControl( module_config_t*, QWidget*,
QBoxLayout *, int line = 0 );
/** Inserts control into an existing grid layout */
virtual void insertInto( QGridLayout*, int row = 0 ) { Q_UNUSED( row ); }
/** Inserts control into an existing box layout */
virtual void insertInto( QBoxLayout*, int index = 0 ) { Q_UNUSED( index ); }
virtual void doApply() = 0;
protected:
ConfigControl( module_config_t *_p_conf ) : p_item( _p_conf ) {}
@ -118,6 +123,7 @@ public:
IntegerConfigControl( module_config_t *, QWidget * );
IntegerConfigControl( module_config_t *, QLabel*, QSpinBox* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
int getValue() const Q_DECL_OVERRIDE;
protected:
QSpinBox *spin;
@ -159,6 +165,7 @@ public:
IntegerListConfigControl( module_config_t *, QWidget * );
IntegerListConfigControl( module_config_t *, QLabel *, QComboBox* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
int getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;
@ -175,6 +182,7 @@ public:
BoolConfigControl( module_config_t *, QWidget * );
BoolConfigControl( module_config_t *, QLabel *, QAbstractButton* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
int getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;
@ -191,6 +199,7 @@ public:
ColorConfigControl( module_config_t *, QLabel *, QAbstractButton* );
virtual ~ColorConfigControl() { delete color_px; }
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
int getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;
@ -224,6 +233,7 @@ public:
FloatConfigControl( module_config_t *, QWidget * );
FloatConfigControl( module_config_t *, QLabel*, QDoubleSpinBox* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
float getValue() const Q_DECL_OVERRIDE;
protected:
@ -265,6 +275,7 @@ public:
StringConfigControl( module_config_t *, QWidget * );
StringConfigControl( module_config_t *, QLabel *, QLineEdit* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
QString getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;
@ -291,6 +302,7 @@ public:
FileConfigControl( module_config_t *, QWidget * );
FileConfigControl( module_config_t *, QLabel *, QLineEdit *, QPushButton * );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
QString getValue() const Q_DECL_OVERRIDE;
public slots:
virtual void updateField();
@ -319,6 +331,7 @@ public:
FontConfigControl( module_config_t *, QWidget * );
FontConfigControl( module_config_t *, QLabel *, QFontComboBox *);
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
QString getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;
@ -333,6 +346,7 @@ public:
ModuleConfigControl( module_config_t *, QWidget * );
ModuleConfigControl( module_config_t *, QLabel *, QComboBox* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
QString getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;
@ -355,6 +369,7 @@ public:
ModuleListConfigControl( module_config_t *, QWidget *, bool );
virtual ~ModuleListConfigControl();
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
QString getValue() const Q_DECL_OVERRIDE;
public slots:
void onUpdate();
@ -376,6 +391,7 @@ public:
StringListConfigControl( module_config_t *, QWidget * );
StringListConfigControl( module_config_t *, QLabel *, QComboBox* );
void insertInto( QGridLayout*, int row = 0 ) Q_DECL_OVERRIDE;
void insertInto( QBoxLayout*, int index = 0 ) Q_DECL_OVERRIDE;
QString getValue() const Q_DECL_OVERRIDE;
protected:
void changeVisibility( bool ) Q_DECL_OVERRIDE;