aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/settings/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/settings/SettingsActivity.java')
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index d2c73f3..38b9932 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -440,9 +440,21 @@ public class SettingsActivity extends PreferenceActivity {
case R.string.pref_mapDirectory:
if (data.hasExtra(Intents.EXTRA_MAP_FILE)) {
final String mapFile = data.getStringExtra(Intents.EXTRA_MAP_FILE);
- Settings.setMapFile(mapFile);
- if (!Settings.isValidMapFile(Settings.getMapFile())) {
- ActivityMixin.showToast(this, R.string.warn_invalid_mapfile);
+ File file = new File(mapFile);
+ if (!file.isDirectory()) {
+ Settings.setMapFile(mapFile);
+ if (!Settings.isValidMapFile(Settings.getMapFile())) {
+ ActivityMixin.showToast(this, R.string.warn_invalid_mapfile);
+ } else {
+ // Ensure map source preference is updated accordingly.
+ // TODO: There should be a better way to find and select the map source for a map file
+ Integer mapSourceId = mapFile.hashCode();
+ ListPreference mapSource = (ListPreference) getPreference(R.string.pref_mapsource);
+ mapSource.setValue(mapSourceId.toString());
+ VALUE_CHANGE_LISTENER.onPreferenceChange(mapSource, mapSourceId);
+ }
+ } else {
+ Settings.setMapFileDirectory(mapFile);
}
}
initMapSourcePreference();