250 lines
8.9 KiB
Objective-C
250 lines
8.9 KiB
Objective-C
//
|
|
// IntroWindowController.m
|
|
// iTunes Volume Control
|
|
//
|
|
// Created by Andrea Alberti on 15.12.13.
|
|
// Copyright (c) 2013 Andrea Alberti. All rights reserved.
|
|
//
|
|
|
|
#import "IntroWindowController.h"
|
|
#import <QuartzCore/CoreAnimation.h>
|
|
#import "AppDelegate.h"
|
|
|
|
@interface IntroWindowController ()
|
|
|
|
@end
|
|
|
|
@implementation IntroWindowController
|
|
|
|
@synthesize nextButton;
|
|
@synthesize previousButton;
|
|
@synthesize closeButton;
|
|
@synthesize loadIntroAtStartButton;
|
|
|
|
- (id)initWithWindow:(NSWindow *)window
|
|
{
|
|
self = [super initWithWindow:window];
|
|
if (self) {
|
|
// Initialization code here.
|
|
|
|
appDelegate = [[NSApplication sharedApplication] delegate];
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:appDelegate selector:@selector(introWindowWillClose:) name:NSWindowWillCloseNotification object:window];
|
|
|
|
step_number = 0;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
|
|
- (IBAction)loadIntroAtStartChanged:(id)sender
|
|
{
|
|
[appDelegate setLoadIntroAtStart:[loadIntroAtStartButton state]];
|
|
}
|
|
|
|
- (IBAction)closeButtonClicked:(id)sender
|
|
{
|
|
[NSTimer scheduledTimerWithTimeInterval:0.2 target:[self window] selector:@selector(close) userInfo:nil repeats:NO];
|
|
}
|
|
|
|
- (IBAction)nextButtonClicked:(id)sender
|
|
{
|
|
// CABasicAnimation* fadeOutAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
|
|
// [fadeOutAnimation setDuration:1.f];
|
|
// [fadeOutAnimation setRemovedOnCompletion:NO];
|
|
// [fadeOutAnimation setFillMode:kCAFillModeForwards];
|
|
// [fadeOutAnimation setFromValue:[NSNumber numberWithFloat:1.0f]];
|
|
// [fadeOutAnimation setToValue:[NSNumber numberWithFloat:0.0f]];
|
|
|
|
switch (step_number)
|
|
{
|
|
case 0:
|
|
|
|
[previousButton setEnabled:YES];
|
|
|
|
[[NSAnimationContext currentContext] setDuration:1.0f];
|
|
[NSAnimationContext beginGrouping];
|
|
// [introLayer addAnimation:fadeOutAnimation forKey:@"decreaseOpacity"];
|
|
[[iTune_label_2 animator] setAlphaValue:1.f];
|
|
[arrow_2_Layer setOpacity:1.f];
|
|
[NSAnimationContext endGrouping];
|
|
break;
|
|
case 1:
|
|
[nextButton setEnabled:NO];
|
|
[closeButton setEnabled:YES];
|
|
|
|
[[NSAnimationContext currentContext] setDuration:0.8f];
|
|
[NSAnimationContext beginGrouping];
|
|
[[iTune_label_1 animator] setAlphaValue:0.f];
|
|
[[iTune_label_2 animator] setAlphaValue:0.f];
|
|
[arrow_1_Layer setOpacity:0.f];
|
|
[arrow_2_Layer setOpacity:0.f];
|
|
[statusbarScreenshotIntroLayer setOpacity:1.0f];
|
|
[iTunesScreenshotIntroLayer setOpacity:0.0f];
|
|
[NSAnimationContext endGrouping];
|
|
|
|
|
|
break;
|
|
}
|
|
|
|
step_number++;
|
|
|
|
}
|
|
|
|
- (IBAction)prevButtonClicked:(id)sender
|
|
{
|
|
switch (step_number)
|
|
{
|
|
case 1:
|
|
[previousButton setEnabled:NO];
|
|
|
|
[[NSAnimationContext currentContext] setDuration:0.4f];
|
|
[NSAnimationContext beginGrouping];
|
|
// [introLayer addAnimation:fadeOutAnimation forKey:@"decreaseOpacity"];
|
|
[[iTune_label_2 animator] setAlphaValue:0.f];
|
|
[arrow_2_Layer setOpacity:0.f];
|
|
[NSAnimationContext endGrouping];
|
|
|
|
|
|
break;
|
|
case 2:
|
|
[nextButton setEnabled:YES];
|
|
[closeButton setEnabled:NO];
|
|
|
|
[[NSAnimationContext currentContext] setDuration:0.4f];
|
|
[NSAnimationContext beginGrouping];
|
|
[[iTune_label_1 animator] setAlphaValue:1.f];
|
|
[[iTune_label_2 animator] setAlphaValue:1.f];
|
|
[arrow_1_Layer setOpacity:1.f];
|
|
[arrow_2_Layer setOpacity:1.f];
|
|
[statusbarScreenshotIntroLayer setOpacity:0.0f];
|
|
[iTunesScreenshotIntroLayer setOpacity:1.0f];
|
|
[NSAnimationContext endGrouping];
|
|
break;
|
|
}
|
|
|
|
step_number--;
|
|
}
|
|
|
|
|
|
-(void)showFirstMessage:(NSTimer*)theTimer
|
|
{
|
|
[[NSAnimationContext currentContext] setDuration:1.3f];
|
|
[NSAnimationContext beginGrouping];
|
|
[[iTune_label_1 animator] setAlphaValue:1.f];
|
|
[arrow_1_Layer setOpacity:1.f];
|
|
[NSAnimationContext endGrouping];
|
|
}
|
|
|
|
-(void)awakeFromNib
|
|
{
|
|
NSWindow* introWindow = [self window];
|
|
NSView* introContentView = [introWindow contentView];
|
|
|
|
CGSize windowViewSize = [introContentView frame].size;
|
|
|
|
NSRect imageRect = NSZeroRect;
|
|
|
|
NSImage *iTunesScreenshot=[NSImage imageNamed:@"iTunes-screenshot"];
|
|
NSImage *iTunes_arrow_1=[NSImage imageNamed:@"iTunes-arrow-1"];
|
|
NSImage *iTunes_arrow_2=[NSImage imageNamed:@"iTunes-arrow-2"];
|
|
// NSImage *statusbarScreenshot=[NSImage imageNamed:@"statusbar-screenshot"];
|
|
NSImage *statusbarScreenshot=[NSImage imageNamed:@"keyboard"];
|
|
|
|
//[introWindow setContentBorderThickness:36 forEdge:NSMinYEdge];
|
|
|
|
CALayer* toplayer = [CALayer layer];
|
|
//CGColorRef backgroundColor=CGColorCreateGenericRGB(1.f, 1.f, 1.f, 1.f);
|
|
//[toplayer setBackgroundColor:backgroundColor];
|
|
//CFRelease(backgroundColor);
|
|
|
|
// iTunes screenshot
|
|
iTunesScreenshotIntroLayer = [CALayer layer];
|
|
imageRect.size = [iTunesScreenshot size];
|
|
[iTunesScreenshotIntroLayer setFrame:NSRectToCGRect(imageRect)];
|
|
[iTunesScreenshotIntroLayer setPosition:CGPointMake(windowViewSize.width/2-16,windowViewSize.height-imageRect.size.height/2-60)];
|
|
[iTunesScreenshotIntroLayer setContents:iTunesScreenshot];
|
|
//[introLayer setBorderColor:CGColorCreateGenericRGB(1.f, 0.f, 0.f, 1.f)];
|
|
//[introLayer setBorderWidth:1];
|
|
[toplayer addSublayer:iTunesScreenshotIntroLayer];
|
|
|
|
// Statusbar screenshot
|
|
statusbarScreenshotIntroLayer = [CALayer layer];
|
|
// [statusbarScreenshotIntroLayer setCompositingFilter:[CIFilter filterWithName:@"CIAdditionCompositing"]];
|
|
|
|
imageRect.size = [statusbarScreenshot size];
|
|
[statusbarScreenshotIntroLayer setFrame:NSRectToCGRect(imageRect)];
|
|
[statusbarScreenshotIntroLayer setPosition:CGPointMake(350,windowViewSize.height-250)];
|
|
[statusbarScreenshotIntroLayer setContents:statusbarScreenshot];
|
|
[statusbarScreenshotIntroLayer setOpacity:0.f];
|
|
[toplayer addSublayer:statusbarScreenshotIntroLayer];
|
|
|
|
arrow_1_Layer = [CALayer layer];
|
|
imageRect.size = [iTunes_arrow_1 size];
|
|
[arrow_1_Layer setFrame:NSRectToCGRect(imageRect)];
|
|
[arrow_1_Layer setPosition:CGPointMake(313,windowViewSize.height-94)];
|
|
[arrow_1_Layer setContents:iTunes_arrow_1];
|
|
[arrow_1_Layer setOpacity:0.f];
|
|
[toplayer addSublayer:arrow_1_Layer];
|
|
|
|
[iTune_label_1 setAlphaValue:0.f];
|
|
|
|
arrow_2_Layer = [CALayer layer];
|
|
imageRect.size = [iTunes_arrow_2 size];
|
|
[arrow_2_Layer setFrame:NSRectToCGRect(imageRect)];
|
|
[arrow_2_Layer setPosition:CGPointMake(240,windowViewSize.height-95)];
|
|
[arrow_2_Layer setContents:iTunes_arrow_2];
|
|
[arrow_2_Layer setOpacity:0.f];
|
|
[toplayer addSublayer:arrow_2_Layer];
|
|
|
|
[iTune_label_2 setAlphaValue:0.f];
|
|
|
|
NSRect frameRect = NSMakeRect(20,20,40,40); // This will change based on the size you need
|
|
iTune_label_3 = [[NSTextField alloc] initWithFrame:frameRect];
|
|
[iTune_label_3 setStringValue:@"My Label"];
|
|
[iTune_label_3 setBezeled:NO];
|
|
[iTune_label_3 setDrawsBackground:NO];
|
|
[iTune_label_3 setEditable:NO];
|
|
[iTune_label_3 setSelectable:NO];
|
|
[introContentView addSubview:iTune_label_3];
|
|
|
|
[introContentView setLayer:toplayer];
|
|
[introContentView setWantsLayer:YES];
|
|
|
|
NSImage *closeButtonImage=[NSImage imageNamed:@"introButtons-close"];
|
|
NSImage *closeButtonImageHL=[NSImage imageNamed:@"introButtons-close-HL"];
|
|
[closeButton setImage: closeButtonImage];
|
|
[closeButton setAlternateImage: closeButtonImageHL];
|
|
[closeButton setBordered:NO];
|
|
[closeButton setEnabled:NO];
|
|
[[closeButton cell] setHighlightsBy:1];
|
|
|
|
NSImage *nextButtonImage=[NSImage imageNamed:@"introButtons-next"];
|
|
NSImage *nextButtonImageHL=[NSImage imageNamed:@"introButtons-next-HL"];
|
|
[nextButton setImage: nextButtonImage];
|
|
[nextButton setAlternateImage: nextButtonImageHL];
|
|
[nextButton setBordered:NO];
|
|
[[nextButton cell] setHighlightsBy:1];
|
|
|
|
NSImage *prevButtonImage=[NSImage imageNamed:@"introButtons-prev"];
|
|
NSImage *prevButtonImageHL=[NSImage imageNamed:@"introButtons-prev-HL"];
|
|
[previousButton setImage: prevButtonImage];
|
|
[previousButton setAlternateImage: prevButtonImageHL];
|
|
[previousButton setBordered:NO];
|
|
[previousButton setEnabled:NO];
|
|
[[previousButton cell] setHighlightsBy:1];
|
|
|
|
[NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(showFirstMessage:) userInfo:nil repeats:NO];
|
|
|
|
[loadIntroAtStartButton setState: [appDelegate loadIntroAtStart]];
|
|
}
|
|
|
|
- (void)windowDidLoad
|
|
{
|
|
[super windowDidLoad];
|
|
|
|
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
|
}
|
|
|
|
@end
|