From 4b690c6d80125109a1313b17a834abb6ba807f0b Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 19:36:13 +0200 Subject: [PATCH 01/16] add OVERRIDE_COUNTRY_RESTRICTIONS preference screen --- app/src/main/java/de/westnordost/streetcomplete/Prefs.kt | 1 + .../screens/settings/QuestSettingsScreen.kt | 8 ++++++++ app/src/main/res/values/strings_ee.xml | 2 ++ 3 files changed, 11 insertions(+) diff --git a/app/src/main/java/de/westnordost/streetcomplete/Prefs.kt b/app/src/main/java/de/westnordost/streetcomplete/Prefs.kt index a765c82a57c..010de63814e 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/Prefs.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/Prefs.kt @@ -70,6 +70,7 @@ object Prefs { const val REALLY_ALL_NOTES = "really_all_notes" const val ROTATE_WHILE_ZOOMING = "rotate_while_zooming" const val ROTATE_ANGLE_THRESHOLD = "rotate_angle_threshold" + const val OVERRIDE_COUNTRY_RESTRICTIONS = "override_country_restrictions" enum class DayNightBehavior(val titleResId: Int) { IGNORE(R.string.day_night_ignore), diff --git a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt index fabe52531ab..af729935c71 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt @@ -111,6 +111,14 @@ fun QuestSettingsScreen( default = false, onCheckedChange = { scope.launch(Dispatchers.IO) { visibleEditTypeController.onVisibilitiesChanged() } } ) + if (prefs.expertMode) + SwitchPreference( + name = stringResource(R.string.pref_override_country_restrictions_title), + description = stringResource(R.string.pref_override_country_restrictions_summary), + pref = Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, + default = false, + onCheckedChange = { scope.launch(Dispatchers.IO) { visibleEditTypeController.onVisibilitiesChanged() } } + ) Preference( name = stringResource(R.string.pref_quest_monitor_title), onClick = { questMonitorDialog(prefs, ctx) }, diff --git a/app/src/main/res/values/strings_ee.xml b/app/src/main/res/values/strings_ee.xml index 9a2b5d243a1..8d3e3a6f8d7 100644 --- a/app/src/main/res/values/strings_ee.xml +++ b/app/src/main/res/values/strings_ee.xml @@ -162,6 +162,8 @@ When enabled, quest settings are only valid for the current quest preset Create quests dynamically Quests are created when loading the viewed area. Somewhat slow, but immediately applies changed quest settings. + Override country restrictions + Allow quests to be asked everywhere, even if originally disabled in some countries. Note that some quests still may not be overridden due to community consensus. For properly applying all changed quest settings, re-scanning for quests is necessary. Notify about nearby quests Monitors location when the app is in background, except if backgrounded using back button From ed024ce85aafd0788e8b2cb952fe302d51631c18 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 19:41:14 +0200 Subject: [PATCH 02/16] allow overriding country restrictions in AddFireHydrantDiameter --- .../quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt index 7ad1f0c79da..2c80a4a4079 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt @@ -9,6 +9,7 @@ import de.westnordost.streetcomplete.data.osm.osmquests.OsmFilterQuestType import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.LIFESAVER import de.westnordost.streetcomplete.osm.Tags +import de.westnordost.streetcomplete.Prefs class AddFireHydrantDiameter : OsmFilterQuestType() { @@ -29,7 +30,7 @@ class AddFireHydrantDiameter : OsmFilterQuestType() { /* NOTE: if any countries that (sometimes) use anything else than millimeters as hydrant diameters are added, the code in the form needs to be adapted */ // source: https://commons.wikimedia.org/wiki/Category:Fire_hydrant_signs_by_country - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( "DE", "BE", "LU", // not "AT", - see https://community.openstreetmap.org/t/streetcomplete-quest-zu-hydrantendurchmesser-in-osterreich/108899 "GB", "IE", From b778a6541d3f33eb4b5707cad25b704f6d30ab58 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 19:47:47 +0200 Subject: [PATCH 03/16] add missing import --- .../quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt index 2c80a4a4079..20b5e4b665f 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt @@ -6,6 +6,7 @@ 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.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.LIFESAVER import de.westnordost.streetcomplete.osm.Tags From 01d1d6985913e0f726597b8ee7f10b537343a561 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 20:07:51 +0200 Subject: [PATCH 04/16] allow country override in AddFireHydrantRef --- .../quests/fire_hydrant_ref/AddFireHydrantRef.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_ref/AddFireHydrantRef.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_ref/AddFireHydrantRef.kt index af91dba2cc8..84538fd1a75 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_ref/AddFireHydrantRef.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_ref/AddFireHydrantRef.kt @@ -3,9 +3,11 @@ package de.westnordost.streetcomplete.quests.fire_hydrant_ref import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry import de.westnordost.streetcomplete.data.osm.osmquests.OsmFilterQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement import de.westnordost.streetcomplete.osm.Tags +import de.westnordost.streetcomplete.Prefs class AddFireHydrantRef : OsmFilterQuestType() { @@ -19,7 +21,7 @@ class AddFireHydrantRef : OsmFilterQuestType() { override val icon = R.drawable.ic_quest_fire_hydrant_ref override val achievements = listOf(EditTypeAchievement.LIFESAVER) override val isDeleteElementEnabled = true - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( "CH", "FR", "LI" ) From d8a659439eb0ac9683febf91eaa30c3ec1ec4219 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 20:17:45 +0200 Subject: [PATCH 05/16] try to apply the setting automatically when changed instead of having to force-reload the app (see https://github.com/Helium314/SCEE/pull/732#issuecomment-2775793197) --- .../streetcomplete/screens/settings/QuestSettingsScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt index af729935c71..e1e490148a5 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt @@ -117,7 +117,7 @@ fun QuestSettingsScreen( description = stringResource(R.string.pref_override_country_restrictions_summary), pref = Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, default = false, - onCheckedChange = { scope.launch(Dispatchers.IO) { visibleEditTypeController.onVisibilitiesChanged() } } + onCheckedChange = { visibleEditTypeController.onVisibilitiesChanged() } ) Preference( name = stringResource(R.string.pref_quest_monitor_title), From fb616e673e6824bb26fcf41609ba05e38acbc5d2 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 20:34:49 +0200 Subject: [PATCH 06/16] try reloadQuestTypes to apply new preference automatically --- .../streetcomplete/screens/settings/QuestSettingsScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt index e1e490148a5..586a9b9dfe3 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt @@ -117,7 +117,7 @@ fun QuestSettingsScreen( description = stringResource(R.string.pref_override_country_restrictions_summary), pref = Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, default = false, - onCheckedChange = { visibleEditTypeController.onVisibilitiesChanged() } + onCheckedChange = { OsmQuestController.reloadQuestTypes() }, ) Preference( name = stringResource(R.string.pref_quest_monitor_title), From ede8c276e17a9c4e6ed7e85ad1b72ada63c9173a Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 20:55:24 +0200 Subject: [PATCH 07/16] try to force overriden quests to show up automatically without manually downloading quests --- .../streetcomplete/screens/settings/QuestSettingsScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt index 586a9b9dfe3..703b974090d 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt @@ -117,7 +117,7 @@ fun QuestSettingsScreen( description = stringResource(R.string.pref_override_country_restrictions_summary), pref = Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, default = false, - onCheckedChange = { OsmQuestController.reloadQuestTypes() }, + onCheckedChange = { OsmQuestController.reloadQuestTypes(); scope.launch(Dispatchers.IO) { visibleEditTypeController.onVisibilitiesChanged() } }, ) Preference( name = stringResource(R.string.pref_quest_monitor_title), From e6150fa3d7b2be690f6867acbda8a45291fcaeb6 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sat, 3 May 2025 21:55:23 +0200 Subject: [PATCH 08/16] Revert "try to force overriden quests to show up automatically without manually downloading quests" This reverts commit ede8c276e17a9c4e6ed7e85ad1b72ada63c9173a. --- .../streetcomplete/screens/settings/QuestSettingsScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt index 703b974090d..586a9b9dfe3 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/screens/settings/QuestSettingsScreen.kt @@ -117,7 +117,7 @@ fun QuestSettingsScreen( description = stringResource(R.string.pref_override_country_restrictions_summary), pref = Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, default = false, - onCheckedChange = { OsmQuestController.reloadQuestTypes(); scope.launch(Dispatchers.IO) { visibleEditTypeController.onVisibilitiesChanged() } }, + onCheckedChange = { OsmQuestController.reloadQuestTypes() }, ) Preference( name = stringResource(R.string.pref_quest_monitor_title), From 57ab3fef585751c3e1305c44f27a4976b6214fc4 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:37:34 +0200 Subject: [PATCH 09/16] allow override AddSummitRegister, AddSummitCross --- .../quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt | 2 +- .../streetcomplete/quests/summit/AddSummitCross.kt | 4 +++- .../streetcomplete/quests/summit/AddSummitRegister.kt | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt index 20b5e4b665f..714d4fe29cf 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/fire_hydrant_diameter/AddFireHydrantDiameter.kt @@ -1,5 +1,6 @@ package de.westnordost.streetcomplete.quests.fire_hydrant_diameter +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry import de.westnordost.streetcomplete.data.osm.mapdata.Element @@ -10,7 +11,6 @@ import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.LIFESAVER import de.westnordost.streetcomplete.osm.Tags -import de.westnordost.streetcomplete.Prefs class AddFireHydrantDiameter : OsmFilterQuestType() { diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitCross.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitCross.kt index 9177cf3435d..7ca09dfc482 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitCross.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitCross.kt @@ -1,11 +1,13 @@ package de.westnordost.streetcomplete.quests.summit +import de.westnordost.streetcomplete.Prefs 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.osmquests.OsmElementQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.OUTDOORS import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.RARE @@ -28,7 +30,7 @@ class AddSummitCross : OsmElementQuestType { override val wikiLink = "Key:summit:cross" override val icon = R.drawable.ic_quest_summit_cross override val achievements = listOf(RARE, OUTDOORS) - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( // Europe "AT", // https://de.wikipedia.org/wiki/Gipfelkreuz "CH", // https://de.wikipedia.org/wiki/Gipfelkreuz diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitRegister.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitRegister.kt index 30229431669..ddf2a3318d0 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitRegister.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/summit/AddSummitRegister.kt @@ -1,11 +1,13 @@ package de.westnordost.streetcomplete.quests.summit +import de.westnordost.streetcomplete.Prefs 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.osmquests.OsmElementQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.OUTDOORS import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.RARE @@ -28,7 +30,7 @@ class AddSummitRegister : OsmElementQuestType { override val wikiLink = "Key:summit:register" override val icon = R.drawable.ic_quest_peak override val achievements = listOf(RARE, OUTDOORS) - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( // regions gathered in // https://github.com/streetcomplete/StreetComplete/issues/561#issuecomment-325623974 From 0f4a4aec44fadeca65876b02037368092ffc2a46 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:40:34 +0200 Subject: [PATCH 10/16] allow country override AddPostboxCollectionTimes --- .../postbox_collection_times/AddPostboxCollectionTimes.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_collection_times/AddPostboxCollectionTimes.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_collection_times/AddPostboxCollectionTimes.kt index e3fa7719de6..55c6bbef10e 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_collection_times/AddPostboxCollectionTimes.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_collection_times/AddPostboxCollectionTimes.kt @@ -1,6 +1,7 @@ package de.westnordost.streetcomplete.quests.postbox_collection_times import de.westnordost.osm_opening_hours.parser.toOpeningHoursOrNull +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.elementfilter.toElementFilterExpression import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry @@ -8,6 +9,7 @@ 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.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.POSTMAN import de.westnordost.streetcomplete.osm.Tags @@ -37,7 +39,7 @@ class AddPostboxCollectionTimes : OsmElementQuestType { // https://www.itinerantspirit.com/home/2016/5/22/post-boxes-from-around-the-world // https://commons.wikimedia.org/wiki/Category:Post_boxes_by_country // http://wanderlustexplorers.com/youve-got-mail-23-international-postal-boxes/ - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( // definitely, seen pictures: "AU", "NZ", "VU", "MY", "SG", "TH", "VN", "LA", "MM", "IN", "BD", "NP", "LK", "BT", "PK", "TW", "HK", "MO", "CN", "KR", "JP", "RU", "BY", "LT", "LV", "FI", "SE", "NO", "DK", "GB", "IE", "IS", "NL", "BE", From 1155a923d478f657a0efcf8daeb8d6bc75ff6148 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:40:55 +0200 Subject: [PATCH 11/16] allow country override AddPostboxRef --- .../streetcomplete/quests/postbox_ref/AddPostboxRef.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_ref/AddPostboxRef.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_ref/AddPostboxRef.kt index a490bd91d14..c0da259a186 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_ref/AddPostboxRef.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/postbox_ref/AddPostboxRef.kt @@ -1,11 +1,13 @@ package de.westnordost.streetcomplete.quests.postbox_ref +import de.westnordost.streetcomplete.Prefs 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.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.POSTMAN import de.westnordost.streetcomplete.osm.Tags @@ -23,7 +25,7 @@ class AddPostboxRef : OsmFilterQuestType() { override val isDeleteElementEnabled = true override val achievements = listOf(POSTMAN) // source: https://commons.wikimedia.org/wiki/Category:Post_boxes_by_country - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( "FR", "GB", "GG", "IM", "JE", "MT", "IE", "SG", "CZ", "SK", "CH", "US" ) From c27368240fdd2e97df1983476697216ec1d87cf7 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:42:52 +0200 Subject: [PATCH 12/16] allow country override for AddBusStopRef --- .../streetcomplete/quests/bus_stop_ref/AddBusStopRef.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/bus_stop_ref/AddBusStopRef.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/bus_stop_ref/AddBusStopRef.kt index a53ba9bb973..c00becc9adf 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/bus_stop_ref/AddBusStopRef.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/bus_stop_ref/AddBusStopRef.kt @@ -1,8 +1,10 @@ package de.westnordost.streetcomplete.quests.bus_stop_ref +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry import de.westnordost.streetcomplete.data.osm.osmquests.OsmFilterQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.PEDESTRIAN import de.westnordost.streetcomplete.osm.Tags @@ -19,7 +21,7 @@ class AddBusStopRef : OsmFilterQuestType() { and access !~ no|private and !ref and noref != yes and ref:signed != no and !~"ref:.*" """ - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( "CA", "IE", "JE", From 51129d75c2290cd34e75a090a8f9c8fb155765db Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:46:33 +0200 Subject: [PATCH 13/16] allow country override for AddTactilePaving* --- .../quests/tactile_paving/AddTactilePavingBusStop.kt | 4 +++- .../quests/tactile_paving/AddTactilePavingCrosswalk.kt | 4 +++- .../quests/tactile_paving/AddTactilePavingKerb.kt | 4 +++- .../quests/tactile_paving/AddTactilePavingSteps.kt | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingBusStop.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingBusStop.kt index dd6e0f91268..0233517d6f3 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingBusStop.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingBusStop.kt @@ -1,8 +1,10 @@ package de.westnordost.streetcomplete.quests.tactile_paving +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry import de.westnordost.streetcomplete.data.osm.osmquests.OsmFilterQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.BLIND import de.westnordost.streetcomplete.osm.Tags import de.westnordost.streetcomplete.osm.updateWithCheckDate @@ -27,7 +29,7 @@ class AddTactilePavingBusStop : OsmFilterQuestType() { override val changesetComment = "Specify whether public transport stops have tactile paving" override val wikiLink = "Key:tactile_paving" override val icon = R.drawable.ic_quest_blind_bus - override val enabledInCountries = COUNTRIES_WHERE_TACTILE_PAVING_IS_COMMON + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else COUNTRIES_WHERE_TACTILE_PAVING_IS_COMMON override val achievements = listOf(BLIND) override val hint = R.string.quest_generic_looks_like_this diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingCrosswalk.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingCrosswalk.kt index fb5b6e943e4..971059b4642 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingCrosswalk.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingCrosswalk.kt @@ -1,11 +1,13 @@ package de.westnordost.streetcomplete.quests.tactile_paving +import de.westnordost.streetcomplete.Prefs 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.osmquests.OsmElementQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.BLIND import de.westnordost.streetcomplete.osm.Tags import de.westnordost.streetcomplete.osm.isCrossing @@ -37,7 +39,7 @@ class AddTactilePavingCrosswalk : OsmElementQuestType { override val changesetComment = "Specify whether kerbs have tactile paving" override val wikiLink = "Key:tactile_paving" override val icon = R.drawable.ic_quest_kerb_tactile_paving - override val enabledInCountries = COUNTRIES_WHERE_TACTILE_PAVING_IS_COMMON + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else COUNTRIES_WHERE_TACTILE_PAVING_IS_COMMON override val achievements = listOf(BLIND) override val hint = R.string.quest_generic_looks_like_this diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingSteps.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingSteps.kt index a1dcd43a5a0..55b832a0065 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingSteps.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/tactile_paving/AddTactilePavingSteps.kt @@ -1,8 +1,10 @@ package de.westnordost.streetcomplete.quests.tactile_paving +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry import de.westnordost.streetcomplete.data.osm.osmquests.OsmFilterQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.BLIND import de.westnordost.streetcomplete.osm.Tags import de.westnordost.streetcomplete.osm.surface.PAVED_SURFACES @@ -27,7 +29,7 @@ class AddTactilePavingSteps : OsmFilterQuestType() { override val changesetComment = "Survey tactile paving on steps" override val wikiLink = "Key:tactile_paving" override val icon = R.drawable.ic_quest_steps_tactile_paving - override val enabledInCountries = COUNTRIES_WHERE_TACTILE_PAVING_IS_COMMON + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else COUNTRIES_WHERE_TACTILE_PAVING_IS_COMMON override val achievements = listOf(BLIND) override val hint = R.string.quest_generic_looks_like_this From 131d55de6d638590f87ec8bee3bed779b5b34ad3 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:49:08 +0200 Subject: [PATCH 14/16] allow country override for AddEntranceReference --- .../building_entrance_reference/AddEntranceReference.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/building_entrance_reference/AddEntranceReference.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/building_entrance_reference/AddEntranceReference.kt index 2762738a6ca..e0d8084b393 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/building_entrance_reference/AddEntranceReference.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/building_entrance_reference/AddEntranceReference.kt @@ -1,5 +1,6 @@ package de.westnordost.streetcomplete.quests.building_entrance_reference +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.elementfilter.toElementFilterExpression import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry @@ -10,6 +11,7 @@ import de.westnordost.streetcomplete.data.osm.mapdata.Node import de.westnordost.streetcomplete.data.osm.mapdata.Relation import de.westnordost.streetcomplete.data.osm.mapdata.Way import de.westnordost.streetcomplete.data.osm.osmquests.OsmElementQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.BLIND import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.CITIZEN @@ -45,7 +47,7 @@ class AddEntranceReference : OsmElementQuestType { override val wikiLink = "Key:ref" override val icon = R.drawable.ic_quest_door_address override val achievements = listOf(CITIZEN, BLIND) - override val enabledInCountries = NoCountriesExcept( + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( "PL", // Poland - own knowledge of Mateusz Konieczny https://github.com/streetcomplete/StreetComplete/issues/3064#issuecomment-879447168 "RU", // Russia - https://github.com/streetcomplete/StreetComplete/issues/3064#issuecomment-880231076 "MK", // North Macedonia https://github.com/streetcomplete/StreetComplete/issues/3064#issuecomment-1158016740 From fd2a1804692132c563b2c50b6c56165dc9ef0abd Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Tue, 6 May 2025 03:49:51 +0200 Subject: [PATCH 15/16] allow country override for AddRailwayPlatformRef --- .../quests/railway_platform_ref/AddRailwayPlatformRef.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/westnordost/streetcomplete/quests/railway_platform_ref/AddRailwayPlatformRef.kt b/app/src/main/java/de/westnordost/streetcomplete/quests/railway_platform_ref/AddRailwayPlatformRef.kt index 379ef5de792..06b39d0c6a2 100644 --- a/app/src/main/java/de/westnordost/streetcomplete/quests/railway_platform_ref/AddRailwayPlatformRef.kt +++ b/app/src/main/java/de/westnordost/streetcomplete/quests/railway_platform_ref/AddRailwayPlatformRef.kt @@ -3,6 +3,7 @@ package de.westnordost.streetcomplete.quests.railway_platform_ref import android.content.Context import androidx.appcompat.app.AlertDialog import androidx.core.content.edit +import de.westnordost.streetcomplete.Prefs import de.westnordost.streetcomplete.R import de.westnordost.streetcomplete.data.elementfilter.toElementFilterExpression import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry @@ -11,6 +12,7 @@ import de.westnordost.streetcomplete.data.osm.geometry.ElementPolylinesGeometry import de.westnordost.streetcomplete.data.osm.mapdata.Element import de.westnordost.streetcomplete.data.osm.mapdata.MapDataWithGeometry import de.westnordost.streetcomplete.data.osm.osmquests.OsmElementQuestType +import de.westnordost.streetcomplete.data.quest.AllCountries import de.westnordost.streetcomplete.data.quest.NoCountriesExcept import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement import de.westnordost.streetcomplete.osm.Tags @@ -78,7 +80,9 @@ class AddRailwayPlatformRef : OsmElementQuestType { override val wikiLink = "Tag:railway=platform" override val icon = R.drawable.ic_quest_railway_platform_ref override val achievements = listOf(EditTypeAchievement.CITIZEN) - override val enabledInCountries = NoCountriesExcept("DE", "FR", "CH", "AT") + override val enabledInCountries = if (prefs.getBoolean(Prefs.OVERRIDE_COUNTRY_RESTRICTIONS, false)) AllCountries else NoCountriesExcept( + "DE", "FR", "CH", "AT" + ) override val defaultDisabledMessage = R.string.quest_disabled_msg_railway_platform_ref override fun getTitle(tags: Map) = R.string.quest_railwayPlatformRef_title From 6ced7c555d38a28280ae7a55c165959ad2644d52 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Sun, 18 May 2025 13:43:35 +0200 Subject: [PATCH 16/16] improve text as suggested --- app/src/main/res/values/strings_ee.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings_ee.xml b/app/src/main/res/values/strings_ee.xml index 8d3e3a6f8d7..93859db1b60 100644 --- a/app/src/main/res/values/strings_ee.xml +++ b/app/src/main/res/values/strings_ee.xml @@ -163,7 +163,7 @@ Create quests dynamically Quests are created when loading the viewed area. Somewhat slow, but immediately applies changed quest settings. Override country restrictions - Allow quests to be asked everywhere, even if originally disabled in some countries. Note that some quests still may not be overridden due to community consensus. + Allow quests to be asked everywhere, even if originally disabled in some countries because they are mostly useless or spammy. Please be considerate when answering those quests. Note that some quests still may not be overridden due to community consensus. For properly applying all changed quest settings, re-scanning for quests is necessary. Notify about nearby quests Monitors location when the app is in background, except if backgrounded using back button