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 1.0
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;
90 + (ITTransientStatusWindow *)sharedWindow;
92 - (ITTransientStatusWindowVisibilityState)visibilityState;
94 - (ITTransientStatusWindowExitMode)exitMode;
95 - (void)setExitMode:(ITTransientStatusWindowExitMode)newMode;
98 - (void)setExitDelay:(float)seconds;
100 - (ITTransientStatusWindowBackgroundType)backgroundType;
101 - (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType;
103 - (ITTransientStatusWindowPosition)verticalPosition;
104 - (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
106 - (ITTransientStatusWindowPosition)horizontalPosition;
107 - (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
109 - (ITTransientStatusWindowEffect)entryEffect;
110 - (void)setEntryEffect:(ITTransientStatusWindowEffect)newEffect;
112 - (ITTransientStatusWindowEffect)exitEffect;
113 - (void)setExitEffect:(ITTransientStatusWindowEffect)newEffect;