Compare commits

..

1 Commits

Author SHA1 Message Date
Konstantin Pastbin
1fe3526bf4 [fdroid] Release version 2025.06.30-22
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-07-01 01:22:02 +07:00
1963 changed files with 92464 additions and 68265 deletions

4
.gitignore vendored
View File

@@ -27,10 +27,6 @@ data/edits.xml
data/World.mwm data/World.mwm
data/WorldCoasts.mwm data/WorldCoasts.mwm
# generated when running tests. NOT the lowercase 'testing' which should be kept.
Testing
!testing
# Compiled Python # Compiled Python
*.pyc *.pyc

View File

@@ -103,29 +103,12 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel") elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
add_definitions(-DRELEASE) add_definitions(-DRELEASE)
if (NOT MSVC) if (NOT MSVC)
add_compile_options(-Ofast $<$<CXX_COMPILER_ID:GNU>:-flto=auto>) # Also enables -ffast-math add_compile_options(-Ofast) # Also enables -ffast-math
endif() endif()
else() else()
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE}) message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
endif() endif()
if (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
add_compile_options(-fno-omit-frame-pointer)
endif()
# Linux GCC LTO plugin fix.
if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_TYPE MATCHES "^Rel"))
# To force errors if LTO was not enabled.
add_compile_options(-fno-fat-lto-objects)
# To fix ar and ranlib "plugin needed to handle lto object".
string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION})
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}/liblto_plugin.so)
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
endif()
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
if (PLATFORM_LINUX OR PLATFORM_ANDROID) if (PLATFORM_LINUX OR PLATFORM_ANDROID)
@@ -259,10 +242,6 @@ if (PLATFORM_DESKTOP)
add_subdirectory(qt) add_subdirectory(qt)
omim_add_tool_subdirectory(skin_generator) omim_add_tool_subdirectory(skin_generator)
endif() endif()
if (GENERATOR_TOOL)
add_compile_options(-march=native -mtune=native)
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
endif()
add_subdirectory(dev_sandbox) add_subdirectory(dev_sandbox)
endif() endif()

View File

@@ -7,11 +7,9 @@ CoMaps contributors:
(in alphabetic order) (in alphabetic order)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Bastian Greshake Tzovaras
clover sage clover sage
Harry Bond <me@hbond.xyz> Harry Bond <me@hbond.xyz>
vikiawv vikiawv
Yannik Bloscheck
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Organic Maps (formerly OMaps) contributors: Organic Maps (formerly OMaps) contributors:

163
README.md
View File

@@ -1,88 +1,62 @@
<!-- Navigation Bar --> <!--<div align="center">
<p align="center"> <img src="qt/res/logo.png" height="100"/>
<a href="https://codeberg.org/comaps#comaps">Project Intro</a> | </div>-->
<a href="https://codeberg.org/comaps/Governance#comaps-project-governance-docs">Governance</a> |
<a href="https://codeberg.org/comaps/Governance/src/branch/main/FAQ.md">FAQ</a> |
<a href="#contributing">Contribute</a> |
<a href="https://www.comaps.app/donate">Donate</a> |
<a href="https://codeberg.org/comaps#keep-connected">Keep Connected</a>
</p>
<div align="center" > <!-- a nav bar -->
<img src="docs/badges/logo.svg" width="150"> [Project Intro](https://codeberg.org/comaps#comaps)
</div> | [Governance](https://codeberg.org/comaps/Governance#comaps-project-governance-docs)
| [FAQ](https://codeberg.org/comaps/Governance/src/branch/main/FAQ.md)
| [Contribute](#contributing)
| [Donate](https://www.comaps.app/donate)
| [Keep Connected](https://codeberg.org/comaps#keep-connected)
# [CoMaps](https://comaps.app) Hike, Bike, Drive Offline Easy Map Navigation with Privacy
[
![GitHub Actions Workflow Android Status](https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github%2Fworkflows%2Fandroid-check.yaml?style=flat&label=Android%20Build&logo=android&logoColor=white)
](https://github.com/comaps/comaps/actions/workflows/android-check.yaml)
[
![GitHub Actions Workflow iOS Status](https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github%2Fworkflows%2Fios-check.yaml?style=flat&label=iOS%20Build&logo=apple&logoColor=white)
](https://github.com/comaps/comaps/actions/workflows/ios-check.yaml)
[
![Donate via OpenCollective](https://img.shields.io/opencollective/all/comaps?logo=opencollective&color=blue&label=Open%20Collective%20Donors)
](https://opencollective.com/comaps)
[
![Donate via Liberapay](https://img.shields.io/liberapay/patrons/CoMaps.svg?logo=liberapay&label=Liberapay%20Patrons&color=efcc00&)
](https://liberapay.com/CoMaps)
<div align="center">
<h1><a href="https://comaps.app/">CoMaps</a></h1>
<h2>Hike, Bike, Drive Offline - Easy Map Navigation with Privacy</h2>
</div>
<div align="center">
<p align="center">
<a href="https://codeberg.org/comaps/comaps/releases">
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License" style="width: 90%; max-width: 150px;"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge&color=588157" alt="Android Build Status" style="width: 90%; max-width: 170px;"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge&color=588157" alt="iOS Build Status" style="width: 90%; max-width: 145px;"/>
</a>
<a href="https://opencollective.com/comaps">
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors" style="width: 90%; max-width: 191px;"/>
</a>
<a href="https://liberapay.com/CoMaps">
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons" style="width: 90%; max-width: 160px;"/>
</a>
</p>
</div>
--- A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org) data and reinforced with commitment to transparency, privacy and being not-for-profit. CoMaps is a fork/spin-off of Organic Maps, which in turn is a fork of Maps.ME.
A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org), built for transparency, privacy, and not-for-profit values. A fork of Organic Maps, originally based on Maps.ME. There are apps for Android and iOS (and ARM MacOS).
An alpha Linux / MacOS Qt desktop version, which is also suitable for Linux phones.
**Available for:** Android, iOS, ARM macOS, and alpha Linux/macOS desktop builds (also usable on Linux phones). [<img src="docs/badges/apple-appstore.png" alt="App Store" width="160">](https://apps.apple.com/app/comaps/id6747180809)
[<img src="docs/badges/google-play.png" alt="Google Play" width="160">](https://play.google.com/store/apps/details?id=app.comaps.google)
[<img src="docs/badges/fdroid.png" alt="F-Droid" width="160">](https://f-droid.org/en/packages/app.comaps.fdroid/)
[<img src="docs/badges/codeberg.png" alt="Codeberg" width="160">](https://codeberg.org/comaps/comaps/releases)
<p align="center"> <p float="left">
<a href="https://apps.apple.com/app/comaps/id6747180809">
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/>
</a>
<a href="https://play.google.com/store/apps/details?id=app.comaps.google">
<img src="docs/badges/google-play.png" alt="Google Play" width="160"/>
</a>
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
</a>
<a href="https://codeberg.org/comaps/comaps/releases">
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
</a>
</p>
<!-- Screenshots -->
<p align="center">
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/5.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/6.png" width="180" />
</p> </p>
--- **Offline-focused**: Plan and navigate your trip abroad without the need for cellular service, search waypoints while on a distant hike, etc. All app functions are designed to work offline.
## ⚡️ Highlights **Respecting Privacy**: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
- **Offline-first**: Navigate without a connection **Simple and Polished**: Essential, easy to use features that just work.
- **Privacy-respecting**: No tracking, Ads or data collection
- **Lightweight**: Battery- and space-efficient
- **Simple**: Polished, user-focused interface
- **Community-built**: Free, open source, and collaborative
- **Transparent**: Open finances and governance
--- **Saves Your Battery and Space**: Doesnt drain your battery like other navigation apps. Compact maps save precious space on your phone.
## 🚀 Main Features **Free and Built by the Community**: People like you helped build the app by adding places to [OpenStreetMap](https://www.openstreetmap.org), testing and giving feedback on features and contributing their development skills and money.
**Open and Transparent Decision-making and Financials, Not-for-profit and Fully Open Source.**
### Main Features
- Downloadable detailed maps with places which are not available with Google Maps - Downloadable detailed maps with places which are not available with Google Maps
@@ -112,52 +86,41 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
- Android Auto and CarPlay support - Android Auto and CarPlay support
***Freedom Is Here Navigate the world with privacy and community at the forefront.*** *Freedom Is Here - Discover your journey, navigate the world with privacy and community at the forefront!*
--- ## Contributing
## 🤝 Contributing
You can help by donating, contributing code, translating, or by telling others about it. To build the best maps app there is a need for software development, design, product, community development, and other areas. Reach out to us and let us know how you want to help. You can help by donating, contributing code, translating, or by telling others about it. To build the best maps app there is a need for software development, design, product, community development, and other areas. Reach out to us and let us know how you want to help.
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md) If you want to build the project, check [docs/INSTALL.md](docs/INSTALL.md). If you want to help the project,
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) see [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md). You can help in many ways, the ability to code is not necessary.
> [!NOTE]
> Some docs might be outdated, contain broken links or old references to Organic Maps, etc. Its a work in progress and help is much appreciated!
There is a dedicated Zulip chat for active contributors: [Zulip](https://comaps.zulipchat.com) Some docs might be outdated, contain broken links or old references to Organic Maps, etc. Its a work in progress and help is much appreciated!
--- There is a dedicated Zulip chat for active contributors: [comaps.zulipchat.com](https://comaps.zulipchat.com)
## 💬 Feedback ### Feedback
- Rate us on [App Store](https://apps.apple.com/app/comaps/id6747180809) and [Google Play](https://play.google.com/store/apps/details?id=app.comaps.google)
- **Rate us on the [App Store](https://apps.apple.com/app/comaps/id6747180809)
and [Google Play](https://play.google.com/store/apps/details?id=app.comaps.google)**.
- Star our repos on Codeberg - Star our repos on Codeberg
- Report bugs or request features on the [issue tracker](https://codeberg.org/comaps/comaps/issues) - Report bugs and discuss features at [the issue tracker](https://codeberg.org/comaps/comaps/issues)
--- ## How is development funded?
## 💸 Funding The app is free for everyone, so we rely on donations. Please [donate](https://opencollective.com/comaps/donate) to support the CoMaps community and see this open project thrive!
CoMaps is free. To stay that way, it relies on your support.
Donate via [OpenCollective](https://opencollective.com/comaps/donate) or [Liberapay](https://liberapay.com/CoMaps).
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps). The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
--- ## Privacy
## 🔒 Privacy The Android application was analysed by the [Exodus platform](https://reports.exodus-privacy.eu.org/fr/reports/app.comaps.google/latest/)
The Android app has been reviewed by [Exodus Privacy](https://reports.exodus-privacy.eu.org/en/reports/app.comaps.google/latest/). ## License and Copyright
To [verify](https://developer.android.com/studio/command-line/apksigner#usage-verify) the APK, use the following signing certificate fingerprints: Licensed under the Apache License, Version 2.0. See
``` [LICENSE](LICENSE),
SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c [NOTICE](NOTICE)
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade and [data/copyright.html](data/copyright.html)
MD5: 9cce0ffea281dc2f0e0a154d6d2e281e for more information.
```
---
## ⚖️ License
Licensed under the Apache License 2.0.
See [LICENSE](LICENSE), [NOTICE](NOTICE), and [data/copyright.html](data/copyright.html).

View File

@@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64pt" height="64pt" viewBox="0 0 835 835">
<path d="M698.5 141.1a20 20 0 0 1 30.8-1.3A416 416 0 0 1 835 417.4a416 416 0 0 1-93.3 263 20 20 0 0 1-31.3-.6l-43-56.6a20 20 0 0 1-.2-24 307 307 0 0 0 59.3-181.8c0-74.2-26.2-142.3-69.9-195.6a20 20 0 0 1-.5-24.8zM260.7 456.4a20 20 0 0 1-7.7-36.7l282-177.4a20 20 0 0 1 29.9 22.7l-97 318.9a20 20 0 0 1-37.5 2.2l-49.2-111.5z" style="fill:#ccdfca"/>
<path d="M626.3 753a20 20 0 0 1-6.2 29.6A416 416 0 0 1 417.5 835 417.7 417.7 0 0 1 0 417.4 417.7 417.7 0 0 1 603.3 43.5a20 20 0 0 1 7 30l-42.4 55.8a20 20 0 0 1-24.2 6.1 307 307 0 0 0-126.2-27 309 309 0 0 0-309 309c0 170.6 138.5 309 309 309a307 307 0 0 0 141.6-34.3 20 20 0 0 1 25.1 5.6z" style="fill:#fefdf6"/>
</svg>

Before

Width:  |  Height:  |  Size: 753 B

View File

@@ -65,29 +65,14 @@ project.ext.appName = 'CoMaps'
android { android {
namespace 'app.organicmaps' namespace 'app.organicmaps'
dependenciesInfo {
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
includeInApk = false
// Disables dependency metadata when building Android App Bundles (for Google Play)
includeInBundle = false
}
buildFeatures { buildFeatures {
dataBinding = true dataBinding = true
buildConfig = true buildConfig = true
} }
// Users are complaining that the app should be re-downloaded from the Play Store after changing the language.
bundle {
language {
enableSplit = false
}
}
// All properties are read from gradle.properties file // All properties are read from gradle.properties file
compileSdk propCompileSdkVersion.toInteger() compileSdk propCompileSdkVersion.toInteger()
ndkVersion '28.2.13676358' ndkVersion '27.2.12479018'
defaultConfig { defaultConfig {
// Default package name is taken from the manifest and should be app.comaps // Default package name is taken from the manifest and should be app.comaps

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
../../../../google/java/app/organicmaps/location

View File

@@ -1 +0,0 @@
../../../../../google/java/app/organicmaps/sdk/location

View File

@@ -6,12 +6,12 @@ Můžete se zde také připojit ke komunitě pomáhat s vytvářením nejlepší
• Poskytujte zpětnou vazbu a nahlašujte problémy • Poskytujte zpětnou vazbu a nahlašujte problémy
• Aktualizujte mapová data v aplikaci nebo na webu OpenStreetMap • Aktualizujte mapová data v aplikaci nebo na webu OpenStreetMap
<b>Zaměřené na offline použití</b>: Plánujte a navigujte své cesty do zahraničí bez nutnosti mobilních dat, hledejte body na vzdálených túrách apod. Všechny funkce aplikace jsou navrženy tak, aby fungovaly offline. <b>Zaměřené na offline použití</b>: Plánujte a navigujte své cesty do zahraničí bez nutnosti mobilních dat, hledejte body na vzdálených túrách apod. Všechny funkce aplikace jsou navrženy tak, aby fungovaly offline.
<b>S ohledem na soukromí</b>: Aplikace je navržená s důrazem na soukromí neidentifikuje lidi, nesleduje vás a nesbírá osobní údaje. Bez reklam. <b>S ohledem na soukromí</b>: Aplikace je navržená s důrazem na soukromí neidentifikuje lidi, nesleduje vás a nesbírá osobní údaje. Bez reklam.
<b>Jednoduché a vyladěné</b>: Základní, snadno použitelné funkce, které prostě fungují. <b>Jednoduché a vyladěné</b>: Základní, snadno použitelné funkce, které prostě fungují.
<b>Šetří vaši baterii a místo</b>: Nevybíjí vaší baterii, jako ostatní navigační aplikace. Kompaktní mapy šetří cenné místo ve vašem telefonu. <b>Šetří vaši baterii a místo</b>: Nevybíjí vaší baterii, jako ostatní navigační aplikace. Kompaktní mapy šetří cenné místo ve vašem telefonu.
<b>Bezplatné a vytvořené komunitou</b>: S vytvářením aplikace pomáhají lidé, jako jste vy, přidáváním míst do projektu OpenStreetMap, testováním a poskytováním zpětné vazby k funkcím a přispíváním svými vývojářskými schopnostmi a penězi. <b>Bezplatné a vytvořené komunitou</b>: S vytvářením aplikace pomáhají lidé, jako jste vy, přidáváním míst do projektu OpenStreetMap, testováním a poskytováním zpětné vazby k funkcím a přispíváním svými vývojářskými schopnostmi a penězi.
<b>Otevřené a transparentní rozhodování a nakládání s financemi, neziskovost a plně otevřený zdrojový kód.</b> <b>Otevřené a transparentní rozhodování a nakládání s financemi, neziskovost a plně otevřený zdrojový kód.</b>
<b>Hlavní funkce</b>: <b>Hlavní funkce</b>:
• Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google • Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google

View File

@@ -1 +1 @@
Jednoduchá navigace v mapě Objevte více na své cestě Vyvíjeno komunitou Jednoduchá navigace v mapě - Objevte více na své cestě Vyvíjeno komunitou

View File

@@ -1 +0,0 @@
Nem kortnavigation - Oplev mere af din rejse - Drevet af fællesskabet

View File

@@ -1 +0,0 @@
CoMaps - vandr, cykl og kør offline med privatliv

View File

@@ -1,4 +1,4 @@
Eine von der Community betriebene, kostenlose Open-Source Karten-App, die auf OpenStreetMap Daten basiert. Transparent und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, die wiederum ein Fork/Abspaltung von Maps.Me ist. Eine von der Community betriebene, kostenlose Open-Source Karten-App, die auf OpenStreetMap Daten basiert. Transparent, datensparsam und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, die wiederum ein Fork/Abspaltung von Maps.Me ist.
Lese mehr über die Gründe und Ziele des Projektes unter <b><i>codeberg.org/comaps</i></b>. Lese mehr über die Gründe und Ziele des Projektes unter <b><i>codeberg.org/comaps</i></b>.
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
@@ -28,5 +28,5 @@ Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
• Dunkler Modus für die Nutzung bei Nacht • Dunkler Modus für die Nutzung bei Nacht
• Kartenbearbeitung direkt in der App mit einem einfachen Editor • Kartenbearbeitung direkt in der App mit einem einfachen Editor
<b>Entdecke die Unabhängigkeit</b> <b>Freiheit beginnt hier</b>
Entdecke deine Reise navigiere in der Welt mit Datenschutz! Entdecke deine Reise navigiere in der Welt mit Datenschutz!

View File

@@ -1,9 +1,6 @@
Wir stellen vor: Das neue CoMaps-Logo! • OpenStreetMap-Daten vom 22. Juni
Verbesserte Höhenlinien in vielen Regionen (Stufen von 20/50 m) Optionale automatische Backups von Lesezeichen & Tracks
Links zu Panoramax-Bildern für ausgewählte POIs Neue 100m-Höhenlinien für Regionen die vorher gröbere/keine Isolinien hatten
OpenStreetMap-Daten vom 13. Juli Vegetation & Spielplätze werden früher angezeigt, neue Farben für Campingplätze & andere Einrichtungen
Neue Farben für viele Objekte und Farben werden früher angezeigt Pfade & Tracks werden standardmäßig bei höherem Zoom angezeigt, Outdoor-Stil für Detailübersicht
Öffnungszeiten werden beim Antippen eines POI angezeigt Aktion des linken Button nichtm mehr im Hamburger-Menü, stattdessen werden "Über & Hilfe" dort angezeigt
• Verschiedene Arten von Feuchtgebieten
• Neue Farben für Vegetation und andere Features; einige neue Icons
• Wandern: bessere Darstellung der Höhenlinien

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,10 +1,7 @@
Introducing CoMaps logo! • OpenStreetMap data as of June 22
• a setting for automatic bookmarks and tracks backup
upgrade altitude contour lines for many regions to 20 or 50 meters step added 100m-step altitude isolines to all regions that had worse or no isolines
add Panoramax Picture links to selected POIs display vegetation and playground color fills earlier, add fills to camp sites and some amenities
OpenStreetMap data as of July 13 paths & tracks appear on the map later by default - still appear earlier in the outdoor style
add color fills to many features and display fills earlier for existing features hide active custom button action from the hamburger menu, move there About & Help from the settings
display opening hours state when selecting a POI update map transport icons
• split all wetlands into several distinct types
• update vegetation and other map colors, update some map icons
• outdoors: bolder altitude contour lines

View File

@@ -1,9 +1,6 @@
¡Presentamos el logo de CoMaps! • datos de OpenStreetMap a 22 de junio
mejora de isolíneas con más detalle para muchas regiones añadido ajuste para la copia de seguridad automática de marcadores y trazas
• añade enlaces de imágenes de Panoramax a POIs seleccionados • añadidas isolíneas de 100 m a las regiones que tenían isolíneas peores o no tenían isolíneas
datos de OpenStreetMap a 13 de julio se muestra antes la vegetación y zonas de juego, añadidas áreas a campings y otros servicios
añadidos rellenos de color a muchas características los senderos y pistas aparecen más tarde - siguen igual en estilo de outdoors
• se muestra el estado de horarios de apertura al seleccionar un POI • se oculta botón personalizado del menú y se mueve allí Acerca de y Ayuda desde los ajustes
• se dividen los humedales en tipos distintos
• se actualiza la vegetación y otros colores del mapa, así como otros iconos
• exteriores: líneas de contorno de altitud más gruesas

View File

@@ -1,7 +1,6 @@
Présentation du logo CoMaps ! • Données OpenStreetMap du 22 juin
Amélioration des courbes daltitude à une précision de 20 ou 50 mètres pour de nombreuses régions Sauvegarde automatique des signets et traces GPS en local
• Ajout d'un lien vers les images Panoramax des POI • Ajout des courbes d'altitude avec un précision de 100 mètres dans toutes les régions qui avaient peu de courbes ou aucune
Données OpenStreetMap du 13 juillet Ajustements des styles notamment sur la végétation, les aires de jeu et les chemins
Affichage de létat des heures douverture lors de la sélection dun POI Masque laction active du bouton personnalisé dans le menu hamburger
Mise à jour du style(végétation et zones humides), mise à jour de certaines icônes de la carte Correction de certains plantages et bugs
• Outdoors: Améliorations de la visibilité des courbes d'altitude

View File

@@ -1 +1 @@
Navigation cartographique facile - Découvrez davantage de votre voyage - Propulsé par la communauté Navigation facile - Découvrez plus lors de votre voyage - Fait par la communauté

View File

@@ -1,32 +0,0 @@
Aplicación de mapas gratuíta, de código aberto e xestionada pola comunidade, obtén os datos desde OpenStreetMap e co compromiso reforzado coa transparencia, privacidade e non ter o beneficio económico como obxectivo. CoMaps é unha bifurcación ou derivada de Organic Maps, que pola súa parte ven sendo unha bifurcación de Maps.ME.
Vai a <b><i>codeberg.org/comaps</i></b> e coñece as razóns da necesidade deste proxecto e as decisións tomadas.
Únete alí á comunidade e axuda a que teñamos a mellor aplicación de mapas
• Usa a aplicación e dille a outras persoas que o fas
• Informa de fallos e publica túa experiencia
• Actualiza os datos do mapa na aplicación ou no sitio web OpenStreetMap
‣ <b>Sen conexión de datos</b>: planea a viaxe e sigue a ruta sen precisar unha conexión á rede móbil, busca lugares relevantes nas andainas máis longas, etc. Todas as características da aplicación están deseñadas para funcionar sen precisar conexión de datos.
‣ <b>Respecto pola privacidade</b>: a aplicación está deseñada coa privacidade en primeiro plano - non identifica ás persoas, non te segue, non recolle información sobre ti. Non ten publicidade.
‣ <b>Simple e organizada</b>: características esenciais, fáciles de usar e que funcionan.
‣ <b>Aforra batería e espazo</b>: non esgota a batería como outras aplicacións de navegación. Os mapas compactos aforran espazo na memoria do dispositivo.
‣ <b>Gratuíta e feita pola comunidade</b>: persoas coma ti que axudan a crear a aplicación engadindo lugares en OpenStreetMap, probando novas características e dando a súa opinión, colaborando ao seu desenvolvemento con código ou financiamento.
‣ <b>Proceso de toma de decisións Aberto e Transparente para os temas económicos, Sen ánimo de lucro e totalmente de Código Aberto</b>
<b>Características principais</b>:
• Mapas detallados descargables con lugares que non están dispoñibles en Google Maps
• Modo para actividades en exterior con camiños para andainas, lugares para acampar, fontes de auga, picos dos montes, curvas de nivel, etc
• Rutas a pé e en bicicleta
• Puntos de interese como restaurantes, gasoliñeiras, hoteis, tendas, miradores e moitos máis
• Busca polo nome ou polo enderezo ou por categoría do punto de interese
• Navegación con anuncios por voz para camiñar, ir en bicicleta ou conducir
• Marca os lugares favoritos cun só toque
• Artigos da Wikipedia sen conexión
• Mapas do transporte por Metro
• Gravación das rutas
• Exportación e Importación de marcadores e rutas nos formatos KML, KMZ e GPX
• Modo escuro para a noite
• Contribúe a mellorar o mapa para todas as persoas usando o editor básico incluído
<b>Aquí es Libre</b>
Atopa o teu camiño, navega polo mundo con privacidade e coa comunidade como prioridade!

View File

@@ -1 +0,0 @@
CoMaps - Túra, Bicikli, Vezetés offline diszkréten

View File

@@ -1,32 +0,0 @@
Een door de community ontwikkelde, gratis en open source kaartenapp, gebaseerd op OpenStreetMap-gegevens, met een sterke focus op transparantie en privacy, en zonder winstoogmerk. CoMaps is een fork/spin-off van Organic Maps, welke is afgeleid van Maps.ME.
Meer informatie over de redenen voor het project en de richting ervan vindt u op <b><i>codeberg.org/comaps</i></b>.
Sluit je aan bij de community en help mee aan de ontwikkeling van de beste kaartenapp:
• Gebruik de app en deel je ervaringen met anderen
• Geef feedback en meld eventuele problemen
• Houd de kaarten up-to-date, zowel in de app als op de OpenStreetMap-website
‣ <b>Offline-georiënteerd</b>: Plan en navigeer je reis in het buitenland zonder internet, zoek waypoints tijdens een lange wandeling, enzovoort. Alle functies zijn ontworpen om offline te functioneren.
‣ <b>Respect voor privacy</b>: De app is ontworpen met privacy in gedachten - geen gegevensverzameling en advertentievrij.
‣ <b>Eenvoudig en verfijnd</b>: essentiële, gebruiksvriendelijke functies die gewoon werken.
‣ <b>Bespaar je batterij en opslag</b>: De app verbruikt minder batterij dan andere navigatie-apps. Compacte kaarten besparen ruimte op je telefoon.
‣ <b>Gratis en gebouwd door de community</b>: Mensen zoals jij helpen de app door plaatsen toe te voegen aan OpenStreetMap, functies te testen en feedback te geven, en hun programmervaardigheden bij te dragen of te doneren.
‣ <b>Open en transparant besluitvormings- en financieel beleid, geen winstoogmerk en volledig open source.</b>
<b>Hoofdfuncties</b>:
• Downloadbare gedetailleerde kaarten met plaatsen die niet beschikbaar zijn bij Google Maps
• Buitenmodus met gemarkeerde wandelpaden, campings, waterbronnen, toppen, hoogtelijnen, enz.
• Wandelpaden en fietspaden
• Bezienswaardigheden zoals restaurants, tankstations, hotels, winkels en nog veel meer
• Zoeken op naam of adres of op categorie
• Navigatie met spraakmeldingen voor wandelen, fietsen of autorijden
• Sla je favoriete plaatsen op met een enkele klik
• Offline Wikipedia-artikelen
• Metro laag en routebeschrijvingen
• Trackregistratie
• Exporteer en importeer bladwijzers en tracks in KML, KMZ, GPX-formaten
• Een donkere modus voor gebruik 's nachts
• Verbeter kaartgegevens voor iedereen met een eenvoudige ingebouwde editor
<b>Vrijheid is hier/b>
Ontdek je reis, navigeer over de wereld met privacy en community voorop!

View File

@@ -1 +0,0 @@
Eenvoudige kaartnavigatie - Ontdek meer van je reis - Gemaakt door de community

View File

@@ -1,9 +0,0 @@
Wprowadzamy logo CoMaps!
• zwiększenie dokładności izolinii w wielu regionach w krokach 20 do 50 metrów
• dodanie linków do zdjęć z Panoramax do wybranych POI
• aktualizacja danych OpenStreetMap z 13 lipca
• dodanie wypełnienia kolorem dla wielu typów obiektów
• wyświetlanie stanu godzin otwarcia przy wyborze POI
• podział mokradeł na kilka typów
• aktualizacja koloru roślinności i innych kolorów, aktualizacja części ikon na mapie
• tryb outdoorowy: pogrubione warstwice wysokości

View File

@@ -8,6 +8,7 @@ Junte-se à comunidade e ajude a criar o melhor aplicativo de mapas.
‣ <b>Foco offline</b>: Planeje e navegue em sua viagem ao exterior sem a necessidade de sinal de celular, pesquise pontos de referência durante uma caminhada distante, etc. Todas as funções do aplicativo foram projetadas para funcionar offline. ‣ <b>Foco offline</b>: Planeje e navegue em sua viagem ao exterior sem a necessidade de sinal de celular, pesquise pontos de referência durante uma caminhada distante, etc. Todas as funções do aplicativo foram projetadas para funcionar offline.
‣ <b>Respeito à privacidade</b>: O aplicativo foi projetado com a privacidade em mente - não identifica pessoas, não rastreia e não coleta informações pessoais. Livre de anúncios. ‣ <b>Respeito à privacidade</b>: O aplicativo foi projetado com a privacidade em mente - não identifica pessoas, não rastreia e não coleta informações pessoais. Livre de anúncios.
‣ <b>Simples e sofisticado</b>: recursos essenciais e fáceis de usar que simplesmente funcionam. ‣ <b>Simples e sofisticado</b>: recursos essenciais e fáceis de usar que simplesmente funcionam.
‣ <b>Economiza bateria e espaço</b>: Não esgota a bateria como outros aplicativos de navegação. Mapas compactos economizam espaço precioso no seu celular. ‣ <b>Economiza bateria e espaço</b>: Não esgota a bateria como outros aplicativos de navegação. Mapas compactos economizam espaço precioso no seu celular.
‣ <b>Gratuito e desenvolvido pela comunidade</b>: Pessoas como você ajudaram a desenvolver o aplicativo adicionando lugares ao OpenStreetMap, testando e dando feedback sobre os recursos e contribuindo com suas habilidades de desenvolvimento e dinheiro. ‣ <b>Gratuito e desenvolvido pela comunidade</b>: Pessoas como você ajudaram a desenvolver o aplicativo adicionando lugares ao OpenStreetMap, testando e dando feedback sobre os recursos e contribuindo com suas habilidades de desenvolvimento e dinheiro.

View File

@@ -1,9 +0,0 @@
Apresentamos o logo do CoMaps!
• Curvas de nível mais detalhadas em muitas regiões
• Adicionados links de imagens do Panoramax para pontos de interesse selecionados
• Dados OSM de 13/07
• Adicionados preenchimentos de cor a muitos elementos
• Exibição de horário de funcionamento ao selecionar um ponto de interesse
• Divididas áreas úmidas em vários tipos distintos
• Atualizada cores/ícones para vegetação e outros elementos
• Ar livre: curvas de nível de altitude mais destacadas

View File

@@ -1,32 +1,55 @@
Um aplicativo de mapas gratuito e de código aberto, liderado pela comunidade, baseado em dados do OpenStreetMap e reforçado pelo compromisso com a transparência, privacidade e sem fins lucrativos. O CoMaps é um fork/spin-off do Organic Maps, que por sua vez é um fork do Maps.ME. Um aplicativo de mapas gratuito e de código aberto, liderado pela comunidade, baseado em dados do OpenStreetMap e reforçado pelo compromisso com a transparência, privacidade e sem fins lucrativos. O CoMaps é um fork/spin-off do Organic Maps, que por sua vez é um fork do Maps.ME.
Leia mais sobre os motivos do projeto e sua direção em <b><i>codeberg.org/comaps</i></b>. Leia mais sobre os motivos do projeto e sua direção em <b><i>codeberg.org/comaps</i></b>.
Junte-se à comunidade e ajude a criar o melhor aplicativo de mapas. Junte-se à comunidade e ajude a criar o melhor aplicativo de mapas.
• Use o aplicativo e divulgue-o. • Use o aplicativo e divulgue-o.
• Envie feedback e relate problemas. • Envie feedback e relate problemas.
• Atualize os dados do mapa no aplicativo ou no site do OpenStreetMap. • Atualize os dados do mapa no aplicativo ou no site do OpenStreetMap.
‣ <b>Foco offline</b>: Planeje e navegue em sua viagem ao exterior sem a necessidade de sinal de celular, pesquise pontos de referência durante uma caminhada distante, etc. Todas as funções do aplicativo foram projetadas para funcionar offline. ‣ <b>Foco offline</b>: Planeje e navegue em sua viagem ao exterior sem a necessidade de sinal de celular, pesquise pontos de referência durante uma caminhada distante, etc. Todas as funções do aplicativo foram projetadas para funcionar offline.
‣ <b>Respeitando a privacidade</b>: O aplicativo foi projetado com a privacidade em mente - não identifica pessoas, não rastreia e não coleta informações pessoais. Sem anúncios. ‣ <b>Respeitando a privacidade</b>: O aplicativo foi projetado com a privacidade em mente - não identifica pessoas, não rastreia e não coleta informações pessoais. Sem anúncios.
‣ <b>Simples e sofisticado</b>: recursos essenciais e fáceis de usar que simplesmente funcionam. ‣ <b>Simples e sofisticado</b>: recursos essenciais e fáceis de usar que simplesmente funcionam.
‣ <b>Economiza bateria e espaço</b>: Não consome muita bateria como outros aplicativos de navegação. Mapas compactos economizam espaço precioso no seu celular. ‣ <b>Economiza bateria e espaço</b>: Não consome muita bateria como outros aplicativos de navegação. Mapas compactos economizam espaço precioso no seu celular.
‣ <b>Gratuito e desenvolvido pela comunidade</b>: Pessoas como você ajudaram a desenvolver o aplicativo adicionando lugares ao OpenStreetMap, testando e dando feedback sobre os recursos e contribuindo com suas habilidades de desenvolvimento e dinheiro. ‣ <b>Gratuito e desenvolvido pela comunidade</b>: Pessoas como você ajudaram a desenvolver o aplicativo adicionando lugares ao OpenStreetMap, testando e dando feedback sobre os recursos e contribuindo com suas habilidades de desenvolvimento e dinheiro.
‣ <b>Tomada de decisões e finanças abertas e transparentes, sem fins lucrativos e totalmente de código aberto.</b> ‣ <b>Tomada de decisões e finanças abertas e transparentes, sem fins lucrativos e totalmente de código aberto.</b>
<b>Principais recursos</b>: <b>Principais recursos</b>:
• Mapas detalhados para download com locais não disponíveis no Google Maps • Mapas detalhados para download com locais não disponíveis no Google Maps
• Modo ao ar livre com trilhas em destaque, acampamentos, fontes de água, picos, curvas de nível, etc. • Modo ao ar livre com trilhas em destaque, acampamentos, fontes de água, picos, curvas de nível, etc.
• Trilhas para caminhada e ciclovias • Trilhas para caminhada e ciclovias
• Pontos de interesse como restaurantes, postos de gasolina, hotéis, lojas, pontos turísticos e muito mais • Pontos de interesse como restaurantes, postos de gasolina, hotéis, lojas, pontos turísticos e muito mais
• Pesquise por nome, endereço ou por categoria de ponto de interesse • Pesquise por nome, endereço ou por categoria de ponto de interesse
• Navegação com anúncios de voz para caminhadas, ciclismo ou direção • Navegação com anúncios de voz para caminhadas, ciclismo ou direção
• Marque seus lugares favoritos com um único toque • Marque seus lugares favoritos com um único toque
• Artigos offline da Wikipédia • Artigos offline da Wikipédia
• Camada e direções de transporte público do metrô • Camada e direções de transporte público do metrô
• Gravação de trilhas • Gravação de trilhas
• Exporte e importe favoritos e trilhas nos formatos KML, KMZ e GPX • Exporte e importe favoritos e trilhas nos formatos KML, KMZ e GPX
• Um modo escuro para usar à noite • Um modo escuro para usar à noite
• Aprimore os dados do mapa para todos usando um editor básico integrado • Aprimore os dados do mapa para todos usando um editor básico integrado
<b>A Liberdade Chegou</b> <b>A Liberdade Chegou</b>
Descubra sua jornada, navegue pelo mundo com privacidade e comunidade em primeiro lugar! Descubra sua jornada, navegue pelo mundo com privacidade e comunidade em primeiro lugar!

View File

@@ -1 +0,0 @@
CoMaps - Drumeții, Ciclism, Condus Offline în confidențialitate

View File

@@ -1,6 +1,7 @@
Бесплатное и свободное картографическое приложение, основанное на данных OpenStreetMap и подкреплённое обязательствами по прозрачности, конфиденциальности и некоммерческой направленности. CoMaps — это ответвление от Organic Maps, которое, в свою очередь, является ответвлением от Maps.ME. Бесплатное и свободное картографическое приложение, основанное на данных OpenStreetMap и подкреплённое обязательствами по прозрачности, конфиденциальности и некоммерческой направленности. CoMaps — это ответвление от Organic Maps, которое, в свою очередь, является ответвлением от Maps.ME.
Подробнее о причинах проекта и его направлении читайте на сайте <b><i> codeberg.org/comaps </i><b>. Подробнее о причинах проекта и его направлении читайте на <a href="https://codeberg.org/comaps">сайте</a>.
Присоединяйтесь к сообществу и помогите создать лучшее приложение с картами Присоединяйтесь к сообществу и помогите создать лучшее приложение с картами
• Используйте приложение и распространяйте информацию о нём • Используйте приложение и распространяйте информацию о нём
• Оставляйте отзывы и сообщайте о проблемах • Оставляйте отзывы и сообщайте о проблемах

View File

@@ -1,9 +1,6 @@
Представляем логотип CoMaps! • карты OpenStreetMap от 22 июня
Линии высот для многих регионов с шагом 20м или 50м автоматическое резервное копирование меток и треков
Ссылки на изображения Panoramax к выбранным POI линии высот с шагом 100м для всех регионов, где линии с этим шагом отсутствовали
Карты OpenStreetMap от 13 июля цветная заливка растительности и игровых площадок отображается раньше, добавлена заливка для кемпингов и других объектов
Заливки цветом ко многим объектам и более ранняя заливка для существующих объектов тропы и грунтовки отображаются позже в стиле по умолчанию - используйте стиль «Активный отдых» для обзора троп
Показ часов работы при выборе POI выбранная функция настраиваемой кнопки больше не дублируется в пунктах меню
• Разные водно-болотные угодья отличаются цветом
• Обновлены цвета растительности и другие цвета на карте, изменены некоторые иконки
В стиле "Активный отдых" более четкие линии высот

View File

@@ -1 +1 @@
Простая навигация по карте — Откройте больше за ваше путешествие От сообщества Простая навигация по карте — Откройте больше за ваше путешествие. От сообщества

View File

@@ -1,17 +1,18 @@
Бесплатна апликација отвореног кода коју је обављала заједница и заснива се на ОpenStreetMap-у подацима, усмерени транспарентност, приватност и непрофитни. CoMaps је Апликације за органске карте виљушка, које је пак форк Maps.ME. Бесплатна апликација отвореног кода коју је обављала заједница и заснива се на ОпенСтреетМап-у подацима, усмерени транспарентност, приватност и непрофитни. ЦОМПАПС је Апликације за органске карте виљушка, које је пак форк мапс.ме.
Прочитајте о разлозима пројекта и његовог правца на <b><i>codeberg.org/comaps</i></b> Прочитајте о разлозима пројекта и његовог правца на <b><i>codeberg.org/comaps</i></b>
Придружите се отвореној заједници и помозите да направимо најбољу апликацију за мапе Придружите се отвореној заједници и помозите да направимо најбољу апликацију за мапе
• Користите апликацију и проширите глас о томе • Користите апликацију и проширите глас о томе
• Дајте повратне информације и пријавите проблеме • Дајте повратне информације и пријавите проблеме
• Ажурирајте податке на мапи у апликацији или на веб локацији OpenStreetMap • Ажурирајте податке на мапи у апликацији или на веб локацији OpenStreetMap
‣<b>фокусирано на офлајн Вар </b>: Планирајте и управљајте путовањем у иностранству без потребе за мобилним услугама, тражите путне тачке док је на даљинском покрету, итд.
‣ <b> фокусирано на офлајн Вар </b>: Планирајте и управљајте путовањем у иностранству без потребе за мобилним услугама, тражите путне тачке док је на даљинском покрету, итд. Све апликације су дизајниране за рад ван мреже. Све апликације су дизајниране за рад ван мреже.
‣<b> Поштовање приватности </b>: Апликација је осмишљена задржавања у уму приватност - не идентификује људе, не прати или прикупља личне податке. Нема реклама. ‣<b> Поштовање приватности </b>: Апликација је осмишљена задржавања у уму приватност - не идентификује људе, не прати или прикупља личне податке. Нема реклама.
‣ <b> Једноставно и елегантно </b>: Апликација је тривијална за употребу и једноставно функционише. ‣ <b> Једноставно и елегантно </b>: Апликација је тривијална за употребу и једноставно функционише.
‣ <b> Чува вашу батерију и простор </b>: не конзумира батерију као остале навигационе апликације. Компактне картице сачувајте драгоцени простор на вашем телефону. ‣ <b> Чува вашу батерију и простор </b>: не конзумира батерију као остале навигационе апликације. Компактне картице сачувајте драгоцени простор на вашем телефону.
‣ <b> Отворено и направио је заједницу </b>: Људи попут вас је помогли да додају апликацију додавањем локација на OpenStreetMap-у, тестирању и давање повратних информација о апликацији и доприносе вашим развојним вештинама и новцу. ‣ <b> Отворено и направио је заједницу </b>: Људи попут вас је помогли да додају апликацију додавањем локација на OpenStreetMap-у, тестирању и давање повратних информација о апликацији и доприносе вашим развојним вештинама и новцу.
‣ <b> Отворено и транспарентно доношење одлука и употреба финансија, непрофитна и потпуно отворена извора. </b> ‣ <b> Отворено и транспарентно доношење одлука и употреба финансија, непрофитна и потпуно отворена извора. </ Б>
<b> Главне карактеристике </b>: <b> Главне карактеристике </b>:
• Преузмите детаљне мапе са локацијама које нису доступне са Гоогле мапама • Преузмите детаљне мапе са локацијама које нису доступне са Гоогле мапама

View File

@@ -1,9 +0,0 @@
Представљамо CoMaps лого!
• ажуриране изохипсе за многе регионе на кораке од 20 или 50 метара
• додате везе ка Panoramax сликама за изабране тачке интересовања (POI)
• подаци са OpenStreetMap-а од 13. јула
• додате боје за многе елементе и раније приказивање постојећих површина
• приказ стања радног времена при избору POI-ја
• мочваре подељене на неколико различитих типова
• ажуриране боје вегетације и других елемената на мапи, ажуриране поједине иконе
• на отвореном: наглашеније изохипсе

View File

@@ -1 +1 @@
Једноставна навигација - Сазнајте више о свом путовању - Ради на бази заједнице Једноставна навигација - Сазнајте више о свом путовању - Покреће је заједница

View File

@@ -1 +1 @@
Kullanımı kolay harita - Yolculuğun ötesine geçin - topluluğun katkılarıyla Kolayca gezinin - Seyahat etmenin ötesini bulun - Gönüllüler tarafından yapıldı

View File

@@ -1 +1 @@
CoMaps - Gizlilikle Yürüyün, Sürün, Gezin CoMaps - İnternetsiz Seyahat Edin

View File

@@ -1 +0,0 @@
Định vị bản đồ dễ dàng - Khám phá thế giới quanh bạn - Đồng hành cùng cộng đồng

View File

@@ -1 +1 @@
version: 2025.03.02-7-FDroid+25030207 version: 2025.06.30-22-FDroid+25063022

View File

@@ -1,8 +1,8 @@
package app.organicmaps.sdk.location; package app.organicmaps.location;
import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.ACCESS_FINE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static app.organicmaps.sdk.util.concurrency.UiThread.runLater; import static app.organicmaps.util.concurrency.UiThread.runLater;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
@@ -26,8 +26,8 @@ import com.google.android.gms.location.LocationSettingsStatusCodes;
import com.google.android.gms.location.Priority; import com.google.android.gms.location.Priority;
import com.google.android.gms.location.SettingsClient; import com.google.android.gms.location.SettingsClient;
import app.organicmaps.sdk.util.LocationUtils; import app.organicmaps.util.LocationUtils;
import app.organicmaps.sdk.util.log.Logger; import app.organicmaps.util.log.Logger;
class GoogleFusedLocationProvider extends BaseLocationProvider class GoogleFusedLocationProvider extends BaseLocationProvider
{ {

View File

@@ -1,13 +1,12 @@
package app.organicmaps.sdk.location; package app.organicmaps.location;
import android.content.Context; import android.content.Context;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability; import com.google.android.gms.common.GoogleApiAvailability;
import app.organicmaps.util.Config;
import app.organicmaps.sdk.util.Config; import app.organicmaps.util.log.Logger;
import app.organicmaps.sdk.util.log.Logger;
public class LocationProviderFactory public class LocationProviderFactory
{ {

View File

@@ -1 +1 @@
Jednoduchá navigace v mapě Objevte více na své cestě Vyvíjeno komunitou Jednoduchá navigace v mapě - Objevte více na své cestě Vyvíjeno komunitou

View File

@@ -1 +0,0 @@
Nem kortnavigation - Oplev mere af din rejse - Drevet af fællesskabet

View File

@@ -1,4 +1,4 @@
Eine von der Community betriebene, kostenlose Open-Source Karten App, die auf OpenStreetMap-Daten basiert. Ein Gemeinschaftsprojekt mit Fokus auf Transparenz und non-profit. Eine von der Community betriebene, kostenlose Open-Source Karten App, die auf OpenStreetMap-Daten basiert. Transparent, datensparsam und nicht gewinnorientiert.
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
• Nutze die App und erzähle anderen davon • Nutze die App und erzähle anderen davon
@@ -8,8 +8,8 @@ Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
<i>Dein Feedback und deine 5-Sterne-Bewertung sind die beste Unterstützung für uns!</i> <i>Dein Feedback und deine 5-Sterne-Bewertung sind die beste Unterstützung für uns!</i>
‣ <b>Einfach und ausgereift</b>: Essenzielle, leicht zu bedienende Funktionen, die einfach funktionieren. ‣ <b>Einfach und ausgereift</b>: Essenzielle, leicht zu bedienende Funktionen, die einfach funktionieren.
‣ <b>Offlinekarten</b>: Plane und navigiere im Ausland ohne Mobilfunkverbindung, finde Wegpunkte auf abgelegenen Wanderungen usw. Alle Funktionen sind für den Offline-Einsatz konzipiert. ‣ <b>Offline-orientiert</b>: Plane und navigiere im Ausland ohne Mobilfunkverbindung, finde Wegpunkte auf abgelegenen Wanderungen usw. Alle Funktionen sind für den Offline-Einsatz konzipiert.
‣ <b>Datenschutz ist uns wichtig!</b>: Die App wurde mit Fokus auf Privatsphäre entwickelt kein Tracking, keine Erfassung persönlicher Daten, keine Werbung. ‣ <b>Datenschutzfreundlich</b>: Die App wurde mit Fokus auf Privatsphäre entwickelt keine Personenidentifikation, kein Tracking, keine Erfassung persönlicher Daten, keine Werbung.
‣ <b>Spart Akku und Speicherplatz</b>: Verbraucht nicht unnötig Akku wie andere Navi-Apps. Kompakte Karten sparen Speicherplatz auf Deinem Gerät. ‣ <b>Spart Akku und Speicherplatz</b>: Verbraucht nicht unnötig Akku wie andere Navi-Apps. Kompakte Karten sparen Speicherplatz auf Deinem Gerät.
‣ <b>Kostenlos und von der Community entwickelt</b>: Menschen wie du haben geholfen, die App zu entwickeln durch das Hinzufügen von Orten zu OpenStreetMap, Testen von neuen Funktionen, Softwareentwicklung oder Spenden. ‣ <b>Kostenlos und von der Community entwickelt</b>: Menschen wie du haben geholfen, die App zu entwickeln durch das Hinzufügen von Orten zu OpenStreetMap, Testen von neuen Funktionen, Softwareentwicklung oder Spenden.
‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open Source</b> ‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open Source</b>
@@ -32,5 +32,5 @@ Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
Bitte melde Probleme, schlage neue Funktionen vor und werde Teil der Community auf unserer Website: <b><i>comaps.app</i></b> Bitte melde Probleme, schlage neue Funktionen vor und werde Teil der Community auf unserer Website: <b><i>comaps.app</i></b>
<b>Entdecke die Unabhängigkeit</b> <b>Freiheit beginnt hier</b>
Entdecke deine Reise navigiere in der Welt mit Datenschutz! Entdecke deine Reise navigiere in der Welt mit Datenschutz!

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -1,35 +0,0 @@
Komunitateak gidatutako doako eta kode irekiko aplikazioa OpenStreetMap datuetan oinarrituta, gardentasuna, pribatutasuna eta irabazi asmorik gabeko konpromisoarekin indartua.
Sartu komunitatean eta lagundu mapa aplikaziorik onena egiten
• Erabili aplikazioa eta horri buruzko iritsia zabaldu
• Eman feedbacka eta txostenetako gaiak
• Eguneratu maparen datuak aplikazioan edo OpenStreetMap webgunean
<i> Zure iritzia eta 5 izarreko berrikuspenak dira guretzako laguntza onena! </ i>
‣ <b>Sinplea</b>: oso erraza da ondo funtzionatzen duten funtzioak erabiltzea.
‣ <b> Lineaz kanpo erabiltzeko prest </ b> Planifikatu eta nabigatu atzerrira bidaiatzea, konexio beharrik gabe, bilatu bideak urruneko ibilaldi batean, etab. Aplikazioaren funtzio guztiak lineaz kanpo lan egiteko diseinatuta daude.
‣ <b> Pribatutasuna errespetatzea </ b>: aplikazioa pribatutasunarekin diseinatuta dago, ez du pertsonak identifikatzen, ez du jarraipena egiten, eta ez du informazio pertsonala biltzen. Iragarkirik gabe.
‣ <b> Zure bateria eta espazioa gordetzen ditu </ b>: ez du bateria xukatu beste nabigazio aplikazioak bezala. Mapa trinkoek espazioa aurrezten dute zure telefonoan.
‣ <b> Libre eta komunitateak eraikitakoa: Zu bezalako jendeak aplikazioa eraikitzen lagundu du tokiak gehituz OpenStreetMapen, probatuz eta funtzioei buruzko iritzia emanez eta iritsiz eta diruz lagunduz.
‣ <b> Erabakiak hartzea eta finantza gardenak, irabazi asmorik gabekoa eta guztiz iturburu irekikoa. </ B>
<b> Ezaugarri nagusiak </ b>:
• Deskargatu mapa zehatzak Google Maps-ekin eskuragarri ez dauden lekuekin
• Landa eremua moduan nabarmendutako mendi ibilbideak, kanpinak, ur iturriak, gailurrak, sestra-lerroak, etab
• Bideak eta bidegorriak
• Jatetxe, gasolindegiak, hotelak, dendak, bisitak eta bestelako interesguneak
• Bilatu izenaren edo helbide baten arabera, edo kategoriaren arabera
• Oinez, txirrindularitzarako edo gidatzeko ahots-oharrak dituen nabigazioa
• Markatu zure gogoko lekuak ikutu bakarrarekin
• Lineaz kanpoko Wikipedia artikuluak
• Metroaren garraio geruza eta jarraibideak
• Arrastoen grabazioa
• Laster-markak eta ibilbideak esportatu eta inportatu KML, KMZ, GPX formatuetan
• Gauean erabiltzeko modu iluna
• Hobetu mapako datuak oinarrizko editore integratua erabiliz
• Android Auto laguntza
Mesedez, jakinarazi aplikazioaren gorabeherak, ideiak proposatu eta sartu gure komunitatean <b> <i> comaps.app </ i> </ b> webgunean.
<b> Askatasuna hemen </ b> da
Ezagutu zure bidaia, nabigatu munduan pribatutasunarekin eta komunitatearen abangoardian!

View File

@@ -1 +0,0 @@
Mapa nabigazio erraza - Ezagutu gehiago zure bidaiaz - Komunitatean egina

View File

@@ -1 +0,0 @@
Comaps - Pribatuki nabigatu

View File

@@ -1 +1 @@
Navigation cartographique facile - Propulsé par la communauté Navigation facile - Découvrez plus lors de votre voyage - Fait par la communauté

View File

@@ -1,35 +0,0 @@
Aplicación de mapas gratuíta, de código aberto e xestionada pola comunidade, obtén os datos desde OpenStreetMap e co compromiso reforzado coa transparencia, privacidade e non ter o beneficio económico como obxectivo.
Únete á comunidade e axuda a que teñamos a mellor aplicación de mapas
• Usa a aplicación e dille a outras persoas que o fas
• Informa de fallos e publica túa experiencia
• Actualiza os datos do mapa na aplicación ou no sitio web OpenStreetMap
<i>Os teus comentarios e recensións de 5 estrelas son a mellor axuda para nós!
‣ <b>Sen conexión de datos</b>: planea a viaxe e sigue a ruta sen precisar unha conexión á rede móbil, busca lugares relevantes nas andainas máis longas, etc. Todas as características da aplicación están deseñadas para funcionar sen precisar conexión de datos.
‣ <b>Respecto pola privacidade</b>: a aplicación está deseñada coa privacidade en primeiro plano - non identifica ás persoas, non te segue, non recolle información sobre ti. Non ten publicidade.
‣ <b>Simple e organizada</b>: características esenciais, fáciles de usar e que funcionan.
‣ <b>Aforra batería e espazo</b>: non esgota a batería como outras aplicacións de navegación. Os mapas compactos aforran espazo na memoria do dispositivo.
‣ <b>Gratuíta e feita pola comunidade</b>: persoas coma ti que axudan a crear a aplicación engadindo lugares en OpenStreetMap, probando novas características e dando a súa opinión, colaborando ao seu desenvolvemento con código ou financiamento.
‣ <b>Proceso de toma de decisións Aberto e Transparente para os temas económicos, Sen ánimo de lucro e totalmente de Código Aberto</b>
<b>Características principais</b>:
• Mapas detallados descargables con lugares que non están dispoñibles en Google Maps
• Modo para actividades en exterior con camiños para andainas, lugares para acampar, fontes de auga, picos dos montes, curvas de nivel, etc
• Rutas a pé e en bicicleta
• Puntos de interese como restaurantes, gasoliñeiras, hoteis, tendas, miradores e moitos máis
• Busca polo nome ou polo enderezo ou por categoría do punto de interese
• Navegación con anuncios por voz para camiñar, ir en bicicleta ou conducir
• Marca os lugares favoritos cun só toque
• Artigos da Wikipedia sen conexión
• Mapas do transporte por Metro
• Gravación das rutas
• Exportación e Importación de marcadores e rutas nos formatos KML, KMZ e GPX
• Modo escuro para a noite
• Contribúe a mellorar o mapa para todas as persoas usando o editor básico incluído
Por favor informa de calquera incidencia que xurda así como suxire novas funcións na nosa comunidade en <b><i>comaps.app</i></b>
<b>Aquí es Libre</b>
Atopa o teu camiño, navega polo mundo con privacidade e coa comunidade como prioridade!

View File

@@ -1 +0,0 @@
CoMaps -Navega con Privacidade

View File

@@ -1,36 +0,0 @@
Een door de community ontwikkelde, gratis en open source kaartenapp, gebaseerd op OpenStreetMap-gegevens, met een sterke focus op transparantie en privacy, en zonder winstoogmerk.
Sluit je aan bij de community en help mee aan de ontwikkeling van de beste kaartenapp:
• Gebruik de app en deel je ervaringen met anderen
• Geef feedback en meld eventuele problemen
• Houd de kaarten up-to-date, zowel in de app als op de OpenStreetMap-website
<i>Jouw feedback en 5-sterrenbeoordelingen zijn de beste steun voor ons!!</i>
‣ <b>Eenvoudig en verfijnd</b>: essentiële, gebruiksvriendelijke functies die gewoon werken.
‣ <b>Offline-georiënteerd</b>: Plan en navigeer je reis in het buitenland zonder internet, zoek waypoints tijdens een lange wandeling, enzovoort. Alle functies zijn ontworpen om offline te functioneren.
‣ <b>Respect voor privacy</b>: De app is ontworpen met privacy in gedachten - geen gegevensverzameling en advertentievrij.
‣ <b>Bespaar je batterij en opslag</b>: De app verbruikt minder batterij dan andere navigatie-apps. Compacte kaarten besparen ruimte op je telefoon.
‣ <b>Gratis en gebouwd door de community</b>: Mensen zoals jij helpen de app door plaatsen toe te voegen aan OpenStreetMap, functies te testen en feedback te geven, en hun programmervaardigheden bij te dragen of te doneren.
‣ <b>Open en transparant besluitvormings- en financieel beleid, geen winstoogmerk en volledig open source.</b>
<b>Hoofdfuncties</b>:
• Downloadbare gedetailleerde kaarten met plaatsen die niet beschikbaar zijn bij Google Maps
• Buitenmodus met gemarkeerde wandelpaden, campings, waterbronnen, toppen, hoogtelijnen, enz.
• Wandelpaden en fietspaden
• Bezienswaardigheden zoals restaurants, tankstations, hotels, winkels en nog veel meer
• Zoeken op naam of adres of op categorie
• Navigatie met spraakmeldingen voor wandelen, fietsen of autorijden
• Sla je favoriete plaatsen op met een enkele klik
• Offline Wikipedia-artikelen
• Metro laag en routebeschrijvingen
• Trackregistratie
• Exporteer en importeer bladwijzers en tracks in KML, KMZ, GPX-formaten
• Een donkere modus voor gebruik 's nachts
• Verbeter kaartgegevens voor iedereen met een eenvoudige ingebouwde editor
• Ondersteuning voor Android Auto
Meld app-problemen, stel nieuwe functies voor en sluit je aan bij onze community op de <b><i>comaps.app</i></b> website.
<b>Vrijheid is hier/b>
Ontdek je reis, navigeer over de wereld met privacy en community voorop!

View File

@@ -1 +0,0 @@
CoMaps - Viaje com Privacidade

View File

@@ -1 +0,0 @@
CoMaps - Navighează liniștit

View File

@@ -1 +1 @@
Простая навигация по карте — Откройте больше за ваше путешествие От сообщества Простая навигация по карте — Откройте больше за ваше путешествие. От сообщества

View File

@@ -1,6 +1,6 @@
Бесплатна апликација за мапе отвореног кода коју води заједница заснована на OpenStreetMap подацима и ојачана посвећеношћу транспарентности, приватности и непрофитности. Бесплатна апликација за мапе отвореног кода коју води заједница заснована на OpenStreetMap подацима и ојачана посвећеношћу транспарентности, приватности и непрофитности.
Придружите се заједници и помозите да направите најбољу навигацију Придружите се заједници и помозите да направимо најбољу навигацију
• Користите апликацију и ширите информације о њој • Користите апликацију и ширите информације о њој
• Оставите повратне информације и пријавите проблеме • Оставите повратне информације и пријавите проблеме
• Ажурирајте мапе из апликације или на сајту OpenStreetMap • Ажурирајте мапе из апликације или на сајту OpenStreetMap
@@ -11,26 +11,26 @@
‣ <b>Офлајн фокусирана</b>: Планирајте путовање у иностранство без употребе мобилне телефоније, потражите правац тачке током дугог путовања, итд . Све функције апликације су дизајниране за рад у режиму без интернета. ‣ <b>Офлајн фокусирана</b>: Планирајте путовање у иностранство без употребе мобилне телефоније, потражите правац тачке током дугог путовања, итд . Све функције апликације су дизајниране за рад у режиму без интернета.
‣ <b>Поштовање приватности</b>: Апликација је развијена с обзиром на приватност - не идентификује људе, не прати и не прикупља личне информације. Без реклама. ‣ <b>Поштовање приватности</b>: Апликација је развијена с обзиром на приватност - не идентификује људе, не прати и не прикупља личне информације. Без реклама.
‣ <b>Штеди батерију и простор</b>: Не празни батерију, као остале навигациje. Компактне mape штедe драгоценi prostor на вашем телефону.. ‣ <b>Штеди батерију и простор</b>: Не празни батерију, као остале навигациje. Компактне mape штедe драгоценi prostor на вашем телефону..
‣ <b>Бесплатно и изграђено од стране заједнице</b>: Људи попут вас помогли су у изради апликације додавањем места на OpenStreetMap, тестирањем и давањем повратних информација о функцијама и доприносом својим развојним вештинама и новцем. ‣ <b>Free and Built by the Community</b>: Такви људи, као што сте помогли да креирате апликацију, додајући места у OpenStreetMap, тестира и остављајући повратне информације о функцијама, као и стављајући своје вештине развоја и новац.
‣ <b>Отворено и транспарентно доношење одлука и финансије, непрофитне и потпуно отвореног кода.</b> ‣ <b>Отворено и транспарентно доношење одлука и финансија, непрофитни и потпуно отворени кода.</b>
<b>Главне карактеристике</b>: <b>Главне карактеристике</b>:
<li>Преузимање детаљних мапа са локацијама које нису доступне у Google Maps</li> Преузимање детаљне мапе са локацијама које нису доступне у Google Maps
<li>Режим на отвореном са истакнутим планинарским стазама, кампови, извори воде, врхови, контурне линије, итд</li> • Истакнуте планинарске стазе, кампови, изворима воде, врхове, контуре линије итд
<li>Пешачке и бициклистичке стазе</li> Пешачке и бициклистичке стазе
<li>Тачке интереса попут ресторана, бензинских станица, хотели, продавнице, разгледање и још много тога</li> Тачке од интереса као што су ресторани, бензинске станице, хотели, атракције, шопинг и још много тога
<li>Претрага по имену, адреси или по ТОИ категоријама</li> Претрага по имену или адреси или по категорији интересних места
<li>Навигација са гласовним упутима за планинарење, бициклизам или вожњу аутомобилом</li> Навигација са гласовним огласима за планинарење, бициклизам или вожње аутомобила
<li>Обележите своја омиљена места једним додиром</li> • Означи своја омиљене места са једним додиром
<li>Википедија чланци без интернета</li> • Офлајн Википедиа чланци
<li>Нивои транзита у метроа и смер кретања</li> • Транзитни слој метроа и упутства
<li>Снимање траса</li> • Track recording
<li>Извоз и увоз маркера и траса у форматима KML, KMZ, GPX</li> • Export and import bookmarks and tracks in KML, KMZ, GPX formats
<li>Тамни режим за употребу ноћу</li> • A dark mode to use during the night
<li>Побољшавање картографских података за све, користећи основни едитор за уређивање</li> • Improve map data for everyone using a basic built-in editor
<li>Подршка за Андроид Ауто</li> Подршка за Андроид Ауто
Молимо Вас да пријавите проблеме са апликацијом, предложите идеје и придружите се нашој заједници на <b><i>comaps.app</i></b> страни. Молимо Вас да пријавите проблеме са апликацијом, предложите идеје и придружите се нашој заједници на <b><i>comaps.app</i></b> страни.
<b>Сад је слободно</b> <b>Сад је слободна</b>
Откријте своје путовање, путујте светом с приватношћу и заједницом на челу! Откријте своје путовање, путујте светом с приватношћу и заједницом на челу!

View File

@@ -1 +1 @@
Једноставна навигација - Сазнајте више о свом путовању - Ради на бази заједнице Једноставна навигација - Сазнајте више о свом путовању - Покреће је заједница

View File

@@ -1,36 +1,36 @@
OpenStreetMap verilerine dayanan, kâr amacı gütmeyen, gizlilik ve şeffaflık odaklı, topluluk tarafından yönetilen, özgür ve açık kaynak kodlu bir harita uygulaması. OpenStreetMap verilerine dayanan ve şeffaflık, gizlilik ve kar amacı gütmeyen olma taahhüdüyle güçlendirilen, topluluk tarafından yönetilen ücretsiz ve açık kaynaklı bir harita uygulaması.
Topluluğa katılın ve en iyi harita uygulamasını oluşturmamıza yardım edin Topluluğa katılın ve en iyi harita uygulamasını oluşturmaya yardımcı olun
• Uygulamayı kullanın ve çevrenize yayın • Uygulamayı kullanın ve bunu herkese duyurun
• Geri bildirim verin ve sorunları bildirin • Geri bildirimde bulunun ve sorunları bildirin
• Harita verilerini uygulamadan veya OpenStreetMap üzerinden düzenleyin • Harita verilerini uygulamada veya OpenStreetMap web sitesinde güncelleyin
<i>Geri bildirimleriniz ve 5 yıldızlı yorumlarınız bizim için en iyi destektir!</i> <i>Geri bildirimleriniz ve 5 yıldızlı yorumlarınız bizim için en iyi destektir!</i>
‣ <b>Basit ve Temiz</b>: Sadece temel, kullanımı basit, işe yarayan özellikler. ‣ <b>Basit ve Cilalı</b>: sadece işe yarayan, kullanımı kolay temel özellikler.
‣ <b>Çevrimdışı Odaklı</b>: Mobil veriye ihtiyaç duymadan yurt dışı seyahatinizi planlayın ve gezin, uzun bir yürüyüş sırasında rotanızdaki noktaları bulun ve daha fazlası . Tüm özellikler çevrimdışı çalışmak üzere tasarlanmıştır. ‣ <b>Çevrim dışı odaklı</b>: Cep telefonu hizmetine ihtiyaç duymadan yurtdışı seyahatinizi planlayın ve gezinin, uzun bir yürüyüş sırasında rota noktalarını arayın, vb. Tüm uygulama işlevleri çevrimdışı çalışmak üzere tasarlanmıştır.
‣ <b>Gizliliğe Saygılı</b>: Uygulama gizliliğe saygılı olarak tasarlanmıştır. Kullanıcı profilinizi çıkarmaz, sizi takip etmez ve kişisel bilgi toplamaz. Üstelik tamamen reklamsızdır. ‣ <b>Gizliliğe Saygı</b>: Uygulama gizlilik düşünülerek tasarlanmıştır; kişileri tanımlamaz, takip etmez ve kişisel bilgi toplamaz. Reklamsız.
‣ <b>Pil ve Depolamanızdan Tasarruf Eder</b>: Diğer navigasyon uygulamaları gibi pilinizi sömürmez. Compact maps değerli depolama alanınızdan tasarruf eder. ‣ <b>Pilinizden ve Alanınızdan Tasarruf Edin</b>: Diğer navigasyon uygulamaları gibi pilinizi tüketmez. Kompakt haritalar telefonunuzda değerli alan tasarrufu sağlar.
‣ <b>Ücretsizdir ve Gücünü Topluluktan Alır</b>: Sizin gibi insanlar OpenStreetMap'e yer ekleyerek, yeni özellikleri test ederek, geri bildirimde bulunarak, program geliştirme becerileri ve bağışlarla katkıda bulunarak uygulamanın oluşturulmasına yardımcı oldu. ‣ <b>Ücretsiz ve Topluluk Tarafından Oluşturuldu</b>: Sizin gibi insanlar, OpenStreetMap'e yerler ekleyerek, özellikleri test ederek ve geri bildirimde bulunarak ve geliştirme becerilerinizi ve paranızı katkıda bulunarak uygulamanın oluşturulmasına yardımcı oldunuz..
‣ <b>Açık ve Şeffaf Şekilde Yürütülen Karar Alma ve Fonlama Süreçleri, Kâr Amacı Gütmez ve Tamamen Açık Kaynaklı.</b> ‣ <b>Açık ve Şeffaf Karar Alma ve Finansman, Kar Amacı Gütmeyen ve Tamamen Açık Kaynak.</b>
<b>Ana Özellikler</b>: <b>Ana Özellikleri</b>:
• Google Haritalar'da bulunmayan yerleri içeren, çevrimdışı detaylı haritalar • Google Haritalar'da bulunmayan yerleri içeren indirilebilir detaylı haritalar
Yürüyüş parkurları, kamp alanları, su kaynakları, zirveler, kontur çizgileri vb. nesneleri vurgulayanık hava modu Vurgulanan yürüyüş parkurları, kamp alanları, su kaynakları, zirveler, kontur çizgileriyleık hava modu gibi
• Yürüyüş ve bisiklet yolları • Yürüyüş yolları ve bisiklet yolları
• Restoran, benzin istasyonu, otel, mağaza, görülecek yerler ve çok daha fazla harita noktası • Restoranlar, benzin istasyonları, oteller, mağazalar, turistik yerler gibi ilgi çekici noktalar ve daha fazlası
• İsim, adres veya harita noktası kategorisine göre arama yapın • İsme veya adrese göre veya ilgi noktası kategorisine göre arama yapın
Sesli yönlendirmeye sahip yürüyüş, bisiklet ve araç navigasyonu Yürüyerek, bisikletle veya araçla seyahat edenler için sesli duyurularla navigasyon
En sevdiğiniz mekanları tek dokunuşla yer imlerinize kaydedin Favori yerlerinizi tek bir dokunuşla yer imlerine ekleyin
• Çevrimdışı Vikipedi makaleleri • Çevrim dışı Wikipedia makaleleri
• Metro ulaşım katmanı ve rotaları • Metro geçiş katmanı ve yönleri
GPS izinizi kaydedin Rota kaydı
• Yer imi ve GPS izlerinizi KML, KMZ ve GPX biçimlerinde dışa veya içe aktarın • Yer imlerini ve parkurları KML, KMZ, GPX formatlarında dışa ve içe aktarın
• Gece boyunca kullanmanızı sağlayacak koyu mod • Geceleri kullanmak için karanlık mod
Uygulama içi düzenleyiciyi kullanarak harita verilerini herkes için daha iyi hale getirin Temel bir yerleşik düzenleyici kullanarak herkes için harita verilerini iyileştirin
• Android Auto desteği • Android Auto desteği
Lütfen <b><i>comaps.app</i></b> adresinden uygulama sorunlarını bildirin, önerilerinizi paylaşın ve topluluğumuza katılın. Lütfen uygulama sorunlarını bildirin, fikir önerin ve <b><i>comaps.app</i></b> web sitesinde topluluğumuza katılın.
<b>Özgürlük Buradan Başlıyor</b> <b>Özgürlük Burada</b>
Yolculuğunuzun ötesine geçin, gizlilik ve topluluğu ön planda tutarak dünyada gezinin! Yolculuğunuzu keşfedin, gizlilik ve topluluk ön planda tutularak dünyayı keşfedin!

View File

@@ -1 +1 @@
Kullanımı kolay harita - Yolculuğun ötesine geçin - topluluğun katkılarıyla Kolayca gezinin - Seyahat etmenin ötesini bulun - Gönüllüler tarafından yapıldı

View File

@@ -1,36 +0,0 @@
Một ứng dụng bản đồ miễn phí & mã nguồn mở do cộng đồng phát triển, dựa trên dữ liệu OpenStreetMap và cam kết mạnh mẽ về minh bạch, quyền riêng tư và phi lợi nhuận.
Hãy tham gia cộng đồng và cùng chúng tôi xây dựng ứng dụng bản đồ tốt nhất!
• Sử dụng ứng dụng và chia sẻ với mọi người
• Đóng góp ý kiến và báo cáo lỗi
• Cập nhật dữ liệu bản đồ trong ứng dụng hoặc trên trang web OpenStreetMap
<i>Đánh giá 5 sao và phản hồi của bạn là sự ủng hộ quý giá nhất!</i>
‣ <b>Đơn giản và tinh tế</b>: Những tính năng cần thiết, dễ sử dụng và hoạt động mượt mà.
‣ <b>Hoạt động offline</b>: Lên kế hoạch và điều hướng chuyến đi ở nước ngoài mà không cần kết nối mạng, tìm kiếm địa điểm khi đi bộ đường dài... Tất cả chức năng đều hoạt động offline.
‣ <b>Tôn trọng quyền riêng tư</b>: Ứng dụng được thiết kế để bảo vệ sự riêng tư - không định danh người dùng, không theo dõi và không thu thập thông tin cá nhân. Hoàn toàn không có quảng cáo.
‣ <b>Tiết kiệm pin và dung lượng</b>: Không ngốn pin như các ứng dụng bản đồ khác. Bản đồ nhỏ gọn giúp tiết kiệm dung lượng điện thoại.
‣ <b>Miễn phí và được xây dựng bởi cộng đồng</b>: Chính những người như bạn đã góp phần phát triển ứng dụng bằng cách thêm địa điểm vào OpenStreetMap, kiểm thử tính năng, đóng góp ý kiến, kỹ năng lập trình và tài chính.
‣ <b>Minh bạch trong quyết định & tài chính, phi lợi nhuận và mã nguồn mở hoàn toàn.</b>
<b>Tính năng chính</b>:
• Tải bản đồ chi tiết với nhiều địa điểm không có trên Google Maps
• Chế độ ngoài trời với các tuyến đi bộ, khu cắm trại, nguồn nước, đỉnh núi, đường đồng mức... được đánh dấu rõ ràng
• Đường đi bộ và đường dành cho xe đạp
• Địa điểm quan tâm như nhà hàng, trạm xăng, khách sạn, cửa hàng, điểm tham quan...
• Tìm kiếm theo tên, địa chỉ hoặc danh mục địa điểm
• Dẫn đường với thông báo bằng giọng nói cho đi bộ, đạp xe hoặc lái xe
• Đánh dấu địa điểm yêu thích chỉ với một lần chạm
• Đọc bài viết Wikipedia offline
• Lớp bản đồ tàu điện ngầm và chỉ dẫn di chuyển
• Ghi lại lộ trình
• Xuất/nhập bookmark và lộ trình dưới dạng KML, KMZ, GPX
• Chế độ tối để sử dụng ban đêm
• Chỉnh sửa bản đồ cơ bản ngay trong ứng dụng để cải thiện dữ liệu cho mọi người
• Hỗ trợ Android Auto
Hãy báo cáo lỗi, đề xuất ý tưởng và tham gia cộng đồng của chúng tôi tại trang web <i><b>comaps.app</b></i>.
<b>Tự do ngay trong tay bạn!</b>
Khám phá hành trình, điều hướng thế giới với sự riêng tư và tinh thần cộng đồng!

View File

@@ -1 +0,0 @@
Định vị bản đồ dễ dàng - Khám phá thế giới quanh bạn - Đồng hành cùng cộng đồng

View File

@@ -1 +0,0 @@
CoMaps - Định vị riêng tư

View File

@@ -0,0 +1 @@
../../../../google/java/app/organicmaps/location

View File

@@ -1 +0,0 @@
../../../../../google/java/app/organicmaps/sdk/location

View File

@@ -20,9 +20,6 @@
<uses-feature <uses-feature
android:name="android.hardware.location.gps" android:name="android.hardware.location.gps"
android:required="false"/> android:required="false"/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

View File

@@ -5,21 +5,21 @@ project(organicmaps C CXX)
set(SRC set(SRC
# JNI headers # JNI headers
../../../../../private.h ../../../../../private.h
app/organicmaps/sdk/core/jni_helper.hpp app/organicmaps/core/jni_helper.hpp
app/organicmaps/sdk/core/jni_java_methods.hpp app/organicmaps/core/jni_java_methods.hpp
app/organicmaps/sdk/core/logging.hpp app/organicmaps/core/logging.hpp
app/organicmaps/sdk/core/ScopedEnv.hpp app/organicmaps/core/ScopedEnv.hpp
app/organicmaps/sdk/core/ScopedLocalRef.hpp app/organicmaps/core/ScopedLocalRef.hpp
app/organicmaps/sdk/Framework.hpp app/organicmaps/Framework.hpp
app/organicmaps/sdk/opengl/android_gl_utils.hpp app/organicmaps/opengl/android_gl_utils.hpp
app/organicmaps/sdk/opengl/androidoglcontext.hpp app/organicmaps/opengl/androidoglcontext.hpp
app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp app/organicmaps/opengl/androidoglcontextfactory.hpp
app/organicmaps/sdk/opengl/gl3stub.h app/organicmaps/opengl/gl3stub.h
app/organicmaps/sdk/platform/GuiThread.hpp app/organicmaps/platform/GuiThread.hpp
app/organicmaps/sdk/platform/AndroidPlatform.hpp app/organicmaps/platform/AndroidPlatform.hpp
app/organicmaps/sdk/util/Distance.hpp app/organicmaps/util/Distance.hpp
app/organicmaps/sdk/util/FeatureIdBuilder.hpp app/organicmaps/util/FeatureIdBuilder.hpp
app/organicmaps/sdk/vulkan/android_vulkan_context_factory.hpp app/organicmaps/vulkan/android_vulkan_context_factory.hpp
# JNI sources # JNI sources
app/organicmaps/sdk/search/DisplayedCategories.cpp app/organicmaps/sdk/search/DisplayedCategories.cpp
@@ -39,47 +39,47 @@ set(SRC
app/organicmaps/sdk/MapStyle.cpp app/organicmaps/sdk/MapStyle.cpp
app/organicmaps/sdk/OrganicMaps.cpp app/organicmaps/sdk/OrganicMaps.cpp
app/organicmaps/sdk/Router.cpp app/organicmaps/sdk/Router.cpp
app/organicmaps/sdk/core/jni_helper.cpp app/organicmaps/core/jni_helper.cpp
app/organicmaps/sdk/core/jni_java_methods.cpp app/organicmaps/core/jni_java_methods.cpp
app/organicmaps/sdk/core/logging.cpp app/organicmaps/core/logging.cpp
app/organicmaps/sdk/bookmarks/data/BookmarkManager.cpp app/organicmaps/bookmarks/data/BookmarkManager.cpp
app/organicmaps/sdk/DownloadResourcesLegacyActivity.cpp app/organicmaps/DownloadResourcesLegacyActivity.cpp
app/organicmaps/sdk/editor/Editor.cpp app/organicmaps/editor/Editor.cpp
app/organicmaps/sdk/editor/OpeningHours.cpp app/organicmaps/editor/OpeningHours.cpp
app/organicmaps/sdk/editor/OsmOAuth.cpp app/organicmaps/editor/OsmOAuth.cpp
app/organicmaps/sdk/Framework.cpp app/organicmaps/Framework.cpp
app/organicmaps/sdk/isolines/IsolinesManager.cpp app/organicmaps/isolines/IsolinesManager.cpp
app/organicmaps/sdk/LocationState.cpp app/organicmaps/LocationState.cpp
app/organicmaps/sdk/Map.cpp app/organicmaps/Map.cpp
app/organicmaps/sdk/MapManager.cpp app/organicmaps/MapManager.cpp
app/organicmaps/sdk/settings/UnitLocale.cpp app/organicmaps/settings/UnitLocale.cpp
app/organicmaps/sdk/settings/MapLanguageCode.cpp app/organicmaps/settings/MapLanguageCode.cpp
app/organicmaps/sdk/sound/tts.cpp app/organicmaps/sound/tts.cpp
app/organicmaps/sdk/subway/SubwayManager.cpp app/organicmaps/subway/SubwayManager.cpp
app/organicmaps/sdk/TrackRecorder.cpp app/organicmaps/TrackRecorder.cpp
app/organicmaps/sdk/TrafficState.cpp app/organicmaps/TrafficState.cpp
app/organicmaps/sdk/UserMarkHelper.cpp app/organicmaps/UserMarkHelper.cpp
app/organicmaps/sdk/opengl/android_gl_utils.cpp app/organicmaps/opengl/android_gl_utils.cpp
app/organicmaps/sdk/opengl/androidoglcontext.cpp app/organicmaps/opengl/androidoglcontext.cpp
app/organicmaps/sdk/opengl/androidoglcontextfactory.cpp app/organicmaps/opengl/androidoglcontextfactory.cpp
app/organicmaps/sdk/opengl/gl3stub.cpp app/organicmaps/opengl/gl3stub.cpp
app/organicmaps/sdk/platform/GuiThread.cpp app/organicmaps/platform/GuiThread.cpp
app/organicmaps/sdk/platform/HttpThread.cpp app/organicmaps/platform/HttpThread.cpp
app/organicmaps/sdk/platform/Language.cpp app/organicmaps/platform/Language.cpp
app/organicmaps/sdk/platform/Localization.cpp app/organicmaps/platform/Localization.cpp
app/organicmaps/sdk/platform/AndroidPlatform.cpp app/organicmaps/platform/AndroidPlatform.cpp
app/organicmaps/sdk/platform/PThreadImpl.cpp app/organicmaps/platform/PThreadImpl.cpp
app/organicmaps/sdk/platform/SecureStorage.cpp app/organicmaps/platform/SecureStorage.cpp
app/organicmaps/sdk/platform/SocketImpl.cpp app/organicmaps/platform/SocketImpl.cpp
app/organicmaps/sdk/util/Config.cpp app/organicmaps/util/Config.cpp
app/organicmaps/sdk/util/GeoUtils.cpp app/organicmaps/util/GeoUtils.cpp
app/organicmaps/sdk/util/HttpClient.cpp app/organicmaps/util/HttpClient.cpp
app/organicmaps/sdk/util/Language.cpp app/organicmaps/util/Language.cpp
app/organicmaps/sdk/util/LogsManager.cpp app/organicmaps/util/LogsManager.cpp
app/organicmaps/sdk/util/NetworkPolicy.cpp app/organicmaps/util/NetworkPolicy.cpp
app/organicmaps/sdk/util/StringUtils.cpp app/organicmaps/util/StringUtils.cpp
app/organicmaps/sdk/util/UiThread.cpp app/organicmaps/util/UiThread.cpp
app/organicmaps/sdk/vulkan/android_vulkan_context_factory.cpp app/organicmaps/vulkan/android_vulkan_context_factory.cpp
) )
omim_add_library(${PROJECT_NAME} SHARED ${SRC}) omim_add_library(${PROJECT_NAME} SHARED ${SRC})

View File

@@ -16,7 +16,7 @@
#include "base/logging.hpp" #include "base/logging.hpp"
#include "base/string_utils.hpp" #include "base/string_utils.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include <functional> #include <functional>
#include <iostream> #include <iostream>
@@ -70,7 +70,7 @@ extern "C"
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeGetBytesToDownload(JNIEnv * env, jclass clazz) Java_app_organicmaps_DownloadResourcesLegacyActivity_nativeGetBytesToDownload(JNIEnv * env, jclass clazz)
{ {
// clear all // clear all
g_filesToDownload.clear(); g_filesToDownload.clear();
@@ -149,7 +149,7 @@ extern "C"
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeStartNextFileDownload(JNIEnv * env, jclass clazz, jobject listener) Java_app_organicmaps_DownloadResourcesLegacyActivity_nativeStartNextFileDownload(JNIEnv * env, jclass clazz, jobject listener)
{ {
if (g_filesToDownload.empty()) if (g_filesToDownload.empty())
return ERR_NO_MORE_FILES; return ERR_NO_MORE_FILES;
@@ -171,14 +171,14 @@ extern "C"
curFile.GetRemoteSize(), curFile.GetRemoteSize(),
std::bind(&DownloadFileFinished, ptr, _1), std::bind(&DownloadFileFinished, ptr, _1),
std::bind(&DownloadFileProgress, ptr, _1), std::bind(&DownloadFileProgress, ptr, _1),
0, false)); 512 * 1024, false));
}); });
return ERR_FILE_IN_PROGRESS; return ERR_FILE_IN_PROGRESS;
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeCancelCurrentFile(JNIEnv * env, jclass clazz) Java_app_organicmaps_DownloadResourcesLegacyActivity_nativeCancelCurrentFile(JNIEnv * env, jclass clazz)
{ {
LOG(LDEBUG, ("cancelCurrentFile, currentRequest=", g_currentRequest)); LOG(LDEBUG, ("cancelCurrentFile, currentRequest=", g_currentRequest));
g_currentRequest.reset(); g_currentRequest.reset();

View File

@@ -1,19 +1,19 @@
#include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/Framework.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/UserMarkHelper.hpp" #include "app/organicmaps/UserMarkHelper.hpp"
#include "app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp" #include "app/organicmaps/opengl/androidoglcontextfactory.hpp"
#include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/platform/AndroidPlatform.hpp"
#include "app/organicmaps/sdk/routing/JunctionInfo.hpp" #include "app/organicmaps/sdk/routing/JunctionInfo.hpp"
#include "app/organicmaps/sdk/routing/RouteMarkData.hpp" #include "app/organicmaps/sdk/routing/RouteMarkData.hpp"
#include "app/organicmaps/sdk/routing/RouteMarkType.hpp" #include "app/organicmaps/sdk/routing/RouteMarkType.hpp"
#include "app/organicmaps/sdk/routing/RouteRecommendationType.hpp" #include "app/organicmaps/sdk/routing/RouteRecommendationType.hpp"
#include "app/organicmaps/sdk/routing/RoutingInfo.hpp" #include "app/organicmaps/sdk/routing/RoutingInfo.hpp"
#include "app/organicmaps/sdk/routing/TransitRouteInfo.hpp" #include "app/organicmaps/sdk/routing/TransitRouteInfo.hpp"
#include "app/organicmaps/sdk/util/Distance.hpp" #include "app/organicmaps/util/Distance.hpp"
#include "app/organicmaps/sdk/util/FeatureIdBuilder.hpp" #include "app/organicmaps/util/FeatureIdBuilder.hpp"
#include "app/organicmaps/sdk/util/NetworkPolicy.hpp" #include "app/organicmaps/util/NetworkPolicy.hpp"
#include "app/organicmaps/sdk/vulkan/android_vulkan_context_factory.hpp" #include "app/organicmaps/vulkan/android_vulkan_context_factory.hpp"
#include "map/bookmark_helpers.hpp" #include "map/bookmark_helpers.hpp"
#include "map/chart_generator.hpp" #include "map/chart_generator.hpp"
@@ -824,35 +824,35 @@ RoutingManager::LoadRouteHandler g_loadRouteHandler;
/// @name JNI EXPORTS /// @name JNI EXPORTS
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetAddress(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon) Java_app_organicmaps_Framework_nativeGetAddress(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon)
{ {
auto const info = frm()->GetAddressAtPoint(mercator::FromLatLon(lat, lon)); auto const info = frm()->GetAddressAtPoint(mercator::FromLatLon(lat, lon));
return jni::ToJavaString(env, info.FormatAddress()); return jni::ToJavaString(env, info.FormatAddress());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz) Java_app_organicmaps_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz)
{ {
frm()->GetBookmarkManager().GetEditSession().ClearGroup(UserMark::Type::API); frm()->GetBookmarkManager().GetEditSession().ClearGroup(UserMark::Type::API);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeParseAndSetApiUrl(JNIEnv * env, jclass clazz, jstring url) Java_app_organicmaps_Framework_nativeParseAndSetApiUrl(JNIEnv * env, jclass clazz, jstring url)
{ {
return static_cast<jint>(frm()->ParseAndSetApiURL(jni::ToNativeString(env, url))); return static_cast<jint>(frm()->ParseAndSetApiURL(jni::ToNativeString(env, url)));
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetParsedRoutingData(JNIEnv * env, jclass clazz) Java_app_organicmaps_Framework_nativeGetParsedRoutingData(JNIEnv * env, jclass clazz)
{ {
using namespace url_scheme; using namespace url_scheme;
static jclass const pointClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/api/RoutePoint"); static jclass const pointClazz = jni::GetGlobalClassRef(env, "app/organicmaps/api/RoutePoint");
// Java signature : RoutePoint(double lat, double lon, String name) // Java signature : RoutePoint(double lat, double lon, String name)
static jmethodID const pointConstructor = jni::GetConstructorID(env, pointClazz, "(DDLjava/lang/String;)V"); static jmethodID const pointConstructor = jni::GetConstructorID(env, pointClazz, "(DDLjava/lang/String;)V");
static jclass const routeDataClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/api/ParsedRoutingData"); static jclass const routeDataClazz = jni::GetGlobalClassRef(env, "app/organicmaps/api/ParsedRoutingData");
// Java signature : ParsedRoutingData(RoutePoint[] points, int routerType) { // Java signature : ParsedRoutingData(RoutePoint[] points, int routerType) {
static jmethodID const routeDataConstructor = jni::GetConstructorID(env, routeDataClazz, "([Lapp/organicmaps/sdk/api/RoutePoint;I)V"); static jmethodID const routeDataConstructor = jni::GetConstructorID(env, routeDataClazz, "([Lapp/organicmaps/api/RoutePoint;I)V");
auto const & routingData = frm()->GetParsedRoutingData(); auto const & routingData = frm()->GetParsedRoutingData();
jobjectArray points = jni::ToJavaArray(env, pointClazz, routingData.m_points, jobjectArray points = jni::ToJavaArray(env, pointClazz, routingData.m_points,
@@ -868,10 +868,10 @@ Java_app_organicmaps_sdk_Framework_nativeGetParsedRoutingData(JNIEnv * env, jcla
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetParsedSearchRequest(JNIEnv * env, jclass clazz) Java_app_organicmaps_Framework_nativeGetParsedSearchRequest(JNIEnv * env, jclass clazz)
{ {
using namespace url_scheme; using namespace url_scheme;
static jclass const cl = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/api/ParsedSearchRequest"); static jclass const cl = jni::GetGlobalClassRef(env, "app/organicmaps/api/ParsedSearchRequest");
// Java signature : ParsedSearchRequest(String query, String locale, double lat, double lon, boolean isSearchOnMap) // Java signature : ParsedSearchRequest(String query, String locale, double lat, double lon, boolean isSearchOnMap)
static jmethodID const ctor = jni::GetConstructorID(env, cl, "(Ljava/lang/String;Ljava/lang/String;DDZ)V"); static jmethodID const ctor = jni::GetConstructorID(env, cl, "(Ljava/lang/String;Ljava/lang/String;DDZ)V");
auto const & r = frm()->GetParsedSearchRequest(); auto const & r = frm()->GetParsedSearchRequest();
@@ -880,28 +880,28 @@ Java_app_organicmaps_sdk_Framework_nativeGetParsedSearchRequest(JNIEnv * env, jc
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetParsedAppName(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetParsedAppName(JNIEnv * env, jclass)
{ {
std::string const & appName = frm()->GetParsedAppName(); std::string const & appName = frm()->GetParsedAppName();
return (appName.empty()) ? nullptr : jni::ToJavaString(env, appName); return (appName.empty()) ? nullptr : jni::ToJavaString(env, appName);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetParsedOAuth2Code(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetParsedOAuth2Code(JNIEnv * env, jclass)
{ {
std::string const & code = frm()->GetParsedOAuth2Code(); std::string const & code = frm()->GetParsedOAuth2Code();
return jni::ToJavaString(env, code); return jni::ToJavaString(env, code);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetParsedBackUrl(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetParsedBackUrl(JNIEnv * env, jclass)
{ {
std::string const & backUrl = frm()->GetParsedBackUrl(); std::string const & backUrl = frm()->GetParsedBackUrl();
return (backUrl.empty()) ? nullptr : jni::ToJavaString(env, backUrl); return (backUrl.empty()) ? nullptr : jni::ToJavaString(env, backUrl);
} }
JNIEXPORT jdoubleArray JNICALL JNIEXPORT jdoubleArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jclass)
{ {
ms::LatLon const center = frm()->GetParsedCenterLatLon(); ms::LatLon const center = frm()->GetParsedCenterLatLon();
if (!center.IsValid()) if (!center.IsValid())
@@ -915,14 +915,14 @@ Java_app_organicmaps_sdk_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jcl
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener) Java_app_organicmaps_Framework_nativePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener)
{ {
LOG(LINFO, ("Set global map object listener")); LOG(LINFO, ("Set global map object listener"));
g_placePageActivationListener = env->NewGlobalRef(jListener); g_placePageActivationListener = env->NewGlobalRef(jListener);
// void onPlacePageActivated(MapObject object); // void onPlacePageActivated(MapObject object);
jmethodID const activatedId = jni::GetMethodID(env, g_placePageActivationListener, jmethodID const activatedId = jni::GetMethodID(env, g_placePageActivationListener,
"onPlacePageActivated", "onPlacePageActivated",
"(Lapp/organicmaps/sdk/widget/placepage/PlacePageData;)V"); "(Lapp/organicmaps/widget/placepage/PlacePageData;)V");
// void onPlacePageDeactivated(); // void onPlacePageDeactivated();
jmethodID const deactivateId = jni::GetMethodID(env, g_placePageActivationListener, jmethodID const deactivateId = jni::GetMethodID(env, g_placePageActivationListener,
"onPlacePageDeactivated", "()V"); "onPlacePageDeactivated", "()V");
@@ -962,7 +962,7 @@ Java_app_organicmaps_sdk_Framework_nativePlacePageActivationListener(JNIEnv *env
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeRemovePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener) Java_app_organicmaps_Framework_nativeRemovePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener)
{ {
if (g_placePageActivationListener == nullptr) if (g_placePageActivationListener == nullptr)
return; return;
@@ -977,7 +977,7 @@ Java_app_organicmaps_sdk_Framework_nativeRemovePlacePageActivationListener(JNIEn
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name) Java_app_organicmaps_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name)
{ {
::Framework * fr = frm(); ::Framework * fr = frm();
double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale()); double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale());
@@ -986,7 +986,7 @@ Java_app_organicmaps_sdk_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name) Java_app_organicmaps_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name)
{ {
::Framework * fr = frm(); ::Framework * fr = frm();
double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale()); double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale());
@@ -995,16 +995,16 @@ Java_app_organicmaps_sdk_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth( Java_app_organicmaps_Framework_nativeGetDistanceAndAzimuth(
JNIEnv * env, jclass, jdouble merX, jdouble merY, jdouble cLat, jdouble cLon, jdouble north) JNIEnv * env, jclass, jdouble merX, jdouble merY, jdouble cLat, jdouble cLon, jdouble north)
{ {
platform::Distance distance; platform::Distance distance;
double azimut = -1.0; double azimut = -1.0;
frm()->GetDistanceAndAzimut(m2::PointD(merX, merY), cLat, cLon, north, distance, azimut); frm()->GetDistanceAndAzimut(m2::PointD(merX, merY), cLat, cLon, north, distance, azimut);
static jclass const daClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/DistanceAndAzimut"); static jclass const daClazz = jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/DistanceAndAzimut");
// Java signature : DistanceAndAzimut(Distance distance, double azimuth) // Java signature : DistanceAndAzimut(Distance distance, double azimuth)
static jmethodID const methodID = jni::GetConstructorID(env, daClazz, "(Lapp/organicmaps/sdk/util/Distance;D)V"); static jmethodID const methodID = jni::GetConstructorID(env, daClazz, "(Lapp/organicmaps/util/Distance;D)V");
return env->NewObject(daClazz, methodID, return env->NewObject(daClazz, methodID,
ToJavaDistance(env, distance), ToJavaDistance(env, distance),
@@ -1012,16 +1012,16 @@ Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth(
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuthFromLatLon( Java_app_organicmaps_Framework_nativeGetDistanceAndAzimuthFromLatLon(
JNIEnv * env, jclass clazz, jdouble lat, jdouble lon, jdouble cLat, jdouble cLon, jdouble north) JNIEnv * env, jclass clazz, jdouble lat, jdouble lon, jdouble cLat, jdouble cLon, jdouble north)
{ {
double const merY = mercator::LatToY(lat); double const merY = mercator::LatToY(lat);
double const merX = mercator::LonToX(lon); double const merX = mercator::LonToX(lon);
return Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth(env, clazz, merX, merY, cLat, cLon, north); return Java_app_organicmaps_Framework_nativeGetDistanceAndAzimuth(env, clazz, merX, merY, cLat, cLon, north);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeFormatLatLon(JNIEnv * env, jclass, jdouble lat, jdouble lon, int coordsFormat) Java_app_organicmaps_Framework_nativeFormatLatLon(JNIEnv * env, jclass, jdouble lat, jdouble lon, int coordsFormat)
{ {
switch (static_cast<android::CoordinatesFormat>(coordsFormat)) switch (static_cast<android::CoordinatesFormat>(coordsFormat))
{ {
@@ -1054,13 +1054,13 @@ Java_app_organicmaps_sdk_Framework_nativeFormatLatLon(JNIEnv * env, jclass, jdou
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeFormatAltitude(JNIEnv * env, jclass, jdouble alt) Java_app_organicmaps_Framework_nativeFormatAltitude(JNIEnv * env, jclass, jdouble alt)
{ {
return jni::ToJavaString(env, platform::Distance::FormatAltitude(alt)); return jni::ToJavaString(env, platform::Distance::FormatAltitude(alt));
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeFormatSpeed(JNIEnv * env, jclass, jdouble speed) Java_app_organicmaps_Framework_nativeFormatSpeed(JNIEnv * env, jclass, jdouble speed)
{ {
auto const units = measurement_utils::GetMeasurementUnits(); auto const units = measurement_utils::GetMeasurementUnits();
return jni::ToJavaString(env, measurement_utils::FormatSpeedNumeric(speed, units) + " " + return jni::ToJavaString(env, measurement_utils::FormatSpeedNumeric(speed, units) + " " +
@@ -1069,13 +1069,13 @@ Java_app_organicmaps_sdk_Framework_nativeFormatSpeed(JNIEnv * env, jclass, jdoub
/* /*
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetOutdatedCountriesString(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetOutdatedCountriesString(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, g_framework->GetOutdatedCountriesString()); return jni::ToJavaString(env, g_framework->GetOutdatedCountriesString());
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetOutdatedCountries(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetOutdatedCountries(JNIEnv * env, jclass)
{ {
vector<Country const *> countries; vector<Country const *> countries;
Storage const & storage = g_framework->GetStorage(); Storage const & storage = g_framework->GetStorage();
@@ -1089,44 +1089,44 @@ Java_app_organicmaps_sdk_Framework_nativeGetOutdatedCountries(JNIEnv * env, jcla
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeToDoAfterUpdate(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeToDoAfterUpdate(JNIEnv * env, jclass)
{ {
return g_framework->ToDoAfterUpdate(); return g_framework->ToDoAfterUpdate();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsDataVersionChanged(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsDataVersionChanged(JNIEnv * env, jclass)
{ {
return frm()->IsDataVersionUpdated() ? JNI_TRUE : JNI_FALSE; return frm()->IsDataVersionUpdated() ? JNI_TRUE : JNI_FALSE;
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeUpdateSavedDataVersion(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeUpdateSavedDataVersion(JNIEnv * env, jclass)
{ {
frm()->UpdateSavedDataVersion(); frm()->UpdateSavedDataVersion();
} }
*/ */
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetDataVersion(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetDataVersion(JNIEnv * env, jclass)
{ {
return frm()->GetCurrentDataVersion(); return frm()->GetCurrentDataVersion();
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetDrawScale(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetDrawScale(JNIEnv * env, jclass)
{ {
return static_cast<jint>(frm()->GetDrawScale()); return static_cast<jint>(frm()->GetDrawScale());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativePokeSearchInViewport(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativePokeSearchInViewport(JNIEnv * env, jclass)
{ {
frm()->GetSearchAPI().PokeSearchInViewport(); frm()->GetSearchAPI().PokeSearchInViewport();
} }
JNIEXPORT jdoubleArray JNICALL JNIEXPORT jdoubleArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclass)
{ {
m2::PointD const center = frm()->GetViewportCenter(); m2::PointD const center = frm()->GetViewportCenter();
@@ -1138,43 +1138,43 @@ Java_app_organicmaps_sdk_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclas
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong track) Java_app_organicmaps_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong track)
{ {
frm()->ShowTrack(static_cast<kml::TrackId>(track)); frm()->ShowTrack(static_cast<kml::TrackId>(track));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSaveRoute(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeSaveRoute(JNIEnv *, jclass)
{ {
frm()->SaveRoute(); frm()->SaveRoute();
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetBookmarkDir(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetBookmarkDir(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, GetPlatform().SettingsDir().c_str()); return jni::ToJavaString(env, GetPlatform().SettingsDir().c_str());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetWritableDir(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetWritableDir(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, GetPlatform().WritableDir().c_str()); return jni::ToJavaString(env, GetPlatform().WritableDir().c_str());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetSettingsDir(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetSettingsDir(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, GetPlatform().SettingsDir().c_str()); return jni::ToJavaString(env, GetPlatform().SettingsDir().c_str());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetDataFileExt(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetDataFileExt(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, DATA_FILE_EXTENSION); return jni::ToJavaString(env, DATA_FILE_EXTENSION);
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetMovableFilesExts(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetMovableFilesExts(JNIEnv * env, jclass)
{ {
vector<string> exts = { DATA_FILE_EXTENSION, FONT_FILE_EXTENSION }; vector<string> exts = { DATA_FILE_EXTENSION, FONT_FILE_EXTENSION };
platform::CountryIndexes::GetIndexesExts(exts); platform::CountryIndexes::GetIndexesExts(exts);
@@ -1182,7 +1182,7 @@ Java_app_organicmaps_sdk_Framework_nativeGetMovableFilesExts(JNIEnv * env, jclas
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetBookmarksFilesExts(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetBookmarksFilesExts(JNIEnv * env, jclass)
{ {
static std::array<std::string, 4> const kBookmarkExtensions = { static std::array<std::string, 4> const kBookmarkExtensions = {
std::string{kKmzExtension}, std::string{kKmzExtension},
@@ -1195,7 +1195,7 @@ Java_app_organicmaps_sdk_Framework_nativeGetBookmarksFilesExts(JNIEnv * env, jcl
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, jstring jNewPath) Java_app_organicmaps_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, jstring jNewPath)
{ {
string newPath = jni::ToNativeString(env, jNewPath); string newPath = jni::ToNativeString(env, jNewPath);
g_framework->RemoveLocalMaps(); g_framework->RemoveLocalMaps();
@@ -1204,55 +1204,55 @@ Java_app_organicmaps_sdk_Framework_nativeChangeWritableDir(JNIEnv * env, jclass,
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsRoutingActive(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsRoutingActive(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().IsRoutingActive(); return frm()->GetRoutingManager().IsRoutingActive();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsRouteBuilding(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsRouteBuilding(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().IsRouteBuilding(); return frm()->GetRoutingManager().IsRouteBuilding();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsRouteBuilt(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsRouteBuilt(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().IsRouteBuilt(); return frm()->GetRoutingManager().IsRouteBuilt();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeCloseRouting(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeCloseRouting(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().CloseRouting(true /* remove route points */); frm()->GetRoutingManager().CloseRouting(true /* remove route points */);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeBuildRoute(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeBuildRoute(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().BuildRoute(); frm()->GetRoutingManager().BuildRoute();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeRemoveRoute(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeRemoveRoute(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().RemoveRoute(false /* deactivateFollowing */); frm()->GetRoutingManager().RemoveRoute(false /* deactivateFollowing */);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeFollowRoute(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeFollowRoute(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().FollowRoute(); frm()->GetRoutingManager().FollowRoute();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeDisableFollowing(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeDisableFollowing(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().DisableFollowMode(); frm()->GetRoutingManager().DisableFollowMode();
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGenerateNotifications(JNIEnv * env, jclass, jboolean announceStreets) Java_app_organicmaps_Framework_nativeGenerateNotifications(JNIEnv * env, jclass, jboolean announceStreets)
{ {
::Framework * fr = frm(); ::Framework * fr = frm();
if (!fr->GetRoutingManager().IsRoutingActive()) if (!fr->GetRoutingManager().IsRoutingActive())
@@ -1267,20 +1267,20 @@ Java_app_organicmaps_sdk_Framework_nativeGenerateNotifications(JNIEnv * env, jcl
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetSpeedCamManagerMode(JNIEnv * env, jclass, jint mode) Java_app_organicmaps_Framework_nativeSetSpeedCamManagerMode(JNIEnv * env, jclass, jint mode)
{ {
frm()->GetRoutingManager().GetSpeedCamManager().SetMode( frm()->GetRoutingManager().GetSpeedCamManager().SetMode(
static_cast<routing::SpeedCameraManagerMode>(mode)); static_cast<routing::SpeedCameraManagerMode>(mode));
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetSpeedCamManagerMode(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetSpeedCamManagerMode(JNIEnv * env, jclass)
{ {
return static_cast<jint>(frm()->GetRoutingManager().GetSpeedCamManager().GetMode()); return static_cast<jint>(frm()->GetRoutingManager().GetSpeedCamManager().GetMode());
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jclass)
{ {
RoutingManager & rm = frm()->GetRoutingManager(); RoutingManager & rm = frm()->GetRoutingManager();
if (!rm.IsRoutingActive()) if (!rm.IsRoutingActive())
@@ -1295,9 +1295,9 @@ Java_app_organicmaps_sdk_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jcl
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetRouteJunctionPoints(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetRouteJunctionPoints(JNIEnv * env, jclass)
{ {
vector<geometry::PointWithAltitude> junctionPoints; vector<m2::PointD> junctionPoints;
if (!frm()->GetRoutingManager().RoutingSession().GetRouteJunctionPoints(junctionPoints)) if (!frm()->GetRoutingManager().RoutingSession().GetRouteJunctionPoints(junctionPoints))
{ {
LOG(LWARNING, ("Can't get the route junction points")); LOG(LWARNING, ("Can't get the route junction points"));
@@ -1308,7 +1308,7 @@ Java_app_organicmaps_sdk_Framework_nativeGetRouteJunctionPoints(JNIEnv * env, jc
} }
JNIEXPORT jintArray JNICALL JNIEXPORT jintArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv * env, jclass, jint width, jint height, jobject routeAltitudeLimits) Java_app_organicmaps_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv * env, jclass, jint width, jint height, jobject routeAltitudeLimits)
{ {
RoutingManager::DistanceAltitude altitudes; RoutingManager::DistanceAltitude altitudes;
if (!frm()->GetRoutingManager().GetRouteAltitudesAndDistancesM(altitudes)) if (!frm()->GetRoutingManager().GetRouteAltitudesAndDistancesM(altitudes))
@@ -1398,13 +1398,13 @@ Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv *
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeShowCountry(JNIEnv * env, jclass, jstring countryId, jboolean zoomToDownloadButton) Java_app_organicmaps_Framework_nativeShowCountry(JNIEnv * env, jclass, jstring countryId, jboolean zoomToDownloadButton)
{ {
g_framework->ShowNode(jni::ToNativeString(env, countryId), (bool) zoomToDownloadButton); g_framework->ShowNode(jni::ToNativeString(env, countryId), (bool) zoomToDownloadButton);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetRoutingListener(JNIEnv * env, jclass, jobject listener) Java_app_organicmaps_Framework_nativeSetRoutingListener(JNIEnv * env, jclass, jobject listener)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
frm()->GetRoutingManager().SetRouteBuildingListener( frm()->GetRoutingManager().SetRouteBuildingListener(
@@ -1414,7 +1414,7 @@ Java_app_organicmaps_sdk_Framework_nativeSetRoutingListener(JNIEnv * env, jclass
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetRouteProgressListener(JNIEnv * env, jclass, jobject listener) Java_app_organicmaps_Framework_nativeSetRouteProgressListener(JNIEnv * env, jclass, jobject listener)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
frm()->GetRoutingManager().SetRouteProgressListener( frm()->GetRoutingManager().SetRouteProgressListener(
@@ -1422,7 +1422,7 @@ Java_app_organicmaps_sdk_Framework_nativeSetRouteProgressListener(JNIEnv * env,
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetRoutingRecommendationListener(JNIEnv * env, jclass, Java_app_organicmaps_Framework_nativeSetRoutingRecommendationListener(JNIEnv * env, jclass,
jobject listener) jobject listener)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
@@ -1431,7 +1431,7 @@ Java_app_organicmaps_sdk_Framework_nativeSetRoutingRecommendationListener(JNIEnv
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetRoutingLoadPointsListener( Java_app_organicmaps_Framework_nativeSetRoutingLoadPointsListener(
JNIEnv *, jclass, jobject listener) JNIEnv *, jclass, jobject listener)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
@@ -1442,19 +1442,19 @@ Java_app_organicmaps_sdk_Framework_nativeSetRoutingLoadPointsListener(
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeDeactivatePopup(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeDeactivatePopup(JNIEnv * env, jclass)
{ {
return g_framework->DeactivatePopup(); return g_framework->DeactivatePopup();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeDeactivateMapSelectionCircle(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeDeactivateMapSelectionCircle(JNIEnv * env, jclass)
{ {
return g_framework->DeactivateMapSelectionCircle(); return g_framework->DeactivateMapSelectionCircle();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeAddRoutePoint(JNIEnv * env, jclass, jstring title, Java_app_organicmaps_Framework_nativeAddRoutePoint(JNIEnv * env, jclass, jstring title,
jstring subtitle, jobject markType, jstring subtitle, jobject markType,
jint intermediateIndex, jint intermediateIndex,
jboolean isMyPosition, jboolean isMyPosition,
@@ -1473,64 +1473,64 @@ Java_app_organicmaps_sdk_Framework_nativeAddRoutePoint(JNIEnv * env, jclass, jst
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeRemoveRoutePoints(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeRemoveRoutePoints(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().RemoveRoutePoints(); frm()->GetRoutingManager().RemoveRoutePoints();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeRemoveRoutePoint(JNIEnv * env, jclass, jobject markType, jint intermediateIndex) Java_app_organicmaps_Framework_nativeRemoveRoutePoint(JNIEnv * env, jclass, jobject markType, jint intermediateIndex)
{ {
frm()->GetRoutingManager().RemoveRoutePoint(GetRouteMarkType(env, markType), frm()->GetRoutingManager().RemoveRoutePoint(GetRouteMarkType(env, markType),
static_cast<size_t>(intermediateIndex)); static_cast<size_t>(intermediateIndex));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeRemoveIntermediateRoutePoints(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeRemoveIntermediateRoutePoints(JNIEnv * env, jclass)
{ {
frm()->GetRoutingManager().RemoveIntermediateRoutePoints(); frm()->GetRoutingManager().RemoveIntermediateRoutePoints();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeCouldAddIntermediatePoint(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeCouldAddIntermediatePoint(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().CouldAddIntermediatePoint(); return frm()->GetRoutingManager().CouldAddIntermediatePoint();
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetRoutePoints(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetRoutePoints(JNIEnv * env, jclass)
{ {
return CreateRouteMarkDataArray(env, frm()->GetRoutingManager().GetRoutePoints()); return CreateRouteMarkDataArray(env, frm()->GetRoutingManager().GetRoutePoints());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeMoveRoutePoint(JNIEnv * env, jclass, Java_app_organicmaps_Framework_nativeMoveRoutePoint(JNIEnv * env, jclass,
jint currentIndex, jint targetIndex) jint currentIndex, jint targetIndex)
{ {
frm()->GetRoutingManager().MoveRoutePoint(currentIndex, targetIndex); frm()->GetRoutingManager().MoveRoutePoint(currentIndex, targetIndex);
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetTransitRouteInfo(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetTransitRouteInfo(JNIEnv * env, jclass)
{ {
return CreateTransitRouteInfo(env, frm()->GetRoutingManager().GetTransitRouteInfo()); return CreateTransitRouteInfo(env, frm()->GetRoutingManager().GetTransitRouteInfo());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeReloadWorldMaps(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeReloadWorldMaps(JNIEnv * env, jclass)
{ {
g_framework->ReloadWorldMaps(); g_framework->ReloadWorldMaps();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsDayTime(JNIEnv * env, jclass, jlong utcTimeSeconds, jdouble lat, jdouble lon) Java_app_organicmaps_Framework_nativeIsDayTime(JNIEnv * env, jclass, jlong utcTimeSeconds, jdouble lat, jdouble lon)
{ {
DayTimeType const dt = GetDayTime(static_cast<time_t>(utcTimeSeconds), lat, lon); DayTimeType const dt = GetDayTime(static_cast<time_t>(utcTimeSeconds), lat, lon);
return (dt == DayTimeType::Day || dt == DayTimeType::PolarDay); return (dt == DayTimeType::Day || dt == DayTimeType::PolarDay);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSet3dMode(JNIEnv * env, jclass, jboolean allow, jboolean allowBuildings) Java_app_organicmaps_Framework_nativeSet3dMode(JNIEnv * env, jclass, jboolean allow, jboolean allowBuildings)
{ {
bool const allow3d = static_cast<bool>(allow); bool const allow3d = static_cast<bool>(allow);
bool const allow3dBuildings = static_cast<bool>(allowBuildings); bool const allow3dBuildings = static_cast<bool>(allowBuildings);
@@ -1540,7 +1540,7 @@ Java_app_organicmaps_sdk_Framework_nativeSet3dMode(JNIEnv * env, jclass, jboolea
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeGet3dMode(JNIEnv * env, jclass, jobject result) Java_app_organicmaps_Framework_nativeGet3dMode(JNIEnv * env, jclass, jobject result)
{ {
bool enabled; bool enabled;
bool buildings; bool buildings;
@@ -1556,7 +1556,7 @@ Java_app_organicmaps_sdk_Framework_nativeGet3dMode(JNIEnv * env, jclass, jobject
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass, jboolean enabled) Java_app_organicmaps_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass, jboolean enabled)
{ {
bool const autoZoomEnabled = static_cast<bool>(enabled); bool const autoZoomEnabled = static_cast<bool>(enabled);
frm()->SaveAutoZoom(autoZoomEnabled); frm()->SaveAutoZoom(autoZoomEnabled);
@@ -1564,19 +1564,19 @@ Java_app_organicmaps_sdk_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) Java_app_organicmaps_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, jboolean enabled)
{ {
frm()->GetTransitManager().EnableTransitSchemeMode(static_cast<bool>(enabled)); frm()->GetTransitManager().EnableTransitSchemeMode(static_cast<bool>(enabled));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsTransitSchemeEnabled(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsTransitSchemeEnabled(JNIEnv * env, jclass)
{ {
return static_cast<jboolean>(frm()->LoadTransitSchemeEnabled()); return static_cast<jboolean>(frm()->LoadTransitSchemeEnabled());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetIsolinesLayerEnabled(JNIEnv * env, jclass, jboolean enabled) Java_app_organicmaps_Framework_nativeSetIsolinesLayerEnabled(JNIEnv * env, jclass, jboolean enabled)
{ {
auto const isolinesEnabled = static_cast<bool>(enabled); auto const isolinesEnabled = static_cast<bool>(enabled);
frm()->GetIsolinesManager().SetEnabled(isolinesEnabled); frm()->GetIsolinesManager().SetEnabled(isolinesEnabled);
@@ -1584,44 +1584,44 @@ Java_app_organicmaps_sdk_Framework_nativeSetIsolinesLayerEnabled(JNIEnv * env, j
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsIsolinesLayerEnabled(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsIsolinesLayerEnabled(JNIEnv * env, jclass)
{ {
return static_cast<jboolean>(frm()->LoadIsolinesEnabled()); return static_cast<jboolean>(frm()->LoadIsolinesEnabled());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetOutdoorsLayerEnabled(JNIEnv * env, jclass, jboolean enabled) Java_app_organicmaps_Framework_nativeSetOutdoorsLayerEnabled(JNIEnv * env, jclass, jboolean enabled)
{ {
frm()->SaveOutdoorsEnabled(enabled); frm()->SaveOutdoorsEnabled(enabled);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsOutdoorsLayerEnabled(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsOutdoorsLayerEnabled(JNIEnv * env, jclass)
{ {
return static_cast<jboolean>(frm()->LoadOutdoorsEnabled()); return static_cast<jboolean>(frm()->LoadOutdoorsEnabled());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSaveSettingSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) Java_app_organicmaps_Framework_nativeSaveSettingSchemeEnabled(JNIEnv * env, jclass, jboolean enabled)
{ {
frm()->SaveTransitSchemeEnabled(static_cast<bool>(enabled)); frm()->SaveTransitSchemeEnabled(static_cast<bool>(enabled));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass)
{ {
return frm()->LoadAutoZoom(); return frm()->LoadAutoZoom();
} }
// static void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate); // static void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeZoomToPoint(JNIEnv * env, jclass, jdouble lat, jdouble lon, jint zoom, jboolean animate) Java_app_organicmaps_Framework_nativeZoomToPoint(JNIEnv * env, jclass, jdouble lat, jdouble lon, jint zoom, jboolean animate)
{ {
g_framework->Scale(m2::PointD(mercator::FromLatLon(lat, lon)), zoom, animate); g_framework->Scale(m2::PointD(mercator::FromLatLon(lat, lon)), zoom, animate);
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass)
{ {
if (!frm()->HasPlacePageInfo()) if (!frm()->HasPlacePageInfo())
return nullptr; return nullptr;
@@ -1640,7 +1640,7 @@ Java_app_organicmaps_sdk_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * en
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetPoiContactUrl(JNIEnv *env, jclass, jint id) Java_app_organicmaps_Framework_nativeGetPoiContactUrl(JNIEnv *env, jclass, jint id)
{ {
auto const metaID = static_cast<osm::MapObject::MetadataID>(id); auto const metaID = static_cast<osm::MapObject::MetadataID>(id);
string_view const value = g_framework->GetPlacePageInfo().GetMetadata(metaID); string_view const value = g_framework->GetPlacePageInfo().GetMetadata(metaID);
@@ -1650,14 +1650,14 @@ Java_app_organicmaps_sdk_Framework_nativeGetPoiContactUrl(JNIEnv *env, jclass, j
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsDownloadedMapAtScreenCenter(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeIsDownloadedMapAtScreenCenter(JNIEnv *, jclass)
{ {
::Framework * fr = frm(); ::Framework * fr = frm();
return storage::IsPointCoveredByDownloadedMaps(fr->GetViewportCenter(), fr->GetStorage(), fr->GetCountryInfoGetter()); return storage::IsPointCoveredByDownloadedMaps(fr->GetViewportCenter(), fr->GetStorage(), fr->GetCountryInfoGetter());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetActiveObjectFormattedCuisine(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeGetActiveObjectFormattedCuisine(JNIEnv * env, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -1667,75 +1667,75 @@ Java_app_organicmaps_sdk_Framework_nativeGetActiveObjectFormattedCuisine(JNIEnv
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetVisibleRect(JNIEnv * env, jclass, jint left, jint top, jint right, jint bottom) Java_app_organicmaps_Framework_nativeSetVisibleRect(JNIEnv * env, jclass, jint left, jint top, jint right, jint bottom)
{ {
frm()->SetVisibleViewport(m2::RectD(left, top, right, bottom)); frm()->SetVisibleViewport(m2::RectD(left, top, right, bottom));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeIsRouteFinished(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeIsRouteFinished(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().IsRouteFinished(); return frm()->GetRoutingManager().IsRouteFinished();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeRunFirstLaunchAnimation(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeRunFirstLaunchAnimation(JNIEnv * env, jclass)
{ {
frm()->RunFirstLaunchAnimation(); frm()->RunFirstLaunchAnimation();
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeOpenRoutePointsTransaction(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeOpenRoutePointsTransaction(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().OpenRoutePointsTransaction(); return frm()->GetRoutingManager().OpenRoutePointsTransaction();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeApplyRoutePointsTransaction(JNIEnv * env, jclass, Java_app_organicmaps_Framework_nativeApplyRoutePointsTransaction(JNIEnv * env, jclass,
jint transactionId) jint transactionId)
{ {
frm()->GetRoutingManager().ApplyRoutePointsTransaction(transactionId); frm()->GetRoutingManager().ApplyRoutePointsTransaction(transactionId);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeCancelRoutePointsTransaction(JNIEnv * env, jclass, Java_app_organicmaps_Framework_nativeCancelRoutePointsTransaction(JNIEnv * env, jclass,
jint transactionId) jint transactionId)
{ {
frm()->GetRoutingManager().CancelRoutePointsTransaction(transactionId); frm()->GetRoutingManager().CancelRoutePointsTransaction(transactionId);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeInvalidRoutePointsTransactionId(JNIEnv * env, jclass) Java_app_organicmaps_Framework_nativeInvalidRoutePointsTransactionId(JNIEnv * env, jclass)
{ {
return frm()->GetRoutingManager().InvalidRoutePointsTransactionId(); return frm()->GetRoutingManager().InvalidRoutePointsTransactionId();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeHasSavedRoutePoints(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeHasSavedRoutePoints(JNIEnv *, jclass)
{ {
return frm()->GetRoutingManager().HasSavedRoutePoints(); return frm()->GetRoutingManager().HasSavedRoutePoints();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeLoadRoutePoints(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeLoadRoutePoints(JNIEnv *, jclass)
{ {
frm()->GetRoutingManager().LoadRoutePoints(g_loadRouteHandler); frm()->GetRoutingManager().LoadRoutePoints(g_loadRouteHandler);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSaveRoutePoints(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeSaveRoutePoints(JNIEnv *, jclass)
{ {
frm()->GetRoutingManager().SaveRoutePoints(); frm()->GetRoutingManager().SaveRoutePoints();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeDeleteSavedRoutePoints(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeDeleteSavedRoutePoints(JNIEnv *, jclass)
{ {
frm()->GetRoutingManager().DeleteSavedRoutePoints(); frm()->GetRoutingManager().DeleteSavedRoutePoints();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeShowFeature(JNIEnv * env, jclass, jobject featureId) Java_app_organicmaps_Framework_nativeShowFeature(JNIEnv * env, jclass, jobject featureId)
{ {
auto const f = g_framework->BuildFeatureId(env, featureId); auto const f = g_framework->BuildFeatureId(env, featureId);
@@ -1744,13 +1744,13 @@ Java_app_organicmaps_sdk_Framework_nativeShowFeature(JNIEnv * env, jclass, jobje
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeMakeCrash(JNIEnv *env, jclass type) Java_app_organicmaps_Framework_nativeMakeCrash(JNIEnv *env, jclass type)
{ {
CHECK(false, ("Diagnostic native crash!")); CHECK(false, ("Diagnostic native crash!"));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerFacility(JNIEnv *, jclass, Java_app_organicmaps_Framework_nativeSetPowerManagerFacility(JNIEnv *, jclass,
jint facilityType, jboolean state) jint facilityType, jboolean state)
{ {
frm()->GetPowerManager().SetFacility(static_cast<power_management::Facility>(facilityType), frm()->GetPowerManager().SetFacility(static_cast<power_management::Facility>(facilityType),
@@ -1758,32 +1758,32 @@ Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerFacility(JNIEnv *, jclas
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_Framework_nativeGetPowerManagerScheme(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeGetPowerManagerScheme(JNIEnv *, jclass)
{ {
return static_cast<jint>(frm()->GetPowerManager().GetScheme()); return static_cast<jint>(frm()->GetPowerManager().GetScheme());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerScheme(JNIEnv *, jclass, jint schemeType) Java_app_organicmaps_Framework_nativeSetPowerManagerScheme(JNIEnv *, jclass, jint schemeType)
{ {
frm()->GetPowerManager().SetScheme(static_cast<power_management::Scheme>(schemeType)); frm()->GetPowerManager().SetScheme(static_cast<power_management::Scheme>(schemeType));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetViewportCenter(JNIEnv *, jclass, jdouble lat, jdouble lon, jint zoom) Java_app_organicmaps_Framework_nativeSetViewportCenter(JNIEnv *, jclass, jdouble lat, jdouble lon, jint zoom)
{ {
// isAnim = true because of previous nativeSetChoosePositionMode animations. // isAnim = true because of previous nativeSetChoosePositionMode animations.
frm()->SetViewportCenter(mercator::FromLatLon(lat, lon), static_cast<int>(zoom), true /* isAnim */); frm()->SetViewportCenter(mercator::FromLatLon(lat, lon), static_cast<int>(zoom), true /* isAnim */);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeStopLocationFollow(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeStopLocationFollow(JNIEnv *, jclass)
{ {
frm()->StopLocationFollow(); frm()->StopLocationFollow();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeSetSearchViewport(JNIEnv *, jclass, jdouble lat, Java_app_organicmaps_Framework_nativeSetSearchViewport(JNIEnv *, jclass, jdouble lat,
jdouble lon, jint zoom) jdouble lon, jint zoom)
{ {
auto const center = mercator::FromLatLon(static_cast<double>(lat), auto const center = mercator::FromLatLon(static_cast<double>(lat),
@@ -1793,15 +1793,85 @@ Java_app_organicmaps_sdk_Framework_nativeSetSearchViewport(JNIEnv *, jclass, jdo
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Framework_nativeHasPlacePageInfo(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeHasPlacePageInfo(JNIEnv *, jclass)
{ {
return static_cast<jboolean>(frm()->HasPlacePageInfo()); return static_cast<jboolean>(frm()->HasPlacePageInfo());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Framework_nativeMemoryWarning(JNIEnv *, jclass) Java_app_organicmaps_Framework_nativeMemoryWarning(JNIEnv *, jclass)
{ {
return frm()->MemoryWarning(); return frm()->MemoryWarning();
} }
JNIEXPORT jboolean JNICALL
Java_app_organicmaps_Framework_nativeShouldShowProducts(JNIEnv * env, jclass)
{
return frm()->ShouldShowProducts();
}
JNIEXPORT jobject JNICALL
Java_app_organicmaps_Framework_nativeGetProductsConfiguration(JNIEnv * env, jclass)
{
auto config = frm()->GetProductsConfiguration();
if (!config) return nullptr;
static jclass const productClass = jni::GetGlobalClassRef(
env,
"app/organicmaps/products/Product"
);
static jmethodID const productConstructor = jni::GetConstructorID(
env,
productClass,
"(Ljava/lang/String;Ljava/lang/String;)V"
);
jobjectArray products = jni::ToJavaArray(
env,
productClass,
config->GetProducts(),
[](JNIEnv * env, products::ProductsConfig::Product const & product)
{
jni::TScopedLocalRef const title(env, jni::ToJavaString(env, product.GetTitle()));
jni::TScopedLocalRef const link(env, jni::ToJavaString(env, product.GetLink()));
return env->NewObject(
productClass,
productConstructor,
title.get(),
link.get()
);
});
static jclass const productsConfigClass = jni::GetGlobalClassRef(
env,
"app/organicmaps/products/ProductsConfig"
);
static jmethodID const productsConfigConstructor = jni::GetConstructorID(
env,
productsConfigClass,
"(Ljava/lang/String;[Lapp/organicmaps/products/Product;)V"
);
jni::TScopedLocalRef const placePagePrompt(env, jni::ToJavaString(env, config->GetPlacePagePrompt()));
return env->NewObject(productsConfigClass, productsConfigConstructor, placePagePrompt.get(), products);
}
JNIEXPORT void JNICALL
Java_app_organicmaps_Framework_nativeDidCloseProductsPopup(JNIEnv * env, jclass, jstring reason)
{
frm()->DidCloseProductsPopup(frm()->FromString(jni::ToNativeString(env, reason)));
}
JNIEXPORT void JNICALL
Java_app_organicmaps_Framework_nativeDidSelectProduct(JNIEnv * env, jclass, jstring title, jstring link)
{
products::ProductsConfig::Product product(
jni::ToNativeString(env, title),
jni::ToNativeString(env, link)
);
frm()->DidSelectProduct(product);
}
} // extern "C" } // extern "C"

View File

@@ -1,9 +1,9 @@
#include "Framework.hpp" #include "Framework.hpp"
#include "map/gps_tracker.hpp" #include "map/gps_tracker.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/platform/AndroidPlatform.hpp"
extern "C" extern "C"
{ {
@@ -18,7 +18,7 @@ static void LocationStateModeChanged(location::EMyPositionMode mode,
// public static void nativeSwitchToNextMode(); // public static void nativeSwitchToNextMode();
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_LocationState_nativeSwitchToNextMode(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_LocationState_nativeSwitchToNextMode(JNIEnv * env, jclass clazz)
{ {
ASSERT(g_framework, ()); ASSERT(g_framework, ());
g_framework->SwitchMyPositionNextMode(); g_framework->SwitchMyPositionNextMode();
@@ -26,7 +26,7 @@ Java_app_organicmaps_sdk_location_LocationState_nativeSwitchToNextMode(JNIEnv *
// private static int nativeGetMode(); // private static int nativeGetMode();
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_location_LocationState_nativeGetMode(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_LocationState_nativeGetMode(JNIEnv * env, jclass clazz)
{ {
// GetMyPositionMode() is initialized only after drape creation. // GetMyPositionMode() is initialized only after drape creation.
// https://github.com/organicmaps/organicmaps/issues/1128#issuecomment-1784435190 // https://github.com/organicmaps/organicmaps/issues/1128#issuecomment-1784435190
@@ -36,7 +36,7 @@ Java_app_organicmaps_sdk_location_LocationState_nativeGetMode(JNIEnv * env, jcla
// public static void nativeSetListener(ModeChangeListener listener); // public static void nativeSetListener(ModeChangeListener listener);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_LocationState_nativeSetListener(JNIEnv * env, jclass clazz, Java_app_organicmaps_location_LocationState_nativeSetListener(JNIEnv * env, jclass clazz,
jobject listener) jobject listener)
{ {
ASSERT(g_framework, ()); ASSERT(g_framework, ());
@@ -46,21 +46,21 @@ Java_app_organicmaps_sdk_location_LocationState_nativeSetListener(JNIEnv * env,
// public static void nativeRemoveListener(); // public static void nativeRemoveListener();
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_LocationState_nativeRemoveListener(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_LocationState_nativeRemoveListener(JNIEnv * env, jclass clazz)
{ {
ASSERT(g_framework, ()); ASSERT(g_framework, ());
g_framework->SetMyPositionModeListener(location::TMyPositionModeChanged()); g_framework->SetMyPositionModeListener(location::TMyPositionModeChanged());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_LocationState_nativeOnLocationError(JNIEnv * env, jclass clazz, int errorCode) Java_app_organicmaps_location_LocationState_nativeOnLocationError(JNIEnv * env, jclass clazz, int errorCode)
{ {
ASSERT(g_framework, ()); ASSERT(g_framework, ());
g_framework->OnLocationError(errorCode); g_framework->OnLocationError(errorCode);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_LocationState_nativeLocationUpdated(JNIEnv * env, jclass clazz, jlong time, Java_app_organicmaps_location_LocationState_nativeLocationUpdated(JNIEnv * env, jclass clazz, jlong time,
jdouble lat, jdouble lon, jfloat accuracy, jdouble lat, jdouble lon, jfloat accuracy,
jdouble altitude, jfloat speed, jfloat bearing) jdouble altitude, jfloat speed, jfloat bearing)
{ {

View File

@@ -1,8 +1,8 @@
#include "Framework.hpp" #include "Framework.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/platform/AndroidPlatform.hpp"
#include "storage/storage_defines.hpp" #include "storage/storage_defines.hpp"
@@ -23,7 +23,7 @@ void OnRenderingInitializationFinished(std::shared_ptr<jobject> const & listener
extern "C" extern "C"
{ {
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Map_nativeCreateEngine(JNIEnv * env, jclass, Java_app_organicmaps_Map_nativeCreateEngine(JNIEnv * env, jclass,
jobject surface, jint density, jobject surface, jint density,
jboolean firstLaunch, jboolean firstLaunch,
jboolean isLaunchByDeepLink, jboolean isLaunchByDeepLink,
@@ -35,25 +35,25 @@ Java_app_organicmaps_sdk_Map_nativeCreateEngine(JNIEnv * env, jclass,
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Map_nativeIsEngineCreated(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeIsEngineCreated(JNIEnv *, jclass)
{ {
return g_framework->IsDrapeEngineCreated(); return g_framework->IsDrapeEngineCreated();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeUpdateEngineDpi(JNIEnv *, jclass, jint dpi) Java_app_organicmaps_Map_nativeUpdateEngineDpi(JNIEnv *, jclass, jint dpi)
{ {
return g_framework->UpdateDpi(dpi); return g_framework->UpdateDpi(dpi);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeExecuteMapApiRequest(JNIEnv * env, jclass) Java_app_organicmaps_Map_nativeExecuteMapApiRequest(JNIEnv * env, jclass)
{ {
return g_framework->ExecuteMapApiRequest(); return g_framework->ExecuteMapApiRequest();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeSetRenderingInitializationFinishedListener( Java_app_organicmaps_Map_nativeSetRenderingInitializationFinishedListener(
JNIEnv *, jclass, jobject listener) JNIEnv *, jclass, jobject listener)
{ {
if (listener) if (listener)
@@ -68,68 +68,68 @@ Java_app_organicmaps_sdk_Map_nativeSetRenderingInitializationFinishedListener(
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Map_nativeAttachSurface(JNIEnv * env, jclass, jobject surface) Java_app_organicmaps_Map_nativeAttachSurface(JNIEnv * env, jclass, jobject surface)
{ {
return g_framework->AttachSurface(env, surface); return g_framework->AttachSurface(env, surface);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeDetachSurface(JNIEnv *, jclass, jboolean destroySurface) Java_app_organicmaps_Map_nativeDetachSurface(JNIEnv *, jclass, jboolean destroySurface)
{ {
g_framework->DetachSurface(destroySurface); g_framework->DetachSurface(destroySurface);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeSurfaceChanged(JNIEnv * env, jclass, jobject surface, jint w, jint h) Java_app_organicmaps_Map_nativeSurfaceChanged(JNIEnv * env, jclass, jobject surface, jint w, jint h)
{ {
g_framework->Resize(env, surface, w, h); g_framework->Resize(env, surface, w, h);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_Map_nativeDestroySurfaceOnDetach(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeDestroySurfaceOnDetach(JNIEnv *, jclass)
{ {
return g_framework->DestroySurfaceOnDetach(); return g_framework->DestroySurfaceOnDetach();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativePauseSurfaceRendering(JNIEnv *, jclass) Java_app_organicmaps_Map_nativePauseSurfaceRendering(JNIEnv *, jclass)
{ {
g_framework->PauseSurfaceRendering(); g_framework->PauseSurfaceRendering();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeResumeSurfaceRendering(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeResumeSurfaceRendering(JNIEnv *, jclass)
{ {
g_framework->ResumeSurfaceRendering(); g_framework->ResumeSurfaceRendering();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeUpdateMyPositionRoutingOffset(JNIEnv * env, jclass clazz, int offsetY) Java_app_organicmaps_Map_nativeUpdateMyPositionRoutingOffset(JNIEnv * env, jclass clazz, int offsetY)
{ {
g_framework->UpdateMyPositionRoutingOffset(offsetY); g_framework->UpdateMyPositionRoutingOffset(offsetY);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeApplyWidgets(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeApplyWidgets(JNIEnv *, jclass)
{ {
g_framework->ApplyWidgets(); g_framework->ApplyWidgets();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeCleanWidgets(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeCleanWidgets(JNIEnv *, jclass)
{ {
g_framework->CleanWidgets(); g_framework->CleanWidgets();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeSetupWidget( Java_app_organicmaps_Map_nativeSetupWidget(
JNIEnv *, jclass, jint widget, jfloat x, jfloat y, jint anchor) JNIEnv *, jclass, jint widget, jfloat x, jfloat y, jint anchor)
{ {
g_framework->SetupWidget(static_cast<gui::EWidget>(widget), x, y, static_cast<dp::Anchor>(anchor)); g_framework->SetupWidget(static_cast<gui::EWidget>(widget), x, y, static_cast<dp::Anchor>(anchor));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeCompassUpdated(JNIEnv *, jclass, jdouble north, jboolean forceRedraw) Java_app_organicmaps_Map_nativeCompassUpdated(JNIEnv *, jclass, jdouble north, jboolean forceRedraw)
{ {
location::CompassInfo info; location::CompassInfo info;
info.m_bearing = north; info.m_bearing = north;
@@ -138,33 +138,33 @@ Java_app_organicmaps_sdk_Map_nativeCompassUpdated(JNIEnv *, jclass, jdouble nort
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeScalePlus(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeScalePlus(JNIEnv *, jclass)
{ {
g_framework->Scale(::Framework::SCALE_MAG); g_framework->Scale(::Framework::SCALE_MAG);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeScaleMinus(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeScaleMinus(JNIEnv *, jclass)
{ {
g_framework->Scale(::Framework::SCALE_MIN); g_framework->Scale(::Framework::SCALE_MIN);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeOnScroll( Java_app_organicmaps_Map_nativeOnScroll(
JNIEnv *, jclass, jdouble distanceX, jdouble distanceY) JNIEnv *, jclass, jdouble distanceX, jdouble distanceY)
{ {
g_framework->Scroll(distanceX, distanceY); g_framework->Scroll(distanceX, distanceY);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeOnScale( Java_app_organicmaps_Map_nativeOnScale(
JNIEnv *, jclass, jdouble factor, jdouble focusX, jdouble focusY, jboolean isAnim) JNIEnv *, jclass, jdouble factor, jdouble focusX, jdouble focusY, jboolean isAnim)
{ {
g_framework->Scale(factor, {focusX, focusY}, isAnim); g_framework->Scale(factor, {focusX, focusY}, isAnim);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeOnTouch(JNIEnv *, jclass, jint action, Java_app_organicmaps_Map_nativeOnTouch(JNIEnv *, jclass, jint action,
jint id1, jfloat x1, jfloat y1, jint id1, jfloat x1, jfloat y1,
jint id2, jfloat x2, jfloat y2, jint id2, jfloat x2, jfloat y2,
jint maskedPointer) jint maskedPointer)
@@ -175,14 +175,14 @@ Java_app_organicmaps_sdk_Map_nativeOnTouch(JNIEnv *, jclass, jint action,
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeStorageConnected(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeStorageConnected(JNIEnv *, jclass)
{ {
android::Platform::Instance().OnExternalStorageStatusChanged(true); android::Platform::Instance().OnExternalStorageStatusChanged(true);
g_framework->AddLocalMaps(); g_framework->AddLocalMaps();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_Map_nativeStorageDisconnected(JNIEnv *, jclass) Java_app_organicmaps_Map_nativeStorageDisconnected(JNIEnv *, jclass)
{ {
android::Platform::Instance().OnExternalStorageStatusChanged(false); android::Platform::Instance().OnExternalStorageStatusChanged(false);
g_framework->RemoveLocalMaps(); g_framework->RemoveLocalMaps();

View File

@@ -1,7 +1,7 @@
#include "Framework.hpp" #include "Framework.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/core/jni_java_methods.hpp" #include "app/organicmaps/core/jni_java_methods.hpp"
#include "coding/internal/file_data.hpp" #include "coding/internal/file_data.hpp"
@@ -70,7 +70,7 @@ struct CountryItemBuilder
CountryItemBuilder(JNIEnv *env) CountryItemBuilder(JNIEnv *env)
{ {
m_class = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/CountryItem"); m_class = jni::GetGlobalClassRef(env, "app/organicmaps/downloader/CountryItem");
m_ctor = jni::GetConstructorID(env, m_class, "(Ljava/lang/String;)V"); m_ctor = jni::GetConstructorID(env, m_class, "(Ljava/lang/String;)V");
m_Id = env->GetFieldID(m_class, "id", "Ljava/lang/String;"); m_Id = env->GetFieldID(m_class, "id", "Ljava/lang/String;");
@@ -112,55 +112,55 @@ extern "C"
// static String nativeGetRoot(); // static String nativeGetRoot();
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetRoot(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeGetRoot(JNIEnv * env, jclass clazz)
{ {
return jni::ToJavaString(env, GetStorage().GetRootId()); return jni::ToJavaString(env, GetStorage().GetRootId());
} }
// static boolean nativeMoveFile(String oldFile, String newFile); // static boolean nativeMoveFile(String oldFile, String newFile);
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeMoveFile(JNIEnv * env, jclass clazz, jstring oldFile, jstring newFile) Java_app_organicmaps_downloader_MapManager_nativeMoveFile(JNIEnv * env, jclass clazz, jstring oldFile, jstring newFile)
{ {
return base::MoveFileX(jni::ToNativeString(env, oldFile), jni::ToNativeString(env, newFile)); return base::MoveFileX(jni::ToNativeString(env, oldFile), jni::ToNativeString(env, newFile));
} }
// static boolean nativeHasSpaceToDownloadAmount(long bytes); // static boolean nativeHasSpaceToDownloadAmount(long bytes);
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToDownloadAmount(JNIEnv * env, jclass clazz, jlong bytes) Java_app_organicmaps_downloader_MapManager_nativeHasSpaceToDownloadAmount(JNIEnv * env, jclass clazz, jlong bytes)
{ {
return storage::IsEnoughSpaceForDownload(bytes); return storage::IsEnoughSpaceForDownload(bytes);
} }
// static boolean nativeHasSpaceToDownloadCountry(String root); // static boolean nativeHasSpaceToDownloadCountry(String root);
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToDownloadCountry(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeHasSpaceToDownloadCountry(JNIEnv * env, jclass clazz, jstring root)
{ {
return storage::IsEnoughSpaceForDownload(jni::ToNativeString(env, root), GetStorage()); return storage::IsEnoughSpaceForDownload(jni::ToNativeString(env, root), GetStorage());
} }
// static boolean nativeHasSpaceToUpdate(String root); // static boolean nativeHasSpaceToUpdate(String root);
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToUpdate(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeHasSpaceToUpdate(JNIEnv * env, jclass clazz, jstring root)
{ {
return IsEnoughSpaceForUpdate(jni::ToNativeString(env, root), GetStorage()); return IsEnoughSpaceForUpdate(jni::ToNativeString(env, root), GetStorage());
} }
// static int nativeGetDownloadedCount(); // static int nativeGetDownloadedCount();
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetDownloadedCount(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeGetDownloadedCount(JNIEnv * env, jclass clazz)
{ {
return static_cast<jint>(GetStorage().GetDownloadedFilesCount()); return static_cast<jint>(GetStorage().GetDownloadedFilesCount());
} }
// static @Nullable UpdateInfo nativeGetUpdateInfo(@Nullable String root); // static @Nullable UpdateInfo nativeGetUpdateInfo(@Nullable String root);
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetUpdateInfo(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeGetUpdateInfo(JNIEnv * env, jclass clazz, jstring root)
{ {
storage::Storage::UpdateInfo info; storage::Storage::UpdateInfo info;
if (!GetStorage().GetUpdateInfo(GetRootId(env, root), info)) if (!GetStorage().GetUpdateInfo(GetRootId(env, root), info))
return nullptr; return nullptr;
static jclass const infoClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/UpdateInfo"); static jclass const infoClass = jni::GetGlobalClassRef(env, "app/organicmaps/downloader/UpdateInfo");
ASSERT(infoClass, (jni::DescribeException())); ASSERT(infoClass, (jni::DescribeException()));
static jmethodID const ctor = jni::GetConstructorID(env, infoClass, "(IJ)V"); static jmethodID const ctor = jni::GetConstructorID(env, infoClass, "(IJ)V");
ASSERT(ctor, (jni::DescribeException())); ASSERT(ctor, (jni::DescribeException()));
@@ -269,7 +269,7 @@ static void PutItemsToList(
// static void nativeListItems(@Nullable String root, double lat, double lon, boolean hasLocation, boolean myMapsMode, List<CountryItem> result); // static void nativeListItems(@Nullable String root, double lat, double lon, boolean hasLocation, boolean myMapsMode, List<CountryItem> result);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeListItems(JNIEnv * env, jclass clazz, jstring parent, jdouble lat, jdouble lon, jboolean hasLocation, jboolean myMapsMode, jobject result) Java_app_organicmaps_downloader_MapManager_nativeListItems(JNIEnv * env, jclass clazz, jstring parent, jdouble lat, jdouble lon, jboolean hasLocation, jboolean myMapsMode, jobject result)
{ {
if (hasLocation && !myMapsMode) if (hasLocation && !myMapsMode)
{ {
@@ -292,7 +292,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeListItems(JNIEnv * env, jcl
// static void nativeUpdateItem(CountryItem item); // static void nativeUpdateItem(CountryItem item);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetAttributes(JNIEnv * env, jclass, jobject item) Java_app_organicmaps_downloader_MapManager_nativeGetAttributes(JNIEnv * env, jclass, jobject item)
{ {
auto const & ciBuilder = CountryItemBuilder::Instance(env); auto const & ciBuilder = CountryItemBuilder::Instance(env);
jstring id = static_cast<jstring>(env->GetObjectField(item, ciBuilder.m_Id)); jstring id = static_cast<jstring>(env->GetObjectField(item, ciBuilder.m_Id));
@@ -305,7 +305,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetAttributes(JNIEnv * env,
// static void nativeGetStatus(String root); // static void nativeGetStatus(String root);
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetStatus(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeGetStatus(JNIEnv * env, jclass clazz, jstring root)
{ {
storage::NodeStatuses ns; storage::NodeStatuses ns;
GetStorage().GetNodeStatuses(jni::ToNativeString(env, root), ns); GetStorage().GetNodeStatuses(jni::ToNativeString(env, root), ns);
@@ -314,7 +314,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetStatus(JNIEnv * env, jcl
// static void nativeGetError(String root); // static void nativeGetError(String root);
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetError(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeGetError(JNIEnv * env, jclass clazz, jstring root)
{ {
storage::NodeStatuses ns; storage::NodeStatuses ns;
GetStorage().GetNodeStatuses(jni::ToNativeString(env, root), ns); GetStorage().GetNodeStatuses(jni::ToNativeString(env, root), ns);
@@ -323,21 +323,21 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetError(JNIEnv * env, jcla
// static String nativeGetName(String root); // static String nativeGetName(String root);
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetName(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeGetName(JNIEnv * env, jclass clazz, jstring root)
{ {
return jni::ToJavaString(env, GetStorage().GetNodeLocalName(jni::ToNativeString(env, root))); return jni::ToJavaString(env, GetStorage().GetNodeLocalName(jni::ToNativeString(env, root)));
} }
// static @Nullable String nativeFindCountry(double lat, double lon); // static @Nullable String nativeFindCountry(double lat, double lon);
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeFindCountry(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon) Java_app_organicmaps_downloader_MapManager_nativeFindCountry(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon)
{ {
return jni::ToJavaString(env, g_framework->NativeFramework()->GetCountryInfoGetter().GetRegionCountryId(mercator::FromLatLon(lat, lon))); return jni::ToJavaString(env, g_framework->NativeFramework()->GetCountryInfoGetter().GetRegionCountryId(mercator::FromLatLon(lat, lon)));
} }
// static boolean nativeIsDownloading(); // static boolean nativeIsDownloading();
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeIsDownloading(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeIsDownloading(JNIEnv * env, jclass clazz)
{ {
return static_cast<jboolean>(GetStorage().IsDownloadInProgress()); return static_cast<jboolean>(GetStorage().IsDownloadInProgress());
} }
@@ -365,7 +365,7 @@ static void EndBatchingCallbacks(JNIEnv * env)
for (TBatchedData const & dataItem : key.second) for (TBatchedData const & dataItem : key.second)
{ {
// Create StorageCallbackData instance… // Create StorageCallbackData instance…
static jclass batchDataClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/MapManager$StorageCallbackData"); static jclass batchDataClass = jni::GetGlobalClassRef(env, "app/organicmaps/downloader/MapManager$StorageCallbackData");
static jmethodID batchDataCtor = jni::GetConstructorID(env, batchDataClass, "(Ljava/lang/String;IIZ)V"); static jmethodID batchDataCtor = jni::GetConstructorID(env, batchDataClass, "(Ljava/lang/String;IIZ)V");
jni::TScopedLocalRef const id(env, jni::ToJavaString(env, dataItem.m_countryId)); jni::TScopedLocalRef const id(env, jni::ToJavaString(env, dataItem.m_countryId));
@@ -388,7 +388,7 @@ static void EndBatchingCallbacks(JNIEnv * env)
// static void nativeDownload(String root); // static void nativeDownload(String root);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeDownload(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeDownload(JNIEnv * env, jclass clazz, jstring root)
{ {
StartBatchingCallbacks(); StartBatchingCallbacks();
GetStorage().DownloadNode(jni::ToNativeString(env, root)); GetStorage().DownloadNode(jni::ToNativeString(env, root));
@@ -397,7 +397,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeDownload(JNIEnv * env, jcla
// static boolean nativeRetry(String root); // static boolean nativeRetry(String root);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeRetry(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeRetry(JNIEnv * env, jclass clazz, jstring root)
{ {
StartBatchingCallbacks(); StartBatchingCallbacks();
GetStorage().RetryDownloadNode(jni::ToNativeString(env, root)); GetStorage().RetryDownloadNode(jni::ToNativeString(env, root));
@@ -406,7 +406,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeRetry(JNIEnv * env, jclass
// static void nativeUpdate(String root); // static void nativeUpdate(String root);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeUpdate(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeUpdate(JNIEnv * env, jclass clazz, jstring root)
{ {
StartBatchingCallbacks(); StartBatchingCallbacks();
GetStorage().UpdateNode(GetRootId(env, root)); GetStorage().UpdateNode(GetRootId(env, root));
@@ -415,7 +415,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeUpdate(JNIEnv * env, jclass
// static void nativeCancel(String root); // static void nativeCancel(String root);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeCancel(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeCancel(JNIEnv * env, jclass clazz, jstring root)
{ {
StartBatchingCallbacks(); StartBatchingCallbacks();
GetStorage().CancelDownloadNode(GetRootId(env, root)); GetStorage().CancelDownloadNode(GetRootId(env, root));
@@ -424,7 +424,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeCancel(JNIEnv * env, jclass
// static void nativeDelete(String root); // static void nativeDelete(String root);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeDelete(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeDelete(JNIEnv * env, jclass clazz, jstring root)
{ {
StartBatchingCallbacks(); StartBatchingCallbacks();
auto const countryId = jni::ToNativeString(env, root); auto const countryId = jni::ToNativeString(env, root);
@@ -457,7 +457,7 @@ static void ProgressChangedCallback(std::shared_ptr<jobject> const & listenerRef
// static int nativeSubscribe(StorageCallback listener); // static int nativeSubscribe(StorageCallback listener);
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribe(JNIEnv * env, jclass clazz, jobject listener) Java_app_organicmaps_downloader_MapManager_nativeSubscribe(JNIEnv * env, jclass clazz, jobject listener)
{ {
return GetStorage().Subscribe(std::bind(&StatusChangedCallback, jni::make_global_ref(listener), std::placeholders::_1), return GetStorage().Subscribe(std::bind(&StatusChangedCallback, jni::make_global_ref(listener), std::placeholders::_1),
std::bind(&ProgressChangedCallback, jni::make_global_ref(listener), std::placeholders::_1, std::placeholders::_2)); std::bind(&ProgressChangedCallback, jni::make_global_ref(listener), std::placeholders::_1, std::placeholders::_2));
@@ -465,14 +465,14 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribe(JNIEnv * env, jcl
// static void nativeUnsubscribe(int slot); // static void nativeUnsubscribe(int slot);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribe(JNIEnv * env, jclass clazz, jint slot) Java_app_organicmaps_downloader_MapManager_nativeUnsubscribe(JNIEnv * env, jclass clazz, jint slot)
{ {
GetStorage().Unsubscribe(slot); GetStorage().Unsubscribe(slot);
} }
// static void nativeSubscribeOnCountryChanged(CurrentCountryChangedListener listener); // static void nativeSubscribeOnCountryChanged(CurrentCountryChangedListener listener);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribeOnCountryChanged(JNIEnv * env, jclass clazz, jobject listener) Java_app_organicmaps_downloader_MapManager_nativeSubscribeOnCountryChanged(JNIEnv * env, jclass clazz, jobject listener)
{ {
ASSERT(!g_countryChangedListener, ()); ASSERT(!g_countryChangedListener, ());
g_countryChangedListener = env->NewGlobalRef(listener); g_countryChangedListener = env->NewGlobalRef(listener);
@@ -492,7 +492,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribeOnCountryChanged(J
// static void nativeUnsubscribeOnCountryChanged(); // static void nativeUnsubscribeOnCountryChanged();
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribeOnCountryChanged(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeUnsubscribeOnCountryChanged(JNIEnv * env, jclass clazz)
{ {
g_framework->NativeFramework()->SetCurrentCountryChangedListener(nullptr); g_framework->NativeFramework()->SetCurrentCountryChangedListener(nullptr);
@@ -502,14 +502,14 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribeOnCountryChanged
// static boolean nativeHasUnsavedEditorChanges(String root); // static boolean nativeHasUnsavedEditorChanges(String root);
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeHasUnsavedEditorChanges(JNIEnv * env, jclass clazz, jstring root) Java_app_organicmaps_downloader_MapManager_nativeHasUnsavedEditorChanges(JNIEnv * env, jclass clazz, jstring root)
{ {
return g_framework->NativeFramework()->HasUnsavedEdits(jni::ToNativeString(env, root)); return g_framework->NativeFramework()->HasUnsavedEdits(jni::ToNativeString(env, root));
} }
// static void nativeGetPathTo(String root, List<String> result); // static void nativeGetPathTo(String root, List<String> result);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetPathTo(JNIEnv * env, jclass clazz, jstring root, jobject result) Java_app_organicmaps_downloader_MapManager_nativeGetPathTo(JNIEnv * env, jclass clazz, jstring root, jobject result)
{ {
auto const listAddMethod = jni::ListBuilder::Instance(env).m_add; auto const listAddMethod = jni::ListBuilder::Instance(env).m_add;
@@ -521,7 +521,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetPathTo(JNIEnv * env, jcl
// static int nativeGetOverallProgress(String[] countries); // static int nativeGetOverallProgress(String[] countries);
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetOverallProgress(JNIEnv * env, jclass clazz, jobjectArray jcountries) Java_app_organicmaps_downloader_MapManager_nativeGetOverallProgress(JNIEnv * env, jclass clazz, jobjectArray jcountries)
{ {
int const size = env->GetArrayLength(jcountries); int const size = env->GetArrayLength(jcountries);
storage::CountriesVec countries; storage::CountriesVec countries;
@@ -544,28 +544,28 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetOverallProgress(JNIEnv *
// static boolean nativeIsAutoretryFailed(); // static boolean nativeIsAutoretryFailed();
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeIsAutoretryFailed(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeIsAutoretryFailed(JNIEnv * env, jclass clazz)
{ {
return g_framework->IsAutoRetryDownloadFailed(); return g_framework->IsAutoRetryDownloadFailed();
} }
// static boolean nativeIsDownloadOn3gEnabled(); // static boolean nativeIsDownloadOn3gEnabled();
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeIsDownloadOn3gEnabled(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeIsDownloadOn3gEnabled(JNIEnv * env, jclass clazz)
{ {
return g_framework->IsDownloadOn3gEnabled(); return g_framework->IsDownloadOn3gEnabled();
} }
// static void nativeEnableDownloadOn3g(); // static void nativeEnableDownloadOn3g();
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeEnableDownloadOn3g(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeEnableDownloadOn3g(JNIEnv * env, jclass clazz)
{ {
g_framework->EnableDownloadOn3g(); g_framework->EnableDownloadOn3g();
} }
// static @Nullable String nativeGetSelectedCountry(); // static @Nullable String nativeGetSelectedCountry();
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_downloader_MapManager_nativeGetSelectedCountry(JNIEnv * env, jclass clazz) Java_app_organicmaps_downloader_MapManager_nativeGetSelectedCountry(JNIEnv * env, jclass clazz)
{ {
if (!g_framework->NativeFramework()->HasPlacePageInfo()) if (!g_framework->NativeFramework()->HasPlacePageInfo())
return nullptr; return nullptr;

View File

@@ -2,14 +2,14 @@
#include "map/gps_tracker.hpp" #include "map/gps_tracker.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include <chrono> #include <chrono>
extern "C" extern "C"
{ {
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeSetEnabled(JNIEnv * env, jclass clazz, jboolean enable) Java_app_organicmaps_location_TrackRecorder_nativeSetEnabled(JNIEnv * env, jclass clazz, jboolean enable)
{ {
GpsTracker::Instance().SetEnabled(enable); GpsTracker::Instance().SetEnabled(enable);
Framework * const f = frm(); Framework * const f = frm();
@@ -22,37 +22,37 @@ extern "C"
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsEnabled(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_TrackRecorder_nativeIsEnabled(JNIEnv * env, jclass clazz)
{ {
return GpsTracker::Instance().IsEnabled(); return GpsTracker::Instance().IsEnabled();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeStartTrackRecording(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_TrackRecorder_nativeStartTrackRecording(JNIEnv * env, jclass clazz)
{ {
frm()->StartTrackRecording(); frm()->StartTrackRecording();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeStopTrackRecording(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_TrackRecorder_nativeStopTrackRecording(JNIEnv * env, jclass clazz)
{ {
frm()->StopTrackRecording(); frm()->StopTrackRecording();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeSaveTrackRecordingWithName(JNIEnv * env, jclass clazz, jstring name) Java_app_organicmaps_location_TrackRecorder_nativeSaveTrackRecordingWithName(JNIEnv * env, jclass clazz, jstring name)
{ {
frm()->SaveTrackRecordingWithName(jni::ToNativeString(env, name)); frm()->SaveTrackRecordingWithName(jni::ToNativeString(env, name));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsTrackRecordingEmpty(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_TrackRecorder_nativeIsTrackRecordingEmpty(JNIEnv * env, jclass clazz)
{ {
return frm()->IsTrackRecordingEmpty(); return frm()->IsTrackRecordingEmpty();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsTrackRecordingEnabled(JNIEnv * env, jclass clazz) Java_app_organicmaps_location_TrackRecorder_nativeIsTrackRecordingEnabled(JNIEnv * env, jclass clazz)
{ {
return frm()->IsTrackRecordingEnabled(); return frm()->IsTrackRecordingEnabled();
} }

View File

@@ -1,8 +1,8 @@
#include "Framework.hpp" #include "Framework.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/platform/AndroidPlatform.hpp"
extern "C" extern "C"
{ {
@@ -13,35 +13,35 @@ static void TrafficStateChanged(TrafficManager::TrafficState state, std::shared_
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeSetListener(JNIEnv * env, jclass clazz, jobject listener) Java_app_organicmaps_maplayer_traffic_TrafficState_nativeSetListener(JNIEnv * env, jclass clazz, jobject listener)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->SetTrafficStateListener(std::bind(&TrafficStateChanged, std::placeholders::_1, jni::make_global_ref(listener))); g_framework->SetTrafficStateListener(std::bind(&TrafficStateChanged, std::placeholders::_1, jni::make_global_ref(listener)));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeRemoveListener(JNIEnv * env, jclass clazz) Java_app_organicmaps_maplayer_traffic_TrafficState_nativeRemoveListener(JNIEnv * env, jclass clazz)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->SetTrafficStateListener(TrafficManager::TrafficStateChangedFn()); g_framework->SetTrafficStateListener(TrafficManager::TrafficStateChangedFn());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeEnable(JNIEnv * env, jclass clazz) Java_app_organicmaps_maplayer_traffic_TrafficState_nativeEnable(JNIEnv * env, jclass clazz)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->EnableTraffic(); g_framework->EnableTraffic();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeIsEnabled(JNIEnv * env, jclass clazz) Java_app_organicmaps_maplayer_traffic_TrafficState_nativeIsEnabled(JNIEnv * env, jclass clazz)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
return static_cast<jboolean>(g_framework->IsTrafficEnabled()); return static_cast<jboolean>(g_framework->IsTrafficEnabled());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeDisable(JNIEnv * env, jclass clazz) Java_app_organicmaps_maplayer_traffic_TrafficState_nativeDisable(JNIEnv * env, jclass clazz)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->DisableTraffic(); g_framework->DisableTraffic();

View File

@@ -49,7 +49,7 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info, int mapObje
static jmethodID const ctorId = jni::GetConstructorID( static jmethodID const ctorId = jni::GetConstructorID(
env, g_mapObjectClazz, env, g_mapObjectClazz,
"(" "("
"Lapp/organicmaps/sdk/bookmarks/data/FeatureId;" // featureId "Lapp/organicmaps/bookmarks/data/FeatureId;" // featureId
"I" // mapObjectType "I" // mapObjectType
"Ljava/lang/String;" // title "Ljava/lang/String;" // title
"Ljava/lang/String;" // secondaryTitle "Ljava/lang/String;" // secondaryTitle
@@ -104,7 +104,7 @@ jobject CreateBookmark(JNIEnv *env, const place_page::Info &info,
// @Nullable String[] rawTypes) // @Nullable String[] rawTypes)
static jmethodID const ctorId = static jmethodID const ctorId =
jni::GetConstructorID(env, g_bookmarkClazz, jni::GetConstructorID(env, g_bookmarkClazz,
"(Lapp/organicmaps/sdk/bookmarks/data/FeatureId;JJLjava/lang/String;" "(Lapp/organicmaps/bookmarks/data/FeatureId;JJLjava/lang/String;"
"Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;" "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;"
"Lapp/organicmaps/sdk/routing/RoutePointInfo;" "Lapp/organicmaps/sdk/routing/RoutePointInfo;"
"ILapp/organicmaps/sdk/search/Popularity;Ljava/lang/String;" "ILapp/organicmaps/sdk/search/Popularity;Ljava/lang/String;"
@@ -137,7 +137,7 @@ jobject CreateBookmark(JNIEnv *env, const place_page::Info &info,
jobject CreateElevationPoint(JNIEnv * env, ElevationInfo::Point const & point) jobject CreateElevationPoint(JNIEnv * env, ElevationInfo::Point const & point)
{ {
static jclass const pointClass = static jclass const pointClass =
jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/ElevationInfo$Point"); jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/ElevationInfo$Point");
// public Point(double distance, int altitude) // public Point(double distance, int altitude)
static jmethodID const pointCtorId = static jmethodID const pointCtorId =
jni::GetConstructorID(env, pointClass, "(DI)V"); jni::GetConstructorID(env, pointClass, "(DI)V");
@@ -149,7 +149,7 @@ jobjectArray ToElevationPointArray(JNIEnv * env, ElevationInfo::Points const & p
{ {
CHECK(!points.empty(), ("Elevation points must be non empty!")); CHECK(!points.empty(), ("Elevation points must be non empty!"));
static jclass const pointClass = static jclass const pointClass =
jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/ElevationInfo$Point"); jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/ElevationInfo$Point");
return jni::ToJavaArray(env, pointClass, points, return jni::ToJavaArray(env, pointClass, points,
[](JNIEnv * env, ElevationInfo::Point const & item) [](JNIEnv * env, ElevationInfo::Point const & item)
{ {
@@ -164,7 +164,7 @@ jobject CreateElevationInfo(JNIEnv * env, ElevationInfo const & info)
// long m_duration) // long m_duration)
static jmethodID const ctorId = static jmethodID const ctorId =
jni::GetConstructorID(env, g_elevationInfoClazz, "(JLjava/lang/String;Ljava/lang/String;" jni::GetConstructorID(env, g_elevationInfoClazz, "(JLjava/lang/String;Ljava/lang/String;"
"[Lapp/organicmaps/sdk/bookmarks/data/ElevationInfo$Point;" "[Lapp/organicmaps/bookmarks/data/ElevationInfo$Point;"
"IIIIIJ)V"); "IIIIIJ)V");
jni::TScopedLocalObjectArrayRef jPoints(env, ToElevationPointArray(env, info.GetPoints())); jni::TScopedLocalObjectArrayRef jPoints(env, ToElevationPointArray(env, info.GetPoints()));
// TODO (KK): elevation info should have only the elevation data - see the https://github.com/organicmaps/organicmaps/pull/10063 // TODO (KK): elevation info should have only the elevation data - see the https://github.com/organicmaps/organicmaps/pull/10063

View File

@@ -2,8 +2,8 @@
#include <jni.h> #include <jni.h>
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/Framework.hpp"
#include <vector> #include <vector>

View File

@@ -1,7 +1,7 @@
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/Framework.hpp"
#include "app/organicmaps/sdk/UserMarkHelper.hpp" #include "app/organicmaps/UserMarkHelper.hpp"
#include "app/organicmaps/sdk/util/Distance.hpp" #include "app/organicmaps/util/Distance.hpp"
#include "map/bookmark_helpers.hpp" #include "map/bookmark_helpers.hpp"
#include "map/place_page_info.hpp" #include "map/place_page_info.hpp"
@@ -51,9 +51,9 @@ void PrepareClassRefs(JNIEnv * env)
return; return;
g_bookmarkManagerClass = g_bookmarkManagerClass =
jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkManager"); jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/BookmarkManager");
g_bookmarkManagerInstanceField = jni::GetStaticFieldID(env, g_bookmarkManagerClass, "INSTANCE", g_bookmarkManagerInstanceField = jni::GetStaticFieldID(env, g_bookmarkManagerClass, "INSTANCE",
"Lapp/organicmaps/sdk/bookmarks/data/BookmarkManager;"); "Lapp/organicmaps/bookmarks/data/BookmarkManager;");
jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass,
g_bookmarkManagerInstanceField); g_bookmarkManagerInstanceField);
@@ -68,27 +68,27 @@ void PrepareClassRefs(JNIEnv * env)
"(ZLjava/lang/String;Z)V"); "(ZLjava/lang/String;Z)V");
g_onPreparedFileForSharingMethod = g_onPreparedFileForSharingMethod =
jni::GetMethodID(env, bookmarkManagerInstance, "onPreparedFileForSharing", jni::GetMethodID(env, bookmarkManagerInstance, "onPreparedFileForSharing",
"(Lapp/organicmaps/sdk/bookmarks/data/BookmarkSharingResult;)V"); "(Lapp/organicmaps/bookmarks/data/BookmarkSharingResult;)V");
g_longClass = jni::GetGlobalClassRef(env,"java/lang/Long"); g_longClass = jni::GetGlobalClassRef(env,"java/lang/Long");
g_longConstructor = jni::GetConstructorID(env, g_longClass, "(J)V"); g_longConstructor = jni::GetConstructorID(env, g_longClass, "(J)V");
g_sortedBlockClass = g_sortedBlockClass =
jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/SortedBlock"); jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/SortedBlock");
g_sortedBlockConstructor = g_sortedBlockConstructor =
jni::GetConstructorID(env, g_sortedBlockClass, jni::GetConstructorID(env, g_sortedBlockClass,
"(Ljava/lang/String;[Ljava/lang/Long;[Ljava/lang/Long;)V"); "(Ljava/lang/String;[Ljava/lang/Long;[Ljava/lang/Long;)V");
g_onBookmarksSortingCompleted = jni::GetMethodID(env, bookmarkManagerInstance, g_onBookmarksSortingCompleted = jni::GetMethodID(env, bookmarkManagerInstance,
"onBookmarksSortingCompleted", "([Lapp/organicmaps/sdk/bookmarks/data/SortedBlock;J)V"); "onBookmarksSortingCompleted", "([Lapp/organicmaps/bookmarks/data/SortedBlock;J)V");
g_onBookmarksSortingCancelled = jni::GetMethodID(env, bookmarkManagerInstance, g_onBookmarksSortingCancelled = jni::GetMethodID(env, bookmarkManagerInstance,
"onBookmarksSortingCancelled", "(J)V"); "onBookmarksSortingCancelled", "(J)V");
g_bookmarkInfoClass = g_bookmarkInfoClass =
jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkInfo"); jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/BookmarkInfo");
g_bookmarkInfoConstructor = g_bookmarkInfoConstructor =
jni::GetConstructorID(env, g_bookmarkInfoClass, "(JJ)V" ); jni::GetConstructorID(env, g_bookmarkInfoClass, "(JJ)V" );
g_bookmarkCategoryClass = g_bookmarkCategoryClass =
jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkCategory"); jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/BookmarkCategory");
//public BookmarkCategory(long id, //public BookmarkCategory(long id,
// String name, // String name,
@@ -183,7 +183,7 @@ void OnAsyncLoadingFileError(JNIEnv * env, std::string const & fileName, bool is
void OnPreparedFileForSharing(JNIEnv * env, BookmarkManager::SharingResult const & result) void OnPreparedFileForSharing(JNIEnv * env, BookmarkManager::SharingResult const & result)
{ {
static jclass const classBookmarkSharingResult = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkSharingResult"); static jclass const classBookmarkSharingResult = jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/BookmarkSharingResult");
// BookmarkSharingResult(long[] categoriesIds, @Code int code, @NonNull String sharingPath, @NonNull String mimeType, @NonNull String errorString) // BookmarkSharingResult(long[] categoriesIds, @Code int code, @NonNull String sharingPath, @NonNull String mimeType, @NonNull String errorString)
static jmethodID const ctorBookmarkSharingResult = jni::GetConstructorID(env, classBookmarkSharingResult, "([JILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); static jmethodID const ctorBookmarkSharingResult = jni::GetConstructorID(env, classBookmarkSharingResult, "([JILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
@@ -297,21 +297,21 @@ jobjectArray MakeCategories(JNIEnv * env, kml::GroupIdCollection const & ids)
extern "C" extern "C"
{ {
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeShowBookmarkOnMap( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeShowBookmarkOnMap(
JNIEnv *, jobject, jlong bmkId) JNIEnv *, jobject, jlong bmkId)
{ {
frm()->ShowBookmark(static_cast<kml::MarkId>(bmkId)); frm()->ShowBookmark(static_cast<kml::MarkId>(bmkId));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeShowBookmarkCategoryOnMap( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeShowBookmarkCategoryOnMap(
JNIEnv *, jobject, jlong catId) JNIEnv *, jobject, jlong catId)
{ {
frm()->ShowBookmarkCategory(static_cast<kml::MarkGroupId>(catId), true /* animated */); frm()->ShowBookmarkCategory(static_cast<kml::MarkGroupId>(catId), true /* animated */);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIEnv * env, jclass) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIEnv * env, jclass)
{ {
PrepareClassRefs(env); PrepareClassRefs(env);
BookmarkManager::AsyncLoadingCallbacks callbacks; BookmarkManager::AsyncLoadingCallbacks callbacks;
@@ -327,7 +327,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIE
} }
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeCreateCategory( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeCreateCategory(
JNIEnv * env, jobject, jstring name) JNIEnv * env, jobject, jstring name)
{ {
auto const categoryId = frm()->GetBookmarkManager().CreateBookmarkCategory(ToNativeString(env, name)); auto const categoryId = frm()->GetBookmarkManager().CreateBookmarkCategory(ToNativeString(env, name));
@@ -336,7 +336,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeCreateCategory(
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteCategory( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeDeleteCategory(
JNIEnv *, jobject, jlong catId) JNIEnv *, jobject, jlong catId)
{ {
auto const categoryId = static_cast<kml::MarkGroupId>(catId); auto const categoryId = static_cast<kml::MarkGroupId>(catId);
@@ -345,20 +345,20 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteCategory(
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jlong bmkId) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jlong bmkId)
{ {
frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(static_cast<kml::MarkId>(bmkId)); frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(static_cast<kml::MarkId>(bmkId));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteTrack( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeDeleteTrack(
JNIEnv *, jobject, jlong trkId) JNIEnv *, jobject, jlong trkId)
{ {
frm()->GetBookmarkManager().GetEditSession().DeleteTrack(static_cast<kml::TrackId>(trkId)); frm()->GetBookmarkManager().GetEditSession().DeleteTrack(static_cast<kml::TrackId>(trkId));
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastEditedCategory( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastEditedCategory(
JNIEnv * env, jobject, double lat, double lon) JNIEnv * env, jobject, double lat, double lon)
{ {
if (!frm()->HasPlacePageInfo()) if (!frm()->HasPlacePageInfo())
@@ -389,48 +389,48 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastE
} }
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastEditedCategory( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetLastEditedCategory(
JNIEnv *, jobject) JNIEnv *, jobject)
{ {
return static_cast<jlong>(frm()->LastEditedBMCategory()); return static_cast<jlong>(frm()->LastEditedBMCategory());
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastEditedColor( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetLastEditedColor(
JNIEnv *, jobject) JNIEnv *, jobject)
{ {
return static_cast<jint>(frm()->LastEditedBMColor()); return static_cast<jint>(frm()->LastEditedBMColor());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarksFile(JNIEnv * env, jclass, Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeLoadBookmarksFile(JNIEnv * env, jclass,
jstring path, jboolean isTemporaryFile) jstring path, jboolean isTemporaryFile)
{ {
frm()->AddBookmarksFile(ToNativeString(env, path), isTemporaryFile); frm()->AddBookmarksFile(ToNativeString(env, path), isTemporaryFile);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsAsyncBookmarksLoadingInProgress(JNIEnv *, jclass) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeIsAsyncBookmarksLoadingInProgress(JNIEnv *, jclass)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().IsAsyncLoadingInProgress()); return static_cast<jboolean>(frm()->GetBookmarkManager().IsAsyncLoadingInProgress());
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsVisible( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeIsVisible(
JNIEnv *, jobject, jlong catId) JNIEnv *, jobject, jlong catId)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().IsVisible(static_cast<kml::MarkGroupId>(catId))); return static_cast<jboolean>(frm()->GetBookmarkManager().IsVisible(static_cast<kml::MarkGroupId>(catId)));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetVisibility( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetVisibility(
JNIEnv *, jobject, jlong catId, jboolean isVisible) JNIEnv *, jobject, jlong catId, jboolean isVisible)
{ {
frm()->GetBookmarkManager().GetEditSession().SetIsVisible(static_cast<kml::MarkGroupId>(catId), isVisible); frm()->GetBookmarkManager().GetEditSession().SetIsVisible(static_cast<kml::MarkGroupId>(catId), isVisible);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryName( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetCategoryName(
JNIEnv * env, jobject, jlong catId, jstring name) JNIEnv * env, jobject, jlong catId, jstring name)
{ {
frm()->GetBookmarkManager().GetEditSession().SetCategoryName(static_cast<kml::MarkGroupId>(catId), frm()->GetBookmarkManager().GetEditSession().SetCategoryName(static_cast<kml::MarkGroupId>(catId),
@@ -438,7 +438,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryName(
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryDescription(JNIEnv * env, Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetCategoryDescription(JNIEnv * env,
jobject, jobject,
jlong catId, jlong catId,
jstring desc) jstring desc)
@@ -448,7 +448,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryDescrip
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryTags( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetCategoryTags(
JNIEnv * env, jobject, jlong catId, jobjectArray tagsIds) JNIEnv * env, jobject, jlong catId, jobjectArray tagsIds)
{ {
auto const size = env->GetArrayLength(tagsIds); auto const size = env->GetArrayLength(tagsIds);
@@ -465,7 +465,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryTags(
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryAccessRules( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetCategoryAccessRules(
JNIEnv *, jobject, jlong catId, jint accessRules) JNIEnv *, jobject, jlong catId, jint accessRules)
{ {
frm()->GetBookmarkManager().GetEditSession().SetCategoryAccessRules( frm()->GetBookmarkManager().GetEditSession().SetCategoryAccessRules(
@@ -473,7 +473,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryAccessR
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryCustomProperty( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetCategoryCustomProperty(
JNIEnv * env, jobject, jlong catId, jstring key, jstring value) JNIEnv * env, jobject, jlong catId, jstring key, jstring value)
{ {
frm()->GetBookmarkManager().GetEditSession().SetCategoryCustomProperty( frm()->GetBookmarkManager().GetEditSession().SetCategoryCustomProperty(
@@ -481,7 +481,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryCustomP
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeUpdateBookmarkPlacePage( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeUpdateBookmarkPlacePage(
JNIEnv * env, jobject, jlong bmkId) JNIEnv * env, jobject, jlong bmkId)
{ {
if (!frm()->HasPlacePageInfo()) if (!frm()->HasPlacePageInfo())
@@ -496,7 +496,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeUpdateBookmarkPlac
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkInfo( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkInfo(
JNIEnv * env, jobject, jlong bmkId) JNIEnv * env, jobject, jlong bmkId)
{ {
auto const bookmark = frm()->GetBookmarkManager().GetBookmark(static_cast<kml::MarkId>(bmkId)); auto const bookmark = frm()->GetBookmarkManager().GetBookmark(static_cast<kml::MarkId>(bmkId));
@@ -508,7 +508,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkInfo(
} }
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPosition( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPosition(
JNIEnv *, jobject, jlong catId, jint positionInCategory) JNIEnv *, jobject, jlong catId, jint positionInCategory)
{ {
auto const & ids = frm()->GetBookmarkManager().GetUserMarkIds(static_cast<kml::MarkGroupId>(catId)); auto const & ids = frm()->GetBookmarkManager().GetUserMarkIds(static_cast<kml::MarkGroupId>(catId));
@@ -522,12 +522,12 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPos
static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; } static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrack( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetTrack(
JNIEnv * env, jobject, jlong trackId, jclass trackClazz) JNIEnv * env, jobject, jlong trackId, jclass trackClazz)
{ {
// Track(long trackId, long categoryId, String name, String lengthString, int color) // Track(long trackId, long categoryId, String name, String lengthString, int color)
static jmethodID const cId = jni::GetConstructorID(env, trackClazz, static jmethodID const cId = jni::GetConstructorID(env, trackClazz,
"(JJLjava/lang/String;Lapp/organicmaps/sdk/util/Distance;I)V"); "(JJLjava/lang/String;Lapp/organicmaps/util/Distance;I)V");
auto const * nTrack = frm()->GetBookmarkManager().GetTrack(static_cast<kml::TrackId>(trackId)); auto const * nTrack = frm()->GetBookmarkManager().GetTrack(static_cast<kml::TrackId>(trackId));
ASSERT(nTrack, ("Track must not be null with id:)", trackId)); ASSERT(nTrack, ("Track must not be null with id:)", trackId));
@@ -545,7 +545,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrack(
} }
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackIdByPosition( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetTrackIdByPosition(
JNIEnv *, jobject, jlong catId, jint positionInCategory) JNIEnv *, jobject, jlong catId, jint positionInCategory)
{ {
auto const & ids = frm()->GetBookmarkManager().GetTrackIds(static_cast<kml::MarkGroupId>(catId)); auto const & ids = frm()->GetBookmarkManager().GetTrackIds(static_cast<kml::MarkGroupId>(catId));
@@ -557,42 +557,42 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackIdByPositi
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsUsedCategoryName( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeIsUsedCategoryName(
JNIEnv * env, jclass, jstring name) JNIEnv * env, jclass, jstring name)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().IsUsedCategoryName(ToNativeString(env, name))); return static_cast<jboolean>(frm()->GetBookmarkManager().IsUsedCategoryName(ToNativeString(env, name)));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareForSearch( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativePrepareForSearch(
JNIEnv *, jclass, jlong catId) JNIEnv *, jclass, jlong catId)
{ {
frm()->GetBookmarkManager().PrepareForSearch(static_cast<kml::MarkGroupId>(catId)); frm()->GetBookmarkManager().PrepareForSearch(static_cast<kml::MarkGroupId>(catId));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreAllCategoriesInvisible( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeAreAllCategoriesInvisible(
JNIEnv *, jclass) JNIEnv *, jclass)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().AreAllCategoriesInvisible()); return static_cast<jboolean>(frm()->GetBookmarkManager().AreAllCategoriesInvisible());
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreAllCategoriesVisible( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeAreAllCategoriesVisible(
JNIEnv *, jclass) JNIEnv *, jclass)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().AreAllCategoriesVisible()); return static_cast<jboolean>(frm()->GetBookmarkManager().AreAllCategoriesVisible());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetAllCategoriesVisibility( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetAllCategoriesVisibility(
JNIEnv *, jclass, jboolean visible) JNIEnv *, jclass, jboolean visible)
{ {
frm()->GetBookmarkManager().SetAllCategoriesVisibility(static_cast<bool>(visible)); frm()->GetBookmarkManager().SetAllCategoriesVisibility(static_cast<bool>(visible));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareTrackFileForSharing(JNIEnv * env, jclass, jlong trackId, jint kmlFileType) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativePrepareTrackFileForSharing(JNIEnv * env, jclass, jlong trackId, jint kmlFileType)
{ {
frm()->GetBookmarkManager().PrepareTrackFileForSharing(static_cast<kml::TrackId>(trackId), [env](BookmarkManager::SharingResult const & result) frm()->GetBookmarkManager().PrepareTrackFileForSharing(static_cast<kml::TrackId>(trackId), [env](BookmarkManager::SharingResult const & result)
{ {
@@ -601,7 +601,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareTrackFileFo
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareFileForSharing(JNIEnv * env, jclass, jlongArray catIds, jint kmlFileType) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativePrepareFileForSharing(JNIEnv * env, jclass, jlongArray catIds, jint kmlFileType)
{ {
auto const size = env->GetArrayLength(catIds); auto const size = env->GetArrayLength(catIds);
kml::GroupIdCollection catIdsVector(size); kml::GroupIdCollection catIdsVector(size);
@@ -614,7 +614,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareFileForShar
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsCategoryEmpty( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeIsCategoryEmpty(
JNIEnv *, jclass, jlong catId) JNIEnv *, jclass, jlong catId)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().IsCategoryEmpty( return static_cast<jboolean>(frm()->GetBookmarkManager().IsCategoryEmpty(
@@ -622,27 +622,27 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsCategoryEmpty(
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetNotificationsEnabled( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetNotificationsEnabled(
JNIEnv *, jclass, jboolean enabled) JNIEnv *, jclass, jboolean enabled)
{ {
frm()->GetBookmarkManager().SetNotificationsEnabled(static_cast<bool>(enabled)); frm()->GetBookmarkManager().SetNotificationsEnabled(static_cast<bool>(enabled));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreNotificationsEnabled( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeAreNotificationsEnabled(
JNIEnv *, jclass) JNIEnv *, jclass)
{ {
return static_cast<jboolean>(frm()->GetBookmarkManager().AreNotificationsEnabled()); return static_cast<jboolean>(frm()->GetBookmarkManager().AreNotificationsEnabled());
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategory(JNIEnv *env, jobject, jlong id) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkCategory(JNIEnv *env, jobject, jlong id)
{ {
return MakeCategory(env, static_cast<kml::MarkGroupId>(id)); return MakeCategory(env, static_cast<kml::MarkGroupId>(id));
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategories(JNIEnv *env, jobject) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkCategories(JNIEnv *env, jobject)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
auto const & ids = bm.GetSortedBmGroupIdList(); auto const & ids = bm.GetSortedBmGroupIdList();
@@ -651,7 +651,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategor
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategoriesCount(JNIEnv *env, jobject) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkCategoriesCount(JNIEnv *env, jobject)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
auto const count = bm.GetBmGroupsCount(); auto const count = bm.GetBmGroupsCount();
@@ -660,7 +660,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategor
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetChildrenCategories(JNIEnv *env, jobject, jlong parentId) Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetChildrenCategories(JNIEnv *env, jobject, jlong parentId)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
auto const ids = bm.GetChildrenCategories(static_cast<kml::MarkGroupId>(parentId)); auto const ids = bm.GetChildrenCategories(static_cast<kml::MarkGroupId>(parentId));
@@ -669,7 +669,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetChildrenCategor
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeHasLastSortingType( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeHasLastSortingType(
JNIEnv *, jobject, jlong catId) JNIEnv *, jobject, jlong catId)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
@@ -678,7 +678,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeHasLastSortingType
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastSortingType( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetLastSortingType(
JNIEnv *, jobject, jlong catId) JNIEnv *, jobject, jlong catId)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
@@ -690,7 +690,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastSortingType
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetLastSortingType( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetLastSortingType(
JNIEnv *, jobject, jlong catId, jint type) JNIEnv *, jobject, jlong catId, jint type)
{ {
auto & bm = frm()->GetBookmarkManager(); auto & bm = frm()->GetBookmarkManager();
@@ -699,7 +699,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetLastSortingType
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeResetLastSortingType( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeResetLastSortingType(
JNIEnv *, jobject, jlong catId) JNIEnv *, jobject, jlong catId)
{ {
auto & bm = frm()->GetBookmarkManager(); auto & bm = frm()->GetBookmarkManager();
@@ -707,7 +707,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeResetLastSortingTy
} }
JNIEXPORT jintArray JNICALL JNIEXPORT jintArray JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetAvailableSortingTypes(JNIEnv *env, Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetAvailableSortingTypes(JNIEnv *env,
jobject, jlong catId, jboolean hasMyPosition) jobject, jlong catId, jboolean hasMyPosition)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
@@ -724,7 +724,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetAvailableSortin
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetSortedCategory(JNIEnv *env, Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetSortedCategory(JNIEnv *env,
jobject, jlong catId, jint sortingType, jboolean hasMyPosition, jdouble lat, jdouble lon, jobject, jlong catId, jint sortingType, jboolean hasMyPosition, jdouble lat, jdouble lon,
jlong timestamp) jlong timestamp)
{ {
@@ -741,14 +741,14 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetSortedCategory(
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkName( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkName(
JNIEnv * env, jclass, jlong bmk) JNIEnv * env, jclass, jlong bmk)
{ {
return jni::ToJavaString(env, getBookmark(bmk)->GetPreferredName()); return jni::ToJavaString(env, getBookmark(bmk)->GetPreferredName());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkFeatureType( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkFeatureType(
JNIEnv * env, jclass, jlong bmk) JNIEnv * env, jclass, jlong bmk)
{ {
return jni::ToJavaString(env, return jni::ToJavaString(env,
@@ -756,14 +756,14 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkFeature
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkDescription( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkDescription(
JNIEnv * env, jclass, jlong bmk) JNIEnv * env, jclass, jlong bmk)
{ {
return jni::ToJavaString(env, getBookmark(bmk)->GetDescription()); return jni::ToJavaString(env, getBookmark(bmk)->GetDescription());
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkColor( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkColor(
JNIEnv *, jclass, jlong bmk) JNIEnv *, jclass, jlong bmk)
{ {
auto const * mark = getBookmark(bmk); auto const * mark = getBookmark(bmk);
@@ -772,7 +772,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkColor(
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIcon( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkIcon(
JNIEnv *, jclass, jlong bmk) JNIEnv *, jclass, jlong bmk)
{ {
auto const * mark = getBookmark(bmk); auto const * mark = getBookmark(bmk);
@@ -781,7 +781,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIcon(
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetBookmarkParams( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetBookmarkParams(
JNIEnv * env, jclass, jlong bmk, JNIEnv * env, jclass, jlong bmk,
jstring name, jint color, jstring descr) jstring name, jint color, jstring descr)
{ {
@@ -802,7 +802,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetBookmarkParams(
constexpr static uint8_t ExtractByte(uint32_t number, uint8_t byteIdx) { return (number >> (8 * byteIdx)) & 0xFF; } constexpr static uint8_t ExtractByte(uint32_t number, uint8_t byteIdx) { return (number >> (8 * byteIdx)) & 0xFF; }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetTrackParams( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetTrackParams(
JNIEnv * env, jclass, jlong trackId, JNIEnv * env, jclass, jlong trackId,
jstring name, jint color, jstring descr) jstring name, jint color, jstring descr)
{ {
@@ -821,14 +821,14 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetTrackParams(
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackDescription( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetTrackDescription(
JNIEnv * env, jclass, jlong trackId) JNIEnv * env, jclass, jlong trackId)
{ {
return jni::ToJavaString(env, frm()->GetBookmarkManager().GetTrack(static_cast<kml::TrackId>(trackId))->GetDescription()); return jni::ToJavaString(env, frm()->GetBookmarkManager().GetTrack(static_cast<kml::TrackId>(trackId))->GetDescription());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeBookmarkCategory( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeChangeBookmarkCategory(
JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong bmk) JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong bmk)
{ {
g_framework->MoveBookmark(static_cast<kml::MarkId>(bmk), static_cast<kml::MarkGroupId>(oldCat), g_framework->MoveBookmark(static_cast<kml::MarkId>(bmk), static_cast<kml::MarkGroupId>(oldCat),
@@ -836,7 +836,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeBookmarkCate
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackCategory( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeChangeTrackCategory(
JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong trackId) JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong trackId)
{ {
g_framework->MoveTrack(static_cast<kml::TrackId>(trackId), static_cast<kml::MarkGroupId>(oldCat), g_framework->MoveTrack(static_cast<kml::TrackId>(trackId), static_cast<kml::MarkGroupId>(oldCat),
@@ -844,7 +844,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackCategor
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackColor( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeChangeTrackColor(
JNIEnv *, jclass, jlong trackId, jint color) JNIEnv *, jclass, jlong trackId, jint color)
{ {
uint8_t alpha = ExtractByte(color, 3); uint8_t alpha = ExtractByte(color, 3);
@@ -852,28 +852,28 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackColor(
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkXY( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkXY(
JNIEnv * env, jclass, jlong bmk) JNIEnv * env, jclass, jlong bmk)
{ {
return jni::GetNewParcelablePointD(env, getBookmark(bmk)->GetPivot()); return jni::GetNewParcelablePointD(env, getBookmark(bmk)->GetPivot());
} }
JNIEXPORT jdouble JNICALL JNIEXPORT jdouble JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkScale( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkScale(
JNIEnv *, jclass, jlong bmk) JNIEnv *, jclass, jlong bmk)
{ {
return getBookmark(bmk)->GetScale(); return getBookmark(bmk)->GetScale();
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeEncode2Ge0Url( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeEncode2Ge0Url(
JNIEnv * env, jclass, jlong bmk, jboolean addName) JNIEnv * env, jclass, jlong bmk, jboolean addName)
{ {
return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(bmk), addName)); return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(bmk), addName));
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkAddress( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetBookmarkAddress(
JNIEnv * env, jclass, jlong bmkId) JNIEnv * env, jclass, jlong bmkId)
{ {
auto const address = frm()->GetAddressAtPoint(getBookmark(bmkId)->GetPivot()).FormatAddress(); auto const address = frm()->GetAddressAtPoint(getBookmark(bmkId)->GetPivot()).FormatAddress();
@@ -881,7 +881,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkAddress
} }
JNIEXPORT jdouble JNICALL JNIEXPORT jdouble JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationCurPositionDistance( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetElevationCurPositionDistance(
JNIEnv *, jclass, jlong trackId) JNIEnv *, jclass, jlong trackId)
{ {
auto const & bm = frm()->GetBookmarkManager(); auto const & bm = frm()->GetBookmarkManager();
@@ -889,7 +889,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationCurPos
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationCurrentPositionChangedListener( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetElevationCurrentPositionChangedListener(
JNIEnv * env, jclass) JNIEnv * env, jclass)
{ {
frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback( frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback(
@@ -897,14 +897,14 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationCurren
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeRemoveElevationCurrentPositionChangedListener( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeRemoveElevationCurrentPositionChangedListener(
JNIEnv *, jclass) JNIEnv *, jclass)
{ {
frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback(nullptr); frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback(nullptr);
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActivePoint( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetElevationActivePoint(
JNIEnv *, jclass, jlong trackId, jdouble distanceInMeters) JNIEnv *, jclass, jlong trackId, jdouble distanceInMeters)
{ {
auto & bm = frm()->GetBookmarkManager(); auto & bm = frm()->GetBookmarkManager();
@@ -914,7 +914,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActive
} }
JNIEXPORT jdouble JNICALL JNIEXPORT jdouble JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationActivePointDistance( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeGetElevationActivePointDistance(
JNIEnv *, jclass, jlong trackId) JNIEnv *, jclass, jlong trackId)
{ {
auto & bm = frm()->GetBookmarkManager(); auto & bm = frm()->GetBookmarkManager();
@@ -922,21 +922,21 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationActive
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActiveChangedListener( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeSetElevationActiveChangedListener(
JNIEnv *env, jclass) JNIEnv *env, jclass)
{ {
frm()->GetBookmarkManager().SetElevationActivePointChangedCallback(std::bind(&OnElevationActivePointChanged, env)); frm()->GetBookmarkManager().SetElevationActivePointChangedCallback(std::bind(&OnElevationActivePointChanged, env));
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeRemoveElevationActiveChangedListener( Java_app_organicmaps_bookmarks_data_BookmarkManager_nativeRemoveElevationActiveChangedListener(
JNIEnv *, jclass) JNIEnv *, jclass)
{ {
frm()->GetBookmarkManager().SetElevationActivePointChangedCallback(nullptr); frm()->GetBookmarkManager().SetElevationActivePointChangedCallback(nullptr);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_widget_placepage_PlacePageButtonFactory_nativeHasRecentlyDeletedBookmark(JNIEnv *, jclass) Java_app_organicmaps_widget_placepage_PlacePageButtonFactory_nativeHasRecentlyDeletedBookmark(JNIEnv *, jclass)
{ {
return frm()->GetBookmarkManager().HasRecentlyDeletedBookmark(); return frm()->GetBookmarkManager().HasRecentlyDeletedBookmark();
} }

View File

@@ -52,17 +52,17 @@ JNI_OnLoad(JavaVM * jvm, void *)
jni::InitAssertLog(); jni::InitAssertLog();
JNIEnv * env = jni::GetEnv(); JNIEnv * env = jni::GetEnv();
g_mapObjectClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/MapObject"); g_mapObjectClazz = jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/MapObject");
g_featureIdClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/FeatureId"); g_featureIdClazz = jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/FeatureId");
g_bookmarkClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/Bookmark"); g_bookmarkClazz = jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/Bookmark");
g_httpClientClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/HttpClient"); g_httpClientClazz = jni::GetGlobalClassRef(env, "app/organicmaps/util/HttpClient");
g_httpParamsClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/HttpClient$Params"); g_httpParamsClazz = jni::GetGlobalClassRef(env, "app/organicmaps/util/HttpClient$Params");
g_platformSocketClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/location/PlatformSocket"); g_platformSocketClazz = jni::GetGlobalClassRef(env, "app/organicmaps/location/PlatformSocket");
g_utilsClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/Utils"); g_utilsClazz = jni::GetGlobalClassRef(env, "app/organicmaps/util/Utils");
g_loggerClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/log/Logger"); g_loggerClazz = jni::GetGlobalClassRef(env, "app/organicmaps/util/log/Logger");
g_keyValueClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/KeyValue"); g_keyValueClazz = jni::GetGlobalClassRef(env, "app/organicmaps/util/KeyValue");
g_networkPolicyClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/NetworkPolicy"); g_networkPolicyClazz = jni::GetGlobalClassRef(env, "app/organicmaps/util/NetworkPolicy");
g_elevationInfoClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/ElevationInfo"); g_elevationInfoClazz = jni::GetGlobalClassRef(env, "app/organicmaps/bookmarks/data/ElevationInfo");
return JNI_VERSION_1_6; return JNI_VERSION_1_6;
} }
@@ -269,7 +269,7 @@ std::string DescribeException()
jobject GetNewParcelablePointD(JNIEnv * env, m2::PointD const & point) jobject GetNewParcelablePointD(JNIEnv * env, m2::PointD const & point)
{ {
jclass klass = env->FindClass("app/organicmaps/sdk/bookmarks/data/ParcelablePointD"); jclass klass = env->FindClass("app/organicmaps/bookmarks/data/ParcelablePointD");
ASSERT ( klass, () ); ASSERT ( klass, () );
jmethodID methodID = GetConstructorID(env, klass, "(DD)V"); jmethodID methodID = GetConstructorID(env, klass, "(DD)V");

View File

@@ -3,9 +3,9 @@
#include "base/exception.hpp" #include "base/exception.hpp"
#include "base/logging.hpp" #include "base/logging.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/core/logging.hpp" #include "app/organicmaps/core/logging.hpp"
#include "app/organicmaps/sdk/core/ScopedEnv.hpp" #include "app/organicmaps/core/ScopedEnv.hpp"
#include <android/log.h> #include <android/log.h>
#include <cassert> #include <cassert>

View File

@@ -1,7 +1,7 @@
#include <jni.h> #include <jni.h>
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/Framework.hpp"
#include "editor/osm_editor.hpp" #include "editor/osm_editor.hpp"
@@ -66,38 +66,38 @@ extern "C"
using osm::Editor; using osm::Editor;
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeInit(JNIEnv * env, jclass) Java_app_organicmaps_editor_Editor_nativeInit(JNIEnv * env, jclass)
{ {
g_localNameClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/LocalizedName"); g_localNameClazz = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/LocalizedName");
// LocalizedName(int code, @NonNull String name, @NonNull String lang, @NonNull String langName) // LocalizedName(int code, @NonNull String name, @NonNull String lang, @NonNull String langName)
g_localNameCtor = jni::GetConstructorID(env, g_localNameClazz, "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); g_localNameCtor = jni::GetConstructorID(env, g_localNameClazz, "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
g_localNameFieldCode = env->GetFieldID(g_localNameClazz, "code", "I"); g_localNameFieldCode = env->GetFieldID(g_localNameClazz, "code", "I");
g_localNameFieldName = env->GetFieldID(g_localNameClazz, "name", "Ljava/lang/String;"); g_localNameFieldName = env->GetFieldID(g_localNameClazz, "name", "Ljava/lang/String;");
g_localStreetClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/LocalizedStreet"); g_localStreetClazz = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/LocalizedStreet");
// LocalizedStreet(@NonNull String defaultName, @NonNull String localizedName) // LocalizedStreet(@NonNull String defaultName, @NonNull String localizedName)
g_localStreetCtor = jni::GetConstructorID(env, g_localStreetClazz, "(Ljava/lang/String;Ljava/lang/String;)V"); g_localStreetCtor = jni::GetConstructorID(env, g_localStreetClazz, "(Ljava/lang/String;Ljava/lang/String;)V");
g_localStreetFieldDef = env->GetFieldID(g_localStreetClazz, "defaultName", "Ljava/lang/String;"); g_localStreetFieldDef = env->GetFieldID(g_localStreetClazz, "defaultName", "Ljava/lang/String;");
g_localStreetFieldLoc = env->GetFieldID(g_localStreetClazz, "localizedName", "Ljava/lang/String;"); g_localStreetFieldLoc = env->GetFieldID(g_localStreetClazz, "localizedName", "Ljava/lang/String;");
g_namesDataSourceClassID = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/NamesDataSource"); g_namesDataSourceClassID = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/NamesDataSource");
g_namesDataSourceConstructorID = jni::GetConstructorID(env, g_namesDataSourceClassID, "([Lapp/organicmaps/sdk/editor/data/LocalizedName;I)V"); g_namesDataSourceConstructorID = jni::GetConstructorID(env, g_namesDataSourceClassID, "([Lapp/organicmaps/editor/data/LocalizedName;I)V");
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetOpeningHours(JNIEnv * env, jclass) Java_app_organicmaps_editor_Editor_nativeGetOpeningHours(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, g_editableMapObject.GetOpeningHours()); return jni::ToJavaString(env, g_editableMapObject.GetOpeningHours());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetOpeningHours(JNIEnv * env, jclass, jstring value) Java_app_organicmaps_editor_Editor_nativeSetOpeningHours(JNIEnv * env, jclass, jstring value)
{ {
g_editableMapObject.SetOpeningHours(jni::ToNativeString(env, value)); g_editableMapObject.SetOpeningHours(jni::ToNativeString(env, value));
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetMetadata(JNIEnv * env, jclass, jint id) Java_app_organicmaps_editor_Editor_nativeGetMetadata(JNIEnv * env, jclass, jint id)
{ {
auto const metaID = static_cast<osm::MapObject::MetadataID>(id); auto const metaID = static_cast<osm::MapObject::MetadataID>(id);
ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ()); ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ());
@@ -113,7 +113,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetMetadata(JNIEnv * env, jclass, j
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsMetadataValid(JNIEnv * env, jclass, jint id, jstring value) Java_app_organicmaps_editor_Editor_nativeIsMetadataValid(JNIEnv * env, jclass, jint id, jstring value)
{ {
auto const metaID = static_cast<osm::MapObject::MetadataID>(id); auto const metaID = static_cast<osm::MapObject::MetadataID>(id);
ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ()); ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ());
@@ -121,7 +121,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeIsMetadataValid(JNIEnv * env, jclas
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetMetadata(JNIEnv * env, jclass, jint id, jstring value) Java_app_organicmaps_editor_Editor_nativeSetMetadata(JNIEnv * env, jclass, jint id, jstring value)
{ {
auto const metaID = static_cast<osm::MapObject::MetadataID>(id); auto const metaID = static_cast<osm::MapObject::MetadataID>(id);
ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ()); ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ());
@@ -129,32 +129,32 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSetMetadata(JNIEnv * env, jclass, j
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetStars(JNIEnv * env, jclass) Java_app_organicmaps_editor_Editor_nativeGetStars(JNIEnv * env, jclass)
{ {
return g_editableMapObject.GetStars(); return g_editableMapObject.GetStars();
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetMaxEditableBuildingLevels(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeGetMaxEditableBuildingLevels(JNIEnv *, jclass)
{ {
return osm::EditableMapObject::kMaximumLevelsEditableByUsers; return osm::EditableMapObject::kMaximumLevelsEditableByUsers;
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeHasWifi(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeHasWifi(JNIEnv *, jclass)
{ {
return g_editableMapObject.GetInternet() == feature::Internet::Wlan; return g_editableMapObject.GetInternet() == feature::Internet::Wlan;
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetHasWifi(JNIEnv *, jclass, jboolean hasWifi) Java_app_organicmaps_editor_Editor_nativeSetHasWifi(JNIEnv *, jclass, jboolean hasWifi)
{ {
if (hasWifi != (g_editableMapObject.GetInternet() == feature::Internet::Wlan)) if (hasWifi != (g_editableMapObject.GetInternet() == feature::Internet::Wlan))
g_editableMapObject.SetInternet(hasWifi ? feature::Internet::Wlan : feature::Internet::Unknown); g_editableMapObject.SetInternet(hasWifi ? feature::Internet::Wlan : feature::Internet::Unknown);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSaveEditedFeature(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeSaveEditedFeature(JNIEnv *, jclass)
{ {
switch (g_framework->NativeFramework()->SaveEditedMapObject(g_editableMapObject)) switch (g_framework->NativeFramework()->SaveEditedMapObject(g_editableMapObject))
{ {
@@ -169,7 +169,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSaveEditedFeature(JNIEnv *, jclass)
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowEditPlace(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeShouldShowEditPlace(JNIEnv *, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -179,7 +179,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowEditPlace(JNIEnv *, jclas
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -189,7 +189,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jcl
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -199,7 +199,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -209,7 +209,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jcl
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -219,7 +219,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jcla
} }
JNIEXPORT jintArray JNICALL JNIEXPORT jintArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetEditableProperties(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetEditableProperties(JNIEnv * env, jclass clazz)
{ {
auto const & editable = g_editableMapObject.GetEditableProperties(); auto const & editable = g_editableMapObject.GetEditableProperties();
size_t const size = editable.size(); size_t const size = editable.size();
@@ -233,31 +233,31 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetEditableProperties(JNIEnv * env,
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsAddressEditable(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeIsAddressEditable(JNIEnv * env, jclass clazz)
{ {
return g_editableMapObject.IsAddressEditable(); return g_editableMapObject.IsAddressEditable();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsNameEditable(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeIsNameEditable(JNIEnv * env, jclass clazz)
{ {
return g_editableMapObject.IsNameEditable(); return g_editableMapObject.IsNameEditable();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsPointType(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeIsPointType(JNIEnv * env, jclass clazz)
{ {
return g_editableMapObject.IsPointType(); return g_editableMapObject.IsPointType();
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsBuilding(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeIsBuilding(JNIEnv * env, jclass clazz)
{ {
return g_editableMapObject.IsBuilding(); return g_editableMapObject.IsBuilding();
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetNamesDataSource(JNIEnv * env, jclass) Java_app_organicmaps_editor_Editor_nativeGetNamesDataSource(JNIEnv * env, jclass)
{ {
auto const namesDataSource = g_editableMapObject.GetNamesDataSource(); auto const namesDataSource = g_editableMapObject.GetNamesDataSource();
@@ -268,7 +268,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetNamesDataSource(JNIEnv * env, jc
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetNames(JNIEnv * env, jclass, jobjectArray names) Java_app_organicmaps_editor_Editor_nativeSetNames(JNIEnv * env, jclass, jobjectArray names)
{ {
int const length = env->GetArrayLength(names); int const length = env->GetArrayLength(names);
for (int i = 0; i < length; i++) for (int i = 0; i < length; i++)
@@ -280,29 +280,29 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSetNames(JNIEnv * env, jclass, jobj
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetStreet(JNIEnv * env, jclass) Java_app_organicmaps_editor_Editor_nativeGetStreet(JNIEnv * env, jclass)
{ {
return ToJavaStreet(env, g_editableMapObject.GetStreet()); return ToJavaStreet(env, g_editableMapObject.GetStreet());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetStreet(JNIEnv * env, jclass, jobject street) Java_app_organicmaps_editor_Editor_nativeSetStreet(JNIEnv * env, jclass, jobject street)
{ {
g_editableMapObject.SetStreet({jni::ToNativeString(env, (jstring) env->GetObjectField(street, g_localStreetFieldDef)), g_editableMapObject.SetStreet({jni::ToNativeString(env, (jstring) env->GetObjectField(street, g_localStreetFieldDef)),
jni::ToNativeString(env, (jstring) env->GetObjectField(street, g_localStreetFieldLoc))}); jni::ToNativeString(env, (jstring) env->GetObjectField(street, g_localStreetFieldLoc))});
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetNearbyStreets(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetNearbyStreets(JNIEnv * env, jclass clazz)
{ {
return jni::ToJavaArray(env, g_localStreetClazz, g_editableMapObject.GetNearbyStreets(), ToJavaStreet); return jni::ToJavaArray(env, g_localStreetClazz, g_editableMapObject.GetNearbyStreets(), ToJavaStreet);
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetSupportedLanguages(JNIEnv * env, jclass clazz, jboolean includeServiceLangs) Java_app_organicmaps_editor_Editor_nativeGetSupportedLanguages(JNIEnv * env, jclass clazz, jboolean includeServiceLangs)
{ {
using TLang = StringUtf8Multilang::Lang; using TLang = StringUtf8Multilang::Lang;
//public Language(@NonNull String code, @NonNull String name) //public Language(@NonNull String code, @NonNull String name)
static jclass const langClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/Language"); static jclass const langClass = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/Language");
static jmethodID const langCtor = jni::GetConstructorID(env, langClass, "(Ljava/lang/String;Ljava/lang/String;)V"); static jmethodID const langCtor = jni::GetConstructorID(env, langClass, "(Ljava/lang/String;Ljava/lang/String;)V");
return jni::ToJavaArray(env, langClass, StringUtf8Multilang::GetSupportedLanguages(includeServiceLangs), return jni::ToJavaArray(env, langClass, StringUtf8Multilang::GetSupportedLanguages(includeServiceLangs),
@@ -315,25 +315,25 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetSupportedLanguages(JNIEnv * env,
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetHouseNumber(JNIEnv * env, jclass) Java_app_organicmaps_editor_Editor_nativeGetHouseNumber(JNIEnv * env, jclass)
{ {
return jni::ToJavaString(env, g_editableMapObject.GetHouseNumber()); return jni::ToJavaString(env, g_editableMapObject.GetHouseNumber());
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetHouseNumber(JNIEnv * env, jclass, jstring houseNumber) Java_app_organicmaps_editor_Editor_nativeSetHouseNumber(JNIEnv * env, jclass, jstring houseNumber)
{ {
g_editableMapObject.SetHouseNumber(jni::ToNativeString(env, houseNumber)); g_editableMapObject.SetHouseNumber(jni::ToNativeString(env, houseNumber));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeHasSomethingToUpload(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeHasSomethingToUpload(JNIEnv * env, jclass clazz)
{ {
return Editor::Instance().HaveMapEditsOrNotesToUpload(); return Editor::Instance().HaveMapEditsOrNotesToUpload();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeUploadChanges(JNIEnv * env, jclass clazz, jstring token, jstring appVersion, jstring appId) Java_app_organicmaps_editor_Editor_nativeUploadChanges(JNIEnv * env, jclass clazz, jstring token, jstring appVersion, jstring appId)
{ {
// TODO: Handle upload status in callback // TODO: Handle upload status in callback
Editor::Instance().UploadChanges(jni::ToNativeString(env, token), Editor::Instance().UploadChanges(jni::ToNativeString(env, token),
@@ -342,7 +342,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeUploadChanges(JNIEnv * env, jclass
} }
JNIEXPORT jlongArray JNICALL JNIEXPORT jlongArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetStats(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetStats(JNIEnv * env, jclass clazz)
{ {
auto const stats = Editor::Instance().GetStats(); auto const stats = Editor::Instance().GetStats();
jlongArray result = env->NewLongArray(3); jlongArray result = env->NewLongArray(3);
@@ -353,13 +353,13 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetStats(JNIEnv * env, jclass clazz
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeClearLocalEdits(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeClearLocalEdits(JNIEnv * env, jclass clazz)
{ {
Editor::Instance().ClearAllLocalEdits(); Editor::Instance().ClearAllLocalEdits();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeStartEdit(JNIEnv *, jclass) Java_app_organicmaps_editor_Editor_nativeStartEdit(JNIEnv *, jclass)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
if (!frm->HasPlacePageInfo()) if (!frm->HasPlacePageInfo())
@@ -374,7 +374,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeStartEdit(JNIEnv *, jclass)
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeCreateMapObject(JNIEnv * env, jclass, Java_app_organicmaps_editor_Editor_nativeCreateMapObject(JNIEnv * env, jclass,
jstring featureType) jstring featureType)
{ {
::Framework * frm = g_framework->NativeFramework(); ::Framework * frm = g_framework->NativeFramework();
@@ -385,7 +385,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeCreateMapObject(JNIEnv * env, jclas
// static void nativeCreateNote(String text); // static void nativeCreateNote(String text);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeCreateNote(JNIEnv * env, jclass clazz, jstring text) Java_app_organicmaps_editor_Editor_nativeCreateNote(JNIEnv * env, jclass clazz, jstring text)
{ {
g_framework->NativeFramework()->CreateNote( g_framework->NativeFramework()->CreateNote(
g_editableMapObject, osm::Editor::NoteProblemType::General, jni::ToNativeString(env, text)); g_editableMapObject, osm::Editor::NoteProblemType::General, jni::ToNativeString(env, text));
@@ -393,7 +393,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeCreateNote(JNIEnv * env, jclass cla
// static void nativePlaceDoesNotExist(String comment); // static void nativePlaceDoesNotExist(String comment);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativePlaceDoesNotExist(JNIEnv * env, jclass clazz, jstring comment) Java_app_organicmaps_editor_Editor_nativePlaceDoesNotExist(JNIEnv * env, jclass clazz, jstring comment)
{ {
g_framework->NativeFramework()->CreateNote(g_editableMapObject, g_framework->NativeFramework()->CreateNote(g_editableMapObject,
osm::Editor::NoteProblemType::PlaceDoesNotExist, osm::Editor::NoteProblemType::PlaceDoesNotExist,
@@ -401,13 +401,13 @@ Java_app_organicmaps_sdk_editor_Editor_nativePlaceDoesNotExist(JNIEnv * env, jcl
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeRollbackMapObject(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeRollbackMapObject(JNIEnv * env, jclass clazz)
{ {
g_framework->NativeFramework()->RollBackChanges(g_editableMapObject.GetID()); g_framework->NativeFramework()->RollBackChanges(g_editableMapObject.GetID());
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv * env, jclass clazz,
jstring jLang) jstring jLang)
{ {
std::string const & lang = jni::ToNativeString(env, jLang); std::string const & lang = jni::ToNativeString(env, jLang);
@@ -418,7 +418,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSearchCreatableFeatureTypes(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_Editor_nativeSearchCreatableFeatureTypes(JNIEnv * env, jclass clazz,
jstring query, jstring query,
jstring jLang) jstring jLang)
{ {
@@ -430,7 +430,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSearchCreatableFeatureTypes(JNIEnv
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetCuisines(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetCuisines(JNIEnv * env, jclass clazz)
{ {
osm::AllCuisines const & cuisines = osm::Cuisines::Instance().AllSupportedCuisines(); osm::AllCuisines const & cuisines = osm::Cuisines::Instance().AllSupportedCuisines();
std::vector<std::string> keys; std::vector<std::string> keys;
@@ -441,13 +441,13 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetCuisines(JNIEnv * env, jclass cl
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetSelectedCuisines(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetSelectedCuisines(JNIEnv * env, jclass clazz)
{ {
return jni::ToJavaStringArray(env, g_editableMapObject.GetCuisines()); return jni::ToJavaStringArray(env, g_editableMapObject.GetCuisines());
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeFilterCuisinesKeys(JNIEnv * env, jclass thiz, jstring jSubstr) Java_app_organicmaps_editor_Editor_nativeFilterCuisinesKeys(JNIEnv * env, jclass thiz, jstring jSubstr)
{ {
std::string const substr = jni::ToNativeString(env, jSubstr); std::string const substr = jni::ToNativeString(env, jSubstr);
bool const noFilter = substr.length() == 0; bool const noFilter = substr.length() == 0;
@@ -467,7 +467,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeFilterCuisinesKeys(JNIEnv * env, jc
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeTranslateCuisines(JNIEnv * env, jclass clazz, jobjectArray jKeys) Java_app_organicmaps_editor_Editor_nativeTranslateCuisines(JNIEnv * env, jclass clazz, jobjectArray jKeys)
{ {
int const length = env->GetArrayLength(jKeys); int const length = env->GetArrayLength(jKeys);
auto const & cuisines = osm::Cuisines::Instance(); auto const & cuisines = osm::Cuisines::Instance();
@@ -482,7 +482,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeTranslateCuisines(JNIEnv * env, jcl
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeSetSelectedCuisines(JNIEnv * env, jclass clazz, jobjectArray jKeys) Java_app_organicmaps_editor_Editor_nativeSetSelectedCuisines(JNIEnv * env, jclass clazz, jobjectArray jKeys)
{ {
int const length = env->GetArrayLength(jKeys); int const length = env->GetArrayLength(jKeys);
std::vector<std::string> cuisines; std::vector<std::string> cuisines;
@@ -493,38 +493,38 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSetSelectedCuisines(JNIEnv * env, j
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetFormattedCuisine(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetFormattedCuisine(JNIEnv * env, jclass clazz)
{ {
return jni::ToJavaString(env, g_editableMapObject.FormatCuisines()); return jni::ToJavaString(env, g_editableMapObject.FormatCuisines());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetMwmName(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetMwmName(JNIEnv * env, jclass clazz)
{ {
return jni::ToJavaString(env, g_editableMapObject.GetID().GetMwmName()); return jni::ToJavaString(env, g_editableMapObject.GetID().GetMwmName());
} }
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetMwmVersion(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetMwmVersion(JNIEnv * env, jclass clazz)
{ {
return g_editableMapObject.GetID().GetMwmVersion(); return g_editableMapObject.GetID().GetMwmVersion();
} }
// static boolean nativeIsHouseValid(String houseNumber); // static boolean nativeIsHouseValid(String houseNumber);
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsHouseValid(JNIEnv * env, jclass clazz, jstring houseNumber) Java_app_organicmaps_editor_Editor_nativeIsHouseValid(JNIEnv * env, jclass clazz, jstring houseNumber)
{ {
return osm::EditableMapObject::ValidateHouseNumber(jni::ToNativeString(env, houseNumber)); return osm::EditableMapObject::ValidateHouseNumber(jni::ToNativeString(env, houseNumber));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsNameValid(JNIEnv * env, jclass clazz, jstring name) Java_app_organicmaps_editor_Editor_nativeIsNameValid(JNIEnv * env, jclass clazz, jstring name)
{ {
return osm::EditableMapObject::ValidateName(jni::ToNativeString(env, name)); return osm::EditableMapObject::ValidateName(jni::ToNativeString(env, name));
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetCategory(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetCategory(JNIEnv * env, jclass clazz)
{ {
auto types = g_editableMapObject.GetTypes(); auto types = g_editableMapObject.GetTypes();
types.SortBySpec(); types.SortBySpec();
@@ -534,20 +534,20 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetCategory(JNIEnv * env, jclass cl
// @FeatureStatus // @FeatureStatus
// static native int nativeGetMapObjectStatus(); // static native int nativeGetMapObjectStatus();
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeGetMapObjectStatus(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeGetMapObjectStatus(JNIEnv * env, jclass clazz)
{ {
return static_cast<jint>(osm::Editor::Instance().GetFeatureStatus(g_editableMapObject.GetID())); return static_cast<jint>(osm::Editor::Instance().GetFeatureStatus(g_editableMapObject.GetID()));
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeIsMapObjectUploaded(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_Editor_nativeIsMapObjectUploaded(JNIEnv * env, jclass clazz)
{ {
return osm::Editor::Instance().IsFeatureUploaded(g_editableMapObject.GetID().m_mwmId, g_editableMapObject.GetID().m_index); return osm::Editor::Instance().IsFeatureUploaded(g_editableMapObject.GetID().m_mwmId, g_editableMapObject.GetID().m_index);
} }
// static nativeMakeLocalizedName(String langCode, String name); // static nativeMakeLocalizedName(String langCode, String name);
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_Editor_nativeMakeLocalizedName(JNIEnv * env, jclass clazz, jstring code, jstring name) Java_app_organicmaps_editor_Editor_nativeMakeLocalizedName(JNIEnv * env, jclass clazz, jstring code, jstring name)
{ {
osm::LocalizedName localizedName(jni::ToNativeString(env, code), jni::ToNativeString(env, name)); osm::LocalizedName localizedName(jni::ToNativeString(env, code), jni::ToNativeString(env, name));
return ToJavaName(env, localizedName); return ToJavaName(env, localizedName);

View File

@@ -1,7 +1,7 @@
#include <jni.h> #include <jni.h>
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/platform/AndroidPlatform.hpp"
#include "editor/opening_hours_ui.hpp" #include "editor/opening_hours_ui.hpp"
#include "editor/ui2oh.hpp" #include "editor/ui2oh.hpp"
@@ -44,7 +44,7 @@ jfieldID g_fidWeekdays;
jobject JavaHoursMinutes(JNIEnv * env, jlong hours, jlong minutes) jobject JavaHoursMinutes(JNIEnv * env, jlong hours, jlong minutes)
{ {
static const jclass dateUtilsClass = jni::GetGlobalClassRef(env, static const jclass dateUtilsClass = jni::GetGlobalClassRef(env,
"app/organicmaps/sdk/util/DateUtils"); "app/organicmaps/util/DateUtils");
static jmethodID const is24HourFormatMethod = static jmethodID const is24HourFormatMethod =
jni::GetStaticMethodID(env, jni::GetStaticMethodID(env,
dateUtilsClass, dateUtilsClass,
@@ -182,9 +182,9 @@ TimeTableSet NativeTimetableSet(JNIEnv * env, jobjectArray jTimetables)
extern "C" extern "C"
{ {
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_OpeningHours_nativeInit(JNIEnv * env, jclass clazz)
{ {
g_clazzHoursMinutes = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/HoursMinutes"); g_clazzHoursMinutes = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/HoursMinutes");
// Java signature : HoursMinutes(@IntRange(from = 0, to = 24) long hours, @IntRange(from = 0, to = 60) long minutes) // Java signature : HoursMinutes(@IntRange(from = 0, to = 24) long hours, @IntRange(from = 0, to = 60) long minutes)
g_ctorHoursMinutes = env->GetMethodID(g_clazzHoursMinutes, "<init>", "(JJZ)V"); g_ctorHoursMinutes = env->GetMethodID(g_clazzHoursMinutes, "<init>", "(JJZ)V");
ASSERT(g_ctorHoursMinutes, (jni::DescribeException())); ASSERT(g_ctorHoursMinutes, (jni::DescribeException()));
@@ -193,24 +193,24 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass cla
g_fidMinutes = env->GetFieldID(g_clazzHoursMinutes, "minutes", "J"); g_fidMinutes = env->GetFieldID(g_clazzHoursMinutes, "minutes", "J");
ASSERT(g_fidMinutes, (jni::DescribeException())); ASSERT(g_fidMinutes, (jni::DescribeException()));
g_clazzTimespan = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/Timespan"); g_clazzTimespan = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/Timespan");
// Java signature : Timespan(HoursMinutes start, HoursMinutes end) // Java signature : Timespan(HoursMinutes start, HoursMinutes end)
g_ctorTimespan = g_ctorTimespan =
env->GetMethodID(g_clazzTimespan, "<init>","(Lapp/organicmaps/sdk/editor/data/HoursMinutes;Lapp/organicmaps/sdk/editor/data/HoursMinutes;)V"); env->GetMethodID(g_clazzTimespan, "<init>","(Lapp/organicmaps/editor/data/HoursMinutes;Lapp/organicmaps/editor/data/HoursMinutes;)V");
ASSERT(g_ctorTimespan, (jni::DescribeException())); ASSERT(g_ctorTimespan, (jni::DescribeException()));
g_fidStart = env->GetFieldID(g_clazzTimespan, "start", "Lapp/organicmaps/sdk/editor/data/HoursMinutes;"); g_fidStart = env->GetFieldID(g_clazzTimespan, "start", "Lapp/organicmaps/editor/data/HoursMinutes;");
ASSERT(g_fidStart, (jni::DescribeException())); ASSERT(g_fidStart, (jni::DescribeException()));
g_fidEnd = env->GetFieldID(g_clazzTimespan, "end", "Lapp/organicmaps/sdk/editor/data/HoursMinutes;"); g_fidEnd = env->GetFieldID(g_clazzTimespan, "end", "Lapp/organicmaps/editor/data/HoursMinutes;");
ASSERT(g_fidEnd, (jni::DescribeException())); ASSERT(g_fidEnd, (jni::DescribeException()));
g_clazzTimetable = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/Timetable"); g_clazzTimetable = jni::GetGlobalClassRef(env, "app/organicmaps/editor/data/Timetable");
// Java signature : Timetable(Timespan workingTime, Timespan[] closedHours, boolean isFullday, int weekdays[]) // Java signature : Timetable(Timespan workingTime, Timespan[] closedHours, boolean isFullday, int weekdays[])
g_ctorTimetable = g_ctorTimetable =
env->GetMethodID(g_clazzTimetable, "<init>","(Lapp/organicmaps/sdk/editor/data/Timespan;[Lapp/organicmaps/sdk/editor/data/Timespan;Z[I)V"); env->GetMethodID(g_clazzTimetable, "<init>","(Lapp/organicmaps/editor/data/Timespan;[Lapp/organicmaps/editor/data/Timespan;Z[I)V");
ASSERT(g_ctorTimetable, (jni::DescribeException())); ASSERT(g_ctorTimetable, (jni::DescribeException()));
g_fidWorkingTimespan = env->GetFieldID(g_clazzTimetable, "workingTimespan", "Lapp/organicmaps/sdk/editor/data/Timespan;"); g_fidWorkingTimespan = env->GetFieldID(g_clazzTimetable, "workingTimespan", "Lapp/organicmaps/editor/data/Timespan;");
ASSERT(g_fidWorkingTimespan, (jni::DescribeException())); ASSERT(g_fidWorkingTimespan, (jni::DescribeException()));
g_fidClosedTimespans = env->GetFieldID(g_clazzTimetable, "closedTimespans", "[Lapp/organicmaps/sdk/editor/data/Timespan;"); g_fidClosedTimespans = env->GetFieldID(g_clazzTimetable, "closedTimespans", "[Lapp/organicmaps/editor/data/Timespan;");
ASSERT(g_fidClosedTimespans, (jni::DescribeException())); ASSERT(g_fidClosedTimespans, (jni::DescribeException()));
g_fidIsFullday = env->GetFieldID(g_clazzTimetable, "isFullday", "Z"); g_fidIsFullday = env->GetFieldID(g_clazzTimetable, "isFullday", "Z");
ASSERT(g_fidIsFullday, (jni::DescribeException())); ASSERT(g_fidIsFullday, (jni::DescribeException()));
@@ -219,21 +219,21 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass cla
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeGetDefaultTimetables(JNIEnv * env, jclass clazz) Java_app_organicmaps_editor_OpeningHours_nativeGetDefaultTimetables(JNIEnv * env, jclass clazz)
{ {
TimeTableSet tts; TimeTableSet tts;
return JavaTimetables(env, tts); return JavaTimetables(env, tts);
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeGetComplementTimetable(JNIEnv * env, jclass clazz, jobjectArray timetables) Java_app_organicmaps_editor_OpeningHours_nativeGetComplementTimetable(JNIEnv * env, jclass clazz, jobjectArray timetables)
{ {
TimeTableSet const tts = NativeTimetableSet(env, timetables); TimeTableSet const tts = NativeTimetableSet(env, timetables);
return JavaTimetable(env, tts.GetComplementTimeTable()); return JavaTimetable(env, tts.GetComplementTimeTable());
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env, jclass clazz,
jobjectArray timetables, jint ttIndex, jint dayIndex) jobjectArray timetables, jint ttIndex, jint dayIndex)
{ {
TimeTableSet tts = NativeTimetableSet(env, timetables); TimeTableSet tts = NativeTimetableSet(env, timetables);
@@ -244,7 +244,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, jclass clazz,
jobjectArray timetables, jint ttIndex, jint dayIndex) jobjectArray timetables, jint ttIndex, jint dayIndex)
{ {
TimeTableSet tts = NativeTimetableSet(env, timetables); TimeTableSet tts = NativeTimetableSet(env, timetables);
@@ -255,7 +255,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, j
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jclass clazz,
jobject jTimetable, jboolean jIsFullday) jobject jTimetable, jboolean jIsFullday)
{ {
TimeTable tt = NativeTimetable(env, jTimetable); TimeTable tt = NativeTimetable(env, jTimetable);
@@ -270,7 +270,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jc
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env, jclass clazz,
jobject jTimetable, jobject jOpeningTime) jobject jTimetable, jobject jOpeningTime)
{ {
TimeTable tt = NativeTimetable(env, jTimetable); TimeTable tt = NativeTimetable(env, jTimetable);
@@ -279,7 +279,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env,
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, jclass clazz,
jobject jTimetable, jobject jClosedSpan) jobject jTimetable, jobject jClosedSpan)
{ {
TimeTable tt = NativeTimetable(env, jTimetable); TimeTable tt = NativeTimetable(env, jTimetable);
@@ -288,7 +288,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, j
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveClosedSpan(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OpeningHours_nativeRemoveClosedSpan(JNIEnv * env, jclass clazz,
jobject jTimetable, jint jClosedSpanIndex) jobject jTimetable, jint jClosedSpanIndex)
{ {
TimeTable tt = NativeTimetable(env, jTimetable); TimeTable tt = NativeTimetable(env, jTimetable);
@@ -297,7 +297,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveClosedSpan(JNIEnv * env
} }
JNIEXPORT jobjectArray JNICALL JNIEXPORT jobjectArray JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesFromString(JNIEnv * env, jclass clazz, jstring jSource) Java_app_organicmaps_editor_OpeningHours_nativeTimetablesFromString(JNIEnv * env, jclass clazz, jstring jSource)
{ {
TimeTableSet tts; TimeTableSet tts;
std::string const source = jni::ToNativeString(env, jSource); std::string const source = jni::ToNativeString(env, jSource);
@@ -308,7 +308,7 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesFromString(JNIEnv *
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesToString(JNIEnv * env, jclass clazz, jobjectArray jTts) Java_app_organicmaps_editor_OpeningHours_nativeTimetablesToString(JNIEnv * env, jclass clazz, jobjectArray jTts)
{ {
TimeTableSet tts = NativeTimetableSet(env, jTts); TimeTableSet tts = NativeTimetableSet(env, jTts);
std::stringstream sstr; std::stringstream sstr;
@@ -317,34 +317,8 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesToString(JNIEnv * e
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeIsTimetableStringValid(JNIEnv * env, jclass clazz, jstring jSource) Java_app_organicmaps_editor_OpeningHours_nativeIsTimetableStringValid(JNIEnv * env, jclass clazz, jstring jSource)
{ {
return OpeningHours(jni::ToNativeString(env, jSource)).IsValid(); return OpeningHours(jni::ToNativeString(env, jSource)).IsValid();
} }
JNIEXPORT jobject JNICALL
Java_app_organicmaps_sdk_editor_OpeningHours_nativeCurrentState(JNIEnv * env, jclass clazz, jobjectArray jTts)
{
TimeTableSet tts = NativeTimetableSet(env, jTts);
time_t const now = time(nullptr);
/// @todo We should check closed/open time for specific feature's timezone.
OpeningHours::InfoT ohInfo = MakeOpeningHours(tts).GetInfo(now);
jclass ohStateClass = jni::GetGlobalClassRef(env, "app/organicmaps/editor/OhState");
jclass ruleStateClass = jni::GetGlobalClassRef(env, "app/organicmaps/editor/OhState$State");
static const std::unordered_map<RuleState, const char*> ruleState = {
{RuleState::Open, "Open"},
{RuleState::Closed, "Closed"},
{RuleState::Unknown, "Unknown"}
};
jfieldID stateField = env->GetStaticFieldID(ruleStateClass, ruleState.at(ohInfo.state), "Lapp/organicmaps/editor/OhState$State;");
jobject stateObj = env->GetStaticObjectField(ruleStateClass, stateField);
jmethodID constructor = env->GetMethodID(ohStateClass, "<init>", "(Lapp/organicmaps/editor/OhState$State;JJ)V");
jobject javaOhState = env->NewObject(ohStateClass, constructor, stateObj, (jlong) ohInfo.nextTimeOpen, (jlong) ohInfo.nextTimeClosed);
return javaOhState;
}
} // extern "C" } // extern "C"

View File

@@ -1,7 +1,7 @@
#include <jni.h> #include <jni.h>
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/Framework.hpp"
#include "base/logging.hpp" #include "base/logging.hpp"
#include "base/string_utils.hpp" #include "base/string_utils.hpp"
@@ -16,10 +16,18 @@ using namespace osm;
using namespace jni; using namespace jni;
bool LoadOsmUserPreferences(std::string const & oauthToken, UserPreferences & outPrefs) bool LoadOsmUserPreferences(std::string const & oauthToken, UserPreferences & outPrefs)
{
try
{ {
ServerApi06 const api(OsmOAuth::ServerAuth(oauthToken)); ServerApi06 const api(OsmOAuth::ServerAuth(oauthToken));
outPrefs = api.GetUserPreferences(); outPrefs = api.GetUserPreferences();
return (outPrefs.m_id != 0); return true;
}
catch (std::exception const & ex)
{
LOG(LWARNING, ("Can't load user preferences from server: ", ex.what()));
}
return false;
} }
} // namespace } // namespace
@@ -27,14 +35,14 @@ extern "C"
{ {
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOAuth2Url(JNIEnv * env, jclass) Java_app_organicmaps_editor_OsmOAuth_nativeGetOAuth2Url(JNIEnv * env, jclass)
{ {
auto const auth = OsmOAuth::ServerAuth(); auto const auth = OsmOAuth::ServerAuth();
return ToJavaString(env, auth.BuildOAuth2Url()); return ToJavaString(env, auth.BuildOAuth2Url());
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithPassword(JNIEnv * env, jclass clazz, Java_app_organicmaps_editor_OsmOAuth_nativeAuthWithPassword(JNIEnv * env, jclass clazz,
jstring login, jstring password) jstring login, jstring password)
{ {
OsmOAuth auth = OsmOAuth::ServerAuth(); OsmOAuth auth = OsmOAuth::ServerAuth();
@@ -52,7 +60,7 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithPassword(JNIEnv * env, jc
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env, jclass, jstring oauth2code) Java_app_organicmaps_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env, jclass, jstring oauth2code)
{ {
OsmOAuth auth = OsmOAuth::ServerAuth(); OsmOAuth auth = OsmOAuth::ServerAuth();
try try
@@ -73,7 +81,7 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env,
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmUsername(JNIEnv * env, jclass, jstring oauthToken) Java_app_organicmaps_editor_OsmOAuth_nativeGetOsmUsername(JNIEnv * env, jclass, jstring oauthToken)
{ {
UserPreferences prefs; UserPreferences prefs;
if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs)) if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs))
@@ -82,7 +90,7 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmUsername(JNIEnv * env, jcla
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmChangesetsCount(JNIEnv * env, jclass, jstring oauthToken) Java_app_organicmaps_editor_OsmOAuth_nativeGetOsmChangesetsCount(JNIEnv * env, jclass, jstring oauthToken)
{ {
UserPreferences prefs; UserPreferences prefs;
if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs)) if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs))
@@ -91,7 +99,7 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmChangesetsCount(JNIEnv * en
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmProfilePictureUrl(JNIEnv * env, jclass, jstring oauthToken) Java_app_organicmaps_editor_OsmOAuth_nativeGetOsmProfilePictureUrl(JNIEnv * env, jclass, jstring oauthToken)
{ {
UserPreferences prefs; UserPreferences prefs;
if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs)) if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs))
@@ -100,13 +108,13 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmProfilePictureUrl(JNIEnv *
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetHistoryUrl(JNIEnv * env, jclass, jstring user) Java_app_organicmaps_editor_OsmOAuth_nativeGetHistoryUrl(JNIEnv * env, jclass, jstring user)
{ {
return jni::ToJavaString(env, OsmOAuth::ServerAuth().GetHistoryURL(jni::ToNativeString(env, user))); return jni::ToJavaString(env, OsmOAuth::ServerAuth().GetHistoryURL(jni::ToNativeString(env, user)));
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetNotesUrl(JNIEnv * env, jclass, jstring user) Java_app_organicmaps_editor_OsmOAuth_nativeGetNotesUrl(JNIEnv * env, jclass, jstring user)
{ {
return jni::ToJavaString(env, OsmOAuth::ServerAuth().GetNotesURL(jni::ToNativeString(env, user))); return jni::ToJavaString(env, OsmOAuth::ServerAuth().GetNotesURL(jni::ToNativeString(env, user)));
} }

View File

@@ -1,7 +1,7 @@
#include <jni.h> #include <jni.h>
#include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/Framework.hpp"
#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/core/jni_helper.hpp"
#include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/platform/AndroidPlatform.hpp"
using namespace std::placeholders; using namespace std::placeholders;
@@ -19,7 +19,7 @@ static void IsolinesStateChanged(IsolinesManager::IsolinesState state,
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeAddListener(JNIEnv *env, jclass clazz, jobject listener) Java_app_organicmaps_maplayer_isolines_IsolinesManager_nativeAddListener(JNIEnv *env, jclass clazz, jobject listener)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->SetIsolinesListener(std::bind(&IsolinesStateChanged, g_framework->SetIsolinesListener(std::bind(&IsolinesStateChanged,
@@ -28,14 +28,14 @@ Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeAddListener(JNI
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeRemoveListener(JNIEnv * env, jclass clazz) Java_app_organicmaps_maplayer_isolines_IsolinesManager_nativeRemoveListener(JNIEnv * env, jclass clazz)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->SetIsolinesListener(nullptr); g_framework->SetIsolinesListener(nullptr);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeShouldShowNotification(JNIEnv *env, Java_app_organicmaps_maplayer_isolines_IsolinesManager_nativeShouldShowNotification(JNIEnv *env,
jclass clazz) jclass clazz)
{ {
CHECK(g_framework, ("Framework isn't created yet!")); CHECK(g_framework, ("Framework isn't created yet!"));

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