Also test the UpdateText() behavior.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26448 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2008-07-16 18:42:37 +00:00
parent 1ae794159a
commit fe5d1557e4
2 changed files with 55 additions and 5 deletions
@@ -11,6 +11,7 @@
#include <Message.h> #include <Message.h>
#include <Slider.h> #include <Slider.h>
#include "CheckBox.h"
#include "GroupView.h" #include "GroupView.h"
#include "RadioButton.h" #include "RadioButton.h"
#include "TestView.h" #include "TestView.h"
@@ -23,10 +24,32 @@ enum {
MSG_HASH_MARKS_CHANGED = 'hmch', MSG_HASH_MARKS_CHANGED = 'hmch',
MSG_BAR_THICKNESS_CHANGED = 'btch', MSG_BAR_THICKNESS_CHANGED = 'btch',
MSG_LABEL_CHANGED = 'lbch', 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 // OrientationRadioButton
class SliderTest::OrientationRadioButton : public LabeledRadioButton { class SliderTest::OrientationRadioButton : public LabeledRadioButton {
public: public:
@@ -110,13 +133,14 @@ public:
// constructor // constructor
SliderTest::SliderTest() SliderTest::SliderTest()
: Test("Slider", NULL), : Test("Slider", NULL),
fSlider(new BSlider("test slider", "Label", NULL, 1, 100, B_HORIZONTAL)), fSlider(new TestSlider()),
fOrientationRadioGroup(NULL), fOrientationRadioGroup(NULL),
fThumbStyleRadioGroup(NULL), fThumbStyleRadioGroup(NULL),
fHashMarkLocationRadioGroup(NULL), fHashMarkLocationRadioGroup(NULL),
fBarThicknessRadioGroup(NULL), fBarThicknessRadioGroup(NULL),
fLabelRadioGroup(NULL), fLabelRadioGroup(NULL),
fLimitLabelsRadioGroup(NULL) fLimitLabelsRadioGroup(NULL),
fUpdateTextCheckBox(NULL)
{ {
SetView(fSlider); SetView(fSlider);
} }
@@ -321,6 +345,14 @@ SliderTest::ActivateTest(View* controls)
// default to no limit labels // default to no limit labels
fLimitLabelsRadioGroup->SelectButton(0L); 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 // glue
group->AddChild(new Glue()); group->AddChild(new Glue());
@@ -357,6 +389,9 @@ SliderTest::MessageReceived(BMessage* message)
case MSG_LIMIT_LABELS_CHANGED: case MSG_LIMIT_LABELS_CHANGED:
_UpdateLimitLabels(); _UpdateLimitLabels();
break; break;
case MSG_UPDATE_TEXT_CHANGED:
_UpdateUpdateText();
break;
default: default:
Test::MessageReceived(message); Test::MessageReceived(message);
break; break;
@@ -470,3 +505,15 @@ SliderTest::_UpdateLimitLabels()
} }
} }
// _UpdateUpdateText
void
SliderTest::_UpdateUpdateText()
{
if (!fUpdateTextCheckBox
|| fUpdateTextCheckBox->IsSelected() == fSlider->fExportUpdateText)
return;
fSlider->fExportUpdateText = fUpdateTextCheckBox->IsSelected();
fSlider->UpdateTextChanged();
}
@@ -10,7 +10,7 @@
#include "Test.h" #include "Test.h"
class BSlider; class LabeledCheckBox;
class RadioButtonGroup; class RadioButtonGroup;
@@ -33,8 +33,10 @@ private:
void _UpdateBarThickness(); void _UpdateBarThickness();
void _UpdateLabel(); void _UpdateLabel();
void _UpdateLimitLabels(); void _UpdateLimitLabels();
void _UpdateUpdateText();
private: private:
class TestSlider;
class OrientationRadioButton; class OrientationRadioButton;
class ThumbStyleRadioButton; class ThumbStyleRadioButton;
class HashMarkLocationRadioButton; class HashMarkLocationRadioButton;
@@ -42,13 +44,14 @@ private:
class LabelRadioButton; class LabelRadioButton;
class LimitLabelsRadioButton; class LimitLabelsRadioButton;
BSlider* fSlider; TestSlider* fSlider;
RadioButtonGroup* fOrientationRadioGroup; RadioButtonGroup* fOrientationRadioGroup;
RadioButtonGroup* fThumbStyleRadioGroup; RadioButtonGroup* fThumbStyleRadioGroup;
RadioButtonGroup* fHashMarkLocationRadioGroup; RadioButtonGroup* fHashMarkLocationRadioGroup;
RadioButtonGroup* fBarThicknessRadioGroup; RadioButtonGroup* fBarThicknessRadioGroup;
RadioButtonGroup* fLabelRadioGroup; RadioButtonGroup* fLabelRadioGroup;
RadioButtonGroup* fLimitLabelsRadioGroup; RadioButtonGroup* fLimitLabelsRadioGroup;
LabeledCheckBox* fUpdateTextCheckBox;
}; };