vfs: check userland buffers before reading them.
[haiku.git] / src / apps / cortex / RouteApp / StatusView.h
blobac4654e54c45d89fc9f85014139ca81552bcdda7
1 /*
2 * Copyright (c) 1999-2000, Eric Moon.
3 * All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions, and the following disclaimer.
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.
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.
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.
32 // StatusView.h (Cortex/ParameterWindow)
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.
41 // * TODO
42 // reduce flicker while message decay
44 // * HISTORY
45 // c.lenz 21may00 Begun
48 #ifndef __StatusView_H__
49 #define __StatusView_H__
51 // Interface Kit
52 #include <StringView.h>
53 // Support Kit
54 #include <String.h>
56 #include "cortex_defs.h"
58 class BBitmap;
59 class BMessageRunner;
61 __BEGIN_CORTEX_NAMESPACE
63 class RouteAppNodeManager;
65 class StatusView :
66 public BStringView {
68 public: // *** ctor/dtor
70 StatusView(
71 BRect frame,
72 RouteAppNodeManager *manager,
73 BScrollBar *scrollBar = 0);
75 virtual ~StatusView();
77 public: // *** BScrollView impl.
79 virtual void AttachedToWindow();
81 virtual void Draw(
82 BRect updateRect);
84 virtual void FrameResized(
85 float width,
86 float height);
88 virtual void MessageReceived(
89 BMessage *message);
91 virtual void MouseDown(
92 BPoint point);
94 virtual void MouseMoved(
95 BPoint point,
96 uint32 transit,
97 const BMessage *message);
99 virtual void MouseUp(
100 BPoint point);
102 // virtual void Pulse();
104 public: // *** operations
106 void drawInto(
107 BView *view,
108 BRect updateRect);
110 void setMessage(
111 BString &title,
112 BString &details,
113 status_t error = B_OK);
115 void setErrorMessage(
116 BString text,
117 bool error = false);
119 void startFade();
121 void fadeTick();
123 void allocBackBitmap(
124 float width,
125 float height);
127 void freeBackBitmap();
129 private: // *** data members
131 // the sibling scrollbar which should be resized by the
132 // status view
133 BScrollBar * m_scrollBar;
135 BBitmap * m_icon;
137 // from 0.0 to 1.0
138 float m_opacity;
139 int32 m_decayDelay;
140 BMessageRunner * m_clock;
142 // untruncated string
143 BString m_fullText;
145 // is being resized
146 bool m_dragging;
148 // offscreen buffer
149 BBitmap * m_backBitmap;
150 BView * m_backView;
151 bool m_dirty;
153 RouteAppNodeManager * m_manager;
156 __END_CORTEX_NAMESPACE
157 #endif /* __StatusView_H__ */