Checking in new window effect frame, so I can begin moving the guts into it. Also...
[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 #define DEFAULT_EFFECT_TIME 0.75
23
24
25 @class ITTextField;
26 @class ITGrayRoundedView;
27 @class ITWindowEffect;
28
29
30 typedef enum {
31     ITTransientStatusWindowHiddenState,
32     ITTransientStatusWindowEnteringState,
33     ITTransientStatusWindowVisibleState,
34     ITTransientStatusWindowExitingState
35 } ITTransientStatusWindowVisibilityState;
36
37 typedef enum {
38     ITTransientStatusWindowExitOnOrderOut,
39     ITTransientStatusWindowExitAfterDelay,
40 } ITTransientStatusWindowExitMode;
41
42 typedef enum {
43     ITTransientStatusWindowNoBackground,
44     ITTransientStatusWindowRounded,
45     ITTransientStatusWindowSquare,
46     ITTransientStatusWindowMetal,
47     ITTransientStatusWindowMetalUtility,
48     ITTransientStatusWindowAquaUtility
49 } ITTransientStatusWindowBackgroundType;
50
51 typedef enum {
52     ITTransientStatusWindowPositionTop,
53     ITTransientStatusWindowPositionMiddle,
54     ITTransientStatusWindowPositionBottom,
55     ITTransientStatusWindowPositionLeft,
56     ITTransientStatusWindowPositionCenter,
57     ITTransientStatusWindowPositionRight,
58     ITTransientStatusWindowOther
59 } ITTransientStatusWindowPosition;
60
61 @interface ITTransientStatusWindow : NSWindow {
62
63     ITTransientStatusWindowVisibilityState _visibilityState;
64     ITTransientStatusWindowExitMode        _exitMode;
65     float                                  _exitDelay;
66     ITTransientStatusWindowBackgroundType  _backgroundType;
67     ITWindowEffect                        *_entryEffect;
68     ITWindowEffect                        *_exitEffect;
69     float                                  _effectTime;
70     double                                 _effectProgress;
71     ITTransientStatusWindowPosition        _verticalPosition;
72     ITTransientStatusWindowPosition        _horizontalPosition;
73     int                                    _screenPadding;
74
75     BOOL _reallyIgnoresEvents;
76     
77     NSTimer *_delayTimer;
78     NSTimer *_effectTimer;
79
80 //  NSView *_contentSubView;            
81 }
82
83 + (id)sharedWindow;
84
85 - (id)initWithContentView:(NSView *)contentView
86                  exitMode:(ITTransientStatusWindowExitMode)exitMode
87            backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType;
88
89 - (ITTransientStatusWindowVisibilityState)visibilityState;
90
91 - (ITTransientStatusWindowExitMode)exitMode;
92 - (void)setExitMode:(ITTransientStatusWindowExitMode)newMode;
93
94 - (float)exitDelay;
95 - (void)setExitDelay:(float)seconds;
96
97 - (ITTransientStatusWindowBackgroundType)backgroundType;
98 - (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType;
99
100 - (ITTransientStatusWindowPosition)verticalPosition;
101 - (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
102
103 - (ITTransientStatusWindowPosition)horizontalPosition;
104 - (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
105
106 - (ITWindowEffect *)entryEffect;
107 - (void)setEntryEffect:(ITWindowEffect *)newEffect;
108
109 - (ITWindowEffect *)exitEffect;
110 - (void)setExitEffect:(ITWindowEffect *)newEffect;
111
112
113 @end