1 /* 2 * Copyright 2006, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stephan Aßmus <superstippi@gmx.de> 7 */ 8 9 #ifndef ICON_OPTIONS_CONTROL_H 10 #define ICON_OPTIONS_CONTROL_H 11 12 #include <Control.h> 13 #include <Invoker.h> 14 15 #include <MDividable.h> 16 17 class IconButton; 18 19 class IconOptionsControl : public MView, 20 public MDividable, 21 public BControl { 22 public: 23 IconOptionsControl(const char* name = NULL, 24 const char* label = NULL, 25 BMessage* message = NULL, 26 BHandler* target = NULL); 27 ~IconOptionsControl(); 28 29 // MView interface 30 virtual minimax layoutprefs(); 31 virtual BRect layout(BRect frame); 32 33 // MDividable interface 34 virtual float LabelWidth(); 35 36 // BControl interface 37 virtual void AttachedToWindow(); 38 virtual void AllAttached(); 39 virtual void Draw(BRect updateRect); 40 virtual void FrameResized(float width, float height); 41 42 virtual void SetLabel(const char* label); 43 virtual void SetValue(int32 value); 44 virtual int32 Value() const; 45 virtual void SetEnabled(bool enable); 46 47 virtual void MessageReceived(BMessage* message); 48 49 // BInvoker interface 50 virtual status_t Invoke(BMessage* message = NULL); 51 52 // IconOptionsControl 53 void AddOption(IconButton* icon); 54 55 private: 56 57 IconButton* _FindIcon(int32 index) const; 58 void _TriggerRelayout(); 59 void _LayoutIcons(BRect frame); 60 61 BHandler* fTargetCache; 62 }; 63 64 #endif // ICON_OPTIONS_CONTROL_H 65