Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
87fe9845
Commit
87fe9845
authored
Jan 09, 2008
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MacOSX/VLC_app: port the fullscreen zoom and the fspanel from gui/macosx to VLC_app.
parent
ff7830bb
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
2741 additions
and
732 deletions
+2741
-732
extras/MacOSX/VLC_app/English.lproj/MainWindow.xib
extras/MacOSX/VLC_app/English.lproj/MainWindow.xib
+1589
-719
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.h
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.h
+77
-1
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.m
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.m
+204
-0
extras/MacOSX/VLC_app/Sources/VLCAppBindings.m
extras/MacOSX/VLC_app/Sources/VLCAppBindings.m
+29
-0
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.h
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.h
+7
-0
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.m
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.m
+330
-5
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.h
...as/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.h
+57
-0
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.m
...as/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.m
+288
-0
extras/MacOSX/VLC_app/Sources/VLCMainWindow.h
extras/MacOSX/VLC_app/Sources/VLCMainWindow.h
+3
-1
extras/MacOSX/VLC_app/Sources/VLCMainWindow.m
extras/MacOSX/VLC_app/Sources/VLCMainWindow.m
+7
-2
extras/MacOSX/VLC_app/VLC.xcodeproj/project.pbxproj
extras/MacOSX/VLC_app/VLC.xcodeproj/project.pbxproj
+150
-4
No files found.
extras/MacOSX/VLC_app/English.lproj/MainWindow.xib
View file @
87fe9845
This source diff could not be displayed because it is too large. You can
view the blob
instead.
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.h
View file @
87fe9845
...
...
@@ -6,6 +6,8 @@
* $Id$
*
* Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
* Felix Kühne <fkuehne at videolan dot org>
* Jérôme Decoodt <djc at videolan dot 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
...
...
@@ -24,20 +26,33 @@
#import <Cocoa/Cocoa.h>
/*****************************************************************************
* NSIndexPath (VLCAppAddition)
*****************************************************************************/
@interface
NSIndexPath
(
VLCAppAddition
)
-
(
NSIndexPath
*
)
indexPathByRemovingFirstIndex
;
-
(
NSUInteger
)
lastIndex
;
@end
/*****************************************************************************
* NSArray (VLCAppAddition)
*****************************************************************************/
@interface
NSArray
(
VLCAppAddition
)
-
(
id
)
objectAtIndexPath
:(
NSIndexPath
*
)
path
withNodeKeyPath
:(
NSString
*
)
nodeKeyPath
;
@end
/*****************************************************************************
* NSView (VLCAppAdditions)
*****************************************************************************/
@interface
NSView
(
VLCAppAdditions
)
-
(
void
)
moveSubviewsToVisible
;
@end
/* Split view that supports slider animation */
/*****************************************************************************
* VLCOneSplitView
*
* Missing functionality to a one-split view
*****************************************************************************/
@interface
VLCOneSplitView
:
NSSplitView
{
BOOL
fixedCursorDuringResize
;
...
...
@@ -46,3 +61,64 @@
-
(
float
)
sliderPosition
;
-
(
void
)
setSliderPosition
:(
float
)
newPosition
;
@end
/*****************************************************************************
* NSScreen (VLCAdditions)
*
* Missing extension to NSScreen
*****************************************************************************/
@interface
NSScreen
(
VLCAdditions
)
+
(
NSScreen
*
)
screenWithDisplayID
:
(
CGDirectDisplayID
)
displayID
;
-
(
BOOL
)
isMainScreen
;
-
(
BOOL
)
isScreen
:
(
NSScreen
*
)
screen
;
-
(
CGDirectDisplayID
)
displayID
;
-
(
void
)
blackoutOtherScreens
;
+
(
void
)
unblackoutScreens
;
@end
/*****************************************************************************
* VLCWindow
*
* Missing extension to NSWindow (Used only when needing setCanBecomeKeyWindow)
*****************************************************************************/
@interface
VLCWindow
:
NSWindow
{
BOOL
canBecomeKeyWindow
;
BOOL
isset_canBecomeKeyWindow
;
}
-
(
void
)
setCanBecomeKeyWindow
:
(
BOOL
)
canBecomeKey
;
@end
/*****************************************************************************
* VLCImageCustomizedSlider
*
* Slider personalized by backgroundImage and knobImage
*****************************************************************************/
@interface
VLCImageCustomizedSlider
:
NSSlider
{
NSImage
*
knobImage
;
NSImage
*
backgroundImage
;
}
@property
(
retain
)
NSImage
*
knobImage
;
@property
(
retain
)
NSImage
*
backgroundImage
;
-
(
void
)
drawKnobInRect
:
(
NSRect
)
knobRect
;
-
(
void
)
drawBackgroundInRect
:
(
NSRect
)
knobRect
;
-
(
void
)
drawRect
:
(
NSRect
)
rect
;
@end
/*****************************************************************************
* NSImageView (VLCAppAdditions)
*
* Make the image view move the window by mouse down by default
*****************************************************************************/
@interface
NSImageView
(
VLCAppAdditions
)
-
(
void
)
mouseDownCanMoveWindow
;
@end
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.m
View file @
87fe9845
...
...
@@ -6,6 +6,8 @@
* $Id$
*
* Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
* Felix Kühne <fkuehne at videolan dot org>
* Jérôme Decoodt <djc at videolan dot 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
...
...
@@ -123,3 +125,205 @@
}
@end
/*****************************************************************************
* NSScreen (VLCAdditions)
*
* Missing extension to NSScreen
*****************************************************************************/
@implementation
NSScreen
(
VLCAdditions
)
static
NSMutableArray
*
blackoutWindows
=
NULL
;
+
(
void
)
load
{
/* init our fake object attribute */
blackoutWindows
=
[[
NSMutableArray
alloc
]
initWithCapacity
:
1
];
}
+
(
NSScreen
*
)
screenWithDisplayID
:
(
CGDirectDisplayID
)
displayID
{
int
i
;
for
(
i
=
0
;
i
<
[[
NSScreen
screens
]
count
];
i
++
)
{
NSScreen
*
screen
=
[[
NSScreen
screens
]
objectAtIndex
:
i
];
if
([
screen
displayID
]
==
displayID
)
return
screen
;
}
return
nil
;
}
-
(
BOOL
)
isMainScreen
{
return
([
self
displayID
]
==
[[[
NSScreen
screens
]
objectAtIndex
:
0
]
displayID
]);
}
-
(
BOOL
)
isScreen
:
(
NSScreen
*
)
screen
{
return
([
self
displayID
]
==
[
screen
displayID
]);
}
-
(
CGDirectDisplayID
)
displayID
{
return
(
CGDirectDisplayID
)
_screenNumber
;
}
-
(
void
)
blackoutOtherScreens
{
unsigned
int
i
;
/* Free our previous blackout window (follow blackoutWindow alloc strategy) */
[
blackoutWindows
makeObjectsPerformSelector
:
@selector
(
close
)];
[
blackoutWindows
removeAllObjects
];
for
(
i
=
0
;
i
<
[[
NSScreen
screens
]
count
];
i
++
)
{
NSScreen
*
screen
=
[[
NSScreen
screens
]
objectAtIndex
:
i
];
VLCWindow
*
blackoutWindow
;
NSRect
screen_rect
;
if
([
self
isScreen
:
screen
])
continue
;
screen_rect
=
[
screen
frame
];
screen_rect
.
origin
.
x
=
screen_rect
.
origin
.
y
=
0
.
0
f
;
/* blackoutWindow alloc strategy
- The NSMutableArray blackoutWindows has the blackoutWindow references
- blackoutOtherDisplays is responsible for alloc/releasing its Windows
*/
blackoutWindow
=
[[
VLCWindow
alloc
]
initWithContentRect
:
screen_rect
styleMask
:
NSBorderlessWindowMask
backing:
NSBackingStoreBuffered
defer
:
NO
screen
:
screen
];
[
blackoutWindow
setBackgroundColor
:[
NSColor
blackColor
]];
[
blackoutWindow
setLevel
:
NSFloatingWindowLevel
];
/* Disappear when Expose is triggered */
[
blackoutWindow
orderFront
:
self
];
[
blackoutWindows
addObject
:
blackoutWindow
];
[
blackoutWindow
release
];
}
}
+
(
void
)
unblackoutScreens
{
unsigned
int
i
;
for
(
i
=
0
;
i
<
[
blackoutWindows
count
];
i
++
)
{
VLCWindow
*
blackoutWindow
=
[
blackoutWindows
objectAtIndex
:
i
];
[
blackoutWindow
close
];
}
}
@end
/*****************************************************************************
* VLCWindow
*
* Missing extension to NSWindow
*****************************************************************************/
@implementation
VLCWindow
-
(
id
)
initWithContentRect
:(
NSRect
)
contentRect
styleMask
:(
unsigned
int
)
styleMask
backing
:(
NSBackingStoreType
)
backingType
defer
:(
BOOL
)
flag
{
self
=
[
super
initWithContentRect
:
contentRect
styleMask
:
styleMask
backing
:
backingType
defer
:
flag
];
if
(
self
)
isset_canBecomeKeyWindow
=
NO
;
return
self
;
}
-
(
void
)
setCanBecomeKeyWindow
:
(
BOOL
)
canBecomeKey
{
isset_canBecomeKeyWindow
=
YES
;
canBecomeKeyWindow
=
canBecomeKey
;
}
-
(
BOOL
)
canBecomeKeyWindow
{
if
(
isset_canBecomeKeyWindow
)
return
canBecomeKeyWindow
;
return
[
super
canBecomeKeyWindow
];
}
@end
/*****************************************************************************
* VLCImageCustomizedSlider
*
* Slider personalized by backgroundImage and knobImage
*****************************************************************************/
@implementation
VLCImageCustomizedSlider
@synthesize
backgroundImage
;
@synthesize
knobImage
;
-
(
id
)
initWithFrame
:(
NSRect
)
frame
{
if
(
self
=
[
super
initWithFrame
:
frame
])
{
knobImage
=
nil
;
backgroundImage
=
nil
;
}
return
self
;
}
-
(
void
)
dealloc
{
[
knobImage
release
];
[
knobImage
release
];
[
super
dealloc
];
}
-
(
void
)
drawKnobInRect
:(
NSRect
)
knobRect
{
NSRect
imageRect
;
imageRect
.
size
=
[
self
.
knobImage
size
];
imageRect
.
origin
.
x
=
0
;
imageRect
.
origin
.
y
=
0
;
knobRect
.
origin
.
x
+=
(
knobRect
.
size
.
width
-
imageRect
.
size
.
width
)
/
2
;
knobRect
.
origin
.
y
+=
(
knobRect
.
size
.
width
-
imageRect
.
size
.
width
)
/
2
;
knobRect
.
size
.
width
=
imageRect
.
size
.
width
;
knobRect
.
size
.
height
=
imageRect
.
size
.
height
;
[
self
.
knobImage
drawInRect
:
knobRect
fromRect
:
imageRect
operation
:
NSCompositeSourceOver
fraction
:
1
];
}
-
(
void
)
drawBackgroundInRect
:(
NSRect
)
drawRect
{
NSRect
imageRect
=
drawRect
;
imageRect
.
origin
.
y
+=
([
self
.
backgroundImage
size
].
height
-
[
self
bounds
].
size
.
height
)
/
2
;
[
self
.
backgroundImage
drawInRect
:
drawRect
fromRect
:
imageRect
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
];
if
(
self
.
backgroundImage
)
[
self
drawBackgroundInRect
:
rect
];
if
(
self
.
knobImage
)
{
NSRect
knobRect
=
[[
self
cell
]
knobRectFlipped
:
NO
];
[[[
NSColor
blackColor
]
colorWithAlphaComponent
:
0
.
6
]
set
];
[
self
drawKnobInRect
:
knobRect
];
}
}
@end
/*****************************************************************************
* NSImageView (VLCAppAdditions)
*
* Make the image view move the window by mouse down by default
*****************************************************************************/
@implementation
NSImageView
(
VLCAppAdditions
)
-
(
void
)
mouseDownCanMoveWindow
{
return
YES
;
}
@end
extras/MacOSX/VLC_app/Sources/VLCAppBindings.m
View file @
87fe9845
...
...
@@ -201,6 +201,14 @@
{
return
[
NSSet
setWithObjects
:
@"state"
,
@"playing"
,
@"canPause"
,
nil
];
}
+
(
NSSet
*
)
keyPathsForValuesAffectingStateAsFullScreenButtonImage
{
return
[
NSSet
setWithObjects
:
@"state"
,
@"playing"
,
@"canPause"
,
nil
];
}
+
(
NSSet
*
)
keyPathsForValuesAffectingStateAsFullScreenButtonAlternateImage
{
return
[
NSSet
setWithObjects
:
@"state"
,
@"playing"
,
@"canPause"
,
nil
];
}
-
(
NSString
*
)
description
{
...
...
@@ -229,4 +237,25 @@
else
return
[
NSImage
imageNamed
:
@"play_blue.png"
];
}
-
(
NSImage
*
)
stateAsFullScreenButtonImage
{
if
([
self
state
]
==
VLCMediaPlayerStatePlaying
&&
[
self
canPause
])
return
[
NSImage
imageNamed
:
@"fs_pause.png"
];
else
if
(
[
self
state
]
==
VLCMediaPlayerStatePlaying
)
return
[
NSImage
imageNamed
:
@"fs_stop.png"
];
else
return
[
NSImage
imageNamed
:
@"fs_play.png"
];
}
-
(
NSImage
*
)
stateAsFullScreenButtonAlternateImage
{
if
([
self
state
]
==
VLCMediaPlayerStatePlaying
&&
[
self
canPause
])
return
[
NSImage
imageNamed
:
@"fs_pause_highlight.png"
];
else
if
(
[
self
state
]
==
VLCMediaPlayerStatePlaying
)
return
[
NSImage
imageNamed
:
@"fs_stop_highlight.png"
];
else
return
[
NSImage
imageNamed
:
@"fs_play_highlight.png"
];
}
@end
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.h
View file @
87fe9845
...
...
@@ -25,6 +25,7 @@
#import <QuartzCore/QuartzCore.h>
#import <VLCKit/VLCKit.h>
#import "VLCAppAdditions.h"
@interface
VLCBrowsableVideoView
:
VLCVideoView
{
BOOL
menuDisplayed
;
...
...
@@ -43,6 +44,12 @@
/* Actions on non-node items*/
id
target
;
SEL
action
;
/* FullScreenTransition */
VLCWindow
*
fullScreenWindow
;
NSViewAnimation
*
fullScreenAnim1
;
NSViewAnimation
*
fullScreenAnim2
;
NSView
*
tempFullScreenView
;
}
/* Binds an nsarray to that property. But don't forget the set the access keys. */
...
...
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.m
View file @
87fe9845
/*****************************************************************************
* VLCBrowsableVideoView.h: VideoView subclasses that allow full
s
creen
* VLCBrowsableVideoView.h: VideoView subclasses that allow full
S
creen
* browsing
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
...
...
@@ -23,6 +23,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/* DisableScreenUpdates, SetSystemUIMode, ... */
#import <QuickTime/QuickTime.h>
#import "VLCBrowsableVideoView.h"
#import "VLCAppAdditions.h"
...
...
@@ -47,6 +50,16 @@
@end
@interface
VLCBrowsableVideoView
(
FullScreenTransition
)
-
(
void
)
hasEndedFullScreen
;
-
(
void
)
hasBecomeFullScreen
;
-
(
void
)
enterFullScreen
:(
NSScreen
*
)
screen
;
-
(
void
)
leaveFullScreen
;
-
(
void
)
leaveFullScreenAndFadeOut
:
(
BOOL
)
fadeout
;
@end
/******************************************************************************
* VLCBrowsableVideoView
*/
...
...
@@ -72,7 +85,7 @@
-
(
BOOL
)
fullScreen
{
return
[
s
uper
isInFullScreenMode
];
return
[
s
elf
isInFullScreenMode
];
}
-
(
void
)
setFullScreen
:(
BOOL
)
newFullScreen
...
...
@@ -82,11 +95,13 @@
if
(
newFullScreen
)
{
[
super
enterFullScreenMode
:[[
self
window
]
screen
]
withOptions
:
nil
];
[
self
enterFullScreenMode
:[[
self
window
]
screen
]
withOptions
:
[
NSDictionary
dictionaryWithObject
:
[
NSNumber
numberWithInt
:
1
]
forKey:
NSFullScreenModeWindowLevel
]];
}
else
{
[
s
uper
exitFullScreenModeWithOptions
:
nil
];
[
s
elf
exitFullScreenModeWithOptions
:
nil
];
}
}
...
...
@@ -101,11 +116,20 @@
selectionLayer
=
backLayer
=
nil
;
menuLayer
=
nil
;
selectedPath
=
[[
NSIndexPath
alloc
]
init
];
tempFullScreenView
=
[[
NSView
alloc
]
init
];
fullScreen
=
NO
;
/* Observe our bindings */
//[self displayMenu];
//[self changeSelectedIndex:0];
}
-
(
void
)
dealloc
{
[
tempFullScreenView
release
];
[
selectedPath
release
];
[
super
dealloc
];
}
/* Hiding/Displaying the menu */
-
(
void
)
hideMenu
...
...
@@ -206,6 +230,23 @@
[
super
keyDown
:
theEvent
];
}
-
(
void
)
enterFullScreenMode
:(
NSScreen
*
)
screen
withOptions
:(
NSDictionary
*
)
options
{
[
self
enterFullScreen
:
screen
];
}
-
(
void
)
exitFullScreenModeWithOptions
:(
NSDictionary
*
)
options
{
[
self
leaveFullScreen
];
}
-
(
BOOL
)
isInFullScreenMode
{
return
fullScreen
;
}
@end
/******************************************************************************
...
...
@@ -430,4 +471,288 @@
menuLayer
=
layer
;
selectionLayer
=
nil
;
}
@end
\ No newline at end of file
@end
@implementation
VLCBrowsableVideoView
(
FullScreenTransition
)
-
(
void
)
enterFullScreen
:(
NSScreen
*
)
screen
{
NSMutableDictionary
*
dict1
,
*
dict2
;
NSRect
screenRect
;
NSRect
aRect
;
screenRect
=
[
screen
frame
];
[
NSCursor
setHiddenUntilMouseMoves
:
YES
];
/* Only create the o_fullScreen_window if we are not in the middle of the zooming animation */
if
(
!
fullScreenWindow
)
{
/* We can't change the styleMask of an already created NSWindow, so we create an other window, and do eye catching stuff */
aRect
=
[[
self
superview
]
convertRect
:
[
self
frame
]
toView
:
nil
];
/* Convert to Window base coord */
aRect
.
origin
.
x
+=
[[
self
window
]
frame
].
origin
.
x
;
aRect
.
origin
.
y
+=
[[
self
window
]
frame
].
origin
.
y
;
fullScreenWindow
=
[[
VLCWindow
alloc
]
initWithContentRect
:
aRect
styleMask
:
NSBorderlessWindowMask
backing
:
NSBackingStoreBuffered
defer
:
YES
];
[
fullScreenWindow
setBackgroundColor
:
[
NSColor
blackColor
]];
[
fullScreenWindow
setCanBecomeKeyWindow
:
YES
];
if
(
!
[[
self
window
]
isVisible
]
||
[[
self
window
]
alphaValue
]
==
0
.
0
||
[
self
isHiddenOrHasHiddenAncestor
]
)
{
/* We don't animate if we are not visible or if we are running on
* Mac OS X <10.4 which doesn't support NSAnimation, instead we
* simply fade the display */
CGDisplayFadeReservationToken
token
;
[
fullScreenWindow
setFrame
:
screenRect
display
:
NO
];
CGAcquireDisplayFadeReservation
(
kCGMaxDisplayReservationInterval
,
&
token
);
CGDisplayFade
(
token
,
0
.
3
,
kCGDisplayBlendNormal
,
kCGDisplayBlendSolidColor
,
0
,
0
,
0
,
YES
);
if
([
screen
isMainScreen
])
SetSystemUIMode
(
kUIModeAllHidden
,
kUIOptionAutoShowMenuBar
);
[
self
retain
];
[[
self
superview
]
replaceSubview
:
self
with
:
tempFullScreenView
];
[
tempFullScreenView
setFrame
:[
self
frame
]];
[
fullScreenWindow
setContentView
:
self
];
[
fullScreenWindow
makeKeyAndOrderFront
:
self
];
[
self
release
];
[[
tempFullScreenView
window
]
orderOut
:
self
];
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGReleaseDisplayFadeReservation
(
token
);
[
self
hasBecomeFullScreen
];
return
;
}
/* Make sure we don't see the o_view disappearing of the screen during this operation */
DisableScreenUpdates
();
[
self
retain
];
/* Removing from a view, make sure we won't be released */
/* Make sure our layer won't disappear */
CALayer
*
layer
=
[[
self
layer
]
retain
];
id
alayoutManager
=
layer
.
layoutManager
;
[[
self
superview
]
replaceSubview
:
self
with
:
tempFullScreenView
];
[
tempFullScreenView
setFrame
:[
self
frame
]];
[
fullScreenWindow
setContentView
:
self
];
[
self
setWantsLayer
:
YES
];
[
self
setLayer
:
layer
];
layer
.
layoutManager
=
alayoutManager
;
[
fullScreenWindow
makeKeyAndOrderFront
:
self
];
EnableScreenUpdates
();
}
/* We are in fullScreen (and no animation is running) */
if
(
fullScreen
)
{
/* Make sure we are hidden */
[[
tempFullScreenView
window
]
orderOut
:
self
];
return
;
}
if
(
fullScreenAnim1
)
{
[
fullScreenAnim1
stopAnimation
];
[
fullScreenAnim1
release
];
}
if
(
fullScreenAnim2
)
{
[
fullScreenAnim2
stopAnimation
];
[
fullScreenAnim2
release
];
}
if
([
screen
isMainScreen
])
SetSystemUIMode
(
kUIModeAllHidden
,
kUIOptionAutoShowMenuBar
);
dict1
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
2
];
dict2
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
3
];
[
dict1
setObject
:[
tempFullScreenView
window
]
forKey
:
NSViewAnimationTargetKey
];
[
dict1
setObject
:
NSViewAnimationFadeOutEffect
forKey
:
NSViewAnimationEffectKey
];
[
dict2
setObject
:
fullScreenWindow
forKey
:
NSViewAnimationTargetKey
];
[
dict2
setObject
:[
NSValue
valueWithRect
:[
fullScreenWindow
frame
]]
forKey
:
NSViewAnimationStartFrameKey
];
[
dict2
setObject
:[
NSValue
valueWithRect
:
screenRect
]
forKey
:
NSViewAnimationEndFrameKey
];
/* Strategy with NSAnimation allocation:
- Keep at most 2 animation at a time
- leaveFullScreen/enterFullScreen are the only responsible for releasing and alloc-ing
*/
fullScreenAnim1
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict1
,
nil
]];
fullScreenAnim2
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict2
,
nil
]];
[
dict1
release
];
[
dict2
release
];
[
fullScreenAnim1
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim1
setDuration
:
0
.
3
];
[
fullScreenAnim1
setFrameRate
:
30
];
[
fullScreenAnim2
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim2
setDuration
:
0
.
3
];
[
fullScreenAnim2
setFrameRate
:
30
];
[
fullScreenAnim2
setDelegate
:
self
];
[
fullScreenAnim2
startWhenAnimation
:
fullScreenAnim1
reachesProgress
:
1
.
0
];
[
fullScreenAnim1
startAnimation
];
}
-
(
void
)
hasBecomeFullScreen
{
[
fullScreenWindow
makeFirstResponder
:
self
];
[
fullScreenWindow
makeKeyWindow
];
[
fullScreenWindow
setAcceptsMouseMovedEvents
:
TRUE
];
[[
tempFullScreenView
window
]
orderOut
:
self
];
[
self
willChangeValueForKey
:
@"fullScreen"
];
fullScreen
=
YES
;
[
self
didChangeValueForKey
:
@"fullScreen"
];
}
-
(
void
)
leaveFullScreen
{
[
self
leaveFullScreenAndFadeOut
:
NO
];
}
-
(
void
)
leaveFullScreenAndFadeOut
:
(
BOOL
)
fadeout
{
NSMutableDictionary
*
dict1
,
*
dict2
;
NSRect
frame
;
[
self
willChangeValueForKey
:
@"fullScreen"
];
fullScreen
=
NO
;
[
self
didChangeValueForKey
:
@"fullScreen"
];
/* Don't do anything if o_fullScreen_window is already closed */
if
(
!
fullScreenWindow
)
return
;
if
(
fadeout
||
[
tempFullScreenView
isHiddenOrHasHiddenAncestor
])
{
/* We don't animate if we are not visible or if we are running on
* Mac OS X <10.4 which doesn't support NSAnimation, instead we
* simply fade the display */
CGDisplayFadeReservationToken
token
;
CGAcquireDisplayFadeReservation
(
kCGMaxDisplayReservationInterval
,
&
token
);
CGDisplayFade
(
token
,
0
.
3
,
kCGDisplayBlendNormal
,
kCGDisplayBlendSolidColor
,
0
,
0
,
0
,
YES
);
SetSystemUIMode
(
kUIModeNormal
,
kUIOptionAutoShowMenuBar
);
[
self
hasEndedFullScreen
];
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGReleaseDisplayFadeReservation
(
token
);
return
;
}
[[
tempFullScreenView
window
]
setAlphaValue
:
0
.
0
];
[[
tempFullScreenView
window
]
orderFront
:
self
];
SetSystemUIMode
(
kUIModeNormal
,
kUIOptionAutoShowMenuBar
);
if
(
fullScreenAnim1
)
{
[
fullScreenAnim1
stopAnimation
];
[
fullScreenAnim1
release
];
}
if
(
fullScreenAnim2
)
{
[
fullScreenAnim2
stopAnimation
];
[
fullScreenAnim2
release
];
}
frame
=
[[
tempFullScreenView
superview
]
convertRect
:
[
tempFullScreenView
frame
]
toView
:
nil
];
/* Convert to Window base coord */
frame
.
origin
.
x
+=
[
tempFullScreenView
window
].
frame
.
origin
.
x
;
frame
.
origin
.
y
+=
[
tempFullScreenView
window
].
frame
.
origin
.
y
;
dict2
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
2
];
[
dict2
setObject
:[
tempFullScreenView
window
]
forKey
:
NSViewAnimationTargetKey
];
[
dict2
setObject
:
NSViewAnimationFadeInEffect
forKey
:
NSViewAnimationEffectKey
];
fullScreenAnim2
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict2
,
nil
]];
[
dict2
release
];
[
fullScreenAnim2
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim2
setDuration
:
0
.
3
];
[
fullScreenAnim2
setFrameRate
:
30
];
[
fullScreenAnim2
setDelegate
:
self
];
dict1
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
3
];
[
dict1
setObject
:
fullScreenWindow
forKey
:
NSViewAnimationTargetKey
];
[
dict1
setObject
:[
NSValue
valueWithRect
:[
fullScreenWindow
frame
]]
forKey
:
NSViewAnimationStartFrameKey
];
[
dict1
setObject
:[
NSValue
valueWithRect
:
frame
]
forKey
:
NSViewAnimationEndFrameKey
];
fullScreenAnim1
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict1
,
nil
]];
[
dict1
release
];
[
fullScreenAnim1
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim1
setDuration
:
0
.
2
];
[
fullScreenAnim1
setFrameRate
:
30
];
[
fullScreenAnim2
startWhenAnimation
:
fullScreenAnim1
reachesProgress
:
1
.
0
];
/* Make sure o_fullScreen_window is the frontmost window */
[
fullScreenWindow
orderFront
:
self
];
[
fullScreenAnim1
startAnimation
];
}
-
(
void
)
hasEndedFullScreen
{
/* This function is private and should be only triggered at the end of the fullScreen change animation */
/* Make sure we don't see the o_view disappearing of the screen during this operation */
DisableScreenUpdates
();
[
self
retain
];
/* Make sure we don't loose the layer */
CALayer
*
layer
=
[[
self
layer
]
retain
];
id
alayoutManager
=
layer
.
layoutManager
;
[
self
removeFromSuperviewWithoutNeedingDisplay
];
[[
tempFullScreenView
superview
]
replaceSubview
:
tempFullScreenView
with
:
self
];
[
self
release
];
[
self
setWantsLayer
:
YES
];
[
self
setLayer
:
layer
];
layer
.
layoutManager
=
alayoutManager
;
[
self
setFrame
:[
tempFullScreenView
frame
]];
[[
self
window
]
makeFirstResponder
:
self
];
if
([[
self
window
]
isVisible
])
[[
self
window
]
makeKeyAndOrderFront
:
self
];
[
fullScreenWindow
orderOut
:
self
];
EnableScreenUpdates
();
[
fullScreenWindow
release
];
fullScreenWindow
=
nil
;
}
-
(
void
)
animationDidEnd
:(
NSAnimation
*
)
animation
{
NSArray
*
viewAnimations
;
if
([
animation
currentValue
]
<
1
.
0
)
return
;
/* FullScreen ended or started (we are a delegate only for leaveFullScreen's/enterFullscren's anim2) */
viewAnimations
=
[
fullScreenAnim2
viewAnimations
];
if
([
viewAnimations
count
]
>=
1
&&
[[[
viewAnimations
objectAtIndex
:
0
]
objectForKey
:
NSViewAnimationEffectKey
]
isEqualToString
:
NSViewAnimationFadeInEffect
])
{
/* FullScreen ended */
[
self
hasEndedFullScreen
];
}
else
{
/* FullScreen started */
[
self
hasBecomeFullScreen
];
}
}
@end
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.h
0 → 100644
View file @
87fe9845
/*****************************************************************************
* VLCFullScreenControllerWindow.m: class that allow media controlling in
* fullscreen (with the mouse)
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id: VLCBrowsableVideoView.h 24154 2008-01-06 20:27:55Z pdherbemont $
*
* Authors: Pierre d'Herbemont <pdherbemont # 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLCKit/VLCKit.h>
#import "VLCAppAdditions.h"
#import "VLCMainWindow.h"
@interface
VLCFullScreenControllerWindow
:
NSPanel
{
/* IBOutlets */
IBOutlet
VLCImageCustomizedSlider
*
volumeSlider
;
IBOutlet
VLCImageCustomizedSlider
*
mediaPositionSlider
;
IBOutlet
NSButton
*
mediaPlayerForwardNextButton
;
IBOutlet
NSButton
*
mediaPlayerBackwardPrevButton
;
IBOutlet
NSButton
*
mediaPlayerPlayPauseStopButton
;
IBOutlet
id
fillScreenButton
;
IBOutlet
id
fullScreenButton
;
IBOutlet
NSTextField
*
mediaReadingProgressText
;
IBOutlet
NSTextField
*
mediaDescriptionText
;
NSTimer
*
hideWindowTimer
;
NSTrackingArea
*
videoViewTrackingArea
;
BOOL
active
;
/* Owner */
IBOutlet
VLCMainWindow
*
mainWindow
;
/* Draging the window using its content */
NSPoint
mouseClic
;
}
@end
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.m
0 → 100644
View file @
87fe9845
/*****************************************************************************
* VLCFullScreenControllerWindow.m: class that allow media controlling in
* fullscreen (with the mouse)
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id: VLCBrowsableVideoView.m 24179 2008-01-07 21:00:49Z pdherbemont $
*
* Authors: Jérôme Decoodt <djc at videolan dot org>
* Felix Kühne <fkuehne at videolan dot org>
* Pierre d'Herbemont <pdherbemont # 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import "VLCFullScreenControllerWindow.h"
@interface
VLCFullScreenControllerWindow
(
Private
)
-
(
void
)
hide
;
-
(
void
)
show
;
-
(
void
)
updateTrackingRect
;
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow
*/
@implementation
VLCFullScreenControllerWindow
/* We override this initializer so we can set the NSBorderlessWindowMask styleMask, and set a few other important settings */
-
(
id
)
initWithContentRect
:(
NSRect
)
contentRect
styleMask
:(
unsigned
int
)
aStyle
backing
:(
NSBackingStoreType
)
bufferingType
defer
:(
BOOL
)
flag
{
if
(
self
=
[
super
initWithContentRect
:
contentRect
styleMask
:
NSTexturedBackgroundWindowMask
backing
:
bufferingType
defer
:
flag
]
)
{
[
self
setOpaque
:
NO
];
[
self
setHasShadow
:
NO
];
[
self
setBackgroundColor
:[
NSColor
clearColor
]];
/* let the window sit on top of everything else and start out completely transparent */
[
self
setLevel
:
NSFloatingWindowLevel
];
[
self
center
];
}
return
self
;
}
-
(
void
)
dealloc
{
[[
NSNotificationCenter
defaultCenter
]
removeObserver
:
self
];
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
[
videoViewTrackingArea
release
];
[
super
dealloc
];
}
-
(
void
)
awakeFromNib
{
hideWindowTimer
=
nil
;
videoViewTrackingArea
=
nil
;
[
self
setMovableByWindowBackground
:
YES
];
/* Make sure we'll detect when to close the window, see animationDidStop:finished: */
CAAnimation
*
alphaValueAnimation
=
[
CABasicAnimation
animation
];
[
alphaValueAnimation
setDelegate
:
self
];
[
self
setAnimations
:[
NSDictionary
dictionaryWithObject
:
alphaValueAnimation
forKey
:
@"alphaValue"
]];
hideWindowTimer
=
nil
;
/* WindowView setup */
[[
mainWindow
.
videoView
window
]
setAcceptsMouseMovedEvents
:
YES
];
[[
mainWindow
.
videoView
window
]
makeFirstResponder
:
mainWindow
.
videoView
];
[
mainWindow
.
videoView
setPostsBoundsChangedNotifications
:
YES
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
videoViewDidChangeBounds
:
)
name
:
NSViewBoundsDidChangeNotification
object
:
(
id
)
mainWindow
.
videoView
];
/* Make sure we can know when the mouse is inside us */
[[
self
contentView
]
addTrackingRect
:[[
self
contentView
]
bounds
]
owner
:
self
userData
:
nil
assumeInside
:
NO
];
/* Bindings connection */
/* Sound */
[
volumeSlider
setKnobImage
:[
NSImage
imageNamed
:
@"fs_volume_slider_knob_highlight.png"
]];
[
volumeSlider
setBackgroundImage
:[
NSImage
imageNamed
:
@"fs_volume_slider_bar.png"
]];
[
volumeSlider
setNeedsDisplay
:
YES
];
[
volumeSlider
bind
:
@"value"
toObject
:[
VLCLibrary
sharedLibrary
]
withKeyPath
:
@"audio.volume"
options
:
nil
];
/* media position */
[
mediaPositionSlider
setKnobImage
:[
NSImage
imageNamed
:
@"fs_time_slider_knob.png"
]];
[
mediaPositionSlider
setBackgroundImage
:[
NSImage
imageNamed
:
@"fs_time_slider.png"
]];
[
mediaPositionSlider
setNeedsDisplay
:
YES
];
[
mediaPositionSlider
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"media"
options
:
[
NSDictionary
dictionaryWithObject
:
@"NonNilAsBoolTransformer"
forKey
:
NSValueTransformerNameBindingOption
]];
[
mediaPositionSlider
bind
:
@"enabled2"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"seekable"
options
:
nil
];
[
mediaPositionSlider
bind
:
@"value"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"position"
options
:
[
NSDictionary
dictionaryWithObjectsAndKeys
:
@"Float10000FoldTransformer"
,
NSValueTransformerNameBindingOption
,
[
NSNumber
numberWithBool
:
NO
],
NSConditionallySetsEnabledBindingOption
,
nil
]];
[
fillScreenButton
bind
:
@"value"
toObject
:
mainWindow
.
videoView
withKeyPath
:
@"fillScreen"
options
:
nil
];
[
fullScreenButton
bind
:
@"value"
toObject
:
mainWindow
.
videoView
withKeyPath
:
@"fullScreen"
options
:
nil
];
[
mediaReadingProgressText
bind
:
@"value"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"time.stringValue"
options
:
nil
];
[
mediaDescriptionText
bind
:
@"value"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"description"
options
:
nil
];
/* mediaPlayer */
[
mediaPlayerPlayPauseStopButton
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"media"
options
:
[
NSDictionary
dictionaryWithObject
:
@"NonNilAsBoolTransformer"
forKey
:
NSValueTransformerNameBindingOption
]];
[
mediaPlayerPlayPauseStopButton
bind
:
@"state"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"playing"
options
:
nil
];
[
mediaPlayerPlayPauseStopButton
bind
:
@"alternateImage"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"stateAsFullScreenButtonAlternateImage"
options
:
nil
];
[
mediaPlayerPlayPauseStopButton
bind
:
@"image"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"stateAsFullScreenButtonImage"
options
:
nil
];
[
mediaPlayerBackwardPrevButton
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"playing"
options
:
nil
];
[
mediaPlayerForwardNextButton
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"playing"
options
:
nil
];
[
mediaPlayerForwardNextButton
setTarget
:
mainWindow
.
mediaPlayer
];
[
mediaPlayerForwardNextButton
setAction
:
@selector
(
fastForward
)];
[
mediaPlayerBackwardPrevButton
setTarget
:
mainWindow
.
mediaPlayer
];
[
mediaPlayerBackwardPrevButton
setAction
:
@selector
(
rewind
)];
[
mediaPlayerPlayPauseStopButton
setTarget
:
mainWindow
.
mediaPlayer
];
[
mediaPlayerPlayPauseStopButton
setAction
:
@selector
(
pause
)];
[
self
bind
:
@"fullScreen"
toObject
:
mainWindow
.
videoView
withKeyPath
:
@"fullScreen"
options
:
nil
];
active
=
NO
;
}
-
(
BOOL
)
fullScreen
{
/* Only to comply to KVC */
return
active
;
}
-
(
void
)
setFullScreen
:(
BOOL
)
fullScreen
{
if
(
fullScreen
)
{
active
=
YES
;
[
self
show
];
}
else
{
[
self
hide
];
active
=
NO
;
}
}
-
(
void
)
center
{
/* centre the panel in the lower third of the screen */
NSPoint
theCoordinate
;
NSRect
theScreensFrame
;
NSRect
theWindowsFrame
;
theScreensFrame
=
[[
self
screen
]
frame
];
theWindowsFrame
=
[
self
frame
];
theCoordinate
.
x
=
(
theScreensFrame
.
size
.
width
-
theWindowsFrame
.
size
.
width
)
/
2
+
theScreensFrame
.
origin
.
x
;
theCoordinate
.
y
=
(
theScreensFrame
.
size
.
height
/
3
)
-
theWindowsFrame
.
size
.
height
+
theScreensFrame
.
origin
.
y
;
[
self
setFrameTopLeftPoint
:
theCoordinate
];
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (Private)
*/
@implementation
VLCFullScreenControllerWindow
(
Private
)
-
(
void
)
show
{
if
(
!
[
self
isVisible
])
self
.
alphaValue
=
0
.
0
;
if
(
!
NSPointInRect
([
NSEvent
mouseLocation
],[
self
frame
])
)
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
[[
NSTimer
scheduledTimerWithTimeInterval
:
1
.
0
target
:
self
selector
:
@selector
(
hide
)
userInfo
:
nil
repeats
:
NO
]
retain
];
}
[
self
orderFront
:
self
];
[
self
.
animator
setAlphaValue
:
1
.
0
];
}
-
(
void
)
hide
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
nil
;
if
([
self
isVisible
])
{
[
self
.
animator
setAlphaValue
:
0
.
0
];
[
NSCursor
setHiddenUntilMouseMoves
:
YES
];
}
[
self
updateTrackingRect
];
}
-
(
void
)
updateTrackingRect
{
VLCVideoView
*
videoView
=
mainWindow
.
videoView
;
if
(
videoViewTrackingArea
)
{
[
videoView
removeTrackingArea
:
videoViewTrackingArea
];
[
videoViewTrackingArea
release
];
}
videoViewTrackingArea
=
[[
NSTrackingArea
alloc
]
initWithRect
:[
videoView
bounds
]
options
:
NSTrackingMouseMoved
|
NSTrackingActiveAlways
|
NSTrackingAssumeInside
|
NSTrackingEnabledDuringMouseDrag
owner
:
self
userInfo
:
nil
];
[
videoView
addTrackingArea
:
videoViewTrackingArea
];
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (NSAnimationDelegate)
*/
@implementation
VLCFullScreenControllerWindow
(
NSAnimationDelegate
)
-
(
void
)
animationDidStop
:(
CAAnimation
*
)
animation
finished
:(
BOOL
)
flag
{
if
(
self
.
alphaValue
==
0
.
0
)
[
self
orderOut
:
self
];
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (NSTrackingRectCallbacksInVideoView)
*/
@implementation
VLCFullScreenControllerWindow
(
NSTrackingRectCallbacks
)
-
(
void
)
mouseMoved
:(
NSEvent
*
)
theEvent
{
if
([
theEvent
window
]
!=
self
)
{
if
(
active
)
[
self
show
];
}
}
-
(
void
)
mouseEntered
:(
NSEvent
*
)
theEvent
{
if
([
theEvent
window
]
==
self
)
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
nil
;
}
}
-
(
void
)
mouseExited
:(
NSEvent
*
)
theEvent
{
if
([
theEvent
window
]
==
self
)
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
[[
NSTimer
scheduledTimerWithTimeInterval
:
1
.
0
target
:
self
selector
:
@selector
(
hide
)
userInfo
:
nil
repeats
:
NO
]
retain
];
}
else
{
if
(
active
)
[
self
hide
];
}
}
-
(
void
)
cursorUpdate
:(
NSEvent
*
)
event
{
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (VideoViewBoundsChanges)
*/
@implementation
VLCFullScreenControllerWindow
(
VideoViewBoundsChanges
)
-
(
void
)
videoViewDidChangeBounds
:(
NSNotification
*
)
theNotification
{
[
self
updateTrackingRect
];
}
@end
extras/MacOSX/VLC_app/Sources/VLCMainWindow.h
View file @
87fe9845
...
...
@@ -64,7 +64,7 @@
IBOutlet
NSView
*
toolbarMediaDescription
;
IBOutlet
NSView
*
toolbarMediaControl
;
VLCMediaPlayer
*
mediaPlayer
;
IBOutlet
VLCMediaPlayer
*
mediaPlayer
;
IBOutlet
VLCController
*
controller
;
/* This is a VLCController binded to the File's Owner of the nib */
...
...
@@ -77,4 +77,6 @@
}
@property
BOOL
navigatorViewVisible
;
@property
(
readonly
)
VLCMediaPlayer
*
mediaPlayer
;
@property
(
readonly
)
VLCBrowsableVideoView
*
videoView
;
@end
extras/MacOSX/VLC_app/Sources/VLCMainWindow.m
View file @
87fe9845
...
...
@@ -27,6 +27,7 @@
#import "VLCMediaArrayController.h"
#import "VLCBrowsableVideoView.h"
#import "VLCAppAdditions.h"
#import "VLCFullScreenControllerWindow.h"
@interface
VLCMainWindow
(
NavigatorViewHidingShowing
)
@property
float
contentHeight
;
/* animatable, keep the mainSplitView cursor at the same place, enabling playlist(navigator) togling */
...
...
@@ -106,6 +107,10 @@
* VLCMainWindow
*/
@implementation
VLCMainWindow
@synthesize
mediaPlayer
;
@synthesize
videoView
;
-
(
void
)
awakeFromNib
;
{
NSTableColumn
*
tableColumn
;
...
...
@@ -117,7 +122,7 @@
/***********************************
* Init the media player
*/
mediaPlayer
=
[[
VLCMediaPlayer
alloc
]
initWith
VideoView
:
videoView
];
[
mediaPlayer
set
VideoView
:
videoView
];
/***********************************
* CategoriesList OutlineView content
...
...
@@ -252,7 +257,7 @@
[
mediaPlayerBackwardPrevButton
setAction
:
@selector
(
rewind
)];
[
mediaPlayerPlayPauseStopButton
setTarget
:
mediaPlayer
];
[
mediaPlayerPlayPauseStopButton
setAction
:
@selector
(
pause
)];
/* Last minute setup */
[
categoriesListView
expandItem
:
nil
expandChildren
:
YES
];
[
categoriesListView
selectRowIndexes
:[
NSIndexSet
indexSetWithIndex
:[
categoriesListView
numberOfRows
]
>
0
?
[
categoriesListView
numberOfRows
]
-
1
:
0
]
byExtendingSelection
:
NO
];
...
...
extras/MacOSX/VLC_app/VLC.xcodeproj/project.pbxproj
View file @
87fe9845
...
...
@@ -47,6 +47,7 @@
633BD4DA0D2A90C80012A314
/* dialog-error.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
633BD4D80D2A90C80012A314
/* dialog-error.png */
;
};
633BD4DB0D2A90C80012A314
/* applications-internet.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
633BD4D90D2A90C80012A314
/* applications-internet.png */
;
};
63874B190D25960600F738AD
/* MainWindow.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63874B170D25960600F738AD
/* MainWindow.xib */
;
};
638B823B0D35294500128F2B
/* QuickTime.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
638B823A0D35294500128F2B
/* QuickTime.framework */
;
};
638F47110D216C8F008E4912
/* type_playlist.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
638F47100D216C8F008E4912
/* type_playlist.png */
;
};
63A742B30D2759C1002D41A0
/* ExceptionHandling.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63A742B20D2759C1002D41A0
/* ExceptionHandling.framework */
;
};
63E380AA0D1C65A600FD6958
/* volume_high.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380A80D1C65A600FD6958
/* volume_high.png */
;
};
...
...
@@ -58,6 +59,35 @@
63E380B60D1C65FC00FD6958
/* skip_previous_active.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380B40D1C65FC00FD6958
/* skip_previous_active.png */
;
};
63E380B70D1C65FC00FD6958
/* skip_previous_blue.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380B50D1C65FC00FD6958
/* skip_previous_blue.png */
;
};
63E380DF0D1C6FD800FD6958
/* QuartzCore.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380DE0D1C6FD800FD6958
/* QuartzCore.framework */
;
};
63E768830D3503E200258089
/* VLCFullScreenControllerWindow.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768820D3503E200258089
/* VLCFullScreenControllerWindow.m */
;
};
63E768BF0D3507EF00258089
/* fs_volume_slider_knob.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A40D3507EF00258089
/* fs_volume_slider_knob.png */
;
};
63E768C00D3507EF00258089
/* fs_background.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A50D3507EF00258089
/* fs_background.png */
;
};
63E768C10D3507EF00258089
/* fs_exit_fullscreen_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A60D3507EF00258089
/* fs_exit_fullscreen_highlight.png */
;
};
63E768C20D3507EF00258089
/* fs_exit_fullscreen.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A70D3507EF00258089
/* fs_exit_fullscreen.png */
;
};
63E768C30D3507EF00258089
/* fs_forward_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A80D3507EF00258089
/* fs_forward_highlight.png */
;
};
63E768C40D3507EF00258089
/* fs_forward.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A90D3507EF00258089
/* fs_forward.png */
;
};
63E768C50D3507EF00258089
/* fs_pause_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AA0D3507EF00258089
/* fs_pause_highlight.png */
;
};
63E768C60D3507EF00258089
/* fs_pause.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AB0D3507EF00258089
/* fs_pause.png */
;
};
63E768C70D3507EF00258089
/* fs_play_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AC0D3507EF00258089
/* fs_play_highlight.png */
;
};
63E768C80D3507EF00258089
/* fs_play.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AD0D3507EF00258089
/* fs_play.png */
;
};
63E768C90D3507EF00258089
/* fs_rewind_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AE0D3507EF00258089
/* fs_rewind_highlight.png */
;
};
63E768CA0D3507EF00258089
/* fs_rewind.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AF0D3507EF00258089
/* fs_rewind.png */
;
};
63E768CB0D3507EF00258089
/* fs_skip_next_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B00D3507EF00258089
/* fs_skip_next_highlight.png */
;
};
63E768CC0D3507EF00258089
/* fs_skip_next.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B10D3507EF00258089
/* fs_skip_next.png */
;
};
63E768CD0D3507EF00258089
/* fs_skip_previous_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B20D3507EF00258089
/* fs_skip_previous_highlight.png */
;
};
63E768CE0D3507EF00258089
/* fs_skip_previous.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B30D3507EF00258089
/* fs_skip_previous.png */
;
};
63E768CF0D3507EF00258089
/* fs_stop_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B40D3507EF00258089
/* fs_stop_highlight.png */
;
};
63E768D00D3507EF00258089
/* fs_stop.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B50D3507EF00258089
/* fs_stop.png */
;
};
63E768D10D3507EF00258089
/* fs_time_slider_knob_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B60D3507EF00258089
/* fs_time_slider_knob_highlight.png */
;
};
63E768D20D3507EF00258089
/* fs_time_slider_knob.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B70D3507EF00258089
/* fs_time_slider_knob.png */
;
};
63E768D30D3507EF00258089
/* fs_time_slider.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B80D3507EF00258089
/* fs_time_slider.png */
;
};
63E768D40D3507EF00258089
/* fs_volume_max_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B90D3507EF00258089
/* fs_volume_max_highlight.png */
;
};
63E768D50D3507EF00258089
/* fs_volume_max.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BA0D3507EF00258089
/* fs_volume_max.png */
;
};
63E768D60D3507EF00258089
/* fs_volume_mute_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BB0D3507EF00258089
/* fs_volume_mute_highlight.png */
;
};
63E768D70D3507EF00258089
/* fs_volume_mute.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BC0D3507EF00258089
/* fs_volume_mute.png */
;
};
63E768D80D3507EF00258089
/* fs_volume_slider_bar.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BD0D3507EF00258089
/* fs_volume_slider_bar.png */
;
};
63E768D90D3507EF00258089
/* fs_volume_slider_knob_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BE0D3507EF00258089
/* fs_volume_slider_knob_highlight.png */
;
};
63E76A530D35225700258089
/* Carbon.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E76A520D35225700258089
/* Carbon.framework */
;
};
8D11072A0486CEB800E47090
/* MainMenu.nib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
29B97318FDCFA39411CA2CEA
/* MainMenu.nib */
;
};
8D11072B0486CEB800E47090
/* InfoPlist.strings in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
089C165CFE840E0CC02AAC07
/* InfoPlist.strings */
;
};
8D11072D0486CEB800E47090
/* main.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
29B97316FDCFA39411CA2CEA
/* main.m */
;
settings
=
{
ATTRIBUTES
=
();
};
};
...
...
@@ -127,6 +157,7 @@
633BD4D90D2A90C80012A314
/* applications-internet.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
"applications-internet.png"
;
path
=
"Icons/applications-internet.png"
;
sourceTree
=
"<group>"
;
};
633BD69D0D2ACE520012A314
/* VLCKit.xcodeproj */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
"wrapper.pb-project"
;
name
=
VLCKit.xcodeproj
;
path
=
../Framework/VLCKit.xcodeproj
;
sourceTree
=
SOURCE_ROOT
;
};
63874B180D25960600F738AD
/* English */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
name
=
English
;
path
=
English.lproj/MainWindow.xib
;
sourceTree
=
"<group>"
;
};
638B823A0D35294500128F2B
/* QuickTime.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
QuickTime.framework
;
path
=
/System/Library/Frameworks/QuickTime.framework
;
sourceTree
=
"<absolute>"
;
};
638F47100D216C8F008E4912
/* type_playlist.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
type_playlist.png
;
path
=
../../../modules/gui/qt4/pixmaps/type_playlist.png
;
sourceTree
=
SOURCE_ROOT
;
};
63A742B20D2759C1002D41A0
/* ExceptionHandling.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
ExceptionHandling.framework
;
path
=
/System/Library/Frameworks/ExceptionHandling.framework
;
sourceTree
=
"<absolute>"
;
};
63E380A80D1C65A600FD6958
/* volume_high.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
volume_high.png
;
path
=
../Resources/volume_high.png
;
sourceTree
=
SOURCE_ROOT
;
};
...
...
@@ -138,6 +169,36 @@
63E380B40D1C65FC00FD6958
/* skip_previous_active.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
skip_previous_active.png
;
path
=
../Resources/skip_previous_active.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E380B50D1C65FC00FD6958
/* skip_previous_blue.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
skip_previous_blue.png
;
path
=
../Resources/skip_previous_blue.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E380DE0D1C6FD800FD6958
/* QuartzCore.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
QuartzCore.framework
;
path
=
/System/Library/Frameworks/QuartzCore.framework
;
sourceTree
=
"<absolute>"
;
};
63E768810D3503E200258089
/* VLCFullScreenControllerWindow.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCFullScreenControllerWindow.h
;
path
=
Sources/VLCFullScreenControllerWindow.h
;
sourceTree
=
"<group>"
;
};
63E768820D3503E200258089
/* VLCFullScreenControllerWindow.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
name
=
VLCFullScreenControllerWindow.m
;
path
=
Sources/VLCFullScreenControllerWindow.m
;
sourceTree
=
"<group>"
;
};
63E768A40D3507EF00258089
/* fs_volume_slider_knob.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_slider_knob.png
;
path
=
../Resources/fs_volume_slider_knob.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A50D3507EF00258089
/* fs_background.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_background.png
;
path
=
../Resources/fs_background.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A60D3507EF00258089
/* fs_exit_fullscreen_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_exit_fullscreen_highlight.png
;
path
=
../Resources/fs_exit_fullscreen_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A70D3507EF00258089
/* fs_exit_fullscreen.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_exit_fullscreen.png
;
path
=
../Resources/fs_exit_fullscreen.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A80D3507EF00258089
/* fs_forward_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_forward_highlight.png
;
path
=
../Resources/fs_forward_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A90D3507EF00258089
/* fs_forward.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_forward.png
;
path
=
../Resources/fs_forward.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AA0D3507EF00258089
/* fs_pause_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_pause_highlight.png
;
path
=
../Resources/fs_pause_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AB0D3507EF00258089
/* fs_pause.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_pause.png
;
path
=
../Resources/fs_pause.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AC0D3507EF00258089
/* fs_play_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_play_highlight.png
;
path
=
../Resources/fs_play_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AD0D3507EF00258089
/* fs_play.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_play.png
;
path
=
../Resources/fs_play.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AE0D3507EF00258089
/* fs_rewind_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_rewind_highlight.png
;
path
=
../Resources/fs_rewind_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AF0D3507EF00258089
/* fs_rewind.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_rewind.png
;
path
=
../Resources/fs_rewind.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B00D3507EF00258089
/* fs_skip_next_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_next_highlight.png
;
path
=
../Resources/fs_skip_next_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B10D3507EF00258089
/* fs_skip_next.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_next.png
;
path
=
../Resources/fs_skip_next.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B20D3507EF00258089
/* fs_skip_previous_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_previous_highlight.png
;
path
=
../Resources/fs_skip_previous_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B30D3507EF00258089
/* fs_skip_previous.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_previous.png
;
path
=
../Resources/fs_skip_previous.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B40D3507EF00258089
/* fs_stop_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_stop_highlight.png
;
path
=
../Resources/fs_stop_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B50D3507EF00258089
/* fs_stop.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_stop.png
;
path
=
../Resources/fs_stop.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B60D3507EF00258089
/* fs_time_slider_knob_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_time_slider_knob_highlight.png
;
path
=
../Resources/fs_time_slider_knob_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B70D3507EF00258089
/* fs_time_slider_knob.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_time_slider_knob.png
;
path
=
../Resources/fs_time_slider_knob.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B80D3507EF00258089
/* fs_time_slider.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_time_slider.png
;
path
=
../Resources/fs_time_slider.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B90D3507EF00258089
/* fs_volume_max_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_max_highlight.png
;
path
=
../Resources/fs_volume_max_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BA0D3507EF00258089
/* fs_volume_max.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_max.png
;
path
=
../Resources/fs_volume_max.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BB0D3507EF00258089
/* fs_volume_mute_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_mute_highlight.png
;
path
=
../Resources/fs_volume_mute_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BC0D3507EF00258089
/* fs_volume_mute.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_mute.png
;
path
=
../Resources/fs_volume_mute.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BD0D3507EF00258089
/* fs_volume_slider_bar.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_slider_bar.png
;
path
=
../Resources/fs_volume_slider_bar.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BE0D3507EF00258089
/* fs_volume_slider_knob_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_slider_knob_highlight.png
;
path
=
../Resources/fs_volume_slider_knob_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E76A520D35225700258089
/* Carbon.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
Carbon.framework
;
path
=
/System/Library/Frameworks/Carbon.framework
;
sourceTree
=
"<absolute>"
;
};
8D1107310486CEB800E47090
/* Info.plist */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
text.plist
;
path
=
Info.plist
;
sourceTree
=
"<group>"
;
};
8D1107320486CEB800E47090
/* VLC.app */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.application
;
includeInIndex
=
0
;
path
=
VLC.app
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
/* End PBXFileReference section */
...
...
@@ -151,6 +212,8 @@
8D11072F0486CEB800E47090
/* Cocoa.framework in Frameworks */
,
63E380DF0D1C6FD800FD6958
/* QuartzCore.framework in Frameworks */
,
63A742B30D2759C1002D41A0
/* ExceptionHandling.framework in Frameworks */
,
63E76A530D35225700258089
/* Carbon.framework in Frameworks */
,
638B823B0D35294500128F2B
/* QuickTime.framework in Frameworks */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
@@ -160,6 +223,7 @@
1058C7A0FEA54F0111CA2CBB
/* Linked Frameworks */
=
{
isa
=
PBXGroup
;
children
=
(
638B823A0D35294500128F2B
/* QuickTime.framework */
,
63A742B20D2759C1002D41A0
/* ExceptionHandling.framework */
,
63E380DE0D1C6FD800FD6958
/* QuartzCore.framework */
,
1058C7A1FEA54F0111CA2CBB
/* Cocoa.framework */
,
...
...
@@ -188,6 +252,7 @@
29B97314FDCFA39411CA2CEA
/* VLC */
=
{
isa
=
PBXGroup
;
children
=
(
63E76A520D35225700258089
/* Carbon.framework */
,
633BD6A40D2ACE5E0012A314
/* Dependencies */
,
63874AF40D2591CE00F738AD
/* Sources */
,
29B97315FDCFA39411CA2CEA
/* Other Sources */
,
...
...
@@ -272,6 +337,8 @@
children
=
(
633BD4B60D2A90470012A314
/* VLCBrowsableVideoView.h */
,
633BD4B30D2A90470012A314
/* VLCBrowsableVideoView.m */
,
63E768810D3503E200258089
/* VLCFullScreenControllerWindow.h */
,
63E768820D3503E200258089
/* VLCFullScreenControllerWindow.m */
,
);
name
=
Video
;
sourceTree
=
"<group>"
;
...
...
@@ -312,9 +379,16 @@
63C551960C7F6AD100B202D3
/* Images */
=
{
isa
=
PBXGroup
;
children
=
(
638F47100D216C8F008E4912
/* type_playlist.png */
,
633BD4D80D2A90C80012A314
/* dialog-error.png */
,
633BD4D90D2A90C80012A314
/* applications-internet.png */
,
63E768860D35072F00258089
/* Categories Icons */
,
63E768850D35072600258089
/* Toolbar Items */
,
63E768DA0D3507F500258089
/* FullScreenControllerWindow */
,
);
name
=
Images
;
sourceTree
=
"<group>"
;
};
63E768850D35072600258089
/* Toolbar Items */
=
{
isa
=
PBXGroup
;
children
=
(
63E380A80D1C65A600FD6958
/* volume_high.png */
,
63E380A90D1C65A600FD6958
/* volume_low.png */
,
63E380AC0D1C65D100FD6958
/* play.png */
,
...
...
@@ -325,7 +399,51 @@
63E380B40D1C65FC00FD6958
/* skip_previous_active.png */
,
63E380B50D1C65FC00FD6958
/* skip_previous_blue.png */
,
);
name
=
Images
;
name
=
"Toolbar Items"
;
sourceTree
=
"<group>"
;
};
63E768860D35072F00258089
/* Categories Icons */
=
{
isa
=
PBXGroup
;
children
=
(
638F47100D216C8F008E4912
/* type_playlist.png */
,
633BD4D80D2A90C80012A314
/* dialog-error.png */
,
633BD4D90D2A90C80012A314
/* applications-internet.png */
,
);
name
=
"Categories Icons"
;
sourceTree
=
"<group>"
;
};
63E768DA0D3507F500258089
/* FullScreenControllerWindow */
=
{
isa
=
PBXGroup
;
children
=
(
63E768A40D3507EF00258089
/* fs_volume_slider_knob.png */
,
63E768A50D3507EF00258089
/* fs_background.png */
,
63E768A60D3507EF00258089
/* fs_exit_fullscreen_highlight.png */
,
63E768A70D3507EF00258089
/* fs_exit_fullscreen.png */
,
63E768A80D3507EF00258089
/* fs_forward_highlight.png */
,
63E768A90D3507EF00258089
/* fs_forward.png */
,
63E768AA0D3507EF00258089
/* fs_pause_highlight.png */
,
63E768AB0D3507EF00258089
/* fs_pause.png */
,
63E768AC0D3507EF00258089
/* fs_play_highlight.png */
,
63E768AD0D3507EF00258089
/* fs_play.png */
,
63E768AE0D3507EF00258089
/* fs_rewind_highlight.png */
,
63E768AF0D3507EF00258089
/* fs_rewind.png */
,
63E768B00D3507EF00258089
/* fs_skip_next_highlight.png */
,
63E768B10D3507EF00258089
/* fs_skip_next.png */
,
63E768B20D3507EF00258089
/* fs_skip_previous_highlight.png */
,
63E768B30D3507EF00258089
/* fs_skip_previous.png */
,
63E768B40D3507EF00258089
/* fs_stop_highlight.png */
,
63E768B50D3507EF00258089
/* fs_stop.png */
,
63E768B60D3507EF00258089
/* fs_time_slider_knob_highlight.png */
,
63E768B70D3507EF00258089
/* fs_time_slider_knob.png */
,
63E768B80D3507EF00258089
/* fs_time_slider.png */
,
63E768B90D3507EF00258089
/* fs_volume_max_highlight.png */
,
63E768BA0D3507EF00258089
/* fs_volume_max.png */
,
63E768BB0D3507EF00258089
/* fs_volume_mute_highlight.png */
,
63E768BC0D3507EF00258089
/* fs_volume_mute.png */
,
63E768BD0D3507EF00258089
/* fs_volume_slider_bar.png */
,
63E768BE0D3507EF00258089
/* fs_volume_slider_knob_highlight.png */
,
);
name
=
FullScreenControllerWindow
;
sourceTree
=
"<group>"
;
};
/* End PBXGroup section */
...
...
@@ -405,6 +523,33 @@
633BD4DA0D2A90C80012A314
/* dialog-error.png in Resources */
,
633BD4DB0D2A90C80012A314
/* applications-internet.png in Resources */
,
632F3E260D326FF0003BBC56
/* pause.png in Resources */
,
63E768BF0D3507EF00258089
/* fs_volume_slider_knob.png in Resources */
,
63E768C00D3507EF00258089
/* fs_background.png in Resources */
,
63E768C10D3507EF00258089
/* fs_exit_fullscreen_highlight.png in Resources */
,
63E768C20D3507EF00258089
/* fs_exit_fullscreen.png in Resources */
,
63E768C30D3507EF00258089
/* fs_forward_highlight.png in Resources */
,
63E768C40D3507EF00258089
/* fs_forward.png in Resources */
,
63E768C50D3507EF00258089
/* fs_pause_highlight.png in Resources */
,
63E768C60D3507EF00258089
/* fs_pause.png in Resources */
,
63E768C70D3507EF00258089
/* fs_play_highlight.png in Resources */
,
63E768C80D3507EF00258089
/* fs_play.png in Resources */
,
63E768C90D3507EF00258089
/* fs_rewind_highlight.png in Resources */
,
63E768CA0D3507EF00258089
/* fs_rewind.png in Resources */
,
63E768CB0D3507EF00258089
/* fs_skip_next_highlight.png in Resources */
,
63E768CC0D3507EF00258089
/* fs_skip_next.png in Resources */
,
63E768CD0D3507EF00258089
/* fs_skip_previous_highlight.png in Resources */
,
63E768CE0D3507EF00258089
/* fs_skip_previous.png in Resources */
,
63E768CF0D3507EF00258089
/* fs_stop_highlight.png in Resources */
,
63E768D00D3507EF00258089
/* fs_stop.png in Resources */
,
63E768D10D3507EF00258089
/* fs_time_slider_knob_highlight.png in Resources */
,
63E768D20D3507EF00258089
/* fs_time_slider_knob.png in Resources */
,
63E768D30D3507EF00258089
/* fs_time_slider.png in Resources */
,
63E768D40D3507EF00258089
/* fs_volume_max_highlight.png in Resources */
,
63E768D50D3507EF00258089
/* fs_volume_max.png in Resources */
,
63E768D60D3507EF00258089
/* fs_volume_mute_highlight.png in Resources */
,
63E768D70D3507EF00258089
/* fs_volume_mute.png in Resources */
,
63E768D80D3507EF00258089
/* fs_volume_slider_bar.png in Resources */
,
63E768D90D3507EF00258089
/* fs_volume_slider_knob_highlight.png in Resources */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
@@ -443,6 +588,7 @@
633BD4C20D2A90470012A314
/* VLCAppBindings.m in Sources */
,
633BD4C30D2A90470012A314
/* VLCAppAdditions.m in Sources */
,
633BD4C40D2A90470012A314
/* ImageAndTextCell.m in Sources */
,
63E768830D3503E200258089
/* VLCFullScreenControllerWindow.m in Sources */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment