package com.aero.control.fragments; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.text.InputType; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.aero.control.AeroActivity; import com.aero.control.R; import com.aero.control.helpers.Android.CustomTextPreference; import com.aero.control.helpers.FilePath; import java.util.ArrayList; /** * Created by Alexander Christ on 03.05.14. */ public class VoltageFragment extends PlaceHolderFragment { private PreferenceScreen root; private PreferenceCategory PrefCat; private final ArrayList<String> voltList = new ArrayList<String>(); private SharedPreferences mPrefs; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); // Load the preferences from an XML resource addPreferencesFromResource(R.layout.empty_preference); root = this.getPreferenceScreen(); setTitle(getActivity().getText(R.string.perf_voltage_control).toString()); // Load our custom preferences; loadVoltage(); } // Create our options menu; @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.voltage_menu, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { String [] voltArray = voltList.toArray(new String[0]); String exec = ""; switch (item.getItemId()) { case R.id.action_mVPlus: voltList.clear(); for (String a : voltArray) { int tmp = Integer.parseInt(a) + 25; voltList.add("" + tmp); exec = exec + " " + tmp; } executeVolt(exec); break; case R.id.action_mVMinus: voltList.clear(); for (String a : voltArray) { int tmp = Integer.parseInt(a) - 25; voltList.add("" + tmp); exec = exec + " " + tmp; } executeVolt(exec); break; } return super.onOptionsItemSelected(item); } public void loadVoltage() { String completeParamterList[] = AeroActivity.shell.getInfo(FilePath.VOLTAGE_PATH, false); // If there are already some entries, kill them all (with fire) if (PrefCat != null) root.removePreference(PrefCat); PrefCat = new PreferenceCategory(getActivity()); PrefCat.setTitle(R.string.perf_voltage_control); root.addPreference(PrefCat); String freqTmp, volTmp; for (String s : completeParamterList) { freqTmp = s.split(":")[0]; volTmp = s.split(":")[1].replace(" ", ""); voltList.add(volTmp.replace("mV", "")); // Generates our custom text preference final CustomTextPreference voltPref = new CustomTextPreference(getActivity()); voltPref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER); voltPref.setPrefSummary(volTmp); voltPref.setTitle(freqTmp); voltPref.setPrefText(freqTmp); voltPref.setText(volTmp.replace("mV", "")); voltPref.setDialogTitle(freqTmp); voltPref.setHideOnBoot(true); voltPref.setHelpEnable(false); PrefCat.addPreference(voltPref); // Custom OnChangeListener for each element in our list; voltPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object o) { String [] voltArray = voltList.toArray(new String[0]); String tmp = ""; voltArray[preference.getOrder()] = o.toString(); preference.setSummary(o.toString() + "mV"); voltPref.setPrefSummary(o.toString() + "mV"); // Clears our list so we can set multiple values voltList.clear(); for (String a : voltArray) { tmp = tmp + " " + a; voltList.add(a); } executeVolt(tmp); return true; }; }); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { /* For better KitKat+ looks; */ Preference blankedPref = new Preference(getActivity()); blankedPref.setSelectable(false); PrefCat.addPreference(blankedPref); } } // Executes the new voltage values and updates UI public void executeVolt(String exeVolt) { mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); AeroActivity.shell.setRootInfo(exeVolt, FilePath.VOLTAGE_PATH); updateUI(); } // Updates UI by iterating through the children; public void updateUI() { String [] voltArray = voltList.toArray(new String[0]); for (int i = 0; i < PrefCat.getPreferenceCount() - 1; i++) { CustomTextPreference voltPref = (CustomTextPreference)PrefCat.getPreference(i); voltPref.setSummary(voltArray[i] + "mV"); voltPref.setPrefSummary(voltArray[i] + "mV"); voltPref.setText(voltArray[i]); } } }