aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/Settings.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/Settings.java')
-rw-r--r--main/src/cgeo/geocaching/Settings.java78
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