xref: /haiku/headers/os/interface/StatusBar.h (revision bab64f65bb775dc23060e276f1f1c4498ab7af6c)
1 /*
2  * Copyright 2006-2015, Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _STATUS_BAR_H
6 #define _STATUS_BAR_H
7 
8 
9 #include <String.h>
10 #include <View.h>
11 
12 
13 class BStatusBar : public BView {
14 public:
15 								BStatusBar(BRect frame, const char* name,
16 									const char* label = NULL,
17 									const char* trailingLabel = NULL);
18 								BStatusBar(const char* name,
19 									const char* label = NULL,
20 									const char* trailingLabel = NULL);
21 								BStatusBar(BMessage* archive);
22 	virtual						~BStatusBar();
23 
24 	static	BArchivable*		Instantiate(BMessage* archive);
25 	virtual	status_t			Archive(BMessage* archive,
26 									bool deep = true) const;
27 
28 	virtual	void				AttachedToWindow();
29 	virtual	void				DetachedFromWindow();
30 	virtual	void				AllAttached();
31 	virtual	void				AllDetached();
32 
33 	virtual	void				WindowActivated(bool state);
34 	virtual	void				MakeFocus(bool focus = true);
35 
36 	virtual	void				GetPreferredSize(float* _width,
37 									float* _height);
38 	virtual	BSize				MinSize();
39 	virtual	BSize				MaxSize();
40 	virtual	BSize				PreferredSize();
41 	virtual	void				ResizeToPreferred();
42 	virtual	void				FrameMoved(BPoint newPosition);
43 	virtual	void				FrameResized(float newWidth, float newHeight);
44 
45 	virtual	void				Draw(BRect updateRect);
46 
47 	virtual	void				MessageReceived(BMessage* message);
48 
49 	virtual	void				MouseDown(BPoint where);
50 	virtual	void				MouseUp(BPoint where);
51 	virtual	void				MouseMoved(BPoint where, uint32 transit,
52 									const BMessage* dragMessage);
53 
54 	// BStatusBar
55 	virtual	void				SetBarColor(rgb_color color);
56 	virtual	void				SetBarHeight(float height);
57 
58 	virtual	void				SetText(const char* string);
59 	virtual	void				SetTrailingText(const char* string);
60 	virtual	void				SetMaxValue(float max);
61 
62 	virtual	void				Update(float delta, const char* text = NULL,
63 									const char* trailingText = NULL);
64 	virtual	void				Reset(const char* label = NULL,
65 									const char* trailingLabel = NULL);
66 	virtual	void				SetTo(float value, const char* text = NULL,
67 									const char* trailingText = NULL);
68 
69 			float				CurrentValue() const;
70 			float				MaxValue() const;
71 			rgb_color			BarColor() const;
72 			float				BarHeight() const;
73 
74 			const char*			Text() const;
75 			const char*			TrailingText() const;
76 			const char*			Label() const;
77 			const char*			TrailingLabel() const;
78 
79 	virtual	BHandler*			ResolveSpecifier(BMessage* message,
80 									int32 index, BMessage* specifier,
81 									int32 what, const char* property);
82 	virtual	status_t			GetSupportedSuites(BMessage* data);
83 
84 	virtual	status_t			Perform(perform_code d, void* arg);
85 
86 private:
87 	// FBC memebers
88 	virtual	void				_ReservedStatusBar2();
89 	virtual	void				_ReservedStatusBar3();
90 	virtual	void				_ReservedStatusBar4();
91 
92 			BStatusBar&			operator=(const BStatusBar& other);
93 
94 			void				_InitObject();
95 			void				_SetTextData(BString& text, const char* string,
96 									const BString& combineWith,
97 									bool rightAligned);
98 			BRect				_BarFrame(const font_height* fontHeight
99 									= NULL) const;
100 			float				_BarPosition(const BRect& barFrame) const;
101 			bool				_HasText() const;
102 
103 			BString				fLabel;
104 			BString				fTrailingLabel;
105 			BString				fText;
106 			BString				fTrailingText;
107 			float				fMax;
108 			float				fCurrent;
109 			float				fBarHeight;
110 			float				fTextDivider;
111 			rgb_color			fBarColor;
112 			bool				fCustomBarHeight;
113 			uint32				fInternalFlags;
114 
115 			uint32				_reserved[4];
116 };
117 
118 #endif	// _STATUS_BAR_H
119