📄 fspanel.m
字号:
if( --i_timeToKeepVisibleInSec < 1 ) { [self hideMouse]; [self fadeOut]; [hideAgainTimer invalidate]; /* released in -autoHide and -dealloc */ b_alreadyCounting = NO; }}/* A getter and setter for our main timer that handles window fading */- (NSTimer *)fadeTimer{ return fadeTimer;}- (void)setFadeTimer:(NSTimer *)timer{ [timer retain]; [fadeTimer invalidate]; [fadeTimer autorelease]; fadeTimer=timer;}- (void)mouseDown:(NSEvent *)theEvent{ mouseClic = [theEvent locationInWindow];}- (void)mouseDragged:(NSEvent *)theEvent{ NSPoint point = [NSEvent mouseLocation]; point.x -= mouseClic.x; point.y -= mouseClic.y; [self setFrameOrigin:point];}- (BOOL)isDisplayed{ return b_displayed;}- (void)setVoutWasUpdated: (int)i_newdevice;{ b_voutWasUpdated = YES; if( i_newdevice != i_device ) { i_device = i_newdevice; [self center]; }}@end/***************************************************************************** * FSPanelView *****************************************************************************/@implementation VLCFSPanelView#define addButton( o_button, imageOff, imageOn, _x, _y, action ) \ s_rc.origin.x = _x; \ s_rc.origin.y = _y; \ o_button = [[NSButton alloc] initWithFrame: s_rc]; \ [o_button setButtonType: NSMomentaryChangeButton]; \ [o_button setBezelStyle: NSRegularSquareBezelStyle]; \ [o_button setBordered: NO]; \ [o_button setFont:[NSFont systemFontOfSize:0]]; \ [o_button setImage:[NSImage imageNamed:imageOff]]; \ [o_button setAlternateImage:[NSImage imageNamed:imageOn]]; \ [o_button sizeToFit]; \ [o_button setTarget: self]; \ [o_button setAction: @selector(action:)]; \ [self addSubview:o_button];#define addTextfield( o_text, align, font, color, size ) \ o_text = [[NSTextField alloc] initWithFrame: s_rc]; \ [o_text setDrawsBackground: NO]; \ [o_text setBordered: NO]; \ [o_text setEditable: NO]; \ [o_text setSelectable: NO]; \ [o_text setStringValue: _NS("(no item is being played)")]; \ [o_text setAlignment: align]; \ [o_text setTextColor: [NSColor color]]; \ [o_text setFont:[NSFont font:[NSFont smallSystemFontSize] - size]]; \ [self addSubview:o_text];- (id)initWithFrame:(NSRect)frameRect{ id view = [super initWithFrame:frameRect]; fillColor = [[NSColor clearColor] retain]; NSRect s_rc = [self frame]; addButton( o_prev, @"fs_skip_previous" , @"fs_skip_previous_highlight", 174, 15, prev ); addButton( o_bwd, @"fs_rewind" , @"fs_rewind_highlight" , 211, 14, backward ); addButton( o_play, @"fs_play" , @"fs_play_highlight" , 267, 10, play ); addButton( o_fwd, @"fs_forward" , @"fs_forward_highlight" , 313, 14, forward ); addButton( o_next, @"fs_skip_next" , @"fs_skip_next_highlight" , 365, 15, next ); addButton( o_fullscreen, @"fs_exit_fullscreen", @"fs_exit_fullscreen_hightlight", 507, 13, windowAction );/* addButton( o_button, @"image (off state)", @"image (on state)", 38, 51, something ); */ /* time slider */ s_rc = [self frame]; s_rc.origin.x = 15; s_rc.origin.y = 53; s_rc.size.width = 518; s_rc.size.height = 9; o_fs_timeSlider = [[VLCFSTimeSlider alloc] initWithFrame: s_rc]; [o_fs_timeSlider setMinValue:0]; [o_fs_timeSlider setMaxValue:10000]; [o_fs_timeSlider setFloatValue: 0]; [o_fs_timeSlider setContinuous: YES]; [o_fs_timeSlider setTarget: self]; [o_fs_timeSlider setAction: @selector(fsTimeSliderUpdate:)]; [self addSubview: o_fs_timeSlider]; /* volume slider */ s_rc = [self frame]; s_rc.origin.x = 26; s_rc.origin.y = 17.5; s_rc.size.width = 95; s_rc.size.height = 10; o_fs_volumeSlider = [[VLCFSVolumeSlider alloc] initWithFrame: s_rc]; [o_fs_volumeSlider setMinValue:0]; [o_fs_volumeSlider setMaxValue:32]; [o_fs_volumeSlider setFloatValue: 0]; [o_fs_volumeSlider setContinuous: YES]; [o_fs_volumeSlider setTarget: self]; [o_fs_volumeSlider setAction: @selector(fsVolumeSliderUpdate:)]; [self addSubview: o_fs_volumeSlider]; /* time counter and stream title output fields */ s_rc = [self frame]; s_rc.origin.x = 98; s_rc.origin.y = 64; s_rc.size.width = 352; s_rc.size.height = 14; addTextfield( o_streamTitle_txt, NSCenterTextAlignment, systemFontOfSize, whiteColor, 0 ); s_rc.origin.x = 486; s_rc.origin.y = 64; s_rc.size.width = 50; addTextfield( o_streamPosition_txt, NSRightTextAlignment, systemFontOfSize, whiteColor, 0 ); return view;}- (void)dealloc{ [o_fs_timeSlider release]; [o_fs_volumeSlider release]; [o_prev release]; [o_next release]; [o_bwd release]; [o_play release]; [o_fwd release]; [o_fullscreen release]; [o_streamTitle_txt release]; [o_streamPosition_txt release]; [super dealloc];}- (void)setPlay{ [o_play setImage:[NSImage imageNamed:@"fs_play"]]; [o_play setAlternateImage: [NSImage imageNamed:@"fs_play_highlight"]];}- (void)setPause{ [o_play setImage: [NSImage imageNamed:@"fs_pause"]]; [o_play setAlternateImage: [NSImage imageNamed:@"fs_pause_highlight"]];}- (void)setStreamTitle:(NSString *)o_title{ [o_streamTitle_txt setStringValue: o_title];}- (void)setStreamPos:(float) f_pos andTime:(NSString *)o_time{ [o_streamPosition_txt setStringValue: o_time]; [o_fs_timeSlider setFloatValue: f_pos];}- (void)setSeekable:(BOOL)b_seekable{ [o_bwd setEnabled: b_seekable]; [o_fwd setEnabled: b_seekable]; [o_fs_timeSlider setEnabled: b_seekable];}- (void)setVolumeLevel: (float)f_volumeLevel{ [o_fs_volumeSlider setFloatValue: f_volumeLevel];}- (IBAction)play:(id)sender{ [[[VLCMain sharedInstance] getControls] play: sender];}- (IBAction)forward:(id)sender{ [[[VLCMain sharedInstance] getControls] forward: sender];}- (IBAction)backward:(id)sender{ [[[VLCMain sharedInstance] getControls] backward: sender];}- (IBAction)prev:(id)sender{ [[[VLCMain sharedInstance] getControls] prev: sender];}- (IBAction)next:(id)sender{ [[[VLCMain sharedInstance] getControls] next: sender];}- (IBAction)windowAction:(id)sender{ [[[VLCMain sharedInstance] getControls] windowAction: sender];}- (IBAction)fsTimeSliderUpdate:(id)sender{ [[VLCMain sharedInstance] timesliderUpdate: sender];}- (IBAction)fsVolumeSliderUpdate:(id)sender{ [[[VLCMain sharedInstance] getControls] volumeSliderUpdated: sender];}#define addImage(image, _x, _y, mode, _width) \ img = [NSImage imageNamed:image]; \ image_rect.size = [img size]; \ image_rect.origin.x = 0; \ image_rect.origin.y = 0; \ frame.origin.x = _x; \ frame.origin.y = _y; \ frame.size = [img size]; \ if( _width ) frame.size.width = _width; \ [img drawInRect:frame fromRect:image_rect operation:mode fraction:1];- (void)drawRect:(NSRect)rect{ NSRect frame = [self frame]; NSRect image_rect; NSImage *img; addImage( @"fs_background", 0, 0, NSCompositeCopy, 0 ); addImage( @"fs_volume_slider_bar", 26, 22, NSCompositeSourceOver, 0 ); addImage( @"fs_volume_mute", 16, 18, NSCompositeSourceOver, 0 ); addImage( @"fs_volume_max", 124, 17, NSCompositeSourceOver, 0 ); addImage( @"fs_time_slider", 15, 53, NSCompositeSourceOver, 0);}@end/***************************************************************************** * VLCFSTimeSlider *****************************************************************************/@implementation VLCFSTimeSlider- (void)drawKnobInRect:(NSRect)knobRect{ NSRect image_rect; NSImage *img = [NSImage imageNamed:@"fs_time_slider_knob_highlight"]; image_rect.size = [img size]; image_rect.origin.x = 0; image_rect.origin.y = 0; knobRect.origin.x += (knobRect.size.width - image_rect.size.width) / 2; knobRect.size.width = image_rect.size.width; knobRect.size.height = image_rect.size.height; [img drawInRect:knobRect fromRect:image_rect operation:NSCompositeSourceOver fraction:1];}- (void)drawRect:(NSRect)rect{ /* Draw default to make sure the slider behaves correctly */ [[NSGraphicsContext currentContext] saveGraphicsState]; NSRectClip(NSZeroRect); [super drawRect:rect]; [[NSGraphicsContext currentContext] restoreGraphicsState]; NSRect knobRect = [[self cell] knobRectFlipped:NO]; knobRect.origin.y+=7.5; [[[NSColor blackColor] colorWithAlphaComponent:0.6] set]; [self drawKnobInRect: knobRect];}@end/****************************************************************************** VLCFSVolumeSlider*****************************************************************************/@implementation VLCFSVolumeSlider- (void)drawKnobInRect:(NSRect) knobRect{ NSRect image_rect; NSImage *img = [NSImage imageNamed:@"fs_volume_slider_knob"]; image_rect.size = [img size]; image_rect.origin.x = 0; image_rect.origin.y = 0; knobRect.origin.x += (knobRect.size.width - image_rect.size.width) / 2; knobRect.size.width = image_rect.size.width; knobRect.size.height = image_rect.size.height; [img drawInRect:knobRect fromRect:image_rect operation:NSCompositeSourceOver fraction:1];}- (void)drawRect:(NSRect)rect{ /* Draw default to make sure the slider behaves correctly */ [[NSGraphicsContext currentContext] saveGraphicsState]; NSRectClip(NSZeroRect); [super drawRect:rect]; [[NSGraphicsContext currentContext] restoreGraphicsState]; NSRect knobRect = [[self cell] knobRectFlipped:NO]; knobRect.origin.y+=6; [[[NSColor blackColor] colorWithAlphaComponent:0.6] set]; [self drawKnobInRect: knobRect];}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -