1*52a38012Sejakowatz //------------------------------------------------------------------------------ 2*52a38012Sejakowatz // Copyright (c) 2001-2002, OpenBeOS 3*52a38012Sejakowatz // 4*52a38012Sejakowatz // Permission is hereby granted, free of charge, to any person obtaining a 5*52a38012Sejakowatz // copy of this software and associated documentation files (the "Software"), 6*52a38012Sejakowatz // to deal in the Software without restriction, including without limitation 7*52a38012Sejakowatz // the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*52a38012Sejakowatz // and/or sell copies of the Software, and to permit persons to whom the 9*52a38012Sejakowatz // Software is furnished to do so, subject to the following conditions: 10*52a38012Sejakowatz // 11*52a38012Sejakowatz // The above copyright notice and this permission notice shall be included in 12*52a38012Sejakowatz // all copies or substantial portions of the Software. 13*52a38012Sejakowatz // 14*52a38012Sejakowatz // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15*52a38012Sejakowatz // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16*52a38012Sejakowatz // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17*52a38012Sejakowatz // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18*52a38012Sejakowatz // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19*52a38012Sejakowatz // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20*52a38012Sejakowatz // DEALINGS IN THE SOFTWARE. 21*52a38012Sejakowatz // 22*52a38012Sejakowatz // File Name: StatusBar.h 23*52a38012Sejakowatz // Author: Marc Flerackers (mflerackers@androme.be) 24*52a38012Sejakowatz // Description: BStatusBar displays a "percentage-of-completion" gauge. 25*52a38012Sejakowatz //------------------------------------------------------------------------------ 26*52a38012Sejakowatz 27*52a38012Sejakowatz #ifndef _STATUS_BAR_H 28*52a38012Sejakowatz #define _STATUS_BAR_H 29*52a38012Sejakowatz 30*52a38012Sejakowatz // Standard Includes ----------------------------------------------------------- 31*52a38012Sejakowatz 32*52a38012Sejakowatz // System Includes ------------------------------------------------------------- 33*52a38012Sejakowatz #include <BeBuild.h> 34*52a38012Sejakowatz #include <View.h> 35*52a38012Sejakowatz 36*52a38012Sejakowatz // Project Includes ------------------------------------------------------------ 37*52a38012Sejakowatz 38*52a38012Sejakowatz // Local Includes -------------------------------------------------------------- 39*52a38012Sejakowatz 40*52a38012Sejakowatz // Local Defines --------------------------------------------------------------- 41*52a38012Sejakowatz 42*52a38012Sejakowatz // Globals --------------------------------------------------------------------- 43*52a38012Sejakowatz 44*52a38012Sejakowatz 45*52a38012Sejakowatz // BStatusBar class ------------------------------------------------------------ 46*52a38012Sejakowatz class BStatusBar : public BView 47*52a38012Sejakowatz { 48*52a38012Sejakowatz public: 49*52a38012Sejakowatz BStatusBar(BRect frame, const char *name, const char *label = NULL, 50*52a38012Sejakowatz const char *trailingLabel = NULL); 51*52a38012Sejakowatz BStatusBar(BMessage *archive); 52*52a38012Sejakowatz 53*52a38012Sejakowatz virtual ~BStatusBar(); 54*52a38012Sejakowatz 55*52a38012Sejakowatz static BArchivable *Instantiate(BMessage *archive); 56*52a38012Sejakowatz virtual status_t Archive(BMessage *archive, bool deep = true) const; 57*52a38012Sejakowatz 58*52a38012Sejakowatz virtual void AttachedToWindow(); 59*52a38012Sejakowatz virtual void MessageReceived(BMessage *message); 60*52a38012Sejakowatz virtual void Draw(BRect updateRect); 61*52a38012Sejakowatz 62*52a38012Sejakowatz virtual void SetBarColor(rgb_color color); 63*52a38012Sejakowatz virtual void SetBarHeight(float height); 64*52a38012Sejakowatz virtual void SetText(const char *string); 65*52a38012Sejakowatz virtual void SetTrailingText(const char *string); 66*52a38012Sejakowatz virtual void SetMaxValue(float max); 67*52a38012Sejakowatz 68*52a38012Sejakowatz void Update(float delta, const char *text = NULL, const char *trailingText = NULL); 69*52a38012Sejakowatz virtual void Reset(const char *label = NULL, const char *trailingLabel = NULL); 70*52a38012Sejakowatz 71*52a38012Sejakowatz float CurrentValue() const; 72*52a38012Sejakowatz float MaxValue() const; 73*52a38012Sejakowatz rgb_color BarColor() const; 74*52a38012Sejakowatz float BarHeight() const; 75*52a38012Sejakowatz const char *Text() const; 76*52a38012Sejakowatz const char *TrailingText() const; 77*52a38012Sejakowatz const char *Label() const; 78*52a38012Sejakowatz const char *TrailingLabel() const; 79*52a38012Sejakowatz 80*52a38012Sejakowatz virtual void MouseDown(BPoint point); 81*52a38012Sejakowatz virtual void MouseUp(BPoint point); 82*52a38012Sejakowatz virtual void WindowActivated(bool state); 83*52a38012Sejakowatz virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message); 84*52a38012Sejakowatz virtual void DetachedFromWindow(); 85*52a38012Sejakowatz virtual void FrameMoved(BPoint new_position); 86*52a38012Sejakowatz virtual void FrameResized(float new_width, float new_height); 87*52a38012Sejakowatz 88*52a38012Sejakowatz virtual BHandler *ResolveSpecifier(BMessage *message, int32 index, BMessage *specifier, 89*52a38012Sejakowatz int32 what, const char *property); 90*52a38012Sejakowatz 91*52a38012Sejakowatz virtual void ResizeToPreferred(); 92*52a38012Sejakowatz virtual void GetPreferredSize(float *width, float *height); 93*52a38012Sejakowatz virtual void MakeFocus(bool state = true); 94*52a38012Sejakowatz virtual void AllAttached(); 95*52a38012Sejakowatz virtual void AllDetached(); 96*52a38012Sejakowatz virtual status_t GetSupportedSuites(BMessage *data); 97*52a38012Sejakowatz 98*52a38012Sejakowatz virtual status_t Perform(perform_code d, void *arg); 99*52a38012Sejakowatz 100*52a38012Sejakowatz private: 101*52a38012Sejakowatz virtual void _ReservedStatusBar1(); 102*52a38012Sejakowatz virtual void _ReservedStatusBar2(); 103*52a38012Sejakowatz virtual void _ReservedStatusBar3(); 104*52a38012Sejakowatz virtual void _ReservedStatusBar4(); 105*52a38012Sejakowatz 106*52a38012Sejakowatz BStatusBar &operator=(const BStatusBar &); 107*52a38012Sejakowatz 108*52a38012Sejakowatz void InitObject(const char *l, const char *aux_l); 109*52a38012Sejakowatz void SetTextData(char **pp, const char *str); 110*52a38012Sejakowatz void FillBar(BRect r); 111*52a38012Sejakowatz void Resize(); 112*52a38012Sejakowatz void _Draw(BRect updateRect, bool bar_only); 113*52a38012Sejakowatz 114*52a38012Sejakowatz char *fLabel; 115*52a38012Sejakowatz char *fTrailingLabel; 116*52a38012Sejakowatz char *fText; 117*52a38012Sejakowatz char *fTrailingText; 118*52a38012Sejakowatz float fMax; 119*52a38012Sejakowatz float fCurrent; 120*52a38012Sejakowatz float fBarHeight; 121*52a38012Sejakowatz float fTrailingWidth; 122*52a38012Sejakowatz rgb_color fBarColor; 123*52a38012Sejakowatz float fEraseText; 124*52a38012Sejakowatz float fEraseTrailingText; 125*52a38012Sejakowatz bool fCustomBarHeight; 126*52a38012Sejakowatz bool _pad1; 127*52a38012Sejakowatz bool _pad2; 128*52a38012Sejakowatz bool _pad3; 129*52a38012Sejakowatz uint32 _reserved[3]; 130*52a38012Sejakowatz }; 131*52a38012Sejakowatz 132*52a38012Sejakowatz //------------------------------------------------------------------------------ 133*52a38012Sejakowatz 134*52a38012Sejakowatz #endif // _STATUS_BAR_H 135*52a38012Sejakowatz 136*52a38012Sejakowatz /* 137*52a38012Sejakowatz * $Log $ 138*52a38012Sejakowatz * 139*52a38012Sejakowatz * $Id $ 140*52a38012Sejakowatz * 141*52a38012Sejakowatz */ 142