diff options
| author | rsudev <rasch@munin-soft.de> | 2011-08-24 20:47:13 +0200 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2011-08-24 20:47:13 +0200 |
| commit | 78dd2abf0ec7d9220db9034e0f321120828fae0a (patch) | |
| tree | 9579831e47dcee441beb09abc5e30f5e42b51ae6 /src | |
| parent | e7b8fff5418082965cff8c56745ba04cff0d385d (diff) | |
| parent | a888c9a75a42944687aa203f0138fce4c5ab971d (diff) | |
| download | cgeo-78dd2abf0ec7d9220db9034e0f321120828fae0a.zip cgeo-78dd2abf0ec7d9220db9034e0f321120828fae0a.tar.gz cgeo-78dd2abf0ec7d9220db9034e0f321120828fae0a.tar.bz2 | |
Merge branch 'master' of https://github.com/cgeo/c-geo-opensource
Diffstat (limited to 'src')
| -rw-r--r-- | src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java | 6 | ||||
| -rw-r--r-- | src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java | 49 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeocoords.java | 14 |
3 files changed, 58 insertions, 11 deletions
diff --git a/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java index 81f251d..e496e33 100644 --- a/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java +++ b/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java @@ -24,8 +24,10 @@ public final class NavigationAppFactory extends AbstractAppFactory { new InternalMap(res), new StaticMapApp(res), new LocusApp(res), - new RMapsApp(res), new GoogleMapsApp(res), - new GoogleNavigationApp(res) }; + new RMapsApp(res), + new GoogleMapsApp(res), + new GoogleNavigationApp(res), + new StreetviewApp(res)}; } return apps; } diff --git a/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java b/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java new file mode 100644 index 0000000..24d6606 --- /dev/null +++ b/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java @@ -0,0 +1,49 @@ +package cgeo.geocaching.apps.cache.navi; + +import android.app.Activity; +import android.content.ActivityNotFoundException; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.net.Uri; +import cgeo.geocaching.R; +import cgeo.geocaching.cgCache; +import cgeo.geocaching.cgGeo; +import cgeo.geocaching.cgWaypoint; +import cgeo.geocaching.activity.ActivityMixin; + +class StreetviewApp extends AbstractNavigationApp implements NavigationApp { + + StreetviewApp(final Resources res) { + super(res.getString(R.string.cache_menu_streetview), null); + } + + @Override + public boolean isInstalled(Context context) { + return true; + } + + public boolean invoke(cgGeo geo, Activity activity, Resources res, + cgCache cache, + Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + if (cache == null && waypoint == null && latitude == null && longitude == null) { + return false; + } + + try { + if (cache != null && cache.latitude != null && cache.longitude != null) { + activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("google.streetview:cbll=" + cache.latitude + "," + cache.longitude))); + } else if (waypoint != null && waypoint.latitude != null && waypoint.longitude != null) { + activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("google.streetview:cbll=" + waypoint.latitude + "," + waypoint.longitude))); + } + + return true; + } catch (ActivityNotFoundException e) { + if (res != null) { + ActivityMixin.showToast(activity, res.getString(R.string.err_application_no)); + } + } + + return false; + } +} diff --git a/src/cgeo/geocaching/cgeocoords.java b/src/cgeo/geocaching/cgeocoords.java index c206d44..1639c70 100644 --- a/src/cgeo/geocaching/cgeocoords.java +++ b/src/cgeo/geocaching/cgeocoords.java @@ -213,12 +213,12 @@ public class cgeocoords extends Dialog { if (latitude != null) { eLatDeg.setText(addZeros(latDeg, 2) + Integer.toString(latDeg)); eLatMin.setText(addZeros(latMin, 2) + Integer.toString(latMin)); - eLatSec.setText(Integer.toString(latMinFrac) + addZeros(latMinFrac, 3)); + eLatSec.setText(addZeros(latMinFrac, 3) + Integer.toString(latMinFrac)); } if (longitude != null) { eLonDeg.setText(addZeros(lonDeg, 3) + Integer.toString(lonDeg)); eLonMin.setText(addZeros(lonMin, 2) + Integer.toString(lonMin)); - eLonSec.setText(Integer.toString(lonMinFrac) + addZeros(lonMinFrac, 3)); + eLonSec.setText(addZeros(lonMinFrac, 3) + Integer.toString(lonMinFrac)); } break; case Sec: // DDD° MM SS.SSS @@ -414,13 +414,9 @@ public class cgeocoords extends Dialog { break; case Min: Double latMinFrac = latSec * 1.0; - while (latMinFrac > 1) { - latMinFrac /= 10; - } - Double lonMinFrac = lonSec * 1.0; - while (lonMinFrac > 1) { - lonMinFrac /= 10; - } + latMinFrac /= 1000; + Double lonMinFrac = lonSec * 1.0; + lonMinFrac /= 1000; latitude = latDeg + latMin/60.0 + latMinFrac/60.0; longitude = lonDeg + lonMin/60.0 + lonMinFrac/60.0; break; |
