package org.schmivits.airball.phone; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.view.View; public class PreferencesActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.preferences); findViewById(R.id.return_to_display).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(PreferencesActivity.this, StartViewActivity.class)); PreferencesActivity.this.finish(); } }); } public static class MainScreen extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { private static final int[] mListPreferences = { R.string.pref_xplane_ip_protocol_key, R.string.pref_view_type_key, R.string.pref_data_source_key, }; private static final int[] mEditTextPreferences = { R.string.pref_xplane_ip_port_key, R.string.pref_alpha_min_key, R.string.pref_alpha_x_key, R.string.pref_alpha_y_key, R.string.pref_alpha_ref_key, R.string.pref_alpha_s_key, R.string.pref_beta_full_scale_key, R.string.pref_v_s0_key, R.string.pref_v_s1_key, R.string.pref_v_fe_key, R.string.pref_v_no_key, R.string.pref_v_ne_key, }; public MainScreen() { super(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); update(); } @Override public void onResume() { super.onResume(); getPreferenceManager().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { super.onPause(); getPreferenceManager().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { update(); } private Preference findPreference(int id) { return findPreference(getString(id)); } private void updateListPreference(int id) { ListPreference lp = (ListPreference) findPreference(id); lp.setSummary(lp.getEntry()); } private void updateEditTextPreference(int id) { EditTextPreference ep = (EditTextPreference) findPreference(id); ep.setSummary(ep.getText()); } private void updateIpOptionsEnabled() { ListPreference dataSource = (ListPreference) findPreference(R.string.pref_data_source_key); boolean enabled = getString(R.string.pref_data_source_value_xplane_udp).equals( dataSource.getValue()); findPreference(R.string.pref_xplane_ip_port_key).setEnabled(enabled); findPreference(R.string.pref_xplane_ip_protocol_key).setEnabled(enabled); } private void update() { for (int k : mListPreferences) { updateListPreference(k); } for (int k : mEditTextPreferences) { updateEditTextPreference(k); } updateIpOptionsEnabled(); } } }