package ru.shutoff.cgstarter;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
public class PreferencesFragment extends Fragment {
SharedPreferences preferences;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
return super.onCreateView(inflater, container, savedInstanceState);
}
void setCheckBox(View v, int id, final String key, boolean defValue) {
CheckBox checkBox = (CheckBox) v.findViewById(id);
checkBox.setChecked(preferences.getBoolean(key, defValue));
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor ed = preferences.edit();
ed.putBoolean(key, isChecked);
ed.commit();
}
});
}
void setCheckBox(View v, int id, final String key) {
setCheckBox(v, id, key, false);
}
void setCheckBoxSU(View v, int id, final String key) {
final CheckBox checkBox = (CheckBox) v.findViewById(id);
checkBox.setChecked(preferences.getBoolean(key, false));
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isChecked) {
SharedPreferences.Editor ed = preferences.edit();
ed.putBoolean(key, isChecked);
ed.commit();
return;
}
final AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setTitle(getString(R.string.require_su))
.setMessage(getString(R.string.require_su_msg))
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (State.doRoot(getActivity(), "", true)) {
checkBox.setChecked(true);
SharedPreferences.Editor ed = preferences.edit();
ed.putBoolean(key, true);
ed.commit();
}
dialog.dismiss();
}
})
.create();
dialog.show();
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
checkBox.setChecked(preferences.getBoolean(key, false));
}
});
}
});
}
void setCheckBox(final View v, int id, final String key, final int id_enable) {
CheckBox checkBox = (CheckBox) v.findViewById(id);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor ed = preferences.edit();
ed.putBoolean(key, isChecked);
ed.commit();
v.findViewById(id_enable).setEnabled(isChecked);
}
});
boolean isChecked = preferences.getBoolean(key, false);
checkBox.setChecked(isChecked);
v.findViewById(id_enable).setEnabled(isChecked);
}
void setSeekBar(View v, int id, final String key, int defValue) {
SeekBar seekBar = (SeekBar) v.findViewById(id);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
SharedPreferences.Editor ed = preferences.edit();
ed.putInt(key, progress);
ed.commit();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
int progress = preferences.getInt(key, defValue);
seekBar.setProgress(progress);
}
void setSeekBar(View v, int id, int id_text, final int id_msg, final String key, int defValue, final int minValue) {
final TextView tvTime = (TextView) v.findViewById(id_text);
SeekBar seekBar = (SeekBar) v.findViewById(id);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress += minValue;
SharedPreferences.Editor ed = preferences.edit();
ed.putInt(key, progress);
ed.commit();
tvTime.setText(getString(id_msg).replaceAll("%1", progress + ""));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
int progress = preferences.getInt(key, defValue);
seekBar.setProgress(progress - minValue);
tvTime.setText(getString(id_msg).replaceAll("%1", progress + ""));
}
void setSpinner(View v, int id, int id_entries, int id_values, final String key, String defValue) {
Spinner spinner = (Spinner) v.findViewById(id);
final String[] entries = getResources().getStringArray(id_entries);
final String[] values = getResources().getStringArray(id_values);
int len = entries.length;
if (len > values.length)
len = values.length;
final int length = len;
spinner.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return length;
}
@Override
public Object getItem(int position) {
return values[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.item, null);
}
TextView tv = (TextView) v.findViewById(R.id.name);
tv.setText(values[position]);
return v;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.dropdown_item, null);
}
TextView tv = (TextView) v.findViewById(R.id.name);
tv.setText(values[position]);
return v;
}
});
String value = preferences.getString(key, defValue);
for (int i = 0; i < entries.length; i++) {
if (entries[i].equals(value)) {
spinner.setSelection(i);
break;
}
}
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
SharedPreferences.Editor ed = preferences.edit();
ed.putString(key, entries[position]);
ed.commit();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}