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