package org.exalm.tabletkat; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.*; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import java.util.List; public class TabletKatSettings extends PreferenceActivity { public static final String ACTION_PREFERENCE_CHANGED = "org.exalm.tabletkat.PREFERENCE_CHANGED"; @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if (!onIsMultiPane()) { setupSimplePreferencesScreen(); } } @Override protected boolean isValidFragment(String fragmentName) { return true; } private void setupSimplePreferencesScreen() { getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE); addPreferencesFromResource(R.xml.pref_general); PreferenceCategory fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_recents); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_recents); fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_launcher); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_launcher); fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_settings); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_settings); fakeHeader = new PreferenceCategory(this); fakeHeader.setTitle(R.string.pref_header_about); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.pref_about); setUpPreferenceChangeListener(findPreference("enable_tablet_ui")); setUpPreferenceChangeListener(findPreference("extended_settings")); setUpPreferenceChangeListener(findPreference("ics_clock_font")); setUpPreferenceChangeListener(findPreference("battery_percents")); setUpPreferenceChangeListener(findPreference("enable_mod_recents")); setUpPreferenceChangeListener(findPreference("overlay_recents")); if (getString(R.string.pref_summary_translation).isEmpty()) { getPreferenceScreen().removePreference(findPreference("translation")); } } @Override public void onBuildHeaders(List<Header> target) { if (!onIsMultiPane()) { return; } loadHeadersFromResource(R.xml.pref_headers, target); } private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object value) { String stringValue = value.toString(); if (preference instanceof ListPreference) { ListPreference listPreference = (ListPreference) preference; int index = listPreference.findIndexOfValue(stringValue); preference.setSummary( index >= 0 ? listPreference.getEntries()[index] : null); } else { preference.setSummary(stringValue); } return true; } }; private static Preference.OnPreferenceChangeListener sPreferenceChangeListener = new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Intent i = new Intent(ACTION_PREFERENCE_CHANGED); i.putExtra("key", preference.getKey()); if (newValue instanceof Boolean){ i.putExtra("boolValue", (Boolean) newValue); } if (newValue instanceof Integer){ i.putExtra("intValue", (Integer) newValue); } i.putExtra("stringValue", "" + newValue); preference.getContext().sendBroadcast(i); return true; } }; private static void bindPreferenceSummaryToValue(Preference preference) { preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener); sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, PreferenceManager .getDefaultSharedPreferences(preference.getContext()) .getString(preference.getKey(), "")); } private static void setUpPreferenceChangeListener(Preference preference) { preference.setOnPreferenceChangeListener(sPreferenceChangeListener); } public static class GeneralPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE); addPreferencesFromResource(R.xml.pref_general); setUpPreferenceChangeListener(findPreference("enable_tablet_ui")); setUpPreferenceChangeListener(findPreference("extended_settings")); setUpPreferenceChangeListener(findPreference("ics_clock_font")); setUpPreferenceChangeListener(findPreference("battery_percents")); } } public static class RecentsPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE); addPreferencesFromResource(R.xml.pref_recents); setUpPreferenceChangeListener(findPreference("enable_mod_recents")); setUpPreferenceChangeListener(findPreference("overlay_recents")); } } public static class LauncherPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE); addPreferencesFromResource(R.xml.pref_launcher); } } public static class SettingsPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE); addPreferencesFromResource(R.xml.pref_settings); } } public static class AboutPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE); addPreferencesFromResource(R.xml.pref_about); if (getString(R.string.pref_summary_translation).isEmpty()) { getPreferenceScreen().removePreference(findPreference("translation")); } } } }