package com.robert.maps.applib.preference;
import org.json.JSONObject;
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.PreferenceCategory;
import com.robert.maps.applib.R;
import com.robert.maps.applib.utils.OnlineCachePreference;
public class CustomMapsPrefActivity extends MMPreferenceActivity 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);
prefscr.setTitle(bundle.getString(NAME));
getPreferenceScreen().addPreference(prefscr);
prefscr.setTitle(getPreferenceScreen().getSharedPreferences().getString(mKey + "_name", bundle.getString(NAME)));
prefscr.setSummary(R.string.menu_add_ownsourcemap);
{
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(true);
prefscr.addPreference(pref);
}
{
final EditTextPreference pref = new EditTextPreference(this);
pref.setKey(mKey + "_name");
pref.setTitle(getString(R.string.pref_usermap_name));
pref.setSummary(bundle.getString(NAME));
pref.setDefaultValue(bundle.getString(NAME));
prefscr.addPreference(pref);
}
{
final EditTextPreference pref = new EditTextPreference(this);
pref.setKey(mKey + "_baseurl");
pref.setTitle(getString(R.string.pref_usermap_baseurl));
pref.setSummary(bundle.getString(BASEURL));
pref.setDefaultValue(bundle.getString(BASEURL));
pref.setDialogMessage(R.string.pref_custommap_dialogmessage);
prefscr.addPreference(pref);
}
{
final ListPreference pref = new ListPreference(this);
pref.setKey(mKey + "_projection");
pref.setTitle(getString(R.string.pref_usermap_projection));
pref.setEntryValues(R.array.projection_value);
pref.setEntries(R.array.projection_title);
pref.setValue(bundle.getString(MAPPROJECTION));
prefscr.addPreference(pref);
pref.setSummary(pref.getEntry());
}
{
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 ListPreference pref = new ListPreference(this);
pref.setKey(mKey + "_minzoom");
pref.setTitle(getString(R.string.pref_minzoom));
pref.setEntryValues(R.array.zoomlevel_pref_value);
pref.setEntries(R.array.zoomlevel_pref_title);
pref.setValue(""+bundle.getInt(MINZOOM));
prefscr.addPreference(pref);
pref.setSummary(pref.getEntry());
}
{
final ListPreference pref = new ListPreference(this);
pref.setKey(mKey + "_maxzoom");
pref.setTitle(getString(R.string.pref_maxzoom));
pref.setEntryValues(R.array.zoomlevel_pref_value);
pref.setEntries(R.array.zoomlevel_pref_title);
pref.setValue(""+bundle.getInt(MAXZOOM));
prefscr.addPreference(pref);
pref.setSummary(pref.getEntry());
}
{
final CheckBoxPreference pref = new CheckBoxPreference(this);
pref.setKey(mKey + "_onlinecache");
pref.setTitle(getString(R.string.pref_onlinecache));
pref.setSummary(getString(R.string.pref_onlinecache_summary));
pref.setDefaultValue(true);
prefscr.addPreference(pref);
}
{
final OnlineCachePreference pref = new OnlineCachePreference(this, bundle.getString(MAPID));
pref.setKey(mKey + "_clearcache");
prefscr.addPreference(pref);
}
{
final OffsetPreference pref = new OffsetPreference(this, bundle.getString(MAPID));
pref.setKey(bundle.getString(MAPID) + "_offset");
pref.setTitle(R.string.pref_mapoffset);
pref.setSummary(R.string.pref_mapoffset_summary);
prefscr.addPreference(pref);
}
}
@Override
protected void onResume() {
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
super.onResume();
}
@Override
protected void onPause() {
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(key.startsWith(PREF_MIXMAPS_)) {
final String params[] = key.split("_");
mMapHelper.getMap(Long.parseLong(params[2]));
if(key.endsWith("_name")) {
mMapHelper.NAME = sharedPreferences.getString(key, "");
if(findPreference(key) != null)
findPreference(key).setSummary(mMapHelper.NAME);
if(findPreference(PREF_MIXMAPS_+mMapHelper.ID) != null)
findPreference(PREF_MIXMAPS_+mMapHelper.ID).setTitle(mMapHelper.NAME);
} else if(key.endsWith(BASEURL)) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(BASEURL, sharedPreferences.getString(key, ""));
mMapHelper.PARAMS = json.toString();
if(findPreference(key) != null)
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
} catch (Exception e) {
}
} else if(key.endsWith("_projection")) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(MAPPROJECTION, Integer.parseInt(sharedPreferences.getString(key, "")));
mMapHelper.PARAMS = json.toString();
if(findPreference(key) != null)
findPreference(key).setSummary(((ListPreference)findPreference(key)).getEntry());
} catch (Exception e) {
}
} else if(key.endsWith("_stretch")) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(STRETCH, Double.parseDouble(sharedPreferences.getString(key, "")));
mMapHelper.PARAMS = json.toString();
} catch (Exception e) {
}
} else if(key.endsWith("_isoverlay")) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(ISOVERLAY, sharedPreferences.getBoolean(key, false));
mMapHelper.PARAMS = json.toString();
mMapHelper.TYPE = sharedPreferences.getBoolean(key, false) ? 3 : 2;
} catch (Exception e) {
}
} else if(key.endsWith("_onlinecache")) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(ONLINECACHE, sharedPreferences.getBoolean(key, false));
mMapHelper.PARAMS = json.toString();
} catch (Exception e) {
}
} else if(key.endsWith("_minzoom")) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(MINZOOM, Integer.parseInt(sharedPreferences.getString(key, "1")));
mMapHelper.PARAMS = json.toString();
if(findPreference(key) != null)
findPreference(key).setSummary(((ListPreference)findPreference(key)).getEntry());
} catch (Exception e) {
}
} else if(key.endsWith("_maxzoom")) {
final JSONObject json = MixedMapsPreference.getMapCustomParams(mMapHelper.PARAMS);
try {
json.put(MAXZOOM, Integer.parseInt(sharedPreferences.getString(key, "20")));
mMapHelper.PARAMS = json.toString();
if(findPreference(key) != null)
findPreference(key).setSummary(((ListPreference)findPreference(key)).getEntry());
} catch (Exception e) {
}
}
mMapHelper.updateMap();
}
}
}