diff --git a/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/QuestsModule.kt b/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/QuestsModule.kt index 1969795a90..82ef0abe2c 100644 --- a/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/QuestsModule.kt +++ b/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/QuestsModule.kt @@ -119,6 +119,7 @@ import de.westnordost.streetcomplete.quests.motorcycle_parking_capacity.AddMotor import de.westnordost.streetcomplete.quests.motorcycle_parking_cover.AddMotorcycleParkingCover import de.westnordost.streetcomplete.quests.note_discussion.OsmNoteQuestType import de.westnordost.streetcomplete.quests.oneway.AddOneway +import de.westnordost.streetcomplete.quests.oneway.AddOnewayAerialway import de.westnordost.streetcomplete.quests.opening_hours.AddOpeningHours import de.westnordost.streetcomplete.quests.opening_hours_signed.CheckOpeningHoursSigned import de.westnordost.streetcomplete.quests.orchard_produce.AddOrchardProduce @@ -452,6 +453,7 @@ fun questTypeRegistry( // aerial way: usually visible from looking at the aerial way, but not always... 184 to AddAerialwayBicycleAccess(), + 187 to AddOnewayAerialway(), 103 to AddProhibitedForPedestrians(), // need to understand the pedestrian situation diff --git a/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/oneway/AddOnewayAerialway.kt b/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/oneway/AddOnewayAerialway.kt new file mode 100644 index 0000000000..06aa44852f --- /dev/null +++ b/app/src/androidMain/kotlin/de/westnordost/streetcomplete/quests/oneway/AddOnewayAerialway.kt @@ -0,0 +1,53 @@ +package de.westnordost.streetcomplete.quests.oneway + +import de.westnordost.streetcomplete.R +import de.westnordost.streetcomplete.data.elementfilter.toElementFilterExpression +import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry +import de.westnordost.streetcomplete.data.osm.mapdata.Element +import de.westnordost.streetcomplete.data.osm.mapdata.MapDataWithGeometry +import de.westnordost.streetcomplete.data.osm.mapdata.filter +import de.westnordost.streetcomplete.data.osm.osmquests.OsmElementQuestType +import de.westnordost.streetcomplete.data.quest.AndroidQuest +import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement +import de.westnordost.streetcomplete.osm.Tags +import de.westnordost.streetcomplete.quests.oneway.OnewayAnswer.BACKWARD +import de.westnordost.streetcomplete.quests.oneway.OnewayAnswer.FORWARD +import de.westnordost.streetcomplete.quests.oneway.OnewayAnswer.NO_ONEWAY + +class AddOnewayAerialway : OsmElementQuestType, AndroidQuest { + + private val elementFilter by lazy { """ + ways with + aerialway ~ gondola|mixed_lift|chair_lift|t-bar|j-bar|platter + and !oneway + """.toElementFilterExpression() } + + override val changesetComment = "Specify whether aerial ways can be used both ways" + override val wikiLink = "Key:oneway" + override val icon = R.drawable.quest_oneway + override val hasMarkersAtEnds = true + override val achievements = listOf(EditTypeAchievement.PEDESTRIAN) + + override val hint = R.string.quest_arrow_tutorial + + override fun getTitle(tags: Map) = R.string.quest_bothway_title + + override fun getApplicableElements(mapData: MapDataWithGeometry): Iterable = mapData.ways.filter { elementFilter.matches(it) } + + override fun isApplicableTo(element: Element): Boolean? = elementFilter.matches(element) + + override fun createForm() = AddOnewayForm() + + override fun applyAnswerTo(answer: OnewayAnswer, tags: Tags, geometry: ElementGeometry, timestampEdited: Long) { + tags["oneway"] = when (answer) { + FORWARD -> "yes" + BACKWARD -> "-1" + NO_ONEWAY -> "no" + } + } + + override fun getHighlightedElements(element: Element, getMapData: () -> MapDataWithGeometry) = + getMapData().filter(""" + nodes, ways with aerialway + """.toElementFilterExpression()) +} diff --git a/app/src/androidMain/res/values/strings.xml b/app/src/androidMain/res/values/strings.xml index 4d8bf044e0..fd19d9a9a4 100644 --- a/app/src/androidMain/res/values/strings.xml +++ b/app/src/androidMain/res/values/strings.xml @@ -868,6 +868,8 @@ Before uploading your changes, the app checks with a <a href="https://www.wes Fixed (not removable) Not a bollard, but some other barrier + In what direction can you ride this? + What’s the structure of this bridge? What kind of building entrance is this?