xref: /haiku/headers/os/interface/PictureButton.h (revision 2c704682c473cd9e0f4b10d91c072f200e740cd8)
1 /*
2  * Copyright 2001-2008, Haiku Inc. All rights reserved.
3  * Distributed under the terms of the MIT license.
4  */
5 #ifndef _PICTURE_BUTTON_H
6 #define _PICTURE_BUTTON_H
7 
8 
9 #include <BeBuild.h>
10 #include <Control.h>
11 #include <Picture.h>
12 
13 
14 enum {
15 	B_ONE_STATE_BUTTON,
16 	B_TWO_STATE_BUTTON
17 };
18 
19 
20 class BPictureButton : public BControl {
21 public:
22 								BPictureButton(BRect frame, const char* name,
23 									BPicture* off, BPicture* on,
24 									BMessage* message,
25 									uint32 behavior = B_ONE_STATE_BUTTON,
26 									uint32 resizeMask = B_FOLLOW_LEFT
27 										| B_FOLLOW_TOP,
28 									uint32 flgs = B_WILL_DRAW | B_NAVIGABLE);
29 								BPictureButton(BMessage* archive);
30 
31 	virtual						~BPictureButton();
32 
33 	static	BArchivable*		Instantiate(BMessage* archive);
34 	virtual	status_t			Archive(BMessage* archive,
35 									bool deep = true) const;
36 
37 	virtual	void				AttachedToWindow();
38 	virtual	void				DetachedFromWindow();
39 	virtual	void				AllAttached();
40 	virtual	void				AllDetached();
41 
42 	virtual	void				ResizeToPreferred();
43 	virtual	void				GetPreferredSize(float* _width,
44 									float* _height);
45 	virtual	void				FrameMoved(BPoint position);
46 	virtual	void				FrameResized(float width, float height);
47 
48 	virtual	void				WindowActivated(bool state);
49 	virtual	void				MakeFocus(bool state = true);
50 
51 	virtual	void				Draw(BRect updateRect);
52 
53 	virtual	void				MessageReceived(BMessage* message);
54 	virtual	void				KeyDown(const char* bytes, int32 numBytes);
55 	virtual	void				MouseDown(BPoint where);
56 	virtual	void				MouseUp(BPoint where);
57 	virtual	void				MouseMoved(BPoint where, uint32 transit,
58 									const BMessage* message);
59 
60 	virtual	void				SetEnabledOn(BPicture* on);
61 	virtual	void				SetEnabledOff(BPicture* off);
62 	virtual	void				SetDisabledOn(BPicture* on);
63 	virtual	void				SetDisabledOff(BPicture* off);
64 
65 			BPicture*			EnabledOn() const;
66 			BPicture*			EnabledOff() const;
67 			BPicture*			DisabledOn() const;
68 			BPicture*			DisabledOff() const;
69 
70 	virtual	void				SetBehavior(uint32 behavior);
71 	uint32						Behavior() const;
72 
73 	virtual	void				SetValue(int32 value);
74 	virtual	status_t			Invoke(BMessage* message = NULL);
75 
76 	virtual	BHandler*			ResolveSpecifier(BMessage* message,
77 									int32 index, BMessage* specifier,
78 									int32 form, const char* property);
79 	virtual	status_t			GetSupportedSuites(BMessage* data);
80 
81 	virtual	status_t			Perform(perform_code code, void* data);
82 
83 private:
84 	// FBC padding and forbidden methods
85 	virtual	void				_ReservedPictureButton1();
86 	virtual	void				_ReservedPictureButton2();
87 	virtual	void				_ReservedPictureButton3();
88 
89 			BPictureButton&		operator=(const BPictureButton& other);
90 
91 private:
92 			BPicture*			fEnabledOff;
93 			BPicture*			fEnabledOn;
94 			BPicture*			fDisabledOff;
95 			BPicture*			fDisabledOn;
96 
97 			bool				unused;
98 
99 			uint32				fBehavior;
100 
101 			uint32				_reserved[4];
102 };
103 
104 #endif // _PICTURE_BUTTON_H
105