summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2011-12-14 15:07:14 +0000
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-08-07 01:33:43 +0100
commite46f0617366d265fa5c6804da706ceb951f335bd (patch)
tree2906582db421884d81854165fb4be63cd137ba60 /src
parenta5e0b87b47e403268ae71add4963938aeae5c023 (diff)
downloadandroid_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.java126
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());
+ }
+ }
+
+}