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 6#include "ControlTest.h" 7 8#include <stdio.h> 9 10#include <Control.h> 11#include <Font.h> 12#include <Message.h> 13 14#include "CheckBox.h" 15#include "GroupView.h" 16#include "StringView.h" 17 18 19 20// constructor 21ControlTest::ControlTest(const char* name) 22 : Test(name, NULL), 23 fControl(NULL), 24 fLongTextCheckBox(NULL), 25 fBigFontCheckBox(NULL), 26 fDefaultFont(NULL), 27 fBigFont(NULL) 28{ 29} 30 31 32// destructor 33ControlTest::~ControlTest() 34{ 35 delete fDefaultFont; 36 delete fBigFont; 37} 38 39 40// SetView 41void 42ControlTest::SetView(BView* view) 43{ 44 Test::SetView(view); 45 fControl = dynamic_cast<BControl*>(view); 46} 47 48 49// ActivateTest 50void 51ControlTest::ActivateTest(View* controls) 52{ 53 GroupView* group = new GroupView(B_VERTICAL); 54 group->SetFrame(controls->Bounds()); 55 group->SetSpacing(0, 8); 56 controls->AddChild(group); 57 58 // long text 59 fLongTextCheckBox = new LabeledCheckBox("Long label text", 60 new BMessage(MSG_CHANGE_CONTROL_TEXT), this); 61 group->AddChild(fLongTextCheckBox); 62 63 // big font 64 fBigFontCheckBox = new LabeledCheckBox("Big label font", 65 new BMessage(MSG_CHANGE_CONTROL_FONT), this); 66 group->AddChild(fBigFontCheckBox); 67 68 UpdateControlText(); 69 UpdateControlFont(); 70} 71 72 73// DectivateTest 74void 75ControlTest::DectivateTest() 76{ 77} 78 79 80// MessageReceived 81void 82ControlTest::MessageReceived(BMessage* message) 83{ 84 switch (message->what) { 85 case MSG_CHANGE_CONTROL_TEXT: 86 UpdateControlText(); 87 break; 88 case MSG_CHANGE_CONTROL_FONT: 89 UpdateControlFont(); 90 break; 91 default: 92 Test::MessageReceived(message); 93 break; 94 } 95} 96 97 98// UpdateControlText 99void 100ControlTest::UpdateControlText() 101{ 102 if (!fLongTextCheckBox || !fControl) 103 return; 104 105 fControl->SetLabel(fLongTextCheckBox->IsSelected() 106 ? "Very long label for a simple control" 107 : "Short label"); 108} 109 110 111// UpdateControlFont 112void 113ControlTest::UpdateControlFont() 114{ 115 if (!fBigFontCheckBox || !fControl || !fControl->Window()) 116 return; 117 118 // get default font lazily 119 if (!fDefaultFont) { 120 fDefaultFont = new BFont; 121 fControl->GetFont(fDefaultFont); 122 123 fBigFont = new BFont(fDefaultFont); 124 fBigFont->SetSize(20); 125 } 126 127 // set font 128 fControl->SetFont(fBigFontCheckBox->IsSelected() 129 ? fBigFont : fDefaultFont); 130 fControl->InvalidateLayout(); 131 fControl->Invalidate(); 132} 133