📄 intf.m
字号:
free(name); [self setScrollField: aString stopAfter:-1]; [[[self getControls] getFSPanel] setStreamTitle: aString]; [[o_controls getVoutView] updateTitle]; [o_playlist updateRowSelection]; p_intf->p_sys->b_current_title_update = FALSE; } if( [o_timeslider isEnabled] ) { /* Update the slider */ vlc_value_t time; NSString * o_time; vlc_value_t pos; char psz_time[MSTRTIME_MAX_SIZE]; float f_updated; var_Get( p_input, "position", &pos ); f_updated = 10000. * pos.f_float; [o_timeslider setFloatValue: f_updated]; var_Get( p_input, "time", &time ); o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )]; [o_timefield setStringValue: o_time]; [[[self getControls] getFSPanel] setStreamPos: f_updated andTime: o_time]; [o_embedded_window setTime: o_time position: f_updated]; } /* Manage Playing status */ var_Get( p_input, "state", &val ); if( p_intf->p_sys->i_play_status != val.i_int ) { p_intf->p_sys->i_play_status = val.i_int; [self playStatusUpdated: p_intf->p_sys->i_play_status]; [o_embedded_window playStatusUpdated: p_intf->p_sys->i_play_status]; } vlc_object_release( p_input ); } else if( p_input ) { vlc_object_release( p_input ); } else { p_intf->p_sys->i_play_status = END_S; [self playStatusUpdated: p_intf->p_sys->i_play_status]; [o_embedded_window playStatusUpdated: p_intf->p_sys->i_play_status]; [self setSubmenusEnabled: FALSE]; } if( p_intf->p_sys->b_volume_update ) { NSString *o_text; int i_volume_step = 0; o_text = [NSString stringWithFormat: _NS("Volume: %d%%"), i_lastShownVolume * 400 / AOUT_VOLUME_MAX]; if( i_lastShownVolume != -1 ) [self setScrollField:o_text stopAfter:1000000]; i_volume_step = config_GetInt( p_intf->p_libvlc, "volume-step" ); [o_volumeslider setFloatValue: (float)i_lastShownVolume / i_volume_step]; [o_volumeslider setEnabled: TRUE]; [[[self getControls] getFSPanel] setVolumeLevel: (float)i_lastShownVolume / i_volume_step]; p_intf->p_sys->b_mute = ( i_lastShownVolume == 0 ); p_intf->p_sys->b_volume_update = FALSE; }end: [self updateMessageArray]; if( ((i_end_scroll != -1) && (mdate() > i_end_scroll)) || !p_input ) [self resetScrollField]; [interfaceTimer autorelease]; interfaceTimer = [[NSTimer scheduledTimerWithTimeInterval: 0.3 target: self selector: @selector(manageIntf:) userInfo: nil repeats: FALSE] retain];}#pragma mark -#pragma mark Interface update- (void)setupMenus{ playlist_t * p_playlist = pl_Yield( p_intf ); input_thread_t * p_input = playlist_CurrentInput( p_playlist ); if( p_input != NULL ) { [o_controls setupVarMenuItem: o_mi_program target: (vlc_object_t *)p_input var: "program" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_title target: (vlc_object_t *)p_input var: "title" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_chapter target: (vlc_object_t *)p_input var: "chapter" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_audiotrack target: (vlc_object_t *)p_input var: "audio-es" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_videotrack target: (vlc_object_t *)p_input var: "video-es" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_subtitle target: (vlc_object_t *)p_input var: "spu-es" selector: @selector(toggleVar:)]; aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); if( p_aout != NULL ) { [o_controls setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout var: "audio-channels" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_device target: (vlc_object_t *)p_aout var: "audio-device" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_visual target: (vlc_object_t *)p_aout var: "visual" selector: @selector(toggleVar:)]; vlc_object_release( (vlc_object_t *)p_aout ); } vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); if( p_vout != NULL ) { vlc_object_t * p_dec_obj; [o_controls setupVarMenuItem: o_mi_aspect_ratio target: (vlc_object_t *)p_vout var: "aspect-ratio" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_crop target: (vlc_object_t *) p_vout var: "crop" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout var: "video-device" selector: @selector(toggleVar:)]; [o_controls setupVarMenuItem: o_mi_deinterlace target: (vlc_object_t *)p_vout var: "deinterlace" selector: @selector(toggleVar:)]; p_dec_obj = (vlc_object_t *)vlc_object_find( (vlc_object_t *)p_vout, VLC_OBJECT_DECODER, FIND_PARENT ); if( p_dec_obj != NULL ) { [o_controls setupVarMenuItem: o_mi_ffmpeg_pp target: (vlc_object_t *)p_dec_obj var:"ffmpeg-pp-q" selector: @selector(toggleVar:)]; vlc_object_release(p_dec_obj); } vlc_object_release( (vlc_object_t *)p_vout ); } vlc_object_release( p_input ); } pl_Release( p_intf );}- (void)refreshVoutDeviceMenu:(NSNotification *)o_notification{ int x,y = 0; vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); if(! p_vout ) return; /* clean the menu before adding new entries */ if( [o_mi_screen hasSubmenu] ) { y = [[o_mi_screen submenu] numberOfItems] - 1; msg_Dbg( VLCIntf, "%i items in submenu", y ); while( x != y ) { msg_Dbg( VLCIntf, "removing item %i of %i", x, y ); [[o_mi_screen submenu] removeItemAtIndex: x]; x++; } } [o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout var: "video-device" selector: @selector(toggleVar:)]; vlc_object_release( (vlc_object_t *)p_vout );}- (void)setScrollField:(NSString *)o_string stopAfter:(int)timeout{ if( timeout != -1 ) i_end_scroll = mdate() + timeout; else i_end_scroll = -1; [o_scrollfield setStringValue: o_string];}- (void)resetScrollField{ playlist_t * p_playlist = pl_Yield( p_intf ); input_thread_t * p_input = playlist_CurrentInput( p_playlist ); i_end_scroll = -1; if( p_input && vlc_object_alive (p_input) ) { NSString *o_temp; if( input_item_GetNowPlaying ( p_playlist->status.p_item->p_input ) ) o_temp = [NSString stringWithUTF8String: input_item_GetNowPlaying ( p_playlist->status.p_item->p_input )]; else o_temp = [NSString stringWithUTF8String: p_playlist->status.p_item->p_input->psz_name]; [self setScrollField: o_temp stopAfter:-1]; [[[self getControls] getFSPanel] setStreamTitle: o_temp]; vlc_object_release( p_input ); pl_Release( p_intf ); return; } pl_Release( p_intf ); [self setScrollField: _NS("VLC media player") stopAfter:-1];}- (void)playStatusUpdated:(int)i_status{ if( i_status == PLAYING_S ) { [[[self getControls] getFSPanel] setPause]; [o_btn_play setImage: o_img_pause]; [o_btn_play setAlternateImage: o_img_pause_pressed]; [o_btn_play setToolTip: _NS("Pause")]; [o_mi_play setTitle: _NS("Pause")]; [o_dmi_play setTitle: _NS("Pause")]; [o_vmi_play setTitle: _NS("Pause")]; } else { [[[self getControls] getFSPanel] setPlay]; [o_btn_play setImage: o_img_play]; [o_btn_play setAlternateImage: o_img_play_pressed]; [o_btn_play setToolTip: _NS("Play")]; [o_mi_play setTitle: _NS("Play")]; [o_dmi_play setTitle: _NS("Play")]; [o_vmi_play setTitle: _NS("Play")]; }}- (void)setSubmenusEnabled:(BOOL)b_enabled{ [o_mi_program setEnabled: b_enabled]; [o_mi_title setEnabled: b_enabled]; [o_mi_chapter setEnabled: b_enabled]; [o_mi_audiotrack setEnabled: b_enabled]; [o_mi_visual setEnabled: b_enabled]; [o_mi_videotrack setEnabled: b_enabled]; [o_mi_subtitle setEnabled: b_enabled]; [o_mi_channels setEnabled: b_enabled]; [o_mi_deinterlace setEnabled: b_enabled]; [o_mi_ffmpeg_pp setEnabled: b_enabled]; [o_mi_device setEnabled: b_enabled]; [o_mi_screen setEnabled: b_enabled]; [o_mi_aspect_ratio setEnabled: b_enabled]; [o_mi_crop setEnabled: b_enabled];}- (IBAction)timesliderUpdate:(id)sender{ float f_updated; playlist_t * p_playlist; input_thread_t * p_input; switch( [[NSApp currentEvent] type] ) { case NSLeftMouseUp: case NSLeftMouseDown: case NSLeftMouseDragged: f_updated = [sender floatValue]; break; default: return; } p_playlist = pl_Yield( p_intf ); p_input = playlist_CurrentInput( p_playlist ); if( p_input != NULL ) { vlc_value_t time; vlc_value_t pos; NSString * o_time; char psz_time[MSTRTIME_MAX_SIZE]; pos.f_float = f_updated / 10000.; var_Set( p_input, "position", pos ); [o_timeslider setFloatValue: f_updated]; var_Get( p_input, "time", &time ); o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )]; [o_timefield setStringValue: o_time]; [[[self getControls] getFSPanel] setStreamPos: f_updated andTime: o_time]; [o_embedded_window setTime: o_time position: f_updated]; vlc_object_release( p_input ); } pl_Release( p_intf );}#pragma mark -#pragma mark Recent Items- (IBAction)clearRecentItems:(id)sender{ [[NSDocumentController sharedDocumentController] clearRecentDocuments: nil];}- (void)openRecentItem:(id)sender{ [self application: nil openFile: [sender title]];}#pragma mark -#pragma mark Panels- (IBAction)intfOpenFile:(id)sender{ if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; [o_open openFile]; } else { [o_open openFile]; }}- (IBAction)intfOpenFileGeneric:(id)sender{ if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; [o_open openFileGeneric]; } else { [o_open openFileGeneric]; }}- (IBAction)intfOpenDisc:(id)sender{ if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; [o_open openDisc]; } else { [o_open openDisc]; }}- (IBAction)intfOpenNet:(id)sender{ if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; [o_open openNet]; } else { [o_open openNet]; }}- (IBAction)intfOpenCapture:(id)sender{ if( !nib_open_loaded ) { nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self]; [o_open awakeFromNib]; [o_open openCapture]; } else { [o_open openCapture]; }}- (IBAction)showWizard:(id)sender{ if( !ni
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -