X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fequalizer.m;h=63d5c3cf86bad4853a5cd9d2535010825966277a;hb=df61d33b06e2b3cbbe746b2f5a9bea5b370c24ff;hp=55fe1ad0f0c7bea79e14b9a16430b8a0ecc48f04;hpb=f5321d75ddb292892771f513677f8e7c12fb90c4;p=vlc diff --git a/modules/gui/macosx/equalizer.m b/modules/gui/macosx/equalizer.m index 55fe1ad0f0..63d5c3cf86 100644 --- a/modules/gui/macosx/equalizer.m +++ b/modules/gui/macosx/equalizer.m @@ -1,16 +1,17 @@ /***************************************************************************** * equalizer.m: MacOS X interface module ***************************************************************************** - * Copyright (C) 2004 VideoLAN + * Copyright (C) 2004-2008 the VideoLAN team * $Id$ * - * Authors: JŽr™me Decoodt + * Authors: Jérôme Decoodt + * Felix Paul Kühne * * 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 * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -18,43 +19,46 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** * Preamble *****************************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include -#include -#include +#include #include "intf.h" #include #include "equalizer.h" +#include "../../audio_filter/equalizer_presets.h" /***************************************************************************** - * VLCEqualizer implementation + * VLCEqualizer implementation *****************************************************************************/ @implementation VLCEqualizer -static void ChangeFiltersString( playlist_t *p_playlist, - aout_instance_t *p_aout, - char *psz_name, vlc_bool_t b_add ) +static void ChangeFiltersString( intf_thread_t *p_intf, + char *psz_name, bool b_add ) { char *psz_parser, *psz_string; - vlc_object_t *p_object = NULL; int i; - - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; + vlc_object_t *p_object = vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + aout_instance_t *p_aout = (aout_instance_t *)p_object; + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_object == NULL ) return; - psz_string = var_GetString( p_object, "audio-filter" ); + psz_string = var_GetNonEmptyString( p_object, "audio-filter" ); if( !psz_string ) psz_string = strdup( "" ); @@ -99,61 +103,162 @@ static void ChangeFiltersString( playlist_t *p_playlist, { for( i = 0; i < p_aout->i_nb_inputs; i++ ) { - p_aout->pp_inputs[i]->b_restart = VLC_TRUE; + p_aout->pp_inputs[i]->b_restart = true; } } + + if( (BOOL)config_GetInt( p_object, "macosx-eq-keep" ) == YES ) + { + /* save changed to config */ + config_PutPsz( p_object, "audio-filter", psz_string ); + + /* save to vlcrc */ + config_SaveConfigFile( p_object, "main" ); + } + free( psz_string ); + vlc_object_release( p_object ); } -static vlc_bool_t GetFiltersStatus( playlist_t *p_playlist, - aout_instance_t *p_aout, +static bool GetFiltersStatus( intf_thread_t *p_intf, char *psz_name ) { char *psz_parser, *psz_string; - vlc_object_t *p_object = NULL; - - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; + vlc_object_t *p_object = vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_object == NULL ) - return VLC_FALSE; + return false; - psz_string = var_GetString( p_object, "audio-filter" ); + if( (BOOL)config_GetInt( p_intf, "macosx-eq-keep" ) == YES ) + psz_string = config_GetPsz( p_intf, "audio-filter" ); + + if(! psz_string ) + psz_string = var_GetNonEmptyString( p_object, "audio-filter" ); + + vlc_object_release( p_object ); - if( !psz_string ) psz_string = strdup(""); + if( !psz_string ) return false; psz_parser = strstr( psz_string, psz_name ); free( psz_string ); if ( psz_parser ) - return VLC_TRUE; + return true; else - return VLC_FALSE; + return false; } -- (IBAction)bandSliderUpdated:(id)sender +- (void)initStrings +{ + int i; + [o_btn_equalizer setToolTip: _NS("Equalizer")]; + [o_ckb_2pass setTitle: _NS("2 Pass")]; + [o_ckb_2pass setToolTip: _NS("Apply the " + "equalizer filter twice. The effect will be sharper.")]; + [o_ckb_enable setTitle: _NS("Enable")]; + [o_ckb_enable setToolTip: _NS("Enable the equalizer. Bands can be set " + "manually or using a preset.")]; + [o_fld_preamp setStringValue: _NS("Preamp")]; + + [o_popup_presets removeAllItems]; + for( i = 0; i < 18 ; i++ ) + { + [o_popup_presets insertItemWithTitle: _NS(preset_list_text[i]) atIndex: i]; + } + [o_window setTitle: _NS("Equalizer")]; + + [self initBandSliders]; +} + +- (void)equalizerUpdated { intf_thread_t *p_intf = VLCIntf; - aout_instance_t *p_aout = ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); - playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - vlc_object_t *p_object = NULL; + float f_preamp, f_band[10]; + char *psz_bands, *psz_bands_init, *p_next; + bool b_2p; + int i; + bool b_enabled = GetFiltersStatus( p_intf, (char *)"equalizer" ); + vlc_object_t *p_object = vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); - char psz_values[102]; - memset( psz_values, 0, 102 ); + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + if( p_object == NULL ) + return; + + var_Create( p_object, "equalizer-preamp", VLC_VAR_FLOAT | + VLC_VAR_DOINHERIT ); + var_Create( p_object, "equalizer-bands", VLC_VAR_STRING | + VLC_VAR_DOINHERIT ); + + psz_bands = var_GetNonEmptyString( p_object, "equalizer-bands" ); + + if( psz_bands == NULL ) + psz_bands = strdup( "0 0 0 0 0 0 0 0 0 0" ); + + if( (BOOL)config_GetInt( p_intf, "macosx-eq-keep" ) == YES ) + { + b_2p = (BOOL)config_GetInt( p_object, "equalizer-2pass" ); + f_preamp = config_GetFloat( p_object, "equalizer-preamp" ); + } + else + { + b_2p = var_GetBool( p_object, "equalizer-2pass" ); + f_preamp = var_GetFloat( p_object, "equalizer-preamp" ); + } + + vlc_object_release( p_object ); + + /* Set the preamp slider */ + [o_slider_preamp setFloatValue: f_preamp]; - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; + /* Set the bands slider */ + psz_bands_init = psz_bands; + + for( i = 0; i < 10; i++ ) + { + /* Read dB -20/20 */ +#ifdef HAVE_STRTOF + f_band[i] = strtof( psz_bands, &p_next ); +#else + f_band[i] = (float)strtod( psz_bands, &p_next ); +#endif + if( !p_next || p_next == psz_bands ) break; /* strtof() failed */ + + if( !*psz_bands ) break; /* end of line */ + psz_bands = p_next+1; + } + free( psz_bands_init ); + [self setBandSlidersValues:f_band]; + + /* Set the the checkboxes */ + [o_ckb_enable setState: b_enabled]; + + [o_ckb_2pass setState: b_2p]; +} + +- (IBAction)bandSliderUpdated:(id)sender +{ + intf_thread_t *p_intf = VLCIntf; + vlc_object_t *p_object = vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_object == NULL ) return; + char psz_values[102]; + memset( psz_values, 0, 102 ); + /* Write the new bands values */ -/* TODO: write a generic code instead of ten times the same thing */ + /* TODO: write a generic code instead of ten times the same thing */ sprintf( psz_values, "%s %.1f", psz_values, [o_slider_band1 floatValue] ); sprintf( psz_values, "%s %.1f", psz_values, [o_slider_band2 floatValue] ); @@ -167,129 +272,89 @@ static vlc_bool_t GetFiltersStatus( playlist_t *p_playlist, sprintf( psz_values, "%s %.1f", psz_values, [o_slider_band10 floatValue] ); var_SetString( p_object, "equalizer-bands", psz_values ); - if( p_aout ) - vlc_object_release( p_aout ); - if( p_playlist ) - vlc_object_release( p_playlist ); + + if( (BOOL)config_GetInt( p_intf, "macosx-eq-keep" ) == YES ) + { + /* save changed to config */ + config_PutPsz( p_intf, "equalizer-bands", psz_values ); + + /* save to vlcrc */ + config_SaveConfigFile( p_intf, "equalizer" ); + } + + vlc_object_release( p_object ); } - (IBAction)changePreset:(id)sender { intf_thread_t *p_intf = VLCIntf; - float f_preamp, f_band[10]; - char *psz_bands, *p_next; - vlc_bool_t b_2p; int i; - aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); - playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - vlc_object_t *p_object = NULL; - vlc_bool_t b_enabled = GetFiltersStatus( p_playlist, p_aout, "equalizer" ); - - static char *preset_list[] = { - "flat", "classical", "club", "dance", "fullbass", "fullbasstreble", - "fulltreble", "headphones","largehall", "live", "party", "pop", "reggae", - "rock", "ska", "soft", "softrock", "techno" - }; - - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; + vlc_object_t *p_object= vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_object == NULL ) - { - msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); return; - } - - var_SetString( p_object , "equalizer-preset" , preset_list[[sender indexOfSelectedItem]] ); - f_preamp = var_GetFloat( p_object, "equalizer-preamp" ); - psz_bands = var_GetString( p_object, "equalizer-bands" ); - b_2p = var_GetBool( p_object, "equalizer-2pass" ); - vlc_object_release( p_object ); + char psz_values[102]; + memset( psz_values, 0, 102 ); -/* Set the preamp slider */ - [o_slider_preamp setFloatValue: f_preamp]; + var_SetString( p_object , "equalizer-preset" , preset_list[[sender indexOfSelectedItem]] ); -/* Set the bands slider */ for( i = 0; i < 10; i++ ) + sprintf( psz_values, "%s %.1f", psz_values, eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[i] ); + var_SetString( p_object, "equalizer-bands", psz_values ); + var_SetFloat( p_object, "equalizer-preamp", eqz_preset_10b[[sender indexOfSelectedItem]]->f_preamp); + + [o_slider_preamp setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_preamp]; + + [self setBandSlidersValues:(float *)eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp]; + + if( (BOOL)config_GetInt( p_intf, "macosx-eq-keep" ) == YES ) { - /* Read dB -20/20 */ -#ifdef HAVE_STRTOF - f_band[i] = strtof( psz_bands, &p_next ); -#else - f_band[i] = (float)strtod( psz_bands, &p_next ); -#endif - if( !p_next || p_next == psz_bands ) break; /* strtof() failed */ + /* save changed to config */ + config_PutPsz( p_intf, "equalizer-bands", psz_values ); + config_PutFloat( p_intf, "equalizer-preamp", eqz_preset_10b[[sender indexOfSelectedItem]]->f_preamp ); + config_PutPsz( p_intf, "equalizer-preset", preset_list[[sender indexOfSelectedItem]] ); - if( !*psz_bands ) break; /* end of line */ - psz_bands = p_next+1; + /* save to vlcrc */ + config_SaveConfigFile( p_intf, "equalizer" ); } - [o_slider_band1 setFloatValue: f_band[0]]; - [o_slider_band2 setFloatValue: f_band[1]]; - [o_slider_band3 setFloatValue: f_band[2]]; - [o_slider_band4 setFloatValue: f_band[3]]; - [o_slider_band5 setFloatValue: f_band[4]]; - [o_slider_band6 setFloatValue: f_band[5]]; - [o_slider_band7 setFloatValue: f_band[6]]; - [o_slider_band8 setFloatValue: f_band[7]]; - [o_slider_band9 setFloatValue: f_band[8]]; - [o_slider_band10 setFloatValue: f_band[9]]; - - if( b_enabled == VLC_TRUE ) - [o_btn_enable setState:NSOnState]; - else - [o_btn_enable setState:NSOffState]; - [o_btn_2pass setState:( ( b_2p == VLC_TRUE ) ? NSOnState : NSOffState )]; + vlc_object_release( p_object ); } - (IBAction)enable:(id)sender { - intf_thread_t *p_intf = VLCIntf; - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); - playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - ChangeFiltersString( p_playlist, p_aout, "equalizer", [sender state] ); - - [o_popup_presets setEnabled: [sender state]]; - if( p_aout != NULL ) - vlc_object_release( p_aout ); - if( p_playlist != NULL ) - vlc_object_release( p_playlist ); + ChangeFiltersString( VLCIntf, (char *)"equalizer", [sender state] ); } - (IBAction)preampSliderUpdated:(id)sender { intf_thread_t *p_intf = VLCIntf; - float f_preamp= [sender floatValue] ; + float f_preamp = [sender floatValue] ; - aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); - playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + vlc_object_t *p_object = vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + if( p_object == NULL ) + return; - vlc_object_t *p_object = NULL; + var_SetFloat( p_object, "equalizer-preamp", f_preamp ); - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; - if( p_object == NULL ) + if( (BOOL)config_GetInt( p_intf, "macosx-eq-keep" ) == YES ) { - msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); - return; + /* save changed to config */ + config_PutFloat( p_intf, "equalizer-preamp", f_preamp ); + + /* save to vlcrc */ + config_SaveConfigFile( p_intf, "equalizer" ); } - - var_SetFloat( p_object, "equalizer-preamp", f_preamp ); - if( p_aout != NULL ) - vlc_object_release( p_aout ); - if( p_playlist != NULL ) - vlc_object_release( p_playlist ); + vlc_object_release( p_object ); } - (IBAction)toggleWindow:(id)sender @@ -301,117 +366,162 @@ static vlc_bool_t GetFiltersStatus( playlist_t *p_playlist, } else { - intf_thread_t *p_intf = VLCIntf; - float f_preamp, f_band[10]; - char *psz_bands, *p_next; - vlc_bool_t b_2p; - int i; - aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); - playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - - vlc_object_t *p_object = NULL; + [o_window makeKeyAndOrderFront:sender]; + [o_btn_equalizer setState:NSOnState]; + } +} - vlc_bool_t b_enabled = GetFiltersStatus( p_playlist, p_aout, "equalizer" ); +- (IBAction)twopass:(id)sender +{ + intf_thread_t *p_intf = VLCIntf; + bool b_2p = [sender state] ? true : false; + vlc_object_t *p_object= vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + aout_instance_t *p_aout = (aout_instance_t *)p_object; + if( p_object == NULL ) + p_object = vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + if( p_object == NULL ) + return; - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; - if( p_object == NULL ) + var_SetBool( p_object, "equalizer-2pass", b_2p ); + if( ( [o_ckb_enable state] ) && ( p_aout != NULL ) ) + { + int i; + for( i = 0; i < p_aout->i_nb_inputs; i++ ) { - msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); - return; + p_aout->pp_inputs[i]->b_restart = true; } - - f_preamp = var_GetFloat( p_object, "equalizer-preamp" ); - psz_bands = var_GetString( p_object, "equalizer-bands" ); - b_2p = var_GetBool( p_object, "equalizer-2pass" ); + } + + if( (BOOL)config_GetInt( p_intf, "macosx-eq-keep" ) == YES ) + { + /* save changed to config */ + config_PutInt( p_intf, "equalizer-2pass", (int)b_2p ); + + /* save to vlcrc */ + config_SaveConfigFile( p_intf, "equalizer" ); + } - if( p_aout != NULL ) - vlc_object_release( p_aout ); - if( p_playlist != NULL ) - vlc_object_release( p_playlist ); + vlc_object_release( p_object ); +} - if( !psz_bands ) - psz_bands = "0 0 0 0 0 0 0 0 0 0"; +- (void)windowWillClose:(NSNotification *)aNotification +{ + [o_btn_equalizer setState: NSOffState]; +} -/* Set the preamp slider */ - [o_slider_preamp setFloatValue: f_preamp]; +- (void)awakeFromNib +{ + int i; + vlc_object_t *p_object= vlc_object_find( VLCIntf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + if( p_object == NULL ) + p_object = vlc_object_find( VLCIntf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); -/* Set the bands slider */ - for( i = 0; i < 10; i++ ) - { - /* Read dB -20/20 */ -#ifdef HAVE_STRTOF - f_band[i] = strtof( psz_bands, &p_next ); -#else - f_band[i] = (float)strtod( psz_bands, &p_next ); -#endif - if( !p_next || p_next == psz_bands ) break; /* strtof() failed */ + [o_window setExcludedFromWindowsMenu: TRUE]; - if( !*psz_bands ) break; /* end of line */ - psz_bands = p_next+1; - } - [o_slider_band1 setFloatValue: f_band[0]]; - [o_slider_band2 setFloatValue: f_band[1]]; - [o_slider_band3 setFloatValue: f_band[2]]; - [o_slider_band4 setFloatValue: f_band[3]]; - [o_slider_band5 setFloatValue: f_band[4]]; - [o_slider_band6 setFloatValue: f_band[5]]; - [o_slider_band7 setFloatValue: f_band[6]]; - [o_slider_band8 setFloatValue: f_band[7]]; - [o_slider_band9 setFloatValue: f_band[8]]; - [o_slider_band10 setFloatValue: f_band[9]]; - - if( b_enabled == VLC_TRUE ) - [o_btn_enable setState:NSOnState]; - else - [o_btn_enable setState:NSOffState]; + [self initStrings]; + + if( p_object ) + { + char *psz_preset; - [o_btn_2pass setState:( ( b_2p == VLC_TRUE ) ? NSOnState : NSOffState )]; + var_Create( p_object, "equalizer-preset", VLC_VAR_STRING | + VLC_VAR_DOINHERIT ); + psz_preset = var_GetNonEmptyString( p_object, "equalizer-preset" ); + + for( i = 0 ; (psz_preset != NULL) && (i < 18) ; i++ ) + { + if( strcmp( preset_list[i], psz_preset ) ) + continue; + + [o_popup_presets selectItemAtIndex: i]; - [o_window makeKeyAndOrderFront:sender]; - [o_btn_equalizer setState:NSOnState]; + + [o_slider_preamp setFloatValue: eqz_preset_10b[i]->f_preamp]; + [self setBandSlidersValues: (float *)eqz_preset_10b[i]->f_amp]; + + if( strcmp( psz_preset, "flat" ) ) + { + char psz_bands[100]; + + snprintf( psz_bands, sizeof( psz_bands ), + "%.1f %.1f %.1f %.1f %.1f %.1f %.1f " + "%.1f %.1f %.1f", + eqz_preset_10b[i]->f_amp[0], + eqz_preset_10b[i]->f_amp[1], + eqz_preset_10b[i]->f_amp[2], + eqz_preset_10b[i]->f_amp[3], + eqz_preset_10b[i]->f_amp[4], + eqz_preset_10b[i]->f_amp[5], + eqz_preset_10b[i]->f_amp[6], + eqz_preset_10b[i]->f_amp[7], + eqz_preset_10b[i]->f_amp[8], + eqz_preset_10b[i]->f_amp[9] ); + + var_Create( p_object, "equalizer-preamp", VLC_VAR_FLOAT | + VLC_VAR_DOINHERIT ); + var_Create( p_object, "equalizer-bands", VLC_VAR_STRING | + VLC_VAR_DOINHERIT ); + var_SetFloat( p_object, "equalizer-preamp", + eqz_preset_10b[i]->f_preamp ); + var_SetString( p_object, "equalizer-bands", psz_bands ); + } + } + free( psz_preset ); + vlc_object_release( p_object ); } + + [self equalizerUpdated]; } -- (IBAction)twopass:(id)sender -{ - intf_thread_t *p_intf = VLCIntf; - aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE ); - playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - vlc_object_t *p_object = NULL; - vlc_bool_t b_2p = [sender state] ? VLC_TRUE : VLC_FALSE; +- (id)getSliderByIndex:(int)index +{ + switch(index) + { + case 0 : return o_slider_band1; + case 1 : return o_slider_band2; + case 2 : return o_slider_band3; + case 3 : return o_slider_band4; + case 4 : return o_slider_band5; + case 5 : return o_slider_band6; + case 6 : return o_slider_band7; + case 7 : return o_slider_band8; + case 8 : return o_slider_band9; + case 9 : return o_slider_band10; + default : return nil; + } +} - if( p_playlist != NULL ) - p_object = ( vlc_object_t* )p_playlist; - if( p_aout != NULL ) - p_object = ( vlc_object_t* )p_aout; - if( p_object == NULL ) +- (void)setBandSlidersValues:(float *)values +{ + int i = 0; + for (i = 0 ; i<= 9 ; i++) { - msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); - return; + [self setValue:values[i] forSlider:i]; } +} - var_SetBool( p_object, "equalizer-2pass", b_2p ); - if( ( [o_btn_enable state] ) && ( p_aout != NULL ) ) +- (void)initBandSliders +{ + int i = 0; + for (i = 0 ; i< 9 ; i++) { - int i; - for( i = 0; i < p_aout->i_nb_inputs; i++ ) - { - p_aout->pp_inputs[i]->b_restart = VLC_TRUE; - } + [self setValue:0.0 forSlider:i]; } +} + +- (void)setValue:(float)value forSlider:(int)index +{ + id slider = [self getSliderByIndex:index]; - if( p_aout != NULL ) - vlc_object_release( p_aout ); - if( p_playlist != NULL ) - vlc_object_release( p_playlist ); + if (slider != nil) + { + [slider setFloatValue:value]; + } } @end