From fe5d1557e46ce2e2cd9f4abc733f17115050f58e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Wed, 16 Jul 2008 18:42:37 +0000 Subject: [PATCH] Also test the UpdateText() behavior. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26448 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../widget_layout_test/tests/SliderTest.cpp | 53 +++++++++++++++++-- .../widget_layout_test/tests/SliderTest.h | 7 ++- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.cpp b/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.cpp index 075be4652a..9f9b3de551 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.cpp @@ -11,6 +11,7 @@ #include #include +#include "CheckBox.h" #include "GroupView.h" #include "RadioButton.h" #include "TestView.h" @@ -23,10 +24,32 @@ enum { MSG_HASH_MARKS_CHANGED = 'hmch', MSG_BAR_THICKNESS_CHANGED = 'btch', MSG_LABEL_CHANGED = 'lbch', - MSG_LIMIT_LABELS_CHANGED = 'lmch' + MSG_LIMIT_LABELS_CHANGED = 'lmch', + MSG_UPDATE_TEXT_CHANGED = 'utch' }; +// TestSlider +class SliderTest::TestSlider : public BSlider { +public: + TestSlider() + : BSlider("test slider", "Label", NULL, 1, 100, B_HORIZONTAL), + fExportUpdateText(false) + { + } + + virtual char* UpdateText() const + { + if (!fExportUpdateText) + return NULL; + sprintf(fUpdateText, "%ld", Value()); + return fUpdateText; + } + + mutable char fUpdateText[32]; + bool fExportUpdateText; +}; + // OrientationRadioButton class SliderTest::OrientationRadioButton : public LabeledRadioButton { public: @@ -110,13 +133,14 @@ public: // constructor SliderTest::SliderTest() : Test("Slider", NULL), - fSlider(new BSlider("test slider", "Label", NULL, 1, 100, B_HORIZONTAL)), + fSlider(new TestSlider()), fOrientationRadioGroup(NULL), fThumbStyleRadioGroup(NULL), fHashMarkLocationRadioGroup(NULL), fBarThicknessRadioGroup(NULL), fLabelRadioGroup(NULL), - fLimitLabelsRadioGroup(NULL) + fLimitLabelsRadioGroup(NULL), + fUpdateTextCheckBox(NULL) { SetView(fSlider); } @@ -321,6 +345,14 @@ SliderTest::ActivateTest(View* controls) // default to no limit labels fLimitLabelsRadioGroup->SelectButton(0L); + // spacing + group->AddChild(new VStrut(10)); + + // update text + fUpdateTextCheckBox = new LabeledCheckBox("Update text", + new BMessage(MSG_UPDATE_TEXT_CHANGED), this); + group->AddChild(fUpdateTextCheckBox); + // glue group->AddChild(new Glue()); @@ -357,6 +389,9 @@ SliderTest::MessageReceived(BMessage* message) case MSG_LIMIT_LABELS_CHANGED: _UpdateLimitLabels(); break; + case MSG_UPDATE_TEXT_CHANGED: + _UpdateUpdateText(); + break; default: Test::MessageReceived(message); break; @@ -470,3 +505,15 @@ SliderTest::_UpdateLimitLabels() } } +// _UpdateUpdateText +void +SliderTest::_UpdateUpdateText() +{ + if (!fUpdateTextCheckBox + || fUpdateTextCheckBox->IsSelected() == fSlider->fExportUpdateText) + return; + + fSlider->fExportUpdateText = fUpdateTextCheckBox->IsSelected(); + fSlider->UpdateTextChanged(); +} + diff --git a/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.h b/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.h index b4001460ed..0aa9fa0b87 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.h +++ b/src/tests/kits/interface/layout/widget_layout_test/tests/SliderTest.h @@ -10,7 +10,7 @@ #include "Test.h" -class BSlider; +class LabeledCheckBox; class RadioButtonGroup; @@ -33,8 +33,10 @@ private: void _UpdateBarThickness(); void _UpdateLabel(); void _UpdateLimitLabels(); + void _UpdateUpdateText(); private: + class TestSlider; class OrientationRadioButton; class ThumbStyleRadioButton; class HashMarkLocationRadioButton; @@ -42,13 +44,14 @@ private: class LabelRadioButton; class LimitLabelsRadioButton; - BSlider* fSlider; + TestSlider* fSlider; RadioButtonGroup* fOrientationRadioGroup; RadioButtonGroup* fThumbStyleRadioGroup; RadioButtonGroup* fHashMarkLocationRadioGroup; RadioButtonGroup* fBarThicknessRadioGroup; RadioButtonGroup* fLabelRadioGroup; RadioButtonGroup* fLimitLabelsRadioGroup; + LabeledCheckBox* fUpdateTextCheckBox; };