/* * Copyright 2017 rootkiwi * * AN2Linux-client is licensed under GNU General Public License 3. * * See LICENSE for more details. */ package kiwi.root.an2linuxclient.preferences; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.os.Bundle; import android.preference.DialogPreference; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.NumberPicker; import android.widget.TextView; import kiwi.root.an2linuxclient.R; abstract class NumberPickerPreference extends DialogPreference { private NumberPicker mNumberPicker; int mValue; private int minValue; private int maxValue; private int defaultValue; NumberPickerPreference(Context context, AttributeSet attrs, int minValue, int maxValue, int defaultValue) { super(context, attrs); this.minValue = minValue; this.maxValue = maxValue; this.defaultValue = defaultValue; setDialogLayoutResource(R.layout.numberpicker_dialog); setPositiveButtonText(android.R.string.ok); setNegativeButtonText(android.R.string.cancel); setDialogIcon(null); setDialogTitle(null); } @Override protected void showDialog(Bundle state) { super.showDialog(state); final Resources res = getContext().getResources(); final Window window = getDialog().getWindow(); Button button1 = (Button) window.findViewById(res.getIdentifier("button1", "id", "android")); Button button2 = (Button) window.findViewById(res.getIdentifier("button2", "id", "android")); button1.setTextColor(res.getColor(R.color.black)); button2.setTextColor(res.getColor(R.color.black)); } @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); TextView dialogMessageText = (TextView) view.findViewById(R.id.text_dialog_message); dialogMessageText.setText(getDialogMessage()); mNumberPicker = (NumberPicker) view.findViewById(R.id.number_picker); mNumberPicker.setMinValue(minValue); mNumberPicker.setMaxValue(maxValue); mNumberPicker.setValue(mValue); mNumberPicker.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); } @Override protected void onDialogClosed(boolean positiveResult) { // When the user selects "OK", persist the new value if (positiveResult) { mValue = mNumberPicker.getValue(); findPreferenceInHierarchy(getKey()).setSummary(getSummaryString()); persistInt(mValue); } } String getSummaryString(){ return String.valueOf(mValue); } @Override protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) { if (restorePersistedValue) { // Restore existing state mValue = getPersistedInt(this.defaultValue); } else { // Set default state from the XML attribute mValue = (Integer) defaultValue; persistInt(mValue); } } @Override protected Object onGetDefaultValue(TypedArray a, int index) { return a.getInteger(index, defaultValue); } }