From 079b33aed3d1c849f1f46022040813d6394100f2 Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Mon, 31 Mar 2003 00:50:46 +0000 Subject: [PATCH] Incremental checkin. --- ITDissolveWindowEffect.m | 10 ++ ITPivotWindowEffect.m | 99 +++++++----- ITSlideHorizontallyWindowEffect.m | 10 ++ ITSlideVerticallyWindowEffect.m | 10 ++ ITTransientStatusWindow.h | 25 ++- ITTransientStatusWindow.m | 152 ++++++++---------- ITWindowEffect.h | 19 ++- ITWindowEffect.m | 29 +++- Showcase/Controller.m | 10 +- Showcase/English.lproj/MainMenu.nib/info.nib | 8 +- .../MainMenu.nib/keyedobjects.nib | Bin 34030 -> 33435 bytes 11 files changed, 223 insertions(+), 149 deletions(-) diff --git a/ITDissolveWindowEffect.m b/ITDissolveWindowEffect.m index 2dda28d..31aed00 100755 --- a/ITDissolveWindowEffect.m +++ b/ITDissolveWindowEffect.m @@ -14,5 +14,15 @@ NSLog(@"ITDissolveWindowEffect does not implement performVanish."); } +- (void)cancelAppear +{ + NSLog(@"ITWindowEffect does not implement cancelAppear."); +} + +- (void)cancelVanish +{ + NSLog(@"ITDissolveWindowEffect does not implement cancelVanish."); +} + @end diff --git a/ITPivotWindowEffect.m b/ITPivotWindowEffect.m index 81fb8ce..299506a 100755 --- a/ITPivotWindowEffect.m +++ b/ITPivotWindowEffect.m @@ -1,62 +1,89 @@ #import "ITPivotWindowEffect.h" #import "ITCoreGraphicsHacks.h" +@interface ITPivotWindowEffect (Private) +- (void)setPivot:(float)angle; +- (void)pivotFinish; +@end + @implementation ITPivotWindowEffect - (void)performAppear { - NSLog(@"ITPivotWindowEffect does not implement performAppear."); + [self setPivot:315.0]; + _effectProgress = 0.0; + [_window setAlphaValue:0.0]; + [_window orderFront:self]; + _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS) + target:self + selector:@selector(appearStep) + userInfo:nil + repeats:YES]; } - (void)performVanish { - NSLog(@"ITPivotWindowEffect does not implement performVanish."); + [self setPivot:0.0]; + _effectProgress = 1.0; + [_window setAlphaValue:1.0]; + [_window orderFront:self]; + _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS) + target:self + selector:@selector(vanishStep) + userInfo:nil + repeats:YES]; +} + +- (void)cancelAppear +{ + [self pivotFinish]; + [_window orderOut:self]; + [self setPivot:0.0]; + [_window setAlphaValue:1.0]; } -- (void)pivotEffect +- (void)cancelVanish { - if ( YES ) { - [self setPivot:315.0]; - _effectProgress = 0.0; - [_window setAlphaValue:0.0]; - [_window orderFront:self]; - _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS) - target:self - selector:@selector(pivotStep) - userInfo:nil - repeats:YES]; - } else { - [_window orderOut:self]; + [self pivotFinish]; + [self setPivot:0.0]; + [_window setAlphaValue:1.0]; + [_window orderFront:self]; + [_window display]; +} + +- (void)appearStep +{ + float interPivot = 0.0; + _effectProgress += (1.0 / (EFFECT_FPS * _effectTime)); + _effectProgress = (_effectProgress < 1.0 ? _effectProgress : 1.0); + interPivot = (( sin((_effectProgress * pi) - (pi / 2)) + 1 ) / 2); + [self setPivot:((interPivot * 45) + 315)]; + [_window setAlphaValue:interPivot]; + + if ( _effectProgress >= 1.0 ) { + [self pivotFinish]; } } -- (void)pivotStep +- (void)vanishStep { - if ( YES ) { - float interPivot = 0.0; - _effectProgress += (1.0 / (EFFECT_FPS * _effectTime)); - _effectProgress = (_effectProgress < 1.0 ? _effectProgress : 1.0); - interPivot = (( sin((_effectProgress * pi) - (pi / 2)) + 1 ) / 2); - [self setPivot:((interPivot * 45) + 315)]; - [_window setAlphaValue:interPivot]; - if ( _effectProgress >= 1.0 ) { - [self pivotFinish]; - } - } else { - //backwards + float interPivot = 1.0; + _effectProgress -= (1.0 / (EFFECT_FPS * _effectTime)); + _effectProgress = (_effectProgress > 0.0 ? _effectProgress : 0.0); + interPivot = (( sin((_effectProgress * pi) - (pi / 2)) + 1 ) / 2); + [self setPivot:((interPivot * 45) + 315)]; + [_window setAlphaValue:interPivot]; + + if ( _effectProgress <= 0.0 ) { + [self pivotFinish]; } } - (void)pivotFinish { - if ( YES ) { - [_effectTimer invalidate]; - _effectTimer = nil; - _effectProgress = 0.0; - } else { - //backwards - } + [_effectTimer invalidate]; + _effectTimer = nil; } @@ -65,7 +92,7 @@ float degAngle = (angle * (pi / 180)); CGAffineTransform transform = CGAffineTransformMakeRotation(degAngle); - // Set pivot point + // Set pivot rotation point transform.tx = -32.0; transform.ty = [_window frame].size.height + 32.0; diff --git a/ITSlideHorizontallyWindowEffect.m b/ITSlideHorizontallyWindowEffect.m index 74673d2..c5f3fba 100755 --- a/ITSlideHorizontallyWindowEffect.m +++ b/ITSlideHorizontallyWindowEffect.m @@ -14,5 +14,15 @@ NSLog(@"ITSlideHorizontallyWindowEffect does not implement performVanish."); } +- (void)cancelAppear +{ + NSLog(@"ITSlideHorizontallyWindowEffect does not implement cancelAppear."); +} + +- (void)cancelVanish +{ + NSLog(@"ITSlideHorizontallyWindowEffect does not implement cancelVanish."); +} + @end diff --git a/ITSlideVerticallyWindowEffect.m b/ITSlideVerticallyWindowEffect.m index 8c27b42..143e079 100755 --- a/ITSlideVerticallyWindowEffect.m +++ b/ITSlideVerticallyWindowEffect.m @@ -14,5 +14,15 @@ NSLog(@"ITSlideVerticallyWindowEffect does not implement performVanish."); } +- (void)cancelAppear +{ + NSLog(@"ITSlideVerticallyWindowEffect does not implement cancelAppear."); +} + +- (void)cancelVanish +{ + NSLog(@"ITSlideVerticallyWindowEffect does not implement cancelVanish."); +} + @end diff --git a/ITTransientStatusWindow.h b/ITTransientStatusWindow.h index 52e96d7..90d74c6 100755 --- a/ITTransientStatusWindow.h +++ b/ITTransientStatusWindow.h @@ -4,10 +4,10 @@ * NSWindow subclass for quick display of status information. * Similar to volume/brightness/eject bezel key windows. * - * Original Author : Kent Sutherland * Original Author : Matt Judy * Responsibility : Matt Judy * Responsibility : Joseph Spiros + * Contributor : Kent Sutherland * * Copyright (c) 2002 - 2003 iThink Software. * All Rights Reserved @@ -17,7 +17,7 @@ #import #import "ITWindowPositioning.h" - +#import "ITWindowEffect.h" #define DEFAULT_EXIT_DELAY 3.0 @@ -28,17 +28,11 @@ typedef enum { - ITTransientStatusWindowHiddenState, - ITTransientStatusWindowAppearingState, - ITTransientStatusWindowVisibleState, - ITTransientStatusWindowVanishingState -} ITTransientStatusWindowVisibilityState; - -typedef enum { - ITTransientStatusWindowExitOnOrderOut, + ITTransientStatusWindowExitOnCommand, ITTransientStatusWindowExitAfterDelay, } ITTransientStatusWindowExitMode; + typedef enum { ITTransientStatusWindowNoBackground, ITTransientStatusWindowRounded, @@ -48,9 +42,10 @@ typedef enum { ITTransientStatusWindowAquaUtility } ITTransientStatusWindowBackgroundType; -@interface ITTransientStatusWindow : NSWindow { - ITTransientStatusWindowVisibilityState _visibilityState; +@interface ITTransientStatusWindow : NSWindow { + + ITWindowVisibilityState _visibilityState; ITTransientStatusWindowExitMode _exitMode; float _exitDelay; ITTransientStatusWindowBackgroundType _backgroundType; @@ -74,7 +69,11 @@ typedef enum { exitMode:(ITTransientStatusWindowExitMode)exitMode backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType; -- (ITTransientStatusWindowVisibilityState)visibilityState; +- (void)appear:(id)sender; +- (void)vanish:(id)sender; + +- (ITWindowVisibilityState)visibilityState; +- (void)setVisibilityState:(ITWindowVisibilityState)newState; - (ITTransientStatusWindowExitMode)exitMode; - (void)setExitMode:(ITTransientStatusWindowExitMode)newMode; diff --git a/ITTransientStatusWindow.m b/ITTransientStatusWindow.m index f749278..f2ed917 100755 --- a/ITTransientStatusWindow.m +++ b/ITTransientStatusWindow.m @@ -18,7 +18,7 @@ exitMode:(ITTransientStatusWindowExitMode)exitMode backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType; - (void)rebuildWindow; -// - (void)performEffect; +- (void)startVanishTimer; @end @@ -125,50 +125,8 @@ static ITTransientStatusWindow *staticWindow = nil; _reallyIgnoresEvents = flag; } -/* - -- (void)orderFront:(id)sender -{ - if ( _entryEffect == nil ) { - [super orderFront:sender]; - _visibilityState = ITTransientStatusWindowVisibleState; - } else { - [self performEffect]; - } - if ( _exitMode == ITTransientStatusWindowExitAfterDelay ) { - // set the timer, and orderOut: when it lapses. - } -} - -- (void)makeKeyAndOrderFront:(id)sender -{ - if ( _exitMode == ITTransientStatusWindowExitAfterDelay ) { - // set the timer, and orderOut: when it lapses. - } - if ( _entryEffect == nil ) { - [super makeKeyAndOrderFront:sender]; - _visibilityState = ITTransientStatusWindowVisibleState; - } else { - [self performEffect]; - [self makeKeyWindow]; - } -} - -- (void)orderOut:(id)sender -{ - if ( _entryEffect == nil ) { - [super orderOut:sender]; - _visibilityState = ITTransientStatusWindowHiddenState; - } else { - [self performEffect]; - } -} - -- (NSTimeInterval)animationResizeTime:(NSRect)newFrame -{ - return _resizeTime; -} +/* - (id)contentView { @@ -194,35 +152,74 @@ static ITTransientStatusWindow *staticWindow = nil; */ -- (void)appear -{ - if ( _entryEffect == nil ) { - [self orderFront:self]; - _visibilityState = ITTransientStatusWindowVisibleState; - } else { - _visibilityState = ITTransientStatusWindowAppearingState; - [_entryEffect performAppear]; - _visibilityState = ITTransientStatusWindowVisibleState; + - (IBAction)appear:(id)sender + { + NSLog(@"%i", _visibilityState); + if ( _visibilityState == ITTransientStatusWindowHiddenState ) { + // Window is hidden. Appear as normal, and start the timer. + if ( _entryEffect == nil ) { + [self orderFront:self]; + _visibilityState = ITTransientStatusWindowVisibleState; + } else { + _visibilityState = ITTransientStatusWindowAppearingState; + [_entryEffect performAppear]; + _visibilityState = ITTransientStatusWindowVisibleState; + } + [self startVanishTimer]; + } else if ( _visibilityState == ITTransientStatusWindowVisibleState ) { + // Window is completely visible. Simply reset the timer. + [self startVanishTimer]; + } else if ( _visibilityState == ITTransientStatusWindowAppearingState ) { + // Window is appearing. Do nothing. + } else if ( _visibilityState == ITTransientStatusWindowVanishingState ) { + NSLog(@"%i", _visibilityState); + if ( _exitEffect == nil ) { + [self orderFront:self]; + _visibilityState = ITTransientStatusWindowVisibleState; + } else { + _visibilityState = ITTransientStatusWindowAppearingState; + [_exitEffect cancelVanish]; + _visibilityState = ITTransientStatusWindowVisibleState; + } + [self startVanishTimer]; } - if ( _exitMode == ITTransientStatusWindowExitAfterDelay ) { - // set the timer, and vanish when it lapses. + } + +- (IBAction)vanish:(id)sender +{ + if ( _visibilityState == ITTransientStatusWindowVisibleState ) { + // Window is totally visible. Perform exit effect. + if ( _exitEffect == nil ) { + [self orderOut:self]; + _visibilityState = ITTransientStatusWindowHiddenState; + } else { + _visibilityState = ITTransientStatusWindowVanishingState; + NSLog(@"%i", _visibilityState); + [_exitEffect performVanish]; + NSLog(@"%i", _visibilityState); + _visibilityState = ITTransientStatusWindowHiddenState; + NSLog(@"%i", _visibilityState); + } + [self startVanishTimer]; + } else if ( _visibilityState == ITTransientStatusWindowHiddenState ) { + // Window is hidden. Do nothing. + } else if ( _visibilityState == ITTransientStatusWindowAppearingState ) { + // Window is on its way in. Cancel appear. + [_entryEffect cancelAppear]; + _visibilityState = ITTransientStatusWindowHiddenState; + } else if ( _visibilityState == ITTransientStatusWindowVanishingState ) { + // Window is on its way out. Do nothing. } } -- (void)vanish +- (ITWindowVisibilityState)visibilityState { - if ( _entryEffect == nil ) { - [self orderOut:self]; - _visibilityState = ITTransientStatusWindowHiddenState; - } else { - [_exitEffect performVanish]; - _visibilityState = ITTransientStatusWindowHiddenState; - } + return _visibilityState; } -- (ITTransientStatusWindowVisibilityState)visibilityState +- (void)setVisibilityState:(ITWindowVisibilityState)newState { - return _visibilityState; + _visibilityState = newState; } - (ITTransientStatusWindowExitMode)exitMode @@ -344,30 +341,9 @@ static ITTransientStatusWindow *staticWindow = nil; } } -/* - -- (void)performEffect +- (void)startVanishTimer { - if ( _visibilityState == ITTransientStatusWindowHiddenState ) { - _visibilityState = ITTransientStatusWindowEnteringState; - } else if ( _visibilityState == ITTransientStatusWindowVisibleState ) { - _visibilityState = ITTransientStatusWindowExitingState; - } else { - return; - } - - if ( _entryEffect == ITTransientStatusWindowEffectDissolve ) { - [self dissolveEffect]; - } else if ( _entryEffect == ITTransientStatusWindowEffectSlideVertically ) { - [self slideVerticalEffect]; - } else if ( _entryEffect == ITTransientStatusWindowEffectSlideHorizontally ) { - [self slideHorizontalEffect]; - } else if ( _entryEffect == ITTransientStatusWindowEffectPivot ) { - [self pivotEffect]; - } -} - -*/ +} @end diff --git a/ITWindowEffect.h b/ITWindowEffect.h index df4578b..1c4e3cb 100755 --- a/ITWindowEffect.h +++ b/ITWindowEffect.h @@ -20,11 +20,25 @@ #define DEFAULT_EFFECT_TIME 0.75 -@protocol ITWindowEffect +typedef enum { + ITTransientStatusWindowHiddenState, + ITTransientStatusWindowAppearingState, + ITTransientStatusWindowVisibleState, + ITTransientStatusWindowVanishingState +} ITWindowVisibilityState; + +@protocol ITWindowEffect - (void)performAppear; - (void)performVanish; +- (void)cancelAppear; +- (void)cancelVanish; +@end + +@protocol ITWindowVisibility +- (ITWindowVisibilityState)visibilityState; +- (void)setVisibilityState:(ITWindowVisibilityState)newState; @end @@ -43,7 +57,8 @@ - (NSWindow *)window; -// setWindow: does not retain or release its window. It simply references it. - (void)setWindow:(NSWindow *)newWindow; +- (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState; + @end diff --git a/ITWindowEffect.m b/ITWindowEffect.m index bb7cfed..9eb75a6 100755 --- a/ITWindowEffect.m +++ b/ITWindowEffect.m @@ -1,4 +1,5 @@ #import "ITWindowEffect.h" +#import "ITTransientStatusWindow.h" @implementation ITWindowEffect @@ -14,8 +15,9 @@ _effectTimer = nil; if ( [window conformsToProtocol:@protocol(ITWindowPositioning)] ) { - _verticalPosition = (ITVerticalWindowPosition)[window verticalPosition]; - _horizontalPosition = (ITHorizontalWindowPosition)[window horizontalPosition]; + // Casts so the compiler won't gripe + _verticalPosition = (ITVerticalWindowPosition)[(ITTransientStatusWindow *)window verticalPosition]; + _horizontalPosition = (ITHorizontalWindowPosition)[(ITTransientStatusWindow *)window horizontalPosition]; } else { NSLog(@"ITWindowEffect - initWithWindow: - window does not conform to ITWindowPositioning."); _verticalPosition = ITWindowPositionBottom; @@ -32,7 +34,18 @@ - (void)setWindow:(NSWindow *)newWindow { - _window = newWindow; + [_window autorelease]; + _window = [newWindow retain]; +} + +- (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState +{ + if ( [_window conformsToProtocol:@protocol(ITWindowVisibility)] ) { + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:visibilityState]; + } else { + NSLog(@"ITWindowEffect - setWindowVisibility: - window does not conform to ITWindowVisibility."); + } } - (void)performAppear @@ -45,6 +58,16 @@ NSLog(@"ITWindowEffect does not implement performVanish."); } +- (void)cancelAppear +{ + NSLog(@"ITWindowEffect does not implement cancelAppear."); +} + +- (void)cancelVanish +{ + NSLog(@"ITWindowEffect does not implement cancelVanish."); +} + - (void)dealloc { [_window release]; diff --git a/Showcase/Controller.m b/Showcase/Controller.m index f09bdf7..1a9eab2 100755 --- a/Showcase/Controller.m +++ b/Showcase/Controller.m @@ -1,6 +1,7 @@ #import "Controller.h" #import "ITTransientStatusWindow.h" #import "ITTextField.h" +#import "ITPivotWindowEffect.h" #define SW_PAD 24.0 #define SW_SPACE 24.0 @@ -198,6 +199,9 @@ [[statusWindow contentView] addSubview:textField]; [[statusWindow contentView] setNeedsDisplay:YES]; + + [statusWindow setEntryEffect:[[ITPivotWindowEffect alloc] initWithWindow:statusWindow]]; + [statusWindow setExitEffect:[[ITPivotWindowEffect alloc] initWithWindow:statusWindow]]; } - (IBAction)showStatusWindow:(id)sender @@ -210,7 +214,7 @@ NSHeight([statusWindow frame]) ) display:YES]; */ - [statusWindow orderFront:self]; + [statusWindow appear:self]; /* [statusWindow setFrame:NSMakeRect( SW_BORDER, SW_BORDER, @@ -223,12 +227,12 @@ - (IBAction)hideStatusWindow:(id)sender { - [statusWindow orderOut:self]; + [statusWindow vanish:self]; } - (IBAction)setRotation:(id)sender { - [statusWindow setPivot:[sender floatValue]]; + NSLog(@"no longer supported"); } /*************************************************************************/ diff --git a/Showcase/English.lproj/MainMenu.nib/info.nib b/Showcase/English.lproj/MainMenu.nib/info.nib index a8f0269..ec37e93 100755 --- a/Showcase/English.lproj/MainMenu.nib/info.nib +++ b/Showcase/English.lproj/MainMenu.nib/info.nib @@ -3,22 +3,22 @@ IBDocumentLocation - 3 3 356 240 0 0 1152 746 + 3 3 356 240 0 0 1056 770 IBEditorPositions 197 69 252 75 120 0 0 1056 770 29 - 43 283 349 44 0 0 1152 746 + 38 293 349 44 0 0 1056 770 IBFramework Version - 291.0 + 286.0 IBOpenObjects 21 29 IBSystem Version - 6G30 + 6I32 diff --git a/Showcase/English.lproj/MainMenu.nib/keyedobjects.nib b/Showcase/English.lproj/MainMenu.nib/keyedobjects.nib index 5f366cd0d63c1bc9f80515effa53b147eba3b1c3..8ed526b983f1952d82132e01b8827754038e09a5 100755 GIT binary patch literal 33435 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