diff options
Diffstat (limited to 'main/src/cgeo/geocaching/Settings.java')
| -rw-r--r-- | main/src/cgeo/geocaching/Settings.java | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java index b4fc94b..2afd32b 100644 --- a/main/src/cgeo/geocaching/Settings.java +++ b/main/src/cgeo/geocaching/Settings.java @@ -12,6 +12,8 @@ import cgeo.geocaching.maps.interfaces.GeoPointImpl; import cgeo.geocaching.maps.interfaces.MapProvider; import cgeo.geocaching.maps.mapsforge.MapsforgeMapProvider; import cgeo.geocaching.utils.CryptUtils; +import cgeo.geocaching.utils.FileUtils; +import cgeo.geocaching.utils.FileUtils.FileSelector; import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; @@ -25,6 +27,9 @@ import android.content.res.Resources; import android.os.Environment; import android.preference.PreferenceManager; +import java.io.File; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; /** @@ -96,6 +101,8 @@ public final class Settings { private static final String KEY_LAST_TRACKABLE_ACTION = "trackableaction"; private static final String KEY_SHARE_AFTER_EXPORT = "shareafterexport"; private static final String KEY_GPX_EXPORT_DIR = "gpxExportDir"; + private static final String KEY_RENDER_THEME_PATH = "renderthemepath"; + private static final String KEY_RENDER_THEME_FILE = "renderthemefile"; private static final String KEY_GPX_IMPORT_DIR = "gpxImportDir"; private static final String KEY_PLAIN_LOGS = "plainLogs"; private static final String KEY_NATIVE_UA = "nativeUa"; @@ -1206,7 +1213,76 @@ public final class Settings { edit.putInt(KEY_LAST_TRACKABLE_ACTION, trackableAction); } }); - } + } + + public static String getCustomRenderThemeBasefolder() { + return sharedPrefs.getString(KEY_RENDER_THEME_PATH, ""); + } + + public static void setCustomRenderThemeBasefolder(final String customRenderThemeBasefolder) { + editSharedSettings(new PrefRunnable() { + + @Override + public void edit(Editor edit) { + edit.putString(KEY_RENDER_THEME_PATH, customRenderThemeBasefolder); + } + }); + } + + public static String getCustomRenderThemeFile() { + return sharedPrefs.getString(KEY_RENDER_THEME_FILE, ""); + } + + public static void setCustomRenderThemeFile(final String customRenderThemeFile) { + editSharedSettings(new PrefRunnable() { + + @Override + public void edit(Editor edit) { + edit.putString(KEY_RENDER_THEME_FILE, customRenderThemeFile); + } + }); + } + + public static File[] getMapThemeFiles() { + + File directory = new File(Settings.getCustomRenderThemeBasefolder()); + + List<File> result = new ArrayList<File>(); + + FileUtils.listDir(result, directory, new ExtensionsBasedFileSelector(new String[] { "xml" }), null); + + return result.toArray(new File[] {}); + } + + private static class ExtensionsBasedFileSelector extends FileSelector { + + private final String[] _extensions; + private boolean _shouldEnd = false; + + public ExtensionsBasedFileSelector(String[] extensions) { + _extensions = extensions; + } + + @Override + public boolean isSelected(File file) { + String filename = file.getName(); + for (String ext : _extensions) { + if (StringUtils.endsWithIgnoreCase(filename, ext)) { + return true; + } + } + return false; + } + + @Override + public synchronized boolean shouldEnd() { + return _shouldEnd; + } + + public synchronized void setShouldEnd(boolean shouldEnd) { + _shouldEnd = shouldEnd; + } + } public static String getPreferencesName() { // there is currently no Android API to get the file name of the shared preferences |
