summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukas.paczos@gmail.com>2018-05-14 14:59:12 +0200
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2018-05-22 20:26:43 +0200
commit52855f4c04358e38b12219426b65373ee86a0e6b (patch)
treedecf8920a5f8c132e7f84d4e0ec211411199dce1
parentc1d5840e5a892b07f08c43a69308dc533f906ef5 (diff)
downloadqtlocation-mapboxgl-52855f4c04358e38b12219426b65373ee86a0e6b.tar.gz
[android] - reworked UiSettings into a ViewModel, removed focal point listener from UiSettings
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java22
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java2
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java41
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java6
4 files changed, 35 insertions, 36 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
index 0f19965224..468c2fd961 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
@@ -1,5 +1,7 @@
package com.mapbox.mapboxsdk.maps;
+import android.arch.lifecycle.LifecycleOwner;
+import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.PointF;
@@ -11,6 +13,7 @@ import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
+import android.support.v4.app.FragmentActivity;
import android.support.v4.util.LongSparseArray;
import android.util.AttributeSet;
import android.view.KeyEvent;
@@ -145,10 +148,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
Context context = getContext();
nativeMapView.addOnMapChangedListener(mapCallback);
- // callback for focal point invalidation
- final FocalPointInvalidator focalPointInvalidator = new FocalPointInvalidator();
- focalPointInvalidator.addListener(createFocalPointChangeListener());
-
// callback for registering touch listeners
GesturesManagerInteractionListener registerTouchListener = new GesturesManagerInteractionListener();
@@ -157,7 +156,11 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
// setup components for MapboxMap creation
Projection proj = new Projection(nativeMapView);
- UiSettings uiSettings = new UiSettings(proj, focalPointInvalidator, compassView, attrView, logoView);
+
+ UiSettings uiSettings = ViewModelProviders.of((FragmentActivity) context).get(UiSettings.class);
+ uiSettings.initialiseViews(proj, compassView, attrView, logoView);
+ uiSettings.getFocalPointObservable().observe((LifecycleOwner) context, point -> this.focalPoint = point);
+
LongSparseArray<Annotation> annotationsArray = new LongSparseArray<>();
MarkerViewManager markerViewManager = new MarkerViewManager((ViewGroup) findViewById(R.id.markerViewContainer));
IconManager iconManager = new IconManager(nativeMapView);
@@ -210,15 +213,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
}
}
- private FocalPointChangeListener createFocalPointChangeListener() {
- return new FocalPointChangeListener() {
- @Override
- public void onFocalPointChanged(PointF pointF) {
- focalPoint = pointF;
- }
- };
- }
-
private MapboxMap.OnCompassAnimationListener createCompassAnimationListener(final CameraChangeDispatcher
cameraChangeDispatcher) {
return new MapboxMap.OnCompassAnimationListener() {
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index aed918cb79..c58f4e871d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -89,7 +89,7 @@ public final class MapboxMap {
void initialise(@NonNull Context context, @NonNull MapboxMapOptions options) {
transform.initialise(this, options);
- uiSettings.initialise(context, options);
+ uiSettings.initialiseOptions(context, options);
// Map configuration
setDebugActive(options.getDebugActive());
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java
index 100787fbf0..830ce80d4c 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java
@@ -1,5 +1,7 @@
package com.mapbox.mapboxsdk.maps;
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
@@ -28,21 +30,19 @@ import com.mapbox.mapboxsdk.utils.ColorUtils;
/**
* Settings for the user interface of a MapboxMap. To obtain this interface, call getUiSettings().
*/
-public final class UiSettings {
+public final class UiSettings extends ViewModel {
- private final FocalPointChangeListener focalPointChangeListener;
- private final Projection projection;
- private final CompassView compassView;
- private final int[] compassMargins = new int[4];
+ private Projection projection; // TODO: 14.05.18 clear projection during maps destroy?
- private final ImageView attributionsView;
+ private CompassView compassView;
+ private ImageView attributionsView;
+ private View logoView;
+ private float pixelRatio;
+ private int[] compassMargins = new int[4];
+ private final int[] logoMargins = new int[4];
private final int[] attributionsMargins = new int[4];
private AttributionDialogManager attributionDialogManager;
- private final View logoView;
- private final int[] logoMargins = new int[4];
-
- private float pixelRatio;
private boolean rotateGesturesEnabled = true;
@@ -65,12 +65,11 @@ public final class UiSettings {
private boolean deselectMarkersOnTap = true;
- private PointF userProvidedFocalPoint;
+ private MutableLiveData<PointF> userProvidedFocalPoint;
- UiSettings(@NonNull Projection projection, @NonNull FocalPointChangeListener listener,
- @NonNull CompassView compassView, @NonNull ImageView attributionsView, @NonNull View logoView) {
+ void initialiseViews(@NonNull Projection projection, @NonNull CompassView compassView,
+ @NonNull ImageView attributionsView, @NonNull View logoView) {
this.projection = projection;
- this.focalPointChangeListener = listener;
this.compassView = compassView;
this.attributionsView = attributionsView;
this.logoView = logoView;
@@ -79,7 +78,7 @@ public final class UiSettings {
}
}
- void initialise(@NonNull Context context, @NonNull MapboxMapOptions options) {
+ void initialiseOptions(@NonNull Context context, @NonNull MapboxMapOptions options) {
Resources resources = context.getResources();
initialiseGestures(options);
initialiseCompass(options, resources);
@@ -967,8 +966,7 @@ public final class UiSettings {
* @param focalPoint the focal point to be used.
*/
public void setFocalPoint(@Nullable PointF focalPoint) {
- this.userProvidedFocalPoint = focalPoint;
- focalPointChangeListener.onFocalPointChanged(focalPoint);
+ userProvidedFocalPoint.postValue(focalPoint);
}
/**
@@ -977,6 +975,15 @@ public final class UiSettings {
* @return The focal point
*/
public PointF getFocalPoint() {
+ return userProvidedFocalPoint.getValue();
+ }
+
+ /**
+ * Returns {@link MutableLiveData} object of the focal point.
+ *
+ * @return observable focal point object
+ */
+ public MutableLiveData<PointF> getFocalPointObservable() {
return userProvidedFocalPoint;
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java
index cfce56e6e9..160b63b945 100644
--- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java
@@ -24,9 +24,6 @@ public class UiSettingsTest {
Projection projection = mock(Projection.class);
@InjectMocks
- FocalPointChangeListener focalPointChangeListener = mock(FocalPointChangeListener.class);
-
- @InjectMocks
CompassView compassView = mock(CompassView.class);
@InjectMocks
@@ -42,7 +39,8 @@ public class UiSettingsTest {
@Before
public void beforeTest() {
- uiSettings = new UiSettings(projection, focalPointChangeListener, compassView, imageView, logoView);
+ uiSettings = new UiSettings();
+ uiSettings.initialiseViews(projection, compassView, imageView, logoView);
}
@Test