Add +/- buttons to integer sliders for fine adjustment

This commit is contained in:
Henrik Rydgård
2013-12-06 15:01:34 +01:00
parent 26dfe75882
commit 59202a0dfc
3 changed files with 25 additions and 3 deletions
+18 -1
View File
@@ -305,10 +305,27 @@ void PopupSliderChoiceFloat::Draw(UIContext &dc) {
dc.DrawText(temp, bounds_.x2() - 12, bounds_.centerY(), 0xFFFFFFFF, ALIGN_RIGHT | ALIGN_VCENTER);
}
EventReturn SliderPopupScreen::OnDecrease(EventParams &params) {
sliderValue_--;
slider_->Clamp();
return EVENT_DONE;
}
EventReturn SliderPopupScreen::OnIncrease(EventParams &params) {
sliderValue_++;
slider_->Clamp();
return EVENT_DONE;
}
void SliderPopupScreen::CreatePopupContents(UI::ViewGroup *parent) {
using namespace UI;
sliderValue_ = *value_;
slider_ = parent->Add(new Slider(&sliderValue_, minValue_, maxValue_, new LinearLayoutParams(UI::Margins(10, 5))));
LinearLayout *lin = parent->Add(new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(UI::Margins(10, 5))));
slider_ = new Slider(&sliderValue_, minValue_, maxValue_, new LinearLayoutParams(1.0f));
lin->Add(slider_);
lin->Add(new Button(" - "))->OnClick.Handle(this, &SliderPopupScreen::OnDecrease);
lin->Add(new Button(" + "))->OnClick.Handle(this, &SliderPopupScreen::OnIncrease);
UI::SetFocusedView(slider_);
}
+2
View File
@@ -120,6 +120,8 @@ public:
Event OnChange;
private:
EventReturn OnDecrease(EventParams &params);
EventReturn OnIncrease(EventParams &params);
virtual void OnCompleted(DialogResult result);
Slider *slider_;
int *value_;
+5 -2
View File
@@ -446,8 +446,10 @@ public:
virtual void Touch(const TouchInput &input);
virtual void GetContentDimensions(const UIContext &dc, float &w, float &h) const;
void SetShowPercent(bool s) { showPercent_ = s; }
private:
// OK to call this from the outside after having modified *value_
void Clamp();
private:
int *value_;
bool showPercent_;
int minValue_;
@@ -465,8 +467,9 @@ public:
virtual void Touch(const TouchInput &input);
virtual void GetContentDimensions(const UIContext &dc, float &w, float &h) const;
private:
// OK to call this from the outside after having modified *value_
void Clamp();
private:
float *value_;
float minValue_;
float maxValue_;