Commit eeb8eda7 authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: moved preliminary vout to main window, removed most interface related...

macosx: moved preliminary vout to main window, removed most interface related parts from VLCMain, implemented theming for the main window

the former embedded window is no longer accessible
parent e589c149
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -1037,7 +1037,7 @@ static VLCMainMenu *_o_sharedInstance = nil;
}
else if( [o_title isEqualToString: _NS("Mute")] )
{
[o_mi setState: p_intf->p_sys->b_mute ? NSOnState : NSOffState];
//FIXME [o_mi setState: p_intf->p_sys->b_mute ? NSOnState : NSOffState];
[self setupMenus]; /* Make sure audio menu is up to date */
}
else if( [o_title isEqualToString: _NS("Half Size")] ||
......
/*****************************************************************************
* MainWindow.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2011 Felix Paul Kühne
* Copyright (C) 2002-2011 VideoLAN
* $Id$
*
* Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
* Derk-Jan Hartman <hartman at videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -22,8 +25,77 @@
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <vlc_input.h>
@interface VLCMainWindow : NSObject {
@interface VLCMainWindow : NSWindow {
IBOutlet id o_play_btn;
IBOutlet id o_bwd_btn;
IBOutlet id o_fwd_btn;
IBOutlet id o_stop_btn;
IBOutlet id o_playlist_btn;
IBOutlet id o_repeat_btn;
IBOutlet id o_shuffle_btn;
IBOutlet id o_effects_btn;
IBOutlet id o_fullscreen_btn;
IBOutlet id o_search_fld;
IBOutlet id o_volume_sld;
IBOutlet id o_volume_track_view;
IBOutlet id o_volume_down_btn;
IBOutlet id o_volume_up_btn;
IBOutlet id o_time_sld;
IBOutlet id o_time_fld;
IBOutlet id o_progress_bar;
IBOutlet id o_bottombar_view;
IBOutlet id o_time_sld_left_view;
IBOutlet id o_time_sld_middle_view;
IBOutlet id o_time_sld_right_view;
// TODO Playlist table, additional ui stuff at the top of the window
IBOutlet id o_playlist_table;
IBOutlet id o_video_view;
BOOL b_gray_interface;
BOOL b_video_playback_enabled;
BOOL b_time_remaining;
int i_lastShownVolume;
BOOL b_mute;
input_state_e cachedInputState;
NSImage * o_pause_img;
NSImage * o_pause_pressed_img;
NSImage * o_play_img;
NSImage * o_play_pressed_img;
NSImage * o_repeat_img;
NSImage * o_repeat_pressed_img;
NSImage * o_repeat_all_img;
NSImage * o_repeat_all_pressed_img;
NSImage * o_repeat_one_img;
NSImage * o_repeat_one_pressed_img;
NSImage * o_shuffle_img;
NSImage * o_shuffle_pressed_img;
NSImage * o_shuffle_on_img;
NSImage * o_shuffle_on_pressed_img;
}
+ (VLCMainWindow *)sharedInstance;
- (IBAction)play:(id)sender;
- (IBAction)bwd:(id)sender;
- (IBAction)fwd:(id)sender;
- (IBAction)stop:(id)sender;
- (IBAction)togglePlaylist:(id)sender;
- (IBAction)repeat:(id)sender;
- (IBAction)shuffle:(id)sender;
- (IBAction)timeSliderAction:(id)sender;
- (IBAction)timeFieldWasClicked:(id)sender;
- (IBAction)volumeAction:(id)sender;
- (IBAction)effects:(id)sender;
- (IBAction)fullscreen:(id)sender;
- (id)videoView;
- (void)setVideoplayEnabled:(BOOL)b_value;
- (void)updateTimeSlider;
- (void)updateVolumeSlider;
- (void)updateWindow;
- (void)setPause;
- (void)setPlay;
@end
\ No newline at end of file
/*****************************************************************************
* MainWindow.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2011 Felix Paul Kühne
* Copyright (C) 2002-2011 VideoLAN
* $Id$
*
* Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
* Derk-Jan Hartman <hartman at videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -22,8 +25,506 @@
*****************************************************************************/
#import "MainWindow.h"
#import "intf.h"
#import "CoreInteraction.h"
#import "AudioEffects.h"
#import "MainMenu.h"
#import "controls.h" // TODO: remove me
#import <vlc_playlist.h>
#import <vlc_aout_intf.h>
@implementation VLCMainWindow
static VLCMainWindow *_o_sharedInstance = nil;
+ (VLCMainWindow *)sharedInstance
{
return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
}
#pragma mark -
#pragma mark Initialization
- (id)init
{
if( _o_sharedInstance)
{
[self dealloc];
return _o_sharedInstance;
}
else
_o_sharedInstance = [super init];
return _o_sharedInstance;
}
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask
backing:(NSBackingStoreType)backingType defer:(BOOL)flag
{
/* FIXME: this should enable the SnowLeopard window style, however, it leads to ugly artifacts
* needs some further investigation! -- feepk */
BOOL b_useTextured = YES;
if( [[NSWindow class] instancesRespondToSelector:@selector(setContentBorderThickness:forEdge:)] )
{
b_useTextured = NO;
styleMask ^= NSTexturedBackgroundWindowMask;
}
self = [super initWithContentRect:contentRect styleMask:styleMask //& ~NSTitledWindowMask
backing:backingType defer:flag];
[[VLCMain sharedInstance] updateTogglePlaylistState];
// FIXME: see above...
if(! b_useTextured )
[self setContentBorderThickness:28.0 forEdge:NSMinYEdge];
/* we want to be moveable regardless of our style */
[self setMovableByWindowBackground: YES];
/* we don't want this window to be restored on relaunch */
if ([self respondsToSelector:@selector(setRestorable:)])
[self setRestorable:NO];
return self;
}
- (BOOL)performKeyEquivalent:(NSEvent *)o_event
{
/* We indeed want to prioritize Cocoa key equivalent against libvlc,
so we perform the menu equivalent now. */
if([[NSApp mainMenu] performKeyEquivalent:o_event])
return TRUE;
return [[VLCMain sharedInstance] hasDefinedShortcutKey:o_event] || [(VLCControls *)[[VLCMain sharedInstance] controls] keyEvent:o_event];
}
- (void)dealloc
{
config_PutInt( VLCIntf->p_libvlc, "volume", i_lastShownVolume );
[super dealloc];
}
- (void)awakeFromNib
{
b_gray_interface = YES; //TODO
i_lastShownVolume = -1;
[o_play_btn setToolTip: _NS("Play/Pause")];
[o_bwd_btn setToolTip: _NS("Backward")];
[o_fwd_btn setToolTip: _NS("Forward")];
[o_stop_btn setToolTip: _NS("Stop")];
[o_playlist_btn setToolTip: _NS("Show/Hide Playlist")];
[o_repeat_btn setToolTip: _NS("Repeat")];
[o_shuffle_btn setToolTip: _NS("Shuffle")];
[o_effects_btn setToolTip: _NS("Effects")];
[o_fullscreen_btn setToolTip: _NS("Toggle Fullscreen mode")];
[[o_search_fld cell] setPlaceholderString: _NS("Search")];
[o_volume_sld setToolTip: _NS("Volume")];
[o_volume_down_btn setToolTip: _NS("Mute")];
[o_volume_up_btn setToolTip: _NS("Full Volume")];
[o_time_sld setToolTip: _NS("Position")];
if (b_gray_interface) {
[o_bottombar_view setImage: [NSImage imageNamed:@"bottom-background"]];
[o_bwd_btn setImage: [NSImage imageNamed:@"back"]];
[o_bwd_btn setAlternateImage: [NSImage imageNamed:@"back-pressed"]];
o_play_img = [[NSImage imageNamed:@"play"] retain];
o_play_pressed_img = [[NSImage imageNamed:@"play-pressed"] retain];
o_pause_img = [[NSImage imageNamed:@"pause"] retain];
o_pause_pressed_img = [[NSImage imageNamed:@"pause-pressed"] retain];
[o_fwd_btn setImage: [NSImage imageNamed:@"forward"]];
[o_fwd_btn setAlternateImage: [NSImage imageNamed:@"forward-pressed"]];
[o_stop_btn setImage: [NSImage imageNamed:@"stop"]];
[o_stop_btn setAlternateImage: [NSImage imageNamed:@"stop-pressed"]];
[o_playlist_btn setImage: [NSImage imageNamed:@"playlist"]];
[o_playlist_btn setAlternateImage: [NSImage imageNamed:@"playlist-pressed"]];
o_repeat_img = [[NSImage imageNamed:@"repeat"] retain];
o_repeat_pressed_img = [[NSImage imageNamed:@"repeat-pressed"] retain];
o_repeat_all_img = [[NSImage imageNamed:@"repeat-all"] retain];
o_repeat_all_pressed_img = [[NSImage imageNamed:@"repeat-all-pressed"] retain];
o_repeat_one_img = [[NSImage imageNamed:@"repeat-one"] retain];
o_repeat_one_pressed_img = [[NSImage imageNamed:@"repeat-one-pressed"] retain];
o_shuffle_img = [[NSImage imageNamed:@"shuffle"] retain];
o_shuffle_pressed_img = [[NSImage imageNamed:@"shuffle-pressed"] retain];
o_shuffle_on_img = [[NSImage imageNamed:@"shuffle-blue"] retain];
o_shuffle_on_pressed_img = [[NSImage imageNamed:@"shuffle-blue-pressed"] retain];
[o_time_fld setTextColor: [NSColor colorWithCalibratedRed:64.0 green:64.0 blue:64.0 alpha:100.0]];
[o_time_sld_left_view setImage: [NSImage imageNamed:@"progression-track-wrapper-left"]];
[o_time_sld_middle_view setImage: [NSImage imageNamed:@"progression-track-wrapper-middle"]];
[o_time_sld_right_view setImage: [NSImage imageNamed:@"progression-track-wrapper-right"]];
[o_volume_down_btn setImage: [NSImage imageNamed:@"volume-low"]];
[o_volume_track_view setImage: [NSImage imageNamed:@"volumetrack"]];
[o_volume_up_btn setImage: [NSImage imageNamed:@"volume-high"]];
[o_effects_btn setImage: [NSImage imageNamed:@"effects-double-buttons"]];
[o_effects_btn setAlternateImage: [NSImage imageNamed:@"effects-double-buttons-pressed"]];
[o_fullscreen_btn setImage: [NSImage imageNamed:@"fullscreen-double-buttons"]];
[o_fullscreen_btn setAlternateImage: [NSImage imageNamed:@"fullscreen-double-buttons-pressed"]];
}
else
{
/* TODO: we also need to change the window style here... */
[o_bottombar_view setImage: [NSImage imageNamed:@"bottom-background_dark"]];
[o_bwd_btn setImage: [NSImage imageNamed:@"back_dark"]];
[o_bwd_btn setAlternateImage: [NSImage imageNamed:@"back-pressed_dark"]];
o_play_img = [[NSImage imageNamed:@"play_dark"] retain];
o_play_pressed_img = [[NSImage imageNamed:@"play-pressed_dark"] retain];
o_pause_img = [[NSImage imageNamed:@"pause_dark"] retain];
o_pause_pressed_img = [[NSImage imageNamed:@"pause-pressed_dark"] retain];
[o_fwd_btn setImage: [NSImage imageNamed:@"forward_dark"]];
[o_fwd_btn setAlternateImage: [NSImage imageNamed:@"forward-pressed_dark"]];
[o_stop_btn setImage: [NSImage imageNamed:@"stop_dark"]];
[o_stop_btn setAlternateImage: [NSImage imageNamed:@"stop-pressed_dark"]];
[o_playlist_btn setImage: [NSImage imageNamed:@"playlist_dark"]];
[o_playlist_btn setAlternateImage: [NSImage imageNamed:@"playlist-pressed_dark"]];
o_repeat_img = [[NSImage imageNamed:@"repeat_dark"] retain];
o_repeat_pressed_img = [[NSImage imageNamed:@"repeat-pressed_dark"] retain];
o_repeat_all_img = [[NSImage imageNamed:@"repeat-all-blue_dark"] retain];
o_repeat_all_pressed_img = [[NSImage imageNamed:@"repeat-all-blue-pressed_dark"] retain];
o_repeat_one_img = [[NSImage imageNamed:@"repeat-one-blue_dark"] retain];
o_repeat_one_pressed_img = [[NSImage imageNamed:@"repeat-one-blue-pressed_dark"] retain];
o_shuffle_img = [[NSImage imageNamed:@"shuffle_dark"] retain];
o_shuffle_pressed_img = [[NSImage imageNamed:@"shuffle-pressed_dark"] retain];
o_shuffle_on_img = [[NSImage imageNamed:@"shuffle-blue_dark"] retain];
o_shuffle_on_pressed_img = [[NSImage imageNamed:@"shuffle-blue-pressed_dark"] retain];
[o_time_fld setTextColor: [NSColor colorWithCalibratedRed:229.0 green:229.0 blue:229.0 alpha:100.0]];
[o_time_sld_left_view setImage: [NSImage imageNamed:@"progression-track-wrapper-left_dark"]];
[o_time_sld_middle_view setImage: [NSImage imageNamed:@"progression-track-wrapper-middle_dark"]];
[o_time_sld_right_view setImage: [NSImage imageNamed:@"progression-track-wrapper-right_dark"]];
[o_volume_down_btn setImage: [NSImage imageNamed:@"volume-low_dark"]];
[o_volume_track_view setImage: [NSImage imageNamed:@"volume-slider-track_dark"]];
[o_volume_up_btn setImage: [NSImage imageNamed:@"volume-high_dark"]];
[o_effects_btn setImage: [NSImage imageNamed:@"effects-double-buttons_dark"]];
[o_effects_btn setAlternateImage: [NSImage imageNamed:@"effects-double-buttons-pressed_dark"]];
[o_fullscreen_btn setImage: [NSImage imageNamed:@"fullscreen-double-buttons_dark"]];
[o_fullscreen_btn setAlternateImage: [NSImage imageNamed:@"fullscreen-double-buttons-pressed_dark"]];
}
[o_repeat_btn setImage: o_repeat_img];
[o_repeat_btn setAlternateImage: o_repeat_pressed_img];
[o_shuffle_btn setImage: o_shuffle_img];
[o_shuffle_btn setAlternateImage: o_shuffle_pressed_img];
[o_play_btn setImage: o_play_img];
[o_play_btn setAlternateImage: o_play_pressed_img];
[o_video_view setFrame: [o_playlist_table frame]];
[self setDelegate: self];
[self setExcludedFromWindowsMenu: YES];
// Set that here as IB seems to be buggy
[self setContentMinSize:NSMakeSize(500., 200.)];
[self setTitle: _NS("VLC media player")];
[o_playlist_btn setEnabled:NO];
[self updateVolumeSlider];
}
#pragma mark -
#pragma mark Button Actions
- (IBAction)play:(id)sender
{
[[VLCCoreInteraction sharedInstance] play];
}
// TODO: we need more advanced handling for the next 2 actions to handling skipping as well
- (IBAction)bwd:(id)sender
{
[[VLCCoreInteraction sharedInstance] previous];
}
- (IBAction)fwd:(id)sender
{
[[VLCCoreInteraction sharedInstance] next];
}
- (IBAction)stop:(id)sender
{
[[VLCCoreInteraction sharedInstance] stop];
}
- (IBAction)togglePlaylist:(id)sender
{
NSLog( @"b_videoplayen %i", b_video_playback_enabled );
if (b_video_playback_enabled && [o_video_view isHidden]) {
[o_video_view setHidden: NO];
[o_playlist_table setHidden: YES];
}
else
{
[o_playlist_table setHidden: NO];
[o_video_view setHidden: YES];
}
}
- (IBAction)repeat:(id)sender
{
vlc_value_t looping,repeating;
intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = pl_Get( p_intf );
var_Get( p_playlist, "repeat", &repeating );
var_Get( p_playlist, "loop", &looping );
if( !repeating.b_bool && !looping.b_bool )
{
/* was: no repeating at all, switching to Repeat One */
[[VLCCoreInteraction sharedInstance] repeatOne];
[o_repeat_btn setImage: o_repeat_one_img];
[o_repeat_btn setAlternateImage: o_repeat_one_pressed_img];
}
else if( repeating.b_bool && !looping.b_bool )
{
/* was: Repeat One, switching to Repeat All */
[[VLCCoreInteraction sharedInstance] repeatAll];
[o_repeat_btn setImage: o_repeat_all_img];
[o_repeat_btn setAlternateImage: o_repeat_all_pressed_img];
}
else
{
/* was: Repeat All or bug in VLC, switching to Repeat Off */
[[VLCCoreInteraction sharedInstance] repeatOff];
[o_repeat_btn setImage: o_repeat_img];
[o_repeat_btn setAlternateImage: o_repeat_pressed_img];
}
}
- (IBAction)shuffle:(id)sender
{
[[VLCCoreInteraction sharedInstance] shuffle];
vlc_value_t val;
playlist_t *p_playlist = pl_Get( VLCIntf );
var_Get( p_playlist, "random", &val );
if(val.b_bool) {
[o_shuffle_btn setImage: o_shuffle_on_img];
[o_shuffle_btn setAlternateImage: o_shuffle_on_pressed_img];
}
else
{
[o_shuffle_btn setImage: o_shuffle_img];
[o_shuffle_btn setAlternateImage: o_shuffle_pressed_img];
}
}
- (IBAction)timeSliderAction:(id)sender
{
float f_updated;
input_thread_t * p_input;
switch( [[NSApp currentEvent] type] )
{
case NSLeftMouseUp:
case NSLeftMouseDown:
case NSLeftMouseDragged:
f_updated = [sender floatValue];
break;
default:
return;
}
p_input = pl_CurrentInput( VLCIntf );
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_time_sld setFloatValue: f_updated];
var_Get( p_input, "time", &time );
mtime_t dur = input_item_GetDuration( input_GetItem( p_input ) );
if( b_time_remaining && dur != -1 )
{
o_time = [NSString stringWithFormat: @"-%s", secstotimestr( psz_time, ((dur - time.i_time) / 1000000) )];
}
else
o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )];
[o_time_fld setStringValue: o_time];
[[[[VLCMain sharedInstance] controls] fspanel] setStreamPos: f_updated andTime: o_time];
vlc_object_release( p_input );
}
}
- (IBAction)timeFieldWasClicked:(id)sender
{
b_time_remaining = !b_time_remaining;
NSLog( @"b_time_remaining %i", b_time_remaining );
}
- (IBAction)volumeAction:(id)sender
{
if (sender == o_volume_sld)
[[VLCCoreInteraction sharedInstance] setVolume: [sender intValue]];
else if (sender == o_volume_down_btn)
[[VLCCoreInteraction sharedInstance] mute];
else
[[VLCCoreInteraction sharedInstance] setVolume: 400];
}
- (IBAction)effects:(id)sender
{
[[VLCMainMenu sharedInstance] showAudioEffects: sender];
}
- (IBAction)fullscreen:(id)sender
{
NSLog( @"fullscreen mode not yet implemented" );
[[VLCCoreInteraction sharedInstance] toggleFullscreen];
}
#pragma mark -
#pragma mark Update interface and respond to foreign events
- (void)updateTimeSlider
{
if ([o_time_sld isEnabled])
{
input_thread_t * p_input;
p_input = pl_CurrentInput( VLCIntf );
if( p_input )
{
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_time_sld setFloatValue: f_updated];
var_Get( p_input, "time", &time );
mtime_t dur = input_item_GetDuration( input_GetItem( p_input ) );
if( b_time_remaining && dur != -1 )
{
o_time = [NSString stringWithFormat: @"-%s", secstotimestr( psz_time, ((dur - time.i_time) / 1000000))];
}
else
o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )];
[o_time_fld setStringValue: o_time];
// [[[[VLCMain sharedInstance] controls] fspanel] setStreamPos: f_updated andTime: o_time];
}
}
}
- (void)updateVolumeSlider
{
audio_volume_t i_volume;
playlist_t * p_playlist = pl_Get( VLCIntf );
i_volume = aout_VolumeGet( p_playlist );
if( i_volume != i_lastShownVolume )
{
i_lastShownVolume = i_volume;
int i_volume_step = 0;
i_volume_step = config_GetInt( VLCIntf->p_libvlc, "volume-step" );
[o_volume_sld setFloatValue: (float)i_lastShownVolume / i_volume_step];
// [[[[VLCMain sharedInstance] controls] fspanel] setVolumeLevel: (float)i_lastShownVolume / i_volume_step];
}
}
- (void)updateWindow
{
bool b_input = false;
bool b_plmul = false;
bool b_control = false;
bool b_seekable = false;
bool b_chapters = false;
playlist_t * p_playlist = pl_Get( VLCIntf );
PL_LOCK;
b_plmul = playlist_CurrentSize( p_playlist ) > 1;
PL_UNLOCK;
input_thread_t * p_input = playlist_CurrentInput( p_playlist );
bool b_buffering = NO;
if( ( b_input = ( p_input != NULL ) ) )
{
/* seekable streams */
cachedInputState = input_GetState( p_input );
if ( cachedInputState == INIT_S || cachedInputState == OPENING_S )
b_buffering = YES;
/* seekable streams */
b_seekable = var_GetBool( p_input, "can-seek" );
/* check whether slow/fast motion is possible */
b_control = var_GetBool( p_input, "can-rate" );
/* chapters & titles */
//FIXME! b_chapters = p_input->stream.i_area_nb > 1;
vlc_object_release( p_input );
}
if( b_buffering )
{
[o_progress_bar startAnimation:self];
[o_progress_bar setIndeterminate:YES];
[o_progress_bar setHidden:NO];
} else {
[o_progress_bar stopAnimation:self];
[o_progress_bar setHidden:YES];
}
[o_stop_btn setEnabled: b_input];
[o_fwd_btn setEnabled: (b_seekable || b_plmul || b_chapters)];
[o_bwd_btn setEnabled: (b_seekable || b_plmul || b_chapters)];
[[VLCMainMenu sharedInstance] setRateControlsEnabled: b_control];
[o_time_sld setFloatValue: 0.0];
[o_time_sld setEnabled: b_seekable];
[o_time_fld setStringValue: @"00:00"];
[[[[VLCMain sharedInstance] controls] fspanel] setStreamPos: 0 andTime: @"00:00"];
[[[[VLCMain sharedInstance] controls] fspanel] setSeekable: b_seekable];
}
- (void)setPause
{
[o_play_btn setImage: o_pause_img];
[o_play_btn setAlternateImage: o_pause_pressed_img];
[o_play_btn setToolTip: _NS("Pause")];
}
- (void)setPlay
{
[o_play_btn setImage: o_play_img];
[o_play_btn setAlternateImage: o_play_pressed_img];
[o_play_btn setToolTip: _NS("Play")];
}
#pragma mark -
#pragma mark Video Output handling
- (id)videoView
{
return o_video_view;
}
- (void)setVideoplayEnabled:(BOOL)b_value
{
NSLog( @"setVideoplayEnabled:%i", b_value );
if (b_value) {
b_video_playback_enabled = YES;
[o_playlist_btn setEnabled: YES];
}
else
{
b_video_playback_enabled = NO;
[o_playlist_btn setEnabled: NO];
}
}
@end
\ No newline at end of file
......@@ -141,8 +141,6 @@
/* we don't want this window to be restored on relaunch */
if ([self respondsToSelector:@selector(setRestorable:)])
[self setRestorable:NO];
[self makeKeyAndOrderFront: self];
}
- (void)controlTintChanged
......
......@@ -30,6 +30,7 @@
#import "vout.h"
#import "misc.h"
#import "fspanel.h"
#import "MainWindow.h"
@interface VLCFSPanel ()
- (void)hideMouse;
......@@ -554,7 +555,7 @@
- (IBAction)fsTimeSliderUpdate:(id)sender
{
[[VLCMain sharedInstance] timesliderUpdate: sender];
[[VLCMainWindow sharedInstance] updateTimeSlider];
}
- (IBAction)fsVolumeSliderUpdate:(id)sender
......
......@@ -67,8 +67,8 @@ aout_instance_t *getAout(void);
struct intf_sys_t
{
/* special actions */
bool b_mute;
int i_play_status;
int i_old_play_status;
/* interface update */
bool b_intf_update;
......@@ -76,7 +76,6 @@ struct intf_sys_t
bool b_playmode_update;
bool b_current_title_update;
bool b_fullscreen_update;
bool b_volume_update;
bool b_intf_show;
/* menus handlers */
......@@ -93,7 +92,6 @@ struct intf_sys_t
*****************************************************************************/
@class AppleRemote;
@class VLCInformation;
@class VLCControllerWindow;
@class VLCEmbeddedWindow;
@class VLCControls;
@class VLCPlaylist;
......@@ -120,31 +118,7 @@ struct intf_sys_t
BOOL nib_coredialogs_loaded; /* CoreDialogs nibfile */
BOOL nib_bookmarks_loaded; /* Bookmarks nibfile */
IBOutlet VLCControllerWindow * o_window; /* main window */
IBOutlet id o_scrollfield; /* info field */
IBOutlet NSTextField * o_timefield; /* time field */
IBOutlet NSSlider * o_timeslider; /* time slider */
BOOL b_time_remaining; /* show remaining time or playtime ? */
IBOutlet VLCEmbeddedWindow * o_embedded_window; /* Embedded Vout Window */
float f_slider; /* slider value */
float f_slider_old; /* old slider val */
IBOutlet NSSlider * o_volumeslider; /* volume slider */
IBOutlet NSProgressIndicator * o_main_pgbar; /* playlist window progress bar */
IBOutlet NSButton * o_btn_prev; /* btn previous */
IBOutlet NSButton * o_btn_rewind; /* btn rewind */
IBOutlet NSButton * o_btn_play; /* btn play */
IBOutlet NSButton * o_btn_stop; /* btn stop */
IBOutlet NSButton * o_btn_ff; /* btn fast forward */
IBOutlet NSButton * o_btn_next; /* btn next */
IBOutlet NSButton * o_btn_fullscreen;/* btn fullscreen (embedded vout window) */
IBOutlet NSButton * o_btn_playlist; /* btn playlist */
IBOutlet NSButton * o_btn_audioEffects; /* AudioEffects btn */
NSImage * o_img_play; /* btn play img */
NSImage * o_img_pause; /* btn pause img */
NSImage * o_img_play_pressed; /* btn play img */
NSImage * o_img_pause_pressed; /* btn pause img */
IBOutlet id o_mainwindow; /* VLCMainWindow */
IBOutlet VLCControls * o_controls; /* VLCControls */
IBOutlet VLCPlaylist * o_playlist; /* VLCPlaylist */
......@@ -167,11 +141,8 @@ struct intf_sys_t
IBOutlet NSButton * o_crashrep_includeEmail_ckb;
IBOutlet NSTextField * o_crashrep_includeEmail_txt;
mtime_t i_end_scroll;
int i_lastShownVolume;
input_state_e cachedInputState;
mtime_t i_end_scroll;
/* the manage thread */
pthread_t manage_thread;
......@@ -204,14 +175,11 @@ struct intf_sys_t
- (id)simplePreferences;
- (id)preferences;
- (id)playlist;
- (BOOL)isPlaylistCollapsed;
- (id)info;
- (id)wizard;
- (id)embeddedList;
- (id)getVideoViewAtPositionX: (int *)pi_x Y: (int *)pi_y withWidth: (unsigned int*)pi_width andHeight: (unsigned int*)pi_height;
- (id)coreDialogProvider;
- (id)mainIntfPgbar;
- (id)controllerWindow;
- (id)eyeTVController;
- (id)appleRemoteController;
- (void)applicationWillTerminate:(NSNotification *)notification;
......@@ -229,14 +197,8 @@ struct intf_sys_t
- (void)manage;
- (void)manageIntf:(NSTimer *)o_timer;
- (void)setScrollField:(NSString *)o_string stopAfter:(int )timeout;
- (void)resetScrollField;
- (void)updateMessageDisplay;
- (void)playStatusUpdated:(int) i_status;
- (void)manageVolumeSlider;
- (IBAction)timesliderUpdate:(id)sender;
- (IBAction)timeFieldWasClicked:(id)sender;
- (IBAction)showController:(id)sender;
- (IBAction)crashReporterAction:(id)sender;
......
......@@ -41,6 +41,7 @@
#import "intf.h"
#import "MainMenu.h"
#import "MainWindow.h"
#import "fspanel.h"
#import "vout.h"
#import "prefs.h"
......@@ -129,6 +130,8 @@ int WindowOpen( vout_window_t *p_wnd, const vout_window_cfg_t *cfg )
return VLC_EGENERIC;
}
[[VLCMainWindow sharedInstance] setVideoplayEnabled:YES];
[[VLCMainWindow sharedInstance] togglePlaylist:nil];
p_wnd->control = WindowControl;
p_wnd->sys = (vout_window_sys_t *)VLCIntf;
return VLC_SUCCESS;
......@@ -150,6 +153,7 @@ static int WindowControl( vout_window_t *p_wnd, int i_query, va_list args )
void WindowClose( vout_window_t *p_wnd )
{
[[VLCMainWindow sharedInstance] setVideoplayEnabled:NO];
NSLog( @"Window Close" );
// tell the interface to get rid of the video, TODO
}
......@@ -227,6 +231,7 @@ static int PlaylistChanged( vlc_object_t *p_this, const char *psz_variable,
intf_thread_t * p_intf = VLCIntf;
if( p_intf && p_intf->p_sys )
{
NSLog( @"event from %s", psz_variable );
p_intf->p_sys->b_intf_update = true;
p_intf->p_sys->b_playlist_update = true;
p_intf->p_sys->b_playmode_update = true;
......@@ -394,9 +399,6 @@ static VLCMain *_o_sharedMainInstance = nil;
o_info = [[VLCInfo alloc] init];
o_mainmenu = [[VLCMainMenu alloc] init];
o_coreinteraction = [[VLCCoreInteraction alloc] init];
i_lastShownVolume = -1;
o_eyetv = [[VLCEyeTVController alloc] init];
/* announce our launch to a potential eyetv plugin */
......@@ -421,16 +423,9 @@ static VLCMain *_o_sharedMainInstance = nil;
vlc_value_t val;
var_Create( p_intf, "intf-change", VLC_VAR_BOOL );
[o_volumeslider setEnabled: YES];
[self manageVolumeSlider];
[o_window setDelegate: self];
[o_window setExcludedFromWindowsMenu: YES];
[o_msgs_panel setExcludedFromWindowsMenu: YES];
[o_msgs_panel setDelegate: self];
// Set that here as IB seems to be buggy
[o_window setContentMinSize:NSMakeSize(500., 200.)];
p_playlist = pl_Get( p_intf );
val.b_bool = false;
......@@ -457,10 +452,6 @@ static VLCMain *_o_sharedMainInstance = nil;
/* update the playmode stuff */
p_intf->p_sys->b_playmode_update = true;
/* take care of tint changes during runtime */
o_img_play = [NSImage imageNamed: @"play"];
o_img_pause = [NSImage imageNamed: @"pause"];
/* init Apple Remote support */
o_remote = [[AppleRemote alloc] init];
[o_remote setClickCountEnabledButtons: kRemoteButtonPlay];
......@@ -501,6 +492,8 @@ static VLCMain *_o_sharedMainInstance = nil;
[self _removeOldPreferences];
[o_mainwindow makeKeyAndOrderFront: self];
/* Handle sleep notification */
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(computerWillSleep:)
name:NSWorkspaceWillSleepNotification object:nil];
......@@ -512,21 +505,6 @@ static VLCMain *_o_sharedMainInstance = nil;
{
if( !p_intf ) return;
[o_window setTitle: _NS("VLC media player")];
[self setScrollField:_NS("VLC media player") stopAfter:-1];
/* button controls */
[o_btn_prev setToolTip: _NS("Previous")];
[o_btn_rewind setToolTip: _NS("Rewind")];
[o_btn_play setToolTip: _NS("Play")];
[o_btn_stop setToolTip: _NS("Stop")];
[o_btn_ff setToolTip: _NS("Fast Forward")];
[o_btn_next setToolTip: _NS("Next")];
[o_btn_fullscreen setToolTip: _NS("Fullscreen")];
[o_volumeslider setToolTip: _NS("Volume")];
[o_timeslider setToolTip: _NS("Position")];
[o_btn_playlist setToolTip: _NS("Playlist")];
/* messages panel */
[o_msgs_panel setTitle: _NS("Messages")];
[o_msgs_crashlog_btn setTitle: _NS("Open CrashLog...")];
......@@ -577,9 +555,6 @@ static VLCMain *_o_sharedMainInstance = nil;
[interfaceTimer release];
interfaceTimer = nil;
/* make sure that the current volume is saved */
config_PutInt( p_intf->p_libvlc, "volume", i_lastShownVolume );
/* unsubscribe from the interactive dialogues */
dialog_Unregister( p_intf );
var_DelCallback( p_intf, "dialog-error", DialogCallback, self );
......@@ -617,11 +592,6 @@ static VLCMain *_o_sharedMainInstance = nil;
[o_coredialogs release];
[o_eyetv release];
[o_img_pause_pressed release];
[o_img_play_pressed release];
[o_img_pause release];
[o_img_play release];
/* unsubscribe from libvlc's debug messages */
msg_Unsubscribe( p_intf->p_sys->p_sub );
......@@ -760,7 +730,7 @@ static VLCMain *_o_sharedMainInstance = nil;
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)hasVisibleWindows
{
if(!hasVisibleWindows)
[o_window makeKeyAndOrderFront:self];
[o_mainwindow makeKeyAndOrderFront:self];
return YES;
}
......@@ -1202,11 +1172,6 @@ unsigned int CocoaKeyToVLC( unichar i_key )
return nil;
}
- (BOOL)isPlaylistCollapsed
{
return ![o_btn_playlist state];
}
- (id)info
{
if(! nib_info_loaded )
......@@ -1233,7 +1198,7 @@ unsigned int CocoaKeyToVLC( unichar i_key )
- (id)getVideoViewAtPositionX: (int *)pi_x Y: (int *)pi_y withWidth: (unsigned int*)pi_width andHeight: (unsigned int*)pi_height
{
id videoView = [o_embedded_window videoView];
id videoView = [o_mainwindow videoView];
NSRect videoRect = [videoView frame];
int i_x = (int)videoRect.origin.x;
int i_y = (int)videoRect.origin.y;
......@@ -1263,21 +1228,6 @@ unsigned int CocoaKeyToVLC( unichar i_key )
return nil;
}
- (id)mainIntfPgbar
{
if( o_main_pgbar )
return o_main_pgbar;
return nil;
}
- (id)controllerWindow
{
if( o_window )
return o_window;
return nil;
}
- (id)eyeTVController
{
if( o_eyetv )
......@@ -1375,11 +1325,12 @@ static void manage_cleanup( void * args )
}
else if( cachedInputState != input_GetState( p_input ) )
{
cachedInputState = input_GetState( p_input );
p_intf->p_sys->b_intf_update = true;
}
/* Manage volume status */
[self manageVolumeSlider];
[o_mainwindow updateVolumeSlider];
msleep( INTF_IDLE_SLEEP );
......@@ -1393,20 +1344,6 @@ static void manage_cleanup( void * args )
pthread_cleanup_pop(1);
}
- (void)manageVolumeSlider
{
audio_volume_t i_volume;
playlist_t * p_playlist = pl_Get( p_intf );
i_volume = aout_VolumeGet( p_playlist );
if( i_volume != i_lastShownVolume )
{
i_lastShownVolume = i_volume;
p_intf->p_sys->b_volume_update = TRUE;
}
}
- (void)manageIntf:(NSTimer *)o_timer
{
vlc_value_t val;
......@@ -1420,91 +1357,11 @@ static void manage_cleanup( void * args )
p_intf->p_sys->b_intf_update = true;
p_intf->p_sys->b_input_update = false;
[o_mainmenu setupMenus]; /* Make sure input menu is up to date */
/* update our info-panel to reflect the new item, if we don't show
* the playlist or the selection is empty */
if( [self isPlaylistCollapsed] == YES )
{
playlist_t * p_playlist = pl_Get( p_intf );
PL_LOCK;
playlist_item_t * p_item = playlist_CurrentPlayingItem( p_playlist );
PL_UNLOCK;
if( p_item )
[[self info] updatePanelWithItem: p_item->p_input];
}
}
if( p_intf->p_sys->b_intf_update )
{
bool b_input = false;
bool b_plmul = false;
bool b_control = false;
bool b_seekable = false;
bool b_chapters = false;
playlist_t * p_playlist = pl_Get( p_intf );
PL_LOCK;
b_plmul = playlist_CurrentSize( p_playlist ) > 1;
PL_UNLOCK;
p_input = playlist_CurrentInput( p_playlist );
bool b_buffering = NO;
if( ( b_input = ( p_input != NULL ) ) )
{
/* seekable streams */
cachedInputState = input_GetState( p_input );
if ( cachedInputState == INIT_S ||
cachedInputState == OPENING_S )
{
b_buffering = YES;
}
/* seekable streams */
b_seekable = var_GetBool( p_input, "can-seek" );
/* check whether slow/fast motion is possible */
b_control = var_GetBool( p_input, "can-rate" );
/* chapters & titles */
//b_chapters = p_input->stream.i_area_nb > 1;
vlc_object_release( p_input );
}
if( b_buffering )
{
[o_main_pgbar startAnimation:self];
[o_main_pgbar setIndeterminate:YES];
[o_main_pgbar setHidden:NO];
}
else
{
[o_main_pgbar stopAnimation:self];
[o_main_pgbar setHidden:YES];
}
[o_btn_stop setEnabled: b_input];
[o_embedded_window setStop: b_input];
[o_btn_ff setEnabled: b_seekable];
[o_btn_rewind setEnabled: b_seekable];
[o_btn_prev setEnabled: (b_plmul || b_chapters)];
[o_embedded_window setPrev: (b_plmul || b_chapters)];
[o_btn_next setEnabled: (b_plmul || b_chapters)];
[o_embedded_window setNext: (b_plmul || b_chapters)];
[o_mainmenu setRateControlsEnabled: b_control];
[o_timeslider setFloatValue: 0.0];
[o_timeslider setEnabled: b_seekable];
[o_timefield setStringValue: @"00:00"];
[[[self controls] fspanel] setStreamPos: 0 andTime: @"00:00"];
[[[self controls] fspanel] setSeekable: b_seekable];
[o_embedded_window setSeekable: b_seekable];
[o_embedded_window setTime:@"00:00" position:0.0];
[o_mainwindow updateWindow];
p_intf->p_sys->b_current_title_update = true;
p_intf->p_sys->b_intf_update = false;
}
......@@ -1529,7 +1386,7 @@ static void manage_cleanup( void * args )
if( [[o_coreinteraction voutView] isFullscreen] && config_GetInt( VLCIntf, "macosx-fspanel" ) )
[[o_controls fspanel] fadeIn];
else
[o_window makeKeyAndOrderFront: self];
[o_mainwindow makeKeyAndOrderFront: self];
p_intf->p_sys->b_intf_show = false;
}
......@@ -1552,7 +1409,7 @@ static void manage_cleanup( void * args )
free(name);
[self setScrollField: aString stopAfter:-1];
[o_mainwindow setTitle: aString];
[[[self controls] fspanel] setStreamTitle: aString];
[[o_coreinteraction voutView] updateTitle];
......@@ -1562,33 +1419,7 @@ static void manage_cleanup( void * args )
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 );
mtime_t dur = input_item_GetDuration( input_GetItem( p_input ) );
if( b_time_remaining && dur != -1 )
{
o_time = [NSString stringWithFormat: @"-%s", secstotimestr( psz_time, ((dur - time.i_time) / 1000000))];
}
else
o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )];
[o_timefield setStringValue: o_time];
[[[self controls] fspanel] setStreamPos: f_updated andTime: o_time];
[o_embedded_window setTime: o_time position: f_updated];
}
[o_mainwindow updateTimeSlider];
/* Manage Playing status */
var_Get( p_input, "state", &val );
......@@ -1596,7 +1427,6 @@ static void manage_cleanup( void * args )
{
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 );
}
......@@ -1607,34 +1437,16 @@ static void manage_cleanup( void * args )
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];
[o_mainmenu 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];
[o_embedded_window setVolumeSlider: (float)i_lastShownVolume / i_volume_step];
[o_embedded_window setVolumeEnabled: TRUE];
[[[self controls] fspanel] setVolumeLevel: (float)i_lastShownVolume / i_volume_step];
p_intf->p_sys->b_mute = ( i_lastShownVolume == 0 );
p_intf->p_sys->b_volume_update = FALSE;
if (p_intf->p_sys->i_old_play_status != p_intf->p_sys->i_play_status)
{
[self playStatusUpdated: p_intf->p_sys->i_play_status];
[o_mainmenu setSubmenusEnabled: FALSE];
p_intf->p_sys->i_old_play_status = p_intf->p_sys->i_play_status;
}
}
end:
[self updateMessageDisplay];
if( ((i_end_scroll != -1) && (mdate() > i_end_scroll)) || !p_input )
[self resetScrollField];
[interfaceTimer autorelease];
interfaceTimer = [[NSTimer scheduledTimerWithTimeInterval: 0.3
......@@ -1645,116 +1457,26 @@ end:
#pragma mark -
#pragma mark Interface update
- (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];
[o_embedded_window setScrollString: o_string];
}
- (void)resetScrollField
{
playlist_t * p_playlist = pl_Get( 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;
PL_LOCK;
playlist_item_t * p_item = playlist_CurrentPlayingItem( p_playlist );
if( input_item_GetNowPlaying( p_item->p_input ) )
o_temp = [NSString stringWithUTF8String:input_item_GetNowPlaying( p_item->p_input )];
else
o_temp = [NSString stringWithUTF8String:p_item->p_input->psz_name];
PL_UNLOCK;
[self setScrollField: o_temp stopAfter:-1];
[[[self controls] fspanel] setStreamTitle: o_temp];
vlc_object_release( p_input );
return;
}
[self setScrollField: _NS("VLC media player") stopAfter:-1];
}
- (void)playStatusUpdated:(int)i_status
{
if( i_status == PLAYING_S )
{
[[[self controls] fspanel] setPause];
[[self mainMenu] setPause];
[o_btn_play setImage: o_img_pause];
[o_btn_play setAlternateImage: o_img_pause_pressed];
[o_btn_play setToolTip: _NS("Pause")];
[o_mainwindow setPause];
}
else
{
[[[self controls] fspanel] setPlay];
[[self mainMenu] setPlay];
[o_btn_play setImage: o_img_play];
[o_btn_play setAlternateImage: o_img_play_pressed];
[o_btn_play setToolTip: _NS("Play")];
}
}
- (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;
[o_mainwindow setPlay];
}
p_playlist = pl_Get( 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 );
mtime_t dur = input_item_GetDuration( input_GetItem( p_input ) );
if( b_time_remaining && dur != -1 )
{
o_time = [NSString stringWithFormat: @"-%s", secstotimestr( psz_time, ((dur - time.i_time) / 1000000) )];
}
else
o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )];
[o_timefield setStringValue: o_time];
[[[self controls] fspanel] setStreamPos: f_updated andTime: o_time];
[o_embedded_window setTime: o_time position: f_updated];
vlc_object_release( p_input );
}
}
- (IBAction)timeFieldWasClicked:(id)sender
{
b_time_remaining = !b_time_remaining;
}
- (IBAction)showController:(id)sender
{
//FIXME: temporary hack until we have VLCMainWindow
[o_window makeKeyAndOrderFront:sender];
//FIXME: why is this function here?!
[o_mainwindow makeKeyAndOrderFront:sender];
}
#pragma mark -
......
......@@ -88,17 +88,6 @@
@end
/*****************************************************************************
* VLCControllerWindow
*****************************************************************************/
@interface VLCControllerWindow : NSWindow
{
}
@end
/*****************************************************************************
* VLCControllerView
*****************************************************************************/
......
......@@ -26,6 +26,7 @@
#import <Carbon/Carbon.h>
#import "intf.h" /* VLCApplication */
#import "MainWindow.h"
#import "misc.h"
#import "playlist.h"
#import "controls.h"
......@@ -403,62 +404,6 @@ static NSMutableArray *blackoutWindows = NULL;
}
@end
/*****************************************************************************
* VLCControllerWindow
*****************************************************************************/
@implementation VLCControllerWindow
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask
backing:(NSBackingStoreType)backingType defer:(BOOL)flag
{
/* FIXME: this should enable the SnowLeopard window style, however, it leads to ugly artifacts
* needs some further investigation! -- feepk
BOOL b_useTextured = YES;
if( [[NSWindow class] instancesRespondToSelector:@selector(setContentBorderThickness:forEdge:)] )
{
b_useTextured = NO;
styleMask ^= NSTexturedBackgroundWindowMask;
} */
self = [super initWithContentRect:contentRect styleMask:styleMask //& ~NSTitledWindowMask
backing:backingType defer:flag];
[[VLCMain sharedInstance] updateTogglePlaylistState];
/* FIXME: see above...
if(! b_useTextured )
{
[self setContentBorderThickness:28.0 forEdge:NSMinYEdge];
}
*/
/* we want to be moveable regardless of our style */
[self setMovableByWindowBackground: YES];
/* we don't want this window to be restored on relaunch */
if ([self respondsToSelector:@selector(setRestorable:)])
[self setRestorable:NO];
return self;
}
- (BOOL)performKeyEquivalent:(NSEvent *)o_event
{
/* We indeed want to prioritize Cocoa key equivalent against libvlc,
so we perform the menu equivalent now. */
if([[NSApp mainMenu] performKeyEquivalent:o_event])
return TRUE;
return [[VLCMain sharedInstance] hasDefinedShortcutKey:o_event] ||
[(VLCControls *)[[VLCMain sharedInstance] controls] keyEvent:o_event];
}
@end
/*****************************************************************************
* VLCControllerView
*****************************************************************************/
......@@ -771,6 +716,6 @@ void _drawFrameInRect(NSRect frameRect)
if( [ourEvent clickCount] > 1 )
[[[VLCMain sharedInstance] controls] goToSpecificTime: nil];
else
[[VLCMain sharedInstance] timeFieldWasClicked: self];
[[VLCMainWindow sharedInstance] timeFieldWasClicked: self];
}
@end
......@@ -569,11 +569,8 @@
free( psz_uri );
}
if( [[VLCMain sharedInstance] isPlaylistCollapsed] == NO )
{
/* update our info-panel to reflect the new item, if we aren't collapsed */
[[[VLCMain sharedInstance] info] updatePanelWithItem:p_item->p_input];
}
/* update our info-panel to reflect the new item */
[[[VLCMain sharedInstance] info] updatePanelWithItem:p_item->p_input];
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment