Skip to content

Commit

Permalink
Merge pull request #295 from mapzen/276-trapped-in-routing-mode
Browse files Browse the repository at this point in the history
Restore view state based on VSM
  • Loading branch information
tallytalwar committed Feb 1, 2016
2 parents 29be3ee + df52ce2 commit 30c5fae
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ import com.mapzen.erasermap.model.event.LocationChangeEvent
import com.mapzen.erasermap.model.event.RouteCancelEvent
import com.mapzen.erasermap.model.event.RouteEvent
import com.mapzen.erasermap.model.event.RoutePreviewEvent
import com.mapzen.erasermap.presenter.ViewStateManager.ViewState.DEFAULT
import com.mapzen.erasermap.presenter.ViewStateManager.ViewState.ROUTE_DIRECTION_LIST
import com.mapzen.erasermap.presenter.ViewStateManager.ViewState.ROUTE_PREVIEW
import com.mapzen.erasermap.presenter.ViewStateManager.ViewState.ROUTING
import com.mapzen.erasermap.presenter.ViewStateManager.ViewState.SEARCH
import com.mapzen.erasermap.presenter.ViewStateManager.ViewState.SEARCH_RESULTS
import com.mapzen.erasermap.view.MainViewController
import com.mapzen.erasermap.view.RouteViewController
import com.mapzen.pelias.PeliasLocationProvider
Expand Down Expand Up @@ -86,31 +92,51 @@ public open class MainPresenterImpl(val mapzenLocation: MapzenLocation, val bus:
val current = searchResults?.features?.get(0)
if (current is Feature) {
features.add(current)
mainViewController?.overridePlaceFeature(features?.get(0))
mainViewController?.overridePlaceFeature(features.get(0))
}
searchResults?.features = features
mainViewController?.showPlaceSearchFeature(features)
}
}

override fun onRestoreViewState() {
if (destination != null) {
if(routingEnabled) {
resumeRoutingMode()
} else {
generateRoutePreview()
}
} else {
if (searchResults != null) {
mainViewController?.showSearchResults(searchResults?.features)
}
when (vsm.viewState) {
DEFAULT -> onRestoreViewStateDefault()
SEARCH -> onRestoreViewStateSearch()
SEARCH_RESULTS -> onRestoreViewStateSearchResults()
ROUTE_PREVIEW -> onRestoreViewStateRoutePreview()
ROUTING -> onRestoreViewStateRouting()
ROUTE_DIRECTION_LIST -> onRestoreViewStateRouteDirectionList()
}
}

private fun onRestoreViewStateDefault() {
// Do nothing.
}

if (vsm.viewState == ViewStateManager.ViewState.ROUTE_DIRECTION_LIST) {
routeViewController?.showRouteDirectionList()
private fun onRestoreViewStateSearch() {
// Do nothing.
}

private fun onRestoreViewStateSearchResults() {
if (searchResults?.features != null) {
mainViewController?.showSearchResults(searchResults?.features)
}
}

private fun onRestoreViewStateRoutePreview() {
generateRoutePreview()
}

private fun onRestoreViewStateRouting() {
resumeRoutingMode()
}

private fun onRestoreViewStateRouteDirectionList() {
resumeRoutingMode()
routeViewController?.showRouteDirectionList()
}

override fun onExpandSearchView() {
vsm.viewState = ViewStateManager.ViewState.SEARCH
}
Expand Down Expand Up @@ -164,12 +190,12 @@ public open class MainPresenterImpl(val mapzenLocation: MapzenLocation, val bus:

override fun onBackPressed() {
when (vsm.viewState) {
ViewStateManager.ViewState.DEFAULT -> onBackPressedStateDefault()
ViewStateManager.ViewState.SEARCH -> onBackPressedStateSearch()
ViewStateManager.ViewState.SEARCH_RESULTS -> onBackPressedStateSearchResults()
ViewStateManager.ViewState.ROUTE_PREVIEW -> onBackPressedStateRoutePreview()
ViewStateManager.ViewState.ROUTING -> onBackPressedStateRouting()
ViewStateManager.ViewState.ROUTE_DIRECTION_LIST -> onBackPressedStateRouteDirectionList()
DEFAULT -> onBackPressedStateDefault()
SEARCH -> onBackPressedStateSearch()
SEARCH_RESULTS -> onBackPressedStateSearchResults()
ROUTE_PREVIEW -> onBackPressedStateRoutePreview()
ROUTING -> onBackPressedStateRouting()
ROUTE_DIRECTION_LIST -> onBackPressedStateRouteDirectionList()
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.mapzen.erasermap.model

import android.location.Location
import com.mapzen.erasermap.dummy.TestHelper
import com.mapzen.pelias.BoundingBox
import com.mapzen.tangram.MapController
import org.mockito.Mockito

public class TestMapzenLocation : MapzenLocation {
public var connected = false
Expand All @@ -19,7 +19,7 @@ public class TestMapzenLocation : MapzenLocation {
}

override fun getLastLocation(): Location? {
return TestHelper.getTestLocation()
return Mockito.mock(Location::class.java)
}

override fun getLon(): Double {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,23 +50,23 @@ public class MainPresenterTest {
@Test fun onSearchResultsAvailable_shouldShowSearchResults() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onSearchResultsAvailable(result)
assertThat(mainController.searchResults).isEqualTo(features)
}

@Test fun onReverseGeocodeResultsAvailable_shouldShowSearchResults() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onReverseGeocodeResultsAvailable(result)
assertThat(mainController.isReverseGeocodeVisible).isTrue()
}

@Test fun onPlaceSearchResultsAvailable_shouldShowSearchResults() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onPlaceSearchResultsAvailable(result)
assertThat(mainController.isReverseGeocodeVisible).isTrue()
}
Expand All @@ -76,7 +76,7 @@ public class MainPresenterTest {
val features = ArrayList<Feature>()
val feature = Feature()
features.add(feature)
result.setFeatures(features)
result.features = features
presenter.onPlaceSearchResultsAvailable(result)
assertThat(mainController.isReverseGeocodeVisible).isTrue()
}
Expand All @@ -86,15 +86,15 @@ public class MainPresenterTest {
val features = ArrayList<Feature>()
val feature = Feature()
features.add(feature)
result.setFeatures(features)
result.features = features
presenter.onPlaceSearchResultsAvailable(result)
assertThat(mainController.isPlaceResultOverridden).isTrue()
}

@Test fun onRestoreViewState_shouldRestorePreviousSearchResults() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onSearchResultsAvailable(result)

val newController = TestMainController()
Expand All @@ -113,17 +113,27 @@ public class MainPresenterTest {

@Test fun onRestoreViewState_shouldShowRoutingMode() {
presenter.onRoutePreviewEvent(RoutePreviewEvent(getTestFeature()))
presenter.vsm.viewState = ROUTING
val newController = TestMainController()
presenter.mainViewController = newController
presenter.routingEnabled = true
presenter.onRestoreViewState()
assertThat(newController.isRoutingModeVisible).isTrue()
}

@Test fun onRestoreViewState_shouldNotTriggerRoutePreviewIfNotCorrectViewState() {
presenter.onRoutePreviewEvent(RoutePreviewEvent(getTestFeature()))
presenter.onBackPressed()
val newController = TestMainController()
presenter.mainViewController = newController
presenter.onRestoreViewState()
assertThat(newController.isRoutePreviewVisible).isFalse()
}

@Test fun onCollapseSearchView_shouldHideSearchResults() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onSearchResultsAvailable(result)
presenter.onCollapseSearchView()
assertThat(mainController.searchResults).isNull()
Expand Down Expand Up @@ -238,7 +248,7 @@ public class MainPresenterTest {
@Test fun onSearchResultSelected_shouldCenterOnCurrentFeature() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onSearchResultsAvailable(result)
presenter.onSearchResultSelected(0)
assertThat(mainController.isCenteredOnCurrentFeature).isTrue()
Expand All @@ -247,7 +257,7 @@ public class MainPresenterTest {
@Test fun onSearchResultTapped_shouldCenterOnCurrentFeature() {
val result = Result()
val features = ArrayList<Feature>()
result.setFeatures(features)
result.features = features
presenter.onSearchResultsAvailable(result)
presenter.onSearchResultTapped(0)
assertThat(mainController.isCenteredOnTappedFeature).isTrue()
Expand Down

0 comments on commit 30c5fae

Please sign in to comment.