#include <vlc_osd.h>
#include <vlc_keys.h>
-/*****************************************************************************
- * VLCAutoGeneratedMenuContent interface
- *****************************************************************************
- * This holds our data for autogenerated menus
- *****************************************************************************/
-@interface VLCAutoGeneratedMenuContent : NSObject
-{
- char *psz_name;
- vlc_object_t * _vlc_object;
- vlc_value_t value;
- int i_type;
-}
-
-- (id)initWithVariableName: (const char *)name
- ofObject: (vlc_object_t *)object
- andValue: (vlc_value_t)value
- ofType: (int)type;
-- (const char *)name;
-- (vlc_value_t)value;
-- (vlc_object_t *)vlcObject;
-- (int)type;
-
-@end
-
#pragma mark -
/*****************************************************************************
* VLCControls implementation
- (id)voutView
{
- id window;
- id voutView = nil;
- id embeddedViewList = [[VLCMain sharedInstance] embeddedList];
- NSEnumerator *enumerator = [[NSApp orderedWindows] objectEnumerator];
- while( !voutView && ( window = [enumerator nextObject] ) )
+ id o_window;
+ id o_voutView = nil;
+ id o_embeddedViewList = [[VLCMain sharedInstance] embeddedList];
+ NSEnumerator *o_enumerator = [[NSApp orderedWindows] objectEnumerator];
+ while( !o_voutView && ( o_window = [o_enumerator nextObject] ) )
{
/* We have an embedded vout */
- if( [embeddedViewList windowContainsEmbedded: window] )
+ if( [o_embeddedViewList windowContainsEmbedded: o_window] )
{
- voutView = [embeddedViewList viewForWindow: window];
+ o_voutView = [o_embeddedViewList viewForWindow: o_window];
}
/* We have a detached vout */
- else if( [[window className] isEqualToString: @"VLCVoutWindow"] )
+ else if( [[o_window className] isEqualToString: @"VLCVoutWindow"] )
{
- voutView = [window voutView];
+ o_voutView = [o_window voutView];
}
}
- return [[voutView retain] autorelease];
+ return [[o_voutView retain] autorelease];
}
- (BOOL)aspectRatioIsLocked
{
[o_btn_repeat setImage: o_repeat_single];
[o_btn_repeat setAlternateImage: o_repeat_all];
+ [o_btn_repeat_embed setImage: [NSImage imageNamed:@"sidebarRepeatOneOn"]];
}
- (void)repeatAll
{
[o_btn_repeat setImage: o_repeat_all];
[o_btn_repeat setAlternateImage: o_repeat_off];
+ [o_btn_repeat_embed setImage: [NSImage imageNamed:@"sidebarRepeatOn"]];
}
- (void)repeatOff
{
[o_btn_repeat setImage: o_repeat_off];
[o_btn_repeat setAlternateImage: o_repeat_single];
+ [o_btn_repeat_embed setImage: [NSImage imageNamed:@"sidebarRepeat"]];
}
- (void)shuffle
{
playlist_t *p_playlist = pl_Hold( VLCIntf );
var_Get( p_playlist, "random", &val );
[o_btn_shuffle setState: val.b_bool];
+ if(val.b_bool)
+ [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffleOn"]];
+ else
+ [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffle"]];
pl_Release( VLCIntf );
}
- (IBAction)showPosition: (id)sender
{
- vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
+ if( p_input != NULL )
{
- intf_thread_t * p_intf = VLCIntf;
- var_SetInteger( p_intf->p_libvlc, "key-action", ACTIONID_POSITION );
- vlc_object_release( (vlc_object_t *)p_vout );
+ 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( (vlc_object_t *)p_vout );
+ }
+ vlc_object_release( p_input );
}
}
- (IBAction)windowAction:(id)sender
{
NSString *o_title = [sender title];
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
- vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ if( p_input != NULL )
{
- id o_vout_view = [self voutView];
- if( o_vout_view )
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout != NULL )
{
- if( [o_title isEqualToString: _NS("Half Size") ] )
- [o_vout_view scaleWindowWithFactor: 0.5 animate: YES];
- else if( [o_title isEqualToString: _NS("Normal Size") ] )
- [o_vout_view scaleWindowWithFactor: 1.0 animate: YES];
- else if( [o_title isEqualToString: _NS("Double Size") ] )
- [o_vout_view scaleWindowWithFactor: 2.0 animate: YES];
- else if( [o_title isEqualToString: _NS("Float on Top") ] )
- [o_vout_view toggleFloatOnTop];
- else if( [o_title isEqualToString: _NS("Fit to Screen") ] )
+ id o_vout_view = [self voutView];
+ if( o_vout_view )
{
- id o_window = [o_vout_view voutWindow];
- if( ![o_window isZoomed] )
- [o_window performZoom:self];
- }
- else if( [o_title isEqualToString: _NS("Snapshot") ] )
- {
- [o_vout_view snapshot];
+ if( [o_title isEqualToString: _NS("Half Size") ] )
+ [o_vout_view scaleWindowWithFactor: 0.5 animate: YES];
+ else if( [o_title isEqualToString: _NS("Normal Size") ] )
+ [o_vout_view scaleWindowWithFactor: 1.0 animate: YES];
+ else if( [o_title isEqualToString: _NS("Double Size") ] )
+ [o_vout_view scaleWindowWithFactor: 2.0 animate: YES];
+ else if( [o_title isEqualToString: _NS("Float on Top") ] )
+ [o_vout_view toggleFloatOnTop];
+ else if( [o_title isEqualToString: _NS("Fit to Screen") ] )
+ {
+ id o_window = [o_vout_view voutWindow];
+ if( ![o_window isZoomed] )
+ [o_window performZoom:self];
+ }
+ else if( [o_title isEqualToString: _NS("Snapshot") ] )
+ {
+ [o_vout_view snapshot];
+ }
+ else
+ {
+ /* Fullscreen state for next time will be saved here too */
+ [o_vout_view toggleFullscreen];
+ }
}
- else
+ vlc_object_release( (vlc_object_t *)p_vout );
+ }
+ else
+ {
+ playlist_t * p_playlist = pl_Hold( VLCIntf );
+
+ if( [o_title isEqualToString: _NS("Fullscreen")] ||
+ [sender isKindOfClass:[NSButton class]] )
{
- /* Fullscreen state for next time will be saved here too */
- [o_vout_view toggleFullscreen];
+ vlc_value_t val;
+ var_Get( p_playlist, "fullscreen", &val );
+ var_Set( p_playlist, "fullscreen", (vlc_value_t)!val.b_bool );
}
- }
- vlc_object_release( (vlc_object_t *)p_vout );
- }
- else
- {
- playlist_t * p_playlist = pl_Hold( VLCIntf );
- if( [o_title isEqualToString: _NS("Fullscreen")] ||
- [sender isKindOfClass:[NSButton class]] )
- {
- vlc_value_t val;
- var_Get( p_playlist, "fullscreen", &val );
- var_Set( p_playlist, "fullscreen", (vlc_value_t)!val.b_bool );
+ pl_Release( VLCIntf );
}
-
- pl_Release( VLCIntf );
+ vlc_object_release( p_input );
}
-
}
- (IBAction)telxTransparent:(id)sender
if( key )
{
- vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
+ if( p_input != NULL )
{
- /* Escape */
- if( key == (unichar) 0x1b )
+ vout_thread_t *p_vout = input_GetVout( p_input );
+
+ if( p_vout != NULL )
{
- id o_vout_view = [self voutView];
- if( o_vout_view && [o_vout_view isFullscreen] )
+ /* Escape */
+ if( key == (unichar) 0x1b )
{
- [o_vout_view toggleFullscreen];
+ id o_vout_view = [self voutView];
+ if( o_vout_view && [o_vout_view isFullscreen] )
+ {
+ [o_vout_view toggleFullscreen];
+ eventHandled = YES;
+ }
+ }
+ else if( key == ' ' )
+ {
+ [self play:self];
eventHandled = YES;
}
+ vlc_object_release( (vlc_object_t *)p_vout );
}
- else if( key == ' ' )
- {
- [self play:self];
- eventHandled = YES;
- }
- vlc_object_release( (vlc_object_t *)p_vout );
+ vlc_object_release( p_input );
}
}
return eventHandled;
/* clean up everything */
if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
- var_Change( p_object, psz_variable, VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
- (IBAction)toggleVar:(id)sender
else if( [[o_mi title] isEqualToString: _NS("Previous")] ||
[[o_mi title] isEqualToString: _NS("Next")] )
{
- /** \todo fix i_size use */
PL_LOCK;
- bEnabled = p_playlist->items.i_size > 1;
+ bEnabled = playlist_CurrentSize( p_playlist ) > 1;
PL_UNLOCK;
}
else if( [[o_mi title] isEqualToString: _NS("Random")] )
NSEnumerator *o_enumerator = [o_windows objectEnumerator];
bEnabled = FALSE;
- vout_thread_t *p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ if( p_input != NULL )
{
- if( [[o_mi title] isEqualToString: _NS("Float on Top")] )
- {
- var_Get( p_vout, "video-on-top", &val );
- [o_mi setState: val.b_bool ? NSOnState : NSOffState];
- }
-
- while( (o_window = [o_enumerator nextObject]))
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout != NULL )
{
- if( [[o_window className] isEqualToString: @"VLCVoutWindow"] ||
- [[[VLCMain sharedInstance] embeddedList]
- windowContainsEmbedded: o_window])
+ if( [[o_mi title] isEqualToString: _NS("Float on Top")] )
{
- bEnabled = TRUE;
- break;
+ var_Get( p_vout, "video-on-top", &val );
+ [o_mi setState: val.b_bool ? NSOnState : NSOffState];
}
+
+ while( (o_window = [o_enumerator nextObject]))
+ {
+ if( [[o_window className] isEqualToString: @"VLCVoutWindow"] ||
+ [[[VLCMain sharedInstance] embeddedList]
+ windowContainsEmbedded: o_window])
+ {
+ bEnabled = TRUE;
+ break;
+ }
+ }
+
+ vlc_object_release( (vlc_object_t *)p_vout );
}
-
- vlc_object_release( (vlc_object_t *)p_vout );
+ vlc_object_release( p_input );
}
if( [[o_mi title] isEqualToString: _NS("Fullscreen")] )
{