diff options
22 files changed, 73 insertions, 39 deletions
diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml index 715f949..998b8f8 100644 --- a/main/res/values-cs/strings.xml +++ b/main/res/values-cs/strings.xml @@ -461,7 +461,7 @@ <string name="map_source_google_satellite">Google: Satelitní</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Poslat do c:geo</string> <string name="init_sendToCgeo_name">Název tvého zařízení:</string> diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml index d5ed34a..23b90b8 100644 --- a/main/res/values-de/strings.xml +++ b/main/res/values-de/strings.xml @@ -471,7 +471,7 @@ <string name="map_source_google_satellite">Google: Satellit</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Radfahrerkarte</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Send to c:geo</string> <string name="init_sendToCgeo_name">Name des Endgerätes:</string> diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml index f5a84ea..9ec6946 100644 --- a/main/res/values-es/strings.xml +++ b/main/res/values-es/strings.xml @@ -384,7 +384,7 @@ <string name="map_source_google_satellite">Google: Satélite</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Enviar a c:geo</string> <string name="init_sendToCgeo_name">Nombre de tu dispositivo:</string> diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml index 69fa863..8d7c59b 100644 --- a/main/res/values-fr/strings.xml +++ b/main/res/values-fr/strings.xml @@ -469,7 +469,7 @@ <string name="map_source_google_satellite">Google Maps : satellite</string> <string name="map_source_osm_mapnik">OSM : rendu Mapnik</string> <string name="map_source_osm_cyclemap">OSM : pistes cyclables</string> - <string name="map_source_osm_offline">OSM : hors-ligne</string> + <string name="map_source_osm_offline">hors-ligne</string> <string name="init_sendToCgeo">Envoyers vers c:geo</string> <string name="init_sendToCgeo_name">Votre nom d\'appareil:</string> diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml index 17eb247..033b8f7 100644 --- a/main/res/values-hu/strings.xml +++ b/main/res/values-hu/strings.xml @@ -429,7 +429,7 @@ <string name="map_source_google_satellite">Google: Műholdkép</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Biciklis térkép</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Küldés a c:geo-hoz</string> <string name="init_sendToCgeo_name">Az eszközöd neve:</string> diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml index aeb2e2d..f97e059 100644 --- a/main/res/values-it/strings.xml +++ b/main/res/values-it/strings.xml @@ -464,7 +464,7 @@ <string name="map_source_google_satellite">Google: Satellite</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Send to c:geo</string> <string name="init_sendToCgeo_name">Nome dispositivo:</string> diff --git a/main/res/values-ja/strings.xml b/main/res/values-ja/strings.xml index 9e19b84..ed8a241 100644 --- a/main/res/values-ja/strings.xml +++ b/main/res/values-ja/strings.xml @@ -441,7 +441,7 @@ <string name="map_source_google_satellite">Googleマップ:航空写真</string> <string name="map_source_osm_mapnik">OpenStreetMap</string> <string name="map_source_osm_cyclemap">OpenStreetMap:Cyclemap</string> - <string name="map_source_osm_offline">OpenStreetMap:オフライン用</string> + <string name="map_source_osm_offline">オフライン用</string> <string name="init_sendToCgeo">Send to c:geo</string> <string name="init_sendToCgeo_name">この端末のモデル番号:</string> diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml index 8c92509..48db13c 100644 --- a/main/res/values-nl/strings.xml +++ b/main/res/values-nl/strings.xml @@ -445,7 +445,7 @@ <string name="map_source_google_satellite">Google: Satellite</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Verstuur naar c:geo</string> <string name="init_sendToCgeo_name">Jouw apparaatnaam:</string> diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml index f4f3b46..f112b5b 100644 --- a/main/res/values-pl/strings.xml +++ b/main/res/values-pl/strings.xml @@ -462,7 +462,7 @@ <string name="map_source_google_satellite">Google: Satelita</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Wyślij do c:geo</string> <string name="init_sendToCgeo_name">Nazwa urządzenia:</string> diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml index f00a835..e35cc5b 100644 --- a/main/res/values-pt/strings.xml +++ b/main/res/values-pt/strings.xml @@ -434,7 +434,7 @@ <string name="map_source_google_satellite">Google: Satélite</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Enviar para o c:geo</string> <string name="init_sendToCgeo_name">Nome do seu dispositivo:</string> diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml index 1e71350..3fa2b0e 100644 --- a/main/res/values-sk/strings.xml +++ b/main/res/values-sk/strings.xml @@ -434,7 +434,7 @@ <string name="map_source_google_satellite">Google: Satelit</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyklomapa</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Poslať do c:geo</string> <string name="init_sendToCgeo_name">Názov vášho zariadenia:</string> diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml index 6644ce6..1b5f099 100644 --- a/main/res/values-sv/strings.xml +++ b/main/res/values-sv/strings.xml @@ -469,7 +469,7 @@ <string name="map_source_google_satellite">Google: Satellit</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Skicka till c:geo (Send2cgeo)</string> <string name="init_sendToCgeo_name">Namnet på din enhet:</string> diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 69f9ca3..7f57474 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -471,7 +471,7 @@ <string name="map_source_google_satellite">Google: Satellite</string> <string name="map_source_osm_mapnik">OSM: Mapnik</string> <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> - <string name="map_source_osm_offline">OSM: Offline</string> + <string name="map_source_osm_offline">Offline</string> <string name="init_sendToCgeo">Send to c:geo</string> <string name="init_sendToCgeo_name">Your device name:</string> diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 9b57f0d..ac9d4b9 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -2019,7 +2019,14 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc return; } if (StringUtils.isNotBlank(descriptionString)) { - descriptionView.setText(description, TextView.BufferType.SPANNABLE); + try { + descriptionView.setText(description, TextView.BufferType.SPANNABLE); + } catch (Exception e) { + // On 4.1, there is sometimes a crash on measuring the layout: https://code.google.com/p/android/issues/detail?id=35412 + Log.e("Android bug setting text: ", e); + // remove the formatting by converting to a simple string + descriptionView.setText(description.toString()); + } descriptionView.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance()); fixTextColor(descriptionView, descriptionString); descriptionView.setVisibility(View.VISIBLE); @@ -2054,7 +2061,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc /** * Handle caches with black font color in dark skin and white font color in light skin * by changing background color of the view - * + * * @param view * containing the text * @param text @@ -2156,7 +2163,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc final LogEntry log = getItem(position); if (log.date > 0) { - holder.date.setText(Formatter.formatShortDate(log.date)); + holder.date.setText(Formatter.formatShortDateVerbally(log.date)); holder.date.setVisibility(View.VISIBLE); } else { holder.date.setVisibility(View.GONE); diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java index 29ba5ac..001ef2f 100644 --- a/main/src/cgeo/geocaching/TrackableActivity.java +++ b/main/src/cgeo/geocaching/TrackableActivity.java @@ -430,7 +430,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi protected void fillViewHolder(LogViewHolder holder, final LogEntry log) { if (log.date > 0) { - holder.added.setText(Formatter.formatShortDate(log.date)); + holder.added.setText(Formatter.formatShortDateVerbally(log.date)); } holder.type.setText(log.type.getL10n()); diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java index 929e3b8..d349dc2 100644 --- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java +++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java @@ -2,6 +2,7 @@ package cgeo.geocaching.connector.oc; import cgeo.geocaching.Geocache; import cgeo.geocaching.SearchResult; +import cgeo.geocaching.Settings; import cgeo.geocaching.cgData; import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.connector.ILoggingManager; @@ -11,6 +12,8 @@ import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Viewport; import cgeo.geocaching.utils.CryptUtils; +import org.apache.commons.lang3.StringUtils; + import android.app.Activity; public class OCApiLiveConnector extends OCApiConnector implements ISearchByCenter, ISearchByViewPort { @@ -36,7 +39,11 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente @Override public OAuthLevel getSupportedAuthLevel() { - return OAuthLevel.Level3; + // TODO the tokens must be available connector specific + if (StringUtils.isNotBlank(Settings.getOCDETokenPublic()) && StringUtils.isNotBlank(Settings.getOCDETokenSecret())) { + return OAuthLevel.Level3; + } + return OAuthLevel.Level1; } @Override diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java index bf35574..7b000dc 100644 --- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java +++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java @@ -99,9 +99,7 @@ final public class OkapiClient { private static final String USER_USERNAME = "username"; - private static final String SERVICE_CACHE = "/okapi/services/caches/geocache"; - - // the several realms of possible field s for cache retrieval: + // the several realms of possible fields for cache retrieval: // Core: for livemap requests (L3 - only with level 3 auth) // Additional: additional fields for full cache (L3 - only for level 3 auth, current - only for connectors with current api) private static final String SERVICE_CACHE_CORE_FIELDS = "code|name|location|type|status|difficulty|terrain|size"; @@ -110,16 +108,10 @@ final public class OkapiClient { private static final String SERVICE_CACHE_ADDITIONAL_CURRENT_FIELDS = "gc_code|attribution_note"; private static final String SERVICE_CACHE_ADDITIONAL_L3_FIELDS = "is_watched"; - private static final String SERVICE_SEARCH_AND_RETRIEVE = "/okapi/services/caches/shortcuts/search_and_retrieve"; - private static final String METHOD_SEARCH_NEAREST = "services/caches/search/nearest"; private static final String METHOD_SEARCH_BBOX = "services/caches/search/bbox"; private static final String METHOD_RETRIEVE_CACHES = "services/caches/geocaches"; - private static final String SERVICE_MARK_CACHE = "/okapi/services/caches/mark"; - - private static final String SERVICE_SUBMIT_LOG = "/okapi/services/logs/submit"; - public static Geocache getCache(final String geoCode) { final Parameters params = new Parameters("cache_code", geoCode); IConnector connector = ConnectorFactory.getConnector(geoCode); @@ -132,7 +124,7 @@ final public class OkapiClient { params.add("fields", getFullFields(ocapiConn)); params.add("attribution_append", "none"); - final JSONObject data = request(ocapiConn, SERVICE_CACHE, params); + final JSONObject data = request(ocapiConn, OkapiService.SERVICE_CACHE, params); if (data == null) { return null; @@ -160,7 +152,7 @@ final public class OkapiClient { addRetrieveParams(params, connector); - final JSONObject data = request(connector, SERVICE_SEARCH_AND_RETRIEVE, params); + final JSONObject data = request(connector, OkapiService.SERVICE_SEARCH_AND_RETRIEVE, params); if (data == null) { return Collections.emptyList(); @@ -184,6 +176,7 @@ final public class OkapiClient { final Map<String, String> valueMap = new LinkedHashMap<String, String>(); valueMap.put("bbox", bboxString); + // FIXME Why is this testing level 3? The to be used service is level 1 only. if (connector.getSupportedAuthLevel() != OAuthLevel.Level3) { Log.e("Calling OkapiClient.getCachesBBox with wrong connector"); return Collections.emptyList(); @@ -195,7 +188,7 @@ final public class OkapiClient { addRetrieveParams(params, connector); - final JSONObject data = request(connector, SERVICE_SEARCH_AND_RETRIEVE, params); + final JSONObject data = request(connector, OkapiService.SERVICE_SEARCH_AND_RETRIEVE, params); if (data == null) { return Collections.emptyList(); @@ -208,7 +201,7 @@ final public class OkapiClient { final Parameters params = new Parameters("cache_code", cache.getGeocode()); params.add("watched", watched ? "true" : "false"); - final JSONObject data = request(connector, SERVICE_MARK_CACHE, params); + final JSONObject data = request(connector, OkapiService.SERVICE_MARK_CACHE, params); if (data == null) { return false; @@ -229,7 +222,7 @@ final public class OkapiClient { params.add("needs_maintenance", "true"); } - final JSONObject data = request(connector, SERVICE_SUBMIT_LOG, params); + final JSONObject data = request(connector, OkapiService.SERVICE_SUBMIT_LOG, params); if (data == null) { return new LogResult(StatusCode.LOG_POST_ERROR, ""); @@ -613,7 +606,7 @@ final public class OkapiClient { return res.toString(); } - private static JSONObject request(final OCApiConnector connector, final String service, final Parameters params) { + private static JSONObject request(final OCApiConnector connector, final OkapiService service, final Parameters params) { if (connector == null) { return null; } @@ -625,13 +618,13 @@ final public class OkapiClient { params.add("langpref", getPreferredLanguage()); - if (connector.getSupportedAuthLevel() == OAuthLevel.Level3) { - OAuth.signOAuth(host, service, "GET", false, params, Settings.getOCDETokenPublic(), Settings.getOCDETokenSecret(), connector.getCK(), connector.getCS()); + if (service.level == OAuthLevel.Level3 && connector.getSupportedAuthLevel() == OAuthLevel.Level3) { + OAuth.signOAuth(host, service.methodName, "GET", false, params, Settings.getOCDETokenPublic(), Settings.getOCDETokenSecret(), connector.getCK(), connector.getCS()); } else { connector.addAuthentication(params); } - final String uri = "http://" + host + service; + final String uri = "http://" + host + service.methodName; return Network.requestJSON(uri, params); } diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiService.java b/main/src/cgeo/geocaching/connector/oc/OkapiService.java new file mode 100644 index 0000000..9b47596 --- /dev/null +++ b/main/src/cgeo/geocaching/connector/oc/OkapiService.java @@ -0,0 +1,20 @@ +package cgeo.geocaching.connector.oc; + +import cgeo.geocaching.connector.oc.OCApiConnector.OAuthLevel; + + +enum OkapiService { + SERVICE_CACHE("/okapi/services/caches/geocache", OAuthLevel.Level1), + SERVICE_SEARCH_AND_RETRIEVE("/okapi/services/caches/shortcuts/search_and_retrieve", OAuthLevel.Level1), + SERVICE_MARK_CACHE("/okapi/services/caches/mark", OAuthLevel.Level3), + SERVICE_SUBMIT_LOG("/okapi/services/logs/submit", OAuthLevel.Level3); + + final String methodName; + final OAuthLevel level; + + OkapiService(final String methodName, final OAuthLevel level) { + this.methodName = methodName; + this.level = level; + } + +} diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java index dc0dbf8..7cc697d 100644 --- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java +++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java @@ -167,7 +167,7 @@ public final class MapsforgeMapProvider extends AbstractMapProvider { final List<String> offlineMaps = getOfflineMaps(); for (String mapFile : offlineMaps) { final String mapName = StringUtils.capitalize(StringUtils.substringBeforeLast(new File(mapFile).getName(), ".")); - registerMapSource(new OfflineMapSource(mapFile, this, resources.getString(R.string.map_source_osm_offline) + " - " + mapName, MapGeneratorInternal.DATABASE_RENDERER)); + registerMapSource(new OfflineMapSource(mapFile, this, mapName + " (" + resources.getString(R.string.map_source_osm_offline) + ")", MapGeneratorInternal.DATABASE_RENDERER)); } // have a default entry, if no map files are available. otherwise we cannot select "offline" in the settings if (offlineMaps.isEmpty()) { diff --git a/tests/build.xml b/tests/build.xml index 2afa27b..3c64097 100644 --- a/tests/build.xml +++ b/tests/build.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?>
-<project name="cgeo-os-test" default="help">
+<project name="cgeo-test" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
diff --git a/tests/res/values/strings.xml b/tests/res/values/strings.xml index a5d086f..debba42 100644 --- a/tests/res/values/strings.xml +++ b/tests/res/values/strings.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="app_name">cgeo-osTest</string> + <string name="app_name">c:geo tests</string> </resources> diff --git a/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java b/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java index 4f44f6b..50bf22a 100644 --- a/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java +++ b/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java @@ -21,4 +21,11 @@ public class OkapiClientTest extends CGeoTestCase { assertEquals("Oshkosh Municipal Tank", cache.getName()); assertTrue(cache.isDetailed()); } + + public static void testOCSearchMustWorkWithoutOAuthAccessTokens() { + final String geoCode = "OC1234"; + Geocache cache = OkapiClient.getCache(geoCode); + assertNotNull(cache); + assertEquals("Wupper-Schein", cache.getName()); + } } |
