X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Fextended_panels.cpp;h=1d71c52e212d5d7ef358070d2c01a4b5228a8c42;hb=42fef87c4f281f304b7d56c0cbfde0b7d1912ab6;hp=7fb529157367be0afba6467eb8c5f9f28d2b6a4e;hpb=7d723b44f45faeb3f9c6806f270f2fe2cd7afd50;p=vlc diff --git a/modules/gui/qt4/components/extended_panels.cpp b/modules/gui/qt4/components/extended_panels.cpp old mode 100755 new mode 100644 index 7fb5291573..1d71c52e21 --- a/modules/gui/qt4/components/extended_panels.cpp +++ b/modules/gui/qt4/components/extended_panels.cpp @@ -39,7 +39,6 @@ #include "qt4.hpp" #include "input_manager.hpp" -#include "../../audio_filter/equalizer_presets.h" #include #include #include @@ -280,7 +279,10 @@ void ExtVideo::ChangeVFiltersString( char *psz_name, bool b_add ) psz_parser = psz_string; if( asprintf( &psz_string, ( *psz_string ) ? "%s:%s" : "%s%s", psz_string, psz_name ) == -1 ) + { + free( psz_parser ); return; + } free( psz_parser ); } else @@ -444,7 +446,7 @@ void ExtVideo::setWidgetValue( QObject *widget ) else if( lineedit ) { char str[30]; - sprintf( str, "%06X", val.i_int ); + snprintf( str, sizeof(str), "%06X", val.i_int ); lineedit->setText( str ); } else if( combobox ) combobox->setCurrentIndex( @@ -806,22 +808,15 @@ Equalizer::Equalizer( intf_thread_t *_p_intf, QWidget *_parent ) : smallFont.setPointSize( smallFont.pointSize() - 3 ); ui.setupUi( this ); - presetsComboBox = ui.presetsCombo; - ui.preampLabel->setFont( smallFont ); - ui.preampSlider->setMaximum( 400 ); - for( int i = 0 ; i < NB_PRESETS ; i ++ ) - { - ui.presetsCombo->addItem( qtr( preset_list_text[i] ), - QVariant( i ) ); - } - CONNECT( ui.presetsCombo, activated( int ), this, setPreset( int ) ); - BUTTONACT( ui.enableCheck, enable() ); - BUTTONACT( ui.eq2PassCheck, set2Pass() ); - - CONNECT( ui.preampSlider, valueChanged( int ), this, setPreamp() ); + /* Setup of presetsComboBox */ + presetsComboBox = ui.presetsCombo; + CONNECT( presetsComboBox, currentIndexChanged( int ), + this, updateUISliderValues( int ) ); + CONNECT( presetsComboBox, activated( int ), this, setCorePreset( int ) ); + /* Add the sliders for the Bands */ QGridLayout *grid = new QGridLayout( ui.frame ); grid->setMargin( 0 ); for( int i = 0 ; i < BANDS ; i++ ) @@ -829,26 +824,52 @@ Equalizer::Equalizer( intf_thread_t *_p_intf, QWidget *_parent ) : bands[i] = new QSlider( Qt::Vertical ); bands[i]->setMaximum( 400 ); bands[i]->setValue( 200 ); - CONNECT( bands[i], valueChanged( int ), this, setBand() ); + CONNECT( bands[i], valueChanged( int ), this, setCoreBands() ); + band_texts[i] = new QLabel( band_frequencies[i] + "\n0.0dB" ); band_texts[i]->setFont( smallFont ); + grid->addWidget( bands[i], 0, i ); grid->addWidget( band_texts[i], 1, i ); } - /* Write down initial values */ - aout_instance_t *p_aout = ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); + /* Add the listed presets */ + for( int i = 0 ; i < NB_PRESETS ; i ++ ) + { + presetsComboBox->addItem( qtr( preset_list_text[i] ), + QVariant( preset_list[i] ) ); + } + + /* Connects */ + BUTTONACT( ui.enableCheck, enable() ); + BUTTONACT( ui.eq2PassCheck, set2Pass() ); + CONNECT( ui.preampSlider, valueChanged( int ), this, setPreamp() ); + + /* Do the update from the value of the core */ + updateUIFromCore(); +} + +Equalizer::~Equalizer() +{ +} + +/* Write down initial values */ +void Equalizer::updateUIFromCore() +{ char *psz_af; - char *psz_bands; float f_preamp; + int i_preset; + + aout_instance_t *p_aout = ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); if( p_aout ) { psz_af = var_GetNonEmptyString( p_aout, "audio-filter" ); if( var_GetBool( p_aout, "equalizer-2pass" ) ) ui.eq2PassCheck->setChecked( true ); - psz_bands = var_GetNonEmptyString( p_aout, "equalizer-bands" ); f_preamp = var_GetFloat( p_aout, "equalizer-preamp" ); + i_preset = presetsComboBox->findData( QVariant( + var_GetString( p_aout, "equalizer-preset" ) ) ); vlc_object_release( p_aout ); } else @@ -856,21 +877,20 @@ Equalizer::Equalizer( intf_thread_t *_p_intf, QWidget *_parent ) : psz_af = config_GetPsz( p_intf, "audio-filter" ); if( config_GetInt( p_intf, "equalizer-2pass" ) ) ui.eq2PassCheck->setChecked( true ); - psz_bands = config_GetPsz( p_intf, "equalizer-bands" ); f_preamp = config_GetFloat( p_intf, "equalizer-preamp" ); + i_preset = presetsComboBox->findData( QVariant( + config_GetPsz( p_intf, "equalizer-preset" ) ) ); } if( psz_af && strstr( psz_af, "equalizer" ) != NULL ) ui.enableCheck->setChecked( true ); - free( psz_af ); enable( ui.enableCheck->isChecked() ); - setValues( psz_bands, f_preamp ); -} + presetsComboBox->setCurrentIndex( i_preset ); -Equalizer::~Equalizer() -{ + free( psz_af ); } +/* Functin called when enableButton is toggled */ void Equalizer::enable() { bool en = ui.enableCheck->isChecked(); @@ -880,12 +900,18 @@ void Equalizer::enable() // en ? true : false ); // aout_EnableFilter( VLC_OBJECT( p_intf ), "vsurround", // en ? true : false ); - enable( en ); + enable( en ); + + if( presetsComboBox->currentIndex() < 0 ) + presetsComboBox->setCurrentIndex( 0 ); + } void Equalizer::enable( bool en ) { ui.eq2PassCheck->setEnabled( en ); + presetsComboBox->setEnabled( en ); + ui.presetLabel->setEnabled( en ); ui.preampLabel->setEnabled( en ); ui.preampSlider->setEnabled( en ); for( int i = 0 ; i< BANDS; i++ ) @@ -894,6 +920,7 @@ void Equalizer::enable( bool en ) } } +/* Function called when the set2Pass button is activated */ void Equalizer::set2Pass() { aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, @@ -914,104 +941,120 @@ void Equalizer::set2Pass() } } +/* Function called when the preamp slider is moved */ void Equalizer::setPreamp() { - float f= ( float )( ui.preampSlider->value() ) /10 - 20; - char psz_val[5]; + const float f = ( float )( ui.preampSlider->value() ) /10 - 20; aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); - sprintf( psz_val, "%.1f", f ); - ui.preampLabel->setText( qtr( "Preamp\n" ) + psz_val + qtr( "dB" ) ); + ui.preampLabel->setText( qtr( "Preamp\n" ) + QString::number( f, 'f', 1 ) + + qtr( "dB" ) ); if( p_aout ) { - delCallbacks( p_aout ); + //delCallbacks( p_aout ); var_SetFloat( p_aout, "equalizer-preamp", f ); - addCallbacks( p_aout ); + //addCallbacks( p_aout ); vlc_object_release( p_aout ); } config_PutFloat( p_intf, "equalizer-preamp", f ); } -void Equalizer::setBand() +void Equalizer::setCoreBands() { - char psz_values[102]; memset( psz_values, 0, 102 ); - /**\todo smoothing */ - for( int i = 0 ; i< BANDS ; i++ ) + QString values; + for( int i = 0; i < BANDS; i++ ) { - char psz_val[8]; - float f_val = ( float )( bands[i]->value() ) / 10 - 20 ; - sprintf( psz_values, "%s %f", psz_values, f_val ); - sprintf( psz_val, "% 5.1f", f_val ); - band_texts[i]->setText( band_frequencies[i] + "\n" + psz_val + "dB" ); + const float f_val = (float)( bands[i]->value() ) / 10 - 20; + QString val = QString("%1").arg( f_val, 5, 'f', 1 ); + + band_texts[i]->setText( band_frequencies[i] + "\n" + val + "dB" ); + values += " " + val; } + const char *psz_values = values.toAscii().constData(); + aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); if( p_aout ) { - delCallbacks( p_aout ); + //delCallbacks( p_aout ); var_SetString( p_aout, "equalizer-bands", psz_values ); - addCallbacks( p_aout ); + //addCallbacks( p_aout ); vlc_object_release( p_aout ); } } -void Equalizer::setValues( char *psz_bands, float f_preamp ) + +void Equalizer::updateUISliderValues( int i_preset ) { - char *p = psz_bands; + if( i_preset < 0 ) return; + + char *p = createValuesFromPreset( i_preset ); + char *psz = p; + float f_preamp = eqz_preset_10b[i_preset]->f_preamp; + if ( p ) { for( int i = 0; i < BANDS; i++ ) { - char psz_val[8]; - float f = strtof( p, &p ); - int i_val= ( int )( ( f + 20 ) * 10 ); - bands[i]->setValue( i_val ); - sprintf( psz_val, "% 5.1f", f ); - band_texts[i]->setText( band_frequencies[i] + "\n" + psz_val + - "dB" ); - if( p == NULL || *p == '\0' ) break; + const float f = us_strtod(p, &p ); + + bands[i]->setValue( (int)( ( f + 20 ) * 10 ) ); + + band_texts[i]->setText( band_frequencies[i] + "\n" + + QString("%1").arg( f, 5, 'f', 1 ) + "dB" ); + if( p == NULL || *p == '\0' ) + break; p++; - if( *p == '\0' ) break; + if( *p == '\0' ) + break; } + free( psz ); } - char psz_val[5]; - int i_val = ( int )( ( f_preamp + 20 ) * 10 ); - sprintf( psz_val, "%.1f", f_preamp ); - ui.preampSlider->setValue( i_val ); - ui.preampLabel->setText( qtr( "Preamp\n" ) + psz_val + qtr( "dB" ) ); + ui.preampSlider->setValue( (int)( ( f_preamp + 20 ) * 10 ) ); + ui.preampLabel->setText( qtr( "Preamp\n" ) + + QString::number( f_preamp, 'f', 1 ) + qtr( "dB" ) ); } -void Equalizer::setPreset( int preset ) +char * Equalizer::createValuesFromPreset( int i_preset ) { - aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); + char *psz_values; + QString values; - char psz_values[102]; memset( psz_values, 0, 102 ); - char psz_values2[102];memset( psz_values2, 0, 102 ); + /* Create the QString in Qt */ for( int i = 0 ; i< BANDS ;i++ ) - { - strcpy( psz_values2, psz_values ); + values += QString( " %1" ).arg( eqz_preset_10b[i_preset]->f_amp[i] ); - sprintf( psz_values, "%s %5.1f", - psz_values2, eqz_preset_10b[preset]->f_amp[i] ); - } + /* Convert it to char * */ + if( !asprintf( &psz_values, "%s", values.toAscii().constData() ) ) + return NULL; + + return psz_values; +} + +void Equalizer::setCorePreset( int i_preset ) +{ + char *psz_values = createValuesFromPreset( i_preset ); + if( !psz_values ) return ; + aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); if( p_aout ) { delCallbacks( p_aout ); + var_SetString( p_aout , "equalizer-preset" , preset_list[i_preset] ); + var_SetString( p_aout, "equalizer-bands", psz_values ); var_SetFloat( p_aout, "equalizer-preamp", - eqz_preset_10b[preset]->f_preamp ); + eqz_preset_10b[i_preset]->f_preamp ); addCallbacks( p_aout ); vlc_object_release( p_aout ); } config_PutPsz( p_intf, "equalizer-bands", psz_values ); + config_PutPsz( p_intf, "equalizer-preset", preset_list[i_preset] ); config_PutFloat( p_intf, "equalizer-preamp", - eqz_preset_10b[preset]->f_preamp ); - - setValues( psz_values, eqz_preset_10b[preset]->f_preamp ); + eqz_preset_10b[i_preset]->f_preamp ); } static int PresetCallback( vlc_object_t *p_this, char const *psz_cmd, @@ -1019,7 +1062,8 @@ static int PresetCallback( vlc_object_t *p_this, char const *psz_cmd, { char *psz_preset = newval.psz_string; Equalizer *eq = ( Equalizer * )p_data; - eq->presetsComboBox->setCurrentIndex( eq->presetsComboBox->findText( qfu( psz_preset ) ) ); + int i_preset = eq->presetsComboBox->findData( QVariant( psz_preset ) ); + eq->presetsComboBox->setCurrentIndex( i_preset ); return VLC_SUCCESS; } @@ -1058,7 +1102,7 @@ Spatializer::Spatializer( intf_thread_t *_p_intf, QWidget *_parent ) : QGridLayout *layout = new QGridLayout( this ); layout->setMargin( 0 ); - enableCheck = new QCheckBox( qfu( "Enable spatializer" ) ); + enableCheck = new QCheckBox( qtr( "Enable spatializer" ) ); layout->addWidget( enableCheck, 0, 0, 1, NUM_SP_CTRL ); for( int i = 0 ; i < NUM_SP_CTRL ; i++ ) @@ -1145,16 +1189,13 @@ void Spatializer::setInitValues() void Spatializer::setValues( float *controlVars ) { - char psz_val[5]; - char var_name[5]; aout_instance_t *p_aout= ( aout_instance_t * ) vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); for( int i = 0 ; i < NUM_SP_CTRL ; i++ ) { - float f= ( float )( spatCtrl[i]->value() ); - sprintf( psz_val, "%.1f", f ); - ctrl_readout[i]->setText( psz_val ); + float f = (float)( spatCtrl[i]->value() ); + ctrl_readout[i]->setText( QString::number( f, 'f', 1 ) ); } if( p_aout ) { @@ -1294,8 +1335,6 @@ SyncControls::SyncControls( intf_thread_t *_p_intf, QWidget *_parent ) : updateButton = new QToolButton; updateButton->setAutoRaise( true ); - updateButton->setText( "u" ); - updateButton->setToolTip( qtr( "Force update of the values in this dialog" ) ); mainLayout->addWidget( updateButton, 0, 4, 1, 1 ); @@ -1310,7 +1349,8 @@ SyncControls::SyncControls( intf_thread_t *_p_intf, QWidget *_parent ) : CONNECT( subsSpin, valueChanged ( double ), this, advanceSubs( double ) ) ; CONNECT( subSpeedSpin, valueChanged ( double ), this, adjustSubsSpeed( double ) ); - BUTTONACT( updateButton, update() ); + BUTTON_SET_ACT_I( updateButton, "", update, + qtr( "Force update of this dialog's values" ), update() ); /* Set it */ update();