vlc | branch: master | Francois Cartegnie <[email protected]> | Thu Mar 21 19:30:57 2013 +0100| [d68625eae3a6b56c4a74f37bf9750a2aedc14f0a] | committer: Francois Cartegnie
Qt: ExtendedDialog: Add sync to config checkbox for audio filters (fix #7924) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d68625eae3a6b56c4a74f37bf9750a2aedc14f0a --- modules/gui/qt4/components/extended_panels.cpp | 31 +++++++++++++++++++++--- modules/gui/qt4/components/extended_panels.hpp | 8 +++++- modules/gui/qt4/dialogs/extended.cpp | 27 +++++++++++++++++---- modules/gui/qt4/dialogs/extended.hpp | 9 +++++++ 4 files changed, 65 insertions(+), 10 deletions(-) diff --git a/modules/gui/qt4/components/extended_panels.cpp b/modules/gui/qt4/components/extended_panels.cpp index 7025386..d61276c 100644 --- a/modules/gui/qt4/components/extended_panels.cpp +++ b/modules/gui/qt4/components/extended_panels.cpp @@ -921,7 +921,9 @@ void ExtV4l2::ValueChange( int value ) FilterSliderData::FilterSliderData( QObject *parent, QSlider *_slider ) : QObject( parent ), slider( _slider ) -{} +{ + b_save_to_config = false; +} FilterSliderData::FilterSliderData( QObject *parent, intf_thread_t *_p_intf, @@ -931,6 +933,7 @@ FilterSliderData::FilterSliderData( QObject *parent, QObject( parent ), slider( _slider ), valueLabel( _label ), nameLabel( _nameLabel ), p_data( _p_data ), p_intf( _p_intf ) { + b_save_to_config = false; slider->setMinimum( p_data->f_min / p_data->f_resolution ); slider->setMaximum( p_data->f_max / p_data->f_resolution ); nameLabel->setText( p_data->descs ); @@ -996,10 +999,16 @@ void FilterSliderData::onValueChanged( int i ) const void FilterSliderData::writeToConfig() const { + if ( !b_save_to_config ) return; float f = ((float) slider->value()) * p_data->f_resolution; config_PutFloat( p_intf, qtu(p_data->name), f ); } +void FilterSliderData::setSaveToConfig( bool b ) +{ + b_save_to_config = b; +} + AudioFilterControlWidget::AudioFilterControlWidget ( intf_thread_t *_p_intf, QWidget *parent, const char *_name ) : QWidget( parent ), p_intf( _p_intf ), name( _name ), i_smallfont(0) @@ -1034,6 +1043,7 @@ void AudioFilterControlWidget::build() ctrlLayout->addWidget( valueLabel, 1, i, Qt::AlignHCenter ); ctrlLayout->addWidget( nameLabel, 2, i, Qt::AlignHCenter ); i++; + sliderDatas << filter; } vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout(); @@ -1065,6 +1075,12 @@ void AudioFilterControlWidget::enable( bool b_enable ) const playlist_EnableAudioFilter( THEPL, qtu(name), b_enable ); } +void AudioFilterControlWidget::setSaveToConfig( bool b_save ) +{ + foreach( FilterSliderData *f, sliderDatas ) + f->setSaveToConfig( b_save ); +} + /********************************************************************** * Equalizer **********************************************************************/ @@ -1153,6 +1169,7 @@ void EqualizerSliderData::onValueChanged( int i ) const void EqualizerSliderData::writeToConfig() const { + if ( !b_save_to_config ) return; QStringList bands = getBandsFromAout(); if ( bands.count() > index ) { @@ -1238,7 +1255,7 @@ void Equalizer::build() ctrlLayout->addWidget( slider, 0, i, Qt::AlignHCenter ); ctrlLayout->addWidget( valueLabel, 2, i, Qt::AlignHCenter ); ctrlLayout->addWidget( nameLabel, 1, i, Qt::AlignHCenter ); - eqSliders << filter; /* keep track for applying presets */ + sliderDatas << filter; /* keep track for applying presets */ i++; } @@ -1304,6 +1321,12 @@ void Equalizer::build() CONNECT( ui.eq2PassCheck, toggled(bool), this, enable2Pass(bool) ); } +void Equalizer::setSaveToConfig( bool b_save ) +{ + AudioFilterControlWidget::setSaveToConfig( b_save ); + preamp->setSaveToConfig( b_save ); +} + void Equalizer::setCorePreset( int i_preset ) { if( i_preset < 1 ) @@ -1313,8 +1336,8 @@ void Equalizer::setCorePreset( int i_preset ) preamp->setValue( eqz_preset_10b[i_preset].f_preamp ); for ( int i=0; i< qMin( eqz_preset_10b[i_preset].i_band, - eqSliders.count() ) ; i++ ) - eqSliders[i]->setValue( eqz_preset_10b[i_preset].f_amp[i] ); + sliderDatas.count() ) ; i++ ) + sliderDatas[i]->setValue( eqz_preset_10b[i_preset].f_amp[i] ); vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout(); if( p_aout ) diff --git a/modules/gui/qt4/components/extended_panels.hpp b/modules/gui/qt4/components/extended_panels.hpp index 5e77ed2..e43e743 100644 --- a/modules/gui/qt4/components/extended_panels.hpp +++ b/modules/gui/qt4/components/extended_panels.hpp @@ -111,11 +111,13 @@ protected: QLabel *nameLabel; const slider_data_t *p_data; intf_thread_t *p_intf; + bool b_save_to_config; public slots: virtual void onValueChanged( int i ) const; virtual void updateText( int i ); virtual void writeToConfig() const; + void setSaveToConfig( bool ); }; class AudioFilterControlWidget : public QWidget @@ -129,6 +131,7 @@ public: protected: virtual void build(); QVector<FilterSliderData::slider_data_t> controls; + QVector<FilterSliderData *> sliderDatas; QGroupBox *slidersBox; intf_thread_t *p_intf; QString name; // filter's module name @@ -136,6 +139,7 @@ protected: protected slots: void enable( bool ) const; + virtual void setSaveToConfig( bool ); }; class EqualizerSliderData : public FilterSliderData @@ -168,8 +172,10 @@ public: protected: virtual void build(); +protected slots: + virtual void setSaveToConfig( bool ); + private: - QVector<FilterSliderData *> eqSliders; FilterSliderData *preamp; FilterSliderData::slider_data_t preamp_values; diff --git a/modules/gui/qt4/dialogs/extended.cpp b/modules/gui/qt4/dialogs/extended.cpp index 4a95bcf..0e9b906 100644 --- a/modules/gui/qt4/dialogs/extended.cpp +++ b/modules/gui/qt4/dialogs/extended.cpp @@ -70,7 +70,7 @@ ExtendedDialog::ExtendedDialog( intf_thread_t *_p_intf ) audioTab->addTab( spatial, qtr( "Spatializer" ) ); audioLayout->addWidget( audioTab ); - mainTabW->addTab( audioWidget, qtr( "Audio Effects" ) ); + mainTabW->insertTab( AUDIO_TAB, audioWidget, qtr( "Audio Effects" ) ); /* Video Effects */ QWidget *videoWidget = new QWidget; @@ -81,23 +81,35 @@ ExtendedDialog::ExtendedDialog( intf_thread_t *_p_intf ) videoLayout->addWidget( videoTab ); videoTab->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum ); - mainTabW->addTab( videoWidget, qtr( "Video Effects" ) ); + mainTabW->insertTab( VIDEO_TAB, videoWidget, qtr( "Video Effects" ) ); syncW = new SyncControls( p_intf, videoTab ); - mainTabW->addTab( syncW, qtr( "Synchronization" ) ); + mainTabW->insertTab( SYNCHRO_TAB, syncW, qtr( "Synchronization" ) ); if( module_exists( "v4l2" ) ) { ExtV4l2 *v4l2 = new ExtV4l2( p_intf, mainTabW ); - mainTabW->addTab( v4l2, qtr( "v4l2 controls" ) ); + mainTabW->insertTab( V4L2_TAB, v4l2, qtr( "v4l2 controls" ) ); } layout->addWidget( mainTabW ); + /* Bottom buttons / checkbox line */ + QHBoxLayout *buttonsLayout = new QHBoxLayout(); + layout->addLayout( buttonsLayout ); + + writeChangesBox = new QCheckBox( qtr("&Write changes to config") ); + buttonsLayout->addWidget( writeChangesBox ); + CONNECT( writeChangesBox, toggled(bool), compres, setSaveToConfig(bool) ); + CONNECT( writeChangesBox, toggled(bool), spatial, setSaveToConfig(bool) ); + CONNECT( writeChangesBox, toggled(bool), equal, setSaveToConfig(bool) ); + CONNECT( mainTabW, currentChanged(int), this, currentTabChanged(int) ); + QDialogButtonBox *closeButtonBox = new QDialogButtonBox( Qt::Horizontal, this ); closeButtonBox->addButton( new QPushButton( qtr("&Close"), this ), QDialogButtonBox::RejectRole ); - layout->addWidget( closeButtonBox ); + buttonsLayout->addWidget( closeButtonBox ); + CONNECT( closeButtonBox, rejected(), this, close() ); /* Restore geometry or move this dialog on the left pane of the MI */ @@ -137,3 +149,8 @@ void ExtendedDialog::changedItem( int i_status ) syncW->clean(); videoEffect->clean(); } + +void ExtendedDialog::currentTabChanged( int i ) +{ + writeChangesBox->setVisible( i == AUDIO_TAB ); +} diff --git a/modules/gui/qt4/dialogs/extended.hpp b/modules/gui/qt4/dialogs/extended.hpp index ae5be3f..3fd3596 100644 --- a/modules/gui/qt4/dialogs/extended.hpp +++ b/modules/gui/qt4/dialogs/extended.hpp @@ -35,6 +35,13 @@ class ExtendedDialog : public QVLCDialog, public Singleton<ExtendedDialog> { Q_OBJECT public: + enum + { + AUDIO_TAB = 0, + VIDEO_TAB, + SYNCHRO_TAB, + V4L2_TAB + }; void showTab( int i ); int currentTab(); private: @@ -45,8 +52,10 @@ private: ExtVideo *videoEffect; Equalizer *equal; QTabWidget *mainTabW; + QCheckBox *writeChangesBox; private slots: void changedItem( int ); + void currentTabChanged( int ); friend class Singleton<ExtendedDialog>; }; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
