1075e65c7SAxel Dörfler /* 2*7f9368caSlooncraz * Copyright 2006-2015, Haiku, Inc. All rights reserved. 3075e65c7SAxel Dörfler * Distributed under the terms of the MIT License. 4075e65c7SAxel Dörfler */ 552a38012Sejakowatz #ifndef _STATUS_BAR_H 652a38012Sejakowatz #define _STATUS_BAR_H 752a38012Sejakowatz 852a38012Sejakowatz 9075e65c7SAxel Dörfler #include <String.h> 1052a38012Sejakowatz #include <View.h> 1152a38012Sejakowatz 1252a38012Sejakowatz 13075e65c7SAxel Dörfler class BStatusBar : public BView { 1452a38012Sejakowatz public: 158296330eSStephan Aßmus BStatusBar(BRect frame, const char* name, 168296330eSStephan Aßmus const char* label = NULL, 1752a38012Sejakowatz const char* trailingLabel = NULL); 188296330eSStephan Aßmus BStatusBar(const char* name, 198296330eSStephan Aßmus const char* label = NULL, 20d23c4822SIngo Weinhold const char* trailingLabel = NULL); 2152a38012Sejakowatz BStatusBar(BMessage* archive); 2252a38012Sejakowatz virtual ~BStatusBar(); 2352a38012Sejakowatz 2452a38012Sejakowatz static BArchivable* Instantiate(BMessage* archive); 258296330eSStephan Aßmus virtual status_t Archive(BMessage* archive, 268296330eSStephan Aßmus bool deep = true) const; 2752a38012Sejakowatz 2852a38012Sejakowatz virtual void AttachedToWindow(); 2989208c77SStephan Aßmus virtual void DetachedFromWindow(); 3089208c77SStephan Aßmus virtual void AllAttached(); 3189208c77SStephan Aßmus virtual void AllDetached(); 3289208c77SStephan Aßmus 3389208c77SStephan Aßmus virtual void WindowActivated(bool state); 3489208c77SStephan Aßmus virtual void MakeFocus(bool focus = true); 3589208c77SStephan Aßmus 3689208c77SStephan Aßmus virtual void GetPreferredSize(float* _width, 3789208c77SStephan Aßmus float* _height); 3889208c77SStephan Aßmus virtual BSize MinSize(); 3989208c77SStephan Aßmus virtual BSize MaxSize(); 4089208c77SStephan Aßmus virtual BSize PreferredSize(); 4189208c77SStephan Aßmus virtual void ResizeToPreferred(); 4289208c77SStephan Aßmus virtual void FrameMoved(BPoint newPosition); 4389208c77SStephan Aßmus virtual void FrameResized(float newWidth, float newHeight); 4489208c77SStephan Aßmus 4552a38012Sejakowatz virtual void Draw(BRect updateRect); 4652a38012Sejakowatz 4789208c77SStephan Aßmus virtual void MessageReceived(BMessage* message); 4889208c77SStephan Aßmus 4989208c77SStephan Aßmus virtual void MouseDown(BPoint where); 5089208c77SStephan Aßmus virtual void MouseUp(BPoint where); 5189208c77SStephan Aßmus virtual void MouseMoved(BPoint where, uint32 transit, 5289208c77SStephan Aßmus const BMessage* dragMessage); 5389208c77SStephan Aßmus 5489208c77SStephan Aßmus // BStatusBar 5552a38012Sejakowatz virtual void SetBarColor(rgb_color color); 5652a38012Sejakowatz virtual void SetBarHeight(float height); 57075e65c7SAxel Dörfler 5852a38012Sejakowatz virtual void SetText(const char* string); 5952a38012Sejakowatz virtual void SetTrailingText(const char* string); 6052a38012Sejakowatz virtual void SetMaxValue(float max); 6152a38012Sejakowatz 62075e65c7SAxel Dörfler virtual void Update(float delta, const char* text = NULL, 63075e65c7SAxel Dörfler const char* trailingText = NULL); 64075e65c7SAxel Dörfler virtual void Reset(const char* label = NULL, 65075e65c7SAxel Dörfler const char* trailingLabel = NULL); 66075e65c7SAxel Dörfler virtual void SetTo(float value, const char* text = NULL, 67075e65c7SAxel Dörfler const char* trailingText = NULL); 6852a38012Sejakowatz 6952a38012Sejakowatz float CurrentValue() const; 7052a38012Sejakowatz float MaxValue() const; 7152a38012Sejakowatz rgb_color BarColor() const; 7252a38012Sejakowatz float BarHeight() const; 73075e65c7SAxel Dörfler 7452a38012Sejakowatz const char* Text() const; 7552a38012Sejakowatz const char* TrailingText() const; 7652a38012Sejakowatz const char* Label() const; 7752a38012Sejakowatz const char* TrailingLabel() const; 7852a38012Sejakowatz 7989208c77SStephan Aßmus virtual BHandler* ResolveSpecifier(BMessage* message, 8089208c77SStephan Aßmus int32 index, BMessage* specifier, 8189208c77SStephan Aßmus int32 what, const char* property); 8252a38012Sejakowatz virtual status_t GetSupportedSuites(BMessage* data); 8352a38012Sejakowatz 8452a38012Sejakowatz virtual status_t Perform(perform_code d, void* arg); 8552a38012Sejakowatz 8652a38012Sejakowatz private: 878296330eSStephan Aßmus // FBC memebers 8852a38012Sejakowatz virtual void _ReservedStatusBar2(); 8952a38012Sejakowatz virtual void _ReservedStatusBar3(); 9052a38012Sejakowatz virtual void _ReservedStatusBar4(); 9152a38012Sejakowatz 92075e65c7SAxel Dörfler BStatusBar& operator=(const BStatusBar& other); 9352a38012Sejakowatz 94075e65c7SAxel Dörfler void _InitObject(); 95f466d35dSStephan Aßmus void _SetTextData(BString& text, const char* string, 968296330eSStephan Aßmus const BString& combineWith, 978296330eSStephan Aßmus bool rightAligned); 988296330eSStephan Aßmus BRect _BarFrame(const font_height* fontHeight 998296330eSStephan Aßmus = NULL) const; 100075e65c7SAxel Dörfler float _BarPosition(const BRect& barFrame) const; 101a487da80SStephan Aßmus bool _HasText() const; 10252a38012Sejakowatz 103075e65c7SAxel Dörfler BString fLabel; 104075e65c7SAxel Dörfler BString fTrailingLabel; 105075e65c7SAxel Dörfler BString fText; 106075e65c7SAxel Dörfler BString fTrailingText; 10752a38012Sejakowatz float fMax; 10852a38012Sejakowatz float fCurrent; 10952a38012Sejakowatz float fBarHeight; 110f466d35dSStephan Aßmus float fTextDivider; 11152a38012Sejakowatz rgb_color fBarColor; 11252a38012Sejakowatz bool fCustomBarHeight; 113*7f9368caSlooncraz uint32 fInternalFlags; 114075e65c7SAxel Dörfler 115*7f9368caSlooncraz uint32 _reserved[4]; 11652a38012Sejakowatz }; 11752a38012Sejakowatz 11852a38012Sejakowatz #endif // _STATUS_BAR_H 119