1 /* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 #include "ColorCheckBox.h" 7 8 #include <SpaceLayoutItem.h> 9 10 11 ColorCheckBox::ColorCheckBox(const char* label, const rgb_color& color, 12 BMessage* message) 13 : 14 BGroupView(B_HORIZONTAL), 15 fColor(color) 16 { 17 SetFlags(Flags() | B_WILL_DRAW); 18 19 fCheckBox = new BCheckBox(label, message); 20 GroupLayout()->AddView(fCheckBox, 0); 21 AddChild(BSpaceLayoutItem::CreateHorizontalStrut(15)); 22 AddChild(BSpaceLayoutItem::CreateGlue()); 23 } 24 25 26 BCheckBox* 27 ColorCheckBox::CheckBox() const 28 { 29 return fCheckBox; 30 } 31 32 33 void 34 ColorCheckBox::SetTarget(const BMessenger& target) 35 { 36 fCheckBox->SetTarget(target); 37 } 38 39 40 void 41 ColorCheckBox::Draw(BRect updateRect) 42 { 43 BGroupView::Draw(updateRect); 44 45 BRect rect(Bounds()); 46 rect.left += fCheckBox->Frame().right + 5; 47 rect.right = rect.left + 9; 48 rect.top = floorf((rect.top + rect.bottom) / 2); 49 rect.bottom = rect.top + 1; 50 51 SetHighColor(fColor); 52 FillRect(rect); 53 } 54