3 * ITTransientStatusWindow
4 * NSWindow subclass for quick display of status information.
5 * Similar to volume/brightness/eject bezel key windows.
7 * Original Author : Kent Sutherland <joseph.spiros@ithinksw.com>
8 * Original Author : Matt Judy <mjudy@ithinksw.com>
9 * Responsibility : Matt Judy <mjudy@ithinksw.com>
10 * Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
12 * Copyright (c) 2002 - 2003 iThink Software.
18 #import <Cocoa/Cocoa.h>
21 #define DEFAULT_EXIT_DELAY 3.0
22 #define DEFAULT_EFFECT_TIME 0.75
26 @class ITGrayRoundedView;
30 ITTransientStatusWindowHiddenState,
31 ITTransientStatusWindowEnteringState,
32 ITTransientStatusWindowVisibleState,
33 ITTransientStatusWindowExitingState
34 } ITTransientStatusWindowVisibilityState;
37 ITTransientStatusWindowExitOnOrderOut,
38 ITTransientStatusWindowExitAfterDelay,
39 } ITTransientStatusWindowExitMode;
42 ITTransientStatusWindowNoBackground,
43 ITTransientStatusWindowRounded,
44 ITTransientStatusWindowSquare,
45 ITTransientStatusWindowMetal,
46 ITTransientStatusWindowMetalUtility,
47 ITTransientStatusWindowAquaUtility
48 } ITTransientStatusWindowBackgroundType;
51 ITTransientStatusWindowPositionTop,
52 ITTransientStatusWindowPositionMiddle,
53 ITTransientStatusWindowPositionBottom,
54 ITTransientStatusWindowPositionLeft,
55 ITTransientStatusWindowPositionCenter,
56 ITTransientStatusWindowPositionRight,
57 ITTransientStatusWindowOther
58 } ITTransientStatusWindowPosition;
60 typedef enum { // Note: Entry effects described here. Exit does the reverse.
61 ITTransientStatusWindowEffectNone, // No effect, window just appears.
62 ITTransientStatusWindowEffectDissolve, // Fades in.
63 ITTransientStatusWindowEffectSlideVertically, // Slides vertically onto the screen from the nearest edge
64 ITTransientStatusWindowEffectSlideHorizontally, // Slides horizontally onto the screen from the nearest edge
65 ITTransientStatusWindowEffectPivot // Rotate into place from perpendicular edge
66 } ITTransientStatusWindowEffect;
69 @interface ITTransientStatusWindow : NSWindow {
71 ITTransientStatusWindowVisibilityState _visibilityState;
72 ITTransientStatusWindowExitMode _exitMode;
74 ITTransientStatusWindowBackgroundType _backgroundType;
75 ITTransientStatusWindowEffect _entryEffect;
76 ITTransientStatusWindowEffect _exitEffect;
78 double _effectProgress;
79 ITTransientStatusWindowPosition _verticalPosition;
80 ITTransientStatusWindowPosition _horizontalPosition;
82 BOOL _reallyIgnoresEvents;
85 NSTimer *_effectTimer;
87 // NSView *_contentSubView;
92 - (id)initWithContentView:(NSView *)contentView
93 exitMode:(ITTransientStatusWindowExitMode)exitMode
94 backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType;
96 - (ITTransientStatusWindowVisibilityState)visibilityState;
98 - (ITTransientStatusWindowExitMode)exitMode;
99 - (void)setExitMode:(ITTransientStatusWindowExitMode)newMode;
102 - (void)setExitDelay:(float)seconds;
104 - (ITTransientStatusWindowBackgroundType)backgroundType;
105 - (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType;
107 - (ITTransientStatusWindowPosition)verticalPosition;
108 - (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
110 - (ITTransientStatusWindowPosition)horizontalPosition;
111 - (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
113 - (ITTransientStatusWindowEffect)entryEffect;
114 - (void)setEntryEffect:(ITTransientStatusWindowEffect)newEffect;
116 - (ITTransientStatusWindowEffect)exitEffect;
117 - (void)setExitEffect:(ITTransientStatusWindowEffect)newEffect;