package com.robert.maps.applib.preference; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import com.robert.maps.applib.R; public class UserMapsPrefActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { private String mKey; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setPreferenceScreen(getPreferenceManager().createPreferenceScreen(this)); Intent intent = getIntent(); if(intent == null) finish(); Bundle bundle = intent.getExtras(); mKey = bundle.getString("Key"); final PreferenceCategory prefscr = new PreferenceCategory(this); prefscr.setKey(mKey); getPreferenceScreen().addPreference(prefscr); { final CheckBoxPreference pref = new CheckBoxPreference(this); pref.setKey(mKey + "_enabled"); pref.setTitle(getString(R.string.pref_usermap_enabled)); pref.setSummary(getString(R.string.pref_usermap_enabled_summary)); pref.setDefaultValue(false); prefscr.addPreference(pref); } { final EditTextPreference pref = new EditTextPreference(this); pref.setKey(mKey + "_name"); pref.setTitle(getString(R.string.pref_usermap_name)); pref.setDefaultValue(bundle.getString("Name")); prefscr.addPreference(pref); pref.setSummary(pref.getText()); prefscr.setTitle(pref.getText()); } { final EditTextPreference pref = new EditTextPreference(this); pref.setKey(mKey + "_baseurl"); pref.setTitle(getString(R.string.pref_usermap_baseurl)); pref.setSummary(bundle.getString("AbsolutePath")); pref.setDefaultValue(bundle.getString("AbsolutePath")); pref.setEnabled(false); prefscr.addPreference(pref); } { final ListPreference pref = new ListPreference(this); pref.setKey(mKey + "_projection"); pref.setTitle(getString(R.string.pref_usermap_projection)); pref.setEntries(R.array.projection_title); pref.setEntryValues(R.array.projection_value); pref.setDefaultValue("1"); prefscr.addPreference(pref); pref.setSummary(pref.getEntry()); } { final CheckBoxPreference pref = new CheckBoxPreference(this); pref.setKey(mKey + "_traffic"); pref.setTitle(getString(R.string.pref_usermap_traffic)); pref.setSummary(getString(R.string.pref_usermap_traffic_summary)); pref.setDefaultValue(false); prefscr.addPreference(pref); } { final CheckBoxPreference pref = new CheckBoxPreference(this); pref.setKey(mKey + "_isoverlay"); pref.setTitle(getString(R.string.pref_usermap_overlay)); pref.setSummary(getString(R.string.pref_usermap_overlay_summary)); pref.setDefaultValue(false); prefscr.addPreference(pref); } { final ListPreference pref = new ListPreference(this); pref.setKey(mKey + "_stretch"); pref.setDefaultValue("1"); pref.setTitle(R.string.pref_stretchtile); pref.setSummary(R.string.pref_stretchtile_summary); pref.setEntries(R.array.googlescale_pref_title); pref.setEntryValues(R.array.googlescale_pref_values); prefscr.addPreference(pref); } { final OffsetPreference pref = new OffsetPreference(this, bundle.getString("ID")); pref.setKey(bundle.getString("ID") + "_offset"); pref.setTitle(R.string.pref_mapoffset); pref.setSummary(R.string.pref_mapoffset_summary); prefscr.addPreference(pref); } } @Override public void onSharedPreferenceChanged(SharedPreferences aPref, String aKey) { if (aKey.endsWith("name") && findPreference(aKey) != null) { findPreference(aKey).setSummary(aPref.getString(aKey, "")); findPreference(aKey.replace("_name", "")).setTitle(aPref.getString(aKey, "")); } else if (aKey.endsWith("projection") && findPreference(aKey) != null) { ListPreference pref = (ListPreference) findPreference(aKey); findPreference(aKey).setSummary(pref.getEntry()); } } @Override protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } }