feat(todo): the map keeps its size, the search a screen of its own (ADR 0033, D32)

From the developer's trial of the picker. Below a medium width a sheet
of fixed height sits under the map, whatever is around the pin, and is
pulled up over it for the whole list, as Threema's; a landscape phone or
a wider window has it as a pane beside the map. The search opens its own
screen: name, what it is, where it lies and how far. A compass under the
bar turns the map to north, and my position no longer zooms out.

A pinch only zooms unless the fingers turn first, the pin's shadow lies
on the map's middle, and a look around that failed says so, with Try again. It asks
little: after the map rested, one at a time, nothing for a spot answered
or by zooming, and nothing for 30 seconds after a failure, as komoot's
Photon throttled a person moving the map about.

Fixes the wrong map for the theme: OpenFreeMap's styles name themselves
nothing and the tile cache goes by that name, so a theme got the other's
tiles (seen on an emulator, both ways); each now has its own name.

Whats-New: The location map keeps its size, the list of places pulls up over it, and search opens its own screen with kinds and distances.
Whats-New-De: Die Ortskarte behält ihre Größe, die Ortsliste lässt sich über sie ziehen, und die Suche öffnet sich als eigene Seite mit Art und Entfernung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-06 00:12:01 +01:00
commit a4c1fe298d
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 1663 additions and 241 deletions

View file

@ -287,6 +287,11 @@
"locationSearchFailed": "Die Suche hat nicht geklappt. Versuch es noch einmal.",
"locationNoResults": "Nichts gefunden",
"locationRecent": "Zuletzt verwendet",
"locationNearbyFailed": "Die Umgebung ließ sich nicht abfragen",
"locationTryAgain": "Nochmal versuchen",
"locationPickHint": "Zoome hinein und schiebe die Karte auf den Ort",
"locationNorth": "Nach Norden ausrichten",
"locationKind": "{kind, select, city{Stadt} town{Stadt} village{Dorf} hamlet{Weiler} isolated_dwelling{Einzelsiedlung} locality{Flurname} suburb{Stadtteil} neighbourhood{Viertel} residential{Straße} house{Adresse} supermarket{Supermarkt} convenience{Laden} bakery{Bäckerei} butcher{Metzgerei} chemist{Drogerie} pharmacy{Apotheke} doctors{Arztpraxis} dentist{Zahnarztpraxis} hospital{Krankenhaus} restaurant{Restaurant} cafe{Café} fast_food{Imbiss} bar{Bar} pub{Kneipe} fuel{Tankstelle} bank{Bank} post_office{Post} school{Schule} kindergarten{Kindergarten} library{Bibliothek} station{Bahnhof} bus_stop{Bushaltestelle} hotel{Hotel} park{Park} other{}}",
"locationNearby": "Oder einen Ort in der Nähe wählen",
"locationZoomIn": "Vergrößern",
"locationZoomOut": "Verkleinern",

View file

@ -966,6 +966,31 @@
"@locationNearby": {
"description": "Above the places around the pin in the location picker."
},
"locationNearbyFailed": "Couldn't look up what's around here",
"@locationNearbyFailed": {
"description": "The location picker when asking what is around the pin failed."
},
"locationTryAgain": "Try again",
"@locationTryAgain": {
"description": "Beside the location picker's message that asking what is around the pin failed."
},
"locationPickHint": "Zoom in and move the map to a spot",
"@locationPickHint": {
"description": "The location picker's sheet while the map is too far out for a spot."
},
"locationNorth": "Point north",
"@locationNorth": {
"description": "The location picker's compass, turning the map back to north."
},
"locationKind": "{kind, select, city{City} town{Town} village{Village} hamlet{Hamlet} isolated_dwelling{Isolated dwelling} locality{Locality} suburb{District} neighbourhood{Neighbourhood} residential{Street} house{Address} supermarket{Supermarket} convenience{Shop} bakery{Bakery} butcher{Butcher} chemist{Chemist} pharmacy{Pharmacy} doctors{Doctor} dentist{Dentist} hospital{Hospital} restaurant{Restaurant} cafe{Café} fast_food{Fast food} bar{Bar} pub{Pub} fuel{Petrol station} bank{Bank} post_office{Post office} school{School} kindergarten{Nursery} library{Library} station{Station} bus_stop{Bus stop} hotel{Hotel} park{Park} other{}}",
"@locationKind": {
"description": "What a place found is, from OpenStreetMap's value; empty for any other.",
"placeholders": {
"kind": {
"type": "String"
}
}
},
"locationZoomIn": "Zoom in",
"@locationZoomIn": {
"description": "The location picker's button zooming the map in."

View file

@ -1828,6 +1828,36 @@ abstract class AppLocalizations {
/// **'Or choose a nearby place'**
String get locationNearby;
/// The location picker when asking what is around the pin failed.
///
/// In en, this message translates to:
/// **'Couldn\'t look up what\'s around here'**
String get locationNearbyFailed;
/// Beside the location picker's message that asking what is around the pin failed.
///
/// In en, this message translates to:
/// **'Try again'**
String get locationTryAgain;
/// The location picker's sheet while the map is too far out for a spot.
///
/// In en, this message translates to:
/// **'Zoom in and move the map to a spot'**
String get locationPickHint;
/// The location picker's compass, turning the map back to north.
///
/// In en, this message translates to:
/// **'Point north'**
String get locationNorth;
/// What a place found is, from OpenStreetMap's value; empty for any other.
///
/// In en, this message translates to:
/// **'{kind, select, city{City} town{Town} village{Village} hamlet{Hamlet} isolated_dwelling{Isolated dwelling} locality{Locality} suburb{District} neighbourhood{Neighbourhood} residential{Street} house{Address} supermarket{Supermarket} convenience{Shop} bakery{Bakery} butcher{Butcher} chemist{Chemist} pharmacy{Pharmacy} doctors{Doctor} dentist{Dentist} hospital{Hospital} restaurant{Restaurant} cafe{Café} fast_food{Fast food} bar{Bar} pub{Pub} fuel{Petrol station} bank{Bank} post_office{Post office} school{School} kindergarten{Nursery} library{Library} station{Station} bus_stop{Bus stop} hotel{Hotel} park{Park} other{}}'**
String locationKind(String kind);
/// The location picker's button zooming the map in.
///
/// In en, this message translates to:

View file

@ -1129,6 +1129,64 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get locationNearby => 'Oder einen Ort in der Nähe wählen';
@override
String get locationNearbyFailed => 'Die Umgebung ließ sich nicht abfragen';
@override
String get locationTryAgain => 'Nochmal versuchen';
@override
String get locationPickHint =>
'Zoome hinein und schiebe die Karte auf den Ort';
@override
String get locationNorth => 'Nach Norden ausrichten';
@override
String locationKind(String kind) {
String _temp0 = intl.Intl.selectLogic(
kind,
{
'city': 'Stadt',
'town': 'Stadt',
'village': 'Dorf',
'hamlet': 'Weiler',
'isolated_dwelling': 'Einzelsiedlung',
'locality': 'Flurname',
'suburb': 'Stadtteil',
'neighbourhood': 'Viertel',
'residential': 'Straße',
'house': 'Adresse',
'supermarket': 'Supermarkt',
'convenience': 'Laden',
'bakery': 'Bäckerei',
'butcher': 'Metzgerei',
'chemist': 'Drogerie',
'pharmacy': 'Apotheke',
'doctors': 'Arztpraxis',
'dentist': 'Zahnarztpraxis',
'hospital': 'Krankenhaus',
'restaurant': 'Restaurant',
'cafe': 'Café',
'fast_food': 'Imbiss',
'bar': 'Bar',
'pub': 'Kneipe',
'fuel': 'Tankstelle',
'bank': 'Bank',
'post_office': 'Post',
'school': 'Schule',
'kindergarten': 'Kindergarten',
'library': 'Bibliothek',
'station': 'Bahnhof',
'bus_stop': 'Bushaltestelle',
'hotel': 'Hotel',
'park': 'Park',
'other': '',
},
);
return '$_temp0';
}
@override
String get locationZoomIn => 'Vergrößern';

View file

@ -1128,6 +1128,63 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get locationNearby => 'Or choose a nearby place';
@override
String get locationNearbyFailed => 'Couldn\'t look up what\'s around here';
@override
String get locationTryAgain => 'Try again';
@override
String get locationPickHint => 'Zoom in and move the map to a spot';
@override
String get locationNorth => 'Point north';
@override
String locationKind(String kind) {
String _temp0 = intl.Intl.selectLogic(
kind,
{
'city': 'City',
'town': 'Town',
'village': 'Village',
'hamlet': 'Hamlet',
'isolated_dwelling': 'Isolated dwelling',
'locality': 'Locality',
'suburb': 'District',
'neighbourhood': 'Neighbourhood',
'residential': 'Street',
'house': 'Address',
'supermarket': 'Supermarket',
'convenience': 'Shop',
'bakery': 'Bakery',
'butcher': 'Butcher',
'chemist': 'Chemist',
'pharmacy': 'Pharmacy',
'doctors': 'Doctor',
'dentist': 'Dentist',
'hospital': 'Hospital',
'restaurant': 'Restaurant',
'cafe': 'Café',
'fast_food': 'Fast food',
'bar': 'Bar',
'pub': 'Pub',
'fuel': 'Petrol station',
'bank': 'Bank',
'post_office': 'Post office',
'school': 'School',
'kindergarten': 'Nursery',
'library': 'Library',
'station': 'Station',
'bus_stop': 'Bus stop',
'hotel': 'Hotel',
'park': 'Park',
'other': '',
},
);
return '$_temp0';
}
@override
String get locationZoomIn => 'Zoom in';