From 5c15eb12988d7866bd5f2cb132701746eba56560 Mon Sep 17 00:00:00 2001 From: Jon Lech Johansen Date: Sat, 4 Jan 2003 04:11:08 +0000 Subject: [PATCH] MacOS X port: * main window controls are back. based on suggestion by Dan Macpherson. --- .../English.lproj/MainMenu.nib/classes.nib | 20 ++- .../English.lproj/MainMenu.nib/info.nib | 6 +- .../English.lproj/MainMenu.nib/objects.nib | Bin 26925 -> 29784 bytes modules/gui/macosx/controls.m | 75 ++-------- modules/gui/macosx/intf.h | 22 ++- modules/gui/macosx/intf.m | 134 ++++++++++++++++-- 6 files changed, 177 insertions(+), 80 deletions(-) diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index 97f1347d27..c15baed718 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -30,11 +30,24 @@ SUPERCLASS = NSObject; }, { - ACTIONS = {clearRecentItems = id; openRecentItem = id; viewPreferences = id; }; + ACTIONS = { + clearRecentItems = id; + openRecentItem = id; + timesliderUpdate = id; + viewPreferences = id; + }; CLASS = VLCMain; LANGUAGE = ObjC; OUTLETS = { - asystm = id; + "o_btn_faster" = id; + "o_btn_next" = id; + "o_btn_pause" = id; + "o_btn_play" = id; + "o_btn_playlist" = id; + "o_btn_prefs" = id; + "o_btn_prev" = id; + "o_btn_slower" = id; + "o_btn_stop" = id; "o_controls" = id; "o_dmi_pause" = id; "o_dmi_play" = id; @@ -90,7 +103,8 @@ "o_mu_view" = id; "o_mu_window" = id; "o_playlist" = id; - "o_prefs" = id; + "o_timefield" = id; + "o_timeslider" = id; "o_window" = id; }; SUPERCLASS = NSObject; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index ea53cce114..12fa707c19 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -7,12 +7,16 @@ IBEditorPositions 29 - 266 466 308 44 0 0 1152 746 + 407 753 308 44 0 0 1600 1178 303 93 566 72 114 0 0 1600 1178 IBFramework Version 291.0 + IBOpenObjects + + 21 + IBSystem Version 6G30 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib index ebd6c2884dc4c067ce1e7fa231aef1fa279e5a8f..3f8a91761f087d0ae07af04b3b45c3e48758d9cb 100644 GIT binary patch literal 29784 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 a4PQlp`TU9FO8joWYXXk`YvTRe*nb0-6}NN% diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index 13c2f7a7b0..0fcc0707de 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -2,7 +2,7 @@ * controls.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: controls.m,v 1.4 2002/12/29 01:16:28 massiot Exp $ + * $Id: controls.m,v 1.5 2003/01/04 04:11:08 jlj Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -236,7 +236,6 @@ - (IBAction)mute:(id)sender { -#if 0 intf_thread_t * p_intf = [NSApp getIntf]; aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); @@ -250,37 +249,6 @@ NSMenuItem * o_mi = (NSMenuItem *)sender; p_intf->p_sys->b_mute = !p_intf->p_sys->b_mute; [o_mi setState: p_intf->p_sys->b_mute ? NSOnState : NSOffState]; -#else - int err; - AudioDeviceID device; - UInt32 ui_param_size; - - NSMenuItem * o_mi = (NSMenuItem *)sender; - intf_thread_t * p_intf = [NSApp getIntf]; - UInt32 b_mute = !p_intf->p_sys->b_mute; - - [o_mi setState: b_mute ? NSOnState : NSOffState]; - p_intf->p_sys->b_mute = !p_intf->p_sys->b_mute; - - ui_param_size = sizeof( device ); - err = AudioHardwareGetProperty( kAudioHardwarePropertyDefaultOutputDevice, - &ui_param_size, (void *)&device ); - if( err != noErr ) - { - msg_Err( p_intf, "AudioHardwareGetProperty failed (%d)", err ); - return; - } - - ui_param_size = sizeof( b_mute ); - err = AudioDeviceSetProperty( device, 0, 0, false, - kAudioDevicePropertyMute, - ui_param_size, (void *)&b_mute ); - if( err != noErr ) - { - msg_Err( p_intf, "AudioDeviceSetProperty failed (%d)", err ); - return; - } -#endif } - (IBAction)fullscreen:(id)sender @@ -458,7 +426,7 @@ { bEnabled = p_intf->p_sys->p_input != NULL; } - else if( [[o_mi title] isEqualToString: _NS("Prev")] || + else if( [[o_mi title] isEqualToString: _NS("Previous")] || [[o_mi title] isEqualToString: _NS("Next")] ) { playlist_t * p_playlist = vlc_object_find( p_intf, @@ -477,40 +445,19 @@ } } else if( [[o_mi title] isEqualToString: _NS("Volume Up")] || - [[o_mi title] isEqualToString: _NS("Volume Down")] ) - { - bEnabled = FALSE; /* not implemented yet */ - } - else if( [[o_mi title] isEqualToString: _NS("Mute")] ) + [[o_mi title] isEqualToString: _NS("Volume Down")] || + [[o_mi title] isEqualToString: _NS("Mute")] ) { - int err; - UInt32 b_mute; - AudioDeviceID device; - UInt32 ui_param_size; - - ui_param_size = sizeof( device ); - err = AudioHardwareGetProperty( - kAudioHardwarePropertyDefaultOutputDevice, - &ui_param_size, (void *)&device ); - if( err != noErr ) - { - msg_Err( p_intf, "AudioHardwareGetProperty failed (%d)", err ); + aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, + FIND_ANYWHERE ); + + if ( p_aout != NULL ) + { + vlc_object_release( (vlc_object_t *)p_aout ); } else { - ui_param_size = sizeof( b_mute ); - err = AudioDeviceGetProperty( device, 0, 0, - kAudioDevicePropertyMute, - &ui_param_size, (void *)&b_mute ); - if( err != noErr ) - { - msg_Err( p_intf, "AudioDeviceGetProperty failed (%d)", err ); - } - else - { - [o_mi setState: b_mute ? NSOnState : NSOffState]; - p_intf->p_sys->b_mute = (vlc_bool_t)b_mute ? 1 : 0; - } + bEnabled = FALSE; } } else if( [[o_mi title] isEqualToString: _NS("Fullscreen")] ) diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 9c5f42c6ba..1fad345006 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -2,7 +2,7 @@ * intf.h: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: intf.h,v 1.8 2003/01/02 23:09:30 massiot Exp $ + * $Id: intf.h,v 1.9 2003/01/04 04:11:08 jlj Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -87,6 +87,21 @@ struct intf_sys_t id o_prefs; /* VLCPrefs */ IBOutlet id o_window; /* main window */ + IBOutlet id o_timefield; /* time field */ + IBOutlet id o_timeslider; /* time slider */ + NSLock * o_slider_lock; /* slider lock */ + float f_slider; /* slider value */ + float f_slider_old; /* old slider val */ + + IBOutlet id o_btn_playlist; /* btn playlist */ + IBOutlet id o_btn_prev; /* btn previous */ + IBOutlet id o_btn_slower; /* btn slower */ + IBOutlet id o_btn_play; /* btn play */ + IBOutlet id o_btn_pause; /* btn pause */ + IBOutlet id o_btn_stop; /* btn stop */ + IBOutlet id o_btn_faster; /* btn faster */ + IBOutlet id o_btn_next; /* btn next */ + IBOutlet id o_btn_prefs; /* btn prefs */ IBOutlet id o_controls; /* VLCControls */ IBOutlet id o_playlist; /* VLCPlaylist */ @@ -174,10 +189,11 @@ struct intf_sys_t - (IBAction)clearRecentItems:(id)sender; - (void)openRecentItem:(id)sender; -//- (void)selectAction:(id)sender; - - (IBAction)viewPreferences:(id)sender; +- (IBAction)timesliderUpdate:(id)sender; +- (void)displayTime; + @end @interface VLCMain (Internal) diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index e380cd596e..15b7b5a852 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -2,7 +2,7 @@ * intf.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: intf.m,v 1.16 2003/01/02 23:50:55 massiot Exp $ + * $Id: intf.m,v 1.17 2003/01/04 04:11:08 jlj Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -183,9 +183,22 @@ static void Run( intf_thread_t *p_intf ) [o_window setTitle: pTitle]; + /* button controls */ + [o_btn_playlist setToolTip: _NS("Playlist")]; + [o_btn_prev setToolTip: _NS("Previous")]; + [o_btn_slower setToolTip: _NS("Slower")]; + [o_btn_play setToolTip: _NS("Play")]; + [o_btn_pause setToolTip: _NS("Pause")]; + [o_btn_stop setToolTip: _NS("Stop")]; + [o_btn_faster setToolTip: _NS("Faster")]; + [o_btn_next setToolTip: _NS("Next")]; + [o_btn_prefs setToolTip: _NS("Preferences")]; + + /* messages panel */ [o_msgs_panel setTitle: _NS("Messages")]; [o_msgs_btn_ok setTitle: _NS("Close")]; + /* main menu */ [o_mi_about setTitle: _NS("About vlc")]; [o_mi_prefs setTitle: _NS("Preferences")]; [o_mi_hide setTitle: _NS("Hide vlc")]; @@ -194,8 +207,8 @@ static void Run( intf_thread_t *p_intf ) [o_mi_quit setTitle: _NS("Quit vlc")]; [o_mu_file setTitle: _NS("File")]; - [o_mi_open_file setTitle: _NS("Open File...")]; [o_mi_open_generic setTitle: _NS("Open...")]; + [o_mi_open_file setTitle: _NS("Open File...")]; [o_mi_open_disc setTitle: _NS("Open Disc...")]; [o_mi_open_net setTitle: _NS("Open Network...")]; [o_mi_open_recent setTitle: _NS("Open Recent")]; @@ -221,8 +234,8 @@ static void Run( intf_thread_t *p_intf ) [o_mi_previous setTitle: _NS("Previous")]; [o_mi_next setTitle: _NS("Next")]; [o_mi_loop setTitle: _NS("Loop")]; - [o_mi_vol_up setTitle: _NS("Louder")]; - [o_mi_vol_down setTitle: _NS("Softer")]; + [o_mi_vol_up setTitle: _NS("Volume Up")]; + [o_mi_vol_down setTitle: _NS("Volume Down")]; [o_mi_mute setTitle: _NS("Mute")]; [o_mi_channels setTitle: _NS("Channels")]; [o_mi_device setTitle: _NS("Device")]; @@ -251,6 +264,9 @@ static void Run( intf_thread_t *p_intf ) { intf_thread_t * p_intf = [NSApp getIntf]; + f_slider_old = f_slider = 0.0; + o_slider_lock = [[NSLock alloc] init]; + [NSThread detachNewThreadSelector: @selector(manage) toTarget: self withObject: nil]; @@ -260,10 +276,6 @@ static void Run( intf_thread_t *p_intf ) forMode: NSDefaultRunLoopMode]; } -- (void)noopAction:(id)sender { - // nothing -} - - (BOOL)application:(NSApplication *)o_app openFile:(NSString *)o_filename { [o_playlist appendArray: @@ -312,6 +324,8 @@ static void Run( intf_thread_t *p_intf ) if( !p_input->b_die ) { + [self displayTime]; + /* New input or stream map change */ if( p_input->stream.b_changed ) { @@ -359,6 +373,7 @@ static void Run( intf_thread_t *p_intf ) } else if( p_intf->p_sys->b_playing && !p_intf->b_die ) { + [self displayTime]; [self manageMode]; p_intf->p_sys->b_playing = 0; } @@ -470,6 +485,8 @@ static void Run( intf_thread_t *p_intf ) vout_Destroy( p_vout ); } + [o_slider_lock release]; + if( o_prefs != nil ) { [o_prefs release]; @@ -492,10 +509,13 @@ static void Run( intf_thread_t *p_intf ) - (void)manageMode { + vlc_bool_t b_input; + vlc_bool_t b_plmul = 0; vlc_bool_t b_control = 0; + playlist_t * p_playlist = NULL; intf_thread_t * p_intf = [NSApp getIntf]; - if( p_intf->p_sys->p_input != NULL ) + if( ( b_input = ( p_intf->p_sys->p_input != NULL ) ) ) { /* control buttons for free pace streams */ b_control = p_intf->p_sys->p_input->stream.b_pace_control; @@ -524,6 +544,24 @@ static void Run( intf_thread_t *p_intf ) [o_mi_screen setEnabled: FALSE]; } + p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + FIND_ANYWHERE ); + if( p_playlist != NULL ) + { + vlc_mutex_lock( &p_playlist->object_lock ); + b_plmul = p_playlist->i_size > 1; + vlc_mutex_unlock( &p_playlist->object_lock ); + vlc_object_release( p_playlist ); + } + + /* set control items */ + [o_btn_stop setEnabled: b_input]; + [o_btn_pause setEnabled: b_control]; + [o_btn_faster setEnabled: b_control]; + [o_btn_slower setEnabled: b_control]; + [o_btn_prev setEnabled: b_plmul]; + [o_btn_next setEnabled: b_plmul]; + if ( (p_intf->p_sys->b_loop = config_GetInt( p_intf, "loop" )) ) { [o_mi_loop setState: NSOnState]; @@ -918,6 +956,84 @@ static void Run( intf_thread_t *p_intf ) [o_prefs createPrefPanel: @"main"]; } +- (IBAction)timesliderUpdate:(id)sender +{ + switch( [[NSApp currentEvent] type] ) + { + case NSLeftMouseDown: + [o_slider_lock lock]; + break; + + case NSLeftMouseUp: + f_slider = [sender floatValue]; + [o_slider_lock unlock]; + break; + + default: + break; + } +} + +- (void)displayTime +{ + intf_thread_t * p_intf = [NSApp getIntf]; + input_thread_t * p_input = p_intf->p_sys->p_input; + + if( p_input == NULL ) + { + [o_timeslider setEnabled: FALSE]; + [o_timeslider setFloatValue: 0.0]; + [o_timefield setStringValue: @"0:00:00"]; + + return; + } + +#define p_area p_input->stream.p_selected_area + + if( p_input->stream.b_changed ) + { + [o_timeslider setEnabled: p_input->stream.b_seekable]; + } + else if( p_intf->p_sys->b_playing ) + { + NSString * o_time; + char psz_time[ OFFSETTOTIME_MAX_SIZE ]; + + input_OffsetToTime( p_input, psz_time, p_area->i_tell ); + + o_time = [NSString stringWithCString: psz_time]; + [o_timefield setStringValue: o_time]; + + if( p_input->stream.b_seekable ) + { + if( f_slider == f_slider_old ) + { + float f_updated = ( 100. * p_area->i_tell ) / + p_area->i_size; + + if( f_slider != f_updated && [o_slider_lock tryLock] ) + { + [o_timeslider setFloatValue: f_updated]; + [o_slider_lock unlock]; + } + } + else + { + off_t i_seek = ( f_slider * p_area->i_size ) / 100; + + /* release the lock to be able to seek */ + vlc_mutex_unlock( &p_input->stream.stream_lock ); + input_Seek( p_input, i_seek, INPUT_SEEK_SET ); + vlc_mutex_lock( &p_input->stream.stream_lock ); + + /* Update the old value */ + f_slider_old = f_slider; + } + } + } +#undef p_area +} + @end @implementation VLCMain (NSMenuValidation) -- 2.39.2