diff options
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 |
commit | 52855f4c04358e38b12219426b65373ee86a0e6b (patch) | |
tree | decf8920a5f8c132e7f84d4e0ec211411199dce1 | |
parent | c1d5840e5a892b07f08c43a69308dc533f906ef5 (diff) | |
download | qtlocation-mapboxgl-52855f4c04358e38b12219426b65373ee86a0e6b.tar.gz |
[android] - reworked UiSettings into a ViewModel, removed focal point listener from UiSettings
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 |