xref: /haiku/headers/os/interface/StatusBar.h (revision 7f9368cae5ff96137d32a60ed2e86795421f8222)
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