CheckBox.h revision 1f424632
1/*
2 * Copyright 2001-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _CHECK_BOX_H
6#define _CHECK_BOX_H
7
8
9#include <Control.h>
10
11
12class BCheckBox : public BControl {
13public:
14								BCheckBox(BRect frame, const char* name,
15									const char* label, BMessage* message,
16									uint32 resizingMode
17										= B_FOLLOW_LEFT | B_FOLLOW_TOP,
18									uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
19								BCheckBox(const char* name, const char* label,
20									BMessage* message, uint32 flags
21										= B_WILL_DRAW | B_NAVIGABLE);
22								BCheckBox(const char* label,
23									BMessage* message = NULL);
24								BCheckBox(BMessage* data);
25
26	virtual						~BCheckBox();
27
28	static	BArchivable*		Instantiate(BMessage* data);
29	virtual	status_t			Archive(BMessage* data, bool deep = true) const;
30
31	virtual	void				Draw(BRect updateRect);
32
33	virtual	void				AttachedToWindow();
34	virtual	void				DetachedFromWindow();
35	virtual	void				AllAttached();
36	virtual	void				AllDetached();
37
38	virtual	void				FrameMoved(BPoint newPosition);
39	virtual	void				FrameResized(float newWidth, float newHeight);
40	virtual	void				WindowActivated(bool active);
41
42	virtual	void				MessageReceived(BMessage* message);
43
44	virtual	void				KeyDown(const char* bytes, int32 numBytes);
45
46	virtual	void				MouseDown(BPoint where);
47	virtual	void				MouseUp(BPoint where);
48	virtual	void				MouseMoved(BPoint where, uint32 code,
49									const BMessage* dragMessage);
50
51	virtual	void				GetPreferredSize(float* _width,
52									float* _height);
53	virtual	void				ResizeToPreferred();
54
55	virtual	BSize				MinSize();
56	virtual	BSize				MaxSize();
57	virtual	BSize				PreferredSize();
58	virtual	BAlignment			LayoutAlignment();
59
60	virtual	void				MakeFocus(bool focused = true);
61
62	virtual	void				SetValue(int32 value);
63	virtual	status_t			Invoke(BMessage* message = NULL);
64
65	virtual	BHandler*			ResolveSpecifier(BMessage* message,
66									int32 index, BMessage* specifier,
67									int32 what, const char* property);
68	virtual	status_t			GetSupportedSuites(BMessage* message);
69
70	virtual	status_t			Perform(perform_code code, void* data);
71
72	virtual	status_t			SetIcon(const BBitmap* icon, uint32 flags = 0);
73
74			bool				IsPartialStateToOff() const;
75			void				SetPartialStateToOff(bool partialToOff);
76
77protected:
78	virtual	void				LayoutInvalidated(bool descendants = false);
79
80private:
81	// FBC padding
82	virtual	void				_ReservedCheckBox1();
83	virtual	void				_ReservedCheckBox2();
84	virtual	void				_ReservedCheckBox3();
85
86private:
87	inline	BRect				_CheckBoxFrame(const font_height& fontHeight)
88									const;
89			BRect				_CheckBoxFrame() const;
90			BSize				_ValidatePreferredSize();
91			int32				_NextState() const;
92
93private:
94	// Forbidden
95			BCheckBox&			operator=(const BCheckBox&);
96
97private:
98			BSize				fPreferredSize;
99			bool				fOutlined;
100			bool				fPartialToOff;
101};
102
103
104#endif // _CHECK_BOX_H
105