/*****************************************************************************
* misc.m: code not specific to vlc
*****************************************************************************
- * Copyright (C) 2003-2007 the VideoLAN team
+ * Copyright (C) 2003-2008 the VideoLAN team
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
+ * Felix Paul Kühne <fkuehne 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
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#include <Cocoa/Cocoa.h>
+#import <Cocoa/Cocoa.h>
+#import <QuickTime/QuickTime.h>
-#include "intf.h" /* VLCApplication */
-#include "misc.h"
-#include "playlist.h"
-#include "controls.h"
+#import "intf.h" /* VLCApplication */
+#import "misc.h"
+#import "playlist.h"
+#import "controls.h"
+/*****************************************************************************
+ * NSImage (VLCAdditions)
+ *
+ * Addition to NSImage
+ *****************************************************************************/
+@implementation NSImage (VLCAdditions)
++ (id)imageWithSystemName:(int)name
+{
+ /* ugly Carbon stuff following...
+ * regrettably, you can't get the icons through clean Cocoa */
+
+ /* retrieve our error icon */
+ NSImage * icon;
+ IconRef ourIconRef;
+ int returnValue;
+ returnValue = GetIconRef(kOnSystemDisk, 'macs', name, &ourIconRef);
+ icon = [[[NSImage alloc] initWithSize:NSMakeSize(32,32)] autorelease];
+ [icon lockFocus];
+ CGRect rect = CGRectMake(0,0,32,32);
+ PlotIconRefInContext((CGContextRef)[[NSGraphicsContext currentContext]
+ graphicsPort],
+ &rect,
+ kAlignNone,
+ kTransformNone,
+ NULL /*inLabelColor*/,
+ kPlotIconRefNormalFlags,
+ (IconRef)ourIconRef);
+ [icon unlockFocus];
+ returnValue = ReleaseIconRef(ourIconRef);
+ return icon;
+}
+
++ (id)imageWithWarningIcon
+{
+ static NSImage * imageWithWarningIcon = nil;
+ if( !imageWithWarningIcon )
+ {
+ imageWithWarningIcon = [[[self class] imageWithSystemName:'caut'] retain];
+ }
+ return imageWithWarningIcon;
+}
+
++ (id)imageWithErrorIcon
+{
+ static NSImage * imageWithErrorIcon = nil;
+ if( !imageWithErrorIcon )
+ {
+ imageWithErrorIcon = [[[self class] imageWithSystemName:'stop'] retain];
+ }
+ return imageWithErrorIcon;
+}
+
+@end
/*****************************************************************************
* NSAnimation (VLCAdditions)
*
[blackoutWindows makeObjectsPerformSelector:@selector(close)];
[blackoutWindows removeAllObjects];
-
for(i = 0; i < [[NSScreen screens] count]; i++)
{
NSScreen *screen = [[NSScreen screens] objectAtIndex: i];
continue;
screen_rect = [screen frame];
- screen_rect.origin.x = screen_rect.origin.y = 0.0f;
+ screen_rect.origin.x = screen_rect.origin.y = 0;
/* blackoutWindow alloc strategy
- The NSMutableArray blackoutWindows has the blackoutWindow references
[blackoutWindow setBackgroundColor:[NSColor blackColor]];
[blackoutWindow setLevel: NSFloatingWindowLevel]; /* Disappear when Expose is triggered */
+ [blackoutWindow displayIfNeeded];
[blackoutWindow orderFront: self animate: YES];
[blackoutWindows addObject: blackoutWindow];
[blackoutWindow release];
+
+ if( [screen isMainScreen ] )
+ SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
}
}
VLCWindow *blackoutWindow = [blackoutWindows objectAtIndex: i];
[blackoutWindow closeAndAnimate: YES];
}
+
+ SetSystemUIMode( kUIModeNormal, 0);
}
@end
- (id)init
{
self = [super init];
- _knobOff = [[NSImage imageNamed:@"volumeslider_normal"] retain];
- _knobOn = [[NSImage imageNamed:@"volumeslider_blue"] retain];
+ _knobOff = [NSImage imageNamed:@"volumeslider_normal"];
+ [self controlTintChanged];
+ [[NSNotificationCenter defaultCenter] addObserver: self
+ selector: @selector( controlTintChanged )
+ name: NSControlTintDidChangeNotification
+ object: nil];
b_mouse_down = FALSE;
return self;
}
+- (void)controlTintChanged
+{
+ if( [NSColor currentControlTint] == NSGraphiteControlTint )
+ _knobOn = [NSImage imageNamed:@"volumeslider_graphite"];
+ else
+ _knobOn = [NSImage imageNamed:@"volumeslider_blue"];
+}
+
- (void)dealloc
{
+ [[NSNotificationCenter defaultCenter] removeObserver: self];
[_knobOff release];
[_knobOn release];
[super dealloc];