11package com .mapbox .services .android .navigation .ui .v5 ;
22
33import android .app .Activity ;
4- import android .app .Fragment ;
54import android .arch .lifecycle .LifecycleObserver ;
65import android .arch .lifecycle .LifecycleOwner ;
76import android .arch .lifecycle .ViewModelProviders ;
3332import com .mapbox .services .android .navigation .ui .v5 .instruction .NavigationAlertView ;
3433import com .mapbox .services .android .navigation .ui .v5 .map .NavigationMapboxMap ;
3534import com .mapbox .services .android .navigation .ui .v5 .map .NavigationMapboxMapInstanceState ;
35+ import com .mapbox .services .android .navigation .ui .v5 .map .WayNameView ;
3636import com .mapbox .services .android .navigation .ui .v5 .summary .SummaryBottomSheet ;
3737import com .mapbox .services .android .navigation .v5 .location .replay .ReplayRouteLocationEngine ;
3838import com .mapbox .services .android .navigation .v5 .navigation .MapboxNavigation ;
@@ -75,6 +75,7 @@ public class NavigationView extends CoordinatorLayout implements LifecycleObserv
7575 private BottomSheetBehavior summaryBehavior ;
7676 private ImageButton cancelBtn ;
7777 private RecenterButton recenterBtn ;
78+ private WayNameView wayNameView ;
7879 private ImageButton routeOverviewBtn ;
7980
8081 private NavigationPresenter navigationPresenter ;
@@ -141,8 +142,10 @@ public boolean onBackPressed() {
141142 */
142143 public void onSaveInstanceState (Bundle outState ) {
143144 int bottomSheetBehaviorState = summaryBehavior == null ? INVALID_STATE : summaryBehavior .getState ();
144- NavigationViewInstanceState navigationViewInstanceState = new NavigationViewInstanceState (bottomSheetBehaviorState ,
145- recenterBtn .getVisibility (), instructionView .isShowingInstructionList ());
145+ boolean isWayNameVisible = wayNameView .getVisibility () == VISIBLE ;
146+ NavigationViewInstanceState navigationViewInstanceState = new NavigationViewInstanceState (
147+ bottomSheetBehaviorState , recenterBtn .getVisibility (), instructionView .isShowingInstructionList (),
148+ isWayNameVisible , wayNameView .retrieveWayNameText ());
146149 String instanceKey = getContext ().getString (R .string .navigation_view_instance_state );
147150 outState .putParcelable (instanceKey , navigationViewInstanceState );
148151 outState .putBoolean (getContext ().getString (R .string .navigation_running ), navigationViewModel .isRunning ());
@@ -161,6 +164,8 @@ public void onRestoreInstanceState(Bundle savedInstanceState) {
161164 String instanceKey = getContext ().getString (R .string .navigation_view_instance_state );
162165 NavigationViewInstanceState navigationViewInstanceState = savedInstanceState .getParcelable (instanceKey );
163166 recenterBtn .setVisibility (navigationViewInstanceState .getRecenterButtonVisibility ());
167+ wayNameView .setVisibility (navigationViewInstanceState .isWayNameVisible () ? VISIBLE : INVISIBLE );
168+ wayNameView .updateWayNameText (navigationViewInstanceState .getWayNameText ());
164169 resetBottomSheetState (navigationViewInstanceState .getBottomSheetBehaviorState ());
165170 updateInstructionListState (navigationViewInstanceState .isInstructionViewVisible ());
166171 mapInstanceState = savedInstanceState .getParcelable (MAP_INSTANCE_STATE_KEY );
@@ -172,7 +177,8 @@ public void onRestoreInstanceState(Bundle savedInstanceState) {
172177 * <p>
173178 * In an {@link Activity} this should be in {@link Activity#onDestroy()}.
174179 * <p>
175- * In a {@link android.app.Fragment}, this should be in {@link Fragment#onDestroyView()}.
180+ * In a {@link android.support.v4.app.Fragment}, this should
181+ * be in {@link android.support.v4.app.Fragment#onDestroyView()}.
176182 */
177183 public void onDestroy () {
178184 shutdown ();
@@ -212,6 +218,7 @@ public void onStop() {
212218 @ Override
213219 public void onMapReady (MapboxMap mapboxMap ) {
214220 initializeNavigationMap (mapView , mapboxMap );
221+ initializeWayNameListener ();
215222 onNavigationReadyCallback .onNavigationReady (navigationViewModel .isRunning ());
216223 isMapInitialized = true ;
217224 }
@@ -269,17 +276,6 @@ public void drawRoute(DirectionsRoute directionsRoute) {
269276 }
270277 }
271278
272- private void initializeNavigationMap (MapView mapView , MapboxMap map ) {
273- navigationMap = new NavigationMapboxMap (mapView , map );
274- if (mapInstanceState != null ) {
275- navigationMap .restoreFrom (mapInstanceState );
276- return ;
277- }
278- if (initialMapCameraPosition != null ) {
279- map .setCameraPosition (initialMapCameraPosition );
280- }
281- }
282-
283279 @ Override
284280 public void addMarker (Point position ) {
285281 if (navigationMap != null ) {
@@ -293,23 +289,33 @@ public void clearMarkers() {
293289 }
294290 }
295291
292+ /**
293+ * Updates the text of the way name view below the
294+ * navigation icon.
295+ * <p>
296+ * If you'd like to use this method without being overridden by the default way names
297+ * values we provide, please disabled auto-query with
298+ * {@link NavigationMapboxMap#updateWaynameQueryMap(boolean)}.
299+ *
300+ * @param wayname to update the view
301+ */
296302 public void updateWaynameView (String wayname ) {
297- if (navigationMap != null ) {
298- navigationMap .updateWaynameView (wayname );
299- }
303+ wayNameView .updateWayNameText (wayname );
300304 }
301305
306+ /**
307+ * Updates the visibility of the way name view that is show below
308+ * the navigation icon.
309+ * <p>
310+ * If you'd like to use this method without being overridden by the default visibility values
311+ * values we provide, please disabled auto-query with
312+ * {@link NavigationMapboxMap#updateWaynameQueryMap(boolean)}.
313+ *
314+ * @param isVisible true to show, false to hide
315+ */
302316 @ Override
303317 public void updateWaynameVisibility (boolean isVisible ) {
304- if (navigationMap != null ) {
305- navigationMap .updateWaynameVisibility (isVisible );
306- }
307- }
308-
309- public void updateWaynameQueryMap (boolean isEnabled ) {
310- if (navigationMap != null ) {
311- navigationMap .updateWaynameQueryMap (isEnabled );
312- }
318+ wayNameView .updateVisibility (isVisible );
313319 }
314320
315321 @ Override
@@ -499,6 +505,7 @@ private void bind() {
499505 summaryBottomSheet = findViewById (R .id .summaryBottomSheet );
500506 cancelBtn = findViewById (R .id .cancelBtn );
501507 recenterBtn = findViewById (R .id .recenterBtn );
508+ wayNameView = findViewById (R .id .wayNameView );
502509 routeOverviewBtn = findViewById (R .id .routeOverviewBtn );
503510 }
504511
@@ -527,6 +534,22 @@ private void initializeInstructionListListener() {
527534 navigationViewEventDispatcher ));
528535 }
529536
537+ private void initializeNavigationMap (MapView mapView , MapboxMap map ) {
538+ navigationMap = new NavigationMapboxMap (mapView , map );
539+ if (mapInstanceState != null ) {
540+ navigationMap .restoreFrom (mapInstanceState );
541+ return ;
542+ }
543+ if (initialMapCameraPosition != null ) {
544+ map .setCameraPosition (initialMapCameraPosition );
545+ }
546+ }
547+
548+ private void initializeWayNameListener () {
549+ NavigationViewWayNameListener wayNameListener = new NavigationViewWayNameListener (navigationPresenter );
550+ navigationMap .addOnWayNameChangedListener (wayNameListener );
551+ }
552+
530553 private void updateSavedInstanceStateMapStyle (@ Nullable Bundle savedInstanceState ) {
531554 if (savedInstanceState != null ) {
532555 String mapStyleUrl = ThemeSwitcher .retrieveMapStyle (getContext ());
0 commit comments