xref: /haiku/src/apps/cortex/RouteApp/StatusView.h (revision 83b1a68c52ba3e0e8796282759f694b7fdddf06d)
1 /*
2  * Copyright (c) 1999-2000, Eric Moon.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions, and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions, and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * 3. The name of the author may not be used to endorse or promote products
17  *    derived from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
23  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
27  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 
32 // StatusView.h (Cortex/ParameterWindow)
33 //
34 // * PURPOSE
35 //	 a small view to display a short message string with
36 //   an icon. for error messages, it will play a sound for
37 //   catching the users attention. messages will decay slowly
38 //   (become fully transparent). all this to avoid modal alert
39 //   boxes for error notification.
40 //
41 // * TODO
42 //   reduce flicker while message decay
43 //
44 // * HISTORY
45 //   c.lenz		21may00		Begun
46 //
47 
48 #ifndef __StatusView_H__
49 #define __StatusView_H__
50 
51 // Interface Kit
52 #include <StringView.h>
53 // Support Kit
54 #include <String.h>
55 
56 #include "cortex_defs.h"
57 
58 class BBitmap;
59 class BMessageRunner;
60 
61 __BEGIN_CORTEX_NAMESPACE
62 
63 class RouteAppNodeManager;
64 
65 class StatusView :
66 	public BStringView {
67 
68 public:					// *** ctor/dtor
69 
70 						StatusView(
71 							BRect frame,
72 							RouteAppNodeManager *manager,
73 							BScrollBar *scrollBar = 0);
74 
75 	virtual				~StatusView();
76 
77 public:					// *** BScrollView impl.
78 
79 	virtual void		AttachedToWindow();
80 
81 	virtual void		Draw(
82 							BRect updateRect);
83 
84 	virtual void		FrameResized(
85 							float width,
86 							float height);
87 
88 	virtual void		MessageReceived(
89 							BMessage *message);
90 
91 	virtual void		MouseDown(
92 							BPoint point);
93 
94 	virtual void		MouseMoved(
95 							BPoint point,
96 							uint32 transit,
97 							const BMessage *message);
98 
99 	virtual void		MouseUp(
100 							BPoint point);
101 
102 //	virtual void		Pulse();
103 
104 public:					// *** operations
105 
106 	void				drawInto(
107 							BView *view,
108 							BRect updateRect);
109 
110 	void				setMessage(
111 							BString &title,
112 							BString &details,
113 							status_t error = B_OK);
114 
115 	void				setErrorMessage(
116 							BString text,
117 							bool error = false);
118 
119 	void				startFade();
120 
121 	void				fadeTick();
122 
123 	void				allocBackBitmap(
124 							float width,
125 							float height);
126 
127 	void				freeBackBitmap();
128 
129 private:					// *** data members
130 
131 	// the sibling scrollbar which should be resized by the
132 	// status view
133 	BScrollBar *			m_scrollBar;
134 
135 	BBitmap	*				m_icon;
136 
137 	// from 0.0 to 1.0
138 	float					m_opacity;
139 	int32					m_decayDelay;
140 	BMessageRunner *		m_clock;
141 
142 	// untruncated string
143 	BString					m_fullText;
144 
145 	// is being resized
146 	bool					m_dragging;
147 
148 	// offscreen buffer
149 	BBitmap *				m_backBitmap;
150 	BView *					m_backView;
151 	bool					m_dirty;
152 
153 	RouteAppNodeManager *	m_manager;
154 };
155 
156 __END_CORTEX_NAMESPACE
157 #endif /* __StatusView_H__ */
158