diff options
Diffstat (limited to 'main/src/cgeo/geocaching/settings/Settings.java')
-rw-r--r-- | main/src/cgeo/geocaching/settings/Settings.java | 320 |
1 files changed, 228 insertions, 92 deletions
diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index d93f83f..c15bc1b 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -6,12 +6,11 @@ import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum; import cgeo.geocaching.connector.capability.ICredentials; import cgeo.geocaching.connector.gc.GCConnector; import cgeo.geocaching.connector.gc.GCConstants; -import cgeo.geocaching.connector.gc.GCLogin; import cgeo.geocaching.enumerations.CacheType; -import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy; import cgeo.geocaching.enumerations.LogType; -import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.list.StoredList; +import cgeo.geocaching.location.Geopoint; +import cgeo.geocaching.maps.CGeoMap.MapMode; import cgeo.geocaching.maps.MapProviderFactory; //import cgeo.geocaching.maps.google.v1.GoogleMapProvider; import cgeo.geocaching.maps.interfaces.GeoPointImpl; @@ -35,6 +34,8 @@ import android.content.SharedPreferences.Editor; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Build; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import android.os.Environment; import android.preference.PreferenceManager; @@ -49,6 +50,10 @@ import java.util.Locale; */ public class Settings { + /** + * On opening a map, we limit the _initial_ zoom. The user can still zoom out afterwards. + */ + private static final int INITIAL_MAP_ZOOM_LIMIT = 16; private static final char HISTORY_SEPARATOR = ','; public static final int SHOW_WP_THRESHOLD_DEFAULT = 10; public static final int SHOW_WP_THRESHOLD_MAX = 50; @@ -66,11 +71,11 @@ public class Settings { StringUtils.equals(Build.MODEL, "ST25i") || // Sony Xperia U StringUtils.equals(Build.MODEL, "bq Aquaris 5"); // bq Aquaris 5 - private final static int unitsMetric = 1; - // twitter api keys - private final static @NonNull String keyConsumerPublic = CryptUtils.rot13("ESnsCvAv3kEupF1GCR3jGj"); - private final static @NonNull String keyConsumerSecret = CryptUtils.rot13("7vQWceACV9umEjJucmlpFe9FCMZSeqIqfkQ2BnhV9x"); + private final static @NonNull String TWITTER_KEY_CONSUMER_PUBLIC = CryptUtils.rot13("ESnsCvAv3kEupF1GCR3jGj"); + private final static @NonNull String TWITTER_KEY_CONSUMER_SECRET = CryptUtils.rot13("7vQWceACV9umEjJucmlpFe9FCMZSeqIqfkQ2BnhV9x"); + + private static boolean useCompass = true; public enum CoordInputFormatEnum { Plain, @@ -78,7 +83,7 @@ public class Settings { Min, Sec; - static int DEFAULT_INT_VALUE = Min.ordinal(); + static final int DEFAULT_INT_VALUE = Min.ordinal(); public static CoordInputFormatEnum fromInt(final int id) { final CoordInputFormatEnum[] values = CoordInputFormatEnum.values(); @@ -109,13 +114,29 @@ public class Settings { } private static void migrateSettings() { - // migrate from non standard file location and integer based boolean types - final int oldVersion = getInt(R.string.pref_settingsversion, 0); - if (oldVersion < 1) { - final String oldPreferencesName = "cgeo.pref"; - final SharedPreferences old = CgeoApplication.getInstance().getSharedPreferences(oldPreferencesName, Context.MODE_PRIVATE); + final int LATEST_PREFERENCES_VERSION = 2; + final int currentVersion = getInt(R.string.pref_settingsversion, 0); + + // No need to migrate if we are up to date. + if (currentVersion == LATEST_PREFERENCES_VERSION) { + return; + } + + // No need to migrate if we don't have older settings, defaults will be used instead. + final String preferencesNameV0 = "cgeo.pref"; + final SharedPreferences prefsV0 = CgeoApplication.getInstance().getSharedPreferences(preferencesNameV0, Context.MODE_PRIVATE); + if (currentVersion == 0 && prefsV0.getAll().isEmpty()) { + final Editor e = sharedPrefs.edit(); + e.putInt(getKey(R.string.pref_settingsversion), LATEST_PREFERENCES_VERSION); + e.apply(); + return; + } + + if (currentVersion < 1) { + // migrate from non standard file location and integer based boolean types final Editor e = sharedPrefs.edit(); +<<<<<<< HEAD e.putString(getKey(R.string.pref_temp_twitter_token_secret), old.getString(getKey(R.string.pref_temp_twitter_token_secret), null)); e.putString(getKey(R.string.pref_temp_twitter_token_public), old.getString(getKey(R.string.pref_temp_twitter_token_public), null)); e.putBoolean(getKey(R.string.pref_help_shown), old.getInt(getKey(R.string.pref_help_shown), 0) != 0); @@ -171,16 +192,72 @@ public class Settings { e.putBoolean(getKey(R.string.pref_debug), old.getBoolean(getKey(R.string.pref_debug), false)); e.putBoolean(getKey(R.string.pref_hidelivemaphint), old.getInt(getKey(R.string.pref_hidelivemaphint), 0) != 0); e.putInt(getKey(R.string.pref_livemaphintshowcount), old.getInt(getKey(R.string.pref_livemaphintshowcount), 0)); +======= + e.putString(getKey(R.string.pref_temp_twitter_token_secret), prefsV0.getString(getKey(R.string.pref_temp_twitter_token_secret), null)); + e.putString(getKey(R.string.pref_temp_twitter_token_public), prefsV0.getString(getKey(R.string.pref_temp_twitter_token_public), null)); + e.putBoolean(getKey(R.string.pref_help_shown), prefsV0.getInt(getKey(R.string.pref_help_shown), 0) != 0); + e.putFloat(getKey(R.string.pref_anylongitude), prefsV0.getFloat(getKey(R.string.pref_anylongitude), 0)); + e.putFloat(getKey(R.string.pref_anylatitude), prefsV0.getFloat(getKey(R.string.pref_anylatitude), 0)); + e.putBoolean(getKey(R.string.pref_offlinemaps), 0 != prefsV0.getInt(getKey(R.string.pref_offlinemaps), 1)); + e.putBoolean(getKey(R.string.pref_offlinewpmaps), 0 != prefsV0.getInt(getKey(R.string.pref_offlinewpmaps), 0)); + e.putString(getKey(R.string.pref_webDeviceCode), prefsV0.getString(getKey(R.string.pref_webDeviceCode), null)); + e.putString(getKey(R.string.pref_webDeviceName), prefsV0.getString(getKey(R.string.pref_webDeviceName), null)); + e.putBoolean(getKey(R.string.pref_maplive), prefsV0.getInt(getKey(R.string.pref_maplive), 1) != 0); + e.putInt(getKey(R.string.pref_mapsource), prefsV0.getInt(getKey(R.string.pref_mapsource), MAP_SOURCE_DEFAULT)); + e.putBoolean(getKey(R.string.pref_twitter), 0 != prefsV0.getInt(getKey(R.string.pref_twitter), 0)); + e.putBoolean(getKey(R.string.pref_showaddress), 0 != prefsV0.getInt(getKey(R.string.pref_showaddress), 1)); + e.putBoolean(getKey(R.string.pref_showcaptcha), prefsV0.getBoolean(getKey(R.string.pref_showcaptcha), false)); + e.putBoolean(getKey(R.string.pref_maptrail), prefsV0.getInt(getKey(R.string.pref_maptrail), 1) != 0); + e.putInt(getKey(R.string.pref_lastmapzoom), prefsV0.getInt(getKey(R.string.pref_lastmapzoom), 14)); + e.putBoolean(getKey(R.string.pref_livelist), 0 != prefsV0.getInt(getKey(R.string.pref_livelist), 1)); + e.putBoolean(getKey(R.string.pref_units_imperial), prefsV0.getInt(getKey(R.string.pref_units_imperial), 1) != 1); + e.putBoolean(getKey(R.string.pref_skin), prefsV0.getInt(getKey(R.string.pref_skin), 0) != 0); + e.putInt(getKey(R.string.pref_lastusedlist), prefsV0.getInt(getKey(R.string.pref_lastusedlist), StoredList.STANDARD_LIST_ID)); + e.putString(getKey(R.string.pref_cachetype), prefsV0.getString(getKey(R.string.pref_cachetype), CacheType.ALL.id)); + e.putString(getKey(R.string.pref_twitter_token_secret), prefsV0.getString(getKey(R.string.pref_twitter_token_secret), null)); + e.putString(getKey(R.string.pref_twitter_token_public), prefsV0.getString(getKey(R.string.pref_twitter_token_public), null)); + e.putInt(getKey(R.string.pref_version), prefsV0.getInt(getKey(R.string.pref_version), 0)); + e.putBoolean(getKey(R.string.pref_autoloaddesc), 0 != prefsV0.getInt(getKey(R.string.pref_autoloaddesc), 1)); + e.putBoolean(getKey(R.string.pref_ratingwanted), prefsV0.getBoolean(getKey(R.string.pref_ratingwanted), true)); + e.putBoolean(getKey(R.string.pref_friendlogswanted), prefsV0.getBoolean(getKey(R.string.pref_friendlogswanted), true)); + e.putBoolean(getKey(R.string.pref_useenglish), prefsV0.getBoolean(getKey(R.string.pref_useenglish), false)); + e.putBoolean(getKey(R.string.pref_usecompass), 0 != prefsV0.getInt(getKey(R.string.pref_usecompass), 1)); + e.putBoolean(getKey(R.string.pref_trackautovisit), prefsV0.getBoolean(getKey(R.string.pref_trackautovisit), false)); + e.putBoolean(getKey(R.string.pref_sigautoinsert), prefsV0.getBoolean(getKey(R.string.pref_sigautoinsert), false)); + e.putBoolean(getKey(R.string.pref_logimages), prefsV0.getBoolean(getKey(R.string.pref_logimages), false)); + e.putBoolean(getKey(R.string.pref_excludedisabled), 0 != prefsV0.getInt(getKey(R.string.pref_excludedisabled), 0)); + e.putBoolean(getKey(R.string.pref_excludemine), 0 != prefsV0.getInt(getKey(R.string.pref_excludemine), 0)); + e.putString(getKey(R.string.pref_mapfile), prefsV0.getString(getKey(R.string.pref_mapfile), null)); + e.putString(getKey(R.string.pref_signature), prefsV0.getString(getKey(R.string.pref_signature), null)); + e.putString(getKey(R.string.pref_pass_vote), prefsV0.getString(getKey(R.string.pref_pass_vote), null)); + e.putString(getKey(R.string.pref_password), prefsV0.getString(getKey(R.string.pref_password), null)); + e.putString(getKey(R.string.pref_username), prefsV0.getString(getKey(R.string.pref_username), null)); + e.putString(getKey(R.string.pref_memberstatus), prefsV0.getString(getKey(R.string.pref_memberstatus), "")); + e.putInt(getKey(R.string.pref_coordinputformat), prefsV0.getInt(getKey(R.string.pref_coordinputformat), CoordInputFormatEnum.DEFAULT_INT_VALUE)); + e.putBoolean(getKey(R.string.pref_log_offline), prefsV0.getBoolean(getKey(R.string.pref_log_offline), false)); + e.putBoolean(getKey(R.string.pref_choose_list), prefsV0.getBoolean(getKey(R.string.pref_choose_list), true)); + e.putBoolean(getKey(R.string.pref_loaddirectionimg), prefsV0.getBoolean(getKey(R.string.pref_loaddirectionimg), true)); + e.putString(getKey(R.string.pref_gccustomdate), prefsV0.getString(getKey(R.string.pref_gccustomdate), GCConstants.DEFAULT_GC_DATE)); + e.putInt(getKey(R.string.pref_showwaypointsthreshold), prefsV0.getInt(getKey(R.string.pref_showwaypointsthreshold), SHOW_WP_THRESHOLD_DEFAULT)); + e.putString(getKey(R.string.pref_cookiestore), prefsV0.getString(getKey(R.string.pref_cookiestore), null)); + e.putBoolean(getKey(R.string.pref_opendetailslastpage), prefsV0.getBoolean(getKey(R.string.pref_opendetailslastpage), false)); + e.putInt(getKey(R.string.pref_lastdetailspage), prefsV0.getInt(getKey(R.string.pref_lastdetailspage), 1)); + e.putInt(getKey(R.string.pref_defaultNavigationTool), prefsV0.getInt(getKey(R.string.pref_defaultNavigationTool), NavigationAppsEnum.COMPASS.id)); + e.putInt(getKey(R.string.pref_defaultNavigationTool2), prefsV0.getInt(getKey(R.string.pref_defaultNavigationTool2), NavigationAppsEnum.INTERNAL_MAP.id)); + e.putInt(getKey(R.string.pref_livemapstrategy), prefsV0.getInt(getKey(R.string.pref_livemapstrategy), LivemapStrategy.AUTO.id)); + e.putBoolean(getKey(R.string.pref_debug), prefsV0.getBoolean(getKey(R.string.pref_debug), false)); + e.putInt(getKey(R.string.pref_livemaphintshowcount), prefsV0.getInt(getKey(R.string.pref_livemaphintshowcount), 0)); +>>>>>>> 59b8b2e26a7fff6072c4d5d96f51035dc900e0bc e.putInt(getKey(R.string.pref_settingsversion), 1); // mark migrated - e.commit(); + e.apply(); } // changes for new settings dialog - if (oldVersion < 2) { + if (currentVersion < 2) { final Editor e = sharedPrefs.edit(); - e.putBoolean(getKey(R.string.pref_units), !isUseImperialUnits()); + e.putBoolean(getKey(R.string.pref_units_imperial), useImperialUnits()); // show waypoints threshold now as a slider int wpThreshold = getWayPointsThreshold(); @@ -209,7 +286,7 @@ public class Settings { e.putString(getKey(R.string.pref_gpxExportDir), getGpxExportDir()); e.putInt(getKey(R.string.pref_settingsversion), 2); // mark migrated - e.commit(); + e.apply(); } } @@ -237,40 +314,40 @@ public class Settings { return sharedPrefs.getFloat(getKey(prefKeyId), defaultValue); } - protected static boolean putString(final int prefKeyId, final String value) { + protected static void putString(final int prefKeyId, final String value) { final SharedPreferences.Editor edit = sharedPrefs.edit(); edit.putString(getKey(prefKeyId), value); - return edit.commit(); + edit.apply(); } - protected static boolean putBoolean(final int prefKeyId, final boolean value) { + protected static void putBoolean(final int prefKeyId, final boolean value) { final SharedPreferences.Editor edit = sharedPrefs.edit(); edit.putBoolean(getKey(prefKeyId), value); - return edit.commit(); + edit.apply(); } - private static boolean putInt(final int prefKeyId, final int value) { + private static void putInt(final int prefKeyId, final int value) { final SharedPreferences.Editor edit = sharedPrefs.edit(); edit.putInt(getKey(prefKeyId), value); - return edit.commit(); + edit.apply(); } - private static boolean putLong(final int prefKeyId, final long value) { + private static void putLong(final int prefKeyId, final long value) { final SharedPreferences.Editor edit = sharedPrefs.edit(); edit.putLong(getKey(prefKeyId), value); - return edit.commit(); + edit.apply(); } - private static boolean putFloat(final int prefKeyId, final float value) { + private static void putFloat(final int prefKeyId, final float value) { final SharedPreferences.Editor edit = sharedPrefs.edit(); edit.putFloat(getKey(prefKeyId), value); - return edit.commit(); + edit.apply(); } - private static boolean remove(final int prefKeyId) { + private static void remove(final int prefKeyId) { final SharedPreferences.Editor edit = sharedPrefs.edit(); edit.remove(getKey(prefKeyId)); - return edit.commit(); + edit.apply(); } private static boolean contains(final int prefKeyId) { @@ -317,7 +394,7 @@ public class Settings { } public static String getUsername() { - return getString(R.string.pref_username, null); + return getString(R.string.pref_username, StringUtils.EMPTY); } public static boolean isGCConnectorActive() { @@ -333,19 +410,20 @@ public class Settings { } public static boolean isGCPremiumMember() { - // Basic Member, Premium Member, ??? - return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getGCMemberStatus()); + final String memberStatus = Settings.getGCMemberStatus(); + return StringUtils.equalsIgnoreCase(memberStatus, GCConstants.MEMBER_STATUS_PREMIUM) || + StringUtils.equalsIgnoreCase(memberStatus, GCConstants.MEMBER_STATUS_CHARTER); } public static String getGCMemberStatus() { return getString(R.string.pref_memberstatus, ""); } - public static boolean setGCMemberStatus(final String memberStatus) { + public static void setGCMemberStatus(final String memberStatus) { if (StringUtils.isBlank(memberStatus)) { - return remove(R.string.pref_memberstatus); + remove(R.string.pref_memberstatus); } - return putString(R.string.pref_memberstatus, memberStatus); + putString(R.string.pref_memberstatus, memberStatus); } public static ImmutablePair<String, String> getTokenPair(final int tokenPublicPrefKey, final int tokenSecretPrefKey) { @@ -375,10 +453,7 @@ public class Settings { } public static boolean isGCvoteLogin() { - final String preUsername = getString(R.string.pref_username, null); - final String prePassword = getString(R.string.pref_pass_vote, null); - - return !StringUtils.isBlank(preUsername) && !StringUtils.isBlank(prePassword); + return getGCvoteLogin() != null; } public static ImmutablePair<String, String> getGCvoteLogin() { @@ -396,19 +471,33 @@ public class Settings { return getString(R.string.pref_signature, StringUtils.EMPTY); } - public static boolean setCookieStore(final String cookies) { + public static void setCookieStore(final String cookies) { if (StringUtils.isBlank(cookies)) { // erase cookies - return remove(R.string.pref_cookiestore); + remove(R.string.pref_cookiestore); } // save cookies - return putString(R.string.pref_cookiestore, cookies); + putString(R.string.pref_cookiestore, cookies); } public static String getCookieStore() { return getString(R.string.pref_cookiestore, null); } + public static void setUseGooglePlayServices(final boolean value) { + putBoolean(R.string.pref_googleplayservices, value); + } + + public static boolean useGooglePlayServices() { + // By defaut, enable play services starting from ICS. + return CgeoApplication.getInstance().isGooglePlayServicesAvailable() && + getBoolean(R.string.pref_googleplayservices, VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH); + } + + public static boolean useLowPowerMode() { + return getBoolean(R.string.pref_lowpowermode, false); + } + /** * @param cacheType * The cache type used for future filtering @@ -442,12 +531,11 @@ public class Settings { return getString(R.string.pref_mapfile, null); } - public static boolean setMapFile(final String mapFile) { - final boolean result = putString(R.string.pref_mapfile, mapFile); + public static void setMapFile(final String mapFile) { + putString(R.string.pref_mapfile, mapFile); if (mapFile != null) { setMapFileDirectory(new File(mapFile).getParent()); } - return result; } public static String getMapFileDirectory() { @@ -462,10 +550,9 @@ public class Settings { return null; } - public static boolean setMapFileDirectory(final String mapFileDirectory) { - final boolean result = putString(R.string.pref_mapDirectory, mapFileDirectory); + public static void setMapFileDirectory(final String mapFileDirectory) { + putString(R.string.pref_mapDirectory, mapFileDirectory); MapsforgeMapProvider.getInstance().updateOfflineMaps(); - return result; } public static boolean isValidMapFile() { @@ -506,10 +593,11 @@ public class Settings { /** * @return User selected date format on GC.com - * @see GCLogin#GC_CUSTOM_DATE_FORMATS */ public static String getGcCustomDate() { - return getString(R.string.pref_gccustomdate, null); + // We might have some users whose stored value is null, which is invalid. In this case, we use the default. + return StringUtils.defaultString(getString(R.string.pref_gccustomdate, GCConstants.DEFAULT_GC_DATE), + GCConstants.DEFAULT_GC_DATE); } public static boolean isExcludeMyCaches() { @@ -572,11 +660,15 @@ public class Settings { return getBoolean(R.string.pref_sigautoinsert, false); } - public static boolean isUseImperialUnits() { - return getBoolean(R.string.pref_units, getImperialUnitsDefault()); + public static void setUseImperialUnits(final boolean useImperialUnits) { + putBoolean(R.string.pref_units_imperial, useImperialUnits); + } + + public static boolean useImperialUnits() { + return getBoolean(R.string.pref_units_imperial, useImperialUnitsByDefault()); } - static boolean getImperialUnitsDefault() { + static boolean useImperialUnitsByDefault() { final String countryCode = Locale.getDefault().getCountry(); return "US".equals(countryCode) // USA || "LR".equals(countryCode) // Liberia @@ -592,21 +684,55 @@ public class Settings { } public static boolean isMapTrail() { - return getBoolean(R.string.pref_maptrail, true); + return getBoolean(R.string.pref_maptrail, false); } public static void setMapTrail(final boolean showTrail) { putBoolean(R.string.pref_maptrail, showTrail); } - public static int getMapZoom() { - return getInt(R.string.pref_lastmapzoom, 14); + /** + * Get last used zoom of the internal map. Differentiate between two use cases for a map of multiple caches (e.g. + * live map) and the map of a single cache (which is often zoomed in more deep). + */ + public static int getMapZoom(final MapMode mapMode) { + if (mapMode == MapMode.SINGLE || mapMode == MapMode.COORDS) { + return getCacheZoom(); + } + return getMapZoom(); } - public static void setMapZoom(final int mapZoomLevel) { + public static void setMapZoom(final MapMode mapMode, final int zoomLevel) { + if (mapMode == MapMode.SINGLE || mapMode == MapMode.COORDS) { + setCacheZoom(zoomLevel); + } + else { + setMapZoom(zoomLevel); + } + } + + /** + * @return zoom used for the (live) map + */ + private static int getMapZoom() { + return Math.max(getInt(R.string.pref_lastmapzoom, 14), INITIAL_MAP_ZOOM_LIMIT); + } + + private static void setMapZoom(final int mapZoomLevel) { putInt(R.string.pref_lastmapzoom, mapZoomLevel); } + /** + * @return zoom used for the map of a single cache + */ + private static int getCacheZoom() { + return Math.max(getInt(R.string.pref_cache_zoom, 14), INITIAL_MAP_ZOOM_LIMIT); + } + + private static void setCacheZoom(final int zoomLevel) { + putInt(R.string.pref_cache_zoom, zoomLevel); + } + public static GeoPointImpl getMapCenter() { return getMapProvider().getMapItemFactory() .getGeoPointBase(new Geopoint(getInt(R.string.pref_lastmaplat, 0) / 1e6, @@ -627,7 +753,7 @@ public class Settings { // mapSource = MapProviderFactory.getMapSource(id); if (mapSource != null) { // don't use offline maps if the map file is not valid - if ((!(mapSource instanceof OfflineMapSource)) || (isValidMapFile())) { + if (!(mapSource instanceof OfflineMapSource) || isValidMapFile()) { return mapSource; } } @@ -646,9 +772,7 @@ public class Settings { private static final int HISTORY_SIZE = 10; /** - * convert old preference ids for maps (based on constant values) into new hash based ids - * - * @return + * Convert old preference ids for maps (based on constant values) into new hash based ids. */ // private static int getConvertedMapId() { // final int id = Integer.parseInt(getString(R.string.pref_mapsource, @@ -675,7 +799,7 @@ public class Settings { // return id; // } - public static void setMapSource(final MapSource newMapSource) { + public static synchronized void setMapSource(final MapSource newMapSource) { putString(R.string.pref_mapsource, String.valueOf(newMapSource.getNumericalId())); if (newMapSource instanceof OfflineMapSource) { setMapFile(((OfflineMapSource) newMapSource).getFileName()); @@ -704,11 +828,11 @@ public class Settings { } public static boolean isUseCompass() { - return getBoolean(R.string.pref_usecompass, true); + return useCompass; } - public static void setUseCompass(final boolean useCompass) { - putBoolean(R.string.pref_usecompass, useCompass); + public static void setUseCompass(final boolean value) { + useCompass = value; } public static boolean isLightSkin() { @@ -716,13 +840,13 @@ public class Settings { } @NonNull - public static String getKeyConsumerPublic() { - return keyConsumerPublic; + public static String getTwitterKeyConsumerPublic() { + return TWITTER_KEY_CONSUMER_PUBLIC; } @NonNull - public static String getKeyConsumerSecret() { - return keyConsumerSecret; + public static String getTwitterKeyConsumerSecret() { + return TWITTER_KEY_CONSUMER_SECRET; } public static String getWebDeviceCode() { @@ -734,13 +858,14 @@ public class Settings { } public static String getWebDeviceName() { - return getString(R.string.pref_webDeviceName, android.os.Build.MODEL); + return getString(R.string.pref_webDeviceName, Build.MODEL); } /** * @return The cache type used for filtering or ALL if no filter is active. * Returns never null */ + @NonNull public static CacheType getCacheType() { return CacheType.getById(getString(R.string.pref_cachetype, CacheType.ALL.id)); } @@ -838,11 +963,11 @@ public class Settings { String.valueOf(NavigationAppsEnum.INTERNAL_MAP.id))); } - public static Strategy getLiveMapStrategy() { - return Strategy.getById(getInt(R.string.pref_livemapstrategy, Strategy.AUTO.id)); + public static LivemapStrategy getLiveMapStrategy() { + return LivemapStrategy.getById(getInt(R.string.pref_livemapstrategy, LivemapStrategy.AUTO.id)); } - public static void setLiveMapStrategy(final Strategy strategy) { + public static void setLiveMapStrategy(final LivemapStrategy strategy) { putInt(R.string.pref_livemapstrategy, strategy.id); } @@ -850,14 +975,6 @@ public class Settings { return Log.isDebug(); } - public static boolean getHideLiveMapHint() { - return getBoolean(R.string.pref_hidelivemaphint, false); - } - - public static void setHideLiveHint(final boolean hide) { - putBoolean(R.string.pref_hidelivemaphint, hide); - } - public static int getLiveMapHintShowCount() { return getInt(R.string.pref_livemaphintshowcount, 0); } @@ -986,9 +1103,7 @@ public class Settings { } /** - * remember date of last field note export - * - * @param date + * Remember date of last field note export. */ public static void setFieldnoteExportDate(final long date) { putLong(R.string.pref_fieldNoteExportDate, date); @@ -999,9 +1114,7 @@ public class Settings { } /** - * remember the state of the "Upload" checkbox in the field notes export dialog - * - * @param upload + * Remember the state of the "Upload" checkbox in the field notes export dialog. */ public static void setFieldNoteExportUpload(final boolean upload) { putBoolean(R.string.pref_fieldNoteExportUpload, upload); @@ -1012,9 +1125,7 @@ public class Settings { } /** - * remember the state of the "Only new" checkbox in the field notes export dialog - * - * @param onlyNew + * Remember the state of the "Only new" checkbox in the field notes export dialog. */ public static void setFieldNoteExportOnlyNew(final boolean onlyNew) { putBoolean(R.string.pref_fieldNoteExportOnlyNew, onlyNew); @@ -1054,7 +1165,32 @@ public class Settings { return getBoolean(R.string.pref_hardware_acceleration, !HW_ACCEL_DISABLED_BY_DEFAULT); } - public static boolean setUseHardwareAcceleration(final boolean useHardwareAcceleration) { - return putBoolean(R.string.pref_hardware_acceleration, useHardwareAcceleration); + public static void setUseHardwareAcceleration(final boolean useHardwareAcceleration) { + putBoolean(R.string.pref_hardware_acceleration, useHardwareAcceleration); + } + + public static String getLastCacheLog() { + return getString(R.string.pref_last_cache_log, StringUtils.EMPTY); + } + + public static void setLastCacheLog(final String log) { + putString(R.string.pref_last_cache_log, log); + } + + public static String getLastTrackableLog() { + return getString(R.string.pref_last_trackable_log, StringUtils.EMPTY); + } + + public static void setLastTrackableLog(final String log) { + putString(R.string.pref_last_trackable_log, log); + } + + @Nullable + public static String getHomeLocation() { + return getString(R.string.pref_home_location, null); + } + + public static void setHomeLocation(@NonNull final String homeLocation) { + putString(R.string.pref_home_location, homeLocation); } } |