aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/settings/SettingsActivity.java
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-10-18 12:13:35 +0200
committerrsudev <rasch@munin-soft.de>2013-10-18 14:07:16 +0200
commite6606ad7690c84c9ee03c9195859382e9ae1de6b (patch)
tree1c0f361e96954df04df6994065ee9c991856ebc1 /main/src/cgeo/geocaching/settings/SettingsActivity.java
parent3e80f82fec4d8148562ae125f1c1ec14f65783f0 (diff)
downloadcgeo-e6606ad7690c84c9ee03c9195859382e9ae1de6b.zip
cgeo-e6606ad7690c84c9ee03c9195859382e9ae1de6b.tar.gz
cgeo-e6606ad7690c84c9ee03c9195859382e9ae1de6b.tar.bz2
Fixes part of #2976, allow to manually select map directory
Add a directory selection button to map selection. Fix issues with updating map sources preference after selecting a map file. Fix issues with listing map source if only a directory was defined.
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();