1 /* 2 * Copyright 2007, Ingo Weinhold <bonefish@cs.tu-berlin.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 #ifndef WIDGET_LAYOUT_TEST_RADIO_BUTTON_H 6 #define WIDGET_LAYOUT_TEST_RADIO_BUTTON_H 7 8 9 #include <Invoker.h> 10 #include <List.h> 11 12 #include "AbstractButton.h" 13 #include "GroupView.h" 14 15 16 // RadioButton 17 class RadioButton : public AbstractButton { 18 public: 19 RadioButton(BMessage* message = NULL, 20 BMessenger target = BMessenger()); 21 22 virtual BSize MinSize(); 23 virtual BSize MaxSize(); 24 25 virtual void Draw(BView* container, BRect updateRect); 26 }; 27 28 29 // LabeledRadioButton 30 class LabeledRadioButton : public GroupView { 31 public: 32 LabeledRadioButton(const char* label, 33 BMessage* message = NULL, 34 BMessenger target = BMessenger()); 35 36 RadioButton* GetRadioButton() const { return fRadioButton; } 37 38 void SetTarget(BMessenger messenger); 39 40 void SetSelected(bool selected); 41 bool IsSelected() const; 42 43 private: 44 RadioButton* fRadioButton; 45 }; 46 47 48 // RadioButtonGroup 49 class RadioButtonGroup : public BInvoker, private AbstractButton::Listener { 50 public: 51 RadioButtonGroup(BMessage* message = NULL, 52 BMessenger target = BMessenger()); 53 virtual ~RadioButtonGroup(); 54 55 void AddButton(AbstractButton* button); 56 bool RemoveButton(AbstractButton* button); 57 AbstractButton* RemoveButton(int32 index); 58 59 int32 CountButtons() const; 60 AbstractButton* ButtonAt(int32 index) const; 61 int32 IndexOfButton(AbstractButton* button) const; 62 63 void SelectButton(AbstractButton* button); 64 void SelectButton(int32 index); 65 AbstractButton* SelectedButton() const; 66 int32 SelectedIndex() const; 67 68 private: 69 virtual void SelectionChanged(AbstractButton* button); 70 71 void _SelectionChanged(); 72 73 private: 74 BList fButtons; 75 AbstractButton* fSelected; 76 }; 77 78 79 #endif // WIDGET_LAYOUT_TEST_RADIO_BUTTON_H 80