xref: /haiku/headers/os/interface/RadioButton.h (revision 49546fa993e8de87ddebffd56f890aec71aa42d3)
1 /*
2  * Copyright 2001-2008, Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef	_RADIO_BUTTON_H
6 #define	_RADIO_BUTTON_H
7 
8 
9 #include <Bitmap.h>
10 #include <Control.h>
11 
12 
13 class BRadioButton : public BControl {
14 public:
15 								BRadioButton(BRect frame, const char* name,
16 									const char* label, BMessage* message,
17 									uint32 resizMask
18 										= B_FOLLOW_LEFT | B_FOLLOW_TOP,
19 									uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
20 								BRadioButton(const char* name,
21 									const char* label, BMessage* message,
22 									uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
23 								BRadioButton(const char* label,
24 									BMessage* message);
25 
26 								BRadioButton(BMessage* archive);
27 	virtual						~BRadioButton();
28 
29 	static	BArchivable*		Instantiate(BMessage* archive);
30 	virtual	status_t			Archive(BMessage* archive,
31 									bool deep = true) const;
32 
33 	virtual	void				Draw(BRect updateRect);
34 	virtual	void				MouseDown(BPoint point);
35 	virtual	void				AttachedToWindow();
36 	virtual	void				KeyDown(const char* bytes, int32 numBytes);
37 	virtual	void				SetValue(int32 value);
38 	virtual	void				GetPreferredSize(float* _width,
39 									float* _height);
40 	virtual	void				ResizeToPreferred();
41 	virtual	status_t			Invoke(BMessage* message = NULL);
42 
43 	virtual	void				MessageReceived(BMessage* message);
44 	virtual	void				WindowActivated(bool active);
45 	virtual	void				MouseUp(BPoint point);
46 	virtual	void				MouseMoved(BPoint point, uint32 transit,
47 									const BMessage* dragMessage);
48 	virtual	void				DetachedFromWindow();
49 	virtual	void				FrameMoved(BPoint newLocation);
50 	virtual	void				FrameResized(float width, float height);
51 
52 	virtual	BHandler*			ResolveSpecifier(BMessage* message,
53 									int32 index, BMessage* specifier,
54 									int32 what, const char* property);
55 
56 	virtual	void				MakeFocus(bool focused = true);
57 	virtual	void				AllAttached();
58 	virtual	void				AllDetached();
59 	virtual	status_t			GetSupportedSuites(BMessage* message);
60 
61 	virtual	status_t			Perform(perform_code d, void* argument);
62 
63 	virtual	BSize				MaxSize();
64 
65 
66 private:
67 	friend	status_t			_init_interface_kit_();
68 
69 	virtual	void				_ReservedRadioButton1();
70 	virtual	void				_ReservedRadioButton2();
71 
72 			BRadioButton&		operator=(const BRadioButton& other);
73 
74 			BRect				_KnobFrame() const;
75 			BRect				_KnobFrame(
76 									const font_height& fontHeight) const;
77 			void				_Redraw();
78 				// for use in "synchronous" BWindows
79 
80 private:
81 	static	BBitmap*			sBitmaps[2][3];
82 
83 			bool				fOutlined;
84 
85 			uint32				_reserved[2];
86 };
87 
88 #endif // _RADIO_BUTTON_H
89