Compare commits

..

202 commits

Author SHA1 Message Date
3256e5c043 [3party] Fix boost and pugixml submodules
Signed-off-by: Andrei Shkrob <andrei@shkrob.dev>
2025-03-29 20:16:15 +01:00
4f6986aa56
[strings] Update translations
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Armando Bastoni <weblate@sabato.anonaddy.com>
Co-authored-by: Babos Gábor <gabor.babos@gmail.com>
Co-authored-by: DB <denisbatsa@gmail.com>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Gari Araolaza <garaolaza@codesyntax.com>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jules <jules@j3s.fr>
Co-authored-by: Mads Rumle Nordstrøm <madsrumlenordstrom@icloud.com>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: ZeljkoBG <zeljko.velickovic@gmail.com>
Co-authored-by: map-per <map-per@gmx.de>
Co-authored-by: soshial <soshial@gmail.com>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Signed-off-by: Armando Bastoni <weblate@sabato.anonaddy.com>
Signed-off-by: Babos Gábor <gabor.babos@gmail.com>
Signed-off-by: DB <denisbatsa@gmail.com>
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Signed-off-by: Gari Araolaza <garaolaza@codesyntax.com>
Signed-off-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Signed-off-by: Jules <jules@j3s.fr>
Signed-off-by: Mads Rumle Nordstrøm <madsrumlenordstrom@icloud.com>
Signed-off-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
Signed-off-by: Software In Interlingua <softinterlingua@gmail.com>
Signed-off-by: Sveinn í Felli <sv1@fellsnet.is>
Signed-off-by: Weblate <hosted@weblate.org>
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
Signed-off-by: map-per <map-per@gmx.de>
Signed-off-by: soshial <soshial@gmail.com>
Signed-off-by: summoner001 <summoner@vivaldi.net>
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/cs/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/eu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/is/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/is/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ru/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/sr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/af/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ar/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/el/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/hi/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ja/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ro/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/sv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/tr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/cs/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/eu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/is/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/sr/
2025-03-29 03:40:49 +01:00
80d772c2e2 [docs] Some readme fixes 2025-03-27 17:24:40 +00:00
1177842e0f Merge branch 'release/2025.03.02' 2025-03-27 08:26:28 +00:00
1cb880b44a
[strings] Update translations
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Armando Bastoni <weblate@sabato.anonaddy.com>
Co-authored-by: Babos Gábor <gabor.babos@gmail.com>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Gari Araolaza <garaolaza@codesyntax.com>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mads Rumle Nordstrøm <madsrumlenordstrom@icloud.com>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: ZeljkoBG <zeljko.velickovic@gmail.com>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Signed-off-by: Armando Bastoni <weblate@sabato.anonaddy.com>
Signed-off-by: Babos Gábor <gabor.babos@gmail.com>
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Signed-off-by: Gari Araolaza <garaolaza@codesyntax.com>
Signed-off-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Signed-off-by: Mads Rumle Nordstrøm <madsrumlenordstrom@icloud.com>
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
Signed-off-by: Weblate <hosted@weblate.org>
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
Signed-off-by: summoner001 <summoner@vivaldi.net>
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/cs/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/eu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/sr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/af/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ar/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/el/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/hi/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ja/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ro/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/sv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/tr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/cs/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/eu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/sr/
2025-03-25 15:47:17 +01:00
62701a280f
[strings] Update translations
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
Signed-off-by: Weblate <hosted@weblate.org>
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Signed-off-by: summoner001 <summoner@vivaldi.net>
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/hu/
2025-03-23 10:17:13 +01:00
f13a8281a7
[strings] Update translations
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Arducode <arducode@gmail.com>
Co-authored-by: Babos Gábor <gabor.babos@gmail.com>
Co-authored-by: Bence Bődi <bodi.bence@protonmail.com>
Co-authored-by: Dan <jonweblin2205@protonmail.com>
Co-authored-by: Gari Araolaza <garaolaza@codesyntax.com>
Co-authored-by: Gonzalo Pesquero <gpesquero@yahoo.es>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jaume Ros Alonso <jaume.ros.alo@gmail.com>
Co-authored-by: KOIZUMI Satoru <koizumistr@minos.ocn.ne.jp>
Co-authored-by: Matheus Gomes Correia <matheus.gomes03@hotmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Rimas Kudelis <rimas@kudelis.lt>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: ZeljkoBG <zeljko.velickovic@gmail.com>
Co-authored-by: soshial <soshial@gmail.com>
Co-authored-by: vikingnope <aidsch0605@outlook.com>
Co-authored-by: संकेत गराडे <garade@proton.me>
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Signed-off-by: Arducode <arducode@gmail.com>
Signed-off-by: Babos Gábor <gabor.babos@gmail.com>
Signed-off-by: Bence Bődi <bodi.bence@protonmail.com>
Signed-off-by: Dan <jonweblin2205@protonmail.com>
Signed-off-by: Gari Araolaza <garaolaza@codesyntax.com>
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
Signed-off-by: Jaume Ros Alonso <jaume.ros.alo@gmail.com>
Signed-off-by: KOIZUMI Satoru <koizumistr@minos.ocn.ne.jp>
Signed-off-by: Matheus Gomes Correia <matheus.gomes03@hotmail.com>
Signed-off-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Signed-off-by: Rimas Kudelis <rimas@kudelis.lt>
Signed-off-by: Weblate <hosted@weblate.org>
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
Signed-off-by: soshial <soshial@gmail.com>
Signed-off-by: vikingnope <aidsch0605@outlook.com>
Signed-off-by: संकेत गराडे <garade@proton.me>
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/eu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/fi/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ja/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/mr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/mt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/sr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/mt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/af/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ar/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/el/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/hi/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ja/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ro/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/sv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/tr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/eu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/hu/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ja/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/mr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/mt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/sr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/et/
2025-03-23 00:27:33 +01:00
09d2447535 [3party] Use relative URLs for submodules
Remove explicit dependency on GitHub.com

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-22 23:16:51 +00:00
f4366688b7 [docs] Fix logo in readme
Signed-off-by: RedAuburn <me@hbond.xyz>
2025-03-20 12:17:14 +00:00
90772d66d2 [android] Fix tiny transparent PP edges after it fills the screen
Resolves #9335

Signed-off-by: savsch <119003089+savsch@users.noreply.github.com>
2025-03-13 12:45:42 +03:00
cf00843b0a Hide specific preferences in settings for improved user experience
Signed-off-by: DevarshVasani <vasanidevarsh@gmail.com>
2025-03-13 12:29:22 +03:00
renderexpert
58546f3115 Fixed gamma correction
Signed-off-by: renderexpert <expert@renderconsulting.co.uk>
2025-03-13 07:14:16 +03:00
renderexpert
cddfc2e891 Add developer sandbox desktop app
Signed-off-by: renderexpert <expert@renderconsulting.co.uk>
2025-03-13 07:14:16 +03:00
renderexpert
2bdf6763ce Add glfw, imgui and cmake metal dependencies
Signed-off-by: renderexpert <expert@renderconsulting.co.uk>
2025-03-13 07:14:16 +03:00
renderexpert
a54f5268cd Add imGui shaders
Signed-off-by: renderexpert <expert@renderconsulting.co.uk>
2025-03-13 07:14:16 +03:00
Ferenc Géczi
466b9365f6 Add 2025.03.02 release entry to metainfo.xml
Signed-off-by: Ferenc Géczi <ferenc.gm@gmail.com>
2025-03-09 11:27:49 +03:00
6bf8338cdd [github] Add edits.xml to .gitignore
it's generated when making edits on desktop
Signed-off-by: Harry Bond <me@hbond.xyz>
2025-03-08 17:47:49 +00:00
Kuzey Bilgin
95a2cf3bc5 [github] Add stale bot to close very old PRs
Signed-off-by: Kuzey Bilgin <kuzeybilgin@proton.me>
2025-03-08 17:47:37 +00:00
cf7cce69fa [android][sdk] Search SDK
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
2025-03-08 17:39:52 +00:00
d95bfeb0fd [strings] Update translations
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Am Heu <amanuel.amalio@thefluent.org>
Co-authored-by: Christos Sidiropoulos <dev@csidirop.de>
Co-authored-by: Dan <jonweblin2205@protonmail.com>
Co-authored-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
Co-authored-by: ERYpTION <eryption.ar9q2@slmail.me>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Gonzalo Pesquero <gpesquero@yahoo.es>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lens0021 <lorentz0021@gmail.com>
Co-authored-by: Maschga <delphi@freenet.de>
Co-authored-by: Matheus Gomes Correia <matheus.gomes03@hotmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rihards Olups <richlv@nakts.net>
Co-authored-by: Rimas Kudelis <rimas@kudelis.lt>
Co-authored-by: Roman Tsisyk <roman@organicmaps.app>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: soshial <soshial@gmail.com>
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Signed-off-by: Am Heu <amanuel.amalio@thefluent.org>
Signed-off-by: Christos Sidiropoulos <dev@csidirop.de>
Signed-off-by: Dan <jonweblin2205@protonmail.com>
Signed-off-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
Signed-off-by: Eryk Michalak <gnu.ewm@protonmail.com>
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
Signed-off-by: Lens0021 <lorentz0021@gmail.com>
Signed-off-by: Maschga <delphi@freenet.de>
Signed-off-by: Matheus Gomes Correia <matheus.gomes03@hotmail.com>
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
Signed-off-by: Rihards Olups <richlv@nakts.net>
Signed-off-by: Rimas Kudelis <rimas@kudelis.lt>
Signed-off-by: Roman Tsisyk <roman@organicmaps.app>
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
Signed-off-by: Software In Interlingua <softinterlingua@gmail.com>
Signed-off-by: Weblate <hosted@weblate.org>
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Signed-off-by: nautilusx <translate@disroot.org>
Signed-off-by: soshial <soshial@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/pl/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/be/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/el/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ko/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ru/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/af/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ar/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/el/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/fr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/hi/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/it/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ja/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ro/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/ru/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/sv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/tr/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/pl/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/el/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ko/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ru/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/cs/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/et/
Translation: OrganicMaps/Country names for downloader
2025-03-08 09:06:45 +00:00
575e17d63c [strings] Update translations
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Dan <jonweblin2205@protonmail.com>
Co-authored-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
Co-authored-by: ERYpTION <eryption.ar9q2@slmail.me>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lens0021 <lorentz0021@gmail.com>
Co-authored-by: Maschga <delphi@freenet.de>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rihards Olups <richlv@nakts.net>
Co-authored-by: Rimas Kudelis <rimas@kudelis.lt>
Co-authored-by: Roman Tsisyk <roman@organicmaps.app>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: soshial <soshial@gmail.com>
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Signed-off-by: Dan <jonweblin2205@protonmail.com>
Signed-off-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
Signed-off-by: Eryk Michalak <gnu.ewm@protonmail.com>
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Signed-off-by: Lens0021 <lorentz0021@gmail.com>
Signed-off-by: Maschga <delphi@freenet.de>
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
Signed-off-by: Rihards Olups <richlv@nakts.net>
Signed-off-by: Rimas Kudelis <rimas@kudelis.lt>
Signed-off-by: Roman Tsisyk <roman@organicmaps.app>
Signed-off-by: Software In Interlingua <softinterlingua@gmail.com>
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Signed-off-by: nautilusx <translate@disroot.org>
Signed-off-by: soshial <soshial@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/pl/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/be/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ia/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ko/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/ru/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/uk/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ast/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/lt/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/pl/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ca/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/da/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/de/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/et/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ko/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/lv/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/ru/
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/uk/
2025-03-06 19:14:28 +00:00
Gideon Wentink
bac9073bcb [strings] Generate Afrikaans (af) from strings.txt
The language was present in strings.txt but was never generated.

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-06 18:24:01 +00:00
Aiden
e2f0b8b258 [strings] Generate Maltese (mt) from strings.txt
The language was present in strings.txt but was never generated.

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-06 18:21:36 +00:00
Ernest King
840fa7d7f7 [strings] Generate Lithuanian (lt) from strings.txt
The language was present in strings.txt but was never generated.

See https://github.com/organicmaps/organicmaps/pull/5163

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-06 18:19:43 +00:00
d7db7df723 [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2025-03-06 04:31:01 +00:00
e8cbb31005 [strings] Update iOS translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2025-03-06 04:31:01 +00:00
aaa40a9b77 [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2025-03-06 04:31:01 +00:00
cd2f801fe6 [strings] Update iOS translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Signed-off-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2025-03-06 04:31:01 +00:00
ERYpTION
dcaca3ecb5 [strings] Update iOS translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-06 04:31:01 +00:00
4421a7b6e8 [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/es/
Signed-off-by: Anton <developing.anton@gmail.com>
2025-03-06 04:31:01 +00:00
5a1e518c3c [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/es/
Signed-off-by: Anton <developing.anton@gmail.com>
2025-03-06 04:31:01 +00:00
4a2f4a9f03 [strings] Update Android translations for Spanish (Mexico)
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es_MX/
Signed-off-by: Anton <developing.anton@gmail.com>
2025-03-06 04:31:01 +00:00
ERYpTION
028720a452 [strings] Update Android translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-06 04:31:01 +00:00
ERYpTION
1f043478df [strings] Update iOS translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-06 04:31:01 +00:00
ERYpTION
bef5ed25ca [strings] Update Android translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-06 04:31:01 +00:00
Weblate Translation Memory
6bcc35d982 [strings] Update iOS plurals translations for German
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/de/
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2025-03-06 04:31:01 +00:00
MaggusK
de536b96e9 [strings] Update iOS plurals translations for German
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/de/
Signed-off-by: MaggusK <aspams@magg4u.de>
2025-03-06 04:31:01 +00:00
ERYpTION
62cb82c09f [strings] Update Android translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-06 04:31:01 +00:00
Fjuro
a773bf7cc6 [strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-06 04:31:01 +00:00
Weblate Translation Memory
8c371fb509 [strings] Update Android translations for Belarusian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/be/
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2025-03-06 04:31:01 +00:00
Dmitry Gribenchuk
a887d930f7 [strings] Update Android translations for Belarusian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/be/
Signed-off-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
2025-03-06 04:31:01 +00:00
ERYpTION
e0a8a1f1f8
[strings] Update iOS translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-05 22:24:15 +01:00
Fjuro
1d69dfe8ce
[strings] Update iOS translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 22:24:15 +01:00
Fjuro
8b93625010
[strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 21:27:14 +01:00
Fjuro
4fe769be75
[strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 21:27:14 +01:00
Weblate Translation Memory
f3c472c23a
[strings] Update Android translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/da/
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2025-03-05 21:27:13 +01:00
ERYpTION
fcb2a3af29
[strings] Update Android translations for Danish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/da/
Signed-off-by: ERYpTION <eryption.ar9q2@slmail.me>
2025-03-05 21:27:13 +01:00
Fjuro
0143ac3538
[strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 21:27:13 +01:00
Fjuro
b6e9181c98
[strings] Update iOS translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 21:27:12 +01:00
Fjuro
20d608f850 [strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 20:05:49 +00:00
Fjuro
dccf7b97fe [strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 20:05:49 +00:00
55a903903b [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: muralito <muralito@montevideo.com.uy>
2025-03-05 20:05:49 +00:00
c29584acbe [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: muralito <muralito@montevideo.com.uy>
2025-03-05 20:05:49 +00:00
Jaime Marquínez Ferrándiz
7ae108ed6e [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@fastmail.net>
2025-03-05 20:05:49 +00:00
Jaime Marquínez Ferrándiz
d3713cd8ca [strings] Update iOS translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Signed-off-by: Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@fastmail.net>
2025-03-05 20:05:49 +00:00
2b29b484a5 [strings] Update iOS translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Signed-off-by: muralito <muralito@montevideo.com.uy>
2025-03-05 20:05:49 +00:00
7e79f90e7f [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: muralito <muralito@montevideo.com.uy>
2025-03-05 20:05:49 +00:00
Andi Chandler
e7c16d75ae [strings] Update Android translations for English (United Kingdom)
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/en_GB/
Signed-off-by: Andi Chandler <andi@gowling.com>
2025-03-05 20:05:49 +00:00
Jaime Marquínez Ferrándiz
51e47b12d2 [strings] Update iOS plurals translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/es/
Signed-off-by: Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@fastmail.net>
2025-03-05 20:05:49 +00:00
Andi Chandler
033cc84649 [strings] Update iOS plurals translations for English (United Kingdom)
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/en_GB/
Signed-off-by: Andi Chandler <andi@gowling.com>
2025-03-05 20:05:49 +00:00
Matheus Gomes Correia
f4862bbeff [strings] Update Android translations for Portuguese (Brazil)
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/pt_BR/
Signed-off-by: Matheus Gomes Correia <matheus.gomes03@hotmail.com>
2025-03-05 20:05:49 +00:00
Weblate Translation Memory
22577a0a57 [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
2025-03-05 20:05:49 +00:00
73fd45af68 [strings] Update Android translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/es/
Signed-off-by: muralito <muralito@montevideo.com.uy>
2025-03-05 20:05:49 +00:00
Matheus Gomes Correia
d9e6ebf809 [strings] Update iOS translations for Portuguese (Brazil)
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/pt_BR/
Signed-off-by: Matheus Gomes Correia <matheus.gomes03@hotmail.com>
2025-03-05 20:05:49 +00:00
028c4b28a3 [strings] Update iOS translations for Spanish
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/es/
Signed-off-by: muralito <muralito@montevideo.com.uy>
2025-03-05 20:05:49 +00:00
cf06b21e53 [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:11:07 +00:00
ce97f195d7 [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:11:07 +00:00
d3a4e8e7b2 [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:11:07 +00:00
91b607276f [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:11:07 +00:00
Fjuro
7f49ad21fe [strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 18:11:07 +00:00
Fjuro
bd1b2f5c93 [strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 18:11:07 +00:00
Fjuro
538dd1bf1e [strings] Update Android translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 18:11:07 +00:00
Fjuro
c6efc5dba1 [strings] Update iOS translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 18:11:07 +00:00
58c5d87455 [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
f3acc898cd [strings] Update Android translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
53a39be6f6 [strings] Update Android translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
15a4a80583 [strings] Update Android translations for Russian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ru/
Signed-off-by: Konstantin <konstantin.pastbin@gmail.com>
2025-03-05 18:07:33 +00:00
d18843f344 [strings] Update Android translations for Russian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ru/
Signed-off-by: Konstantin <konstantin.pastbin@gmail.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
e7d97f467b [strings] Update Android translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
2759fed166 [strings] Update Android translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
423c54d21c [strings] Update Android translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
51e565feed [strings] Update Sounds translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
510980c2f2 Translated using Weblate (Estonian)
Currently translated at 100.0% (2552 of 2552 strings)

Translation: OrganicMaps/WIP: Country names for downloader
Translate-URL: https://hosted.weblate.org/projects/organicmaps/countries/et/
2025-03-05 18:07:33 +00:00
d16cceb9c2 [strings] Update iOS plurals translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
2f1917dc04 [strings] Update iOS translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
8d05a39efe [strings] Update Android translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
6b2f8db1d7 [store] Update Android translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
0c0af7b029 [strings] Update Android translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
e9f32a77ea [strings] Update Android translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
334752facf [strings] Update Android translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
4d9514b510 [strings] Update iOS plurals translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
e739a2f5c3 [strings] Update Sounds translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
8db2a0136e [strings] Update iOS plurals translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
baed033cf0 [strings] Update Sounds translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
7d58b65a11 [store] Update Sounds translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
ceba407373 [strings] Update Sounds translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
Priit Jõerüüt
2c766f64ba [strings] Add Sounds translations for Estonian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/tts/et/
Signed-off-by: Priit Jõerüüt <hwlate@joeruut.com>
2025-03-05 18:07:33 +00:00
8e885b38e3 [store] Update Android translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
7a149d3d22 [strings] Update Android translations for Russian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/ru/
Signed-off-by: Konstantin <konstantin.pastbin@gmail.com>
2025-03-05 18:07:33 +00:00
fa3b4cb661 [strings] Update Android translations for Russian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/ru/
Signed-off-by: Konstantin <konstantin.pastbin@gmail.com>
2025-03-05 18:07:33 +00:00
27bd379ac3 [store] Update Android translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
d93eba8cc7 [strings] Update Android translations for English
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/en/
Signed-off-by: Konstantin <konstantin.pastbin@gmail.com>
2025-03-05 18:07:33 +00:00
10ffea348d [store] Update Android translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
6ef933de5b [strings] Update Android translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
f4be439d29 [strings] Update Android translations for Serbian
Translate-URL: https://hosted.weblate.org/projects/organicmaps/android-typestrings/sr/
Signed-off-by: ZeljkoBG <zeljko.velickovic@gmail.com>
2025-03-05 18:07:33 +00:00
Fjuro
90b8ed428f [strings] Update iOS plurals translations for Czech
Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/cs/
Signed-off-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
2025-03-05 18:07:33 +00:00
178bdf9f27 [store] Update Android translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-typestrings/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
150b83b677 [store] Update Android translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plist/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
6022a07532 [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
eb5a4916ae [store] Update iOS translation files
Updated by "Remove blank strings" hook in Weblate.

Translate-URL: https://hosted.weblate.org/projects/organicmaps/ios-plurals/
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:33 +00:00
00548ab8cb [strings] Remove old strings.txt
No longer used.

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:24 +00:00
6e37398cf1 [strings] Switch to Weblate
https://github.com/orgs/organicmaps/discussions/4515

Weblate works fine. There is no longer a need to maintain a
homegrown, non-standard translation toolchain.

Categories are not in Weblate yet, but they weren't supported by
the previous toolkit too. This issue can be addressed later.

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 18:07:24 +00:00
058644ecef [strings] Regenerated after extracting types strings
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 09:07:52 +00:00
173b7e4515 [strings] [ios] move types from Localizable to LocalizableTypes
1. add separate `LocalizableTypes.strings` file for the types
2. patch the `GetLocalizedTypeName` cpp function to fetch the value from the proper table

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-03-05 09:07:14 +00:00
ac1cbbfa2a [strings] Extract types strings into individual files
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-05 09:07:14 +00:00
3b3e063ef9 [ios] fix search header radius small for iphone
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-03-05 08:17:53 +00:00
6eab4f9537 [drape] Fix initialization of struct
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
2025-03-04 19:09:29 -03:00
1753a8bc87 [drape] Remove Vulkan warnings
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
2025-03-03 17:42:46 -03:00
pastk
41ea6bf4df Bump versions
Signed-off-by: pastk <pastk@users.noreply.github.com>
2025-03-02 17:27:18 +00:00
745f28ea12 March release notes translations
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-03-03 00:07:39 +07:00
bd19de4b9a March release notes
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-03-03 00:07:39 +07:00
ce72ef70da [planet] New data from 250227.
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-03-02 16:13:22 +00:00
d21800ec25 [github] Add leading slash (root) to all dirs
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-03-02 16:07:26 +00:00
62778dbfbe [android] Fix crash upon deleting a POI via the Editor
Resolves #10211

Signed-off-by: savsch <119003089+savsch@users.noreply.github.com>
2025-03-02 18:47:15 +03:00
540bd70d96 Implements track recording widget on screen
Signed-off-by: kavikhalique <kavikhalique3@gmail.com>
2025-03-02 13:26:40 +00:00
c23d782d6f [android] Add manage route functionality
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
2025-03-01 13:06:25 +00:00
c7b2b7d136 [strings] Add manage route strings to Android
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
2025-03-01 13:06:25 +00:00
d2f8a03468 [android] Add route point icons
Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
2025-03-01 13:06:25 +00:00
5344ed5940 [strings] Regenerated
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-03-01 09:14:48 +00:00
zyphlar
97fc3606f9 [strings] Regenerated
Signed-off-by: zyphlar <zyphlar@users.noreply.github.com>
2025-03-01 09:01:15 +00:00
zyphlar
13071a609c Add recalculating TTS announcement
Signed-off-by: zyphlar <zyphlar@users.noreply.github.com>
2025-03-01 09:01:15 +00:00
b14939e770 [android] Don't set subway routing mode when layer active
Signed-off-by: Harry Bond <me@hbond.xyz>
2025-03-01 05:58:19 +03:00
32bf3a3e9a [editor] Make new POIs editable
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-03-01 05:29:12 +03:00
147e12360c [github] Do not require POI PR reviews from design and data teams
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-28 20:02:16 +00:00
7bfbb517cf [Android] hide UI in big direction mode
Signed-off-by: Harry Bond <me@hbond.xyz>
2025-02-28 18:48:25 +00:00
FinixFighter
33ca7570ad [categories] Update categories.txt
Added italian search term for car repair shop.
"Meccanico" is the most commonly used term for this kind of shops.

Signed-off-by: FinixFighter <19877271+FinixFighter@users.noreply.github.com>
2025-02-28 18:52:17 +03:00
644b9da2b1 [strings] Regenerated
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-02-28 13:59:33 +00:00
c52a3e3c09 [strings] Update plurals from ChatGPT
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-02-28 13:59:09 +00:00
44f3475b90 [strings] Regenerated
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-02-28 13:56:49 +00:00
c5019f0252 [strings] Remove brands_strings.txt
This file isn't referenced anywhere. It's just an artifact.

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-02-28 13:56:03 +00:00
Parneet Singh
018dfb0cbc [android] Remove unused ProgressDialogFragment file (#10354)
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2025-02-28 13:56:03 +00:00
Alexey Krasilnikov
a11c266584 Start DownloaderService when map update is requested also
Signed-off-by: Alexey Krasilnikov <alexey@krasilnikov.me>
2025-02-28 13:56:03 +00:00
Alexey Krasilnikov
08b9e407cb Decrease download notifications importance to avoid disturbing sounds
Signed-off-by: Alexey Krasilnikov <alexey@krasilnikov.me>
2025-02-28 13:56:03 +00:00
2c002eb08b [android] Fix SpeedLimitView
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
2025-02-28 13:56:03 +00:00
c96d873fa8 [map] return the ElevationInfo for the current track recording
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-28 13:56:03 +00:00
Boris Verkhovskiy
40e1e63315 Proofread English strings 2025-02-28 13:56:03 +00:00
a9d85463ab [drape] Fix disappearing building POIs when in perspective
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-28 13:56:02 +00:00
55951a28be [ios] fix search result selection index after filtering the suggestions
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-28 13:56:02 +00:00
52bbb9c28a [strings] Removes unused strings
- Ran clean_strings_txt.py
Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-26 12:54:54 +03:00
a4067bc128 [android] Alerts users when precise permission not given
- Added strings to strings.txt
- overloaded OpenUri to support system Action
- Translated strings with DeepL api

Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-26 12:54:54 +03:00
806ef7e749 Status Icon Fix
Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-26 10:30:20 +03:00
parneet-guraya
57e72f93bc Use new result apis
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2025-02-26 10:28:28 +03:00
d6d7a33bdf [styles] Regenerate for power towers and lines
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 21:48:40 +03:00
6b458d4f65 [strings] Regenerate for power towers and line
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 21:48:40 +03:00
e49e836f42 [classif] Add man_made=utility_pole
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 21:48:40 +03:00
d281139fd6 [styles] Add minor power lines and poles
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 21:48:40 +03:00
80413f97e1 [styles][outdoor] Increase visibility of power lines and towers
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 21:48:40 +03:00
4f6ee70bf8 [symbols] Regenerate for amenity-motorcycle_rental
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 18:29:22 +03:00
3925b423a1 [styles] Regenerate for amenity-motorcycle_rental
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 18:29:22 +03:00
e767b0f454 [strings] Regenerate for amenity-motorcycle_rental
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 18:29:22 +03:00
cc216c4895 [classif] Add amenity-motorcycle_rental
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 18:29:22 +03:00
4b15a12893 Revert "[ios] Use today's commits count and two numbers from commit hash in the build number"
This reverts commit ee36eb8d12.
2025-02-25 12:18:28 +00:00
8dfd9a789c [map] show Track PP after TrackRecording saving
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:18:06 +00:00
377d10de8c [ios] remove outdated code related to the search
the old MWMSearch... screen is not used anymore

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
f9fb0e8d7f [ios] replace MWMSearchManager with new SearchOnMapManager
- fix layout of the place page container (configure it programatiacally)
- use the new modal seearch VC everywhere
-

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
fbc1ebd84d [ios] remove setSearchOnMap from the MWMSearch
because the new search should always works as iPad

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
5db61f0498 [ios] implement modal search screen SearchOnMap
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
4eb7bf3f73 [ios] add searchHeader style
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
fcaad4d98e [ios] get the current Side buttons available size
This size is used to update the side buttons during the modally search screen dragging

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
f42083b8c9 [ios] prevent search marks hiding when the search result is selected
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
c666a68b37 [ios] rename IPAD func to isIPad and make internal visibility
it may be used in different situations

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
e53dcf7716 [ios] show current searching results on the map
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
ca2d888744 [ios] add getResults to the MWMSearch to fetch the full results list
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 12:17:33 +00:00
Alexey Krasilnikov
cd832b94b6 Add foreground service to indicate about ongoing downloads
Signed-off-by: Alexey Krasilnikov <alexey@krasilnikov.me>
2025-02-25 11:14:56 +00:00
1cbe25e5bc [ios] fix route planning reloading ui bug
The bottom route status view sometimes jumps from the top to the bottom during the 1st rendering. It happens because the view's frame is not calculated on the isVisible because the view is not init/deinit multiple times during the route building state changing. The bottom view now only changes its visibility and constraints, not the init/deinit on every update.

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 10:58:14 +00:00
db4371e2c3 [ios] refactor search screen cells and tab bar
- remove xibs where possible
- update cells style (fonts, colors, icons)

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 10:53:35 +00:00
varad64
9e47a49ec0 Use SharedPreferences to restore the last selected search tab on app restart.
Code refactor to change LastSelectedTab to LastSearchedTab.
Signed-off-by: varad64 <varad23711@users.noreply.github.com>

Code refactor to change LastSelectedTab to LastSearchedTab
2025-02-25 13:43:18 +03:00
83994a247e [ios] rename finishShareCategory to finishSharing
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 10:18:51 +00:00
98ef2d61fb [ios] export single track from the place page as kml/gpx
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 10:18:51 +00:00
524f3fe358 [ios] show add stop button to the selected track point during the nav mode
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 09:42:48 +00:00
34510b8f1c [map] clear the gps tracker on save
The prev solution was to clean up the tracker points before the new track recording starting.
It was not fully correct solution because:
1. it causes the bug, when if we starts a recording, the `TrackRecordingUpdateHandler` is called by subscribers but receives the old `track info` from the previous track. It happens because the starting is an async call and it cleans up the gps collection a little bit later.
2. when the user finishes the track recording the collection is not properly cleared. The data will stay in the memory `forewer` until the next recording is started. And this data will be recovered on the next app launch too. There are no reason to store all the recorded data in memory until the new recording begins. This approach was Ok for the `previous path` feature (removed) but not for the TR. The data lifecycle for the both feature should be handled separately.

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 09:39:35 +00:00
0687642095 [ios] fix memory leak in the PlacePageInfoViewController
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-25 09:38:42 +00:00
b9d0138cd1 [styles] Regenerate for pathtexts
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 07:08:55 +03:00
cf7a71b590 [styles] Add pathtexts to power lines
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 07:08:55 +03:00
1ea96c4069 [styles] Add captions to linear cliffs, city walls, embankments
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-25 07:08:55 +03:00
5ffd95a491 [ios] replace usage of cpp search::Result with objc SearchResult in UI
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-24 11:25:14 +04:00
69953c2b12 [ios] remove unused search::ProductInfo from the search
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
2025-02-24 11:25:14 +04:00
KOIZUMI Satoru
868b538435 [strings] Regenerated
Signed-off-by: KOIZUMI Satoru <koizumistr@minos.ocn.ne.jp>
2025-02-24 08:10:15 +03:00
KOIZUMI Satoru
ca29e0b563 [strings] fix 'sort' in Japanese
Signed-off-by: KOIZUMI Satoru <koizumistr@minos.ocn.ne.jp>
2025-02-24 08:10:15 +03:00
25a6c1a5b1 [tools] Remove outdated scripts
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
2025-02-23 20:09:53 +00:00
fced7be257 [indexer] Remove android tests
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
2025-02-23 20:07:14 +00:00
Dmitry Gribenchuk
eacb3bbfa2 [strings] Regenerate
Signed-off-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
2025-02-23 19:45:50 +03:00
Dmitry Gribenchuk
b2464b2d31 [strings] Regenerate
Signed-off-by: Dmitry Gribenchuk <dmitrygribenchuk@gmail.com>
2025-02-23 19:45:50 +03:00
462b73ef5a [styles] Regenerate drules
Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-23 17:33:00 +03:00
1e0065ab4d [styles] Updates zoom of all priority 500 shops to z18
- Made all z18 shops consistent z18

Signed-off-by: Hemang Manhas <hemangmanhas@gmail.com>
2025-02-23 17:33:00 +03:00
4a82b560bd [styles] Regenerate symbols
Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-23 17:31:56 +03:00
8df6183ba7 [android] Fixes icon colors
- Reverts opening hours tint that was wrongly set to white which is not visible in light mode in the commit 5841d0f .

- Sets color of hearing_aids icon same as  other shop icons

Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-23 17:31:56 +03:00
9c7438cb69 [android] RoutingErrorDialogFragment dialog fix
Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-23 17:31:56 +03:00
645f17c441 [android] Reorders stop track recording dialog box buttons
Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-23 17:31:56 +03:00
234dfb6d57 [android] Fixes downloader message UI
- Fixes #8520

Signed-off-by: hemanggs <hemangmanhas@gmail.com>
2025-02-23 17:31:56 +03:00
f5e61c7f35 [github] Don't require Design team to review each map icon change
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-02-23 16:27:07 +03:00
b0f96bf094 [strings] Fix plurals for pl, ru, uk
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2025-02-23 12:41:09 +00:00
833 changed files with 160080 additions and 213203 deletions

96
.github/CODEOWNERS vendored
View file

@ -1,71 +1,69 @@
# All non-assigned.
* @organicmaps/mergers
# Visual design.
android/app/src/main/res/drawable*/ @organicmaps/design
android/app/src/main/res/font/ @organicmaps/design
android/app/src/main/res/mipmap*/ @organicmaps/design
data/*.ttf @organicmaps/design
data/resources*/ @organicmaps/design
data/search-icons/ @organicmaps/design
data/styles/default/light/**/*.png @organicmaps/design
data/styles/default/light/**/*.svg @organicmaps/design
data/styles/default/dark/**/*.png @organicmaps/design
data/styles/default/dark/**/*.svg @organicmaps/design
iphone/Maps/Images.xcassets/ @organicmaps/design
/android/app/src/main/res/drawable*/ @organicmaps/design
/android/app/src/main/res/font/ @organicmaps/design
/android/app/src/main/res/mipmap*/ @organicmaps/design
/data/*.ttf @organicmaps/design
/data/resources-svg/ @organicmaps/design
/data/search-icons/ @organicmaps/design
/iphone/Maps/Images.xcassets/ @organicmaps/design
# Android.
android/ @organicmaps/android
android/app/src/main/java/app/organicmaps/car/ @organicmaps/android-auto
docs/ANDROID_LOCATION_TEST.md @organicmaps/android
docs/JAVA_STYLE.md @organicmaps/android
/android/ @organicmaps/android
/android/app/src/main/java/app/organicmaps/car/ @organicmaps/android-auto
/docs/ANDROID_LOCATION_TEST.md @organicmaps/android
/docs/JAVA_STYLE.md @organicmaps/android
# no owner for translation changes
/android/app/src/main/res/values*/strings.xml
# iOS.
iphone/ @organicmaps/ios
xcode/ @organicmaps/ios
docs/OBJC_STYLE.md @organicmaps/ios
/iphone/ @organicmaps/ios
/xcode/ @organicmaps/ios
/docs/OBJC_STYLE.md @organicmaps/ios
# no owner for translation changes
/iphone/plist.txt
/iphone/Maps/LocalizedStrings/
# Qt
qt/ @organicmaps/qt
/qt/ @organicmaps/qt
# Rendering
drape/ @organicmaps/rendering
drape_frontend/ @organicmaps/rendering
/drape/ @organicmaps/rendering
/drape_frontend/ @organicmaps/rendering
# Map Data.
tools/python/maps_generator/ @organicmaps/data
generator/ @organicmaps/data
topography_generator/ @organicmaps/data
data/borders/ @organicmaps/data
data/conf/isolines/ @organicmaps/data
docs/SUBWAY_GENERATION.md @organicmaps/data
docs/MAPS.md @organicmaps/data
docs/EXPERIMENTAL_PUBLIC_TRANSPORT_SUPPORT.md @organicmaps/data
/tools/python/maps_generator/ @organicmaps/data
/generator/ @organicmaps/data
/topography_generator/ @organicmaps/data
/data/borders/ @organicmaps/data
/data/conf/isolines/ @organicmaps/data
/docs/SUBWAY_GENERATION.md @organicmaps/data
/docs/MAPS.md @organicmaps/data
/docs/EXPERIMENTAL_PUBLIC_TRANSPORT_SUPPORT.md @organicmaps/data
# no owner (changed often to add a new POI)
/generator/generator_tests/osm_type_test.cpp
# Map Styles.
data/styles/ @organicmaps/styles
data/types.txt @organicmaps/styles
data/visibility.txt @organicmaps/styles
data/mapcss-mapping.csv @organicmaps/styles
data/replaced_tags.txt @organicmaps/styles
data/classificator.txt @organicmaps/styles
data/drules_* @organicmaps/styles
docs/STYLES.md
tools/kothic/ @organicmaps/styles
/data/styles/ @organicmaps/styles
/data/types.txt @organicmaps/styles
/data/visibility.txt @organicmaps/styles
/data/mapcss-mapping.csv @organicmaps/styles
/data/replaced_tags.txt @organicmaps/styles
/data/classificator.txt @organicmaps/styles
/data/drules_* @organicmaps/styles
/docs/STYLES.md
/tools/kothic/ @organicmaps/styles
# DevOps.
.github/workflows @organicmaps/devops
android/*gradle* @organicmaps/devops
docs/RELEASE_MANAGEMENT.md @organicmaps/devops
xcode/fastlane/ @organicmaps/devops
/.github/workflows @organicmaps/devops
/android/*gradle* @organicmaps/devops
/docs/RELEASE_MANAGEMENT.md @organicmaps/devops
/xcode/fastlane/ @organicmaps/devops
# Growth.
README.md @organicmaps/growth
.github/FUNDING.yml @organicmaps/growth
android/app/src/fdroid/play/ @organicmaps/growth
android/app/src/google/play/ @organicmaps/growth
iphone/metadata/ @organicmaps/growth
/.github/FUNDING.yml @organicmaps/growth
/android/app/src/fdroid/play/ @organicmaps/growth
/android/app/src/google/play/ @organicmaps/growth
/iphone/metadata/ @organicmaps/growth
# Legal.
LEGAL @organicmaps/legal
LICENSE @organicmaps/legal
NOTICE @organicmaps/legal
CONTRIBUTORS @organicmaps/legal
docs/CODE_OF_CONDUCT.md @organicmaps/legal
docs/DCO.md @organicmaps/legal
docs/GOVERNANCE.md @organicmaps/legal
/docs/CODE_OF_CONDUCT.md @organicmaps/legal
/docs/DCO.md @organicmaps/legal
/docs/GOVERNANCE.md @organicmaps/legal

View file

@ -61,6 +61,10 @@ jobs:
libgl1-mesa-dev \
libglvnd-dev \
libharfbuzz-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
qt6-base-dev \
libqt6svg6-dev \
qt6-positioning-dev \
@ -128,6 +132,10 @@ jobs:
libgl1-mesa-dev \
libglvnd-dev \
libharfbuzz-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
qt6-base-dev \
libqt6svg6-dev \
qt6-positioning-dev \

22
.github/workflows/stale.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Close stale PRs
on:
schedule:
- cron: "0 0 * * *" # Runs every day at midnight
jobs:
stale:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-pr-stale: 180 # 6 months before warning
days-before-pr-close: 365 # Closed after 12 months
stale-pr-label: "stale"
stale-pr-message: "Hi! This PR has been inactive for 6 months. If it's still relevant, please update it to let us know youd like to keep it open 😊"
close-pr-message: "This PR has been automatically closed after 12 months of inactivity."
days-before-issue-stale: -1 # Issues are never stale
days-before-issue-close: -1 # Issues are never closed
remove-stale-when-updated: true

View file

@ -1,31 +0,0 @@
name: Validate translation strings
on:
workflow_dispatch: # Manual trigger
pull_request:
paths:
- .github/workflows/strings-check.yaml # Run check on self change
- data/strings/strings.txt
- data/strings/types_strings.txt
- data/strings/sound.txt
- data/countries_names.txt
- iphone/plist.txt
- tools/python/strings_utils.py
jobs:
validate-translation-strings:
name: Validate translation strings
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3'
- name: Validate string files
shell: bash
run: |
for f in data/strings/strings.txt data/strings/types_strings.txt data/strings/sound.txt data/countries_names.txt iphone/plist.txt; do
./tools/python/strings_utils.py --validate $f -o
done;
git diff --exit-code

1
.gitignore vendored
View file

@ -20,6 +20,7 @@ data/drules_proto_default_design.bin
data/colors_design.txt
data/patterns_design.txt
data/bookmarks
data/edits.xml
# Compiled Python
*.pyc

58
.gitmodules vendored
View file

@ -1,26 +1,23 @@
[submodule "tools/osmctools"]
path = tools/osmctools
url = https://github.com/organicmaps/osmctools.git
url = https://git.omaps.dev/organicmaps/osmctools.git
[submodule "tools/kothic"]
path = tools/kothic
url = https://github.com/organicmaps/kothic.git
url = https://git.omaps.dev/organicmaps/kothic.git
[submodule "3party/protobuf/protobuf"]
path = 3party/protobuf/protobuf
url = https://github.com/organicmaps/protobuf.git
[submodule "tools/twine"]
path = tools/twine
url = https://github.com/organicmaps/twine.git
url = https://git.omaps.dev/organicmaps/protobuf.git
[submodule "3party/Vulkan-Headers"]
path = 3party/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git
[submodule "3party/boost"]
path = 3party/boost
url = https://github.com/boostorg/boost.git
branch = boost-1.76.0
branch = boost-1.85.0
ignore = dirty
[submodule "3party/just_gtfs"]
path = 3party/just_gtfs
url = https://github.com/organicmaps/just_gtfs.git
url = https://git.omaps.dev/organicmaps/just_gtfs.git
branch = for-usage-as-submodule
[submodule "3party/expat"]
path = 3party/expat
@ -33,29 +30,38 @@
path = 3party/icu/icu
url = https://github.com/unicode-org/icu.git
[submodule "3party/freetype/freetype"]
path = 3party/freetype/freetype
url = https://github.com/organicmaps/freetype.git
path = 3party/freetype/freetype
url = https://git.omaps.dev/organicmaps/freetype.git
[submodule "3party/googletest"]
path = 3party/googletest
url = https://github.com/google/googletest.git
path = 3party/googletest
url = https://github.com/google/googletest.git
[submodule "3party/fast_double_parser"]
path = 3party/fast_double_parser
url = https://github.com/lemire/fast_double_parser.git
path = 3party/fast_double_parser
url = https://github.com/lemire/fast_double_parser.git
[submodule "3party/pugixml/pugixml"]
path = 3party/pugixml/pugixml
url = https://github.com/zeux/pugixml.git
path = 3party/pugixml/pugixml
url = https://github.com/zeux/pugixml.git
[submodule "3party/jansson/jansson"]
path = 3party/jansson/jansson
url = https://github.com/akheron/jansson.git
path = 3party/jansson/jansson
url = https://github.com/akheron/jansson.git
[submodule "3party/gflags"]
path = 3party/gflags
url = https://github.com/gflags/gflags
path = 3party/gflags
url = https://github.com/gflags/gflags
[submodule "3party/fast_obj"]
path = 3party/fast_obj
url = https://github.com/thisistherk/fast_obj
path = 3party/fast_obj
url = https://github.com/thisistherk/fast_obj
[submodule "3party/harfbuzz/harfbuzz"]
path = 3party/harfbuzz/harfbuzz
url = https://github.com/harfbuzz/harfbuzz.git
path = 3party/harfbuzz/harfbuzz
url = https://github.com/harfbuzz/harfbuzz.git
[submodule "3party/utfcpp"]
path = 3party/utfcpp
url = https://github.com/nemtrif/utfcpp.git
path = 3party/utfcpp
url = https://github.com/nemtrif/utfcpp.git
[submodule "3party/glfw"]
path = 3party/glfw
url = https://github.com/glfw/glfw.git
[submodule "3party/CMake-MetalShaderSupport"]
path = 3party/CMake-MetalShaderSupport
url = https://github.com/dpogue/CMake-MetalShaderSupport.git
[submodule "3party/imgui/imgui"]
path = 3party/imgui/imgui
url = https://github.com/ocornut/imgui

@ -0,0 +1 @@
Subproject commit 989857d2e5e54869c35ad06fb21a67d12a2dbc67

View file

@ -66,4 +66,19 @@ add_subdirectory(vulkan_wrapper)
if (PLATFORM_DESKTOP)
add_subdirectory(libtess2)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
set(GLFW_INSTALL OFF CACHE BOOL "")
set(GLFW_VULKAN_STATIC OFF CACHE BOOL "")
set(GLFW_BUILD_WAYLAND OFF CACHE BOOL "")
# Disable ARC for glfw and re-enable after it because it's globally set in the root CMakeLists.txt
set(CMAKE_OBJC_FLAGS "")
add_subdirectory(glfw)
set_target_properties(glfw PROPERTIES UNITY_BUILD OFF)
set_target_properties(glfw PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC NO)
set(CMAKE_OBJC_FLAGS -fobjc-arc)
add_subdirectory(imgui)
endif()

1
3party/glfw Submodule

@ -0,0 +1 @@
Subproject commit 21fea01161e0d6b70c0c5c1f52dc8e7a7df14a50

View file

@ -0,0 +1,16 @@
project(imgui)
set(SRC
imgui/imgui_draw.cpp
imgui/imgui_tables.cpp
imgui/imgui_widgets.cpp
imgui/imgui.cpp
imgui/backends/imgui_impl_glfw.cpp
)
add_library(${PROJECT_NAME} ${SRC})
target_include_directories(${PROJECT_NAME}
PRIVATE ${OMIM_ROOT}/3party/glfw/include
PUBLIC ${OMIM_ROOT}/3party/imgui/imgui
PUBLIC .
)

1
3party/imgui/imgui Submodule

@ -0,0 +1 @@
Subproject commit 6982ce43f5b143c5dce5fab0ce07dd4867b705ae

@ -1 +1 @@
Subproject commit 30cc354fe37114ec7a0a4ed2192951690357c2ed
Subproject commit caade5a28aad86b92a4b5337a9dc70c4ba73c5eb

View file

@ -90,6 +90,19 @@ else()
message(FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME}")
endif()
if(${PLATFORM_MAC})
set(XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
# Metal language support
list(APPEND CMAKE_MODULE_PATH ${OMIM_ROOT}/3party/CMake-MetalShaderSupport/cmake)
include(CheckLanguage)
include(MetalShaderSupport)
check_language(Metal)
if(CMAKE_Metal_COMPILER)
enable_language(Metal)
endif()
endif()
# Sanitizer
if (PLATFORM_DESKTOP)
# https://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
@ -265,16 +278,6 @@ find_package(Threads REQUIRED)
# Scripts
if (NOT CMAKE_HOST_WIN32)
execute_process(
COMMAND "${OMIM_ROOT}/tools/unix/check_cert.sh"
RESULT_VARIABLE CheckCertResult
)
if (CheckCertResult)
message(FATAL_ERROR "Certificate check failed")
endif()
endif()
if (NOT PLATFORM_IPHONE AND NOT PLATFORM_ANDROID)
list(APPEND qt_components Core Network)
if (NOT SKIP_QT_GUI OR NOT SKIP_TESTS OR PYBINDINGS)
@ -394,6 +397,7 @@ if (PLATFORM_DESKTOP)
add_subdirectory(qt)
omim_add_tool_subdirectory(skin_generator)
endif()
add_subdirectory(dev_sandbox)
endif()
omim_add_test_subdirectory(qt_tstfrm)

View file

@ -1,5 +1,5 @@
<div align="center">
<img src="/qt/res/logo.png" height="100"/>
<img src="qt/res/logo.png" height="100"/>
</div>
<h1 align="center"">Organic Maps</h1>
@ -167,9 +167,8 @@ Please join our beta program, suggest your features, and report bugs:
- **Rate us on the [App Store](https://apps.apple.com/app/organic-maps/id1567437057)
and [Google Play](https://play.google.com/store/apps/details?id=app.organicmaps)**.
- **Star us on GitHub**.
- Report bugs or issues to [the issue tracker](https://github.com/organicmaps/organicmaps/issues).
- [Discuss](https://github.com/organicmaps/organicmaps/discussions/categories/ideas) ideas or propose feature requests.
- **Star us on Forgejo**.
- Report bugs or issues to [the issue tracker](https://git.omaps.dev/organicmaps/organicmaps/issues).
- Subscribe to our [Telegram Channel](https://t.me/OrganicMapsApp) or to the [[matrix] space](https://matrix.to/#/#organicmaps:matrix.org) for updates.
- Join our [Telegram Group](https://t.me/OrganicMaps) to discuss with other users.
- Присоединяйтесь к нашей [русскоязычной группе в Telegram](https://t.me/OrganicMapsRu) для обратной связи и помощи.
@ -179,7 +178,7 @@ and [Google Play](https://play.google.com/store/apps/details?id=app.organicmaps)
- Follow our updates in
[Mastodon](https://fosstodon.org/@organicmaps),
[Facebook](https://facebook.com/OrganicMaps),
[Twitter](https://twitter.com/OrganicMapsApp),
[X (Twitter)](https://x.com/OrganicMapsApp),
[Instagram](https://instagram.com/organicmaps.app/).
- Güncellemelerimizi [Instagram](https://instagram.com/organicmapstr/) üzerinden takip edin.

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Новыя дадзеныя OpenStreetMap ад 21 студзеня
Адлюстраванне абмежавання хуткасці ў рэжыме навігацыі
Android Auto: сартаванне метак, палепшаны запыты на дазвол месцазнаходжання
На карту дададзены вежы
• Дададзена настройка для адключэння спасылак на гатэлі з Kayak.com і магчымасць адмовы пры першым выкарыстанні
• Дададзены сербская (кірыліца) і латышская мовы
• Новыя дадзеныя OpenStreetMap ад 27 лютага
Магчымасць уручную расстаўляць прамежкавыя кропкі маршруту
Экспарт аднаго абранага трэка са спісу
Палепшаная маршрутызацыя для веласіпедыстаў
• Дададзена сістэмнае апавяшчэнне пры загрузцы карт, фонавыя загрузкі больш не перарываюцца
• Дададзены мігатлівы віджэт запісу трэка
…і шматлікае іншае на omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Neue OpenStreetMap-Daten vom 21. Januar
Anzeige eines Geschwindigkeitsbegrenzungsschildes im Navigationsmodus
Serbische (Kyrillisch) und Lettische Sprachen hinzugefügt
Android Auto: Lesezeichen sortieren, verbessertes Erlebnis bei der Anforderung von Standortberechtigungen
Turm-POIs hinzugefügt
• Eine Einstellung für Kayak.com-Hotellinks und eine Opt-out-Option bei der ersten Nutzung hinzugefügt.
• Neue OpenStreetMap-Daten vom 27. Februar
Möglichkeit, Zwischenroutenpunkte manuell zu arrangieren
Einen einzelnen ausgewählten Track aus der Liste teilen
Verbesserte Routenführung für Fahrräder
Beim Herunterladen von Karten eine Systembenachrichtigung anzeigen und Hintergrunddownloads nicht unterbrechen
• Ein blinkendes Trackaufzeichnungs-Widget hinzugefügt
…weitere Details unter omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a Track Recording indicator on the main screen
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Nuevos datos de OpenStreetMap del 21 de enero
Límite de velocidad en el modo de navegación
Añadidos idiomas serbio (cirílico) y letón
Android Auto: opción de ordenar marcadores, mejorada la experiencia al solicitar ubicación
Añadidos PDI de torres
• Añadidas opciones para enlaces de hotel de Kayak.com y de exclusión al primer uso
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…más detalles en omaps.org/news
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
Urtarrilaren 21ko OpenStreetMap-eko datu berriak
• Abiadura muga erakusten da nabigazio moduan
• Serbiera (zirilikoa) eta letoniera hizkuntzak gehitu dira
Android Auto: gogokoak ordena daitezke, kokapen permisuaren eskaeraren esperientzia hobetu da
• Dorreen interes puntuak gehitu dira
Kayak.com-eko hotelen estekak eta lehenengo erabileran ez erakusteko aukera gehitu dira
New OpenStreetMap data as of February 27
• Ability to manually arrange intermediate route points
• Share a single selected track from the list
Improved routing for bicycles
• Display a system notification when downloading maps and don't interrupt background downloads
Added a flashing Track Recording widget
zehaztasun gehiago omaps.org/news webgunean
more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Nouvelles données OpenStreetMap du 21 janvier
Afficher un panneau de limitation de vitesse en mode navigation
Ajout des langues serbe (cyrillique) et lettone
• Android Auto : trier les signets, expérience de demande d'autorisation de localisation améliorée
• Ajout de POI de tour
• Ajout d'un paramètre pour les liens d'hôtel Kayak.com et d'une option de désinscription lors de la première utilisation
• Nouvelles données OpenStreetMap du 27 février
Possibilité d'organiser manuellement les points d'itinéraire intermédiaires
Partager une seule piste sélectionnée dans la liste
• Amélioration du routage pour les vélos
• Afficher une notification système lors du téléchargement de cartes et ne pas interrompre les téléchargements en arrière-plan
• Ajout d'un widget d'enregistrement de piste clignotant
…plus de détails sur omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Nowe dane OpenStreetMap z 21 stycznia
Wyświetlanie znaku ograniczenia prędkości w trybie nawigacji
Dodano języki serbski (cyrylica) i łotewski
Android Auto: sortowanie zakładek, ulepszono prośbę o pozwolenie na lokalizację
• Dodano POI dla wieży
Dodano ustawienie dla linków do hoteli na Kayak.com oraz możliwość wyłączenia ich przy pierwszym uruchomieniu
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
• Display a system notification when downloading maps and don't interrupt background downloads
Added a flashing Track Recording widget
więcej szczegółów na omaps.org/news
more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Novos dados do OpenStreetMap de 21 de janeiro
Exibe um sinal de limite de velocidade no modo de navegação
Adicionados os idiomas sérvio (cirílico) e letão
Android Auto: classificar favoritos, experiência aprimorada de solicitação de permissão de localização
Adicionados POIs de torre
• Adicionada uma configuração para links de hotéis Kayak.com e uma opção de cancelamento de primeiro uso
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…mais detalhes em omaps.org/news
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Novos dados do OpenStreetMap a 21 de janeiro
Exibir um sinal de limite de velocidade no modo de navegação
Adicionados os idiomas sérvio (cirílico) e letão
Android Auto: classificar favoritos, experiência melhorada de pedido de permissão de localização
Adicionados POIs de torre
Foi adicionada uma configuração para o Kayak.com Hotel Links e uma opção de cancelamento de primeira utilização
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
Added a flashing Track Recording widget
…mais detalhes em omaps.org/news
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Новые данные OpenStreetMap от 21 января
Отображение ограничения скорости в режиме навигации
Android Auto: сортировка меток, улучшены запросы на разрешение местоположения
На карту добавлены башни
• Добавлена ​​настройка для отключения ссылок на отели с Kayak.com и возможность отказа при первом использовании
• Добавлены сербский (кириллица) и латышский языки
• Новые данные OpenStreetMap от 27 февраля
Возможность вручную расставлять промежуточные точки маршрута
Экспорт одного выбранного трека из списка
Улучшенная маршрутизация для велосипедистов
• Добавлено системное уведомление при загрузке карт, фоновые загрузки больше не прерываются
• Добавлен мигающий виджет записи трека
…и многое другое на omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• Нові дані OpenStreetMap від 21 січня
Знак перевищення швидкості підчас навігації
Додано перклади сербською (кирилиця) та латиською мовами
Android Auto: сортування міток, покращено процес запиту на отримання дозволу на розміщення
Вежі відображаються на мапі
• Додано налаштування для посилань до Kayak.com для готелів та демонструється запит при першому використанні
• Нові дані OpenStreetMap від 27 лютого
Можливість вручну розставляти проміжні точки маршруту
Експорт одного вибраного треку зі списку
Покращена маршрутизація для велосипедистів
Додано системне повідомлення під час завантаження карт, фонові завантаження більше не перериваються
• Додано миготливий віджет запису треку
…більше подробиць на omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1,8 +1,8 @@
• New OpenStreetMap data as of January 21
Dispay a speed limit sign in the navigation mode
Added Serbian (Cyrillic) and Latvian languages
Android Auto: sort bookmarks, improved location permission request experience
Added tower POIs
• Added a setting for Kayak.com Hotel Links and a first-use opt-out option
• New OpenStreetMap data as of February 27
Ability to manually arrange intermediate route points
Share a single selected track from the list
Improved routing for bicycles
Display a system notification when downloading maps and don't interrupt background downloads
• Added a flashing Track Recording widget
…more details at omaps.org/news

View file

@ -1 +1 @@
version: 2025.01.26-9-FDroid+25012609
version: 2025.03.02-7-FDroid+25030207

View file

@ -37,6 +37,7 @@
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<!--
Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt (including Foreground
@ -489,6 +490,13 @@
android:stopWithTask="false"
/>
<service
android:name=".downloader.DownloaderService"
android:foregroundServiceType="dataSync"
android:exported="false"
android:enabled="true"
android:stopWithTask="false"/>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${FILE_PROVIDER_PLACEHOLDER}"

View file

@ -22,11 +22,13 @@ set(SRC
app/organicmaps/vulkan/android_vulkan_context_factory.hpp
# JNI sources
app/organicmaps/sdk/search/DisplayedCategories.cpp
app/organicmaps/sdk/search/SearchEngine.cpp
app/organicmaps/sdk/search/SearchRecents.cpp
app/organicmaps/core/jni_helper.cpp
app/organicmaps/core/jni_java_methods.cpp
app/organicmaps/core/logging.cpp
app/organicmaps/bookmarks/data/BookmarkManager.cpp
app/organicmaps/DisplayedCategories.cpp
app/organicmaps/DownloadResourcesLegacyActivity.cpp
app/organicmaps/editor/Editor.cpp
app/organicmaps/editor/OpeningHours.cpp
@ -38,8 +40,6 @@ set(SRC
app/organicmaps/MapManager.cpp
app/organicmaps/MwmApplication.cpp
app/organicmaps/routing/RoutingOptions.cpp
app/organicmaps/SearchEngine.cpp
app/organicmaps/SearchRecents.cpp
app/organicmaps/settings/UnitLocale.cpp
app/organicmaps/settings/MapLanguageCode.cpp
app/organicmaps/sound/tts.cpp

View file

@ -1578,6 +1578,12 @@ Java_app_organicmaps_Framework_nativeAddRoutePoint(JNIEnv * env, jclass, jstring
frm()->GetRoutingManager().AddRoutePoint(std::move(data));
}
JNIEXPORT void JNICALL
Java_app_organicmaps_Framework_nativeRemoveRoutePoints(JNIEnv * env, jclass)
{
frm()->GetRoutingManager().RemoveRoutePoints();
}
JNIEXPORT void JNICALL
Java_app_organicmaps_Framework_nativeRemoveRoutePoint(JNIEnv * env, jclass,
jint markType, jint intermediateIndex)
@ -1627,6 +1633,13 @@ Java_app_organicmaps_Framework_nativeGetRoutePoints(JNIEnv * env, jclass)
});
}
JNIEXPORT void JNICALL
Java_app_organicmaps_Framework_nativeMoveRoutePoint(JNIEnv * env, jclass,
jint currentIndex, jint targetIndex)
{
frm()->GetRoutingManager().MoveRoutePoint(currentIndex, targetIndex);
}
JNIEXPORT jobject JNICALL
Java_app_organicmaps_Framework_nativeGetTransitRouteInfo(JNIEnv * env, jclass)
{

View file

@ -1,40 +0,0 @@
#include "Framework.hpp"
#include "search/result.hpp"
#include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/core/jni_java_methods.hpp"
using SearchRequest = search::QuerySaver::SearchRequest;
extern "C"
{
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchRecents_nativeGetList(JNIEnv * env, jclass thiz, jobject result)
{
auto const & items = g_framework->NativeFramework()->GetSearchAPI().GetLastSearchQueries();
if (items.empty())
return;
auto const listAddMethod = jni::ListBuilder::Instance(env).m_add;
for (SearchRequest const & item : items)
{
jni::TScopedLocalRef str(env, jni::ToJavaString(env, item.second));
env->CallBooleanMethod(result, listAddMethod, str.get());
}
}
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchRecents_nativeAdd(JNIEnv * env, jclass thiz, jstring locale, jstring query)
{
SearchRequest const sr(jni::ToNativeString(env, locale), jni::ToNativeString(env, query));
g_framework->NativeFramework()->GetSearchAPI().SaveSearchQuery(sr);
}
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchRecents_nativeClear(JNIEnv * env, jclass thiz)
{
g_framework->NativeFramework()->GetSearchAPI().ClearSearchHistory();
}
}

View file

@ -28,7 +28,7 @@ void InjectMetadata(JNIEnv * env, jclass const clazz, jobject const mapObject, o
//jobject CreatePopularity(JNIEnv * env, place_page::Info const & info)
//{
// static jclass const popularityClass =
// jni::GetGlobalClassRef(env, "app/organicmaps/search/Popularity");
// jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/Popularity");
// static jmethodID const popularityConstructor =
// jni::GetConstructorID(env, popularityClass, "(I)V");
// auto const popularityValue = info.GetPopularity();
@ -57,7 +57,7 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info, int mapObje
"Ljava/lang/String;" // appId
"Lapp/organicmaps/routing/RoutePointInfo;" // routePointInfo
"I" // openingMode
"Lapp/organicmaps/search/Popularity;" // popularity
"Lapp/organicmaps/sdk/search/Popularity;" // popularity
"Ljava/lang/String;" // description
"I" // roadWarnType
"[Ljava/lang/String;" // rawTypes
@ -105,7 +105,7 @@ jobject CreateBookmark(JNIEnv *env, const place_page::Info &info,
"(Lapp/organicmaps/bookmarks/data/FeatureId;JJLjava/lang/String;"
"Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;"
"Lapp/organicmaps/routing/RoutePointInfo;"
"ILapp/organicmaps/search/Popularity;Ljava/lang/String;"
"ILapp/organicmaps/sdk/search/Popularity;Ljava/lang/String;"
"[Ljava/lang/String;)V");
static jmethodID const featureCtorId =
jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V");

View file

@ -5,8 +5,7 @@
extern "C"
{
JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_search_DisplayedCategories_nativeGetKeys(JNIEnv * env, jclass clazz)
JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_search_DisplayedCategories_nativeGetKeys(JNIEnv * env, jclass)
{
::Framework * fr = g_framework->NativeFramework();
ASSERT(fr, ());

View file

@ -39,7 +39,7 @@ Results g_results;
// Timestamp of last search query. Results with older stamps are ignored.
jlong g_queryTimestamp;
// Implements 'NativeSearchListener' java interface.
// Implements 'SearchListener' java interface.
jobject g_javaListener;
jmethodID g_updateResultsId;
jmethodID g_endResultsId;
@ -52,7 +52,7 @@ jmethodID g_descriptionConstructor;
jclass g_popularityClass;
jmethodID g_popularityConstructor;
// Implements 'NativeMapSearchListener' java interface.
// Implements 'MapSearchListener' java interface.
jmethodID g_mapResultsMethod;
jclass g_mapResultClass;
jmethodID g_mapResultCtor;
@ -232,21 +232,21 @@ void OnBookmarksSearchResults(search::BookmarksSearchParams::Results results,
extern "C"
{
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchEngine_nativeInit(JNIEnv * env, jobject thiz)
Java_app_organicmaps_sdk_search_SearchEngine_nativeInit(JNIEnv * env, jobject thiz)
{
g_javaListener = env->NewGlobalRef(thiz);
// public void onResultsUpdate(@NonNull SearchResult[] results, long timestamp)
g_updateResultsId = jni::GetMethodID(env, g_javaListener, "onResultsUpdate",
"([Lapp/organicmaps/search/SearchResult;J)V");
"([Lapp/organicmaps/sdk/search/SearchResult;J)V");
// public void onResultsEnd(long timestamp)
g_endResultsId = jni::GetMethodID(env, g_javaListener, "onResultsEnd", "(J)V");
g_resultClass = jni::GetGlobalClassRef(env, "app/organicmaps/search/SearchResult");
g_resultClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/SearchResult");
g_resultConstructor = jni::GetConstructorID(
env, g_resultClass,
"(Ljava/lang/String;Lapp/organicmaps/search/SearchResult$Description;DD[I[I"
"Lapp/organicmaps/search/Popularity;)V");
"(Ljava/lang/String;Lapp/organicmaps/sdk/search/SearchResult$Description;DD[I[I"
"Lapp/organicmaps/sdk/search/Popularity;)V");
g_suggestConstructor = jni::GetConstructorID(env, g_resultClass, "(Ljava/lang/String;Ljava/lang/String;DD[I[I)V");
g_descriptionClass = jni::GetGlobalClassRef(env, "app/organicmaps/search/SearchResult$Description");
g_descriptionClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/SearchResult$Description");
/*
Description(FeatureId featureId, String featureType, String region, Distance distance,
String description, int openNow, int minutesUntilOpen, int minutesUntilClosed,
@ -257,12 +257,12 @@ extern "C"
"Ljava/lang/String;Ljava/lang/String;Lapp/organicmaps/util/Distance;"
"Ljava/lang/String;IIIZ)V");
g_popularityClass = jni::GetGlobalClassRef(env, "app/organicmaps/search/Popularity");
g_popularityClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/Popularity");
g_popularityConstructor = jni::GetConstructorID(env, g_popularityClass, "(I)V");
g_mapResultsMethod = jni::GetMethodID(env, g_javaListener, "onMapSearchResults",
"([Lapp/organicmaps/search/NativeMapSearchListener$Result;JZ)V");
g_mapResultClass = jni::GetGlobalClassRef(env, "app/organicmaps/search/NativeMapSearchListener$Result");
"([Lapp/organicmaps/sdk/search/MapSearchListener$Result;JZ)V");
g_mapResultClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/MapSearchListener$Result");
g_mapResultCtor = jni::GetConstructorID(env, g_mapResultClass, "(Ljava/lang/String;Ljava/lang/String;)V");
g_updateBookmarksResultsId =
@ -271,7 +271,7 @@ extern "C"
jni::GetMethodID(env, g_javaListener, "onBookmarkSearchResultsEnd", "([JJ)V");
}
JNIEXPORT jboolean JNICALL Java_app_organicmaps_search_SearchEngine_nativeRunSearch(
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearch(
JNIEnv * env, jclass clazz, jbyteArray bytes, jboolean isCategory,
jstring lang, jlong timestamp, jboolean hasPosition, jdouble lat, jdouble lon)
{
@ -288,7 +288,7 @@ extern "C"
return searchStarted;
}
JNIEXPORT void JNICALL Java_app_organicmaps_search_SearchEngine_nativeRunInteractiveSearch(
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunInteractiveSearch(
JNIEnv * env, jclass clazz, jbyteArray bytes, jboolean isCategory,
jstring lang, jlong timestamp, jboolean isMapAndTable, jboolean hasPosition, jdouble lat, jdouble lon)
{
@ -321,7 +321,7 @@ extern "C"
}
}
JNIEXPORT void JNICALL Java_app_organicmaps_search_SearchEngine_nativeRunSearchMaps(
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearchMaps(
JNIEnv * env, jclass clazz, jbyteArray bytes, jstring lang, jlong timestamp)
{
storage::DownloaderSearchParams params{
@ -334,7 +334,7 @@ extern "C"
g_queryTimestamp = timestamp;
}
JNIEXPORT jboolean JNICALL Java_app_organicmaps_search_SearchEngine_nativeRunSearchInBookmarks(
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearchInBookmarks(
JNIEnv * env, jclass clazz, jbyteArray query, jlong catId, jlong timestamp)
{
search::BookmarksSearchParams params{
@ -350,25 +350,25 @@ extern "C"
}
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchEngine_nativeShowResult(JNIEnv * env, jclass clazz, jint index)
Java_app_organicmaps_sdk_search_SearchEngine_nativeShowResult(JNIEnv * env, jclass clazz, jint index)
{
g_framework->NativeFramework()->ShowSearchResult(g_results[index]);
}
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchEngine_nativeCancelInteractiveSearch(JNIEnv * env, jclass clazz)
Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelInteractiveSearch(JNIEnv * env, jclass clazz)
{
g_framework->NativeFramework()->GetSearchAPI().CancelSearch(search::Mode::Viewport);
}
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchEngine_nativeCancelEverywhereSearch(JNIEnv * env, jclass clazz)
Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelEverywhereSearch(JNIEnv * env, jclass clazz)
{
g_framework->NativeFramework()->GetSearchAPI().CancelSearch(search::Mode::Everywhere);
}
JNIEXPORT void JNICALL
Java_app_organicmaps_search_SearchEngine_nativeCancelAllSearches(JNIEnv * env, jclass clazz)
Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelAllSearches(JNIEnv * env, jclass clazz)
{
g_framework->NativeFramework()->GetSearchAPI().CancelAllSearches();
}

View file

@ -0,0 +1,37 @@
#include "app/organicmaps/Framework.hpp"
#include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/core/jni_java_methods.hpp"
#include "search/result.hpp"
using SearchRequest = search::QuerySaver::SearchRequest;
extern "C"
{
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchRecents_nativeGetList(JNIEnv * env, jclass, jobject result)
{
auto const & items = g_framework->NativeFramework()->GetSearchAPI().GetLastSearchQueries();
if (items.empty())
return;
auto const listAddMethod = jni::ListBuilder::Instance(env).m_add;
for (SearchRequest const & item : items)
{
jni::TScopedLocalRef str(env, jni::ToJavaString(env, item.second));
env->CallBooleanMethod(result, listAddMethod, str.get());
}
}
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchRecents_nativeAdd(JNIEnv * env, jclass, jstring locale,
jstring query)
{
SearchRequest const sr(jni::ToNativeString(env, locale), jni::ToNativeString(env, query));
g_framework->NativeFramework()->GetSearchAPI().SaveSearchQuery(sr);
}
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchRecents_nativeClear(JNIEnv * env, jclass)
{
g_framework->NativeFramework()->GetSearchAPI().ClearSearchHistory();
}
}

View file

@ -49,6 +49,12 @@ Java_app_organicmaps_util_StringUtils_nativeFilterContainsNormalized(JNIEnv * en
return jni::ToJavaStringArray(env, filtered);
}
JNIEXPORT jint JNICALL Java_app_organicmaps_util_StringUtils_nativeFormatSpeed(
JNIEnv * env, jclass thiz, jdouble metersPerSecond)
{
return measurement_utils::FormatSpeed(metersPerSecond, measurement_utils::GetMeasurementUnits());
}
JNIEXPORT jobject JNICALL Java_app_organicmaps_util_StringUtils_nativeFormatSpeedAndUnits(
JNIEnv * env, jclass thiz, jdouble metersPerSecond)
{

View file

@ -390,7 +390,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
mProgress.setProgressCompat(0, true);
mCountryDownloadListenerSlot = MapManager.nativeSubscribe(mCountryDownloadListener);
MapManager.nativeDownload(mCurrentCountry);
MapManager.startDownload(mCurrentCountry);
setAction(PROCEED_TO_MAP);
}
else

View file

@ -333,11 +333,20 @@ public class Framework
public static native int nativeGetBestRouter(double srcLat, double srcLon,
double dstLat, double dstLon);
public static void addRoutePoint(RouteMarkData point)
{
Framework.nativeAddRoutePoint(point.mTitle, point.mSubtitle, point.mPointType,
point.mIntermediateIndex, point.mIsMyPosition,
point.mLat, point.mLon);
}
public static native void nativeAddRoutePoint(String title, String subtitle,
@RoutePointInfo.RouteMarkType int markType,
int intermediateIndex, boolean isMyPosition,
double lat, double lon);
public static native void nativeRemoveRoutePoints();
public static native void nativeRemoveRoutePoint(@RoutePointInfo.RouteMarkType int markType,
int intermediateIndex);
@ -346,6 +355,9 @@ public class Framework
public static native boolean nativeCouldAddIntermediatePoint();
@NonNull
public static native RouteMarkData[] nativeGetRoutePoints();
public static native void nativeMoveRoutePoint(int currentIndex, int targetIndex);
@NonNull
public static native TransitRouteInfo nativeGetTransitRouteInfo();
/**

View file

@ -77,7 +77,7 @@ import app.organicmaps.maplayer.MapButtonsViewModel;
import app.organicmaps.maplayer.ToggleMapLayerFragment;
import app.organicmaps.maplayer.isolines.IsolinesManager;
import app.organicmaps.maplayer.isolines.IsolinesState;
import app.organicmaps.maplayer.subway.SubwayManager;
import app.organicmaps.routing.ManageRouteBottomSheet;
import app.organicmaps.routing.NavigationController;
import app.organicmaps.routing.NavigationService;
import app.organicmaps.routing.RoutePointInfo;
@ -89,7 +89,7 @@ import app.organicmaps.routing.RoutingPlanFragment;
import app.organicmaps.routing.RoutingPlanInplaceController;
import app.organicmaps.search.FloatingSearchToolbarController;
import app.organicmaps.search.SearchActivity;
import app.organicmaps.search.SearchEngine;
import app.organicmaps.sdk.search.SearchEngine;
import app.organicmaps.search.SearchFragment;
import app.organicmaps.settings.DrivingOptionsActivity;
import app.organicmaps.settings.RoadType;
@ -150,6 +150,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
public static final String EXTRA_TRACK_ID = "track_id";
public static final String EXTRA_UPDATE_THEME = "update_theme";
private static final String EXTRA_CONSUMED = "mwm.extra.intent.processed";
private boolean mPreciseLocationDialogShown = false;
private static final String[] DOCKED_FRAGMENTS = { SearchFragment.class.getName(),
DownloaderFragment.class.getName(),
@ -157,7 +158,11 @@ public class MwmActivity extends BaseMwmFragmentActivity
EditorHostFragment.class.getName(),
ReportFragment.class.getName() };
public static final int REQ_CODE_DRIVING_OPTIONS = 6;
public final ActivityResultLauncher<Intent> startDrivingOptionsForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult ->
{
if( activityResult.getResultCode() == Activity.RESULT_OK)
rebuildLastRoute();
});
private static final String MAIN_MENU_ID = "MAIN_MENU_BOTTOM_SHEET";
private static final String LAYERS_MENU_ID = "LAYERS_MENU_BOTTOM_SHEET";
@ -229,6 +234,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
@NonNull
private DisplayManager mDisplayManager;
ManageRouteBottomSheet mManageRouteBottomSheet;
private boolean mRemoveDisplayListener = true;
private int mLastUiMode = Configuration.UI_MODE_TYPE_UNDEFINED;
@ -586,14 +593,14 @@ public class MwmActivity extends BaseMwmFragmentActivity
ViewCompat.setOnApplyWindowInsetsListener(mPointChooser, (view, windowInsets) -> {
UiUtils.setViewInsetsPaddingBottom(mPointChooser, windowInsets);
UiUtils.setViewInsetsPaddingNoBottom(mPointChooserToolbar, windowInsets);
final int trackRecorderOffset = TrackRecorder.nativeIsTrackRecordingEnabled() ? UiUtils.dimen(this, R.dimen.map_button_size) : 0;
mNavBarHeight = isFullscreen() ? 0 : windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom;
// For the first loading, set compass top margin to status bar size
// The top inset will be then be updated by the routing controller
if (mCurrentWindowInsets == null)
updateCompassOffset(windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).top, windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).right);
else
updateCompassOffset(-1, windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).right);
{
updateCompassOffset(trackRecorderOffset + windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).top, windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).right);
}
refreshLightStatusBar();
updateBottomWidgetsOffset(windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).left);
mCurrentWindowInsets = windowInsets;
@ -614,7 +621,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (!mIsTabletLayout)
{
mRoutingPlanInplaceController = new RoutingPlanInplaceController(this, this, this);
mRoutingPlanInplaceController = new RoutingPlanInplaceController(this, startDrivingOptionsForResult, this, this);
removeCurrentFragment(false);
}
@ -691,6 +698,16 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
}
/** Hides/shows UI while keeping state
* @param isUiHidden True to hide the UI
**/
public void hideOrShowUIWithoutClosingPlacePage(boolean isUiHidden)
{
// Used instead of closeBottomSheet to preserve state and hide instantly
UiUtils.showIf(!isUiHidden, findViewById(R.id.place_page_container_fragment));
mMapButtonsViewModel.setButtonsHidden(isUiHidden);
}
private void showSearchToolbar()
{
mSearchController.show();
@ -800,6 +817,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
showBottomSheet(MAIN_MENU_ID);
}
case help -> showHelp();
case trackRecordingStatus -> showTrackSaveDialog();
}
}
@ -1018,18 +1036,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
mPowerSaveDisclaimerShown = savedInstanceState.getBoolean(POWER_SAVE_DISCLAIMER_SHOWN, false);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
return;
if (requestCode == REQ_CODE_DRIVING_OPTIONS)
rebuildLastRoute();
}
private void rebuildLastRoute()
{
RoutingController.get().attach(this);
@ -1498,14 +1504,30 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (mCurrentWindowInsets == null) {
return;
}
int offset = mCurrentWindowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).top;
int offsetY = mCurrentWindowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).top;
int offsetX = mCurrentWindowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).right;
if (show && mRoutingPlanInplaceController != null)
{
final int height = mRoutingPlanInplaceController.calcHeight();
if (height != 0)
offset = height;
offsetY = height;
}
updateCompassOffset(offset);
final int orientation = getResources().getConfiguration().orientation;
final boolean isTrackRecordingEnabled = TrackRecorder.nativeIsTrackRecordingEnabled();
if (isTrackRecordingEnabled && (orientation != Configuration.ORIENTATION_LANDSCAPE))
offsetY += UiUtils.dimen(this, R.dimen.map_button_size);
if (orientation == Configuration.ORIENTATION_LANDSCAPE)
{
if (show)
{
final boolean isSmallScreen = UiUtils.getDisplayTotalHeight(this) < UiUtils.dimen(this, R.dimen.dp_400);
if (!isSmallScreen || TrackRecorder.nativeIsTrackRecordingEnabled())
offsetX += UiUtils.dimen(this, R.dimen.map_button_size);
}
else if (isTrackRecordingEnabled)
offsetY += UiUtils.dimen(this, R.dimen.map_button_size);
}
updateCompassOffset(offsetY, offsetX);
}
@Override
@ -1672,12 +1694,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
mRoutingPlanInplaceController.showDrivingOptionView();
}
@Override
public boolean isSubwayEnabled()
{
return SubwayManager.from(this).isEnabled();
}
@Override
public void onCommonBuildError(int lastResultCode, @NonNull String[] lastMissingMaps)
{
@ -1693,7 +1709,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
.setTitle(R.string.unable_to_calc_alert_title)
.setMessage(R.string.unable_to_calc_alert_subtitle)
.setPositiveButton(R.string.settings, (dialog, which) -> DrivingOptionsActivity.start(this))
.setPositiveButton(R.string.settings, (dialog, which) -> DrivingOptionsActivity.start(this, startDrivingOptionsForResult))
.setNegativeButton(R.string.cancel, null)
.setOnDismissListener(dialog -> mAlertDialog = null)
.show();
@ -1806,7 +1822,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
// Check for any location permissions.
if (!LocationUtils.checkCoarseLocationPermission(this))
if (!LocationUtils.checkLocationPermission(this))
{
Logger.w(LOCATION_TAG, "Permissions ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION are not granted");
// Calls onMyPositionModeChanged(NOT_FOLLOW_NO_POSITION).
@ -1944,12 +1960,50 @@ public class MwmActivity extends BaseMwmFragmentActivity
mLocationPermissionRequestedForRecording = false;
if (LocationUtils.checkLocationPermission(this))
{
final boolean hasFineLocationPermission = LocationUtils.checkFineLocationPermission(this);
if (LocationState.getMode() == LocationState.NOT_FOLLOW_NO_POSITION)
LocationState.nativeSwitchToNextMode();
if (requestedForRecording && LocationUtils.checkFineLocationPermission(this))
if (requestedForRecording && hasFineLocationPermission)
startTrackRecording();
if (hasFineLocationPermission)
{
Logger.i(LOCATION_TAG, "ACCESS_FINE_LOCATION permission granted");
}
else
{
Logger.w(LOCATION_TAG, "Only ACCESS_COARSE_LOCATION permission granted");
if (mLocationErrorDialog != null && mLocationErrorDialog.isShowing())
{
Logger.w(LOCATION_TAG, "Don't show 'Precise Location denied' dialog because another dialog is in progress");
return;
}
if (!mPreciseLocationDialogShown)
{
mPreciseLocationDialogShown = true;
final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
.setTitle("" + getString(R.string.limited_accuracy))
.setMessage(R.string.precise_location_is_disabled_long_text)
.setNegativeButton(R.string.close, (dialog, which) -> dialog.dismiss())
.setCancelable(true)
.setOnDismissListener(dialog -> mLocationErrorDialog = null);
final Intent intent = Utils.makeSystemLocationSettingIntent(this);
if (intent != null)
{
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
builder.setPositiveButton(R.string.location_settings, (dialog, which) -> startActivity(intent));
}
mLocationErrorDialog = builder.show();
}
else
{
Toast.makeText(this, R.string.precise_location_is_disabled_long_text, Toast.LENGTH_LONG).show();
}
}
return;
}
@ -2100,6 +2154,15 @@ public class MwmActivity extends BaseMwmFragmentActivity
RoutingController.get().start();
}
@Override
public void onManageRouteOpen()
{
// Create and show 'Manage Route' Bottom Sheet panel.
mManageRouteBottomSheet = new ManageRouteBottomSheet();
mManageRouteBottomSheet.setCancelable(false);
mManageRouteBottomSheet.show(getSupportFragmentManager(), "ManageRouteBottomSheet");
}
private boolean requestBatterySaverPermission()
{
if (!PowerManagment.isSystemPowerSaveMode(this))
@ -2277,6 +2340,11 @@ public class MwmActivity extends BaseMwmFragmentActivity
requestPostNotificationsPermission();
if (mCurrentWindowInsets != null)
{
final int offset = mCurrentWindowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).top;
updateCompassOffset(offset + UiUtils.dimen(this, R.dimen.map_button_size));
}
Toast.makeText(this, R.string.track_recording, Toast.LENGTH_SHORT).show();
TrackRecordingService.startForegroundService(getApplicationContext());
mMapButtonsViewModel.setTrackRecorderState(true);
@ -2285,6 +2353,18 @@ public class MwmActivity extends BaseMwmFragmentActivity
private void stopTrackRecording()
{
if (mCurrentWindowInsets != null)
{
int offsetY = mCurrentWindowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).top;
final int offsetX = mCurrentWindowInsets.getInsets(WindowInsetsCompat.Type.systemBars()).right;
if (RoutingController.get().isPlanning() && mRoutingPlanInplaceController != null)
{
final int height = mRoutingPlanInplaceController.calcHeight();
if (height != 0)
offsetY = height;
}
updateCompassOffset(offsetY, offsetX);
}
TrackRecordingService.stopService(getApplicationContext());
mMapButtonsViewModel.setTrackRecorderState(false);
}
@ -2319,15 +2399,15 @@ public class MwmActivity extends BaseMwmFragmentActivity
mAlertDialog = new StackedButtonsDialog.Builder(this)
.setTitle(R.string.track_recording_alert_title)
.setCancelable(false)
// Negative/Positive/Neutral doesn't do not have the usual meaning here.
.setPositiveButton(R.string.continue_recording, (dialog, which) -> {
// Negative/Positive/Neutral do not have their usual meaning here.
.setNegativeButton(R.string.continue_recording, (dialog, which) -> {
mAlertDialog = null;
})
.setNeutralButton(R.string.stop_without_saving, (dialog, which) -> {
stopTrackRecording();
mAlertDialog = null;
})
.setNegativeButton(R.string.save, (dialog, which) -> {
.setPositiveButton(R.string.save, (dialog, which) -> {
saveAndStopTrackRecording();
mAlertDialog = null;
})

View file

@ -16,13 +16,14 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ProcessLifecycleOwner;
import java.io.IOException;
import java.lang.ref.WeakReference;
import app.organicmaps.background.OsmUploadWork;
import app.organicmaps.downloader.Android7RootCertificateWorkaround;
import app.organicmaps.downloader.DownloaderNotifier;
import app.organicmaps.bookmarks.data.BookmarkManager;
import app.organicmaps.display.DisplayManager;
import app.organicmaps.downloader.CountryItem;
import app.organicmaps.downloader.MapManager;
import app.organicmaps.downloader.Android7RootCertificateWorkaround;
import app.organicmaps.downloader.DownloaderNotifier;
import app.organicmaps.location.LocationHelper;
import app.organicmaps.location.LocationState;
import app.organicmaps.location.SensorHelper;
@ -33,7 +34,7 @@ import app.organicmaps.maplayer.subway.SubwayManager;
import app.organicmaps.maplayer.traffic.TrafficManager;
import app.organicmaps.routing.NavigationService;
import app.organicmaps.routing.RoutingController;
import app.organicmaps.search.SearchEngine;
import app.organicmaps.sdk.search.SearchEngine;
import app.organicmaps.settings.StoragePathManager;
import app.organicmaps.sound.TtsPlayer;
import app.organicmaps.util.Config;
@ -46,10 +47,6 @@ import app.organicmaps.util.Utils;
import app.organicmaps.util.log.Logger;
import app.organicmaps.util.log.LogsManager;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.List;
public class MwmApplication extends Application implements Application.ActivityLifecycleCallbacks
{
@NonNull
@ -78,9 +75,6 @@ public class MwmApplication extends Application implements Application.ActivityL
private volatile boolean mFrameworkInitialized;
private volatile boolean mPlatformInitialized;
@NonNull
private final MapManager.StorageCallback mStorageCallbacks = new StorageCallbackImpl();
@Nullable
private WeakReference<Activity> mTopActivity;
@ -127,6 +121,9 @@ public class MwmApplication extends Application implements Application.ActivityL
return (MwmApplication) context.getApplicationContext();
}
@NonNull
public static MwmApplication sInstance;
@NonNull
public static SharedPreferences prefs(@NonNull Context context)
{
@ -138,6 +135,9 @@ public class MwmApplication extends Application implements Application.ActivityL
{
super.onCreate();
Logger.i(TAG, "Initializing application");
sInstance = this;
LogsManager.INSTANCE.initFileLogging(this);
Android7RootCertificateWorkaround.initializeIfNeeded(this);
@ -230,8 +230,6 @@ public class MwmApplication extends Application implements Application.ActivityL
nativeInitFramework(onComplete);
MapManager.nativeSubscribe(mStorageCallbacks);
initNativeStrings();
ThemeSwitcher.INSTANCE.initialize(this);
SearchEngine.INSTANCE.initialize();
@ -363,25 +361,4 @@ public class MwmApplication extends Application implements Application.ActivityL
mLocationHelper.stop();
}
}
private class StorageCallbackImpl implements MapManager.StorageCallback
{
@Override
public void onStatusChanged(List<MapManager.StorageCallbackData> data)
{
for (MapManager.StorageCallbackData item : data)
if (item.isLeafNode && item.newStatus == CountryItem.STATUS_FAILED)
{
if (MapManager.nativeIsAutoretryFailed())
{
DownloaderNotifier.notifyDownloadFailed(MwmApplication.this, item.countryId);
}
return;
}
}
@Override
public void onProgress(String countryId, long localSize, long remoteSize) {}
}
}

View file

@ -91,7 +91,7 @@ public class SplashActivity extends AppCompatActivity
super.onResume();
if (mCanceled)
return;
if (!Config.isLocationRequested() && !LocationUtils.checkCoarseLocationPermission(this))
if (!Config.isLocationRequested() && !LocationUtils.checkLocationPermission(this))
{
Logger.d(TAG, "Requesting location permissions");
mPermissionRequest.launch(new String[]{

View file

@ -15,6 +15,7 @@ import android.view.View;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
@ -57,9 +58,6 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
{
private static final String TAG = BookmarkCategoriesFragment.class.getSimpleName();
static final int REQ_CODE_DELETE_CATEGORY = 102;
static final int REQ_CODE_IMPORT_DIRECTORY = 103;
private static final int MAX_CATEGORY_NAME_LENGTH = 60;
public static final String BOOKMARKS_CATEGORIES_MENU_ID = "BOOKMARKS_CATEGORIES_BOTTOM_SHEET";
@ -75,6 +73,22 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
@NonNull
private DataChangedListener mCategoriesAdapterObserver;
private final ActivityResultLauncher<Intent> startBookmarkListForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
if( activityResult.getResultCode() == Activity.RESULT_OK)
onDeleteActionSelected(getSelectedCategory());
});
private final ActivityResultLauncher<Intent> startImportDirectoryForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult ->
{
if( activityResult.getResultCode() == Activity.RESULT_OK)
onImportDirectoryResult(activityResult.getData());
});
private final ActivityResultLauncher<Intent> startBookmarkSettingsForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
// not handled at the moment
});
@Override
@LayoutRes
protected int getLayoutRes()
@ -259,7 +273,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
PackageManager packageManager = requireActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null)
startActivityForResult(intent, REQ_CODE_IMPORT_DIRECTORY);
startImportDirectoryForResult.launch(intent);
else
showNoFileManagerError();
}
@ -275,7 +289,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
public void onItemClick(@NonNull View v, @NonNull BookmarkCategory category)
{
mSelectedCategory = category;
BookmarkListActivity.startForResult(this, category);
BookmarkListActivity.startForResult(this, startBookmarkListForResult, category);
}
@Override
@ -303,54 +317,42 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
private void onSettingsActionSelected(@NonNull BookmarkCategory category)
{
BookmarkCategorySettingsActivity.startForResult(this, category);
BookmarkCategorySettingsActivity.startForResult(this, startBookmarkSettingsForResult, category);
}
@Override
public final void onActivityResult(int requestCode, int resultCode, Intent data)
private void onImportDirectoryResult(Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
return;
switch (requestCode)
{
case REQ_CODE_DELETE_CATEGORY -> onDeleteActionSelected(getSelectedCategory());
case REQ_CODE_IMPORT_DIRECTORY ->
{
if (data == null)
throw new AssertionError("Data is null");
if (data == null)
throw new AssertionError("Data is null");
final Context context = requireActivity();
final Uri rootUri = data.getData();
final ProgressDialog dialog = new ProgressDialog(context, R.style.MwmTheme_ProgressDialog);
dialog.setMessage(getString(R.string.wait_several_minutes));
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
Logger.d(TAG, "Importing bookmarks from " + rootUri);
MwmApplication app = MwmApplication.from(context);
final File tempDir = new File(StorageUtils.getTempPath(app));
final ContentResolver resolver = context.getContentResolver();
ThreadPool.getStorage().execute(() -> {
AtomicInteger found = new AtomicInteger(0);
StorageUtils.listContentProviderFilesRecursively(
final Context context = requireActivity();
final Uri rootUri = data.getData();
final ProgressDialog dialog = new ProgressDialog(context, R.style.MwmTheme_ProgressDialog);
dialog.setMessage(getString(R.string.wait_several_minutes));
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
Logger.d(TAG, "Importing bookmarks from " + rootUri);
MwmApplication app = MwmApplication.from(context);
final File tempDir = new File(StorageUtils.getTempPath(app));
final ContentResolver resolver = context.getContentResolver();
ThreadPool.getStorage().execute(() -> {
AtomicInteger found = new AtomicInteger(0);
StorageUtils.listContentProviderFilesRecursively(
resolver, rootUri, uri -> {
if (BookmarkManager.INSTANCE.importBookmarksFile(resolver, uri, tempDir))
found.incrementAndGet();
});
UiThread.run(() -> {
if (dialog.isShowing())
dialog.dismiss();
int found_val = found.get();
String message = context.getResources().getQuantityString(
UiThread.run(() -> {
if (dialog.isShowing())
dialog.dismiss();
int found_val = found.get();
String message = context.getResources().getQuantityString(
R.plurals.bookmarks_detect_message, found_val, found_val);
Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show();
});
});
}
default -> throw new AssertionError("Invalid requestCode: " + requestCode);
}
Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show();
});
});
}
@Override

View file

@ -2,6 +2,7 @@ package app.organicmaps.bookmarks;
import android.content.Intent;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
@ -11,7 +12,6 @@ import app.organicmaps.bookmarks.data.BookmarkCategory;
public class BookmarkCategorySettingsActivity extends BaseMwmFragmentActivity
{
public static final int REQUEST_CODE = 107;
public static final String EXTRA_BOOKMARK_CATEGORY = "bookmark_category";
@Override
@ -32,11 +32,11 @@ public class BookmarkCategorySettingsActivity extends BaseMwmFragmentActivity
return BookmarkCategorySettingsFragment.class;
}
public static void startForResult(@NonNull Fragment fragment,
public static void startForResult(@NonNull Fragment fragment, ActivityResultLauncher<Intent> startBookmarkSettingsForResult,
@NonNull BookmarkCategory category)
{
android.content.Intent intent = new Intent(fragment.requireActivity(), BookmarkCategorySettingsActivity.class)
.putExtra(EXTRA_BOOKMARK_CATEGORY, category);
fragment.startActivityForResult(intent, REQUEST_CODE);
startBookmarkSettingsForResult.launch(intent);
}
}

View file

@ -3,6 +3,7 @@ package app.organicmaps.bookmarks;
import android.content.Intent;
import android.os.Bundle;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.StyleRes;
@ -57,11 +58,11 @@ public class BookmarkListActivity extends BaseToolbarActivity
return R.layout.bookmarks_activity;
}
static void startForResult(@NonNull Fragment fragment, @NonNull BookmarkCategory category)
static void startForResult(@NonNull Fragment fragment, ActivityResultLauncher<Intent> startBookmarkListForResult, @NonNull BookmarkCategory category)
{
Bundle args = new Bundle();
Intent intent = new Intent(fragment.requireActivity(), BookmarkListActivity.class);
intent.putExtra(BookmarksListFragment.EXTRA_CATEGORY, category);
fragment.startActivityForResult(intent, BookmarkCategoriesFragment.REQ_CODE_DELETE_CATEGORY);
startBookmarkListForResult.launch(intent);
}
}

View file

@ -14,6 +14,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -38,8 +39,8 @@ import app.organicmaps.bookmarks.data.KmlFileType;
import app.organicmaps.bookmarks.data.SortedBlock;
import app.organicmaps.bookmarks.data.Track;
import app.organicmaps.location.LocationHelper;
import app.organicmaps.search.NativeBookmarkSearchListener;
import app.organicmaps.search.SearchEngine;
import app.organicmaps.sdk.search.BookmarkSearchListener;
import app.organicmaps.sdk.search.SearchEngine;
import app.organicmaps.util.Graphics;
import app.organicmaps.util.SharingUtils;
import app.organicmaps.util.UiUtils;
@ -61,7 +62,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
implements BookmarkManager.BookmarksSharingListener,
BookmarkManager.BookmarksSortingListener,
BookmarkManager.BookmarksLoadingListener,
NativeBookmarkSearchListener,
BookmarkSearchListener,
ChooseBookmarksSortingTypeFragment.ChooseSortingTypeListener,
MenuBottomSheetFragment.MenuBottomSheetInterface
{
@ -74,6 +75,15 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
private static final String OPTIONS_MENU_ID = "OPTIONS_MENU_BOTTOM_SHEET";
private ActivityResultLauncher<SharingUtils.SharingIntent> shareLauncher;
private final ActivityResultLauncher<Intent> startBookmarkListForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
System.out.println("resultCode: " + activityResult.getResultCode());
handleActivityResult();
});
private final ActivityResultLauncher<Intent> startBookmarkSettingsForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
System.out.println("resultCode: " + activityResult.getResultCode());
handleActivityResult();
});
@SuppressWarnings("NotNullFieldNotInitialized")
@NonNull
@ -140,7 +150,9 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
BookmarkCollectionAdapter adapter = new BookmarkCollectionAdapter(getCategoryOrThrow(),
mCategoryItems);
adapter.setOnClickListener((v, item) -> BookmarkListActivity.startForResult(this, item));
adapter.setOnClickListener((v, item) -> {
BookmarkListActivity.startForResult(this, startBookmarkListForResult, item);
});
return adapter;
}
@ -756,7 +768,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
private void onSettingsOptionSelected()
{
BookmarkCategorySettingsActivity.startForResult(this, mCategoryDataSource.getData());
BookmarkCategorySettingsActivity.startForResult(this, startBookmarkSettingsForResult, mCategoryDataSource.getData());
}
private void onDeleteOptionSelected()
@ -812,11 +824,8 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
BookmarksSharingHelper.INSTANCE.onPreparedFileForSharing(requireActivity(), shareLauncher, result);
}
@Override
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public void onActivityResult(int requestCode, int resultCode, Intent data)
private void handleActivityResult()
{
super.onActivityResult(requestCode, resultCode, data);
getBookmarkListAdapter().notifyDataSetChanged();
ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar();
actionBar.setTitle(mCategoryDataSource.getData().getName());

View file

@ -11,7 +11,7 @@ import androidx.core.os.ParcelCompat;
import app.organicmaps.Framework;
import app.organicmaps.routing.RoutePointInfo;
import app.organicmaps.search.Popularity;
import app.organicmaps.sdk.search.Popularity;
import app.organicmaps.util.Constants;
// TODO consider refactoring to remove hack with MapObject unmarshalling itself and Bookmark at the same time.

View file

@ -12,7 +12,7 @@ import androidx.core.os.ParcelCompat;
import app.organicmaps.Framework;
import app.organicmaps.routing.RoutePointInfo;
import app.organicmaps.search.Popularity;
import app.organicmaps.sdk.search.Popularity;
import app.organicmaps.util.Utils;
import app.organicmaps.widget.placepage.PlacePageData;

View file

@ -109,7 +109,7 @@ class DownloaderScreen extends BaseScreen
for (final var item : mMissingMaps.entrySet())
{
item.getValue().update();
MapManager.nativeDownload(item.getKey());
MapManager.startDownload(item.getKey());
}
}

View file

@ -113,7 +113,7 @@ public class RequestPermissionsScreenWithNotification extends BaseScreen impleme
.setOngoing(true)
.setShowWhen(false)
.setOnlyAlertOnce(true)
.setSmallIcon(R.drawable.ic_my_location)
.setSmallIcon(R.drawable.ic_location_crosshair)
.setColor(ContextCompat.getColor(getCarContext(), R.color.notification))
.setContentTitle(getCarContext().getString(R.string.aa_request_permission_notification))
.setContentIntent(pendingIntent);

View file

@ -23,13 +23,13 @@ import app.organicmaps.car.SurfaceRenderer;
import app.organicmaps.car.screens.base.BaseMapScreen;
import app.organicmaps.car.util.UiHelpers;
import app.organicmaps.location.LocationHelper;
import app.organicmaps.search.NativeSearchListener;
import app.organicmaps.search.SearchEngine;
import app.organicmaps.search.SearchRecents;
import app.organicmaps.search.SearchResult;
import app.organicmaps.sdk.search.SearchListener;
import app.organicmaps.sdk.search.SearchEngine;
import app.organicmaps.sdk.search.SearchRecents;
import app.organicmaps.sdk.search.SearchResult;
import app.organicmaps.util.Language;
public class SearchOnMapScreen extends BaseMapScreen implements NativeSearchListener
public class SearchOnMapScreen extends BaseMapScreen implements SearchListener
{
private final int MAX_RESULTS_SIZE;

View file

@ -21,13 +21,13 @@ import app.organicmaps.bookmarks.data.MapObject;
import app.organicmaps.car.SurfaceRenderer;
import app.organicmaps.car.screens.base.BaseMapScreen;
import app.organicmaps.location.LocationHelper;
import app.organicmaps.search.NativeSearchListener;
import app.organicmaps.search.SearchEngine;
import app.organicmaps.search.SearchRecents;
import app.organicmaps.search.SearchResult;
import app.organicmaps.sdk.search.SearchListener;
import app.organicmaps.sdk.search.SearchEngine;
import app.organicmaps.sdk.search.SearchRecents;
import app.organicmaps.sdk.search.SearchResult;
import app.organicmaps.util.Language;
public class SearchScreen extends BaseMapScreen implements SearchTemplate.SearchCallback, NativeSearchListener
public class SearchScreen extends BaseMapScreen implements SearchTemplate.SearchCallback, SearchListener
{
private final int MAX_RESULTS_SIZE;

View file

@ -13,7 +13,7 @@ import androidx.car.app.model.ForegroundCarColorSpan;
import app.organicmaps.R;
import app.organicmaps.car.util.Colors;
import app.organicmaps.car.util.RoutingHelpers;
import app.organicmaps.search.SearchResult;
import app.organicmaps.sdk.search.SearchResult;
import java.util.ArrayList;
import java.util.List;

View file

@ -8,7 +8,7 @@ import androidx.car.app.suggestion.model.Suggestion;
import androidx.core.graphics.drawable.IconCompat;
import app.organicmaps.R;
import app.organicmaps.search.SearchRecents;
import app.organicmaps.sdk.search.SearchRecents;
import java.util.ArrayList;
import java.util.List;

Some files were not shown because too many files have changed in this diff Show more