package com.rattlehead666.performancetweaker.app.ui.fragments; import com.rattlehead666.performancetweaker.app.R; import com.rattlehead666.performancetweaker.app.utils.Constants; import com.rattlehead666.performancetweaker.app.utils.IOUtils; import android.content.Context; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class IOControlFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { String[] availableSchedulers, readAheadValues; String currentScheduler; String currentReadAhead; ListPreference IOScheduler; ListPreference ReadAheadCache; Context context; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_pref_container, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); addPreferencesFromResource(R.xml.io_preferences); IOScheduler = (ListPreference) findPreference("disk_scheduler"); ReadAheadCache = (ListPreference) findPreference("read_ahead_cache"); context = getActivity().getBaseContext(); populatePreferences(); IOScheduler.setOnPreferenceChangeListener(this); ReadAheadCache.setOnPreferenceChangeListener(this); } private void populatePreferences() { updateData(); if (availableSchedulers != null) { IOScheduler.setEntries(availableSchedulers); IOScheduler.setEntryValues(availableSchedulers); ReadAheadCache.setEntries(readAheadValues); ReadAheadCache.setEntryValues(readAheadValues); } if (currentScheduler != null) { IOScheduler.setValue(currentScheduler); IOScheduler.setSummary(currentScheduler); } if (currentReadAhead != null) { ReadAheadCache.setValue(currentReadAhead); ReadAheadCache.setSummary(currentReadAhead); } } @Override public boolean onPreferenceChange(Preference preference, Object o) { if (preference.getKey().equals("disk_scheduler")) { IOUtils.setDiskScheduler(o.toString(), context); } if (preference.getKey().equals("read_ahead_cache")) { IOUtils.setReadAhead(o.toString(), context); } updateData(); updatePreferences(); return true; } public void updateData() { availableSchedulers = IOUtils.getAvailableIOScheduler(); currentScheduler = IOUtils.getCurrentIOScheduler(); readAheadValues = Constants.readAheadKb; currentReadAhead = IOUtils.getReadAhead(); } public void updatePreferences() { IOScheduler.setSummary(currentScheduler); ReadAheadCache.setSummary(currentReadAhead); } }