ITKit for Menutunes
[ITKit.git] / ITTransientStatusWindow.h
1 /*
2  *      ITKit
3  *  ITTransientStatusWindow
4  *    NSWindow subclass for quick display of status information.
5  *    Similar to volume/brightness/eject bezel key windows.
6  *
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>
11  *
12  *  Copyright (c) 2002 - 2003 iThink Software.
13  *  All Rights Reserved
14  *
15  */
16
17
18 #import <Cocoa/Cocoa.h>
19
20
21 #define DEFAULT_EXIT_DELAY 3.0
22
23
24 typedef enum {
25     ITTransientStatusWindowHiddenState,
26     ITTransientStatusWindowEnteringState,
27     ITTransientStatusWindowVisibleState,
28     ITTransientStatusWindowExitingState
29 } ITTransientStatusWindowVisibilityState;
30
31 typedef enum {
32     ITTransientStatusWindowExitOnOrderOut,
33     ITTransientStatusWindowExitAfterDelay,
34 } ITTransientStatusWindowExitMode;
35
36 typedef enum {
37     ITTransientStatusWindowNoBackground,
38     ITTransientStatusWindowRounded,
39     ITTransientStatusWindowSquare,
40     ITTransientStatusWindowMetal,
41     ITTransientStatusWindowMetalUtility,
42     ITTransientStatusWindowAquaUtility
43 } ITTransientStatusWindowBackgroundType;
44
45 typedef enum {
46     ITTransientStatusWindowPositionTop,
47     ITTransientStatusWindowPositionMiddle,
48     ITTransientStatusWindowPositionBottom,
49     ITTransientStatusWindowPositionLeft,
50     ITTransientStatusWindowPositionCenter,
51     ITTransientStatusWindowPositionRight,
52     ITTransientStatusWindowOther
53 } ITTransientStatusWindowPosition;
54
55 typedef enum {                                     // Note: Entry effects described here.  Exit does the reverse.
56     ITTransientStatusWindowEffectNone,             // No effect, window just appears.
57     ITTransientStatusWindowEffectDissolve,         // Fades in.
58     ITTransientStatusWindowEffectSlideVertically,  // Slides vertically onto the screen from the nearest edge
59     ITTransientStatusWindowEffectSlideHorizontally // Slides horizontally onto the screen from the nearest edge
60 } ITTransientStatusWindowEffect;
61
62
63 @interface ITTransientStatusWindow : NSWindow {
64
65     ITTransientStatusWindowVisibilityState  _visibilityState;
66     ITTransientStatusWindowExitMode         _exitMode;
67     float                                   _exitDelay;
68     ITTransientStatusWindowBackgroundType   _backgroundType;
69     ITTransientStatusWindowEffect                       _entryEffect;
70     ITTransientStatusWindowEffect           _exitEffect;
71     ITTransientStatusWindowPosition                     _verticalPosition;
72     ITTransientStatusWindowPosition                     _horizontalPosition;
73     
74     NSTimer *_delayTimer;
75     NSTimer *_fadeTimer;
76
77 //  NSView *_contentSubView;            
78 }
79
80 + (ITTransientStatusWindow *)sharedWindow;
81
82 - (ITTransientStatusWindowVisibilityState)visibilityState;
83
84 - (ITTransientStatusWindowExitMode)exitMode;
85 - (void)setExitMode:(ITTransientStatusWindowExitMode)newMode;
86
87 - (float)exitDelay;
88 - (void)setExitDelay:(float)seconds;
89
90 - (ITTransientStatusWindowBackgroundType)backgroundType;
91 - (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType;
92
93 - (ITTransientStatusWindowPosition)verticalPosition;
94 - (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
95
96 - (ITTransientStatusWindowPosition)horizontalPosition;
97 - (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
98
99 - (ITTransientStatusWindowEffect)entryEffect;
100 - (void)setEntryEffect:(ITTransientStatusWindowEffect)newEffect;
101
102 - (ITTransientStatusWindowEffect)exitEffect;
103 - (void)setExitEffect:(ITTransientStatusWindowEffect)newEffect;
104
105 @end