From: Felix Paul Kühne Date: Sun, 3 Feb 2008 14:58:06 +0000 (+0000) Subject: macosx: GUI demo of Simple Preferences showing the Interface and Audio categories... X-Git-Tag: 0.9.0-test0~2986 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ade1ff287845323353934bb70f4a32b2986b4804;p=vlc macosx: GUI demo of Simple Preferences showing the Interface and Audio categories. Feedback is welcome. --- diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index 2ac73e0306..d6e93fe8b2 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -304,6 +304,7 @@ "o_mi_show_all" = id; "o_mi_slower" = id; "o_mi_snapshot" = id; + "o_mi_sprefs" = id; "o_mi_stop" = id; "o_mi_subtitle" = id; "o_mi_title" = id; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index aeb0c0852c..e810075b74 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -25,13 +25,13 @@ IBOpenObjects - 21 - 2197 - 1789 2769 + 21 2730 - 29 2416 + 1789 + 29 + 2197 IBSystem Version 8S2167 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib index b43b887405..50173d90b4 100644 Binary files a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib and b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/extras/MacOSX/Resources/English.lproj/Preferences.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/Preferences.nib/classes.nib index a135413f2e..357697624d 100644 --- a/extras/MacOSX/Resources/English.lproj/Preferences.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/Preferences.nib/classes.nib @@ -2,6 +2,7 @@ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = MPSlider; LANGUAGE = ObjC; SUPERCLASS = NSSlider; }, + {CLASS = NSDatePicker; LANGUAGE = ObjC; SUPERCLASS = NSControl; }, { ACTIONS = {showPanel = id; }; CLASS = VLAboutBox; @@ -441,6 +442,54 @@ "o_tree" = id; }; SUPERCLASS = NSObject; + }, + { + ACTIONS = {audioSettingChanged = id; buttonAction = id; interfaceSettingChanged = id; }; + CLASS = VLCSimplePrefs; + LANGUAGE = ObjC; + OUTLETS = { + "o_audio_dolby_pop" = id; + "o_audio_dolby_txt" = id; + "o_audio_effects_box" = id; + "o_audio_enable_ckb" = id; + "o_audio_general_box" = id; + "o_audio_headphone_ckb" = id; + "o_audio_lang_fld" = id; + "o_audio_lang_txt" = id; + "o_audio_last_box" = id; + "o_audio_last_ckb" = id; + "o_audio_lastpwd_fld" = id; + "o_audio_lastpwd_txt" = id; + "o_audio_lastuser_fld" = id; + "o_audio_lastuser_txt" = id; + "o_audio_norm_ckb" = id; + "o_audio_norm_fld" = id; + "o_audio_spdif_ckb" = id; + "o_audio_view" = id; + "o_audio_visual_pop" = id; + "o_audio_visual_txt" = id; + "o_audio_vol_fld" = id; + "o_audio_vol_sld" = id; + "o_audio_vol_txt" = id; + "o_intf_art_pop" = id; + "o_intf_art_txt" = id; + "o_intf_black_ckb" = id; + "o_intf_embvout_ckb" = id; + "o_intf_fspanel_ckb" = id; + "o_intf_lang_pop" = id; + "o_intf_lang_txt" = id; + "o_intf_meta_ckb" = id; + "o_intf_network_box" = id; + "o_intf_view" = id; + "o_sprefs_basicFull_matrix" = id; + "o_sprefs_basic_box" = id; + "o_sprefs_cancel_btn" = id; + "o_sprefs_controls_box" = id; + "o_sprefs_reset_btn" = id; + "o_sprefs_save_btn" = id; + "o_sprefs_win" = id; + }; + SUPERCLASS = NSObject; } ); IBVersion = 1; diff --git a/extras/MacOSX/Resources/English.lproj/Preferences.nib/info.nib b/extras/MacOSX/Resources/English.lproj/Preferences.nib/info.nib index 94feaef558..66016a35af 100644 --- a/extras/MacOSX/Resources/English.lproj/Preferences.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/Preferences.nib/info.nib @@ -3,9 +3,26 @@ IBDocumentLocation - 179 90 505 518 0 0 1280 1002 + 398 124 505 518 0 0 1280 778 + IBEditorPositions + + 2311 + 310 385 660 305 0 0 1280 778 + 2330 + 190 210 660 502 0 0 1280 778 + IBFramework Version - 439.0 + 446.1 + IBGroupedObjects + + 1 + + 2352 + 2353 + + + IBLastGroupID + 2 IBLockedObjects 2203 @@ -15,9 +32,10 @@ IBOpenObjects - 1530 + 2265 + 2330 IBSystem Version - 8C46 + 8S2167 diff --git a/extras/MacOSX/Resources/English.lproj/Preferences.nib/keyedobjects.nib b/extras/MacOSX/Resources/English.lproj/Preferences.nib/keyedobjects.nib index 86b09be67c..1d4360b643 100644 Binary files a/extras/MacOSX/Resources/English.lproj/Preferences.nib/keyedobjects.nib and b/extras/MacOSX/Resources/English.lproj/Preferences.nib/keyedobjects.nib differ diff --git a/extras/MacOSX/Resources/spref_cone_Audio_64.png b/extras/MacOSX/Resources/spref_cone_Audio_64.png new file mode 100644 index 0000000000..260cfec9d4 Binary files /dev/null and b/extras/MacOSX/Resources/spref_cone_Audio_64.png differ diff --git a/extras/MacOSX/Resources/spref_cone_Hotkeys_64.png b/extras/MacOSX/Resources/spref_cone_Hotkeys_64.png new file mode 100644 index 0000000000..acfea47484 Binary files /dev/null and b/extras/MacOSX/Resources/spref_cone_Hotkeys_64.png differ diff --git a/extras/MacOSX/Resources/spref_cone_Input_64.png b/extras/MacOSX/Resources/spref_cone_Input_64.png new file mode 100644 index 0000000000..ca81896cc9 Binary files /dev/null and b/extras/MacOSX/Resources/spref_cone_Input_64.png differ diff --git a/extras/MacOSX/Resources/spref_cone_Interface_64.png b/extras/MacOSX/Resources/spref_cone_Interface_64.png new file mode 100644 index 0000000000..3597ef5ebb Binary files /dev/null and b/extras/MacOSX/Resources/spref_cone_Interface_64.png differ diff --git a/extras/MacOSX/Resources/spref_cone_Subtitles_64.png b/extras/MacOSX/Resources/spref_cone_Subtitles_64.png new file mode 100644 index 0000000000..ea34e2e462 Binary files /dev/null and b/extras/MacOSX/Resources/spref_cone_Subtitles_64.png differ diff --git a/extras/MacOSX/Resources/spref_cone_Video_64.png b/extras/MacOSX/Resources/spref_cone_Video_64.png new file mode 100644 index 0000000000..87a2257d3a Binary files /dev/null and b/extras/MacOSX/Resources/spref_cone_Video_64.png differ diff --git a/extras/MacOSX/vlc.xcodeproj/project.pbxproj b/extras/MacOSX/vlc.xcodeproj/project.pbxproj index a0caca9d21..920deddd39 100644 --- a/extras/MacOSX/vlc.xcodeproj/project.pbxproj +++ b/extras/MacOSX/vlc.xcodeproj/project.pbxproj @@ -68,6 +68,12 @@ C2F2A707095AE51700018C74 /* play_embedded_blue.png in Resources */ = {isa = PBXBuildFile; fileRef = C2F2A703095AE51600018C74 /* play_embedded_blue.png */; }; C2F2A708095AE51700018C74 /* skip_forward_embedded_blue.png in Resources */ = {isa = PBXBuildFile; fileRef = C2F2A704095AE51600018C74 /* skip_forward_embedded_blue.png */; }; C2F2A709095AE51700018C74 /* skip_previous_embedded_blue.png in Resources */ = {isa = PBXBuildFile; fileRef = C2F2A705095AE51600018C74 /* skip_previous_embedded_blue.png */; }; + CC0B723D0D54F2B000448E00 /* spref_cone_Audio_64.png in Resources */ = {isa = PBXBuildFile; fileRef = CC0B72370D54F2B000448E00 /* spref_cone_Audio_64.png */; }; + CC0B723E0D54F2B000448E00 /* spref_cone_Hotkeys_64.png in Resources */ = {isa = PBXBuildFile; fileRef = CC0B72380D54F2B000448E00 /* spref_cone_Hotkeys_64.png */; }; + CC0B723F0D54F2B100448E00 /* spref_cone_Input_64.png in Resources */ = {isa = PBXBuildFile; fileRef = CC0B72390D54F2B000448E00 /* spref_cone_Input_64.png */; }; + CC0B72400D54F2B100448E00 /* spref_cone_Interface_64.png in Resources */ = {isa = PBXBuildFile; fileRef = CC0B723A0D54F2B000448E00 /* spref_cone_Interface_64.png */; }; + CC0B72410D54F2B100448E00 /* spref_cone_Subtitles_64.png in Resources */ = {isa = PBXBuildFile; fileRef = CC0B723B0D54F2B000448E00 /* spref_cone_Subtitles_64.png */; }; + CC0B72420D54F2B100448E00 /* spref_cone_Video_64.png in Resources */ = {isa = PBXBuildFile; fileRef = CC0B723C0D54F2B000448E00 /* spref_cone_Video_64.png */; }; CC1941250B9C1F8400635F6B /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC1941240B9C1F8400635F6B /* QTKit.framework */; }; CC1AC1BC0A7BDA41002478C3 /* InteractionErrorPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = CC1AC1BA0A7BDA41002478C3 /* InteractionErrorPanel.nib */; }; CC1B4B4D09A8CF9E0078AD2E /* Interaction.nib in Resources */ = {isa = PBXBuildFile; fileRef = CC1B4B4B09A8CF9E0078AD2E /* Interaction.nib */; }; @@ -1067,6 +1073,12 @@ C2F2A703095AE51600018C74 /* play_embedded_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = play_embedded_blue.png; path = Resources/play_embedded_blue.png; sourceTree = ""; }; C2F2A704095AE51600018C74 /* skip_forward_embedded_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = skip_forward_embedded_blue.png; path = Resources/skip_forward_embedded_blue.png; sourceTree = ""; }; C2F2A705095AE51600018C74 /* skip_previous_embedded_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = skip_previous_embedded_blue.png; path = Resources/skip_previous_embedded_blue.png; sourceTree = ""; }; + CC0B72370D54F2B000448E00 /* spref_cone_Audio_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spref_cone_Audio_64.png; path = Resources/spref_cone_Audio_64.png; sourceTree = ""; }; + CC0B72380D54F2B000448E00 /* spref_cone_Hotkeys_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spref_cone_Hotkeys_64.png; path = Resources/spref_cone_Hotkeys_64.png; sourceTree = ""; }; + CC0B72390D54F2B000448E00 /* spref_cone_Input_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spref_cone_Input_64.png; path = Resources/spref_cone_Input_64.png; sourceTree = ""; }; + CC0B723A0D54F2B000448E00 /* spref_cone_Interface_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spref_cone_Interface_64.png; path = Resources/spref_cone_Interface_64.png; sourceTree = ""; }; + CC0B723B0D54F2B000448E00 /* spref_cone_Subtitles_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spref_cone_Subtitles_64.png; path = Resources/spref_cone_Subtitles_64.png; sourceTree = ""; }; + CC0B723C0D54F2B000448E00 /* spref_cone_Video_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spref_cone_Video_64.png; path = Resources/spref_cone_Video_64.png; sourceTree = ""; }; CC1941240B9C1F8400635F6B /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = ""; }; CC1AC1BB0A7BDA41002478C3 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/InteractionErrorPanel.nib; sourceTree = ""; }; CC1B4B4C09A8CF9E0078AD2E /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/Interaction.nib; sourceTree = ""; }; @@ -1107,6 +1119,8 @@ CC6EDD4F0B9CA2140096068A /* eyetv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = eyetv.h; path = ../../modules/gui/macosx/eyetv.h; sourceTree = SOURCE_ROOT; }; CC6EDD500B9CA2140096068A /* eyetv.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = eyetv.m; path = ../../modules/gui/macosx/eyetv.m; sourceTree = SOURCE_ROOT; }; CC962E2C0CC7992800A56695 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = ""; }; + CCB24D5D0D54BBAE004D780C /* simple_prefs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = simple_prefs.m; path = ../../modules/gui/macosx/simple_prefs.m; sourceTree = SOURCE_ROOT; }; + CCB24D5E0D54BBAE004D780C /* simple_prefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = simple_prefs.h; path = ../../modules/gui/macosx/simple_prefs.h; sourceTree = SOURCE_ROOT; }; CCC593780AB4A9FB0004FF52 /* embeddedwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = embeddedwindow.h; path = ../../modules/gui/macosx/embeddedwindow.h; sourceTree = SOURCE_ROOT; }; CCC593790AB4A9FB0004FF52 /* embeddedwindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = embeddedwindow.m; path = ../../modules/gui/macosx/embeddedwindow.m; sourceTree = SOURCE_ROOT; }; CCCB86C00ACFDFB300CF1E10 /* fs_time_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = fs_time_slider.png; path = Resources/fs_time_slider.png; sourceTree = ""; }; @@ -1208,6 +1222,7 @@ 8ECA7E520563CD9500DFC000 /* Controller */, F69B0CA602E24F6401A80112 /* InfoPlist.strings */, 8EBF3FA303F13FFB0059A3A7 /* vlc.scriptSuite */, + CC0B71E00D54F0DD00448E00 /* simple prefs (taken from qt4) */, 8EBF3FA503F140960059A3A7 /* vlc.scriptTerminology */, 8EDAC3430440F72D0059A3A7 /* README.MacOSX.rtf */, ); @@ -1266,6 +1281,8 @@ 2AEF857709A5FEC900130822 /* fspanel.m */, CC6EDD4F0B9CA2140096068A /* eyetv.h */, CC6EDD500B9CA2140096068A /* eyetv.m */, + CCB24D5D0D54BBAE004D780C /* simple_prefs.m */, + CCB24D5E0D54BBAE004D780C /* simple_prefs.h */, ); name = Classes; sourceTree = ""; @@ -1346,6 +1363,19 @@ name = Controller; sourceTree = ""; }; + CC0B71E00D54F0DD00448E00 /* simple prefs (taken from qt4) */ = { + isa = PBXGroup; + children = ( + CC0B72370D54F2B000448E00 /* spref_cone_Audio_64.png */, + CC0B72380D54F2B000448E00 /* spref_cone_Hotkeys_64.png */, + CC0B72390D54F2B000448E00 /* spref_cone_Input_64.png */, + CC0B723A0D54F2B000448E00 /* spref_cone_Interface_64.png */, + CC0B723B0D54F2B000448E00 /* spref_cone_Subtitles_64.png */, + CC0B723C0D54F2B000448E00 /* spref_cone_Video_64.png */, + ); + name = "simple prefs (taken from qt4)"; + sourceTree = ""; + }; CC33C26C0D257958008C4683 /* embedded */ = { isa = PBXGroup; children = ( @@ -1642,6 +1672,12 @@ CC33C25F0D2578F5008C4683 /* stop_graphite.png in Resources */, CC33C2600D2578F5008C4683 /* volumeslider_graphite.png in Resources */, CC33C2610D2578F5008C4683 /* fullscreen_graphite.png in Resources */, + CC0B723D0D54F2B000448E00 /* spref_cone_Audio_64.png in Resources */, + CC0B723E0D54F2B000448E00 /* spref_cone_Hotkeys_64.png in Resources */, + CC0B723F0D54F2B100448E00 /* spref_cone_Input_64.png in Resources */, + CC0B72400D54F2B100448E00 /* spref_cone_Interface_64.png in Resources */, + CC0B72410D54F2B100448E00 /* spref_cone_Subtitles_64.png in Resources */, + CC0B72420D54F2B100448E00 /* spref_cone_Video_64.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/modules/gui/macosx/Modules.am b/modules/gui/macosx/Modules.am index 315c99c089..a16273a1fe 100644 --- a/modules/gui/macosx/Modules.am +++ b/modules/gui/macosx/Modules.am @@ -31,6 +31,8 @@ SOURCES_macosx = \ prefs.h \ prefs_widgets.h \ prefs_widgets.m \ + simple_prefs.h \ + simple_prefs.m \ output.h \ output.m \ vout.m \ diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 2b578ac6d9..21dd711a54 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -97,6 +97,7 @@ struct intf_sys_t { intf_thread_t *p_intf; /* The main intf object */ id o_prefs; /* VLCPrefs */ + id o_sprefs; /* VLCSimplePrefs */ id o_about; /* VLAboutBox */ id o_open; /* VLCOpen */ id o_wizard; /* VLCWizard */ @@ -161,6 +162,7 @@ struct intf_sys_t IBOutlet id o_mi_about; IBOutlet id o_mi_prefs; + IBOutlet id o_mi_sprefs; IBOutlet id o_mi_checkForUpdate; IBOutlet id o_mi_add_intf; IBOutlet id o_mu_add_intf; @@ -309,6 +311,8 @@ struct intf_sys_t - (void)controlTintChanged; - (id)getControls; +- (id)getSimplePreferences; +- (id)getPreferences; - (id)getPlaylist; - (id)getInfo; - (id)getWizard; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 90d8a64eaf..33121bcd62 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -49,6 +49,7 @@ #import "update.h" #import "AppleRemote.h" #import "eyetv.h" +#import "simple_prefs.h" #import @@ -808,7 +809,7 @@ static VLCMain *_o_sharedMainInstance = nil; { o_str = [[[NSString alloc] initWithUTF8String: psz] autorelease]; - if ( o_str == NULL ) + if( o_str == NULL ) { msg_Err( VLCIntf, "could not translate: %s", psz ); return( @"" ); @@ -826,7 +827,7 @@ static VLCMain *_o_sharedMainInstance = nil; /* When user click in the Dock icon our double click in the finder */ - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)hasVisibleWindows { - if (!hasVisibleWindows) + if(!hasVisibleWindows) [o_window makeKeyAndOrderFront:self]; return YES; @@ -836,7 +837,7 @@ static VLCMain *_o_sharedMainInstance = nil; { #ifdef UPDATE_CHECK /* Check for update silently on startup */ - if ( !nib_update_loaded ) + if( !nib_update_loaded ) nib_update_loaded = [NSBundle loadNibNamed:@"Update" owner:self]; // FIXME @@ -864,7 +865,7 @@ static VLCMain *_o_sharedMainInstance = nil; - (void)computerWillSleep: (NSNotification *)notification { /* Pause */ - if ( p_intf->p_sys->i_play_status == PLAYING_S ) + if( p_intf->p_sys->i_play_status == PLAYING_S ) { vlc_value_t val; val.i_int = config_GetInt( p_intf, "key-play-pause" ); @@ -876,7 +877,7 @@ static VLCMain *_o_sharedMainInstance = nil; increase/decrease as long as the user holds the left/right, plus/minus button */ - (void) executeHoldActionForRemoteButton: (NSNumber*) buttonIdentifierNumber { - if (b_remote_button_hold) + if(b_remote_button_hold) { switch([buttonIdentifierNumber intValue]) { @@ -893,7 +894,7 @@ static VLCMain *_o_sharedMainInstance = nil; [o_controls volumeDown: self]; break; } - if (b_remote_button_hold) + if(b_remote_button_hold) { /* trigger event */ [self performSelector:@selector(executeHoldActionForRemoteButton:) @@ -911,7 +912,7 @@ static VLCMain *_o_sharedMainInstance = nil; switch( buttonIdentifier ) { case kRemoteButtonPlay: - if (count >= 2) { + if(count >= 2) { [o_controls toogleFullscreen:self]; } else { [o_controls play: self]; @@ -957,7 +958,7 @@ static VLCMain *_o_sharedMainInstance = nil; allowLossyConversion: NO]; char * psz_string; - if ( o_data == nil ) + if( o_data == nil ) { o_data = [id dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion: YES]; @@ -1007,7 +1008,7 @@ static VLCMain *_o_sharedMainInstance = nil; effectiveRange: &effectiveRange]; charRange = [o_layout_manager characterRangeForGlyphRange: effectiveRange actualGlyphRange: &effectiveRange]; - if ([o_wrapped lineRangeForRange: + if([o_wrapped lineRangeForRange: NSMakeRange(charRange.location + breaksInserted, charRange.length)].length > charRange.length) { [o_wrapped insertString: @"\n" atIndex: NSMaxRange(charRange) + breaksInserted]; breaksInserted++; @@ -1081,62 +1082,79 @@ static VLCMain *_o_sharedMainInstance = nil; - (id)getControls { - if ( o_controls ) - { + if( o_controls ) return o_controls; - } + return nil; } +- (id)getSimplePreferences +{ + if( !o_sprefs ) + return nil; + + if( !nib_prefs_loaded ) + nib_prefs_loaded = [NSBundle loadNibNamed:@"Preferences" owner: self]; + + return o_sprefs; +} + +- (id)getPreferences +{ + if( !o_prefs ) + return nil; + + if( !nib_prefs_loaded ) + nib_prefs_loaded = [NSBundle loadNibNamed:@"Preferences" owner: self]; + + return o_prefs; +} + - (id)getPlaylist { if( o_playlist ) return o_playlist; + return nil; } - (id)getInfo { - if ( o_info ) - { + if( o_info ) return o_info; - } + return nil; } - (id)getWizard { - if ( o_wizard ) - { + if( o_wizard ) return o_wizard; - } + return nil; } - (id)getBookmarks { - if ( o_bookmarks ) - { + if( o_bookmarks ) return o_bookmarks; - } + return nil; } - (id)getEmbeddedList { if( o_embedded_list ) - { return o_embedded_list; - } + return nil; } - (id)getInteractionList { if( o_interaction_list ) - { return o_interaction_list; - } + return nil; } @@ -1145,7 +1163,6 @@ static VLCMain *_o_sharedMainInstance = nil; if( o_main_pgbar ) return o_main_pgbar; - msg_Err( p_intf, "main interface progress bar item wasn't found" ); return nil; } @@ -1165,6 +1182,7 @@ static VLCMain *_o_sharedMainInstance = nil; { if( o_eyetv ) return o_eyetv; + return nil; } @@ -1437,7 +1455,7 @@ static VLCMain *_o_sharedMainInstance = nil; aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); - if ( p_aout != NULL ) + if( p_aout != NULL ) { [o_controls setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout var: "audio-channels" selector: @selector(toggleVar:)]; @@ -1453,7 +1471,7 @@ static VLCMain *_o_sharedMainInstance = nil; vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); - if ( p_vout != NULL ) + if( p_vout != NULL ) { vlc_object_t * p_dec_obj; @@ -1473,7 +1491,7 @@ static VLCMain *_o_sharedMainInstance = nil; (vlc_object_t *)p_vout, VLC_OBJECT_DECODER, FIND_PARENT ); - if ( p_dec_obj != NULL ) + if( p_dec_obj != NULL ) { [o_controls setupVarMenuItem: o_mi_ffmpeg_pp target: (vlc_object_t *)p_dec_obj var:"ffmpeg-pp-q" selector: @@ -1729,7 +1747,7 @@ static VLCMain *_o_sharedMainInstance = nil; returnedValue ); /* save the prefs if they were changed in the extended panel */ - if (o_extended && [o_extended getConfigChanged]) + if(o_extended && [o_extended getConfigChanged]) { [o_extended savePrefs]; } @@ -1834,7 +1852,7 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)intfOpenFile:(id)sender { - if ( !nib_open_loaded ) + if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; @@ -1846,7 +1864,7 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)intfOpenFileGeneric:(id)sender { - if ( !nib_open_loaded ) + if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; @@ -1858,7 +1876,7 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)intfOpenDisc:(id)sender { - if ( !nib_open_loaded ) + if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; @@ -1870,7 +1888,7 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)intfOpenNet:(id)sender { - if ( !nib_open_loaded ) + if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; @@ -1882,7 +1900,7 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)showWizard:(id)sender { - if ( !nib_wizard_loaded ) + if( !nib_wizard_loaded ) { nib_wizard_loaded = [NSBundle loadNibNamed:@"Wizard" owner:self]; [o_wizard initStrings]; @@ -1896,11 +1914,11 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)showExtended:(id)sender { - if ( o_extended == nil ) + if( o_extended == nil ) { o_extended = [[VLCExtended alloc] init]; } - if ( !nib_extended_loaded ) + if( !nib_extended_loaded ) { nib_extended_loaded = [NSBundle loadNibNamed:@"Extended" owner:self]; [o_extended initStrings]; @@ -1912,11 +1930,11 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)showSFilters:(id)sender { - if ( o_sfilters == nil ) + if( o_sfilters == nil ) { o_sfilters = [[VLCsFilters alloc] init]; } - if ( !nib_sfilters_loaded ) + if( !nib_sfilters_loaded ) { nib_sfilters_loaded = [NSBundle loadNibNamed:@"SFilters" owner:self]; [o_sfilters initStrings]; @@ -1929,13 +1947,13 @@ static VLCMain *_o_sharedMainInstance = nil; - (IBAction)showBookmarks:(id)sender { /* we need the wizard-nib for the bookmarks's extract functionality */ - if ( !nib_wizard_loaded ) + if( !nib_wizard_loaded ) { nib_wizard_loaded = [NSBundle loadNibNamed:@"Wizard" owner:self]; [o_wizard initStrings]; } - if ( !nib_bookmarks_loaded ) + if( !nib_bookmarks_loaded ) nib_bookmarks_loaded = [NSBundle loadNibNamed:@"Bookmarks" owner:self]; [o_bookmarks showBookmarks]; @@ -1962,17 +1980,23 @@ static VLCMain *_o_sharedMainInstance = nil; if( !nib_prefs_loaded ) nib_prefs_loaded = [NSBundle loadNibNamed:@"Preferences" owner: self]; - [o_prefs showPrefs]; + if( sender == o_mi_sprefs ) + { + o_sprefs = [[VLCSimplePrefs alloc] init]; + [o_sprefs showSimplePrefs]; + } + else + [o_prefs showPrefs]; } #ifdef UPDATE_CHECK - (IBAction)checkForUpdate:(id)sender -{/* FIXME +{ if( !nib_update_loaded ) nib_update_loaded = [NSBundle loadNibNamed:@"Update" owner:self]; [o_update showUpdateWindow]; -*/} +} #endif - (IBAction)viewHelp:(id)sender @@ -2030,7 +2054,7 @@ static VLCMain *_o_sharedMainInstance = nil; stringByExpandingTildeInPath]; - if ( [[NSFileManager defaultManager] fileExistsAtPath: o_path ] ) + if( [[NSFileManager defaultManager] fileExistsAtPath: o_path ] ) { [[NSWorkspace sharedWorkspace] openFile: o_path withApplication: @"Console"]; @@ -2084,14 +2108,14 @@ static VLCMain *_o_sharedMainInstance = nil; b_restore_size = true; b_small_window = YES; /* we know we are small, make sure this is actually set (see case below) */ /* make large */ - if ( o_size_with_playlist.height > 200 ) + if( o_size_with_playlist.height > 200 ) { o_rect.size.height = o_size_with_playlist.height; } else { o_rect.size.height = 500; } - if ( o_size_with_playlist.width > [o_window minSize].width ) + if( o_size_with_playlist.width > [o_window minSize].width ) { o_rect.size.width = o_size_with_playlist.width; } else { @@ -2105,10 +2129,10 @@ static VLCMain *_o_sharedMainInstance = nil; [o_window minSize].height; NSRect screenRect = [[o_window screen] visibleFrame]; - if ( !NSContainsRect( screenRect, o_rect ) ) { - if ( NSMaxX(o_rect) > NSMaxX(screenRect) ) + if( !NSContainsRect( screenRect, o_rect ) ) { + if( NSMaxX(o_rect) > NSMaxX(screenRect) ) o_rect.origin.x = ( NSMaxX(screenRect) - o_rect.size.width ); - if ( NSMinY(o_rect) < NSMinY(screenRect) ) + if( NSMinY(o_rect) < NSMinY(screenRect) ) o_rect.origin.y = ( NSMinY(screenRect) ); } @@ -2125,7 +2149,7 @@ static VLCMain *_o_sharedMainInstance = nil; o_rect.origin.y = [o_window frame].origin.y + [o_window frame].size.height - [o_window minSize].height; - if ( b_restore_size ) + if( b_restore_size ) o_rect = o_restore_rect; [o_playlist_view setAutoresizesSubviews: NO]; diff --git a/modules/gui/macosx/prefs.m b/modules/gui/macosx/prefs.m index ba9618ff7f..ace97c1a73 100644 --- a/modules/gui/macosx/prefs.m +++ b/modules/gui/macosx/prefs.m @@ -271,192 +271,182 @@ static VLCTreeItem *o_root_item = nil; if( [ o_children count] == 0 ) { intf_thread_t *p_intf = VLCIntf; - vlc_list_t *p_list; - module_t *p_module = NULL; - module_t *p_parser; + int i_index = 0; module_config_t *p_item, *p_end; - int i_index = 0; - - /* List the modules */ - p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE ); - if( !p_list ) return nil; - - /* get parser */ - p_parser = (module_t *)p_list->p_values[i_index].p_object; - - if( [[self getName] isEqualToString: @"main"] ) + + /* Build the tree for the main module */ + const module_t *p_module = NULL; + vlc_list_t *p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, + FIND_ANYWHERE ); + if( !p_list ) return NULL; + for( unsigned i = 0; p_module == NULL; i++ ) { - /* - * Find the main module - */ - for( i_index = 0; i_index < p_list->i_count; i_index++ ) - { - p_module = (module_t *)p_list->p_values[i_index].p_object; - if( !strcmp( module_GetObjName( p_module ), "main" ) ) - break; - } - if( p_module == NULL ) - { - msg_Err( p_intf, - "could not load the preferences" ); - return nil; - } - if( i_index < p_list->i_count ) + assert (i < (unsigned)p_list->i_count); + + const module_t *p_main = (module_t *)p_list->p_values[i].p_object; + if( strcmp( module_GetObjName( p_main ), "main" ) == 0 ) + p_module = p_main; + } + + VLCTreeItem *p_last_category = NULL; + unsigned int i_confsize; + module_config_t *const p_config = module_GetConfig (p_module, &i_confsize); + p_end = p_item + i_confsize; + + for (size_t i = 0; i < i_confsize; i++) + { + p_item = p_config + i; + + NSString *o_child_name; + NSString *o_child_title; + NSString *o_child_help; + + switch( p_item->i_type ) { - /* We found the main module */ - /* Enumerate config categories and store a reference so we can - * generate their config panel them when it is asked by the user. */ - VLCTreeItem *p_last_category = NULL; - unsigned int i_confsize; - p_item = module_GetConfig( p_parser, &i_confsize ); - p_end = p_item + i_confsize; - o_children = [[NSMutableArray alloc] initWithCapacity:10]; - if( p_item ) do - { - NSString *o_child_name; - NSString *o_child_title; - NSString *o_child_help; - switch( p_item->i_type ) - { - case CONFIG_CATEGORY: - if( p_item->value.i == -1 ) break; + case CONFIG_CATEGORY: + if( p_item->value.i == -1 ) break; - o_child_name = [[VLCMain sharedInstance] + o_child_name = [[VLCMain sharedInstance] localizedString: config_CategoryNameGet( p_item->value.i )]; - o_child_title = o_child_name; - o_child_help = [[VLCMain sharedInstance] + o_child_title = o_child_name; + o_child_help = [[VLCMain sharedInstance] localizedString: config_CategoryHelpGet( p_item->value.i )]; - p_last_category = [VLCTreeItem alloc]; - [o_children addObject:[p_last_category + p_last_category = [VLCTreeItem alloc]; + [o_children addObject:[p_last_category initWithName: o_child_name - withTitle: o_child_title - withHelp: o_child_help - ID: p_item->value.i - parent:self - children:[[NSMutableArray alloc] + withTitle: o_child_title + withHelp: o_child_help + ID: p_item->value.i + parent:self + children:[[NSMutableArray alloc] initWithCapacity:10] - whithCategory: p_item - module_GetConfig( p_module, &i_confsize )]]; - break; - case CONFIG_SUBCATEGORY: - if( p_item->value.i == -1 ) break; - - if( p_item->value.i != SUBCAT_PLAYLIST_GENERAL && - p_item->value.i != SUBCAT_VIDEO_GENERAL && - p_item->value.i != SUBCAT_INPUT_GENERAL && - p_item->value.i != SUBCAT_INTERFACE_GENERAL && - p_item->value.i != SUBCAT_SOUT_GENERAL && - p_item->value.i != SUBCAT_ADVANCED_MISC && - p_item->value.i != SUBCAT_AUDIO_GENERAL ) - { - o_child_name = [[VLCMain sharedInstance] + whithCategory: p_item - module_GetConfig( p_module, &i_confsize )]]; + break; + case CONFIG_SUBCATEGORY: + if( p_item->value.i == -1 ) break; + + /* Special cases: move the main subcategories to the parent cat*/ + if( p_item->value.i != SUBCAT_PLAYLIST_GENERAL && + p_item->value.i != SUBCAT_VIDEO_GENERAL && + p_item->value.i != SUBCAT_INPUT_GENERAL && + p_item->value.i != SUBCAT_INTERFACE_GENERAL && + p_item->value.i != SUBCAT_SOUT_GENERAL && + p_item->value.i != SUBCAT_ADVANCED_MISC && + p_item->value.i != SUBCAT_AUDIO_GENERAL ) + { + o_child_name = [[VLCMain sharedInstance] localizedString: config_CategoryNameGet( p_item->value.i ) ]; - o_child_title = o_child_name; - o_child_help = [[VLCMain sharedInstance] + o_child_title = o_child_name; + o_child_help = [[VLCMain sharedInstance] localizedString: config_CategoryHelpGet( p_item->value.i ) ]; - - [p_last_category->o_children + + [p_last_category->o_children addObject:[[VLCTreeItem alloc] initWithName: o_child_name - withTitle: o_child_title - withHelp: o_child_help - ID: p_item->value.i - parent:p_last_category - children:[[NSMutableArray alloc] + withTitle: o_child_title + withHelp: o_child_help + ID: p_item->value.i + parent:p_last_category + children:[[NSMutableArray alloc] initWithCapacity:10] - whithCategory: p_item - module_GetConfig( p_parser, &i_confsize )]]; - } - - break; - default: - break; + whithCategory: p_item - module_GetConfig( p_module, &i_confsize )]]; + continue; } - } while( p_item < p_end && p_item++ ); - } + break; - /* Build a tree of the plugins */ - /* Add the capabilities */ - for( i_index = 0; i_index < p_list->i_count; i_index++ ) + default: + break; + } + } + module_PutConfig (p_config); + + /* Build the tree of plugins */ + /* Build a tree of the plugins */ + /* Add the capabilities */ + for( i_index = 0; i_index < p_list->i_count; i_index++ ) + { + unsigned int confsize; + p_module = (module_t *)p_list->p_values[i_index].p_object; + + /* Exclude the main module */ + if( !strcmp( module_GetObjName( p_module ), "main" ) ) + continue; + + /* Exclude empty plugins (submodules don't have config */ + /* options, they are stored in the parent module) */ + // Does not work + // if( modules_IsSubModule( p_module ) ) + // continue; + p_item = module_GetConfig( p_module, &confsize ); + + if( !p_item ) continue; + int i_category = -1; + int i_subcategory = -1; + int i_options = 0; + do { - unsigned int confsize; - p_module = (module_t *)p_list->p_values[i_index].p_object; - - /* Exclude the main module */ - if( !strcmp( module_GetObjName( p_module ), "main" ) ) - continue; - - /* Exclude empty plugins (submodules don't have config */ - /* options, they are stored in the parent module) */ -// Does not work -// if( modules_IsSubModule( p_module ) ) -// continue; - p_item = module_GetConfig( p_module, &confsize ); - - if( !p_item ) continue; - int i_category = -1; - int i_subcategory = -1; - int i_options = 0; - do - { - if( p_item->i_type == CONFIG_CATEGORY ) - i_category = p_item->value.i; - else if( p_item->i_type == CONFIG_SUBCATEGORY ) - i_subcategory = p_item->value.i; - - if( p_item->i_type & CONFIG_ITEM ) - i_options ++; - if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 ) - break; - } while( p_item < p_end && p_item++ ); - if( !i_options ) continue; - - /* Find the right category item */ - - long cookie; - vlc_bool_t b_found = VLC_FALSE; - unsigned int i; - VLCTreeItem* p_category_item, * p_subcategory_item; - for (i = 0 ; i < [o_children count] ; i++) + if( p_item->i_type == CONFIG_CATEGORY ) + i_category = p_item->value.i; + else if( p_item->i_type == CONFIG_SUBCATEGORY ) + i_subcategory = p_item->value.i; + + if( p_item->i_type & CONFIG_ITEM ) + i_options ++; + if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 ) + break; + } while( p_item < p_end && p_item++ ); + if( !i_options ) continue; + + /* Find the right category item */ + + long cookie; + vlc_bool_t b_found = VLC_FALSE; + unsigned int i; + VLCTreeItem* p_category_item, * p_subcategory_item; + for (i = 0 ; i < [o_children count] ; i++) + { + p_category_item = [o_children objectAtIndex: i]; + if( p_category_item->i_object_id == i_category ) { - p_category_item = [o_children objectAtIndex: i]; - if( p_category_item->i_object_id == i_category ) - { - b_found = VLC_TRUE; - break; - } + b_found = VLC_TRUE; + break; } - if( !b_found ) continue; - - /* Find subcategory item */ - b_found = VLC_FALSE; - cookie = -1; - for (i = 0 ; i < [p_category_item->o_children count] ; i++) - { - p_subcategory_item = [p_category_item->o_children + } + if( !b_found ) continue; + + /* Find subcategory item */ + b_found = VLC_FALSE; + cookie = -1; + for (i = 0 ; i < [p_category_item->o_children count] ; i++) + { + p_subcategory_item = [p_category_item->o_children objectAtIndex: i]; - if( p_subcategory_item->i_object_id == i_subcategory ) - { - b_found = VLC_TRUE; - break; - } + if( p_subcategory_item->i_object_id == i_subcategory ) + { + b_found = VLC_TRUE; + break; } - if( !b_found ) - p_subcategory_item = p_category_item; - - [p_subcategory_item->o_children addObject:[[VLCTreeItem alloc] + } + if( !b_found ) + p_subcategory_item = p_category_item; + + [p_subcategory_item->o_children addObject:[[VLCTreeItem alloc] initWithName:[[VLCMain sharedInstance] localizedString: module_GetName( p_module, VLC_FALSE ) ] - withTitle:[[VLCMain sharedInstance] + withTitle:[[VLCMain sharedInstance] localizedString: module_GetLongName( p_module ) ] - withHelp: @"" - ID: ((vlc_object_t*)p_module)->i_object_id - parent:p_subcategory_item - children:IsALeafNode - whithCategory: -1]]; - } + withHelp: @"" + ID: ((vlc_object_t*)p_module)->i_object_id + parent:p_subcategory_item + children:IsALeafNode + whithCategory: -1]]; + } + + vlc_list_release( p_list ); } - vlc_list_release( p_list ); - } + + return o_children; } diff --git a/modules/gui/macosx/simple_prefs.h b/modules/gui/macosx/simple_prefs.h new file mode 100644 index 0000000000..60d976e606 --- /dev/null +++ b/modules/gui/macosx/simple_prefs.h @@ -0,0 +1,109 @@ +/***************************************************************************** +* simple_prefs.h: Simple Preferences for Mac OS X +***************************************************************************** +* Copyright (C) 2008 the VideoLAN team +* $Id:$ +* +* Authors: 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 +* GNU General Public License for more details. +* +* 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. +*****************************************************************************/ + +#import + +@interface VLCSimplePrefs : NSObject +{ + IBOutlet id o_audio_dolby_pop; + IBOutlet id o_audio_dolby_txt; + IBOutlet id o_audio_effects_box; + IBOutlet id o_audio_enable_ckb; + IBOutlet id o_audio_general_box; + IBOutlet id o_audio_headphone_ckb; + IBOutlet id o_audio_lang_fld; + IBOutlet id o_audio_lang_txt; + IBOutlet id o_audio_last_box; + IBOutlet id o_audio_last_ckb; + IBOutlet id o_audio_lastpwd_fld; + IBOutlet id o_audio_lastpwd_txt; + IBOutlet id o_audio_lastuser_fld; + IBOutlet id o_audio_lastuser_txt; + IBOutlet id o_audio_norm_ckb; + IBOutlet id o_audio_norm_fld; + IBOutlet id o_audio_spdif_ckb; + IBOutlet id o_audio_view; + IBOutlet id o_audio_visual_pop; + IBOutlet id o_audio_visual_txt; + IBOutlet id o_audio_vol_fld; + IBOutlet id o_audio_vol_sld; + IBOutlet id o_audio_vol_txt; + IBOutlet id o_intf_art_pop; + IBOutlet id o_intf_art_txt; + IBOutlet id o_intf_black_ckb; + IBOutlet id o_intf_embvout_ckb; + IBOutlet id o_intf_fspanel_ckb; + IBOutlet id o_intf_lang_pop; + IBOutlet id o_intf_lang_txt; + IBOutlet id o_intf_meta_ckb; + IBOutlet id o_intf_network_box; + IBOutlet id o_intf_view; + IBOutlet id o_sprefs_basic_box; + IBOutlet id o_sprefs_basicFull_matrix; + IBOutlet id o_sprefs_cancel_btn; + IBOutlet id o_sprefs_controls_box; + IBOutlet id o_sprefs_reset_btn; + IBOutlet id o_sprefs_save_btn; + IBOutlet id o_sprefs_win; + + BOOL b_audioSettingChanged; + BOOL b_intfSettingChanged; + id o_currentlyShownCategoryView; + + NSToolbar *o_sprefs_toolbar; + + intf_thread_t *p_intf; +} ++ (VLCSimplePrefs *)sharedInstance; + +- (NSToolbarItem *) toolbar: (NSToolbar *)o_toolbar + itemForItemIdentifier: (NSString *)o_itemIdent + willBeInsertedIntoToolbar: (BOOL)b_willBeInserted; +- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar; +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar; + +- (void)initStrings; +- (void)showSimplePrefs; + +- (IBAction)buttonAction:(id)sender; +- (void)sheetDidEnd:(NSWindow *)o_sheet + returnCode:(int)i_return + contextInfo:(void *)o_context; + +/* interface */ +- (IBAction)interfaceSettingChanged:(id)sender; +- (void)showInterfaceSettings; + +/* audio */ +- (IBAction)audioSettingChanged:(id)sender; +- (void)showAudioSettings; + +/* video */ + +/* subtitles */ + +/* input & codecs */ + +/* hotkeys */ + +@end diff --git a/modules/gui/macosx/simple_prefs.m b/modules/gui/macosx/simple_prefs.m new file mode 100644 index 0000000000..2e58cee5d6 --- /dev/null +++ b/modules/gui/macosx/simple_prefs.m @@ -0,0 +1,244 @@ +/***************************************************************************** +* simple_prefs.m: Simple Preferences for Mac OS X +***************************************************************************** +* Copyright (C) 2008 the VideoLAN team +* $Id:$ +* +* Authors: 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 +* GNU General Public License for more details. +* +* 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. +*****************************************************************************/ + +#import "intf.h" +#import +#import "simple_prefs.h" +#import "prefs.h" + +static NSString* VLCSPrefsToolbarIdentifier = @"Our Simple Preferences Toolbar Identifier"; +static NSString* VLCIntfSettingToolbarIdentifier = @"Intf Settings Item Identifier"; +static NSString* VLCAudioSettingToolbarIdentifier = @"Audio Settings Item Identifier"; + +@implementation VLCSimplePrefs + +static VLCSimplePrefs *_o_sharedInstance = nil; + ++ (VLCSimplePrefs *)sharedInstance +{ + return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init]; +} + +- (id)init +{ + if (_o_sharedInstance) { + [self dealloc]; + } else { + p_intf = VLCIntf; + _o_sharedInstance = [super init]; + } + + return _o_sharedInstance; +} + +- (void)dealloc +{ + [o_currentlyShownCategoryView release]; + [o_sprefs_toolbar release]; + + [super dealloc]; +} + +- (void)awakeFromNib +{ + [self initStrings]; + + o_sprefs_toolbar = [[[NSToolbar alloc] initWithIdentifier: VLCSPrefsToolbarIdentifier] autorelease]; + + [o_sprefs_toolbar setAllowsUserCustomization: NO]; + [o_sprefs_toolbar setAutosavesConfiguration: NO]; + [o_sprefs_toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel]; + [o_sprefs_toolbar setSizeMode: NSToolbarSizeModeRegular]; + + [o_sprefs_toolbar setDelegate: self]; + + [o_sprefs_win setToolbar: o_sprefs_toolbar]; +} + +- (NSToolbarItem *) toolbar: (NSToolbar *)o_sprefs_toolbar + itemForItemIdentifier: (NSString *)o_itemIdent + willBeInsertedIntoToolbar: (BOOL)b_willBeInserted +{ + NSToolbarItem *o_toolbarItem = nil; + + if( [o_itemIdent isEqual: VLCIntfSettingToolbarIdentifier] ) + { + o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; + + [o_toolbarItem setLabel: _NS("Interface")]; + [o_toolbarItem setPaletteLabel: _NS("Interface settings")]; + + [o_toolbarItem setToolTip: _NS("Interface settings")]; + [o_toolbarItem setImage: [NSImage imageNamed: @"spref_cone_Interface_64"]]; + + [o_toolbarItem setTarget: self]; + [o_toolbarItem setAction: @selector(showInterfaceSettings)]; + + [o_toolbarItem setEnabled: YES]; + [o_toolbarItem setAutovalidates: YES]; + } + else if( [o_itemIdent isEqual: VLCAudioSettingToolbarIdentifier] ) + { + o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; + + [o_toolbarItem setLabel: _NS("Audio")]; + [o_toolbarItem setPaletteLabel: _NS("General Audio settings")]; + + [o_toolbarItem setToolTip: _NS("General Audio settings")]; + [o_toolbarItem setImage: [NSImage imageNamed: @"spref_cone_Audio_64"]]; + + [o_toolbarItem setTarget: self]; + [o_toolbarItem setAction: @selector(showAudioSettings)]; + + [o_toolbarItem setEnabled: YES]; + [o_toolbarItem setAutovalidates: YES]; + } + + return o_toolbarItem; +} + +- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar +{ + return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; +} + +- (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar +{ + return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; +} + +- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar +{ + return [NSArray arrayWithObjects: VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; +} + +- (void)initStrings +{ + [o_sprefs_reset_btn setEnabled: NO]; + msg_Warn( p_intf, "localisation of the simple preferences not implemented!" ); +} + +- (void)showSimplePrefs +{ + /* we want to show the interface settings, if no category was chosen */ + if( [o_sprefs_toolbar selectedItemIdentifier] == nil ) + { + [o_sprefs_toolbar setSelectedItemIdentifier: VLCIntfSettingToolbarIdentifier]; + [self showInterfaceSettings]; + } + + [o_sprefs_win makeKeyAndOrderFront: self]; +} + +- (IBAction)buttonAction:(id)sender +{ + if( sender == o_sprefs_cancel_btn ) + [o_sprefs_win orderOut: sender]; + else if( sender == o_sprefs_save_btn ) + { + msg_Warn( p_intf, "sprefs saving not implemented, your changes have no effect!" ); + [o_sprefs_win orderOut: sender]; + } + else if( sender == o_sprefs_reset_btn ) + NSBeginInformationalAlertSheet( _NS("Reset Preferences"), _NS("Cancel"), + _NS("Continue"), nil, o_sprefs_win, self, + @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, + _NS("Beware this will reset the VLC media player preferences.\n" + "Are you sure you want to continue?") ); + else if( sender == o_sprefs_basicFull_matrix ) + { + [o_sprefs_win orderOut: self]; + [[[VLCMain sharedInstance] getPreferences] showPrefs]; + /* TODO: reset our selector controls here */ + } + else + msg_Err( p_intf, "unknown buttonAction sender" ); +} + +- (void)sheetDidEnd:(NSWindow *)o_sheet + returnCode:(int)i_return + contextInfo:(void *)o_context +{ + if( i_return == NSAlertAlternateReturn ) + { + config_ResetAll( p_intf ); + /* TODO: we need to reset our views here */ + } +} + +- (void)showSettingsForCategory: (id)o_new_category_view +{ + msg_Dbg( p_intf, "switching to another category" ); + NSRect o_win_rect, o_view_rect, o_old_view_rect; + o_win_rect = [o_sprefs_win frame]; + o_view_rect = [o_new_category_view frame]; + + if( o_currentlyShownCategoryView != 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]; + } + + o_win_rect.size.height = o_win_rect.size.height + o_view_rect.size.height; + + [o_sprefs_win displayIfNeeded]; + [o_sprefs_win setFrame: o_win_rect display:YES animate: YES]; + + [o_new_category_view setFrame: NSMakeRect( 0, + [o_sprefs_controls_box frame].size.height, + o_view_rect.size.width, + o_view_rect.size.height )]; + [o_new_category_view setNeedsDisplay: YES]; + [o_new_category_view setAutoresizesSubviews: YES]; + [[o_sprefs_win contentView] addSubview: o_new_category_view]; + + /* keep our current category for further reference */ + [o_currentlyShownCategoryView release]; + o_currentlyShownCategoryView = o_new_category_view; + [o_currentlyShownCategoryView retain]; +} + +- (IBAction)interfaceSettingChanged:(id)sender +{ +} + +- (void)showInterfaceSettings +{ + msg_Dbg( p_intf, "showing interface settings" ); + [self showSettingsForCategory: o_intf_view]; +} + +- (IBAction)audioSettingChanged:(id)sender +{ +} + +- (void)showAudioSettings +{ + msg_Dbg( p_intf, "showing audio settings" ); + [self showSettingsForCategory: o_audio_view]; +} +@end