Compare commits

..

18 Commits

Author SHA1 Message Date
patepelo
0036bfb4f2 Add collapsable instrictions
Signed-off-by: patepelo <developer.anton@gmail.com>
2026-01-08 21:38:18 -04:00
Henry Sternberg
3f9dfd6605 [routing] fix/parking-aisle for pedestrian/cycle routing
Signed-off-by: Henry Sternberg <henry@bluelightmaps.com>
Co-authored-by: Henry Sternberg <henry@bluelightmaps.com>
Co-committed-by: Henry Sternberg <henry@bluelightmaps.com>
2026-01-08 21:41:50 +01:00
Jean-Baptiste
fdf698281a [android] Fix tracks description not showed on the place page
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2026-01-08 18:40:19 +01:00
x7z4w
fd57e71ac4 fix
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2026-01-08 18:24:08 +01:00
thesupertechie
d86049f6d8 [ui][ux] change bookmarks and tracks to favourites
Signed-off-by: thesupertechie <thesupertechie1@gmail.com>
2026-01-08 18:24:08 +01:00
vikiawv
32bba5bc5e Added T-Road to italy
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
3068a468a3 Fixed italy again
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
267378aa23 Fixed two cases for italy
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
Yannik Bloscheck
0a525b7483 Stop interference with county roads in Bavaria
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2026-01-08 18:21:08 +01:00
vikiawv
ea4b39ea47 Readding part that hides roadshield letter for some classification types
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
67f27482b8 Found mistake in Germany/Austria implementation
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
b231f2de6e manually corrected formatting of germany and austria part
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
2609dd5588 Update libs/indexer/road_shields_parser.cpp
Corrected albania
2026-01-08 18:21:08 +01:00
vikiawv
08a87c1962 Reverted Austria and Germany to Simpleroadshieldparser and corrected minor things
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
Chris H. Meyer
09b07c2631 [styles] Add railway=turntable
Signed-off-by: Chris H. Meyer <christian.h.meyer@t-online.de>
2026-01-08 18:20:39 +01:00
matheusgomesms
42f5590210 [iOS] Fix display of long addresses in Place Page
Signed-off-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
2026-01-08 18:19:40 +01:00
matheusgomesms
f7d2e43f09 [iOS] Remove decimals in current speed
Signed-off-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
2026-01-08 18:19:30 +01:00
Chris H. Meyer
7617f85442 [editor] enable tactile maps
Signed-off-by: Chris H. Meyer <christian.h.meyer@t-online.de>
2026-01-08 18:18:48 +01:00
24 changed files with 173 additions and 104 deletions

View File

@@ -1 +1 @@
version: 2026.01.08-11-FDroid+26010811
version: 2025.03.02-7-FDroid+25030207

View File

@@ -428,8 +428,9 @@ public class PlacePageView extends Fragment
private void updateBookmarkView()
{
boolean enabled = mMapObject.isBookmark() || mMapObject.isTrack();
updateViewFragment(PlacePageBookmarkFragment.class, BOOKMARK_FRAGMENT_TAG, R.id.place_page_bookmark_fragment,
mMapObject.isBookmark());
enabled);
}
private void updateTrackView()

View File

@@ -23,6 +23,7 @@ import app.organicmaps.R;
import app.organicmaps.sdk.bookmarks.data.Bookmark;
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
import app.organicmaps.sdk.bookmarks.data.MapObject;
import app.organicmaps.sdk.bookmarks.data.Track;
import app.organicmaps.sdk.util.StringUtils;
import app.organicmaps.util.UiUtils;
import app.organicmaps.util.Utils;
@@ -41,6 +42,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
private PlacePageViewModel mViewModel;
private Bookmark currentBookmark;
private Track currentTrack;
@Nullable
@Override
@@ -88,7 +90,15 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
private void updateBookmarkDetails()
{
final String notes = currentBookmark.getBookmarkDescription();
String notes = null;
if (currentBookmark != null)
{
notes = currentBookmark.getBookmarkDescription();
}
if (currentTrack != null)
{
notes = currentTrack.getTrackDescription();
}
if (TextUtils.isEmpty(notes))
{
UiUtils.hide(mTvBookmarkNote);
@@ -120,8 +130,16 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
public void onClick(View v)
{
final FragmentActivity activity = requireActivity();
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), currentBookmark.getBookmarkId(), activity,
getChildFragmentManager(), PlacePageBookmarkFragment.this);
if (currentBookmark != null)
{
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), currentBookmark.getBookmarkId(), activity,
getChildFragmentManager(), PlacePageBookmarkFragment.this);
}
else if (currentTrack != null)
{
EditBookmarkFragment.editBookmark(currentTrack.getCategoryId(), currentTrack.getTrackId(), activity,
getChildFragmentManager(), PlacePageBookmarkFragment.this);
}
}
@Override
@@ -152,6 +170,11 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
currentBookmark = (Bookmark) mapObject;
updateBookmarkDetails();
}
if (mapObject != null && mapObject.isTrack())
{
currentTrack = (Track) mapObject;
updateBookmarkDetails();
}
}
@Override

View File

@@ -19,8 +19,8 @@
<string name="editor_zip_code">Postcode</string>
<string name="error_enter_correct_zip_code">Enter a valid postcode</string>
<plurals name="bookmarks_places">
<item quantity="one">%d bookmark</item>
<item quantity="other">%d bookmarks</item>
<item quantity="one">%d place</item>
<item quantity="other">%d places</item>
</plurals>
<plurals name="bookmarks_detect_message">
<item quantity="one">%d file was found. You can see it after conversion.</item>

View File

@@ -73,11 +73,11 @@
<!-- "Add new bookmark list" dialog title -->
<string name="add_new_set">Add a New List</string>
<!-- Add Bookmark list dialog - hint when the list name is empty -->
<string name="bookmark_set_name">Bookmark List Name</string>
<string name="bookmark_set_name">List Name</string>
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
<string name="bookmarks">Bookmarks</string>
<string name="bookmarks">Places</string>
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
<string name="bookmarks_and_tracks">Bookmarks and Tracks</string>
<string name="bookmarks_and_tracks">Favorites</string>
<!-- Add bookmark dialog - bookmark name -->
<string name="name">Name</string>
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
@@ -156,18 +156,18 @@
<!-- Notes field in Bookmarks view -->
<string name="description">Notes</string>
<!-- Email Subject when sharing bookmark list -->
<string name="share_bookmarks_email_subject">CoMaps bookmarks were shared with you</string>
<string name="share_bookmarks_email_subject">My CoMaps Favorites</string>
<string name="share_bookmarks_email_body">Hello!
\n
\nAttached are my bookmarks; please open them in CoMaps. If you don\'t have it installed you can download it here: https://www.comaps.app/download/
\nAttached are my favorites; please open them in CoMaps. If you don\'t have it installed you can download it here: https://www.comaps.app/download/
\n
\nEnjoy travelling with CoMaps!</string>
<!-- message title of loading file -->
<string name="load_kmz_title">Loading Bookmarks</string>
<string name="load_kmz_title">Loading Favorites</string>
<!-- Kmz file successful loading -->
<string name="load_kmz_successful">Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.</string>
<string name="load_kmz_successful">Favorites loaded successfully! You can find them on the map or on the Favorites Manager screen.</string>
<!-- Kml file loading failed -->
<string name="load_kmz_failed">Failed to load bookmarks. The file may be corrupted or defective.</string>
<string name="load_kmz_failed">Failed to load favorites. The file may be corrupted or defective.</string>
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
<string name="unknown_file_type">The file type is not recognized by the app:
\n%1$s</string>
@@ -541,7 +541,7 @@
<string name="minute">min</string>
<string name="day">d</string>
<string name="placepage_more_button">More</string>
<string name="placepage_edit_bookmark_button">Edit Bookmark</string>
<string name="placepage_edit_bookmark_button">Edit Saved Place</string>
<string name="placepage_personal_notes_hint">Personal notes (text or html)</string>
<string name="editor_reset_edits_message">Discard all local changes?</string>
<string name="editor_reset_edits_button">Discard changes</string>
@@ -635,17 +635,17 @@
<string name="dialog_error_storage_message">External storage is not accessible. The SD card may have been removed, damaged, or the file system is read-only. Please, check your SD card or contact us at support@comaps.app</string>
<string name="setting_emulate_bad_storage">Emulate bad storage</string>
<string name="error_enter_correct_name">Please enter a correct name</string>
<string name="bookmark_lists">Lists</string>
<string name="bookmark_lists">Favorite Lists</string>
<!-- Do not display all bookmark lists on the map -->
<string name="bookmark_lists_hide_all">Hide all</string>
<string name="bookmark_lists_show_all">Show all</string>
<plurals name="bookmarks_places">
<item quantity="one">%d bookmark</item>
<item quantity="other">%d bookmarks</item>
<item quantity="one">%d saved place</item>
<item quantity="other">%d saved places</item>
</plurals>
<string name="bookmarks_create_new_group">Create a new list</string>
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
<string name="bookmarks_import">Import Bookmarks and Tracks</string>
<string name="bookmarks_import">Import Favorites</string>
<string name="bookmarks_error_message_share_general">Unable to share due to an application error</string>
<string name="bookmarks_error_title_share_empty">Sharing error</string>
<string name="bookmarks_error_message_share_empty">Cannot share an empty list</string>
@@ -675,7 +675,7 @@
<string name="subway">Subway</string>
<string name="layers_title">Map Styles and Layers</string>
<string name="bookmarks_empty_list_title">This list is empty</string>
<string name="bookmarks_empty_list_message">To add a bookmark, tap a place on the map and then tap the star icon</string>
<string name="bookmarks_empty_list_message">To save a place, tap a place on the map and then tap the star icon</string>
<string name="category_desc_more">…more</string>
<string name="export_file">Export KMZ</string>
<string name="export_file_gpx">Export GPX</string>
@@ -730,7 +730,7 @@
<!-- max. 10 symbols, both iOS and Android -->
<string name="sort">Sort…</string>
<!-- Android, title, max 20-22 symbols -->
<string name="sort_bookmarks">Sort bookmarks</string>
<string name="sort_bookmarks">Sort favorites</string>
<!-- Android -->
<string name="by_default">By default</string>
<!-- Android -->
@@ -811,7 +811,7 @@
<string name="translated_om_site_url">https://comaps.app/</string>
<!-- Link to OSM wiki for Editor, Profile and About pages -->
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
<!-- A number of bookmarks and a number of tracks, separated by comma, like: 1 bookmark, 5 tracks -->
<!-- A number of bookmarks and a number of tracks, separated by comma, like: 1 saved place, 5 tracks -->
<string name="comma_separated_pair">%1$s, %2$s</string>
<!-- App Tip #00 -->
<string name="app_tip_00">Thank you for using our community-built maps!</string>
@@ -857,7 +857,7 @@
<string name="browser_not_available">Web browser is not available</string>
<string name="volume">Volume</string>
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
<string name="bookmarks_export">Export all Bookmarks and Tracks</string>
<string name="bookmarks_export">Export all Places and Tracks</string>
<!-- button in (app) TTS settings, to open the system TTS settings. -->
<string name="pref_tts_open_system_settings">Speech synthesis system settings</string>
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
@@ -889,7 +889,7 @@
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
<string name="continue_recording">Continue Recording</string>
<!-- Title for the alert when saving a track recording. -->
<string name="track_recording_alert_title">Save into Bookmarks and Tracks?</string>
<string name="track_recording_alert_title">Save into Favorites?</string>
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
<string name="track_recording_toast_nothing_to_save">Track is empty - nothing to save</string>
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
@@ -903,13 +903,13 @@
<string name="pref_left_button_disable">Disable</string>
<!-- Settings "Backup" category: "Backup" title -->
<string name="pref_backup_title">Bookmarks and tracks backup</string>
<string name="pref_backup_title">Backup favorites</string>
<string name="pref_backup_summary">Automatically backup to a folder on your device</string>
<string name="pref_backup_now_title">Backup now</string>
<string name="pref_backup_now_summary">Create a backup immediately</string>
<string name="pref_backup_now_summary_progress">Backup in progress…</string>
<string name="pref_backup_now_summary_ok">Backup completed successfully</string>
<string name="pref_backup_now_summary_empty_lists">No bookmarks and tracks to backup</string>
<string name="pref_backup_now_summary_empty_lists">No places and tracks to backup</string>
<string name="pref_backup_now_summary_failed">Backup failed</string>
<string name="pref_backup_now_summary_folder_unavailable">The backup folder is not available</string>
<string name="pref_backup_status_summary_success">Last successful backup</string>
@@ -933,7 +933,7 @@
<string name="pedestrian">Pedestrian</string>
<string name="bicycle">Bicycle</string>
<string name="ruler">Ruler</string>
<string name="bookmark_color">Bookmark color</string>
<string name="bookmark_color">Color for Favorite</string>
<string name="about_help">About &amp; Help</string>
<string name="open_now">Open now</string>
<string name="closed_now">Closed now</string>

View File

@@ -961,6 +961,7 @@
<string name="type.railway.rail.highspeed">High-Speed Railway</string>
<string name="type.railway.rail.tourism">Touristic Railway</string>
<string name="type.railway.rail.main">Railway</string>
<string name="type.railway.turntable">Railway Turntable</string>
<!-- Includes ordinary railway=rail w/o more specific usage= and service= tags. -->
<string name="type.railway.rail.branch">Railway Branch</string>
<!-- Non-passenger utility tracks: industrial, military, test. -->

View File

@@ -1167,6 +1167,9 @@
<type id="tourism-information-map">
<include field="name" />
</type>
<type id="tourism-information-tactile_map">
<include field="name" />
</type>
<type id="tourism-information-guidepost">
</type>
<!-- Too generic to add -->

View File

@@ -351,7 +351,7 @@ sport|basketball;242;
amenity|cinema;243;
amenity|theatre;244;
sport|chess;245;
deprecated:railway|spur:06.2023;246;x
railway|turntable;246;
aerialway|station;247;
landuse|brownfield;248;
aeroway|apron;249;
Can't render this file because it contains an unexpected character in line 7 and column 16.

View File

@@ -1198,6 +1198,7 @@ line|z15-[railway=preserved],
line|z16-[railway=miniature],
line|z16-[railway=disused],
line|z16-[railway=abandoned],
line|z17-[railway=turntable],
{color: @railway; opacity: 0.7;}
line|z13-[railway=light_rail][!tunnel],
@@ -1381,6 +1382,9 @@ line|z15-[railway=construction],
line|z16-[railway=disused],
{width: 1;dashes: 1.8,5.4;}
line|z17-[railway=turntable],
{width: 1.6;}
/* 9.2 Rail tunnel 14-22 ZOOM */
line|z12[railway=rail][tunnel?],

View File

@@ -305,6 +305,7 @@ railway-miniature-tunnel # line z16-
railway-preserved # line z15-
railway-preserved-bridge # line z15- (also has line::bridgeblack z16-, line::bridgewhite z15-)
railway-preserved-tunnel # line z15-
railway-turntable # line z17-
=== 160
highway-footway-bridge # line z15- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)

View File

@@ -307,6 +307,7 @@ railway-miniature-tunnel # line z13-
railway-preserved # line z13-
railway-preserved-bridge # line z13- (also has line::bridgeblack z16-, line::bridgewhite z15-)
railway-preserved-tunnel # line z13-
railway-turntable # line z17-
=== 160
highway-footway-bridge # line z11- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z13-)

View File

@@ -722,6 +722,7 @@ line|z16-[railway=disused],
line|z16-[railway=preserved],
line|z16-[railway=miniature],
line|z16-[railway=abandoned],
line|z17-[railway=turntable],
{color: @railway; opacity: 0.6;}
line|z13-[railway=light_rail][!tunnel],
@@ -921,6 +922,9 @@ line|z16-[railway=construction],
line|z16-[railway=disused]
{width: 1;dashes: 1.8,5.4;}
line|z17-[railway=turntable],
{width: 1.6;}
/* 9.2 Rail tunnel 14-22 ZOOM */
line|z14-[railway=rail][tunnel?],

View File

@@ -282,6 +282,7 @@ railway-miniature-tunnel # line z16-
railway-preserved # line z16-
railway-preserved-bridge # line z16- (also has line::bridgeblack z16-, line::bridgewhite z16-)
railway-preserved-tunnel # line z16-
railway-turntable # line z17-
=== 120
highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, line(casing) z14-, pathtext z10-, shield::shield z10-)

View File

@@ -21,7 +21,9 @@ Clone the repository including all submodules (see [Special cases options](#spec
Follow the instructions for your OS, and afterwards the repository is prepared to build a CoMaps app!
### Linux
## Setting up to your OS of development
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">Linux</span></summary>
Clone the repository
```bash
git clone --recurse-submodules --shallow-submodules https://codeberg.org/comaps/comaps.git
@@ -41,7 +43,10 @@ cd comaps
If you plan to publish the app privately in stores check [special options](#special-cases-options).
### Windows
</details>
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">Windows</span></summary>
You need to have [Git for Windows](https://git-scm.com/download/win) installed and Git bash available in the PATH.
It's necessary to enable symlink support:
@@ -69,7 +74,11 @@ For _Windows 10_: You should be able to build the project by following either o
**Setup 2: Using Visual Studio Developer Command Prompt**
Install the [Visual Studio Developer Command Prompt](https://docs.microsoft.com/en-us/visualstudio/ide/reference/command-prompt-powershell?view=vs-2022) (make sure to choose the latest MSVC x64/x86 build tool and Windows 10/11 SDK as individual components while installing Visual Studio).
### macOS
</details>
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">macOS</span></summary>
Install required build dependencies and Xcode
1. Install Xcode Command Line Tools
2. Install [Xcode](https://apps.apple.com/app/xcode/id497799835?mt=12) from the App Store
@@ -93,8 +102,10 @@ git clone --recurse-submodules --shallow-submodules https://codeberg.org/comaps/
cd comaps
./configure.sh
```
</details>
### Special cases options
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">Special cases options</span></summary>
If you're only doing a one-off build or your internet bandwidth or disk space is limited, add following options to the `git clone` command:
@@ -114,7 +125,11 @@ It'll seamlessly replace the squashed first "Organic Maps sources as of 02.04.20
The `om-historic.git` repo is ~1Gb only as various historic blobs, bundled 3rd-party deps, etc. were removed from it.
If you really need them (e.g. to build a very old app version) then refer to full organicmaps.git repo please.
## Android app
</details>
## Develop for:
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">Android app</span></summary>
### Preparing
@@ -199,9 +214,10 @@ To enable logging in case of crashes, after installing a debug version, run:
```bash
adb shell pm grant app.organicmaps.debug android.permission.READ_LOGS
```
</details>
### Android Auto Development
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">Android Auto</span></summary>
Android Auto can be developed and tested without having a physical device by using [Desktop Head Unit (DHU)](https://developer.android.com/training/cars/testing/dhu). Go to Android Studio > Tools -> SDK Manager -> SDK Tools and enable "Android Auto Desktop Head Unit".
@@ -349,8 +365,10 @@ Example of command line for running system tracing:
```
./record_android_trace -a app.organicmaps.debug -o trace_file.perfetto-trace -t 30s -b 64mb sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
```
</details>
## iOS app
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">iOS app</span></summary>
### Preparing
@@ -401,7 +419,11 @@ Select "CoMaps" product scheme.
Compile and run the project ("Product" → "Run").
### CarPlay
</details>
<details open>
<summary><span style="font-size: 1.5em; font-weight: bold;">CarPlay</span></summary>
To test CarPlay, simply select "I/O" → "External Displays" → "CarPlay" in the Simulator
### Spoofing GPS
@@ -411,6 +433,8 @@ To select an Apple predetermined track or specific custom location, choose "Feat
To simulate a custom GPX track use `python3 tools/python/ios_simulator_load_gpx.py <path to your gpx>` which is a wrapper for `xcrun simctl location`. Default values are 60 km/h and 0.1s update intervals, but can be customized
</details>
## Desktop app
See [install_desktop](INSTALL_DESKTOP.md) to install and build Desktop app for Linux and Mac OS

View File

@@ -77,6 +77,8 @@ TagMapping const kVehicleTagMapping = {
{OsmElement::Tag("vehicle", "private"), RoadAccess::Type::Private},
{OsmElement::Tag("vehicle", "destination"), RoadAccess::Type::Destination},
{OsmElement::Tag("vehicle", "permit"), RoadAccess::Type::Permit},
{OsmElement::Tag("service", "parking_aisle"), RoadAccess::Type::Private},
{OsmElement::Tag("amenity", "parking_entrance"), RoadAccess::Type::Private},
};
TagMapping const kCarBarriersTagMapping = {

View File

@@ -32,7 +32,7 @@
*/
- (NSString*) valueAsString {
auto const outString = measurement_utils::ToStringPrecision(self.value, self.value >= 10.0 ? 0 : 1);
auto const outString = measurement_utils::ToStringPrecision(self.value, 0);
return [NSString stringWithUTF8String:outString.c_str()];
}

View File

@@ -3,7 +3,7 @@
"search" = "Search";
/* Used in home screen quick actions. */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favourites";
/* Used in home screen quick actions. */
"route" = "Route";

View File

@@ -69,16 +69,16 @@
"add_new_set" = "Add a New List";
/* Add Bookmark list dialog - hint when the list name is empty */
"bookmark_set_name" = "Bookmark List Name";
"bookmark_set_name" = "List Name";
/* "Bookmark Lists" dialog title */
"bookmark_sets" = "Bookmark Lists";
"bookmark_sets" = "Favourite Lists";
/* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */
"bookmarks" = "Bookmarks";
"bookmarks" = "Places";
/* "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favourites";
/* Default bookmark list name */
"core_my_places" = "My Places";
@@ -160,16 +160,16 @@
/* Search category for RV facilities; any changes should be duplicated in categories.txt @category_rv! */
"category_rv" = "RV Facilities";
"share_bookmarks_email_body" = "Hello!\n\nAttached are my bookmarks; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
"share_bookmarks_email_body" = "Hello!\n\nAttached are my saved places; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
/* message title of loading file */
"load_kmz_title" = "Loading Bookmarks";
"load_kmz_title" = "Loading Favourites";
/* Kmz file successful loading */
"load_kmz_successful" = "Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.";
"load_kmz_successful" = "Favourites loaded successfully! You can find them on the map or on the Favourites Manager screen.";
/* Kml file loading failed */
"load_kmz_failed" = "Failed to load bookmarks. The file may be corrupted or defective.";
"load_kmz_failed" = "Failed to load favourites. The file may be corrupted or defective.";
/* resource for context menu */
"edit" = "Edit";
@@ -405,7 +405,7 @@
"routing_requires_all_map" = "In order to create a route, we need to download and update all the maps from your location to your destination.";
/* bookmark button text */
"bookmark" = "bookmark";
"bookmark" = "place";
"save" = "Save";
"create" = "create";
@@ -704,10 +704,10 @@
"placepage_more_button" = "More";
"book_button" = "Book";
"placepage_call_button" = "Call";
"placepage_edit_bookmark_button" = "Edit Bookmark";
"placepage_bookmark_name_hint" = "Bookmark Name";
"placepage_edit_bookmark_button" = "Edit Saved Place";
"placepage_bookmark_name_hint" = "Place Name";
"placepage_personal_notes_hint" = "Personal notes (text or html)";
"placepage_delete_bookmark_button" = "Delete Bookmark";
"placepage_delete_bookmark_button" = "Delete Saved Place";
"editor_edits_sent_message" = "Your note will be sent to OpenStreetMap";
"editor_comment_hint" = "Comment…";
"editor_reset_edits_message" = "Discard all local changes?";
@@ -796,7 +796,7 @@
"bookmarks_create_new_group" = "Create a new list";
/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */
"bookmarks_import" = "Import Bookmarks and Tracks";
"bookmarks_import" = "Import Favourites";
"downloader_hide_screen" = "Hide Screen";
"downloader_percent" = "%@ (%@ of %@)";
"downloader_process" = "Downloading %@…";
@@ -897,8 +897,8 @@
"dialog_routing_system_error_carplay" = "An error occurred. Please restart the application";
"dialog_routing_rebuild_from_current_location_carplay" = "The route will be rebuilt from your current location";
"dialog_routing_rebuild_for_vehicle_carplay" = "The route will be converted into an automobile one";
"not_all_shown_bookmarks_carplay" = "Not all bookmarks are shown";
"switch_to_phone_bookmarks_carplay" = "Switch to the phone to see all bookmarks";
"not_all_shown_bookmarks_carplay" = "Not all saved places are shown";
"switch_to_phone_bookmarks_carplay" = "Switch to the phone to see all saved places";
"ok" = "OK";
"speedcams_alert_title_carplay_1" = "Speedсams";
"speedcams_alert_title_carplay_2" = "Speed warnings";
@@ -1030,7 +1030,7 @@
"button_layer_outdoor" = "Outdoors";
/* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */
"bookmarks_export" = "Export all Bookmarks and Tracks";
"bookmarks_export" = "Export all Favourites";
/* Text for the editing the Track's color button. */
"change_color" = "Change Color";
@@ -1052,7 +1052,7 @@
"enable_icloud_synchronization_title" = "Enable iCloud Synchronization";
/* Message for the "Enable iCloud Synchronization" alert. */
"enable_icloud_synchronization_message" = "iCloud synchronization is an experimental feature under development. Make sure that you have made a backup of all your bookmarks and tracks.";
"enable_icloud_synchronization_message" = "iCloud synchronization is an experimental feature under development. Make sure that you have made a backup of all your saved places and tracks.";
/* Title for the "iCloud Is Disabled" alert. */
"icloud_disabled_title" = "iCloud Is Disabled";
@@ -1115,7 +1115,7 @@
"continue_recording" = "Continue Recording";
/* Title for the alert when saving a track recording. */
"track_recording_alert_title" = "Save into Bookmarks and Tracks?";
"track_recording_alert_title" = "Save into Favourites?";
/* Message for the toast when saving the track recording is finished but nothing to save. */
"track_recording_toast_nothing_to_save" = "Track is empty - nothing to save";

View File

@@ -7,7 +7,7 @@
"search" = "Search";
/* Used in home screen quick actions. */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favorites";
/* Used in home screen quick actions. */
"route" = "Route";

View File

@@ -73,16 +73,16 @@
"add_new_set" = "Add a New List";
/* Add Bookmark list dialog - hint when the list name is empty */
"bookmark_set_name" = "Bookmark List Name";
"bookmark_set_name" = "List Name";
/* "Bookmark Lists" dialog title */
"bookmark_sets" = "Bookmark Lists";
"bookmark_sets" = "Favorite Lists";
/* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */
"bookmarks" = "Bookmarks";
"bookmarks" = "Places";
/* "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favorites";
/* Default bookmark list name */
"core_my_places" = "My Places";
@@ -172,16 +172,16 @@
/********** Other translations **********/
"share_bookmarks_email_body" = "Hello!\n\nAttached are my bookmarks; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
"share_bookmarks_email_body" = "Hello!\n\nAttached are my saved places; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
/* message title of loading file */
"load_kmz_title" = "Loading Bookmarks";
"load_kmz_title" = "Loading Favorites";
/* Kmz file successful loading */
"load_kmz_successful" = "Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.";
"load_kmz_successful" = "Favorites loaded successfully! You can find them on the map or on the Favorites Manager screen.";
/* Kml file loading failed */
"load_kmz_failed" = "Failed to load bookmarks. The file may be corrupted or defective.";
"load_kmz_failed" = "Failed to load favorites. The file may be corrupted or defective.";
/* resource for context menu */
"edit" = "Edit";
@@ -416,7 +416,7 @@
"routing_requires_all_map" = "In order to create a route, we need to download and update all the maps from your location to your destination.";
/* bookmark button text */
"bookmark" = "bookmark";
"bookmark" = "place";
"save" = "Save";
"create" = "create";
@@ -723,10 +723,10 @@
"placepage_more_button" = "More";
"book_button" = "Book";
"placepage_call_button" = "Call";
"placepage_edit_bookmark_button" = "Edit Bookmark";
"placepage_bookmark_name_hint" = "Bookmark Name";
"placepage_edit_bookmark_button" = "Edit Saved Place";
"placepage_bookmark_name_hint" = "Place Name";
"placepage_personal_notes_hint" = "Personal notes (text or html)";
"placepage_delete_bookmark_button" = "Delete Bookmark";
"placepage_delete_bookmark_button" = "Delete Place";
"editor_edits_sent_message" = "Your note will be sent to OpenStreetMap";
"editor_comment_hint" = "Comment…";
"editor_reset_edits_message" = "Discard all local changes?";
@@ -817,7 +817,7 @@
"bookmarks_create_new_group" = "Create a new list";
/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */
"bookmarks_import" = "Import Bookmarks and Tracks";
"bookmarks_import" = "Import Favorites";
"downloader_hide_screen" = "Hide Screen";
"downloader_percent" = "%@ (%@ of %@)";
"downloader_process" = "Downloading %@…";
@@ -1055,7 +1055,7 @@
"button_layer_outdoor" = "Outdoors";
/* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */
"bookmarks_export" = "Export all Bookmarks and Tracks";
"bookmarks_export" = "Export all Favorites";
/* Text for the editing the Track's color button. */
"change_color" = "Change Color";
@@ -1140,7 +1140,7 @@
"continue_recording" = "Continue Recording";
/* Title for the alert when saving a track recording. */
"track_recording_alert_title" = "Save into Bookmarks and Tracks?";
"track_recording_alert_title" = "Save into Favorites?";
/* Message for the toast when saving the track recording is finished but nothing to save. */
"track_recording_toast_nothing_to_save" = "Track is empty - nothing to save";

View File

@@ -1054,6 +1054,7 @@
"type.railway.rail.highspeed" = "High-Speed Railway";
"type.railway.rail.tourism" = "Touristic Railway";
"type.railway.rail.main" = "Railway";
"type.railway.turntable" = "Railway Turntable";
/* Includes ordinary railway=rail w/o more specific usage= and service= tags. */
"type.railway.rail.branch" = "Railway Branch";

View File

@@ -43,8 +43,8 @@ final class InfoItemView: UIView {
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onInfoLabelTap)))
addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(onInfoLabelLongPress(_:))))
infoLabel.lineBreakMode = .byTruncatingTail
infoLabel.numberOfLines = 1
infoLabel.lineBreakMode = .byWordWrapping
infoLabel.numberOfLines = 0
infoLabel.allowsDefaultTighteningForTruncation = true
infoLabel.isUserInteractionEnabled = false
@@ -66,17 +66,17 @@ final class InfoItemView: UIView {
accessoryButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
heightAnchor.constraint(equalToConstant: Constants.viewHeight),
heightAnchor.constraint(greaterThanOrEqualToConstant: Constants.viewHeight),
iconButton.leadingAnchor.constraint(equalTo: leadingAnchor),
iconButton.centerYAnchor.constraint(equalTo: centerYAnchor),
iconButton.widthAnchor.constraint(equalToConstant: Constants.iconButtonSize),
iconButton.topAnchor.constraint(equalTo: topAnchor),
iconButton.bottomAnchor.constraint(equalTo: bottomAnchor),
iconButton.topAnchor.constraint(greaterThanOrEqualTo: topAnchor),
iconButton.bottomAnchor.constraint(lessThanOrEqualTo: bottomAnchor),
infoLabel.leadingAnchor.constraint(equalTo: iconButton.trailingAnchor),
infoLabel.topAnchor.constraint(equalTo: topAnchor),
infoLabel.bottomAnchor.constraint(equalTo: bottomAnchor),
infoLabel.topAnchor.constraint(equalTo: topAnchor, constant: Constants.infoLabelTopBottomSpacing),
infoLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -Constants.infoLabelTopBottomSpacing),
infoLabel.trailingAnchor.constraint(equalTo: accessoryButton.leadingAnchor),
accessoryButton.trailingAnchor.constraint(equalTo: trailingAnchor),

View File

@@ -40,7 +40,8 @@
[bookmarks_and_tracks]
tags = ios
comment = Used in home screen quick actions.
en = Bookmarks and Tracks
en = Favorites
en-GB = Favourites
ar = الإشارات المرجعية والمسارات
az = Əlfəcinlər və qeydlər
be = Закладкі i cцежкі

View File

@@ -507,16 +507,15 @@ private:
// Implementations of "ref" parses for some countries.
class AustriaRoadShieldParser : public HighwayClassRoadShieldParser
class AustriaRoadShieldParser : public SimpleRoadShieldParser
{
public:
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
{{"A", HighwayClass::Motorway, RoadShieldType::Generic_Blue_Bordered},
{"S", HighwayClass::Trunk, RoadShieldType::Generic_Blue_Bordered},
{"B", HighwayClass::Primary, RoadShieldType::Generic_Blue},
{"L", HighwayClass::Secondary, RoadShieldType::Generic_Pill_White_Bordered},
{"L", HighwayClass::Tertiary, RoadShieldType::Generic_Pill_White_Bordered}})
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Blue_Bordered},
{"S", RoadShieldType::Generic_Blue_Bordered},
{"B", RoadShieldType::Generic_Blue, false, true},
{"P", RoadShieldType::Generic_Pill_Red_Bordered},
{"L", RoadShieldType::Generic_Pill_White_Bordered, false, true}})
{}
};
@@ -554,9 +553,12 @@ class ItalyRoadShieldParser : public SimpleRoadShieldParser
public:
explicit ItalyRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Italy_Autostrada},
{"SS", RoadShieldType::Generic_Blue},
{"SR", RoadShieldType::Generic_Blue},
{"SP", RoadShieldType::Generic_Blue}})
{"T", RoadShieldType::Italy_Autostrada},
{"RA", RoadShieldType::Generic_Green_Bordered},
{"NSA", RoadShieldType::Generic_Blue_Bordered},
{"SS", RoadShieldType::Generic_Blue_Bordered},
{"SR", RoadShieldType::Generic_Blue_Bordered},
{"SP", RoadShieldType::Generic_Blue_Bordered}})
{}
};
@@ -601,6 +603,8 @@ public:
{"N", RoadShieldType::Generic_White_Bordered},
{"EN", RoadShieldType::Generic_White_Bordered},
{"R", RoadShieldType::Generic_Orange},
{"IP", RoadShieldType::Generic_Red},
{"IC", RoadShieldType::Generic_White_Bordered},
{"EM", RoadShieldType::Generic_Orange},
{"CM", RoadShieldType::Generic_Orange}})
{}
@@ -698,17 +702,15 @@ public:
{}
};
class GermanyRoadShieldParser : public HighwayClassRoadShieldParser
class GermanyRoadShieldParser : public SimpleRoadShieldParser
{
public:
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
{{"A", HighwayClass::Motorway, RoadShieldType::Highway_Hexagon_Blue, false, true},
{"D", HighwayClass::Motorway, RoadShieldType::Hidden},
{"B", HighwayClass::Trunk, RoadShieldType::Generic_Orange_Bordered},
{"B", HighwayClass::Primary, RoadShieldType::Generic_Orange_Bordered},
{"L", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered},
{"K", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered}})
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"A ", RoadShieldType::Highway_Hexagon_Blue, false, true},
{"D ", RoadShieldType::Hidden},
{"B ", RoadShieldType::Generic_Orange_Bordered},
{"L", RoadShieldType::Generic_White_Bordered},
{"K", RoadShieldType::Generic_White_Bordered}})
{}
};
@@ -882,7 +884,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
if (mwmName == "India")
return IndiaRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Austria")
return AustriaRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
return AustriaRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Belgium")
return BelgiumRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Greece")
@@ -918,7 +920,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
if (mwmName == "France")
return FranceRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Germany")
return GermanyRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
return GermanyRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Spain")
return SpainRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Ukraine")