Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[android] - add style image missing binding integration, add synchronous
Browse files Browse the repository at this point in the history
image overloads to style
  • Loading branch information
tobrun committed Apr 12, 2019
1 parent 8c5c4dd commit 8735d3d
Show file tree
Hide file tree
Showing 10 changed files with 303 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ class MapChangeReceiver implements NativeMapView.StateCallback {
private final List<MapView.OnDidFinishLoadingStyleListener> onDidFinishLoadingStyleListenerList
= new CopyOnWriteArrayList<>();
private final List<MapView.OnSourceChangedListener> onSourceChangedListenerList = new CopyOnWriteArrayList<>();
private final List<MapView.OnStyleImageMissingListener> onStyleImageMissingListenerList
= new CopyOnWriteArrayList<>();

@Override
public void onCameraWillChange(boolean animated) {
Expand Down Expand Up @@ -214,6 +216,20 @@ public void onSourceChanged(String sourceId) {
}
}

@Override
public void onStyleImageMissing(String imageId) {
try {
if (!onStyleImageMissingListenerList.isEmpty()) {
for (MapView.OnStyleImageMissingListener listener : onStyleImageMissingListenerList) {
listener.onStyleImageMissing(imageId);
}
}
} catch (Throwable err) {
Logger.e(TAG, "Exception in onStyleImageMissing", err);
throw err;
}
}

void addOnCameraWillChangeListener(MapView.OnCameraWillChangeListener listener) {
onCameraWillChangeListenerList.add(listener);
}
Expand Down Expand Up @@ -318,6 +334,14 @@ void removeOnSourceChangedListener(MapView.OnSourceChangedListener listener) {
onSourceChangedListenerList.remove(listener);
}

void addOnStyleImageMissingListener(MapView.OnStyleImageMissingListener listener) {
onStyleImageMissingListenerList.add(listener);
}

void removeOnStyleImageMissingListener(MapView.OnStyleImageMissingListener listener) {
onStyleImageMissingListenerList.remove(listener);
}

void clear() {
onCameraWillChangeListenerList.clear();
onCameraIsChangingListenerList.clear();
Expand All @@ -332,5 +356,6 @@ void clear() {
onDidBecomeIdleListenerList.clear();
onDidFinishLoadingStyleListenerList.clear();
onSourceChangedListenerList.clear();
onStyleImageMissingListenerList.clear();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@ public Bitmap getViewContent() {
*
* @param listener The callback that's invoked when the camera region will change
*/
public void addOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
public void addOnCameraWillChangeListener(@NonNull OnCameraWillChangeListener listener) {
mapChangeReceiver.addOnCameraWillChangeListener(listener);
}

Expand All @@ -562,7 +562,7 @@ public void addOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
*
* @param listener The callback that's invoked when the camera region will change
*/
public void removeOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
public void removeOnCameraWillChangeListener(@NonNull OnCameraWillChangeListener listener) {
mapChangeReceiver.removeOnCameraWillChangeListener(listener);
}

Expand All @@ -571,7 +571,7 @@ public void removeOnCameraWillChangeListener(OnCameraWillChangeListener listener
*
* @param listener The callback that's invoked when the camera is changing
*/
public void addOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
public void addOnCameraIsChangingListener(@NonNull OnCameraIsChangingListener listener) {
mapChangeReceiver.addOnCameraIsChangingListener(listener);
}

Expand All @@ -580,7 +580,7 @@ public void addOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
*
* @param listener The callback that's invoked when the camera is changing
*/
public void removeOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
public void removeOnCameraIsChangingListener(@NonNull OnCameraIsChangingListener listener) {
mapChangeReceiver.removeOnCameraIsChangingListener(listener);
}

Expand All @@ -589,7 +589,7 @@ public void removeOnCameraIsChangingListener(OnCameraIsChangingListener listener
*
* @param listener The callback that's invoked when the camera region did change
*/
public void addOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
public void addOnCameraDidChangeListener(@NonNull OnCameraDidChangeListener listener) {
mapChangeReceiver.addOnCameraDidChangeListener(listener);
}

Expand All @@ -598,7 +598,7 @@ public void addOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
*
* @param listener The callback that's invoked when the camera region did change
*/
public void removeOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
public void removeOnCameraDidChangeListener(@NonNull OnCameraDidChangeListener listener) {
mapChangeReceiver.removeOnCameraDidChangeListener(listener);
}

Expand All @@ -607,7 +607,7 @@ public void removeOnCameraDidChangeListener(OnCameraDidChangeListener listener)
*
* @param listener The callback that's invoked when the map will start loading
*/
public void addOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) {
public void addOnWillStartLoadingMapListener(@NonNull OnWillStartLoadingMapListener listener) {
mapChangeReceiver.addOnWillStartLoadingMapListener(listener);
}

Expand All @@ -616,7 +616,7 @@ public void addOnWillStartLoadingMapListener(OnWillStartLoadingMapListener liste
*
* @param listener The callback that's invoked when the map will start loading
*/
public void removeOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) {
public void removeOnWillStartLoadingMapListener(@NonNull OnWillStartLoadingMapListener listener) {
mapChangeReceiver.removeOnWillStartLoadingMapListener(listener);
}

Expand All @@ -625,7 +625,7 @@ public void removeOnWillStartLoadingMapListener(OnWillStartLoadingMapListener li
*
* @param listener The callback that's invoked when the map has finished loading
*/
public void addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) {
public void addOnDidFinishLoadingMapListener(@NonNull OnDidFinishLoadingMapListener listener) {
mapChangeReceiver.addOnDidFinishLoadingMapListener(listener);
}

Expand All @@ -634,7 +634,7 @@ public void addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener liste
*
* @param listener The callback that's invoked when the map has finished loading
*/
public void removeOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) {
public void removeOnDidFinishLoadingMapListener(@NonNull OnDidFinishLoadingMapListener listener) {
mapChangeReceiver.removeOnDidFinishLoadingMapListener(listener);
}

Expand All @@ -643,7 +643,7 @@ public void removeOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener li
*
* @param listener The callback that's invoked when the map failed to load
*/
public void addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) {
public void addOnDidFailLoadingMapListener(@NonNull OnDidFailLoadingMapListener listener) {
mapChangeReceiver.addOnDidFailLoadingMapListener(listener);
}

Expand All @@ -652,7 +652,7 @@ public void addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener)
*
* @param listener The callback that's invoked when the map failed to load
*/
public void removeOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) {
public void removeOnDidFailLoadingMapListener(@NonNull OnDidFailLoadingMapListener listener) {
mapChangeReceiver.removeOnDidFailLoadingMapListener(listener);
}

Expand All @@ -661,7 +661,7 @@ public void removeOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listen
*
* @param listener The callback that's invoked when the camera will start rendering a frame
*/
public void addOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) {
public void addOnWillStartRenderingFrameListener(@NonNull OnWillStartRenderingFrameListener listener) {
mapChangeReceiver.addOnWillStartRenderingFrameListener(listener);
}

Expand All @@ -670,7 +670,7 @@ public void addOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListen
*
* @param listener The callback that's invoked when the camera will start rendering a frame
*/
public void removeOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) {
public void removeOnWillStartRenderingFrameListener(@NonNull OnWillStartRenderingFrameListener listener) {
mapChangeReceiver.removeOnWillStartRenderingFrameListener(listener);
}

Expand All @@ -679,7 +679,7 @@ public void removeOnWillStartRenderingFrameListener(OnWillStartRenderingFrameLis
*
* @param listener The callback that's invoked when the map has finished rendering a frame
*/
public void addOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) {
public void addOnDidFinishRenderingFrameListener(@NonNull OnDidFinishRenderingFrameListener listener) {
mapChangeReceiver.addOnDidFinishRenderingFrameListener(listener);
}

Expand All @@ -688,7 +688,7 @@ public void addOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListen
*
* @param listener The callback that's invoked when the map has finished rendering a frame
*/
public void removeOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) {
public void removeOnDidFinishRenderingFrameListener(@NonNull OnDidFinishRenderingFrameListener listener) {
mapChangeReceiver.removeOnDidFinishRenderingFrameListener(listener);
}

Expand All @@ -697,7 +697,7 @@ public void removeOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameLis
*
* @param listener The callback that's invoked when the map will start rendering
*/
public void addOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) {
public void addOnWillStartRenderingMapListener(@NonNull OnWillStartRenderingMapListener listener) {
mapChangeReceiver.addOnWillStartRenderingMapListener(listener);
}

Expand All @@ -706,7 +706,7 @@ public void addOnWillStartRenderingMapListener(OnWillStartRenderingMapListener l
*
* @param listener The callback that's invoked when the map will start rendering
*/
public void removeOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) {
public void removeOnWillStartRenderingMapListener(@NonNull OnWillStartRenderingMapListener listener) {
mapChangeReceiver.removeOnWillStartRenderingMapListener(listener);
}

Expand All @@ -715,7 +715,7 @@ public void removeOnWillStartRenderingMapListener(OnWillStartRenderingMapListene
*
* @param listener The callback that's invoked when the map has finished rendering
*/
public void addOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) {
public void addOnDidFinishRenderingMapListener(@NonNull OnDidFinishRenderingMapListener listener) {
mapChangeReceiver.addOnDidFinishRenderingMapListener(listener);
}

Expand All @@ -733,7 +733,7 @@ public void removeOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListene
*
* @param listener The callback that's invoked when the map has entered the idle state.
*/
public void addOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) {
public void addOnDidBecomeIdleListener(@NonNull OnDidBecomeIdleListener listener) {
mapChangeReceiver.addOnDidBecomeIdleListener(listener);
}

Expand All @@ -742,7 +742,7 @@ public void addOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) {
*
* @param listener The callback that's invoked when the map has entered the idle state.
*/
public void removeOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) {
public void removeOnDidBecomeIdleListener(@NonNull OnDidBecomeIdleListener listener) {
mapChangeReceiver.removeOnDidBecomeIdleListener(listener);
}

Expand All @@ -753,7 +753,7 @@ public void removeOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) {
*
* @param listener The callback that's invoked when the style has finished loading
*/
public void addOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) {
public void addOnDidFinishLoadingStyleListener(@NonNull OnDidFinishLoadingStyleListener listener) {
mapChangeReceiver.addOnDidFinishLoadingStyleListener(listener);
}

Expand All @@ -762,7 +762,7 @@ public void addOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener l
*
* @param listener The callback that's invoked when the style has finished loading
*/
public void removeOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) {
public void removeOnDidFinishLoadingStyleListener(@NonNull OnDidFinishLoadingStyleListener listener) {
mapChangeReceiver.removeOnDidFinishLoadingStyleListener(listener);
}

Expand All @@ -771,7 +771,7 @@ public void removeOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListene
*
* @param listener The callback that's invoked when the source has changed
*/
public void addOnSourceChangedListener(OnSourceChangedListener listener) {
public void addOnSourceChangedListener(@NonNull OnSourceChangedListener listener) {
mapChangeReceiver.addOnSourceChangedListener(listener);
}

Expand All @@ -780,10 +780,28 @@ public void addOnSourceChangedListener(OnSourceChangedListener listener) {
*
* @param listener The callback that's invoked when the source has changed
*/
public void removeOnSourceChangedListener(OnSourceChangedListener listener) {
public void removeOnSourceChangedListener(@NonNull OnSourceChangedListener listener) {
mapChangeReceiver.removeOnSourceChangedListener(listener);
}

/**
* Set a callback that's invoked when the id of an icon is missing.
*
* @param listener The callback that's invoked when the id of an icon is missing
*/
public void addOnStyleImageMissingListener(@NonNull OnStyleImageMissingListener listener) {
mapChangeReceiver.addOnStyleImageMissingListener(listener);
}

/**
* Set a callback that's invoked when a map source has changed.
*
* @param listener The callback that's invoked when the source has changed
*/
public void removeOnStyleImageMissingListener(@NonNull OnStyleImageMissingListener listener) {
mapChangeReceiver.removeOnStyleImageMissingListener(listener);
}

/**
* Interface definition for a callback to be invoked when the camera will change.
* <p>
Expand Down Expand Up @@ -962,6 +980,21 @@ public interface OnSourceChangedListener {
void onSourceChangedListener(String id);
}

/**
* Interface definition for a callback to be invoked with the id of a missing icon.
* <p>
* {@link MapView#addOnStyleImageMissingListener(OnStyleImageMissingListener)}
* </p>
*/
public interface OnStyleImageMissingListener {
/**
* Called when the map is missing an icon.
*
* @param id the id of the icon that is missing
*/
void onStyleImageMissing(@NonNull String id);
}

/**
* Sets a callback object which will be triggered when the {@link MapboxMap} instance is ready to be used.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1022,7 +1022,9 @@ private void onDidFinishRenderingMap(boolean fully) {

@Keep
private void onDidBecomeIdle() {
stateCallback.onDidBecomeIdle();
if (stateCallback != null) {
stateCallback.onDidBecomeIdle();
}
}

@Keep
Expand All @@ -1039,6 +1041,14 @@ private void onSourceChanged(String sourceId) {
}
}

@Keep
private void onStyleImageMissing(String imageId) {
Logger.e(TAG, "OnStyleImageMissing: " + imageId);
if (stateCallback != null) {
stateCallback.onStyleImageMissing(imageId);
}
}

@Keep
protected void onSnapshotReady(@Nullable Bitmap mapContent) {
if (checkState("OnSnapshotReady")) {
Expand Down Expand Up @@ -1455,5 +1465,7 @@ interface StateCallback extends StyleCallback {
void onDidBecomeIdle();

void onSourceChanged(String sourceId);

void onStyleImageMissing(String imageId);
}
}
Loading

0 comments on commit 8735d3d

Please sign in to comment.