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