From 887efa47545fa1e6b08acdb1d1a026049bbafe75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20Paul=20K=C3=BChne?= Date: Wed, 27 Feb 2008 21:30:20 +0000 Subject: [PATCH] macosx: Implemented the Subs/OSD and Input categories of the Simple Prefs --- .../English.lproj/Preferences.nib/classes.nib | 40 ++ .../English.lproj/Preferences.nib/info.nib | 17 +- .../Preferences.nib/keyedobjects.nib | Bin 48911 -> 69833 bytes modules/gui/macosx/simple_prefs.h | 52 ++- modules/gui/macosx/simple_prefs.m | 415 +++++++++++++++--- 5 files changed, 453 insertions(+), 71 deletions(-) diff --git a/extras/package/macosx/Resources/English.lproj/Preferences.nib/classes.nib b/extras/package/macosx/Resources/English.lproj/Preferences.nib/classes.nib index bb5d4dab1d..6111f8db0f 100644 --- a/extras/package/macosx/Resources/English.lproj/Preferences.nib/classes.nib +++ b/extras/package/macosx/Resources/English.lproj/Preferences.nib/classes.nib @@ -27,7 +27,9 @@ ACTIONS = { audioSettingChanged = id; buttonAction = id; + inputSettingChanged = id; interfaceSettingChanged = id; + osdSettingChanged = id; videoSettingChanged = id; }; CLASS = VLCSimplePrefs; @@ -56,6 +58,26 @@ "o_audio_vol_fld" = id; "o_audio_vol_sld" = id; "o_audio_vol_txt" = id; + "o_input_access_box" = id; + "o_input_avi_pop" = id; + "o_input_avi_txt" = id; + "o_input_bandwidth_ckb" = id; + "o_input_cachelevel_pop" = id; + "o_input_cachelevel_txt" = id; + "o_input_caching_box" = id; + "o_input_dump_ckb" = id; + "o_input_httpproxy_fld" = id; + "o_input_httpproxy_txt" = id; + "o_input_mux_box" = id; + "o_input_net_box" = id; + "o_input_postproc_fld" = id; + "o_input_postproc_txt" = id; + "o_input_record_ckb" = id; + "o_input_rtsp_ckb" = id; + "o_input_serverport_fld" = id; + "o_input_serverport_txt" = id; + "o_input_timeshift_ckb" = id; + "o_input_view" = id; "o_intf_art_pop" = id; "o_intf_art_txt" = id; "o_intf_embedded_ckb" = id; @@ -65,6 +87,24 @@ "o_intf_meta_ckb" = id; "o_intf_network_box" = id; "o_intf_view" = id; + "o_osd_encoding_pop" = id; + "o_osd_encoding_txt" = id; + "o_osd_font_box" = id; + "o_osd_font_btn" = id; + "o_osd_font_color_pop" = id; + "o_osd_font_color_txt" = id; + "o_osd_font_effect_pop" = id; + "o_osd_font_effect_txt" = id; + "o_osd_font_fld" = id; + "o_osd_font_size_pop" = id; + "o_osd_font_size_txt" = id; + "o_osd_font_txt" = id; + "o_osd_lang_box" = id; + "o_osd_lang_fld" = id; + "o_osd_lang_txt" = id; + "o_osd_osd_box" = id; + "o_osd_osd_ckb" = id; + "o_osd_view" = id; "o_sprefs_basicFull_matrix" = id; "o_sprefs_basic_box" = id; "o_sprefs_cancel_btn" = id; diff --git a/extras/package/macosx/Resources/English.lproj/Preferences.nib/info.nib b/extras/package/macosx/Resources/English.lproj/Preferences.nib/info.nib index 354d82e269..36a190a722 100644 --- a/extras/package/macosx/Resources/English.lproj/Preferences.nib/info.nib +++ b/extras/package/macosx/Resources/English.lproj/Preferences.nib/info.nib @@ -3,15 +3,19 @@ IBDocumentLocation - 113 117 505 518 0 0 1280 778 + 391 94 505 518 0 0 1280 778 IBEditorPositions 2311 345 406 590 264 0 0 1280 778 2330 - 450 263 590 502 0 0 1280 778 + 345 266 590 502 0 0 1280 778 2440 345 343 590 389 0 0 1280 778 + 2523 + 345 351 590 373 0 0 1280 778 + 2562 + 345 310 590 455 0 0 1280 778 IBFramework Version 446.1 @@ -24,7 +28,7 @@ IBLastGroupID - 2 + 3 IBLockedObjects 2203 @@ -34,10 +38,11 @@ IBOpenObjects - 2311 - 2440 2265 - 2330 + 2523 + 2562 + 2440 + 2311 IBSystem Version 8S2167 diff --git a/extras/package/macosx/Resources/English.lproj/Preferences.nib/keyedobjects.nib b/extras/package/macosx/Resources/English.lproj/Preferences.nib/keyedobjects.nib index 1b83c52864accae7d91ed19098b3ab4afc528d21..9916d0b1953be59da8f01aa885c43d771de6d88e 100644 GIT binary patch literal 69833 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

OE{u50F#ZqLJ1}tE6qxZxXD}khBt> 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 delta 31076 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 diff --git a/modules/gui/macosx/simple_prefs.h b/modules/gui/macosx/simple_prefs.h index b87f68eb2f..5e276c2a9d 100644 --- a/modules/gui/macosx/simple_prefs.h +++ b/modules/gui/macosx/simple_prefs.h @@ -51,6 +51,27 @@ IBOutlet id o_audio_vol_sld; IBOutlet id o_audio_vol_txt; + IBOutlet id o_input_access_box; + IBOutlet id o_input_avi_pop; + IBOutlet id o_input_avi_txt; + IBOutlet id o_input_bandwidth_ckb; + IBOutlet id o_input_cachelevel_pop; + IBOutlet id o_input_cachelevel_txt; + IBOutlet id o_input_caching_box; + IBOutlet id o_input_dump_ckb; + IBOutlet id o_input_httpproxy_fld; + IBOutlet id o_input_httpproxy_txt; + IBOutlet id o_input_mux_box; + IBOutlet id o_input_net_box; + IBOutlet id o_input_postproc_fld; + IBOutlet id o_input_postproc_txt; + IBOutlet id o_input_record_ckb; + IBOutlet id o_input_rtsp_ckb; + IBOutlet id o_input_serverport_fld; + IBOutlet id o_input_serverport_txt; + IBOutlet id o_input_timeshift_ckb; + IBOutlet id o_input_view; + IBOutlet id o_intf_art_pop; IBOutlet id o_intf_art_txt; IBOutlet id o_intf_embedded_ckb; @@ -61,6 +82,25 @@ IBOutlet id o_intf_network_box; IBOutlet id o_intf_view; + IBOutlet id o_osd_encoding_pop; + IBOutlet id o_osd_encoding_txt; + IBOutlet id o_osd_font_box; + IBOutlet id o_osd_font_btn; + IBOutlet id o_osd_font_color_pop; + IBOutlet id o_osd_font_color_txt; + IBOutlet id o_osd_font_effect_pop; + IBOutlet id o_osd_font_effect_txt; + IBOutlet id o_osd_font_fld; + IBOutlet id o_osd_font_size_pop; + IBOutlet id o_osd_font_size_txt; + IBOutlet id o_osd_font_txt; + IBOutlet id o_osd_lang_box; + IBOutlet id o_osd_lang_fld; + IBOutlet id o_osd_lang_txt; + IBOutlet id o_osd_osd_box; + IBOutlet id o_osd_osd_ckb; + IBOutlet id o_osd_view; + IBOutlet id o_sprefs_basic_box; IBOutlet id o_sprefs_basicFull_matrix; IBOutlet id o_sprefs_cancel_btn; @@ -93,11 +133,13 @@ BOOL b_audioSettingChanged; BOOL b_intfSettingChanged; BOOL b_videoSettingChanged; + BOOL b_osdSettingChanged; + BOOL b_inputSettingChanged; id o_currentlyShownCategoryView; - + NSToolbar *o_sprefs_toolbar; NSOpenPanel *o_selectFolderPanel; - + intf_thread_t *p_intf; } + (VLCSimplePrefs *)sharedInstance; @@ -132,9 +174,13 @@ - (IBAction)videoSettingChanged:(id)sender; - (void)showVideoSettings; -/* subtitles */ +/* OSD / subtitles */ +- (IBAction)osdSettingChanged:(id)sender; +- (void)showOSDSettings; /* input & codecs */ +- (IBAction)inputSettingChanged:(id)sender; +- (void)showInputSettings; /* hotkeys */ diff --git a/modules/gui/macosx/simple_prefs.m b/modules/gui/macosx/simple_prefs.m index 0b87bf1050..d34fa8e3c6 100644 --- a/modules/gui/macosx/simple_prefs.m +++ b/modules/gui/macosx/simple_prefs.m @@ -28,6 +28,9 @@ static NSString* VLCSPrefsToolbarIdentifier = @"Our Simple Preferences Toolbar I static NSString* VLCIntfSettingToolbarIdentifier = @"Intf Settings Item Identifier"; static NSString* VLCAudioSettingToolbarIdentifier = @"Audio Settings Item Identifier"; static NSString* VLCVideoSettingToolbarIdentifier = @"Video Settings Item Identifier"; +static NSString* VLCOSDSettingToolbarIdentifier = @"Subtitles Settings Item Identifier"; +static NSString* VLCInputSettingToolbarIdentifier = @"Input Settings Item Identifier"; +static NSString* VLCHotkeysSettingToolbarIdentifier = @"Hotkeys Settings Item Identifier"; @implementation VLCSimplePrefs @@ -115,41 +118,76 @@ static VLCSimplePrefs *_o_sharedInstance = nil; else if( [o_itemIdent isEqual: VLCVideoSettingToolbarIdentifier] ) { o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; - + [o_toolbarItem setLabel: _NS("Video")]; [o_toolbarItem setPaletteLabel: _NS("General Video settings")]; - + [o_toolbarItem setToolTip: _NS("General Video settings")]; [o_toolbarItem setImage: [NSImage imageNamed: @"spref_cone_Video_64"]]; - + [o_toolbarItem setTarget: self]; [o_toolbarItem setAction: @selector(showVideoSettings)]; - + [o_toolbarItem setEnabled: YES]; [o_toolbarItem setAutovalidates: YES]; } - + else if( [o_itemIdent isEqual: VLCOSDSettingToolbarIdentifier] ) + { + o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; + + [o_toolbarItem setLabel: _NS("Subtitles & OSD")]; + [o_toolbarItem setPaletteLabel: _NS("Subtitles & OSD settings")]; + + [o_toolbarItem setToolTip: _NS("Subtitles & OSD settings")]; + [o_toolbarItem setImage: [NSImage imageNamed: @"spref_cone_Subtitles_64"]]; + + [o_toolbarItem setTarget: self]; + [o_toolbarItem setAction: @selector(showOSDSettings)]; + + [o_toolbarItem setEnabled: YES]; + [o_toolbarItem setAutovalidates: YES]; + } + else if( [o_itemIdent isEqual: VLCInputSettingToolbarIdentifier] ) + { + o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; + + [o_toolbarItem setLabel: _NS("Input & Codecs")]; + [o_toolbarItem setPaletteLabel: _NS("Input & Codec settings")]; + + [o_toolbarItem setToolTip: _NS("Input & Codec settings")]; + [o_toolbarItem setImage: [NSImage imageNamed: @"spref_cone_Input_64"]]; + + [o_toolbarItem setTarget: self]; + [o_toolbarItem setAction: @selector(showInputSettings)]; + + [o_toolbarItem setEnabled: YES]; + [o_toolbarItem setAutovalidates: YES]; + } + return o_toolbarItem; } - (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar { - return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; + return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, + VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } - (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar { - return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; + return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, + VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar { - return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, nil]; + return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, + VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, nil]; } - (void)initStrings { - msg_Warn( p_intf, "localisation of the simple preferences not implemented!" ); + msg_Warn( p_intf, "localisation of the simple preferences is not implemented!" ); } - (void)resetControls @@ -158,31 +196,43 @@ static VLCSimplePrefs *_o_sharedInstance = nil; int i, y = 0; char *psz_tmp; + #define SetupIntList( object, name ) \ + [object removeAllItems]; \ + p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \ + for( i = 0; i < p_item->i_list; i++ ) \ + { \ + 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]]]; \ + } \ + if( p_item->value.i < [object numberOfItems] ) \ + [object selectItemAtIndex: p_item->value.i]; \ + else \ + [object selectItemAtIndex: 0] + + #define SetupStringList( object, name ) \ + [object removeAllItems]; \ + y = 0; \ + p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \ + for( i = 0; p_item->ppsz_list[i] != nil; i++ ) \ + { \ + [object addItemWithTitle: _NS( p_item->ppsz_list_text[i] )]; \ + if( p_item->value.psz && !strcmp( p_item->value.psz, p_item->ppsz_list[i] ) ) \ + y = i; \ + } \ + [object selectItemAtIndex: y] + /********************** * interface settings * **********************/ - [o_intf_lang_pop removeAllItems]; - p_item = config_FindConfig( VLC_OBJECT(p_intf), "language" ); - for( i = 0; p_item->ppsz_list[i] != nil; i++ ) - { - [o_intf_lang_pop addItemWithTitle: _NS( p_item->ppsz_list_text[i] )]; - if( p_item->value.psz && !strcmp( p_item->value.psz, p_item->ppsz_list[i] ) ) - y = i; - } - [o_intf_lang_pop selectItemAtIndex: y]; - - [o_intf_art_pop removeAllItems]; - p_item = config_FindConfig( VLC_OBJECT(p_intf), "album-art" ); - for( i = 0; i < p_item->i_list; i++ ) - [o_intf_art_pop addItemWithTitle: _NS( p_item->ppsz_list_text[i] )]; - [o_intf_art_pop selectItemAtIndex: 0]; - [o_intf_art_pop selectItemAtIndex: p_item->value.i]; + 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" )]; - /****************** * audio settings * ******************/ @@ -192,13 +242,8 @@ static VLCSimplePrefs *_o_sharedInstance = nil; [o_audio_spdif_ckb setState: config_GetInt( p_intf, "spdif" )]; - [o_audio_dolby_pop removeAllItems]; - p_item = config_FindConfig( VLC_OBJECT(p_intf), "force-dolby-surround" ); - for( i = 0; i < p_item->i_list; i++ ) - [o_audio_dolby_pop addItemWithTitle: _NS( p_item->ppsz_list_text[i] )]; - [o_audio_dolby_pop selectItemAtIndex: 0]; - [o_audio_dolby_pop selectItemAtIndex: p_item->value.i]; - + SetupIntList( o_audio_dolby_pop, "force-dolby-surround" ); + [o_audio_lang_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "audio-language" )]]; [o_audio_headphone_ckb setState: config_GetInt( p_intf, "headphone-dolby" )]; @@ -216,7 +261,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; { [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" )]]; - + if( config_ExistIntf( VLC_OBJECT( p_intf ), "audioscrobbler" ) ) [o_audio_last_ckb setState: NSOnState]; else @@ -238,7 +283,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; [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" )]; - [o_video_snap_format_pop removeAllItems]; + p_item = config_FindConfig( VLC_OBJECT(p_intf), "snapshot-format" ); for( i = 0; p_item->ppsz_list[i] != nil; i++ ) { @@ -248,14 +293,99 @@ static VLCSimplePrefs *_o_sharedInstance = nil; } [o_video_snap_format_pop selectItemAtIndex: y]; - /******************* - * codecs settings * - *******************/ + /*************************** + * input & codecs settings * + ***************************/ + [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_postproc_fld setIntValue: config_GetInt( p_intf, "ffmpeg-pp-q" )]; + + SetupIntList( o_input_avi_pop, "avi-index" ); + + [o_input_rtsp_ckb setState: config_GetInt( p_intf, "rtsp-tcp" )]; + + psz_tmp = config_GetPsz( p_intf, "access-filter" ); + if( psz_tmp ) + { + [o_input_record_ckb setState: (int)strstr( psz_tmp, "record" )]; + [o_input_dump_ckb setState: (int)strstr( psz_tmp, "dump" )]; + [o_input_bandwidth_ckb setState: (int)strstr( psz_tmp, "bandwidth" )]; + [o_input_timeshift_ckb setState: (int)strstr( psz_tmp, "timeshift" )]; + } + + [o_input_cachelevel_pop removeAllItems]; + [o_input_cachelevel_pop addItemsWithTitles: + [NSArray arrayWithObjects: _NS("Custom"), _NS("Lowest latency"), _NS("Low latency"), _NS("Normal"), + _NS("High latency"), _NS("Higher latency"), nil]]; + [[o_input_cachelevel_pop itemAtIndex: 0] setTag: 0]; + [[o_input_cachelevel_pop itemAtIndex: 1] setTag: 100]; + [[o_input_cachelevel_pop itemAtIndex: 2] setTag: 200]; + [[o_input_cachelevel_pop itemAtIndex: 3] setTag: 300]; + [[o_input_cachelevel_pop itemAtIndex: 4] setTag: 400]; + [[o_input_cachelevel_pop itemAtIndex: 5] setTag: 500]; + +#define TestCaC( name ) \ + b_cache_equal = b_cache_equal && \ + ( i_cache == config_GetInt( p_intf, name ) ) + +#define TestCaCi( name, int ) \ + b_cache_equal = b_cache_equal && \ + ( ( i_cache * int ) == config_GetInt( p_intf, name ) ) + + /* Select the accurate value of the PopupButton */ + bool b_cache_equal = true; + int i_cache = config_GetInt( p_intf, "file-caching"); + + TestCaC( "udp-caching" ); + if( module_Exists (p_intf, "dvdread") ) + TestCaC( "dvdread-caching" ); + if( module_Exists (p_intf, "dvdnav") ) + TestCaC( "dvdnav-caching" ); + TestCaC( "tcp-caching" ); + TestCaC( "fake-caching" ); + TestCaC( "cdda-caching" ); + TestCaC( "screen-caching" ); + TestCaC( "vcd-caching" ); + TestCaCi( "rtsp-caching", 4 ); + TestCaCi( "ftp-caching", 2 ); + TestCaCi( "http-caching", 4 ); + if(module_Exists (p_intf, "access_realrtsp")) + TestCaCi( "realrtsp-caching", 10 ); + TestCaCi( "mms-caching", 19 ); + if( b_cache_equal ) + [o_input_cachelevel_pop selectItemWithTag: i_cache]; + else + [o_input_cachelevel_pop selectItemWithTitle: _NS("Custom")]; /********************* * subtitle settings * *********************/ + [o_osd_osd_ckb setState: config_GetInt( p_intf, "osd" )]; + [o_osd_encoding_pop removeAllItems]; + y = 0; + p_item = config_FindConfig( VLC_OBJECT(p_intf), "subsdec-encoding" ); + for( i = 0; p_item->ppsz_list[i] != nil; i++ ) + { + if( p_item->ppsz_list[i] != "" ) + [o_osd_encoding_pop addItemWithTitle: _NS( p_item->ppsz_list[i] )]; + else + [o_osd_encoding_pop addItemWithTitle: @" "]; + + if( p_item->value.psz && !strcmp( p_item->value.psz, p_item->ppsz_list[i] ) ) + y = i; + } + [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" )]]; + + 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" ); + /******************** * hotkeys settings * ********************/ @@ -305,7 +435,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; if( i_return == NSAlertAlternateReturn ) { config_ResetAll( p_intf ); - b_intfSettingChanged, b_videoSettingChanged, b_audioSettingChanged = YES; + b_intfSettingChanged = b_videoSettingChanged = b_audioSettingChanged = YES; [self resetControls]; } } @@ -316,22 +446,27 @@ static VLCSimplePrefs *_o_sharedInstance = nil; char *psz_tmp; int i; +#define SaveIntList( object, name ) \ + p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \ + if( [object indexOfSelectedItem] >= 0 ) \ + config_PutInt( p_intf, name, p_item->pi_list[[object indexOfSelectedItem]] ); \ + else \ + config_PutInt( p_intf, name, [object intValue] ) \ + +#define SaveStringList( object, name ) \ + p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \ + if( [object indexOfSelectedItem] >= 0 ) \ + config_PutPsz( p_intf, name, strdup( p_item->ppsz_list[[object indexOfSelectedItem]] ) ); \ + else \ + config_PutPsz( p_intf, name, strdup( [[VLCMain sharedInstance] delocalizeString: [object stringValue]] ) ) + /********************** * interface settings * **********************/ if( b_intfSettingChanged ) { - p_item = config_FindConfig( VLC_OBJECT(p_intf), "language" ); - if( [o_intf_lang_pop indexOfSelectedItem] >= 0 ) - config_PutPsz( p_intf, "language", strdup( p_item->ppsz_list[[o_intf_lang_pop indexOfSelectedItem]] ) ); - else - config_PutPsz( p_intf, "language", strdup( [[VLCMain sharedInstance] delocalizeString: [o_intf_lang_pop stringValue]] ) ); - - p_item = config_FindConfig( VLC_OBJECT(p_intf), "album-art" ); - if( [o_intf_art_pop indexOfSelectedItem] >= 0 ) - config_PutInt( p_intf, "album-art", p_item->pi_list[[o_intf_art_pop indexOfSelectedItem]] ); - else - config_PutInt( p_intf, "album-art", [o_intf_art_pop intValue] ); + 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] ); @@ -359,11 +494,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; config_PutInt( p_intf, "volume", [o_audio_vol_sld intValue] ); config_PutInt( p_intf, "spdif", [o_audio_spdif_ckb state] ); - p_item = config_FindConfig( VLC_OBJECT(p_intf), "force-dolby-surround" ); - if( [o_audio_dolby_pop indexOfSelectedItem] >= 0 ) - config_PutInt( p_intf, "force-dolby-surround", p_item->pi_list[[o_audio_dolby_pop indexOfSelectedItem]] ); - else - config_PutInt( p_intf, "force-dolby-surround", [o_audio_dolby_pop intValue] ); + SaveIntList( o_audio_dolby_pop, "force-dolby-surround" ); config_PutPsz( p_intf, "audio-language", [[o_audio_lang_fld stringValue] UTF8String] ); config_PutInt( p_intf, "headphone-dolby", [o_audio_headphone_ckb state] ); @@ -390,7 +521,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; /* Last.FM is optional */ if( module_Exists( p_intf, "audioscrobbler" ) ) - { + { if( [o_audio_last_ckb state] == NSOnState ) config_AddIntf( VLC_OBJECT( p_intf ), "audioscrobbler" ); else @@ -435,7 +566,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; i = config_SaveConfigFile( p_intf, "main" ); i = i + config_SaveConfigFile( p_intf, "macosx" ); - + if( i != 0 ) { msg_Err( p_intf, "An error occured while saving the Video settings using SimplePrefs" ); @@ -443,6 +574,118 @@ static VLCSimplePrefs *_o_sharedInstance = nil; } b_videoSettingChanged = NO; } + + /*************************** + * input & codecs settings * + ***************************/ + if( b_inputSettingChanged ) + { + config_PutInt( p_intf, "server-port", [o_input_serverport_fld intValue] ); + config_PutPsz( p_intf, "http-proxy", [[o_input_httpproxy_fld stringValue] UTF8String] ); + config_PutInt( p_intf, "ffmpeg-pp-q", [o_input_postproc_fld intValue] ); + + SaveIntList( o_input_avi_pop, "avi-index" ); + + config_PutInt( p_intf, "rtsp-tcp", [o_input_rtsp_ckb state] ); + + #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] ); + CaC( "udp-caching" ); + if( module_Exists (p_intf, "dvdread" ) ) + { + CaC( "dvdread-caching" ); + i = i + config_SaveConfigFile( p_intf, "dvdread" ); + } + if( module_Exists (p_intf, "dvdnav" ) ) + { + CaC( "dvdnav-caching" ); + i = i + config_SaveConfigFile( p_intf, "dvdnav" ); + } + CaC( "tcp-caching" ); CaC( "vcd-caching" ); + CaC( "fake-caching" ); CaC( "cdda-caching" ); CaC( "file-caching" ); + CaC( "screen-caching" ); + CaCi( "rtsp-caching", 4 ); CaCi( "ftp-caching", 2 ); + CaCi( "http-caching", 4 ); + if( module_Exists (p_intf, "access_realrtsp" ) ) + { + CaCi( "realrtsp-caching", 10 ); + i = i + config_SaveConfigFile( p_intf, "access_realrtsp" ); + } + CaCi( "mms-caching", 19 ); + + #define SaveAccessFilter( object, name ) \ + if( [object state] == NSOnState ) \ + { \ + if( b_first ) \ + { \ + [o_temp appendString: name]; \ + b_first = NO; \ + } \ + else \ + [o_temp appendFormat: @":%@", name]; \ + } + + BOOL b_first = YES; + NSMutableString *o_temp = [[NSMutableString alloc] init]; + SaveAccessFilter( o_input_record_ckb, @"record" ); + SaveAccessFilter( o_input_dump_ckb, @"dump" ); + SaveAccessFilter( o_input_bandwidth_ckb, @"bandwidth" ); + SaveAccessFilter( o_input_timeshift_ckb, @"timeshift" ); + config_PutPsz( p_intf, "access-filter", [o_temp UTF8String] ); + [o_temp release]; + + i = config_SaveConfigFile( p_intf, "main" ); + i = i + config_SaveConfigFile( p_intf, "ffmpeg" ); + i = i + config_SaveConfigFile( p_intf, "access_http" ); + i = i + config_SaveConfigFile( p_intf, "access_file" ); + i = i + config_SaveConfigFile( p_intf, "access_tcp" ); + i = i + config_SaveConfigFile( p_intf, "access_fake" ); + i = i + config_SaveConfigFile( p_intf, "cdda" ); + i = i + config_SaveConfigFile( p_intf, "screen" ); + i = i + config_SaveConfigFile( p_intf, "vcd" ); + i = i + config_SaveConfigFile( p_intf, "access_ftp" ); + i = i + config_SaveConfigFile( p_intf, "access_mms" ); + i = i + config_SaveConfigFile( p_intf, "live555" ); + + if( i != 0 ) + { + msg_Err( p_intf, "An error occured while saving the Input settings using SimplePrefs" ); + i = 0; + } + b_inputSettingChanged = NO; + } + + /********************** + * subtitles settings * + **********************/ + if( b_osdSettingChanged ) + { + config_PutInt( p_intf, "osd", [o_osd_osd_ckb state] ); + + if( [o_osd_encoding_pop indexOfSelectedItem] >= 0 ) + 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] ); + + 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" ); + + i = config_SaveConfigFile( p_intf, NULL ); + + if( i != 0 ) + { + msg_Err( p_intf, "An error occured while saving the OSD/Subtitle settings using SimplePrefs" ); + i = 0; + } + b_osdSettingChanged = NO; + } + + /******************** + * hotkeys settings * + ********************/ } - (void)showSettingsForCategory: (id)o_new_category_view @@ -456,7 +699,7 @@ static VLCSimplePrefs *_o_sharedInstance = nil; /* restore our window's height, if we've shown another category previously */ o_old_view_rect = [o_currentlyShownCategoryView frame]; o_win_rect.size.height = o_win_rect.size.height - o_old_view_rect.size.height; - + /* remove our previous category view */ [o_currentlyShownCategoryView removeFromSuperviewWithoutNeedingDisplay]; } @@ -517,13 +760,13 @@ static VLCSimplePrefs *_o_sharedInstance = nil; [o_selectFolderPanel setCanChooseFiles: NO]; [o_selectFolderPanel setResolvesAliases: YES]; [o_selectFolderPanel setAllowsMultipleSelection: NO]; - [o_selectFolderPanel setMessage: _NS("Choose the Folder to save your video snapshots to.")]; + [o_selectFolderPanel setMessage: _NS("Choose the folder to save your video snapshots to.")]; [o_selectFolderPanel setCanCreateDirectories: YES]; [o_selectFolderPanel setPrompt: _NS("Choose")]; [o_selectFolderPanel beginSheetForDirectory: nil file: nil modalForWindow: o_sprefs_win modalDelegate: self didEndSelector: @selector(savePanelDidEnd:returnCode:contextInfo:) - contextInfo: nil]; + contextInfo: o_video_snap_folder_btn]; } else b_videoSettingChanged = YES; @@ -533,8 +776,16 @@ static VLCSimplePrefs *_o_sharedInstance = nil; { if( returnCode == NSOKButton ) { - [o_video_snap_folder_fld setStringValue: [o_selectFolderPanel filename]]; - b_videoSettingChanged = YES; + if( contextInfo == o_video_snap_folder_btn ) + { + [o_video_snap_folder_fld setStringValue: [o_selectFolderPanel filename]]; + b_videoSettingChanged = YES; + } + else if( contextInfo == o_osd_font_btn ) + { + [o_osd_font_fld setStringValue: [o_selectFolderPanel filename]]; + b_osdSettingChanged = YES; + } } [o_selectFolderPanel release]; @@ -545,4 +796,44 @@ static VLCSimplePrefs *_o_sharedInstance = nil; msg_Dbg( p_intf, "showing video settings" ); [self showSettingsForCategory: o_video_view]; } + +- (IBAction)osdSettingChanged:(id)sender +{ + if( sender == o_osd_font_btn ) + { + o_selectFolderPanel = [[NSOpenPanel alloc] init]; + [o_selectFolderPanel setCanChooseDirectories: NO]; + [o_selectFolderPanel setCanChooseFiles: YES]; + [o_selectFolderPanel setResolvesAliases: YES]; + [o_selectFolderPanel setAllowsMultipleSelection: NO]; + [o_selectFolderPanel setMessage: _NS("Choose the font to display your Subtitles with.")]; + [o_selectFolderPanel setCanCreateDirectories: NO]; + [o_selectFolderPanel setPrompt: _NS("Choose")]; + [o_selectFolderPanel setAllowedFileTypes: [NSArray arrayWithObjects: @"dfont", @"ttf", @"otf", @"FFIL", nil]]; + [o_selectFolderPanel beginSheetForDirectory: @"/System/Library/Fonts/" file: nil modalForWindow: o_sprefs_win + modalDelegate: self + didEndSelector: @selector(savePanelDidEnd:returnCode:contextInfo:) + contextInfo: o_osd_font_btn]; + } + else + b_osdSettingChanged = YES; +} + +- (void)showOSDSettings +{ + msg_Dbg( p_intf, "showing OSD settings" ); + [self showSettingsForCategory: o_osd_view]; +} + +- (IBAction)inputSettingChanged:(id)sender +{ + b_inputSettingChanged = YES; +} + +- (void)showInputSettings +{ + msg_Dbg( p_intf, "showing Input Settings" ); + [self showSettingsForCategory: o_input_view]; +} + @end -- 2.39.5