diff --git a/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.cpp b/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.cpp index 04aa7b0fe4..7002b8087a 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include "CheckBox.h" @@ -16,7 +17,8 @@ enum { - MSG_CHANGE_BUTTON_TEXT = 'lgbt' + MSG_CHANGE_BUTTON_TEXT = 'chbt', + MSG_CHANGE_BUTTON_FONT = 'chbf' }; @@ -25,7 +27,10 @@ ButtonTest::ButtonTest() : Test("Button", NULL), fButton(new BButton(BRect(0, 0, 9, 9), "test button", "", (BMessage*)NULL, B_FOLLOW_NONE)), - fLongTextCheckBox(NULL) + fLongTextCheckBox(NULL), + fBigFontCheckBox(NULL), + fDefaultFont(NULL), + fBigFont(NULL) { _SetButtonText(false); @@ -36,6 +41,8 @@ ButtonTest::ButtonTest() // destructor ButtonTest::~ButtonTest() { + delete fDefaultFont; + delete fBigFont; } @@ -45,18 +52,23 @@ ButtonTest::ActivateTest(View* controls) { GroupView* group = new GroupView(B_VERTICAL); group->SetFrame(controls->Bounds()); + group->SetSpacing(0, 8); controls->AddChild(group); - GroupView* longTextGroup = new GroupView(B_HORIZONTAL); - group->AddChild(longTextGroup); - fLongTextCheckBox = new CheckBox(new BMessage(MSG_CHANGE_BUTTON_TEXT), - this); - longTextGroup->AddChild(fLongTextCheckBox); - longTextGroup->AddChild(new StringView(" Long Button Text")); + // long button text + fLongTextCheckBox = new LabeledCheckBox("Long Button Text", + new BMessage(MSG_CHANGE_BUTTON_TEXT), this); + group->AddChild(fLongTextCheckBox); + + // big font + fBigFontCheckBox = new LabeledCheckBox("Big Button Font", + new BMessage(MSG_CHANGE_BUTTON_FONT), this); + group->AddChild(fBigFontCheckBox); group->AddChild(new Glue()); _SetButtonText(false); + _SetButtonFont(false); } @@ -75,6 +87,9 @@ ButtonTest::MessageReceived(BMessage* message) case MSG_CHANGE_BUTTON_TEXT: _SetButtonText(fLongTextCheckBox->IsSelected()); break; + case MSG_CHANGE_BUTTON_FONT: + _SetButtonFont(fBigFontCheckBox->IsSelected()); + break; default: Test::MessageReceived(message); break; @@ -91,3 +106,25 @@ ButtonTest::_SetButtonText(bool longText) fButton->SetLabel(longText ? "very long text for a simple button" : "Ooh, press me!"); } + + +// _SetButtonFont +void +ButtonTest::_SetButtonFont(bool bigFont) +{ + if (fBigFontCheckBox) + fBigFontCheckBox->SetSelected(bigFont); + if (fButton->Window()) { + // get default font lazily + if (!fDefaultFont) { + fDefaultFont = new BFont; + fButton->GetFont(fDefaultFont); + + fBigFont = new BFont(fDefaultFont); + fBigFont->SetSize(20); + } + + // set font + fButton->SetFont(bigFont ? fBigFont : fDefaultFont); + } +} diff --git a/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.h b/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.h index df730695d6..fd67d8323a 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.h +++ b/src/tests/kits/interface/layout/widget_layout_test/ButtonTest.h @@ -10,7 +10,8 @@ class BButton; -class CheckBox; +class BFont; +class LabeledCheckBox; class View; @@ -26,10 +27,14 @@ public: private: void _SetButtonText(bool longText); + void _SetButtonFont(bool bigFont); private: BButton* fButton; - CheckBox* fLongTextCheckBox; + LabeledCheckBox* fLongTextCheckBox; + LabeledCheckBox* fBigFontCheckBox; + BFont* fDefaultFont; + BFont* fBigFont; }; diff --git a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp index 24833f7982..46a3fd07d7 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp @@ -7,6 +7,11 @@ #include +#include "StringView.h" + + +// #pragma mark - CheckBox + CheckBox::CheckBox(BMessage* message, BMessenger target) : View(BRect(0, 0, 12, 12)), @@ -120,3 +125,40 @@ CheckBox::_PressedUpdate(BPoint where) Invalidate(); } } + + +// #pragma mark - LabeledCheckBox + + +LabeledCheckBox::LabeledCheckBox(const char* label, BMessage* message, + BMessenger target) + : GroupView(B_HORIZONTAL), + fCheckBox(new CheckBox(message, target)) +{ + SetSpacing(8, 0); + + AddChild(fCheckBox); + if (label) + AddChild(new StringView(label)); +} + + +void +LabeledCheckBox::SetTarget(BMessenger messenger) +{ + fCheckBox->SetTarget(messenger); +} + + +void +LabeledCheckBox::SetSelected(bool selected) +{ + fCheckBox->SetSelected(selected); +} + + +bool +LabeledCheckBox::IsSelected() const +{ + return fCheckBox->IsSelected(); +} diff --git a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.h b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.h index 1bd9894324..2b36ffe0ff 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.h +++ b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.h @@ -8,9 +8,10 @@ #include -#include "View.h" +#include "GroupView.h" +// CheckBox class CheckBox : public View, public BInvoker { public: CheckBox(BMessage* message = NULL, @@ -41,4 +42,21 @@ private: }; +// LabeledCheckBox +class LabeledCheckBox : public GroupView { +public: + LabeledCheckBox(const char* label, + BMessage* message = NULL, + BMessenger target = BMessenger()); + + void SetTarget(BMessenger messenger); + + void SetSelected(bool selected); + bool IsSelected() const; + +private: + CheckBox* fCheckBox; +}; + + #endif // WIDGET_LAYOUT_TEST_CHECK_BOX_H diff --git a/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp b/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp index 08ac08a27b..a0523dc79a 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp @@ -82,14 +82,11 @@ public: fMinHeightView); // max (with checkbox) - GroupView* unlimitedMaxGroup = new GroupView(B_HORIZONTAL); - fUnlimitedMaxSizeCheckBox = new CheckBox( + fUnlimitedMaxSizeCheckBox = new LabeledCheckBox("override", new BMessage(MSG_UNLIMITED_MAX_SIZE_CHANGED), this); - unlimitedMaxGroup->AddChild(fUnlimitedMaxSizeCheckBox); - unlimitedMaxGroup->AddChild(new StringView(" override")); _CreateSizeViews(sizeViewsGroup, "max: ", fMaxWidthView, - fMaxHeightView, unlimitedMaxGroup); + fMaxHeightView, fUnlimitedMaxSizeCheckBox); // preferred _CreateSizeViews(sizeViewsGroup, "preferred: ", fPreferredWidthView, @@ -253,7 +250,7 @@ private: StringView* fPreferredHeightView; StringView* fCurrentWidthView; StringView* fCurrentHeightView; - CheckBox* fUnlimitedMaxSizeCheckBox; + LabeledCheckBox* fUnlimitedMaxSizeCheckBox; };