From b96c13d1a06d3f3fa07abd9e908112086e04c724 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C3=ABl=20Carr=C3=A9?= Date: Mon, 15 Oct 2007 21:09:40 +0000 Subject: [PATCH] qt4 simple preferences: only show the options of the selected audio output module --- .../qt4/components/preferences_widgets.cpp | 20 ++++- .../gui/qt4/components/simple_preferences.cpp | 81 ++++++++++++++----- .../gui/qt4/components/simple_preferences.hpp | 15 ++++ modules/gui/qt4/ui/sprefs_audio.ui | 8 +- 4 files changed, 99 insertions(+), 25 deletions(-) diff --git a/modules/gui/qt4/components/preferences_widgets.cpp b/modules/gui/qt4/components/preferences_widgets.cpp index ad7a2e2e94..81a48fe789 100644 --- a/modules/gui/qt4/components/preferences_widgets.cpp +++ b/modules/gui/qt4/components/preferences_widgets.cpp @@ -27,7 +27,6 @@ * Todo: * - Finish implementation (see WX) * - Improvements over WX - * - Password field implementation (through "pwd" bool param * - Validator for modulelist * - Implement update stuff using a general Updated signal */ @@ -232,6 +231,8 @@ void StringConfigControl::finish() text->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( text, SIGNAL(textChanged( const QString & )), this, + SIGNAL(Updated()) ); } /*********** File **************/ @@ -297,6 +298,8 @@ void FileConfigControl::finish() text->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( text, SIGNAL(textChanged( const QString & )), this, + SIGNAL(Updated()) ); } /********* String / Directory **********/ @@ -392,6 +395,8 @@ void StringListConfigControl::finish( bool bycat ) combo->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( combo, SIGNAL(currentIndexChanged( int )), this, + SIGNAL(Updated()) ); } QString StringListConfigControl::getValue() @@ -473,6 +478,8 @@ void ModuleConfigControl::finish( bool bycat ) combo->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( combo, SIGNAL(currentIndexChanged( int )), this, + SIGNAL(Updated()) ); } QString ModuleConfigControl::getValue() @@ -488,6 +495,8 @@ ModuleListConfigControl::ModuleListConfigControl( vlc_object_t *_p_this, { groupBox = new QGroupBox ( qtr(p_item->psz_text) ); text = new QLineEdit(); + connect( text, SIGNAL(textChanged( const QString & )), this, + SIGNAL(Updated()) ); QGridLayout *layoutGroupBox = new QGridLayout( groupBox ); finish( bycat ); @@ -639,6 +648,7 @@ void ModuleListConfigControl::onUpdate( int value ) } } } + emit Updated(); } /************************************************************************** @@ -688,6 +698,8 @@ void IntegerConfigControl::finish() spin->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( spin, SIGNAL(valueChanged( int )), this, + SIGNAL(Updated()) ); } int IntegerConfigControl::getValue() @@ -785,6 +797,8 @@ void IntegerListConfigControl::finish( bool bycat ) combo->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( combo, SIGNAL(currentIndexChanged( int )), this, + SIGNAL(Updated()) ); } int IntegerListConfigControl::getValue() @@ -829,6 +843,8 @@ void BoolConfigControl::finish() checkbox->setCheckState( p_item->value.i == VLC_TRUE ? Qt::Checked : Qt::Unchecked ); checkbox->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( checkbox, SIGNAL(stateChanged( int )), this, + SIGNAL(Updated()) ); } int BoolConfigControl::getValue() @@ -886,6 +902,8 @@ void FloatConfigControl::finish() spin->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); if( label ) label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) ); + connect( spin, SIGNAL(valueChanged( double )), this, + SIGNAL(Updated()) ); } float FloatConfigControl::getValue() diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp index db0b7127dd..2d35fb1bde 100644 --- a/modules/gui/qt4/components/simple_preferences.cpp +++ b/modules/gui/qt4/components/simple_preferences.cpp @@ -166,7 +166,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, { /* Video Panel Implementation */ START_SPREFS_CAT( Video , qtr("General video settings") ); - CONFIG_GENERIC( "video", Bool, NULL, enableVideo ); + CONFIG_GENERIC( "video", Bool, NULL, enableVideo ); CONFIG_GENERIC( "fullscreen", Bool, NULL, fullscreen ); CONFIG_GENERIC( "overlay", Bool, NULL, overlay ); @@ -195,37 +195,48 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, /* Audio Panel Implementation */ START_SPREFS_CAT( Audio, qtr("General audio settings") ); -#ifdef WIN32 - ui.OSSBrowse->hide(); - ui.OSSDevice->hide(); - ui.OSSLabel->hide(); - ui.alsaDevice->hide(); - ui.alsaLabel->hide(); -#else - ui.DirectXLabel->setVisible( false ); - ui.DirectXDevice->setVisible( false ); -#endif - CONFIG_GENERIC( "audio", Bool, NULL, enableAudio ); - CONFIG_GENERIC_NO_BOOL( "volume" , IntegerRangeSlider, NULL, + CONFIG_GENERIC( "audio", Bool, NULL, enableAudio ); + + CONFIG_GENERIC_NO_BOOL( "volume" , IntegerRangeSlider, NULL, defaultVolume ); - CONFIG_GENERIC( "audio-language" , String , NULL, + CONFIG_GENERIC( "audio-language" , String , NULL, preferredAudioLanguage ); - CONFIG_GENERIC( "spdif" , Bool , NULL, spdifBox ); - CONFIG_GENERIC( "force-dolby-surround" , IntegerList , NULL, + CONFIG_GENERIC( "spdif" , Bool , NULL, spdifBox ); + CONFIG_GENERIC( "force-dolby-surround" , IntegerList , NULL, detectionDolby ); CONFIG_GENERIC( "aout" , Module , NULL, outputModule ); + CONNECT( control, Updated(), this, AudioDeviceChanged() ); + QString aout_value = (dynamic_cast(control))->getValue(); #ifndef WIN32 - CONFIG_GENERIC( "alsadev" , StringList , NULL, alsaDevice ); - CONFIG_GENERIC_FILE( "dspdev" , File , NULL, OSSDevice, OSSBrowse ); + CONFIG_GENERIC( "alsadev" , StringList , ui.alsaLabel, alsaDevice ); + alsa_options = control; + CONFIG_GENERIC_FILE( "dspdev" , File , ui.OSSLabel, OSSDevice, + OSSBrowse ); + oss_options = control; #else - CONFIG_GENERIC( "directx-audio-device" , IntegerList, NULL, + CONFIG_GENERIC( "directx-audio-device" , IntegerList, ui.DirectXLabel, DirectXDevice ); + directx_options = control; #endif - CONFIG_GENERIC_FILE( "audiofile-file" , File , NULL, FileName, + CONFIG_GENERIC_FILE( "audiofile-file" , File , ui.FileLabel, FileName, fileBrowseButton ); + file_options = control; + +#ifdef WIN32 + ui.OSSBrowse->hide(); + ui.OSSDevice->hide(); + ui.OSSLabel->hide(); + ui.alsaDevice->hide(); + ui.alsaLabel->hide(); +#else + ui.DirectXLabel->setVisible( false ); + ui.DirectXDevice->setVisible( false ); +#endif + + updateAudioOptions( aout_value ); CONFIG_GENERIC( "headphone-dolby" , Bool , NULL, headphoneEffect ); // CONFIG_GENERIC( "" , Bool, NULL, ); activation of normalizer //FIXME @@ -321,6 +332,36 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, this->setLayout(panel_layout); } +void SPrefsPanel::AudioDeviceChanged() +{ + ModuleConfigControl *module_config = + dynamic_cast( sender() ); + updateAudioOptions( module_config->getValue() ); +} + +void SPrefsPanel::updateAudioOptions( QString value ) +{ +#ifndef WIN32 + alsa_options->hide(); + oss_options->hide(); +#else + directx_options->hide(); +#endif + file_options->hide(); + + if( value == "aout_file" ) + file_options->show(); +#ifndef WIN32 + else if( value == "alsa" ) + alsa_options->show(); + else if( value == "oss" ) + oss_options->show(); +#else + else if( value == "directx" ) + directx_options->show(); +#endif +} + void SPrefsPanel::apply() { QList::Iterator i; diff --git a/modules/gui/qt4/components/simple_preferences.hpp b/modules/gui/qt4/components/simple_preferences.hpp index f495fc0a10..ef8c479941 100644 --- a/modules/gui/qt4/components/simple_preferences.hpp +++ b/modules/gui/qt4/components/simple_preferences.hpp @@ -67,6 +67,21 @@ public: private: intf_thread_t *p_intf; QList controls; + +/* ConfigControl for audio output options */ +#ifndef WIN32 + ConfigControl *alsa_options; + ConfigControl *oss_options; +#else + ConfigControl *directx_options; +#endif + ConfigControl *file_options; + + void updateAudioOptions( QString ); + +/* Display only the options for the selected audio output */ +private slots: + void AudioDeviceChanged(); }; #endif diff --git a/modules/gui/qt4/ui/sprefs_audio.ui b/modules/gui/qt4/ui/sprefs_audio.ui index f77ec74b40..ad9fb9f33d 100644 --- a/modules/gui/qt4/ui/sprefs_audio.ui +++ b/modules/gui/qt4/ui/sprefs_audio.ui @@ -141,7 +141,7 @@ - + _("File") @@ -160,14 +160,14 @@ - _("OSS Device") + _("Device") - _("DirectX Device") + _("Device") @@ -177,7 +177,7 @@ - _("Alsa Device") + _("Device") -- 2.39.2