GCC fixes for MapProvider iterator

This commit is contained in:
Dan Paulat 2023-04-30 18:38:48 -05:00
parent 98ab8904be
commit 1c1864e45d
3 changed files with 24 additions and 20 deletions

View file

@ -19,7 +19,8 @@ enum class MapProvider
MapTiler, MapTiler,
Unknown Unknown
}; };
typedef util::Iterator<MapProvider, MapProvider::Mapbox, MapProvider::MapTiler> typedef scwx::util::
Iterator<MapProvider, MapProvider::Mapbox, MapProvider::MapTiler>
MapProviderIterator; MapProviderIterator;
struct MapStyle struct MapStyle

View file

@ -41,15 +41,21 @@ public:
mapProvider_.SetValidator( mapProvider_.SetValidator(
[](const std::string& value) [](const std::string& value)
{ {
return std::find_if(map::MapProviderIterator().begin(), for (map::MapProvider mapProvider : map::MapProviderIterator())
map::MapProviderIterator().end(),
[&value](map::MapProvider mapProvider)
{ {
// If the value is equal to a lower case map provider name
std::string mapProviderName = std::string mapProviderName =
map::GetMapProviderName(mapProvider); map::GetMapProviderName(mapProvider);
boost::to_lower(mapProviderName); boost::to_lower(mapProviderName);
return value == mapProviderName; if (value == mapProviderName)
}) != map::MapProviderIterator().end(); {
// Regard as a match, valid
return true;
}
}
// No match found, invalid
return false;
}); });
mapboxApiKey_.SetValidator([](const std::string& value) mapboxApiKey_.SetValidator([](const std::string& value)
{ return !value.empty(); }); { return !value.empty(); });

View file

@ -329,16 +329,13 @@ void SettingsDialogImpl::SetupGeneralTab()
mapProvider_.SetMapFromValueFunction( mapProvider_.SetMapFromValueFunction(
[](const std::string& text) -> std::string [](const std::string& text) -> std::string
{ {
auto it = std::find_if( for (map::MapProvider mapProvider : map::MapProviderIterator())
map::MapProviderIterator().begin(), {
map::MapProviderIterator().end(), if (boost::iequals(text, map::GetMapProviderName(mapProvider)))
[&text](map::MapProvider mapProvider)
{ return boost::iequals(text, GetMapProviderName(mapProvider)); });
if (it != map::MapProviderIterator().end())
{ {
// Return map provider label // Return map provider label
return GetMapProviderName(*it); return GetMapProviderName(mapProvider);
}
} }
// Map provider label not found, return unknown // Map provider label not found, return unknown