From f702dfc372f6b2f39cbce1aace229778690352af Mon Sep 17 00:00:00 2001 From: Maxime Graulich <maxime.graulich@gmail.com> Date: Wed, 9 Apr 2014 13:13:45 +0000 Subject: [PATCH] Android: add stepper --- .../src/org/geuz/onelab/ParameterNumber.java | 17 +++++ .../Android/src/org/geuz/onelab/Stepper.java | 65 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 contrib/mobile/Android/src/org/geuz/onelab/Stepper.java diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java index 7e85b1b2eb..379f2b1835 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java @@ -27,6 +27,7 @@ public class ParameterNumber extends Parameter{ private Spinner _spinner; private CheckBox _checkbox; private EditText _edittext; + private Stepper _stepper; public ParameterNumber(Context context, Gmsh gmsh, String name){ super(context, gmsh, name); @@ -71,6 +72,12 @@ public class ParameterNumber extends Parameter{ { _edittext.setText(""+Math.round(_value*Math.pow(10, nDecimal))/Math.pow(10, nDecimal)); } + else if(_stepper != null) + { + _stepper.setMaximum((int)Math.round(_max)); + _stepper.setMinimum((int)Math.round(_min)); + _stepper.setValue((int)Math.round(_value)); + } } public void setValue(double value) { @@ -154,6 +161,8 @@ public class ParameterNumber extends Parameter{ // ... if(nLabels < 1 && _step == 0) _edittext = new EditText(_context); + else if(_step == 1) + _stepper = new Stepper(_context); else if(nLabels < 1) _bar = new SeekBar(_context); this.update(); @@ -236,6 +245,14 @@ public class ParameterNumber extends Parameter{ }); } + else if(_stepper != null) { + paramLayout.addView(_stepper); + _stepper.setOnValueChangedListener(new Stepper.OnValueChangedListener() { + public void onValueChanged() { + setValue(_stepper.getValue()); + } + }); + } return paramLayout; } private OnParameterChangedListener mListener; diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java b/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java new file mode 100644 index 0000000000..afcdb6a761 --- /dev/null +++ b/contrib/mobile/Android/src/org/geuz/onelab/Stepper.java @@ -0,0 +1,65 @@ +package org.geuz.onelab; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.Button; +import android.widget.EditText; + + +class Stepper extends LinearLayout{ + + private int _min, _max, _val; + private Button _incBtn, _decBtn; + private EditText _valTxt; + private OnValueChangedListener _listener; + + public Stepper(Context context){ + super(context); + _max = _min = _val = 0; + _incBtn = new Button(context); + _decBtn = new Button(context); + _valTxt = new EditText(context); + _incBtn.setText("+"); + _decBtn.setText("-"); + _valTxt.setText(Integer.toString(_val)); + this.addView(_decBtn); + this.addView(_valTxt); + this.addView(_incBtn); + _incBtn.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + inc(); + } + }); + _decBtn.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + dec(); + } + }); + } + + public interface OnValueChangedListener { + public void onValueChanged(); + } + + + public void inc(){setValue(_val+1);} + public void dec(){setValue(_val-1);} + + public void setOnValueChangedListener(OnValueChangedListener listener) {_listener = listener;} + public void setMaximum(int max){_max = max;} + public void setMinimum(int min){_min = min;} + public void setValue(int val){ + if(_max > _min) { + if(val == _max) _incBtn.setEnabled(false); + else if(val == _min) _decBtn.setEnabled(false); + else {_incBtn.setEnabled(true); _decBtn.setEnabled(true);} + } + _val = val; + _valTxt.setText(Integer.toString(_val)); + if(_listener != null) _listener.onValueChanged(); + } + public int getMaximum(){return _max;} + public int getMinimum(){return _min;} + public int getValue(){return _val;} +} -- GitLab