package org.envaya.kalsms; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.view.Menu; public class Prefs extends PreferenceActivity implements OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); PreferenceScreen screen = this.getPreferenceScreen(); int numPrefs = screen.getPreferenceCount(); for(int i=0; i < numPrefs;i++) { updatePrefSummary(screen.getPreference(i)); } } @Override protected void onResume(){ super.onResume(); // Set up a listener whenever a key changes getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); // Unregister the listener whenever a key changes getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { App app = App.getInstance(this.getApplication()); if (key.equals("outgoing_interval")) { app.setOutgoingMessageAlarm(); } else if (key.equals("server_url")) { app.log("Server URL changed to: " + app.getDisplayString(app.getServerUrl())); } else if (key.equals("phone_number")) { app.log("Phone number changed to: " + app.getDisplayString(app.getPhoneNumber())); } else if (key.equals("password")) { app.log("Password changed"); } updatePrefSummary(findPreference(key)); } private void updatePrefSummary(Preference p) { if (p instanceof ListPreference) { p.setSummary(((ListPreference)p).getEntry()); } else if (p instanceof EditTextPreference) { EditTextPreference textPref = (EditTextPreference)p; String text = textPref.getText(); if (text.equals("")) { p.setSummary("(not set)"); } else if (p.getKey().equals("password")) { p.setSummary("********"); } else { p.setSummary(text); } } } // first time the Menu key is pressed @Override public boolean onCreateOptionsMenu(Menu menu) { startActivity(new Intent(this, Prefs.class)); return (true); } // any other time the Menu key is pressed @Override public boolean onPrepareOptionsMenu(Menu menu) { startActivity(new Intent(this, Prefs.class)); return (true); } }