/*
* Tint Browser for Android
*
* Copyright (C) 2012 - to infinity and beyond J. Devauchelle and contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package com.seal.ui.preferences;
import android.content.Context;
import android.content.SharedPreferences.Editor;
import android.preference.DialogPreference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import com.seal.R;
public abstract class BaseSpinnerPreference extends DialogPreference {
private Context mContext;
private View mContainer;
protected Spinner mSpinner;
protected EditText mEditText;
public BaseSpinnerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}
@Override
protected View onCreateDialogView() {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mContainer = inflater.inflate(R.layout.spinner_preference, null);
return mContainer;
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
mSpinner = (Spinner) mContainer.findViewById(R.id.SpinnerPreferenceSpinner);
mEditText = (EditText) mContainer.findViewById(R.id.SpinnerPreferenceEdit);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getContext(), getTitleArray(), android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
setEditInputType();
setSpinnerValueFromPreferences();
mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
onSpinnerItemSelected(position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
Editor editor = PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
editor.putString(getKey(), mEditText.getText().toString());
editor.commit();
}
}
protected void showKeyboard() {
InputMethodManager mgr = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(mEditText, InputMethodManager.SHOW_IMPLICIT);
}
protected void hideKeyboard() {
InputMethodManager mgr = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
}
protected abstract int getTitleArray();
protected abstract void setEditInputType();
protected abstract void setSpinnerValueFromPreferences();
protected abstract void onSpinnerItemSelected(int position);
}