diff --git a/app/src/main/assets/brewery/brewerySuggestions.txt b/app/src/main/assets/brewery/brewerySuggestions.txt new file mode 100644 index 0000000000..d9286bab59 --- /dev/null +++ b/app/src/main/assets/brewery/brewerySuggestions.txt @@ -0,0 +1,125 @@ +Aktienbrauerei Kaufbeuren +Alhambra +Allgäuer Brauhaus +Alpirsbacher Klosterbräu +Amstel +Asahi +Astra +Augustiner Bräu München +Ayinger +Badger +Beck's +Beerlao +Bellheimer +Berg +Berliner Kindl +Bernard +Birra Moretti +Bitburger +Bosch +Brauhaus Faust +BrewDog +Budweiser +Calanda Bräu +Carlsberg +Castel +Castle Rock +Chang +Charles Wells +Corona +Dinkelacker-Schwaben Bräu +Eichbaum +Engelbräu +Erdinger +Erzquell +Farny +Feldschlösschen +Finsterwalder +Forst +Fuller's +Fürstenberg +Gambrinus +Ganter +Gold Ochsen +Greene King +Guinness +Gösser +Haacht +Hacker-Pschorr +Harvey's +Hatz +Heineken +Herrnbräu +Hirsch +Hoegaarden +Hoepfner +Hofbräu München +Häffner-Bräu +Härle +Jever +Jupiler +Kaiser +Karlsberg +Kirin +Klosterbrauerei Reutberg +Krombacher +Krušovice +Kulmbacher +König Ludwig +König Pilsner +Köstrizer +Kühbacher +Leffe +Leibinger +Licher +Löwenbräu +Marton's +Meckatzer +Miller +Molson Coors +Ninkasi +Oettinger +Paulaner +Pelforth +Pilsner Urquell +Puntigamer +Radeberger +Radegast +Riegele +Robinsons +Rothaus +Ruppaner +Samuel Smith +San Miguel +Sapporo +Schloss Eggenberg +Schlossbrauerei Haimhausen +Schlösser +Schützengarten +Shepherd Neame +Spalter Bier +Spandauer +Spaten +St Austell Brewery +Starobrno +Staropramen +Stella Artois +Stiegl +Stuttgarter Hofbräu +Suntory +Suwa +Svijany +Tegernseer +Thurn und Taxis +Thwaites +Tucher +Unterbaarer +Ur-Krostitzer +Veltins +Waldhaus +Warsteiner +Weldebräu +Wildbräu +Zwiefalter +Zötler +Сыктывкарпиво diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/AMultiValueQuestForm.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/AMultiValueQuestForm.kt new file mode 100644 index 0000000000..391031593e --- /dev/null +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/AMultiValueQuestForm.kt @@ -0,0 +1,135 @@ +package de.westnordost.streetcomplete.quests + +import android.content.Context +import android.os.Bundle +import android.view.View +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.TextView +import androidx.core.view.doOnLayout +import androidx.core.widget.doAfterTextChanged +import androidx.preference.PreferenceManager +import de.westnordost.streetcomplete.R +import de.westnordost.streetcomplete.databinding.QuestMultiValueBinding +import de.westnordost.streetcomplete.quests.healthcare_speciality.AddHealthcareSpecialityForm +import de.westnordost.streetcomplete.util.LastPickedValuesStore +import de.westnordost.streetcomplete.util.ktx.dpToPx +import de.westnordost.streetcomplete.util.ktx.viewLifecycleScope +import de.westnordost.streetcomplete.util.mostCommonWithin +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +/** form for adding multiple values to a single key */ +abstract class AMultiValueQuestForm : AbstractOsmQuestForm() { + + override val contentLayoutResId = R.layout.quest_multi_value + private val binding by contentViewBinding(QuestMultiValueBinding::bind) + + /** convert the multi-value string answer to type T */ + abstract fun stringToAnswer(answerString: String): T + + /** + * provide suggestions, loaded once and stored in companion object + * shown below all other suggestions + */ + abstract fun getConstantSuggestions(): Collection + + /** + * provide suggestions, loaded every time the form is opened + * shown above all other suggestions + */ + open fun getVariableSuggestions(): Collection = emptyList() + + /** text for the addValueButton */ + abstract val addAnotherValueResId: Int + + open val onlyAllowSuggestions = false + + private val values = mutableSetOf() + + private val value get() = binding.valueInput.text?.toString().orEmpty().trim() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.addValueButton.setText(addAnotherValueResId) + if (suggestions.isEmpty()) { // load suggestions if necessary + getConstantSuggestions().forEach { + if (it.isNotBlank()) + suggestions.add(it.trim().intern()) + } + } + + binding.valueInput.setAdapter( + ArrayAdapter( + requireContext(), + android.R.layout.simple_dropdown_item_1line, + (getVariableSuggestions() + lastPickedAnswers + suggestions).distinct() + ) + ) + binding.valueInput.onItemClickListener = AdapterView.OnItemClickListener { _, t, _, _ -> + val value = (t as? TextView)?.text?.toString() ?: return@OnItemClickListener + if (!values.add(value)) return@OnItemClickListener // we don't want duplicates + onAddedValue(value) + } + + binding.valueInput.doAfterTextChanged { checkIsFormComplete() } + binding.valueInput.doOnLayout { binding.valueInput.dropDownWidth = binding.valueInput.width - requireContext().dpToPx(60).toInt() } + + binding.addValueButton.setOnClickListener { + if (!isFormComplete() || binding.valueInput.text.isBlank()) return@setOnClickListener + values.add(value) + onAddedValue(value) + } + showSuggestions() + } + + override fun onClickOk() { + values.removeAll { it.isBlank() } + if (values.isNotEmpty()) favs.add(values) + if (value.isNotBlank()) favs.add(value) + if (value.isBlank()) + applyAnswer(stringToAnswer(values.joinToString(";"))) + else + applyAnswer(stringToAnswer((values + listOf(value)).joinToString(";"))) + } + + override fun isFormComplete() = (value.isNotBlank() || values.isNotEmpty()) && !value.contains(";") + && !values.contains(value) + && (!onlyAllowSuggestions || values.all { suggestions.contains(it) }) + + override fun onAttach(ctx: Context) { + super.onAttach(ctx) + favs = LastPickedValuesStore( + PreferenceManager.getDefaultSharedPreferences(ctx.applicationContext), + key = javaClass.simpleName, + serialize = { it }, + deserialize = { it }, + ) + } + + private fun onAddedValue(value: String) { + binding.currentValues.text = values.joinToString(";") + binding.valueInput.text.clear() + (binding.valueInput.adapter as ArrayAdapter).remove(value) + showSuggestions() + } + + private lateinit var favs: LastPickedValuesStore + + private val lastPickedAnswers by lazy { + favs.get() + .mostCommonWithin(target = 20, historyCount = 50, first = 1) + .toList() + } + + private fun showSuggestions() { + viewLifecycleScope.launch { + delay(30) // delay, because otherwise it sometimes doesn't work properly + binding.valueInput.showDropDown() + } + } + + companion object { + private val suggestions = mutableListOf() + } +} diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/QuestsModule.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/QuestsModule.kt index e09dad5b81..1ac1865a86 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/QuestsModule.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/QuestsModule.kt @@ -45,6 +45,7 @@ import de.westnordost.streetcomplete.quests.bike_shop.AddSecondHandBicycleAvaila import de.westnordost.streetcomplete.quests.board_type.AddBoardType import de.westnordost.streetcomplete.quests.bollard_type.AddBollardType import de.westnordost.streetcomplete.quests.bridge_structure.AddBridgeStructure +import de.westnordost.streetcomplete.quests.brewery.AddBrewery import de.westnordost.streetcomplete.quests.building_colour.AddBuildingColour import de.westnordost.streetcomplete.quests.building_entrance.AddEntrance import de.westnordost.streetcomplete.quests.building_entrance_reference.AddEntranceReference @@ -581,6 +582,7 @@ fun getQuestTypeList( EE_QUEST_OFFSET + 1 to AddContactPhone(), EE_QUEST_OFFSET + 2 to AddContactWebsite(), EE_QUEST_OFFSET + 4 to AddCuisine(), + EE_QUEST_OFFSET + 32 to AddBrewery(), EE_QUEST_OFFSET + 5 to AddHealthcareSpeciality(), EE_QUEST_OFFSET + 6 to AddServiceBuildingType(), EE_QUEST_OFFSET + 7 to AddServiceBuildingOperator(), diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/AddBrewery.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/AddBrewery.kt new file mode 100644 index 0000000000..b10c3babd2 --- /dev/null +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/AddBrewery.kt @@ -0,0 +1,48 @@ +package de.westnordost.streetcomplete.quests.brewery + +import de.westnordost.streetcomplete.R +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.OsmFilterQuestType +import de.westnordost.streetcomplete.osm.IS_SHOP_OR_DISUSED_SHOP_EXPRESSION +import de.westnordost.streetcomplete.osm.Tags + +class AddBrewery : OsmFilterQuestType() { + + override val elementFilter = """ + nodes, ways with + amenity ~ bar|biergarten|pub|restaurant|nightclub + and drink:beer != no + and ( + brewery ~ yes|no + or !brewery + or brewery older today -6 years + ) + """ + override val changesetComment = "Add brewery" + override val wikiLink = "Key:brewery" + override val icon = R.drawable.ic_quest_brewery + override val isReplaceShopEnabled = true + override val defaultDisabledMessage = R.string.default_disabled_msg_go_inside + + override fun getTitle(tags: Map) = R.string.quest_brewery_title + + override fun getHighlightedElements(element: Element, getMapData: () -> MapDataWithGeometry) = + getMapData().filter(IS_SHOP_OR_DISUSED_SHOP_EXPRESSION) + + override fun createForm() = AddBreweryForm() + + override fun applyAnswerTo(answer: BreweryAnswer, tags: Tags, geometry: ElementGeometry, timestampEdited: Long) { + when (answer) { + is NoBeerAnswer -> { + tags["drink:beer"] = "no" + if (tags["brewery"] != "no") // don't remove brewery=no + tags.remove("brewery") + } + is ManyBeersAnswer -> tags["brewery"] = "various" + is BreweryStringAnswer -> tags["brewery"] = answer.brewery + } + } +} diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/AddBreweryForm.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/AddBreweryForm.kt new file mode 100644 index 0000000000..68471bef88 --- /dev/null +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/AddBreweryForm.kt @@ -0,0 +1,38 @@ +package de.westnordost.streetcomplete.quests.brewery + +import de.westnordost.streetcomplete.R +import de.westnordost.streetcomplete.data.osm.edits.MapDataWithEditsSource +import de.westnordost.streetcomplete.data.osm.mapdata.filter +import de.westnordost.streetcomplete.quests.AMultiValueQuestForm +import de.westnordost.streetcomplete.quests.AnswerItem +import de.westnordost.streetcomplete.util.math.enlargedBy +import org.koin.android.ext.android.inject + +class AddBreweryForm : AMultiValueQuestForm() { + + private val mapDataSource: MapDataWithEditsSource by inject() + + override fun stringToAnswer(answerString: String) = BreweryStringAnswer(answerString) + + override fun getConstantSuggestions() = + requireContext().assets.open("brewery/brewerySuggestions.txt").bufferedReader().readLines() + + override val addAnotherValueResId = R.string.quest_brewery_add_more + + override fun getVariableSuggestions(): Collection { + val data = mapDataSource.getMapDataWithGeometry(geometry.getBounds().enlargedBy(100.0)) + val suggestions = hashSetOf() + data.filter("nodes, ways with brewery").forEach { + it.tags["brewery"]?.let { suggestions.addAll(it.split(";")) } + } + suggestions.remove("yes") + suggestions.remove("various") + suggestions.remove("no") + return suggestions + } + + override val otherAnswers = listOf( + AnswerItem(R.string.quest_brewery_is_not_available) { applyAnswer(NoBeerAnswer) }, + AnswerItem(R.string.quest_brewery_is_various) { applyAnswer(ManyBeersAnswer) } + ) +} diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/BreweryAnswer.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/BreweryAnswer.kt new file mode 100644 index 0000000000..6a750d5cc3 --- /dev/null +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/brewery/BreweryAnswer.kt @@ -0,0 +1,7 @@ +package de.westnordost.streetcomplete.quests.brewery + +sealed interface BreweryAnswer + +data class BreweryStringAnswer(val brewery: String) : BreweryAnswer +object ManyBeersAnswer : BreweryAnswer +object NoBeerAnswer : BreweryAnswer diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/cuisine/AddCuisineForm.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/cuisine/AddCuisineForm.kt index 9ab54d73c7..32ed95fae4 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/cuisine/AddCuisineForm.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/cuisine/AddCuisineForm.kt @@ -1,108 +1,15 @@ package de.westnordost.streetcomplete.quests.cuisine -import android.content.Context -import android.os.Bundle -import android.view.View -import android.widget.AdapterView -import android.widget.ArrayAdapter -import android.widget.TextView -import androidx.core.view.doOnLayout -import androidx.core.widget.doAfterTextChanged -import androidx.preference.PreferenceManager import de.westnordost.streetcomplete.R -import de.westnordost.streetcomplete.databinding.QuestCuisineSuggestionBinding -import de.westnordost.streetcomplete.quests.AbstractOsmQuestForm -import de.westnordost.streetcomplete.util.LastPickedValuesStore -import de.westnordost.streetcomplete.util.ktx.dpToPx -import de.westnordost.streetcomplete.util.ktx.viewLifecycleScope -import de.westnordost.streetcomplete.util.mostCommonWithin -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch +import de.westnordost.streetcomplete.quests.AMultiValueQuestForm -class AddCuisineForm : AbstractOsmQuestForm() { - override val contentLayoutResId = R.layout.quest_cuisine_suggestion - private val binding by contentViewBinding(QuestCuisineSuggestionBinding::bind) +class AddCuisineForm : AMultiValueQuestForm() { - private val cuisines = mutableSetOf() + override fun stringToAnswer(answerString: String) = answerString - private val cuisine get() = binding.cuisineInput.text?.toString().orEmpty().trim() + override fun getConstantSuggestions() = + requireContext().assets.open("cuisine/cuisineSuggestions.txt").bufferedReader().readLines() - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - if (suggestions.isEmpty()) { // load suggestions - requireContext().assets.open("cuisine/cuisineSuggestions.txt").bufferedReader() - .lineSequence().forEach { if (it.isNotBlank()) suggestions.add(it.trim().intern()) } - } - - binding.cuisineInput.setAdapter( - ArrayAdapter( - requireContext(), - android.R.layout.simple_dropdown_item_1line, - (lastPickedAnswers + suggestions).distinct() - ) - ) - binding.cuisineInput.onItemClickListener = AdapterView.OnItemClickListener { _, t, _, _ -> - val cuisine = (t as? TextView)?.text?.toString() ?: return@OnItemClickListener - if (!cuisines.add(cuisine)) return@OnItemClickListener // we don't want duplicates - onAddedCuisine(cuisine) - } - - binding.cuisineInput.doAfterTextChanged { checkIsFormComplete() } - binding.cuisineInput.doOnLayout { binding.cuisineInput.dropDownWidth = binding.cuisineInput.width - requireContext().dpToPx(60).toInt() } - - binding.addCuisineButton.setOnClickListener { - if (!isFormComplete() || binding.cuisineInput.text.isBlank()) return@setOnClickListener - cuisines.add(cuisine) - onAddedCuisine(cuisine) - } - viewLifecycleScope.launch { - delay(20) // delay, because otherwise dropdown is not anchored at the correct view - binding.cuisineInput.showDropDown() - } - } - - override fun onClickOk() { - cuisines.removeAll { it.isBlank() } - if (cuisines.isNotEmpty()) favs.add(cuisines) - if (cuisine.isNotBlank()) favs.add(cuisine) - if (cuisine.isBlank()) - applyAnswer(cuisines.joinToString(";")) - else - applyAnswer((cuisines + listOf(cuisine)).joinToString(";")) - } - - override fun isFormComplete() = (cuisine.isNotBlank() || cuisines.isNotEmpty()) && !cuisine.contains(";") && !cuisines.contains(cuisine) - - override fun onAttach(ctx: Context) { - super.onAttach(ctx) - favs = LastPickedValuesStore( - PreferenceManager.getDefaultSharedPreferences(ctx.applicationContext), - key = javaClass.simpleName, - serialize = { it }, - deserialize = { it }, - ) - } - - private fun onAddedCuisine(cuisine: String) { - binding.currentCuisines.text = cuisines.joinToString(";") - binding.cuisineInput.text.clear() - (binding.cuisineInput.adapter as ArrayAdapter).remove(cuisine) - viewLifecycleScope.launch { - delay(30) // delay, because otherwise dropdown disappears immediately (also the remove apparently is done in background, so it needs some time) - binding.cuisineInput.showDropDown() - } - } - - private lateinit var favs: LastPickedValuesStore - - private val lastPickedAnswers by lazy { - favs.get() - .mostCommonWithin(target = 20, historyCount = 50, first = 1) - .toList() - } - - companion object { - private val suggestions = mutableListOf() - } + override val addAnotherValueResId = R.string.quest_cuisine_add_more } diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/healthcare_speciality/AddHealthcareSpecialityForm.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/healthcare_speciality/AddHealthcareSpecialityForm.kt index d57b9d78a3..b56f66f809 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/healthcare_speciality/AddHealthcareSpecialityForm.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/healthcare_speciality/AddHealthcareSpecialityForm.kt @@ -3,35 +3,27 @@ package de.westnordost.streetcomplete.quests.healthcare_speciality import android.content.Context import android.os.Bundle import android.view.View -import android.widget.ArrayAdapter import android.widget.RadioButton import androidx.core.os.bundleOf -import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.commit import androidx.preference.PreferenceManager import de.westnordost.osmfeatures.Feature import de.westnordost.streetcomplete.R -import de.westnordost.streetcomplete.databinding.QuestCuisineSuggestionBinding import de.westnordost.streetcomplete.databinding.ViewShopTypeBinding +import de.westnordost.streetcomplete.quests.AMultiValueQuestForm import de.westnordost.streetcomplete.quests.AbstractOsmQuestForm import de.westnordost.streetcomplete.quests.AnswerItem import de.westnordost.streetcomplete.quests.TagEditor import de.westnordost.streetcomplete.util.LastPickedValuesStore import de.westnordost.streetcomplete.util.ktx.geometryType import de.westnordost.streetcomplete.util.ktx.hideKeyboard -import de.westnordost.streetcomplete.util.ktx.viewLifecycleScope import de.westnordost.streetcomplete.util.mostCommonWithin import de.westnordost.streetcomplete.view.controller.FeatureViewController import de.westnordost.streetcomplete.view.dialogs.SearchFeaturesDialog -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -class AddHealthcareSpecialityForm : AbstractOsmQuestForm() { +class AddHealthcareSpecialityForm : AMultiValueQuestForm() { - override val contentLayoutResId = R.layout.quest_cuisine_suggestion - private val binding by contentViewBinding(QuestCuisineSuggestionBinding::bind) - - private val specialities = mutableListOf() + override fun stringToAnswer(answerString: String) = answerString // the hacky UI switch breaks when using tag editor... override val otherAnswers get() = if (TagEditor.showingTagEditor) emptyList() else listOf(AnswerItem(R.string.quest_healthcare_speciality_switch_ui) { @@ -48,77 +40,17 @@ class AddHealthcareSpecialityForm : AbstractOsmQuestForm() { } }) - private val speciality get() = binding.cuisineInput.text?.toString().orEmpty().trim() - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - binding.cuisineInput.setAdapter( - ArrayAdapter( - requireContext(), - android.R.layout.simple_dropdown_item_1line, - (lastPickedAnswers + suggestions).distinct(), - ) - ) - - binding.cuisineInput.doAfterTextChanged { checkIsFormComplete() } - - binding.addCuisineButton.setOnClickListener { - if (isFormComplete() && binding.cuisineInput.text.isNotBlank()) { - specialities.add(speciality) - binding.currentCuisines.text = specialities.joinToString(";") - binding.cuisineInput.text.clear() - } - viewLifecycleScope.launch { - delay(20) // delay, because otherwise dropdown disappears immediately - binding.cuisineInput.showDropDown() - } - } - binding.addCuisineButton.setText(R.string.quest_healthcare_speciality_add_more) - } - - override fun onClickOk() { - specialities.removeAll { it.isBlank() } - if (specialities.isNotEmpty()) favs.add(specialities) - if (speciality.isNotBlank()) favs.add(speciality) - if (speciality.isBlank()) - applyAnswer(specialities.joinToString(";")) - else - applyAnswer((specialities + listOf(speciality)).joinToString(";")) - } - - override fun isFormComplete() = (speciality.isNotBlank() || specialities.isNotEmpty()) - && !specialities.contains(speciality) - && (speciality.isEmpty() || suggestions.contains(speciality)) - && specialities.all { suggestions.contains(it) } - - override fun onAttach(ctx: Context) { - super.onAttach(ctx) - favs = LastPickedValuesStore( - PreferenceManager.getDefaultSharedPreferences(ctx.applicationContext), - key = javaClass.simpleName, - serialize = { it }, - deserialize = { it }, - ) - } + override val addAnotherValueResId = R.string.quest_healthcare_speciality_add_more - private lateinit var favs: LastPickedValuesStore - - private val lastPickedAnswers by lazy { - favs.get() - .mostCommonWithin(target = 10, historyCount = 50, first = 1) - .toList() - } - - companion object { - private val suggestions = (healthcareSpecialityFromWiki.split("\n").mapNotNull { + override fun getConstantSuggestions() = + (healthcareSpecialityFromWiki.split("\n").mapNotNull { if (it.isBlank()) null else it.trim() } + healthcareSpecialityValuesFromTaginfo.split("\n").mapNotNull { if (it.isBlank()) null else it.trim() - }).toSet().toTypedArray() - } + }).toSet() + } diff --git a/app/src/main/res/drawable/ic_quest_brewery.xml b/app/src/main/res/drawable/ic_quest_brewery.xml new file mode 100644 index 0000000000..88605c283a --- /dev/null +++ b/app/src/main/res/drawable/ic_quest_brewery.xml @@ -0,0 +1,32 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/quest_cuisine_suggestion.xml b/app/src/main/res/layout/quest_multi_value.xml similarity index 74% rename from app/src/main/res/layout/quest_cuisine_suggestion.xml rename to app/src/main/res/layout/quest_multi_value.xml index ef6f975f1d..d9e08e25f6 100644 --- a/app/src/main/res/layout/quest_cuisine_suggestion.xml +++ b/app/src/main/res/layout/quest_multi_value.xml @@ -6,26 +6,26 @@ android:orientation="vertical"> + tools:text="value1;value2"/>