/*
* TV-Browser for Android
* Copyright (C) 2014 René Mach (rene@tvbrowser.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to use, copy, modify or merge the Software,
* furthermore to publish and distribute the Software free of charge without modifications and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.tvbrowser.settings;
import android.content.Context;
import android.content.res.TypedArray;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.NumberPicker;
public class NumberPreference extends DialogPreference {
private NumberPicker mNumberPicker;
private int mCurrentNumber;
private int mMinValue;
private int mMaxValue;
public NumberPreference(Context context, AttributeSet attrs) {
super(context, attrs);
String xmlns = "http://schemas.android.com/apk/res/org.tvbrowser.tvbrowser";
mMinValue = attrs.getAttributeIntValue(xmlns, "minValue", 0);
mMaxValue = attrs.getAttributeIntValue(xmlns, "maxValue", 100);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
}
@Override
protected View onCreateDialogView() {
mNumberPicker = new NumberPicker(getContext());
return mNumberPicker;
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
mNumberPicker.setMinValue(mMinValue);
mNumberPicker.setMaxValue(mMaxValue);
mNumberPicker.setValue(mCurrentNumber);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if(positiveResult) {
mCurrentNumber = mNumberPicker.getValue();
setSummary(String.valueOf(mCurrentNumber));
if (callChangeListener(mCurrentNumber)) {
persistInt(mCurrentNumber);
}
}
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return(a.getInt(index, 0));
}
@Override
protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
if(restorePersistedValue) {
if(defaultValue == null) {
mCurrentNumber = getPersistedInt(0);
}
else {
mCurrentNumber = getPersistedInt((Integer)defaultValue);
}
}
else {
mCurrentNumber = (Integer)defaultValue;
}
setSummary(String.valueOf(mCurrentNumber));
}
}