From b6d286ae3da9571297a8d83c58d6a9544b13be57 Mon Sep 17 00:00:00 2001 From: Tobias Zwick Date: Sun, 3 Feb 2019 20:00:15 +0100 Subject: [PATCH] Show in the quest form if an element is to be found underground (#1326) --- .../quests/AbstractQuestAnswerFragment.kt | 24 ++++++++++++++----- app/src/main/res/values/strings.xml | 1 + 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/AbstractQuestAnswerFragment.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/AbstractQuestAnswerFragment.kt index 7cccc0ec4ff..9ccd9e86e86 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/AbstractQuestAnswerFragment.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/AbstractQuestAnswerFragment.kt @@ -120,13 +120,10 @@ abstract class AbstractQuestAnswerFragment : AbstractBottomSheetFragment() { titleLabel.text = resources.getHtmlQuestTitle(questType, osmElement) - /* prefer addr:floor etc. over level as level is rather an index than how the floor is - denominated in the building and thus may (sometimes) not coincide with it. E.g. - addr:floor may be "M" while level is "2" */ - val level = osmElement?.tags?.let { it["addr:floor"] ?: it["level:ref"] ?: it["level"] } - if (level != null) { + val levelLabelText = getLevelLabelText() + if (levelLabelText != null) { levelLabel.visibility = View.VISIBLE - levelLabel.text = resources.getString(R.string.on_level, level) + levelLabel.text = levelLabelText } else { levelLabel.visibility = View.GONE } @@ -162,6 +159,21 @@ abstract class AbstractQuestAnswerFragment : AbstractBottomSheetFragment() { } } + private fun getLevelLabelText(): String? { + val tags = osmElement?.tags ?: return null + /* prefer addr:floor etc. over level as level is rather an index than how the floor is + denominated in the building and thus may (sometimes) not coincide with it. E.g. + addr:floor may be "M" while level is "2" */ + val level = tags["addr:floor"] ?: tags["level:ref"] ?: tags["level"] + if (level != null) { + return resources.getString(R.string.on_level, level) + } + val tunnel = tags["tunnel"] + if(tunnel != null && tunnel != "no" || tags["location"] == "underground") { + return resources.getString(R.string.underground) + } + return null + } override fun onStart() { super.onStart() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 86531eb941d..7ae37c4f14d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -639,4 +639,5 @@ Otherwise, you can download another keyboard in the app store. Popular keyboards that does not carry an implicit meaning of where it is located in respect to the ground floor. The context is usually shopping centres, train stations or airport terminals --> on level %s: + underground: