package org.droidplanner.android.maps.providers.baidu_map;
import org.droidplanner.android.R;
import org.droidplanner.android.maps.providers.DPMapProvider;
import org.droidplanner.android.maps.providers.MapProviderPreferences;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import com.baidu.mapapi.map.BaiduMap;
/**
* This is the baidu map provider preferences. It stores and handles all
* preferences related to baidu map.
*/
public class BaiduMapPrefFragment extends MapProviderPreferences {
// Common defines
private static final String PREF_MAP_TYPE = "pref_baidu_map_type";
private static final String MAP_TYPE_SATELLITE = "satellite";
private static final String MAP_TYPE_NORMAL = "normal";
private static final String MAP_TYPE_NONE = "none";
private static final String DEFAULT_MAP_TYPE = MAP_TYPE_SATELLITE;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_baidu_maps);
setupPreferences();
}
@Override
public DPMapProvider getMapProvider() {
return DPMapProvider.BAIDU_MAP;
}
private void setupPreferences() {
final SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext());
setupMapTypePreferences(sharedPref);
}
public int getMapType(Context context) {
final SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
String mapType = sharedPref.getString(PREF_MAP_TYPE, DEFAULT_MAP_TYPE);
if (mapType.equalsIgnoreCase(MAP_TYPE_SATELLITE)) {
return BaiduMap.MAP_TYPE_SATELLITE;
}
else if (mapType.equalsIgnoreCase(MAP_TYPE_NORMAL)) {
return BaiduMap.MAP_TYPE_NORMAL;
}
else if (mapType.equalsIgnoreCase(MAP_TYPE_NONE)) {
return BaiduMap.MAP_TYPE_NONE;
}
else {
return BaiduMap.MAP_TYPE_SATELLITE;
}
}
private void setupMapTypePreferences(SharedPreferences sharedPref) {
final String mapTypeKey = PREF_MAP_TYPE;
final Preference mapTypePref = findPreference(mapTypeKey);
if(mapTypePref != null) {
final String mapType = sharedPref.getString(mapTypeKey, DEFAULT_MAP_TYPE);
mapTypePref.setSummary(mapType);
mapTypePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
mapTypePref.setSummary(newValue.toString());
return true;
}
});
}
}
}