c93f0a64e88c04669b18ffbfe6a9db7f4bbc5e1f
[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 : Matthew Judy <mjudy@ithinksw.com>
8  *   Responsibility : Matthew Judy <mjudy@ithinksw.com>
9  *   Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
10  *      Contributor : Kent Sutherland <kent.sutherland@ithinksw.com>
11  *
12  *  Copyright (c) 2002 - 2003 iThink Software.
13  *  All Rights Reserved
14  *
15  */
16
17
18 #import <Cocoa/Cocoa.h>
19 #import "ITWindowPositioning.h"
20 #import "ITWindowEffect.h"
21
22 #define DEFAULT_EXIT_DELAY  3.0
23
24
25 @class ITTextField;
26 @class ITGrayRoundedView;
27 @class ITWindowEffect;
28
29
30 typedef enum {
31     ITTransientStatusWindowExitOnCommand,
32     ITTransientStatusWindowExitAfterDelay,
33 } ITTransientStatusWindowExitMode;
34
35
36 typedef enum {
37     ITTransientStatusWindowNoBackground,
38     ITTransientStatusWindowRounded,
39     ITTransientStatusWindowSquare,
40     ITTransientStatusWindowMetal,
41     ITTransientStatusWindowMetalUtility,
42     ITTransientStatusWindowAquaUtility
43 } ITTransientStatusWindowBackgroundType;
44
45 typedef enum {
46     ITTransientStatusWindowRegular,
47     ITTransientStatusWindowSmall,
48     ITTransientStatusWindowMini
49 } ITTransientStatusWindowSizing;
50
51 @interface ITTransientStatusWindow : NSWindow <ITWindowPositioning , ITWindowMotility> {
52
53     ITWindowVisibilityState                _visibilityState;
54     ITTransientStatusWindowExitMode        _exitMode;
55     float                                  _exitDelay;
56     ITTransientStatusWindowBackgroundType  _backgroundType;
57     ITWindowEffect                        *_entryEffect;
58     ITWindowEffect                        *_exitEffect;
59     double                                 _effectProgress;
60     ITVerticalWindowPosition               _verticalPosition;
61     ITHorizontalWindowPosition             _horizontalPosition;
62     ITTransientStatusWindowSizing          _sizing;
63     float                                  _screenPadding;
64 //    int                                    _screenNumber;
65         NSScreen *_screen;
66
67     BOOL _reallyIgnoresEvents;
68     
69     NSTimer *_exitTimer;
70
71     NSView *_contentSubView;            
72 }
73
74 + (id)sharedWindow;
75
76 - (id)initWithContentView:(NSView *)contentView
77                  exitMode:(ITTransientStatusWindowExitMode)exitMode
78            backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType;
79
80 - (void)appear:(id)sender;
81 - (void)vanish:(id)sender;
82
83 - (void)setScreen:(NSScreen *)newScreen;
84
85 - (void)setSizing:(ITTransientStatusWindowSizing)newSizing;
86 - (ITTransientStatusWindowSizing)sizing;
87
88 - (ITWindowVisibilityState)visibilityState;
89 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
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 - (ITVerticalWindowPosition)verticalPosition;
101 - (void)setVerticalPosition:(ITVerticalWindowPosition)newPosition;
102
103 - (ITHorizontalWindowPosition)horizontalPosition;
104 - (void)setHorizontalPosition:(ITHorizontalWindowPosition)newPosition;
105
106 - (float)effectProgress;
107 - (void)setEffectProgress:(float)newProgress;
108
109 - (ITWindowEffect *)entryEffect;
110 - (void)setEntryEffect:(ITWindowEffect *)newEffect;
111
112 - (ITWindowEffect *)exitEffect;
113 - (void)setExitEffect:(ITWindowEffect *)newEffect;
114
115
116 @end