]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/simple_prefs.m
macosx: Fix controller playlist toggling to use the contentRect and not the window...
[vlc] / modules / gui / macosx / simple_prefs.m
index 5fd56bb2798dea61061e7736f7c972f0a0296d2b..3f014dbb95acbbf26368b2d33c7805131ef9b7df 100644 (file)
@@ -24,6 +24,7 @@
 #import "simple_prefs.h"
 #import "prefs.h"
 #import <vlc_keys.h>
+#import <vlc_interface.h>
 #import "misc.h"
 
 static NSString* VLCSPrefsToolbarIdentifier = @"Our Simple Preferences Toolbar Identifier";
@@ -48,10 +49,10 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     if (_o_sharedInstance) {
         [self dealloc];
     } else {
-        p_intf = VLCIntf;
         _o_sharedInstance = [super init];
+        p_intf = VLCIntf;
     }
-    
+
     return _o_sharedInstance;
 }
 
@@ -105,7 +106,6 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     [o_sprefs_win setToolbar: o_sprefs_toolbar];
     
     /* setup useful stuff */
-    /* TODO: hard-code this instead of one-the-run generation */
     o_hotkeysNonUseableKeys = [[NSArray arrayWithObjects:
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'c'],
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'x'],
@@ -127,7 +127,6 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'2'],
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'3'],
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'m'],
-                                [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'q'],
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|'w'],
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|KEY_MODIFIER_SHIFT|'w'],
                                 [NSNumber numberWithInt: KEY_MODIFIER_COMMAND|KEY_MODIFIER_SHIFT|'c'],
@@ -178,7 +177,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     }
     else if( [o_itemIdent isEqual: VLCOSDSettingToolbarIdentifier] )
     {
-        CreateToolbarItem( _NS("Subtitles & OSD"), _NS("Subtitles & OSD Settings"), @"spref_cone_Subtitles_64", showOSDSettings );
+        CreateToolbarItem( _NS("Subtitles & OSD"), _NS("Subtitles & On Screen Display Settings"), @"spref_cone_Subtitles_64", showOSDSettings );
     }
     else if( [o_itemIdent isEqual: VLCInputSettingToolbarIdentifier] )
     {
@@ -243,8 +242,10 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     [o_input_bandwidth_ckb setTitle: _NS("Bandwidth limiter")];
     [o_input_cachelevel_txt setStringValue: _NS("Default Caching Level")];
     [o_input_caching_box setTitle: _NS("Caching")];
+    [o_input_cachelevel_custom_txt setStringValue: _NS("Use the complete preferences to configure custom caching values for each access module.")];
     [o_input_dump_ckb setTitle: _NS("Dump")];
     [o_input_httpproxy_txt setStringValue: _NS("HTTP Proxy")];
+    [o_input_httpproxypwd_txt setStringValue: _NS("Password for HTTP Proxy")];
     [o_input_mux_box setTitle: _NS("Codecs / Muxers")];
     [o_input_net_box setTitle: _NS("Network")];
     [o_input_postproc_txt setStringValue: _NS("Post-Processing Quality")];
@@ -258,7 +259,6 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     [o_intf_embedded_ckb setTitle: _NS("Add controls to the video window")];
     [o_intf_fspanel_ckb setTitle: _NS("Show Fullscreen Controller")];
     [o_intf_lang_txt setStringValue: _NS("Language")];
-    [o_intf_meta_ckb setTitle: _NS("Fetch the metadata from the Internet")];
     [o_intf_network_box setTitle: _NS("Privacy / Network Interaction")];
     
     /* Subtitles and OSD */
@@ -274,17 +274,9 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     [o_osd_osd_box setTitle: _NS("On Screen Display")];
     [o_osd_osd_ckb setTitle: _NS("Enable OSD")];
 
-    /* generic stuff */
-    [[o_sprefs_basicFull_matrix cellAtRow: 0 column: 0] setStringValue: _NS("Basic")];
-    [[o_sprefs_basicFull_matrix cellAtRow: 0 column: 1] setStringValue: _NS("All")];
-    [o_sprefs_cancel_btn setTitle: _NS("Cancel")];
-    [o_sprefs_reset_btn setTitle: _NS("Reset Preferences")];
-    [o_sprefs_save_btn setTitle: _NS("Save")];
-    [o_sprefs_win setTitle: _NS("Preferences")];
-
     /* video */
     [o_video_black_ckb setTitle: _NS("Black screens in Fullscreen mode")];
-    [o_video_device_txt setStringValue: _NS("Display device")];
+    [o_video_device_txt setStringValue: _NS("Fullscreen Video Device")];
     [o_video_display_box setTitle: _NS("Display")];
     [o_video_enable_ckb setTitle: _NS("Enable Video")];
     [o_video_fullscreen_ckb setTitle: _NS("Fullscreen")];
@@ -297,6 +289,14 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     [o_video_snap_format_txt setStringValue: _NS("Format")];
     [o_video_snap_prefix_txt setStringValue: _NS("Prefix")];
     [o_video_snap_seqnum_ckb setTitle: _NS("Sequential numbering")];
+    
+    /* generic stuff */
+    [[o_sprefs_basicFull_matrix cellAtRow: 0 column: 0] setStringValue: _NS("Basic")];
+    [[o_sprefs_basicFull_matrix cellAtRow: 0 column: 1] setStringValue: _NS("All")];
+    [o_sprefs_cancel_btn setTitle: _NS("Cancel")];
+    [o_sprefs_reset_btn setTitle: _NS("Reset All")];
+    [o_sprefs_save_btn setTitle: _NS("Save")];
+    [o_sprefs_win setTitle: _NS("Preferences")];
 }
 
 - (void)resetControls
@@ -315,7 +315,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         if( p_item->ppsz_list_text[i] != NULL) \
             [object addItemWithTitle: _NS( p_item->ppsz_list_text[i] )]; \
         else \
-            [object addItemWithTitle: [NSString stringWithUTF8String: p_item->ppsz_list[i]]]; \
+            [object addItemWithTitle: [NSString stringWithUTF8String: p_item->ppsz_list[i] ?: ""]]; \
     } \
     if( p_item->value.i < [object numberOfItems] ) \
         [object selectItemAtIndex: p_item->value.i]; \
@@ -347,7 +347,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         \
         if( module_IsCapable( p_parser, p_item->psz_type ) ) \
         { \
-            [object addItemWithTitle: [NSString stringWithUTF8String: module_GetLongName( p_parser )]]; \
+            [object addItemWithTitle: [NSString stringWithUTF8String: module_GetLongName( p_parser ) ?: ""]]; \
             \
             if( p_item->value.psz && !strcmp( p_item->value.psz, module_GetObjName( p_parser ) ) ) \
                 [object selectItem: [object lastItem]]; \
@@ -356,13 +356,15 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     vlc_list_release( p_list ); \
     [object setToolTip: _NS(p_item->psz_longtext)]
 
+    [[o_sprefs_basicFull_matrix cellAtRow:0 column:0] setState: NSOnState];
+    [[o_sprefs_basicFull_matrix cellAtRow:0 column:1] setState: NSOffState];
+    
     /**********************
      * interface settings *
      **********************/
     SetupStringList( o_intf_lang_pop, "language" );
     SetupIntList( o_intf_art_pop, "album-art" );
 
-    [o_intf_meta_ckb setState: config_GetInt( p_intf, "fetch-meta" )];
     [o_intf_fspanel_ckb setState: config_GetInt( p_intf, "macosx-fspanel" )];
     [o_intf_embedded_ckb setState: config_GetInt( p_intf, "embedded-video" )];
 
@@ -377,7 +379,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
     SetupIntList( o_audio_dolby_pop, "force-dolby-surround" );
 
-    [o_audio_lang_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "audio-language" )]];
+    [o_audio_lang_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "audio-language" ) ?: ""]];
 
     [o_audio_headphone_ckb setState: config_GetInt( p_intf, "headphone-dolby" )];
     
@@ -391,13 +393,21 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     /* Last.FM is optional */
     if( module_Exists( p_intf, "audioscrobbler" ) )
     {
-        [o_audio_lastuser_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "lastfm-username" )]];
-        [o_audio_lastpwd_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "lastfm-password" )]];
+        [o_audio_lastuser_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "lastfm-username" ) ?: ""]];
+        [o_audio_lastpwd_sfld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "lastfm-password" ) ?: ""]];
 
         if( config_ExistIntf( VLC_OBJECT( p_intf ), "audioscrobbler" ) )
+        {
             [o_audio_last_ckb setState: NSOnState];
+            [o_audio_lastuser_fld setEnabled: YES];
+            [o_audio_lastpwd_sfld setEnabled: YES];
+        }
         else
+        {
             [o_audio_last_ckb setState: NSOffState];
+            [o_audio_lastuser_fld setEnabled: NO];
+            [o_audio_lastpwd_sfld setEnabled: NO];
+        }
     }
     else
         [o_audio_last_ckb setEnabled: NO];
@@ -424,21 +434,20 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         [o_video_device_pop addItemWithTitle: 
          [NSString stringWithFormat: @"%@ %i (%ix%i)", _NS("Screen"), i+1,
                    (int)s_rect.size.width, (int)s_rect.size.height]];
-        [[o_video_device_pop lastItem] setTag: [[[NSScreen screens] objectAtIndex: i] displayID]];
+        [[o_video_device_pop lastItem] setTag: (int)[[[NSScreen screens] objectAtIndex: i] displayID]];
         i++;
     }
     [o_video_device_pop selectItemAtIndex: 0];
     [o_video_device_pop selectItemWithTag: config_GetInt( p_intf, "macosx-vdev" )];
 
-    if( config_GetPsz( p_intf, "snapshot-path" ) != NULL )
-        [o_video_snap_folder_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "snapshot-path" )]];
-    [o_video_snap_prefix_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "snapshot-prefix" )]];
+    [o_video_snap_folder_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "snapshot-path" ) ?: ""]];
+    [o_video_snap_prefix_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "snapshot-prefix" ) ?: ""]];
     [o_video_snap_seqnum_ckb setState: config_GetInt( p_intf, "snapshot-sequential" )];
     
     p_item = config_FindConfig( VLC_OBJECT(p_intf), "snapshot-format" );
     for( i = 0; p_item->ppsz_list[i] != nil; i++ )
     {
-        [o_video_snap_format_pop addItemWithTitle: [NSString stringWithUTF8String: p_item->ppsz_list[i]]];
+        [o_video_snap_format_pop addItemWithTitle: [NSString stringWithUTF8String: p_item->ppsz_list[i] ?: ""]];
         if( p_item->value.psz && !strcmp( p_item->value.psz, p_item->ppsz_list[i] ) )
             y = i;
     }
@@ -449,7 +458,9 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
      ***************************/
     [o_input_serverport_fld setIntValue: config_GetInt( p_intf, "server-port" )];
     if( config_GetPsz( p_intf, "http-proxy" ) != NULL )
-        [o_input_httpproxy_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "http-proxy" )]];
+        [o_input_httpproxy_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "http-proxy" ) ?: ""]];
+    if( config_GetPsz( p_intf, "http-proxy" ) != NULL )
+        [o_input_httpproxypwd_sfld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "http-proxy-pwd" ) ?: ""]];
     [o_input_postproc_fld setIntValue: config_GetInt( p_intf, "ffmpeg-pp-q" )];
 
     SetupIntList( o_input_avi_pop, "avi-index" );
@@ -505,9 +516,15 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         TestCaCi( "realrtsp-caching", 10 );
     TestCaCi( "mms-caching", 19 );
     if( b_cache_equal )
+    {
         [o_input_cachelevel_pop selectItemWithTag: i_cache];
+        [o_input_cachelevel_custom_txt setHidden: YES];
+    }
     else
+    {
         [o_input_cachelevel_pop selectItemWithTitle: _NS("Custom")];
+        [o_input_cachelevel_custom_txt setHidden: NO];
+    }
 
     /*********************
      * subtitle settings *
@@ -529,13 +546,13 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     }
     [o_osd_encoding_pop selectItemAtIndex: y];
     
-    [o_osd_lang_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "sub-language" )]];
-    if( config_GetPsz( p_intf, "freetype-font" ) != NULL )
-        [o_osd_font_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "freetype-font" )]];
+    [o_osd_lang_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "sub-language" ) ?: ""]];
+    if( config_GetPsz( p_intf, "quartztext-font" ) != NULL )
+        [o_osd_font_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "quartztext-font" ) ?: ""]];
 
-    SetupIntList( o_osd_font_color_pop, "freetype-color" );
-    SetupIntList( o_osd_font_size_pop, "freetype-rel-fontsize" );
-    SetupIntList( o_osd_font_effect_pop, "freetype-effect" );
+    SetupIntList( o_osd_font_color_pop, "quartztext-color" );
+    SetupIntList( o_osd_font_size_pop, "quartztext-rel-fontsize" );
+    //SetupIntList( o_osd_font_effect_pop, "quartztext-effect" );
 
     /********************
      * hotkeys settings *
@@ -594,11 +611,12 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     else if( sender == o_sprefs_basicFull_matrix )
     {
         [o_sprefs_win orderOut: self];
+        [[o_sprefs_basicFull_matrix cellAtRow:0 column:0] setState: NSOffState];
+        [[o_sprefs_basicFull_matrix cellAtRow:0 column:1] setState: NSOnState];
         [[[VLCMain sharedInstance] getPreferences] showPrefs];
-        [self resetControls];
     }
     else
-        msg_Err( p_intf, "unknown buttonAction sender" );
+        msg_Warn( p_intf, "unknown buttonAction sender" );
 }
 
 - (void)sheetDidEnd:(NSWindow *)o_sheet 
@@ -664,17 +682,18 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         SaveStringList( o_intf_lang_pop, "language" );
         SaveIntList( o_intf_art_pop, "album-art" );
 
-        config_PutInt( p_intf, "fetch-meta", [o_intf_meta_ckb state] );
         config_PutInt( p_intf, "macosx-fspanel", [o_intf_fspanel_ckb state] );
         config_PutInt( p_intf, "embedded-video", [o_intf_embedded_ckb state] );
 
         /* okay, let's save our changes to vlcrc */
         i = config_SaveConfigFile( p_intf, "main" );
-        i = config_SaveConfigFile( p_intf, "macosx" );
+        i = i + config_SaveConfigFile( p_intf, "macosx" );
 
         if( i != 0 )
         {
             msg_Err( p_intf, "An error occurred while saving the Interface settings using SimplePrefs (%i)", i );
+            intf_UserFatal( p_intf, false, _("Interface Settings not saved"),
+                        _("An error occured while saving your settings via SimplePrefs (%i)."), i );
             i = 0;
         }
 
@@ -717,15 +736,18 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
         /* Last.FM is optional */
         if( module_Exists( p_intf, "audioscrobbler" ) )
-        {    
+        {   
+            [o_audio_last_ckb setEnabled: YES];
             if( [o_audio_last_ckb state] == NSOnState )
-                config_AddIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );
+                config_AddIntf( p_intf, "audioscrobbler" );
             else
-                config_RemoveIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );
+                config_RemoveIntf( p_intf, "audioscrobbler" );
 
             config_PutPsz( p_intf, "lastfm-username", [[o_audio_lastuser_fld stringValue] UTF8String] );
-            config_PutPsz( p_intf, "lastfm-password", [[o_audio_lastuser_fld stringValue] UTF8String] );
+            config_PutPsz( p_intf, "lastfm-password", [[o_audio_lastpwd_sfld stringValue] UTF8String] );
         }
+        else
+            [o_audio_last_ckb setEnabled: NO];
 
         /* okay, let's save our changes to vlcrc */
         i = config_SaveConfigFile( p_intf, "main" );
@@ -735,6 +757,9 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         if( i != 0 )
         {
             msg_Err( p_intf, "An error occurred while saving the Audio settings using SimplePrefs (%i)", i );
+            intf_UserFatal( p_intf, false, _("Audio Settings not saved"),
+                        _("An error occured while saving your settings via SimplePrefs (%i)."), i );
+            
             i = 0;
         }
         b_audioSettingChanged = NO;
@@ -767,6 +792,8 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         if( i != 0 )
         {
             msg_Err( p_intf, "An error occurred while saving the Video settings using SimplePrefs (%i)", i );
+            intf_UserFatal( p_intf, false, _("Video Settings not saved"),
+                        _("An error occured while saving your settings via SimplePrefs (%i)."), i );
             i = 0;
         }
         b_videoSettingChanged = NO;
@@ -779,6 +806,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
     {
         config_PutInt( p_intf, "server-port", [o_input_serverport_fld intValue] );
         config_PutPsz( p_intf, "http-proxy", [[o_input_httpproxy_fld stringValue] UTF8String] );
+        config_PutPsz( p_intf, "http-proxy-pwd", [[o_input_httpproxypwd_sfld stringValue] UTF8String] );
         config_PutInt( p_intf, "ffmpeg-pp-q", [o_input_postproc_fld intValue] );
 
         SaveIntList( o_input_avi_pop, "avi-index" );
@@ -787,7 +815,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
         #define CaCi( name, int ) config_PutInt( p_intf, name, int * [[o_input_cachelevel_pop selectedItem] tag] )
         #define CaC( name ) CaCi( name, 1 )
-        msg_Dbg( p_intf, "Adjusting all cache values at: %i", [[o_input_cachelevel_pop selectedItem] tag] );
+        msg_Dbg( p_intf, "Adjusting all cache values to: %i", [[o_input_cachelevel_pop selectedItem] tag] );
         CaC( "udp-caching" );
         if( module_Exists (p_intf, "dvdread" ) )
         {
@@ -848,6 +876,8 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         if( i != 0 )
         {
             msg_Err( p_intf, "An error occurred while saving the Input settings using SimplePrefs (%i)", i );
+            intf_UserFatal( p_intf, false, _("Input Settings not saved"),
+                        _("An error occured while saving your settings via SimplePrefs (%i)."), i );
             i = 0;
         }
         b_inputSettingChanged = NO;
@@ -864,17 +894,19 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
             config_PutPsz( p_intf, "subsdec-encoding", [[[o_osd_encoding_pop selectedItem] title] UTF8String] );
 
         config_PutPsz( p_intf, "sub-language", [[o_osd_lang_fld stringValue] UTF8String] );
-        config_PutPsz( p_intf, "freetype-font", [[o_osd_font_fld stringValue] UTF8String] );
+        config_PutPsz( p_intf, "quartztext-font", [[o_osd_font_fld stringValue] UTF8String] );
 
-        SaveIntList( o_osd_font_color_pop, "freetype-color" );
-        SaveIntList( o_osd_font_size_pop, "freetype-rel-fontsize" );
-        SaveIntList( o_osd_font_effect_pop, "freetype-effect" );
+        SaveIntList( o_osd_font_color_pop, "quartztext-color" );
+        SaveIntList( o_osd_font_size_pop, "quartztext-rel-fontsize" );
+        //SaveIntList( o_osd_font_effect_pop, "freetype-effect" );
 
         i = config_SaveConfigFile( p_intf, NULL );
 
         if( i != 0 )
         {
             msg_Err( p_intf, "An error occurred while saving the OSD/Subtitle settings using SimplePrefs (%i)", i );
+            intf_UserFatal( p_intf, false, _("On Screen Display/Subtitle Settings not saved"),
+                        _("An error occured while saving your settings via SimplePrefs (%i)."), i );
             i = 0;
         }
         b_osdSettingChanged = NO;
@@ -898,6 +930,8 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         if( i != 0 )
         {
             msg_Err( p_intf, "An error occurred while saving the Hotkey settings using SimplePrefs (%i)", i );
+            intf_UserFatal( p_intf, false, _("Hotkeys not saved"),
+                        _("An error occured while saving your settings via SimplePrefs (%i)."), i );
             i = 0;
         }
         b_hotkeyChanged = NO;
@@ -947,7 +981,6 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
 - (void)showInterfaceSettings
 {
-    msg_Dbg( p_intf, "showing interface settings" );
     [self showSettingsForCategory: o_intf_view];
 }
 
@@ -955,16 +988,29 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 {
     if( sender == o_audio_vol_sld )
         [o_audio_vol_fld setIntValue: [o_audio_vol_sld intValue]];
-    
+
     if( sender == o_audio_vol_fld )
         [o_audio_vol_sld setIntValue: [o_audio_vol_fld intValue]];
-    
+
+    if( sender == o_audio_last_ckb )
+    {
+        if( [o_audio_last_ckb state] == NSOnState )
+        {
+            [o_audio_lastpwd_sfld setEnabled: YES];
+            [o_audio_lastuser_fld setEnabled: YES];
+        }
+        else
+        {
+            [o_audio_lastpwd_sfld setEnabled: NO];
+            [o_audio_lastuser_fld setEnabled: NO];
+        }
+    }
+
     b_audioSettingChanged = YES;
 }
 
 - (void)showAudioSettings
 {
-    msg_Dbg( p_intf, "showing audio settings" );
     [self showSettingsForCategory: o_audio_view];
 }
 
@@ -1010,7 +1056,6 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
 - (void)showVideoSettings
 {
-    msg_Dbg( p_intf, "showing video settings" );
     [self showSettingsForCategory: o_video_view];
 }
 
@@ -1038,18 +1083,24 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
 - (void)showOSDSettings
 {
-    msg_Dbg( p_intf, "showing OSD settings" );
     [self showSettingsForCategory: o_osd_view];
 }
 
 - (IBAction)inputSettingChanged:(id)sender
 {
+    if( sender == o_input_cachelevel_pop )
+    {
+        if( [[[o_input_cachelevel_pop selectedItem] title] isEqualToString: _NS("Custom")] )
+            [o_input_cachelevel_custom_txt setHidden: NO];
+        else
+            [o_input_cachelevel_custom_txt setHidden: YES];
+    }
+
     b_inputSettingChanged = YES;
 }
 
 - (void)showInputSettings
 {
-    msg_Dbg( p_intf, "showing Input Settings" );
     [self showSettingsForCategory: o_input_view];
 }
 
@@ -1104,7 +1155,6 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
 
 - (void)showHotkeySettings
 {
-    msg_Dbg( p_intf, "showing HotKey Settings" );
     [self showSettingsForCategory: o_hotkeys_view];
 }
 
@@ -1151,7 +1201,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil;
         if( i_returnValue != NSNotFound )
             [o_hotkeys_change_taken_lbl setStringValue: [NSString stringWithFormat:
                                                          _NS("This combination is already taken by \"%@\"."),
-                                                         [self OSXKeyToString:[[o_hotkeyDescriptions objectAtIndex: i_returnValue] intValue]]]];
+                                                         [o_hotkeyDescriptions objectAtIndex: i_returnValue]]];
         else
             [o_hotkeys_change_taken_lbl setStringValue: @""];