/* * TV-Browser for Android * Copyright (C) 2013 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 ColumnWidthPreference extends DialogPreference { private static final int STEP = 10; private static final int MIN_VALUE = 100; private static final int MAX_VALUE = 300; private static final int DEFAULT_VALUE = 200; private NumberPicker mNumberPicker; private int mWidth; public ColumnWidthPreference(Context context, AttributeSet attrs) { super(context, attrs); setPositiveButtonText(android.R.string.ok); setNegativeButtonText(android.R.string.cancel); mWidth = DEFAULT_VALUE; } @Override protected View onCreateDialogView() { mNumberPicker = new NumberPicker(getContext()); mNumberPicker.setMinValue(0); mNumberPicker.setMaxValue((MAX_VALUE - MIN_VALUE) / 10); mNumberPicker.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS); String[] displayedValues = new String[mNumberPicker.getMaxValue() + 1]; for(int i = 0; i < displayedValues.length; i++) { displayedValues[i] = String.valueOf(i * STEP + MIN_VALUE); } mNumberPicker.setDisplayedValues(displayedValues); return mNumberPicker; } @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); mNumberPicker.setValue((mWidth - MIN_VALUE) / STEP); } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if(positiveResult) { mWidth = mNumberPicker.getValue() * STEP + MIN_VALUE; setSummary(String.valueOf(mWidth)); if (callChangeListener(mWidth)) { persistInt(mWidth); } } } @Override protected Object onGetDefaultValue(TypedArray a, int index) { return(a.getInt(index, DEFAULT_VALUE)); } @Override protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) { if(restorePersistedValue) { if(defaultValue == null) { mWidth = getPersistedInt(0); } else { mWidth = getPersistedInt((Integer)defaultValue); } } else { mWidth = (Integer)defaultValue; } setSummary(String.valueOf(mWidth)); } }