Added BScrollBar test.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27495 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2008-09-13 19:21:55 +00:00
parent 21bb6bd22b
commit 21527c4e77
5 changed files with 171 additions and 1 deletions
@@ -27,6 +27,7 @@ SimpleTest WidgetLayoutTest :
MenuBarTest.cpp
MenuFieldTest.cpp
MenuTest.cpp
ScrollBarTest.cpp
SliderTest.cpp
:
be
@@ -17,6 +17,7 @@
#include "MenuBarTest.h"
#include "MenuFieldTest.h"
#include "MenuTest.h"
#include "ScrollBarTest.h"
#include "SliderTest.h"
#include "StringView.h"
#include "Test.h"
@@ -46,6 +47,7 @@ const test_info kTestInfos[] = {
{ "BMenu", MenuTest::CreateTest },
{ "BMenuBar", MenuBarTest::CreateTest },
{ "BMenuField", MenuFieldTest::CreateTest },
{ "BScrollBar", ScrollBarTest::CreateTest },
{ "BSlider", SliderTest::CreateTest },
{ NULL, NULL }
};
@@ -0,0 +1,129 @@
/*
* Copyright 2008, Stephan Aßmus <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#include "ScrollBarTest.h"
#include <Message.h>
#include <ScrollBar.h>
#include "RadioButton.h"
#include "TestView.h"
// messages
enum {
MSG_ORIENTATION_CHANGED = 'orch'
};
// OrientationRadioButton
class ScrollBarTest::OrientationRadioButton : public LabeledRadioButton {
public:
OrientationRadioButton(const char* label, enum orientation orientation)
: LabeledRadioButton(label),
fOrientation(orientation)
{
}
enum orientation fOrientation;
};
ScrollBarTest::ScrollBarTest()
: Test("ScrollBar", NULL),
fScrollBar(new BScrollBar("scroll bar", NULL, 0, 100, B_HORIZONTAL)),
fOrientationRadioGroup(NULL)
{
SetView(fScrollBar);
}
ScrollBarTest::~ScrollBarTest()
{
delete fOrientationRadioGroup;
}
Test*
ScrollBarTest::CreateTest()
{
return new ScrollBarTest;
}
void
ScrollBarTest::ActivateTest(View* controls)
{
// the radio button group for selecting the orientation
GroupView* vGroup = new GroupView(B_VERTICAL);
vGroup->SetFrame(controls->Bounds());
vGroup->SetSpacing(0, 4);
controls->AddChild(vGroup);
fOrientationRadioGroup = new RadioButtonGroup(
new BMessage(MSG_ORIENTATION_CHANGED), this);
// horizontal
LabeledRadioButton* button = new OrientationRadioButton("Horizontal",
B_HORIZONTAL);
vGroup->AddChild(button);
fOrientationRadioGroup->AddButton(button->GetRadioButton());
// vertical
button = new OrientationRadioButton("Vertical", B_VERTICAL);
vGroup->AddChild(button);
fOrientationRadioGroup->AddButton(button->GetRadioButton());
// default to horizontal
fOrientationRadioGroup->SelectButton(0L);
// glue
vGroup->AddChild(new Glue());
}
void
ScrollBarTest::DectivateTest()
{
}
void
ScrollBarTest::MessageReceived(BMessage* message)
{
switch (message->what) {
case MSG_ORIENTATION_CHANGED:
_UpdateOrientation();
break;
default:
Test::MessageReceived(message);
break;
}
}
void
ScrollBarTest::_UpdateOrientation()
{
if (fOrientationRadioGroup == NULL)
return;
// We need to get the parent of the actually selected button, since
// that is the labeled radio button we've derived our
// BorderStyleRadioButton from.
AbstractButton* selectedButton
= fOrientationRadioGroup->SelectedButton();
View* parent = (selectedButton ? selectedButton->Parent() : NULL);
OrientationRadioButton* button = dynamic_cast<OrientationRadioButton*>(
parent);
if (button)
fScrollBar->SetOrientation(button->fOrientation);
}
@@ -0,0 +1,39 @@
/*
* Copyright 2008, Stephan Aßmus <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef WIDGET_LAYOUT_TEST_SCROLL_BAR_TEST_H
#define WIDGET_LAYOUT_TEST_SCROLL_BAR_TEST_H
#include "Test.h"
class BScrollBar;
class RadioButtonGroup;
class ScrollBarTest : public Test {
public:
ScrollBarTest();
virtual ~ScrollBarTest();
static Test* CreateTest();
virtual void ActivateTest(View* controls);
virtual void DectivateTest();
virtual void MessageReceived(BMessage* message);
private:
void _UpdateOrientation();
private:
class OrientationRadioButton;
BScrollBar* fScrollBar;
RadioButtonGroup* fOrientationRadioGroup;
};
#endif // WIDGET_LAYOUT_TEST_SCROLL_BAR_TEST_H
@@ -1,7 +1,6 @@
ChannelSlider
OptionPopup (covered by MenuField ?)
RadioButton
ScrollBar
ScrollView
StringView
TabView