package com.mediamonks.googleflip.util; import android.content.Context; import android.widget.SeekBar; import android.widget.TextView; import com.pixplicity.easyprefs.library.Prefs; /** * Seek bar controller for float preference values */ public class FloatPrefSeekBarController implements SeekBar.OnSeekBarChangeListener { private Context _context; private SeekBar _seekBar; private TextView _label; private int _stringId; private String _prefsKey; private float _minValue; private float _maxValue; private float _defaultValue; /** * * @param context Context * @param seekBar SeekBar instance to control * @param label TextView to show values * @param stringId id of string to use for label * @param prefsKey key in preferences to retrieve/store value */ public FloatPrefSeekBarController(Context context, SeekBar seekBar, TextView label, int stringId, String prefsKey) { _context = context; _seekBar = seekBar; _label = label; _stringId = stringId; _prefsKey = prefsKey; _seekBar.setOnSeekBarChangeListener(this); } public void initValues(float minValue, float maxValue, float defaultValue) { _minValue = minValue; _maxValue = maxValue; _defaultValue = defaultValue; if (!Prefs.contains(_prefsKey)) { Prefs.putFloat(_prefsKey, defaultValue); } _seekBar.setProgress(getProgress()); updateLabel(); } private float getValue() { return MathUtil.getValueFromProgress(_seekBar.getProgress(), _minValue, _maxValue); } private int getProgress() { return MathUtil.getProgressFromValue(Prefs.getFloat(_prefsKey, _defaultValue), _minValue, _maxValue); } private void updateLabel() { _label.setText(_context.getString(_stringId, getValue())); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { updateLabel(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { updateLabel(); Prefs.putFloat(_prefsKey, getValue()); } }