diff options
author | Danesh M <daneshm90@gmail.com> | 2011-12-14 15:07:14 +0000 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-08-07 01:33:43 +0100 |
commit | e46f0617366d265fa5c6804da706ceb951f335bd (patch) | |
tree | 2906582db421884d81854165fb4be63cd137ba60 /src | |
parent | a5e0b87b47e403268ae71add4963938aeae5c023 (diff) | |
download | android_packages_apps_Trebuchet-e46f0617366d265fa5c6804da706ceb951f335bd.tar.gz android_packages_apps_Trebuchet-e46f0617366d265fa5c6804da706ceb951f335bd.tar.bz2 android_packages_apps_Trebuchet-e46f0617366d265fa5c6804da706ceb951f335bd.zip |
Preferences: NumberPickerPreference
Change-Id: I1888fe530a71af1e5d3b015d4a416c98e20ee3e0
Diffstat (limited to 'src')
-rw-r--r-- | src/com/cyanogenmod/trebuchet/preference/NumberPickerPreference.java | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/trebuchet/preference/NumberPickerPreference.java b/src/com/cyanogenmod/trebuchet/preference/NumberPickerPreference.java new file mode 100644 index 000000000..5fa7c2081 --- /dev/null +++ b/src/com/cyanogenmod/trebuchet/preference/NumberPickerPreference.java @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2011 The Cyanogenmod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.cyanogenmod.trebuchet.preference; + +import android.content.Context; +import android.content.res.TypedArray; +import android.preference.Preference; +import android.preference.DialogPreference; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.NumberPicker; + +import com.cyanogenmod.trebuchet.R; + +/* + * @author Danesh + * @author nebkat + */ + +public class NumberPickerPreference extends DialogPreference { + private int mMin, mMax, mDefault; + + private String mMaxExternalKey, mMinExternalKey; + private Preference mMaxExternalPreference, mMinExternalPreference; + + private NumberPicker mNumberPicker; + + public NumberPickerPreference(Context context, AttributeSet attrs) { + super(context, attrs); + TypedArray dialogType = context.obtainStyledAttributes(attrs, + com.android.internal.R.styleable.DialogPreference, 0, 0); + TypedArray numberPickerType = context.obtainStyledAttributes(attrs, + R.styleable.NumberPickerPreference, 0, 0); + + mMaxExternalKey = numberPickerType.getString(R.styleable.NumberPickerPreference_maxExternal); + mMinExternalKey = numberPickerType.getString(R.styleable.NumberPickerPreference_minExternal); + + mMax = numberPickerType.getInt(R.styleable.NumberPickerPreference_max, 5); + mMin = numberPickerType.getInt(R.styleable.NumberPickerPreference_min, 0); + + mDefault = dialogType.getInt(com.android.internal.R.styleable.Preference_defaultValue, mMin); + + dialogType.recycle(); + numberPickerType.recycle(); + } + + + protected void onAttachedToActivity() { + // External values + if (mMaxExternalKey != null) { + Preference maxPreference = findPreferenceInHierarchy(mMaxExternalKey); + if (maxPreference != null) { + if (maxPreference instanceof NumberPickerPreference) { + mMaxExternalPreference = maxPreference; + } + } + } + if (mMinExternalKey != null) { + Preference minPreference = findPreferenceInHierarchy(mMinExternalKey); + if (minPreference != null) { + if (minPreference instanceof NumberPickerPreference) { + mMinExternalPreference = minPreference; + } + } + } + } + + @Override + protected View onCreateDialogView() { + int max = mMax; + int min = mMin; + + // External values + if (mMaxExternalKey != null && mMaxExternalPreference != null) { + max = mMaxExternalPreference.getSharedPreferences().getInt(mMaxExternalKey, mMax); + } + if (mMinExternalKey != null && mMinExternalPreference != null) { + min = mMinExternalPreference.getSharedPreferences().getInt(mMinExternalKey, mMin); + } + + LayoutInflater inflater = + (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view = inflater.inflate(R.layout.number_picker_dialog, null); + + mNumberPicker = (NumberPicker) view.findViewById(R.id.number_picker); + + // Initialize state + mNumberPicker.setMaxValue(max); + mNumberPicker.setMinValue(min); + mNumberPicker.setValue(getPersistedInt(mDefault)); + mNumberPicker.setWrapSelectorWheel(false); + + // No keyboard popup + EditText textInput = (EditText) mNumberPicker.findViewById(com.android.internal.R.id.numberpicker_input); + textInput.setCursorVisible(false); + textInput.setFocusable(false); + textInput.setFocusableInTouchMode(false); + + return view; + } + + @Override + protected void onDialogClosed(boolean positiveResult) { + if (positiveResult) { + persistInt(mNumberPicker.getValue()); + } + } + +} |