X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fcontrols.m;h=72607bd867f65cac342df3b72f9875063db023a5;hb=8aa14596ca70951fb6b43e6830fa8163181f3a7e;hp=009de48020044bbf83caa6c6c650dbc1ec6ce732;hpb=df0f82ab9c89d2658ddb94b581ef5e6eff460b16;p=vlc diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index 009de48020..72607bd867 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -1,7 +1,7 @@ /***************************************************************************** * controls.m: MacOS X interface module ***************************************************************************** - * Copyright (C) 2002-2012 VLC authors and VideoLAN + * Copyright (C) 2002-2013 VLC authors and VideoLAN * $Id$ * * Authors: Jon Lech Johansen @@ -54,8 +54,6 @@ [o_specificTime_ok_btn setTitle: _NS("OK")]; [o_specificTime_sec_lbl setStringValue: _NS("sec.")]; [o_specificTime_goTo_lbl setStringValue: _NS("Jump to time")]; - - i_lastScrollWheelDirection = 0; } @@ -68,7 +66,7 @@ - (IBAction)play:(id)sender { - [[VLCCoreInteraction sharedInstance] play]; + [[VLCCoreInteraction sharedInstance] playOrPause]; } - (IBAction)stop:(id)sender @@ -95,10 +93,10 @@ { vlc_value_t val; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Get( p_intf ); + playlist_t * p_playlist = pl_Get(p_intf); - var_Get( p_playlist, "repeat", &val ); - if(! val.b_bool ) + var_Get(p_playlist, "repeat", &val); + if (! val.b_bool) [[VLCCoreInteraction sharedInstance] repeatOne]; else [[VLCCoreInteraction sharedInstance] repeatOff]; @@ -108,10 +106,10 @@ { vlc_value_t val; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Get( p_intf ); + playlist_t * p_playlist = pl_Get(p_intf); - var_Get( p_playlist, "loop", &val ); - if(! val.b_bool ) + var_Get(p_playlist, "loop", &val); + if (! val.b_bool) [[VLCCoreInteraction sharedInstance] repeatAll]; else [[VLCCoreInteraction sharedInstance] repeatOff]; @@ -120,8 +118,8 @@ - (IBAction)quitAfterPlayback:(id)sender { vlc_value_t val; - playlist_t * p_playlist = pl_Get( VLCIntf ); - var_ToggleBool( p_playlist, "play-and-exit" ); + playlist_t * p_playlist = pl_Get(VLCIntf); + var_ToggleBool(p_playlist, "play-and-exit"); } - (IBAction)forward:(id)sender @@ -156,28 +154,25 @@ - (IBAction)showPosition: (id)sender { - input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - if( p_input != NULL ) - { - vout_thread_t *p_vout = input_GetVout( p_input ); - if( p_vout != NULL ) - { - var_SetInteger( VLCIntf->p_libvlc, "key-action", ACTIONID_POSITION ); - vlc_object_release( p_vout ); + input_thread_t * p_input = pl_CurrentInput(VLCIntf); + if (p_input != NULL) { + vout_thread_t *p_vout = input_GetVout(p_input); + if (p_vout != NULL) { + var_SetInteger(VLCIntf->p_libvlc, "key-action", ACTIONID_POSITION); + vlc_object_release(p_vout); } - vlc_object_release( p_input ); + vlc_object_release(p_input); } } - (IBAction)telxTransparent:(id)sender { vlc_object_t *p_vbi; - p_vbi = (vlc_object_t *) vlc_object_find_name( pl_Get( VLCIntf ), "zvbi" ); - if( p_vbi ) - { - var_SetBool( p_vbi, "vbi-opaque", [sender state] ); + p_vbi = (vlc_object_t *) vlc_object_find_name(pl_Get(VLCIntf), "zvbi"); + if (p_vbi) { + var_SetBool(p_vbi, "vbi-opaque", [sender state]); [sender setState: ![sender state]]; - vlc_object_release( p_vbi ); + vlc_object_release(p_vbi); } } @@ -187,23 +182,22 @@ vlc_object_t *p_vbi; int i_page = 0; - if( [[sender title] isEqualToString: _NS("Index")] ) + if ([[sender title] isEqualToString: _NS("Index")]) i_page = 'i' << 16; - else if( [[sender title] isEqualToString: _NS("Red")] ) + else if ([[sender title] isEqualToString: _NS("Red")]) i_page = 'r' << 16; - else if( [[sender title] isEqualToString: _NS("Green")] ) + else if ([[sender title] isEqualToString: _NS("Green")]) i_page = 'g' << 16; - else if( [[sender title] isEqualToString: _NS("Yellow")] ) + else if ([[sender title] isEqualToString: _NS("Yellow")]) i_page = 'y' << 16; - else if( [[sender title] isEqualToString: _NS("Blue")] ) + else if ([[sender title] isEqualToString: _NS("Blue")]) i_page = 'b' << 16; - if( i_page == 0 ) return; + if (i_page == 0) return; - p_vbi = (vlc_object_t *) vlc_object_find_name( pl_Get( VLCIntf ), "zvbi" ); - if( p_vbi ) - { - var_SetInteger( p_vbi, "vbi-page", i_page ); - vlc_object_release( p_vbi ); + p_vbi = (vlc_object_t *) vlc_object_find_name(pl_Get(VLCIntf), "zvbi"); + if (p_vbi) { + var_SetInteger(p_vbi, "vbi-page", i_page); + vlc_object_release(p_vbi); } } @@ -216,18 +210,19 @@ - (IBAction)addSubtitleFile:(id)sender { NSInteger i_returnValue = 0; - input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - if( !p_input ) return; + input_thread_t * p_input = pl_CurrentInput(VLCIntf); + if (!p_input) + return; - input_item_t *p_item = input_GetItem( p_input ); - if( !p_item ) - { - vlc_object_release( p_input ); + input_item_t *p_item = input_GetItem(p_input); + if (!p_item) { + vlc_object_release(p_input); return; } - char *path = input_item_GetURI( p_item ); - if( !path ) path = strdup( "" ); + char *path = input_item_GetURI(p_item); + if (!path) + path = strdup(""); NSOpenPanel * openPanel = [NSOpenPanel openPanel]; [openPanel setCanChooseFiles: YES]; @@ -236,146 +231,52 @@ [openPanel setAllowedFileTypes: [NSArray arrayWithObjects: @"cdg",@"@idx",@"srt",@"sub",@"utf",@"ass",@"ssa",@"aqt",@"jss",@"psb",@"rt",@"smi",@"txt",@"smil", nil]]; [openPanel setDirectoryURL:[NSURL fileURLWithPath:[[NSString stringWithUTF8String:path] stringByExpandingTildeInPath]]]; i_returnValue = [openPanel runModal]; - free( path ); + free(path); - if( i_returnValue == NSOKButton ) - { + if (i_returnValue == NSOKButton) { NSUInteger c = 0; - if( !p_input ) return; + if (!p_input) + return; c = [[openPanel URLs] count]; - for (int i = 0; i < c ; i++) - { - msg_Dbg( VLCIntf, "loading subs from %s", [[[[openPanel URLs] objectAtIndex: i] path] UTF8String] ); - if( input_AddSubtitle( p_input, [[[[openPanel URLs] objectAtIndex: i] path] UTF8String], TRUE ) ) - msg_Warn( VLCIntf, "unable to load subtitles from '%s'", - [[[[openPanel URLs] objectAtIndex: i] path] UTF8String] ); + for (int i = 0; i < c ; i++) { + msg_Dbg(VLCIntf, "loading subs from %s", [[[[openPanel URLs] objectAtIndex: i] path] UTF8String]); + if (input_AddSubtitle(p_input, [[[[openPanel URLs] objectAtIndex: i] path] UTF8String], TRUE)) + msg_Warn(VLCIntf, "unable to load subtitles from '%s'", + [[[[openPanel URLs] objectAtIndex: i] path] UTF8String]); } } - vlc_object_release( p_input ); -} - -- (void)resetScrollWheelDirection -{ - /* release the scroll direction 0.8 secs after the last event */ - if (([NSDate timeIntervalSinceReferenceDate] - t_lastScrollEvent) >= 0.80) - i_lastScrollWheelDirection = 0; -} - -- (void)scrollWheel:(NSEvent *)theEvent -{ - intf_thread_t * p_intf = VLCIntf; - BOOL b_invertedEventFromDevice = NO; - CGFloat f_deltaY, f_deltaX = .0; - - if (!OSX_SNOW_LEOPARD) - { - if ([theEvent isDirectionInvertedFromDevice]) - b_invertedEventFromDevice = YES; - } - - f_deltaY = [theEvent deltaY]; - f_deltaX = [theEvent deltaX]; - - CGFloat f_yabsvalue = f_deltaY > 0.0f ? f_deltaY : -f_deltaY; - CGFloat f_xabsvalue = f_deltaX > 0.0f ? f_deltaX : -f_deltaX; - - int i_yvlckey, i_xvlckey = 0; - - if (b_invertedEventFromDevice) - { - if (f_deltaY > 0.0f) - i_yvlckey = KEY_MOUSEWHEELDOWN; - else - i_yvlckey = KEY_MOUSEWHEELUP; - - if (f_deltaX > 0.0f) - i_xvlckey = KEY_MOUSEWHEELRIGHT; - else - i_xvlckey = KEY_MOUSEWHEELLEFT; - } - else - { - if (f_deltaY < 0.0f) - i_yvlckey = KEY_MOUSEWHEELDOWN; - else - i_yvlckey = KEY_MOUSEWHEELUP; - - if (f_deltaX < 0.0f) - i_xvlckey = KEY_MOUSEWHEELRIGHT; - else - i_xvlckey = KEY_MOUSEWHEELLEFT; - } - - /* in the following, we're forwarding either a x or a y event */ - /* Multiple key events are send depending on the intensity of the event */ - /* the opposite direction is being blocked for 0.8 secs */ - if (f_yabsvalue > 0.05) - { - if (i_lastScrollWheelDirection < 0) // last was a X - return; - - i_lastScrollWheelDirection = 1; // Y - for (NSUInteger i = 0; i < (int)(f_yabsvalue/4.+1.) && f_yabsvalue > 0.05 ; i++) - var_SetInteger( p_intf->p_libvlc, "key-pressed", i_yvlckey ); - - t_lastScrollEvent = [NSDate timeIntervalSinceReferenceDate]; - [self performSelector:@selector(resetScrollWheelDirection) - withObject: NULL - afterDelay:1.00]; - return; - } - if (f_xabsvalue > 0.05) - { - if (i_lastScrollWheelDirection > 0) // last was a Y - return; - - i_lastScrollWheelDirection = -1; // X - for (NSUInteger i = 0; i < (int)(f_xabsvalue/6.+1.) && f_xabsvalue > 0.05; i++) - var_SetInteger( p_intf->p_libvlc, "key-pressed", i_xvlckey ); - - t_lastScrollEvent = [NSDate timeIntervalSinceReferenceDate]; - [self performSelector:@selector(resetScrollWheelDirection) - withObject: NULL - afterDelay:1.00]; - } + vlc_object_release(p_input); } - (BOOL)keyEvent:(NSEvent *)o_event { BOOL eventHandled = NO; NSString * characters = [o_event charactersIgnoringModifiers]; - if ([characters length] > 0) - { + if ([characters length] > 0) { unichar key = [characters characterAtIndex: 0]; - if( key ) - { - input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - if( p_input != NULL ) - { - vout_thread_t *p_vout = input_GetVout( p_input ); + if (key) { + input_thread_t * p_input = pl_CurrentInput(VLCIntf); + if (p_input != NULL) { + vout_thread_t *p_vout = input_GetVout(p_input); - if( p_vout != NULL ) - { + if (p_vout != NULL) { /* Escape */ - if( key == (unichar) 0x1b ) - { - if (var_GetBool( p_vout, "fullscreen" )) - { + if (key == (unichar) 0x1b) { + if (var_GetBool(p_vout, "fullscreen")) { [[VLCCoreInteraction sharedInstance] toggleFullscreen]; eventHandled = YES; } } - else if( key == ' ' ) - { + else if (key == ' ') { [self play:self]; eventHandled = YES; } - vlc_object_release( p_vout ); + vlc_object_release(p_vout); } - vlc_object_release( p_input ); + vlc_object_release(p_input); } } } @@ -384,32 +285,25 @@ - (IBAction)goToSpecificTime:(id)sender { - if( sender == o_specificTime_cancel_btn ) + if (sender == o_specificTime_cancel_btn) { [NSApp endSheet: o_specificTime_win]; [o_specificTime_win close]; - } - else if( sender == o_specificTime_ok_btn ) - { - input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - if( p_input ) - { + } else if (sender == o_specificTime_ok_btn) { + input_thread_t * p_input = pl_CurrentInput(VLCIntf); + if (p_input) { int64_t timeInSec = 0; NSString * fieldContent = [o_specificTime_enter_fld stringValue]; - if( [[fieldContent componentsSeparatedByString: @":"] count] > 1 && - [[fieldContent componentsSeparatedByString: @":"] count] <= 3 ) - { + if ([[fieldContent componentsSeparatedByString: @":"] count] > 1 && + [[fieldContent componentsSeparatedByString: @":"] count] <= 3) { NSArray * ourTempArray = \ [fieldContent componentsSeparatedByString: @":"]; - if( [[fieldContent componentsSeparatedByString: @":"] count] == 3 ) - { + if ([[fieldContent componentsSeparatedByString: @":"] count] == 3) { timeInSec += ([[ourTempArray objectAtIndex: 0] intValue] * 3600); //h timeInSec += ([[ourTempArray objectAtIndex: 1] intValue] * 60); //m timeInSec += [[ourTempArray objectAtIndex: 2] intValue]; //s - } - else - { + } else { timeInSec += ([[ourTempArray objectAtIndex: 0] intValue] * 60); //m timeInSec += [[ourTempArray objectAtIndex: 1] intValue]; //s } @@ -417,30 +311,27 @@ else timeInSec = [fieldContent intValue]; - input_Control( p_input, INPUT_SET_TIME, (int64_t)(timeInSec * 1000000)); - vlc_object_release( p_input ); + input_Control(p_input, INPUT_SET_TIME, (int64_t)(timeInSec * 1000000)); + vlc_object_release(p_input); } [NSApp endSheet: o_specificTime_win]; [o_specificTime_win close]; - } - else - { - input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - if( p_input ) - { + } else { + input_thread_t * p_input = pl_CurrentInput(VLCIntf); + if (p_input) { /* we can obviously only do that if an input is available */ vlc_value_t pos, length; - var_Get( p_input, "time", &pos ); + var_Get(p_input, "time", &pos); [o_specificTime_enter_fld setIntValue: (pos.i_time / 1000000)]; - var_Get( p_input, "length", &length ); + var_Get(p_input, "length", &length); [o_specificTime_stepper setMaxValue: (length.i_time / 1000000)]; [NSApp beginSheet: o_specificTime_win modalForWindow: \ [NSApp mainWindow] modalDelegate: self didEndSelector: nil \ contextInfo: nil]; [o_specificTime_win makeKeyWindow]; - vlc_object_release( p_input ); + vlc_object_release(p_input); } } }