diff options
Diffstat (limited to 'main')
14 files changed, 95 insertions, 777 deletions
diff --git a/main/build.gradle b/main/build.gradle index 2cc9769..06a36e8 100644 --- a/main/build.gradle +++ b/main/build.gradle @@ -39,8 +39,8 @@ group = 'cgeo.geocaching' version = '0.0.1' android { - compileSdkVersion "Google Inc.:Google APIs:19" - //compileSdkVersion 19 + //compileSdkVersion "Google Inc.:Google APIs:19" + compileSdkVersion 19 buildToolsVersion "21.1.2" compileOptions { diff --git a/main/project.properties b/main/project.properties index 4fed171..600d70f 100644 --- a/main/project.properties +++ b/main/project.properties @@ -11,7 +11,7 @@ proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt:../play-services-base/proguard.txt:../play-services-location/proguard.txt # Project target. -target=Google Inc.:Google APIs:21 +target=android-21 android.library.reference.1=../mapswithme-api android.library.reference.2=../android-support-v7-appcompat android.library.reference.3=../showcaseview diff --git a/main/src/cgeo/geocaching/maps/MapProviderFactory.java b/main/src/cgeo/geocaching/maps/MapProviderFactory.java index a640847..b504020 100644 --- a/main/src/cgeo/geocaching/maps/MapProviderFactory.java +++ b/main/src/cgeo/geocaching/maps/MapProviderFactory.java @@ -2,7 +2,7 @@ package cgeo.geocaching.maps; import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.R; -import cgeo.geocaching.maps.google.v1.GoogleMapProvider; +//import cgeo.geocaching.maps.google.v1.GoogleMapProvider; import cgeo.geocaching.maps.interfaces.MapProvider; import cgeo.geocaching.maps.interfaces.MapSource; import cgeo.geocaching.maps.mapsforge.MapsforgeMapProvider; @@ -25,9 +25,9 @@ public class MapProviderFactory { static { // add GoogleMapProvider only if google api is available in order to support x86 android emulator - if (isGoogleMapsInstalled()) { - GoogleMapProvider.getInstance(); - } +// if (isGoogleMapsInstalled()) { +// GoogleMapProvider.getInstance(); +// } MapsforgeMapProvider.getInstance(); } diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleCacheOverlay.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleCacheOverlay.java deleted file mode 100644 index 3d2b83c..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleCacheOverlay.java +++ /dev/null @@ -1,120 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.maps.CachesOverlay; -import cgeo.geocaching.maps.interfaces.ItemizedOverlayImpl; -import cgeo.geocaching.maps.interfaces.MapProjectionImpl; -import cgeo.geocaching.maps.interfaces.MapViewImpl; - -import com.google.android.maps.ItemizedOverlay; -import com.google.android.maps.MapView; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Point; -import android.graphics.drawable.Drawable; - -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -/** - * Google specific implementation of the itemized cache overlay - */ -public class GoogleCacheOverlay extends ItemizedOverlay<GoogleCacheOverlayItem> implements ItemizedOverlayImpl { - - private final CachesOverlay base; - private final Lock lock = new ReentrantLock(); - - public GoogleCacheOverlay(final Context contextIn, final Drawable markerIn) { - super(boundCenterBottom(markerIn)); - base = new CachesOverlay(this, contextIn); - } - - @Override - public CachesOverlay getBase() { - return base; - } - - @Override - protected GoogleCacheOverlayItem createItem(final int i) { - if (base == null) { - return null; - } - - return (GoogleCacheOverlayItem) base.createItem(i); - } - - @Override - public int size() { - if (base == null) { - return 0; - } - - return base.size(); - } - - @Override - protected boolean onTap(final int arg0) { - if (base == null) { - return false; - } - - return base.onTap(arg0); - } - - @Override - public void draw(final Canvas canvas, final MapView mapView, final boolean shadow) { - base.draw(canvas, castMapViewImpl(mapView), shadow); - } - - private static MapViewImpl castMapViewImpl(final MapView mapView) { - assert mapView instanceof MapViewImpl; - return (MapViewImpl) mapView; - } - - @Override - public void superPopulate() { - populate(); - } - - @Override - public Drawable superBoundCenterBottom(final Drawable marker) { - return ItemizedOverlay.boundCenterBottom(marker); - } - - @Override - public void superSetLastFocusedItemIndex(final int i) { - super.setLastFocusedIndex(i); - } - - @Override - public boolean superOnTap(final int index) { - return super.onTap(index); - } - - @Override - public void superDraw(final Canvas canvas, final MapViewImpl mapView, final boolean shadow) { - super.draw(canvas, (MapView) mapView, shadow); - } - - @Override - public void superDrawOverlayBitmap(final Canvas canvas, final Point drawPosition, - final MapProjectionImpl projection, final byte drawZoomLevel) { - // Nothing to do here... - } - - @Override - public void lock() { - lock.lock(); - } - - @Override - public void unlock() { - lock.unlock(); - } - - @Override - public MapViewImpl getMapViewImpl() { - throw new UnsupportedOperationException(); - } - -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleCacheOverlayItem.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleCacheOverlayItem.java deleted file mode 100644 index 977d67c..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleCacheOverlayItem.java +++ /dev/null @@ -1,30 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.IWaypoint; -import cgeo.geocaching.maps.interfaces.CachesOverlayItemImpl; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.OverlayItem; - -public class GoogleCacheOverlayItem extends OverlayItem implements CachesOverlayItemImpl { - final private IWaypoint coord; - final private boolean applyDistanceRule; - - public GoogleCacheOverlayItem(final IWaypoint coordinate, final boolean applyDistanceRule) { - super(new GeoPoint(coordinate.getCoords().getLatitudeE6(), coordinate.getCoords().getLongitudeE6()), coordinate.getName(), ""); - - this.coord = coordinate; - this.applyDistanceRule = applyDistanceRule; - } - - @Override - public IWaypoint getCoord() { - return coord; - } - - @Override - public boolean applyDistanceRule() { - return applyDistanceRule; - } - -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleGeoPoint.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleGeoPoint.java deleted file mode 100644 index 3f89807..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleGeoPoint.java +++ /dev/null @@ -1,19 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.location.Geopoint; -import cgeo.geocaching.maps.interfaces.GeoPointImpl; - -import com.google.android.maps.GeoPoint; - -public class GoogleGeoPoint extends GeoPoint implements GeoPointImpl { - - public GoogleGeoPoint(final int latitudeE6, final int longitudeE6) { - super(latitudeE6, longitudeE6); - } - - @Override - public Geopoint getCoords() { - return new Geopoint(getLatitudeE6() / 1e6, getLongitudeE6() / 1e6); - } - -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapActivity.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleMapActivity.java deleted file mode 100644 index 04078cb..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapActivity.java +++ /dev/null @@ -1,129 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.activity.ActivityMixin; -import cgeo.geocaching.activity.FilteredActivity; -import cgeo.geocaching.maps.AbstractMap; -import cgeo.geocaching.maps.CGeoMap; -import cgeo.geocaching.maps.interfaces.MapActivityImpl; - -import com.google.android.maps.MapActivity; - -import android.app.Activity; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; - -public class GoogleMapActivity extends MapActivity implements MapActivityImpl, FilteredActivity { - - private final AbstractMap mapBase; - - public GoogleMapActivity() { - mapBase = new CGeoMap(this); - } - - @Override - protected boolean isRouteDisplayed() { - return false; - } - - @Override - public Activity getActivity() { - return this; - } - - @Override - protected void onCreate(final Bundle icicle) { - mapBase.onCreate(icicle); - } - - @Override - protected void onSaveInstanceState(final Bundle outState) { - mapBase.onSaveInstanceState(outState); - } - - @Override - protected void onDestroy() { - mapBase.onDestroy(); - } - - @Override - protected void onPause() { - mapBase.onPause(); - } - - @Override - protected void onResume() { - mapBase.onResume(); - } - - @Override - public boolean onCreateOptionsMenu(final Menu menu) { - return mapBase.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - return mapBase.onOptionsItemSelected(item); - } - - @Override - public boolean onPrepareOptionsMenu(final Menu menu) { - return mapBase.onPrepareOptionsMenu(menu); - } - - @Override - protected void onStop() { - mapBase.onStop(); - } - - @Override - public void superOnCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public boolean superOnCreateOptionsMenu(final Menu menu) { - return super.onCreateOptionsMenu(menu); - } - - @Override - public void superOnDestroy() { - super.onDestroy(); - } - - @Override - public boolean superOnOptionsItemSelected(final MenuItem item) { - return super.onOptionsItemSelected(item); - } - - @Override - public void navigateUp(final View view) { - ActivityMixin.navigateUp(this); - } - - @Override - public void superOnResume() { - super.onResume(); - } - - @Override - public void superOnStop() { - super.onStop(); - } - - @Override - public void superOnPause() { - super.onPause(); - } - - @Override - public boolean superOnPrepareOptionsMenu(final Menu menu) { - return super.onPrepareOptionsMenu(menu); - } - - @Override - public void showFilterMenu(final View view) { - // do nothing, the filter bar only shows the global filter - } -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapController.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleMapController.java deleted file mode 100644 index a533a76..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapController.java +++ /dev/null @@ -1,42 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.maps.interfaces.GeoPointImpl; -import cgeo.geocaching.maps.interfaces.MapControllerImpl; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapController; - -public class GoogleMapController implements MapControllerImpl { - - private final MapController mapController; - - public GoogleMapController(final MapController mapControllerIn) { - mapController = mapControllerIn; - } - - @Override - public void animateTo(final GeoPointImpl geoPoint) { - mapController.animateTo(castToGeoPointImpl(geoPoint)); - } - - private static GeoPoint castToGeoPointImpl(final GeoPointImpl geoPoint) { - assert geoPoint instanceof GeoPoint; - return (GeoPoint) geoPoint; - } - - @Override - public void setCenter(final GeoPointImpl geoPoint) { - mapController.setCenter(castToGeoPointImpl(geoPoint)); - } - - @Override - public void setZoom(final int mapzoom) { - mapController.setZoom(mapzoom); - } - - @Override - public void zoomToSpan(final int latSpanE6, final int lonSpanE6) { - mapController.zoomToSpan(latSpanE6, lonSpanE6); - } - -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapItemFactory.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleMapItemFactory.java deleted file mode 100644 index a35eda8..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapItemFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.IWaypoint; -import cgeo.geocaching.location.Geopoint; -import cgeo.geocaching.maps.interfaces.CachesOverlayItemImpl; -import cgeo.geocaching.maps.interfaces.GeoPointImpl; -import cgeo.geocaching.maps.interfaces.MapItemFactory; - -public class GoogleMapItemFactory implements MapItemFactory { - - @Override - public GeoPointImpl getGeoPointBase(final Geopoint coords) { - return new GoogleGeoPoint(coords.getLatitudeE6(), coords.getLongitudeE6()); - } - - @Override - public CachesOverlayItemImpl getCachesOverlayItem(final IWaypoint coordinate, final boolean applyDistanceRule) { - return new GoogleCacheOverlayItem(coordinate, applyDistanceRule); - } -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapProjection.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleMapProjection.java deleted file mode 100644 index 8a03bbb..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapProjection.java +++ /dev/null @@ -1,29 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.maps.interfaces.GeoPointImpl; -import cgeo.geocaching.maps.interfaces.MapProjectionImpl; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.Projection; - -import android.graphics.Point; - -public class GoogleMapProjection implements MapProjectionImpl { - - private final Projection projection; - - public GoogleMapProjection(final Projection projectionIn) { - projection = projectionIn; - } - - @Override - public void toPixels(final GeoPointImpl leftGeo, final Point left) { - projection.toPixels((GeoPoint) leftGeo, left); - } - - @Override - public Object getImpl() { - return projection; - } - -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapProvider.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleMapProvider.java deleted file mode 100644 index 8c9dd4d..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapProvider.java +++ /dev/null @@ -1,92 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.CgeoApplication; -import cgeo.geocaching.R; -import cgeo.geocaching.maps.AbstractMapProvider; -import cgeo.geocaching.maps.AbstractMapSource; -import cgeo.geocaching.maps.interfaces.MapItemFactory; -import cgeo.geocaching.maps.interfaces.MapProvider; -import cgeo.geocaching.maps.interfaces.MapSource; - -import com.google.android.maps.MapActivity; - -import android.content.res.Resources; - -public final class GoogleMapProvider extends AbstractMapProvider { - - public static final String GOOGLE_MAP_ID = "GOOGLE_MAP"; - public static final String GOOGLE_SATELLITE_ID = "GOOGLE_SATELLITE"; - - private final MapItemFactory mapItemFactory; - - private GoogleMapProvider() { - final Resources resources = CgeoApplication.getInstance().getResources(); - - registerMapSource(new GoogleMapSource(this, resources.getString(R.string.map_source_google_map))); - registerMapSource(new GoogleSatelliteSource(this, resources.getString(R.string.map_source_google_satellite))); - - mapItemFactory = new GoogleMapItemFactory(); - } - - private static class Holder { - private static final GoogleMapProvider INSTANCE = new GoogleMapProvider(); - } - - public static GoogleMapProvider getInstance() { - return Holder.INSTANCE; - } - - public static boolean isSatelliteSource(final MapSource mapSource) { - return mapSource instanceof GoogleSatelliteSource; - } - - @Override - public Class<? extends MapActivity> getMapClass() { - return GoogleMapActivity.class; - } - - @Override - public int getMapViewId() { - return R.id.map; - } - - @Override - public int getMapLayoutId() { - return R.layout.map_google; - } - - @Override - public MapItemFactory getMapItemFactory() { - return mapItemFactory; - } - - @Override - public boolean isSameActivity(final MapSource source1, final MapSource source2) { - return true; - } - - private static abstract class AbstractGoogleMapSource extends AbstractMapSource { - - protected AbstractGoogleMapSource(final String id, final MapProvider mapProvider, final String name) { - super(id, mapProvider, name); - } - - } - - private static final class GoogleMapSource extends AbstractGoogleMapSource { - - public GoogleMapSource(final MapProvider mapProvider, final String name) { - super(GOOGLE_MAP_ID, mapProvider, name); - } - - } - - private static final class GoogleSatelliteSource extends AbstractGoogleMapSource { - - public GoogleSatelliteSource(final MapProvider mapProvider, final String name) { - super(GOOGLE_SATELLITE_ID, mapProvider, name); - } - - } - -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapView.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleMapView.java deleted file mode 100644 index f3b7e9e..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleMapView.java +++ /dev/null @@ -1,203 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - -import cgeo.geocaching.location.Geopoint; -import cgeo.geocaching.location.Viewport; -import cgeo.geocaching.maps.CachesOverlay; -import cgeo.geocaching.maps.PositionAndScaleOverlay; -import cgeo.geocaching.maps.interfaces.GeneralOverlay; -import cgeo.geocaching.maps.interfaces.GeoPointImpl; -import cgeo.geocaching.maps.interfaces.MapControllerImpl; -import cgeo.geocaching.maps.interfaces.MapProjectionImpl; -import cgeo.geocaching.maps.interfaces.MapViewImpl; -import cgeo.geocaching.maps.interfaces.OnMapDragListener; -import cgeo.geocaching.settings.Settings; -import cgeo.geocaching.utils.Log; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapView; - -import org.apache.commons.lang3.reflect.MethodUtils; -import org.eclipse.jdt.annotation.NonNull; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.GestureDetector; -import android.view.GestureDetector.SimpleOnGestureListener; -import android.view.Gravity; -import android.view.MotionEvent; -import android.widget.FrameLayout; -import android.widget.ZoomButtonsController; - -public class GoogleMapView extends MapView implements MapViewImpl { - private GestureDetector gestureDetector; - private OnMapDragListener onDragListener; - private final GoogleMapController mapController = new GoogleMapController(getController()); - - public GoogleMapView(final Context context, final AttributeSet attrs) { - super(context, attrs); - initialize(context); - } - - public GoogleMapView(final Context context, final AttributeSet attrs, final int defStyle) { - super(context, attrs, defStyle); - initialize(context); - } - - public GoogleMapView(final Context context, final String apiKey) { - super(context, apiKey); - initialize(context); - } - - private void initialize(final Context context) { - if (isInEditMode()) { - return; - } - gestureDetector = new GestureDetector(context, new GestureListener()); - } - - @Override - public void draw(final Canvas canvas) { - try { - if (getMapZoomLevel() > 22) { // to avoid too close zoom level (mostly on Samsung Galaxy S series) - getController().setZoom(22); - } - - super.draw(canvas); - } catch (final Exception e) { - Log.e("GoogleMapView.draw", e); - } - } - - @Override - public void displayZoomControls(final boolean takeFocus) { - try { - // Push zoom controls to the right - final FrameLayout.LayoutParams zoomParams = new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT); - zoomParams.gravity = Gravity.RIGHT; - // The call to retrieve the zoom buttons controller is undocumented and works so far on all devices - // supported by Google Play, but fails at least on one Jolla. - final ZoomButtonsController controller = (ZoomButtonsController) MethodUtils.invokeMethod(this, "getZoomButtonsController"); - controller.getZoomControls().setLayoutParams(zoomParams); - - super.displayZoomControls(takeFocus); - } catch (final NoSuchMethodException ignored) { - Log.w("GoogleMapView.displayZoomControls: unable to explicitly place the zoom buttons"); - } catch (final Exception e) { - Log.e("GoogleMapView.displayZoomControls", e); - } - } - - @Override - public MapControllerImpl getMapController() { - return mapController; - } - - @Override - @NonNull - public GeoPointImpl getMapViewCenter() { - final GeoPoint point = getMapCenter(); - return new GoogleGeoPoint(point.getLatitudeE6(), point.getLongitudeE6()); - } - - @Override - public Viewport getViewport() { - return new Viewport(getMapViewCenter(), getLatitudeSpan() / 1e6, getLongitudeSpan() / 1e6); - } - - @Override - public void clearOverlays() { - getOverlays().clear(); - } - - @Override - public MapProjectionImpl getMapProjection() { - return new GoogleMapProjection(getProjection()); - } - - @Override - public CachesOverlay createAddMapOverlay(final Context context, final Drawable drawable) { - - final GoogleCacheOverlay ovl = new GoogleCacheOverlay(context, drawable); - getOverlays().add(ovl); - return ovl.getBase(); - } - - @Override - public PositionAndScaleOverlay createAddPositionAndScaleOverlay(final Geopoint coords, final String geocode) { - - final GoogleOverlay ovl = new GoogleOverlay(this, coords, geocode); - getOverlays().add(ovl); - return (PositionAndScaleOverlay) ovl.getBase(); - } - - @Override - public int getMapZoomLevel() { - return getZoomLevel(); - } - - @Override - public void setMapSource() { - setSatellite(GoogleMapProvider.isSatelliteSource(Settings.getMapSource())); - } - - @Override - public void repaintRequired(final GeneralOverlay overlay) { - invalidate(); - } - - @Override - public void setOnDragListener(final OnMapDragListener onDragListener) { - this.onDragListener = onDragListener; - } - - @Override - public boolean onTouchEvent(final MotionEvent ev) { - try { - gestureDetector.onTouchEvent(ev); - return super.onTouchEvent(ev); - } catch (final Exception e) { - Log.e("GoogleMapView.onTouchEvent", e); - } - return false; - } - - private class GestureListener extends SimpleOnGestureListener { - @Override - public boolean onDoubleTap(final MotionEvent e) { - getController().zoomInFixing((int) e.getX(), (int) e.getY()); - if (onDragListener != null) { - onDragListener.onDrag(); - } - return true; - } - - @Override - public boolean onScroll(final MotionEvent e1, final MotionEvent e2, - final float distanceX, final float distanceY) { - if (onDragListener != null) { - onDragListener.onDrag(); - } - return super.onScroll(e1, e2, distanceX, distanceY); - } - } - - @Override - public boolean needsInvertedColors() { - return false; - } - - @Override - public boolean hasMapThemes() { - // Not supported - return false; - } - - @Override - public void setMapTheme() { - // Not supported - } -} diff --git a/main/src/cgeo/geocaching/maps/google/v1/GoogleOverlay.java b/main/src/cgeo/geocaching/maps/google/v1/GoogleOverlay.java deleted file mode 100644 index 415de1f..0000000 --- a/main/src/cgeo/geocaching/maps/google/v1/GoogleOverlay.java +++ /dev/null @@ -1,55 +0,0 @@ -package cgeo.geocaching.maps.google.v1; - -import cgeo.geocaching.location.Geopoint; -import cgeo.geocaching.maps.PositionAndScaleOverlay; -import cgeo.geocaching.maps.interfaces.GeneralOverlay; -import cgeo.geocaching.maps.interfaces.MapViewImpl; -import cgeo.geocaching.maps.interfaces.OverlayImpl; - -import com.google.android.maps.MapView; -import com.google.android.maps.Overlay; - -import android.graphics.Canvas; - -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -public class GoogleOverlay extends Overlay implements OverlayImpl { - - private PositionAndScaleOverlay overlayBase = null; - private final Lock lock = new ReentrantLock(); - - public GoogleOverlay(final MapViewImpl mapView, final Geopoint coords, final String geocode) { - overlayBase = new PositionAndScaleOverlay(this, mapView, coords, geocode); - } - - @Override - public void draw(final Canvas canvas, final MapView mapView, final boolean shadow) { - super.draw(canvas, mapView, shadow); - - if (overlayBase != null) { - assert mapView instanceof MapViewImpl; - overlayBase.draw(canvas, (MapViewImpl) mapView, shadow); - } - } - - public GeneralOverlay getBase() { - return overlayBase; - } - - @Override - public void lock() { - lock.lock(); - } - - @Override - public void unlock() { - lock.unlock(); - } - - @Override - public MapViewImpl getMapViewImpl() { - throw new UnsupportedOperationException(); - } - -} diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index 3d47f8b..c15bc1b 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -12,8 +12,7 @@ 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.LivemapStrategy; -import cgeo.geocaching.maps.google.v1.GoogleMapProvider; +//import cgeo.geocaching.maps.google.v1.GoogleMapProvider; import cgeo.geocaching.maps.interfaces.GeoPointImpl; import cgeo.geocaching.maps.interfaces.MapProvider; import cgeo.geocaching.maps.interfaces.MapSource; @@ -58,7 +57,7 @@ public class Settings { private static final char HISTORY_SEPARATOR = ','; public static final int SHOW_WP_THRESHOLD_DEFAULT = 10; public static final int SHOW_WP_THRESHOLD_MAX = 50; - private static final int MAP_SOURCE_DEFAULT = GoogleMapProvider.GOOGLE_MAP_ID.hashCode(); +// private static final int MAP_SOURCE_DEFAULT = GoogleMapProvider.GOOGLE_MAP_ID.hashCode(); public static final boolean HW_ACCEL_DISABLED_BY_DEFAULT = Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 || @@ -137,6 +136,63 @@ public class Settings { // 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); + e.putFloat(getKey(R.string.pref_anylongitude), old.getFloat(getKey(R.string.pref_anylongitude), 0)); + e.putFloat(getKey(R.string.pref_anylatitude), old.getFloat(getKey(R.string.pref_anylatitude), 0)); + e.putBoolean(getKey(R.string.pref_offlinemaps), 0 != old.getInt(getKey(R.string.pref_offlinemaps), 1)); + e.putBoolean(getKey(R.string.pref_offlinewpmaps), 0 != old.getInt(getKey(R.string.pref_offlinewpmaps), 0)); + e.putString(getKey(R.string.pref_webDeviceCode), old.getString(getKey(R.string.pref_webDeviceCode), null)); + e.putString(getKey(R.string.pref_webDeviceName), old.getString(getKey(R.string.pref_webDeviceName), null)); + e.putBoolean(getKey(R.string.pref_maplive), old.getInt(getKey(R.string.pref_maplive), 1) != 0); +// e.putInt(getKey(R.string.pref_mapsource), old.getInt(getKey(R.string.pref_mapsource), MAP_SOURCE_DEFAULT)); + e.putBoolean(getKey(R.string.pref_twitter), 0 != old.getInt(getKey(R.string.pref_twitter), 0)); + e.putBoolean(getKey(R.string.pref_showaddress), 0 != old.getInt(getKey(R.string.pref_showaddress), 1)); + e.putBoolean(getKey(R.string.pref_showcaptcha), old.getBoolean(getKey(R.string.pref_showcaptcha), false)); + e.putBoolean(getKey(R.string.pref_maptrail), old.getInt(getKey(R.string.pref_maptrail), 1) != 0); + e.putInt(getKey(R.string.pref_lastmapzoom), old.getInt(getKey(R.string.pref_lastmapzoom), 14)); + e.putBoolean(getKey(R.string.pref_livelist), 0 != old.getInt(getKey(R.string.pref_livelist), 1)); + e.putBoolean(getKey(R.string.pref_units), old.getInt(getKey(R.string.pref_units), unitsMetric) == unitsMetric); + e.putBoolean(getKey(R.string.pref_skin), old.getInt(getKey(R.string.pref_skin), 0) != 0); + e.putInt(getKey(R.string.pref_lastusedlist), old.getInt(getKey(R.string.pref_lastusedlist), StoredList.STANDARD_LIST_ID)); + e.putString(getKey(R.string.pref_cachetype), old.getString(getKey(R.string.pref_cachetype), CacheType.ALL.id)); + e.putString(getKey(R.string.pref_twitter_token_secret), old.getString(getKey(R.string.pref_twitter_token_secret), null)); + e.putString(getKey(R.string.pref_twitter_token_public), old.getString(getKey(R.string.pref_twitter_token_public), null)); + e.putInt(getKey(R.string.pref_version), old.getInt(getKey(R.string.pref_version), 0)); + e.putBoolean(getKey(R.string.pref_autoloaddesc), 0 != old.getInt(getKey(R.string.pref_autoloaddesc), 1)); + e.putBoolean(getKey(R.string.pref_ratingwanted), old.getBoolean(getKey(R.string.pref_ratingwanted), true)); + e.putBoolean(getKey(R.string.pref_friendlogswanted), old.getBoolean(getKey(R.string.pref_friendlogswanted), true)); + e.putBoolean(getKey(R.string.pref_useenglish), old.getBoolean(getKey(R.string.pref_useenglish), false)); + e.putBoolean(getKey(R.string.pref_usecompass), 0 != old.getInt(getKey(R.string.pref_usecompass), 1)); + e.putBoolean(getKey(R.string.pref_trackautovisit), old.getBoolean(getKey(R.string.pref_trackautovisit), false)); + e.putBoolean(getKey(R.string.pref_sigautoinsert), old.getBoolean(getKey(R.string.pref_sigautoinsert), false)); + e.putBoolean(getKey(R.string.pref_logimages), old.getBoolean(getKey(R.string.pref_logimages), false)); + e.putBoolean(getKey(R.string.pref_excludedisabled), 0 != old.getInt(getKey(R.string.pref_excludedisabled), 0)); + e.putBoolean(getKey(R.string.pref_excludemine), 0 != old.getInt(getKey(R.string.pref_excludemine), 0)); + e.putString(getKey(R.string.pref_mapfile), old.getString(getKey(R.string.pref_mapfile), null)); + e.putString(getKey(R.string.pref_signature), old.getString(getKey(R.string.pref_signature), null)); + e.putString(getKey(R.string.pref_pass_vote), old.getString(getKey(R.string.pref_pass_vote), null)); + e.putString(getKey(R.string.pref_password), old.getString(getKey(R.string.pref_password), null)); + e.putString(getKey(R.string.pref_username), old.getString(getKey(R.string.pref_username), null)); + e.putString(getKey(R.string.pref_memberstatus), old.getString(getKey(R.string.pref_memberstatus), "")); + e.putInt(getKey(R.string.pref_coordinputformat), old.getInt(getKey(R.string.pref_coordinputformat), CoordInputFormatEnum.DEFAULT_INT_VALUE)); + e.putBoolean(getKey(R.string.pref_log_offline), old.getBoolean(getKey(R.string.pref_log_offline), false)); + e.putBoolean(getKey(R.string.pref_choose_list), old.getBoolean(getKey(R.string.pref_choose_list), true)); + e.putBoolean(getKey(R.string.pref_loaddirectionimg), old.getBoolean(getKey(R.string.pref_loaddirectionimg), true)); + e.putString(getKey(R.string.pref_gccustomdate), old.getString(getKey(R.string.pref_gccustomdate), null)); + e.putInt(getKey(R.string.pref_showwaypointsthreshold), old.getInt(getKey(R.string.pref_showwaypointsthreshold), SHOW_WP_THRESHOLD_DEFAULT)); + e.putString(getKey(R.string.pref_cookiestore), old.getString(getKey(R.string.pref_cookiestore), null)); + e.putBoolean(getKey(R.string.pref_opendetailslastpage), old.getBoolean(getKey(R.string.pref_opendetailslastpage), false)); + e.putInt(getKey(R.string.pref_lastdetailspage), old.getInt(getKey(R.string.pref_lastdetailspage), 1)); + e.putInt(getKey(R.string.pref_defaultNavigationTool), old.getInt(getKey(R.string.pref_defaultNavigationTool), NavigationAppsEnum.COMPASS.id)); + e.putInt(getKey(R.string.pref_defaultNavigationTool2), old.getInt(getKey(R.string.pref_defaultNavigationTool2), NavigationAppsEnum.INTERNAL_MAP.id)); + e.putInt(getKey(R.string.pref_livemapstrategy), old.getInt(getKey(R.string.pref_livemapstrategy), Strategy.AUTO.id)); + 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); @@ -191,6 +247,7 @@ public class Settings { 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.apply(); @@ -212,9 +269,9 @@ public class Settings { e.putInt(getKey(R.string.pref_showwaypointsthreshold), wpThreshold); // KEY_MAP_SOURCE must be string, because it is the key for a ListPreference now - final int ms = sharedPrefs.getInt(getKey(R.string.pref_mapsource), MAP_SOURCE_DEFAULT); +// final int ms = sharedPrefs.getInt(getKey(R.string.pref_mapsource), MAP_SOURCE_DEFAULT); e.remove(getKey(R.string.pref_mapsource)); - e.putString(getKey(R.string.pref_mapsource), String.valueOf(ms)); +// e.putString(getKey(R.string.pref_mapsource), String.valueOf(ms)); // navigation tool ids must be string, because ListPreference uses strings as keys final int dnt1 = sharedPrefs.getInt(getKey(R.string.pref_defaultNavigationTool), NavigationAppsEnum.COMPASS.id); @@ -692,8 +749,8 @@ public class Settings { if (mapSource != null) { return mapSource; } - final int id = getConvertedMapId(); - mapSource = MapProviderFactory.getMapSource(id); +// final int id = getConvertedMapId(); +// mapSource = MapProviderFactory.getMapSource(id); if (mapSource != null) { // don't use offline maps if the map file is not valid if (!(mapSource instanceof OfflineMapSource) || isValidMapFile()) { @@ -717,30 +774,30 @@ public class Settings { /** * 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, - String.valueOf(MAP_SOURCE_DEFAULT))); - switch (id) { - case GOOGLEMAP_BASEID + MAP: - return GoogleMapProvider.GOOGLE_MAP_ID.hashCode(); - case GOOGLEMAP_BASEID + SATELLITE: - return GoogleMapProvider.GOOGLE_SATELLITE_ID.hashCode(); - case MFMAP_BASEID + MAPNIK: - return MapsforgeMapProvider.MAPSFORGE_MAPNIK_ID.hashCode(); - case MFMAP_BASEID + CYCLEMAP: - return MapsforgeMapProvider.MAPSFORGE_CYCLEMAP_ID.hashCode(); - case MFMAP_BASEID + OFFLINE: { - final String mapFile = Settings.getMapFile(); - if (StringUtils.isNotEmpty(mapFile)) { - return mapFile.hashCode(); - } - break; - } - default: - break; - } - return id; - } +// private static int getConvertedMapId() { +// final int id = Integer.parseInt(getString(R.string.pref_mapsource, +// String.valueOf(MAP_SOURCE_DEFAULT))); +// switch (id) { +// case GOOGLEMAP_BASEID + MAP: +// return GoogleMapProvider.GOOGLE_MAP_ID.hashCode(); +// case GOOGLEMAP_BASEID + SATELLITE: +// return GoogleMapProvider.GOOGLE_SATELLITE_ID.hashCode(); +// case MFMAP_BASEID + MAPNIK: +// return MapsforgeMapProvider.MAPSFORGE_MAPNIK_ID.hashCode(); +// case MFMAP_BASEID + CYCLEMAP: +// return MapsforgeMapProvider.MAPSFORGE_CYCLEMAP_ID.hashCode(); +// case MFMAP_BASEID + OFFLINE: { +// final String mapFile = Settings.getMapFile(); +// if (StringUtils.isNotEmpty(mapFile)) { +// return mapFile.hashCode(); +// } +// break; +// } +// default: +// break; +// } +// return id; +// } public static synchronized void setMapSource(final MapSource newMapSource) { putString(R.string.pref_mapsource, String.valueOf(newMapSource.getNumericalId())); |