Compare commits

..

1 Commits

Author SHA1 Message Date
Michał Brzozowski
d700510c94 [routing] Remove passed intermediate points when assembling a modified route mid-navigation
Fixes OM #9592

Signed-off-by: Michał Brzozowski <www.haxor@gmail.com>
2025-05-24 08:14:34 +02:00
663 changed files with 10379 additions and 7687 deletions

View File

@@ -12,12 +12,19 @@ jobs:
environment: production environment: production
steps: steps:
- name: Checkout sources - name: Checkout sources
# TODO: use shallow (and sparse?) checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
# - name: Parallel submodules checkout - name: Parallel submodules checkout
# shell: bash shell: bash
# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Checkout screenshots
uses: actions/checkout@v4
with:
repository: ${{ secrets.SCREENSHOTS_REPO }}
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
ref: main
path: screenshots
- name: Restore release keys - name: Restore release keys
shell: bash shell: bash
@@ -30,6 +37,6 @@ jobs:
- name: Upload - name: Upload
shell: bash shell: bash
run: ./gradlew publishGoogleReleaseListing run: ./gradlew prepareGoogleReleaseListing publishGoogleReleaseListing
working-directory: android working-directory: android
timeout-minutes: 5 timeout-minutes: 5

View File

@@ -22,9 +22,9 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Init boost, generate textures - name: Configure repository
shell: bash shell: bash
run: ./configure.sh --skip-map-download run: ./configure.sh
- name: Lint - name: Lint
shell: bash shell: bash
@@ -76,9 +76,13 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Init boost, generate textures - name: Configure repository
shell: bash shell: bash
run: ./configure.sh --skip-map-download run: ./configure.sh
- name: Generate symbols
shell: bash
run: ./tools/unix/generate_symbols.sh
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2

View File

@@ -38,10 +38,20 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
- name: Init boost, download World map, generate textures - name: Configure repository
shell: bash shell: bash
run: ./configure.sh run: ./configure.sh
- name: Download MWM files
shell: bash
run: |
wget https://cdn.comaps.app/maps/latest/World.mwm -P ./data/
wget https://cdn.comaps.app/maps/latest/WorldCoasts.mwm -P ./data/
- name: Generate symbols
shell: bash
run: ./tools/unix/generate_symbols.sh
- name: Configure XCode cache - name: Configure XCode cache
uses: irgaly/xcode-cache@v1 uses: irgaly/xcode-cache@v1
with: with:

6
.gitignore vendored
View File

@@ -187,3 +187,9 @@ tools/unix/maps/settings.sh
# VS Code # VS Code
.vscode .vscode
.cache .cache
# AppStore metadata
screenshots/
android/src/google/play/listings/
keywords/
iphone/metadata/**/keywords.txt

View File

@@ -11,9 +11,6 @@ set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
# Disable build-id generation to make builds reproducible.
add_link_options("LINKER:--build-id=none")
# Fixes warning ld: warning: ignoring duplicate libraries on Mac and Windows. # Fixes warning ld: warning: ignoring duplicate libraries on Mac and Windows.
if (POLICY CMP0156) if (POLICY CMP0156)
cmake_policy(SET CMP0156 NEW) cmake_policy(SET CMP0156 NEW)

View File

@@ -19,4 +19,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
optipng optipng
WORKDIR /root/comaps WORKDIR /root/comaps
RUN ./configure.sh RUN ./configure.sh
RUN ./tools/unix/generate_symbols.sh
CMD ./gradlew -Parm64 assembleFdroidDebug CMD ./gradlew -Parm64 assembleFdroidDebug

View File

@@ -2,14 +2,14 @@
/nativeOutputs /nativeOutputs
# ignore private keys # ignore private keys
/secure.properties.test /secure.properties
/secure.properties.release /release.keystore
/comaps-test.keystore /secure.properties
/comaps-release.keystore
/libnotify.properties /libnotify.properties
/google-play.json /google-play.json
/huawei-appgallery.json /huawei-appgallery.json
/agconnect-services.json /agconnect-services.json
/src/main/res/xml/network_security_config.xml
# ignore flags symlinks # ignore flags symlinks
/src/main/res/drawable-xhdpi/??.png /src/main/res/drawable-xhdpi/??.png
@@ -24,3 +24,6 @@
/src/main/res/drawable-mdpi/uk_northern_ireland.png /src/main/res/drawable-mdpi/uk_northern_ireland.png
/src/main/res/drawable-mdpi/uk_scotland.png /src/main/res/drawable-mdpi/uk_scotland.png
/src/main/res/drawable-mdpi/uk_wales.png /src/main/res/drawable-mdpi/uk_wales.png
# ignore autogenerated metadata (see prepareGoogleReleaseListing in build.gradle)
/src/google/play/listings

View File

@@ -170,6 +170,7 @@ android {
fdroid { fdroid {
dimension 'default' dimension 'default'
applicationIdSuffix '.fdroid'
versionName = android.defaultConfig.versionName + '-FDroid' versionName = android.defaultConfig.versionName + '-FDroid'
buildConfigField 'String', 'SUPPORT_MAIL', '"fdroid@comaps.app"' buildConfigField 'String', 'SUPPORT_MAIL', '"fdroid@comaps.app"'
} }
@@ -221,50 +222,33 @@ android {
} }
} }
def secureReleasePropertiesFileExists = file('secure.properties.release').exists() def securityPropertiesFileExists = file('secure.properties').exists()
if (secureReleasePropertiesFileExists) { if (securityPropertiesFileExists) {
apply from: 'secure.properties.release' apply from: 'secure.properties'
}
def secureTestPropertiesFileExists = file('secure.properties.test').exists()
if (secureTestPropertiesFileExists) {
apply from: 'secure.properties.test'
} }
signingConfigs { signingConfigs {
debug { debug {
storeFile file('comaps-debug.keystore') storeFile file('debug.keystore')
storePassword '12345678' storePassword '12345678'
keyAlias 'CoMaps Debug' keyAlias 'debug'
keyPassword '12345678' keyPassword '12345678'
} }
test {
if (secureTestPropertiesFileExists) {
storeFile file(secretTestStoreFile)
storePassword secretTestStorePassword
keyAlias secretTestKeyAlias
keyPassword secretTestKeyPassword
} else {
println('secure.properties.test doesn\'t exist')
}
}
release { release {
if (secureReleasePropertiesFileExists) { if (securityPropertiesFileExists) {
storeFile file(secretReleaseStoreFile) println('The release signing keys are available')
storePassword secretReleaseStorePassword storeFile file(spropStoreFile)
keyAlias secretReleaseKeyAlias storePassword spropStorePassword
keyPassword secretReleaseKeyPassword keyAlias spropKeyAlias
keyPassword spropKeyPassword
} else { } else {
println('secure.properties.release doesn\'t exist') println('The release signing keys are unavailable')
} }
} }
} }
buildTypes { buildTypes {
def taskName = getGradle().getStartParameter().getTaskRequests().toString().toLowerCase()
debug { debug {
applicationIdSuffix '.debug' // Allows to install debug and release builds together applicationIdSuffix '.debug' // Allows to install debug and release builds together
versionNameSuffix '-debug' versionNameSuffix '-debug'
@@ -277,16 +261,7 @@ android {
} }
release { release {
if (taskName.contains('release')) { signingConfig signingConfigs.release
if (secureReleasePropertiesFileExists) {
println('Using RELEASE signing keys from secure.properties.release')
signingConfig signingConfigs.release
} else {
println('NO RELEASE signing keys found')
println('Using DEBUG signing keys')
signingConfig signingConfigs.debug
}
}
minifyEnabled true minifyEnabled true
shrinkResources true shrinkResources true
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin. // Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
@@ -301,16 +276,7 @@ android {
beta { beta {
applicationIdSuffix '.test' applicationIdSuffix '.test'
versionNameSuffix '-test' versionNameSuffix '-test'
if (taskName.contains('beta')) { signingConfig signingConfigs.release
if (secureTestPropertiesFileExists) {
println('Using TEST signing keys from secure.properties.test')
signingConfig signingConfigs.test
} else {
println('NO TEST signing keys found')
println('Using DEBUG signing keys')
signingConfig signingConfigs.debug
}
}
minifyEnabled true minifyEnabled true
shrinkResources true shrinkResources true
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin. // Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
@@ -406,6 +372,32 @@ android.applicationVariants.all { variant ->
variant.resValue 'string', 'app_id', variant.applicationId variant.resValue 'string', 'app_id', variant.applicationId
} }
task prepareGoogleReleaseListing {
// Prepares Google Play metainfo from F-Droid metainfo.
final sourceFlavor = 'fdroid'
final targetFlavor = 'google'
doLast {
final sourceDir = new File("${projectDir}/src/$sourceFlavor/play/listings")
final targetDir = new File("${projectDir}/src/$targetFlavor/play/listings")
final sourceFiles = fileTree(dir: sourceDir,
include: '**/*.txt', exclude: "**/*-${targetFlavor}.txt")
sourceFiles.each { File sourceFile ->
final locale = sourceFile.parentFile.getName()
final targetLocaleDir = new File(targetDir, locale)
if (!targetLocaleDir.isDirectory())
targetLocaleDir.mkdirs()
final targetFile = new File(targetLocaleDir, sourceFile.getName())
// Override Google-specific values by using ${name}-google.txt files.
final overrideFile = new File(sourceFile.getPath().replace('.txt', "-${targetFlavor}.txt"))
targetFile.text = overrideFile.exists() ? overrideFile.text : sourceFile.text
}
copy {
from "${projectDir}/../../screenshots/android"
into targetDir
}
}
}
play { play {
enabled.set(false) enabled.set(false)
track.set('production') track.set('production')

Binary file not shown.

BIN
android/app/debug.keystore Normal file

Binary file not shown.

View File

@@ -1,34 +0,0 @@
Komunitou vedené bezplatná a otevřená mapová aplikace založená na datech z projektu OpenStreetMap a posílená závazkem k transparentnosti, soukromí a neziskovosti. Aplikace CoMaps je fork/odnož aplikace Organic Maps, která je zase forkem aplikace Maps.ME.
Důvody vzniku projektu a jeho směr si můžete přečíst na adrese <b><i>codeberg.org/comaps</i></b>.
Můžete se zde také připojit ke komunitě pomáhat s vytvářením nejlepší mapové aplikace
• Používejte aplikaci a sdílejte ji se známými
• Poskytujte zpětnou vazbu a nahlašujte problémy
• 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>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>Š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>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>:
<ul>
<li>Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google</li>
<li>Outdoorový režim se zvýrazněnými turistickými trasami, tábořišti, vodními zdroji, vrcholy, vrstevnicemi atd.</li>
<li>Pěší trasy a cyklostezky</li>
<li>Body zájmu, jako jsou restaurace, čerpací stanice, hotely, obchody, vyhlídky a mnoho dalšího</li>
<li>Hledání podle názvu nebo adresy nebo podle kategorie bodů zájmu</li>
<li>Navigace s hlasovými pokyny pro chůzi, jízdu na kole nebo řízení</li>
<li>Uložení oblíbených míst jedním klepnutím</li>
<li>Offline články z Wikipedie</li>
<li>Vrstva metra a navigace v něm</li>
<li>Záznam tras</li>
<li>Export a import záložek a tras ve formátech KML, KMZ a GPX</li>
<li>Tmavý režim k použití během noci</li>
<li>Zlepšování mapových dat pro všechny pomocí jednoduchého vestavěného editoru</li>
</ul>
<b>Svoboda je tady</b>
Objevujte své cesty, navigujte se světem se soukromím a komunitou na prvním místě!

View File

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

View File

@@ -1 +0,0 @@
CoMaps pěšky, na kole a autem offline a soukromě

View File

@@ -1,32 +0,0 @@
Eine von der Community betriebene, kostenlose Open-Source Karten App, die auf OpenStreetMap Daten basiert. Transparent, Daten sparsam und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, das wiederum ein Fork/Abspaltung von Maps.Me ist.
Lese mehr über die Gründe und Ziele des Projekt unter <b><i>codeberg.org/comaps</i></b>.
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
• Nutze die App und erzähle anderen davon
• Gib Feedback und melde Probleme
• Aktualisiere Kartendaten in der App oder auf der OpenStreetMap Website
‣ <b>Einfach und ausgereift</b>: Essenzielle, leicht zu bedienende Funktionen, die einfach funktionieren.
‣ <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>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>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, Software Entwicklung oder Spenden.
‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open Source</b>
<b>Hauptfunktionen</b>:
• Detaillierte, herunterladbare Karten mit Orten, die bei Google Maps oft fehlen
• Outdoor-Modus mit hervorgehobenen Wanderwegen, Campingplätzen, Wasserquellen, Gipfeln, Höhenlinien usw.
• Geh- und Radwege
• Orte wie Restaurants, Tankstellen, Hotels, Geschäfte, Sehenswürdigkeiten und viele mehr
• Suche nach Namen, Adressen oder Kategorien
• Navigation mit Sprachausgabe für Fußgänger, Radfahrer und Autos
• Lesezeichen mit einem einzigen Tippen speichern
• Offline verfügbare Wikipedia-Artikel
• U- und S-Bahn Netze
• Aufzeichnen von GPS Tracks
• Import und Export von Favoriten und Routen im KML-, KMZ- oder GPX-Format
• Darkmode für die Nutzung bei Nacht
• Kartenbearbeitung direkt in der App mit einem einfachen Editor
<b>Freiheit beginnt hier</b>
Entdecke deine Reise navigiere die Welt mit Privatsphäre!

View File

@@ -1,10 +0,0 @@
Erster CoMaps Release!
Was ist neu im Vergleich zu Organic Maps:
• OpenStreetMap-Daten vom 15. Mai
• OSM Login jetzt über den Webbrowser
• Der halbtransparente Hintergrund in der U-Bahn-Ansicht wurde entfernt
• Größe der lokalen Karte beim ersten Karten download anzeigen
• Der Metaserver wurde durch eine feste Liste an Kartenservern ersetzt
• Der Nachtmodus schaltet jetzt besser um, auch wenn kein GPS-Signal da ist
• Übersetzungen aktualisiert
• Rebranding das Logo ist noch vorläufig

View File

@@ -1 +0,0 @@
Einfache Navigation - Entdecken Sie mehr von Ihrer Reise - Community basiert

View File

@@ -1 +0,0 @@
CoMaps Offline und privat navigieren

View File

@@ -1,11 +1,5 @@
A community-led free & open source maps app based on OpenStreetMap 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 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.
Read on about reasons for the project and its direction at <b><i>codeberg.org/comaps</i></b>.
Join the community there and help make the best maps app
• Use the app and spread the word about it
• Give feedback and report issues
• Update map data in the app or on the OpenStreetMap website
‣ <b>Offline-focused</b>: 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. ‣ <b>Offline-focused</b>: 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.
‣ <b>Respecting Privacy</b>: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free. ‣ <b>Respecting Privacy</b>: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
‣ <b>Simple and Polished</b>: essential easy to use features that just work. ‣ <b>Simple and Polished</b>: essential easy to use features that just work.
@@ -28,7 +22,7 @@ Join the community there and help make the best maps app
<li>Export and import bookmarks and tracks in KML, KMZ, GPX formats</li> <li>Export and import bookmarks and tracks in KML, KMZ, GPX formats</li>
<li>A dark mode to use during the night</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>Improve map data for everyone using a basic built-in editor</li>
<li>Android Auto and CarPlay support</li>
</ul> </ul>
<b>Freedom Is Here</b> <i>Freedom Is Here - Discover your journey, navigate the world with privacy and community at the forefront!</i>
Discover your journey, navigate the world with privacy and community at the forefront!

View File

@@ -1,11 +1,8 @@
Initial CoMaps release! • New OpenStreetMap data as of February 27
Changes from the Organic Maps upstream: • Ability to manually arrange intermediate route points
OpenStreetMap data as of May 15 Share a single selected track from the list
login to OSM account via a web browser Improved routing for bicycles
removed semi-transparent background in Subway layer Display a system notification when downloading maps and don't interrupt background downloads
replaced metaserver with a static map servers list Added a Track Recording indicator on the main screen
• add local map size to the startup download screen
• improved auto night mode switch when there is no location fix …more details at omaps.org/news
• fix incorrect map info when tapping on a not downloaded region
• update translations
• rebranding - the logo is provisional still

View File

@@ -1,12 +0,0 @@
Lanzamiento inicial de CoMaps
Cambios respecto a la versión de Organic Maps:
• Datos nuevos al 15 de mayo
• Inicio de sesión a OSM a través de navegador
• Eliminado fondo semitransparente en la capa de Metro
• Sustitución del metaserver por lista estática de servidores
• Añadido tamaño del mapa local al inicio
• Mejora del cambio automático al modo nocturno al no conocerse ubicación
• Correcciones de fallos
• Actualización de traducciones
• Cambio de branding con logo provisional

View File

@@ -1,34 +0,0 @@
Kogukonna juhitud vaba, avatud ja tasuta kaardirakendus, mis kasutab OpenStreetMapi kaardiandmeid ja on kantud meie kohustusest toimida läbipaistvalt, privaatselt ja kasumit mittetaotlevana. CoMaps on loodud Organic Mapsi põhjal, mis omakorda on loodud Maps.ME põhjal.
Selgitust selle projektiga alustamisele ning teavet meie edaspidiste plaanide kohta leiad <b><i>codeberg.org/comaps</i></b> lehelt.
Liitu kogukonnaga ja aita luua parimat kaardirakendust:
• Kasuta rakendust ja räägi sellest teistelegi
• Jaga tagasisidet ja teata vigadest
• Uuenda kaardiandmeid otse rakendusest või OpenStreetMapi veebisaidist
‣ <b>Ei vaja võrguühendust</b>: kavanda oma teekonda ja lase teed juhatada ilma andmesideühendust kasutamata ning otsi liikvel olles huvipunkte. Kaardirakenduse kogu funktsionaalsus on mõeldud toimima ilma võrguühenduseta.
‣ <b>Austab sinu privaatsust</b>: rakendus on loodud privaatsuskesksena - ta ei tuvasta sind, ei jälgi sinu tegevust ega kogu sinu kohta andmeid. Loomulikult pole ka reklaame.
‣ <b>Lihtne ja viimistletud</b>: kergeltkasutatav funktsionaalsus, mis lihtsalt toimib.
‣ <b>Säästab akut ja andmeruumi</b>: erinevalt teistest kaardirakendustest ei koorma ta akut. Kompaktsed kaardid säästavad nutiseadmes nii vajaliku andmeruumi.
‣ <b>Vaba ja loodud kogukonna poolt</b>: tavalised inimesed, nii nagu sinagi, on aitanud kaardirakenduse loomisel, kaartide koostamisel, testimisel ja tagasiside jagamisel ning kõike seda tehes panustanud oma oskuste ja rahaga.
‣ <b>Organisatsioon on avatud ja kasutab läbipaistvat otsustusprotsessi ning rahastamist ega taotle kasumit. Rakendus on avatud lähtekoodiga.</b>
<b>Põhifunktsionaalsused</b>:
<ul>
<li>Allalaaditavad detailsed kaardid, mille sisu tihtipeale ei leia Google Mapsist</li>
<li>Kaardivaade välitingimuste jaoks, kus matkarajad, laagriplatsid, allikad, mäetipud, kontuurjooned ja palju muud vajalikku on esile tõstetud</li>
<li>Jalgrajad, rattateed ning maanteed</li>
<li>Huvipunktid, nagu restoranid, tanklad, hotellid, poed, vaatamisväärsused ja palju muud</li>
<li>Otsida saad nime, aadressi või huvipunkti kategooria alusel</li>
<li>Tee juhatamine hääljuhiste abil toimib nii kõndimisel, rattasõidul kui auto juhtimisel</li>
<li>Ühe puudutusega saad oma lemmikkohad märkida järjehoidjana</li>
<li>Vikipeedia artiklid, mida saad lugeda ilma võrguühenduseta</li>
<li>Metroode plaanid ja suunajuhised</li>
<li>Raja või teekonna salvestamise võimalus</li>
<li>Järjehoidjate ja radade eksport ning import KML, KMZ ja GPX vormingutes</li>
<li>Tume kaardivaade kasutamiseks öösel</li>
<li>Kasutades lihtsat muutmisliidest saad kaarti kõikide huvides täiendada</li>
</ul>
<b>Vabadus on siin</b>
Uuri maailma ja avasta uusi teid - tee seda privaatselt ja kogukonnaga arvestades!

View File

@@ -1 +0,0 @@
Lihtne tee juhatamine - Avasta reisides enamat - Kõik see toimeka kogukonna toel

View File

@@ -1 +0,0 @@
CoMaps - sinu privaatne kaart

View File

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

View File

@@ -1 +0,0 @@
CoMaps- Mendia, bizikleta, autoa. Dena offline eta pribatutasunearekin

View File

@@ -1,11 +0,0 @@
Première version de CoMaps!
Changements par rapport à Organic Maps:
• Données OpenStreetMap du 15 mai
• Connexion au compte OSM via le navigateur
• Retrait du fond semi-transparent sur la couche Métro
• Remplacement du metaserveur par une liste statique de serveurs
• Ajout de la taille de la carte locale au premier démarrage
• Amélioration du mode nuit automatique
• Correction de la suggestion de téléchargements de cartes
• Mise à jour des traductions
• Rebranding - le logo est encore provisoire

View File

@@ -1,34 +0,0 @@
Una app sviluppata dalla comunità, gratuita e open-source, basata su OpenStreetMap e sull'impegno alla trasparenza, al rispetto della Privacy senza scopo di lucro. CoMaps è uno spin-off di Organic Maps, che a sua volta deriva da Maps.ME.
Leggi delle ragioni del progetto e della sua direzione futura su <b><i>codeberg.org/comaps</i></b>.
Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
• usa l'app e consigliala
• Dacci il tuo parere e riporta eventuali problemi
• Aggiorna i dati delle mappe direttamente nell'app o sul sito OpenStreetMap
‣ <b>Offline</b>: Pianifica e percorri il tuo viaggio senza necessità di essere connesso alla rete, cerca tappe mentre sei in una escursione etc. Tutte le funzionalità dell'app sono pensate per operare senza rete.
‣ <b>Rispetta la Privacy</b>: L'app è pensata per rispettare la tua Privacy, non identifica le persone e non registra o colleziona i tuoi dati personali. Senza pubblicità.
‣ <b>Semplice ed Elegante</b>: funzionalità semplici e affidabili.
‣ <b>Preserva la Batteria e lo Spazio in Memoria</b>: Non consuma batteria come altre app di navigazione. Le mappe compatte salvano il prezioso spazio del tuo telefono.
‣ <b>Gratis e Sviluppata dalla Comunità</b>: Persone come te posso aiutare a migliorare l'app aggiungendo luoghi su OpenStreetMap, testando e dando opinioni sulle funzionalità dell'app e contribuendo al loro sviluppo e sostentamento economico.
‣ <b>Aperta e Trasparente nel Processo Decisionale e Finanziario, Senza Scopo di Lucro e Completamente Open Source</b>
<b>Funzionalità principali</b>:
<ul>
<li>Scarica mappe dettagliate di luoghi che non sono disponibili su Google Maps</li>
<li>Modalità Outdoor con percorsi escursionistici, campeggi, sorgenti d'acqua, picchi, dislivelli ed altro evidenziati</li>
<li>Strade pedonali e piste ciclabili</li>
<li>Punti d'interesse come ristoranti, stazioni di benzina, hotel, negozi, luoghi turistici e molto altro</li>
<li>Cerca per nome, indirizzo o categoria</li>
<li>Navigazione con assistente vocale a piedi, in bici o in macchina</li>
<li>Salva i tuoi luoghi preferiti con un tocco</li>
<li>Leggi gli articoli Wikipedia Offline</li>
<li>Cartina delle metropolitane con direzioni</li>
<li>Registrazione del percorso</li>
<li>Esporta ed importa i tuoi luoghi preferiti e percorsi nei formati KML, KMZ o GPX</li>
<li>Modalità notturna per la notte</li>
<li>Migliora le mappe per tutti usando l'editor interno</li>
</ul>
<b>La Libertà è Qui</b>
Esplora la tua nuova avventura, naviga il mondo con Privacy e la comunità in prima linea!

View File

@@ -1 +0,0 @@
Navigazione semplice - Immergiti nella tua avventura - Sviluppato dalla comunità

View File

@@ -1,11 +0,0 @@
Pierwsze wydanie CoMaps!
Zmiany w stosunku do Organic Maps:
• dane OSM z 15.05,
• logowanie do OSM przez przeglądarkę,
• usunięto półprzezroczyste tło w warstwie Metra,
• zastąpiono metaserver statyczną listą serwerów map,
• dodano rozmiar mapy do ekranu pobierania przy uruchamianiu,
• poprawiono przełączanie trybu nocnego bez lokalizacji,
• poprawiono niepoprawne informacje o mapie po dotknięciu niepobranego regionu,
• zaktualizowano tłumaczenia,
• rebranding - logo wciąż tymczasowe.

View File

@@ -1,9 +0,0 @@
Lançamento inicial do CoMaps!
Alterações em relação ao Organic Maps:
• Dados do OSM de 15/05
• Login na conta OSM por meio de autenticação no navegador
• Remoção do fundo semitransparente na camada Metrô
• Substituição do metaserver por uma lista estática de servidores de mapas
• Melhoria na alternância automática do modo noturno quando não há localização
• Novas traduções
• Rebranding - O logo ainda é provisório

View File

@@ -1,9 +0,0 @@
Lançamento inicial do CoMaps!
Alterações em relação ao Organic Maps:
• Dados do OSM de 15/05
• Login na conta OSM através de um navegador web auth
• Removido o fundo semi-transparente na camada do Metro
• Substituído o metaserver por uma lista estática de servidores de mapas
• Melhoria na mudança automática do modo noturno quando não há localização
• Novas traduções
• Rebranding - logótipo ainda provisório

View File

@@ -1,28 +0,0 @@
Бесплатное картографическое приложение с открытым исходным кодом, основанное на данных OpenStreetMap и подкрепленное обязательствами по прозрачности, конфиденциальности и некоммерческому характеру. CoMaps - это форк/ответвление Organic Maps, который, в свою очередь, является форком Maps.ME.
‣ <b>Приоритет на работу без интернета</b>: Планируйте и ориентируйтесь в путешествии за границей, не нуждаясь в сотовой связи и т.д. Все функции приложения рассчитаны на работу в автономном режиме.
‣ <b>Соблюдение конфиденциальности</b>: Приложение разработано с учетом требований конфиденциальности - оно не идентифицирует людей, не отслеживает и не собирает личную информацию. Без рекламы.
‣ <b>Простота и Элегантность</b>: Необходимые и легкие в использовании функции, которые просто работают.
‣ <b>Экономия заряда батареи и места на устройстве</b>: Не разряжает аккумулятор, как другие приложения для навигации. Компактные карты экономят драгоценное место на вашем телефоне.
‣ <b>Бесплатное и созданное сообществом</b>: Люди, подобные вам, помогали создавать приложение, добавляя места в OpenStreetMap, тестируя и оставляя отзывы о функциях, а также вкладывая свои навыки и деньги в разработку..
‣ <b>Открытое и прозрачное принятие решений, финансовая отчетность, некоммерческая организация и полностью открытый исходный код.</b>
<b>Главные особенности</b>:
<ul>
<li>Загружаемые и подробные карты с местами, которые недоступны в Google Maps</li>
<li>Режим Outdoor с отмеченными туристическими тропами, кемпингами, источниками воды, вершинами, контурными линиями и т.д.</li>
<li>Пешеходные переходы и велодорожки</li>
<li>Точки интереса, такие как: рестораны, заправочные станции, отели, магазины, достопримечательности и многое другое</li>
<li>Поиск по имени, адресу или категории достопримечательностей</li>
<li>Навигация с голосовыми уведомлениями для пешеходов, велосипедистов или водителей</li>
<li>Возможность добавлять любимые места в закладки одним касанием</li>
<li>Загружаемые страницы Википедии</li>
<li>Слой общественного транспорта (метро)</li>
<li>Запись маршрута</li>
<li>Экспорт и импорт закладок и маршрутов в форматах KML, KMZ, GPX</li>
<li>Темный режим для использования в ночное время</li>
<li>Улучшение картографических данных для всех с помощью базового встроенного редактора</li>
<li>Поддержка Android Auto и CarPlay</li>
</ul>
<i>Свобода здесь - Открой для себя поездки, навигацию по миру, ставя приватность и сообщество во главе</i>

View File

@@ -1 +0,0 @@
Једноставна навигација - Сазнајте више о свом путовању - Захваљујући заједници

View File

@@ -1 +0,0 @@
CoMaps - пешачење, бицикл, вожња

View File

@@ -1,34 +0,0 @@
这是一个由社区主导、以 OpenStreetMap 数据为基础的免费开源地图应用建立在我们对运营透明、隐私安全和非营利性的承诺之上。CoMaps 是 Organic Maps 的分叉/衍生产品,而 Organic Maps 则是 Maps.ME 的分叉。
如需了解此项目诞生的原因及未来方向,请访问 <b><i>codeberg.org/comaps</i></b>。
加入以上社区,和大家一起打造最优质的地图应用
• 使用 CoMaps 的同时也分享推荐给周围的人
• 提供反馈和报告问题
• 在 CoMaps 中或 OpenStreetMap 网站上更新地图数据
‣ <b>以提供离线服务为核心</b>:无需移动网络即可规划和导航您的海外旅行,郊外远足时仍可搜索航点等等。所有功能均可离线使用。
‣ <b>尊重隐私</b>:开发者们在设计 CoMaps 时优先考虑的是保护用户隐私。CoMaps 无法识别用户身份、无法跟踪用户活动也无法收集个人信息。此外CoMaps 不会也不能显示任何广告。
‣ <b>简洁精致</b>:轻便易用、不出差错的基本功能。
‣ <b>节省电池和空间</b>:不会像其他导航应用那样耗电。精简的地图可以节省宝贵的手机空间。
‣ <b>由社区合作创建的免费应用</b>:如同您一样的用户通过向 OpenStreetMap 添加地点、测试功能并提供反馈、无私地贡献自己的编程技能和资金,协力开发了 CoMaps。
‣ <b>决策问责、财务透明、非营利性、完全开源。</b>
<b>主要功能</b>
<ul>
<li>可下载详细的地图包括许多Google地图中未显示的地方</li>
<li>突出显示远足路线、露营地、水源、山峰、等高线等的户外模式</li>
<li>步行道和自行车道</li>
<li>餐厅、加油站、酒店、商店、景点等众多兴趣点</li>
<li>按名称、地址或兴趣点类别搜索</li>
<li>步行、骑车或驾驶时,可通过语音提示进行导航</li>
<li>一键收藏您中意的地点</li>
<li>离线阅读维基百科文章</li>
<li>地铁交通图层和路线指示</li>
<li>轨迹记录</li>
<li>以 KML、KMZ 和 GPX 格式导出和导入书签和轨迹</li>
<li>选择天暗后自动开启的黑暗模式</li>
<li>使用基本的内置编辑器来编辑 OpenStreetMap 地点,帮助大家改进地图数据</li>
</ul>
<b>自由在此</b>
探索您的旅程,以隐私和社区为本,畅游世界!

View File

@@ -1 +0,0 @@
轻松的地图导航 — 旅程中更多探索 — 由社区提供支持

View File

@@ -1 +0,0 @@
CoMaps — 隐私保护下的离线远足、骑行、驾驶

View File

@@ -1,34 +0,0 @@
這是一個由社群主導、以 OpenStreetMap 資料為基礎的免費開源地圖應用,建立在我們對營運透明、隱私安全和非營利性的承諾之上。 CoMaps 是 Organic Maps 的分叉/衍生產品,而 Organic Maps 則是 Maps.ME 的分叉。
如欲了解此專案誕生的原因及未來方向,請造訪 <b><i>codeberg.org/comaps</i></b>。
加入以上社群,和大家一起打造最優質的地圖應用
• 使用 CoMaps 的同時也分享推薦給周圍的人
• 提供回饋和報告問題
• 在 CoMaps 中或 OpenStreetMap 網站上更新地圖資料
‣ <b>以提供離線服務為核心</b>:無需行動網路即可規劃和導航您的海外旅行,郊外遠足時仍可搜尋航點等等。所有功能均可離線使用。
‣ <b>尊重隱私</b>:開發人員在設計 CoMaps 時優先考慮的是保護使用者隱私。CoMaps 無法辨識使用者身分、無法追蹤使用者活動、無法收集個人資訊,也無法顯示任何廣告。
‣ <b>簡潔精緻</b>:易上手、不出錯的基本功能。
‣ <b>節省電池和空間</b>:不會像其他導航應用那樣耗電。精簡的地圖可以節省寶貴的手機空間。
‣ <b>由社群合作創建的免費應用</b>:如同您一樣的使用者透過向 OpenStreetMap 添加地點、測試功能並提供回饋、無私地貢獻自己的編碼技能和資金,協力開發了 CoMaps。
‣ <b>決策問責、財務透明、非營利性、完全開源。</b>
<b>主要功能</b>
<ul>
<li>可下載詳細的地圖包括許多Google地圖中未顯示的地方</li>
<li>突出顯示遠足路線、露營地、水源、山峰、等高線等的戶外模式</li>
<li>步道和自行車道</li>
<li>餐廳、加油站、旅館、商店、景點等眾多興趣點</li>
<li>按名稱、地址或興趣點類別搜尋</li>
<li>步行、騎車或駕駛時,可透過語音提示進行導航</li>
<li>一鍵收藏您喜愛的地點</li>
<li>離線閱讀維基百科文章</li>
<li>列車運輸圖層及路線指示</li>
<li>軌跡記錄</li>
<li>以 KML、KMZ 和 GPX 格式匯出和匯入書籤和軌跡</li>
<li>選擇天暗後自動開啟的黑暗模式</li>
<li>使用基本的內建編輯器來編輯 OpenStreetMap 地點,幫助大家改進地圖資料</li>
</ul>
<b>自由在此</b>
探索您的旅程,以隱私和社群為本,暢遊世界!

View File

@@ -1 +0,0 @@
輕鬆的地圖導航 — 旅程中更多探索 — 由社群提供支持

View File

@@ -1 +0,0 @@
CoMaps — 隱私保護下的離線遠足、騎行、駕駛

View File

@@ -1 +1 @@
version: 2025.06.01-6-FDroid+25060106 version: 2025.03.02-7-FDroid+25030207

View File

@@ -1,36 +0,0 @@
Eine von der Community betriebene, kostenlose Open-Source Karten App, die auf OpenStreetMap Daten basiert. Transparent, Daten sparsam und nicht gewinnorientiert.
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
• Nutze die App und erzähle anderen davon
• Gib Feedback und melde Probleme
• Aktualisiere Kartendaten in der App oder auf der OpenStreetMap Website
<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>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>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>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, Software Entwicklung oder Spenden.
‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open Source</b>
<b>Hauptfunktionen</b>:
• Detaillierte, herunterladbare Karten mit Orten, die bei Google Maps oft fehlen
• Outdoor-Modus mit hervorgehobenen Wanderwegen, Campingplätzen, Wasserquellen, Gipfeln, Höhenlinien usw.
• Geh- und Radwege
• Orte wie Restaurants, Tankstellen, Hotels, Geschäfte, Sehenswürdigkeiten und viele mehr
• Suche nach Namen, Adressen oder Kategorien
• Navigation mit Sprachausgabe für Fußgänger, Radfahrer und Autos
• Lesezeichen mit einem einzigen Tippen speichern
• Offline verfügbare Wikipedia-Artikel
• U- und S-Bahn Netze
• Aufzeichnen von GPS Tracks
• Import und Export von Favoriten und Routen im KML-, KMZ- oder GPX-Format
• Darkmode für die Nutzung bei Nacht
• Kartenbearbeitung direkt in der App mit einem einfachen Editor
• Unterstützung für Android Auto
Bitte melde Probleme, schlage neue Funktionen vor und werde Teil der Community auf unserer Website: <b><i>comaps.app</i></b>
<b>Freiheit beginnt hier</b>
Entdecke deine Reise navigiere die Welt mit Privatsphäre!

View File

@@ -1 +0,0 @@
Einfache Navigation - Entdecken Sie mehr von Ihrer Reise - Community basiert

View File

@@ -1 +0,0 @@
CoMaps Privat navigieren

View File

@@ -1,36 +0,0 @@
A community-led free & open source maps app based on OpenStreetMap data and reinforced with commitment to transparency, privacy and being not-for-profit.
Join the community and help make the best maps app
• Use the app and spread the word about it
• Give feedback and report issues
• Update map data in the app or on the OpenStreetMap website
<i>Your feedback and 5-star reviews are the best support for us!</i>
‣ <b>Simple and Polished</b>: essential easy to use features that just work.
‣ <b>Offline-focused</b>: 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.
‣ <b>Respecting Privacy</b>: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
‣ <b>Saves Your Battery and Space</b>: Doesnt drain your battery like other navigation apps. Compact maps save precious space on your phone.
‣ <b>Free and Built by the Community</b>: People like you helped build the app by adding places to OpenStreetMap, testing and giving feedback on features and contributing their development skills and money.
‣ <b>Open and Transparent Decision-making and Financials, Not-for-profit and Fully Open Source.</b>
<b>Main Features</b>:
• Downloadable detailed maps with places which are not available with Google Maps
• Outdoor mode with highlighted hiking trails, campsites, water sources, peaks, contour lines, etc
• Walking paths and cycleways
• Points of interest like restaurants, gas stations, hotels, shops, sightseeings and many more
• Search by name or an address or by point of interest category
• Navigation with voice announcements for walking, cycling, or driving
• Bookmark your favorite places with a single tap
• Offline Wikipedia articles
• Subway transit layer and directions
• Track recording
• Export and import bookmarks and tracks in KML, KMZ, GPX formats
• A dark mode to use during the night
• Improve map data for everyone using a basic built-in editor
• Android Auto support
Please report app issues, suggest ideas and join our community at <b><i>comaps.app</i></b> website.
<b>Freedom Is Here</b>
Discover your journey, navigate the world with privacy and community at the forefront!

View File

@@ -1 +0,0 @@
../../../../fdroid/play/listings/en-US/graphics/

View File

@@ -1 +0,0 @@
Easy map navigation - Discover more of your journey - Powered by the community

View File

@@ -1 +0,0 @@
CoMaps - Navigate with Privacy

View File

@@ -1,36 +0,0 @@
Kogukonna juhitud vaba, avatud ja tasuta kaardirakendus, mis kasutab OpenStreetMapi kaardiandmeid ja on kantud meie kohustusest toimida läbipaistvalt, privaatselt ja kasumit mittetaotlevana.
Liitu kogukonnaga ja aita luua parimat kaardirakendust:
• Kasuta rakendust ja räägi sellest teistelegi
• Jaga tagasisidet ja teata vigadest
• Uuenda kaardiandmeid otse rakendusest või OpenStreetMapi veebisaidist
<i>Sinu tagasiside ja 5 tärniga hinnatud arvustused on meie jaoks parim tugi!</i>
‣ <b>Lihtne ja viimistletud</b>: kergeltkasutatav funktsionaalsus, mis lihtsalt toimib.
‣ <b>Ei vaja võrguühendust</b>: kavanda oma teekonda ja lase teed juhatada ilma andmesideühendust kasutamata ning otsi liikvel olles huvipunkte. Kaardirakenduse kogu funktsionaalsus on mõeldud toimima ilma võrguühenduseta.
‣ <b>Austab sinu privaatsust</b>: rakendus on loodud privaatsuskesksena - ta ei tuvasta sind, ei jälgi sinu tegevust ega kogu sinu kohta andmeid. Loomulikult pole ka reklaame.
‣ <b>Säästab akut ja andmeruumi</b>: erinevalt teistest kaardirakendustest ei koorma ta akut. Kompaktsed kaardid säästavad nutiseadmes nii vajaliku andmeruumi.
‣ <b>Vaba ja loodud kogukonna poolt</b>: tavalised inimesed, nii nagu sinagi, on aitanud kaardirakenduse loomisel, kaartide koostamisel, testimisel ja tagasiside jagamisel ning kõike seda tehes panustanud oma oskuste ja rahaga.
‣ <b>Organisatsioon on avatud ja kasutab läbipaistvat otsustusprotsessi ning rahastamist ega taotle kasumit. Rakendus on avatud lähtekoodiga.</b>
<b>Põhifunktsionaalsused</b>:
• Allalaaditavad kaardid, mille sisu tihtipeale ei leia Google Mapsist
• Kaardivaade välitingimuste jaoks, kus matkarajad, laagriplatsid, allikad, mäetipud, kontuurjooned ja palju muud vajalikku on esile tõstetud
• Jalgrajad, rattateed ning maanteed
• Huvipunktid, nagu restoranid, tanklad, hotellid, poed, vaatamisväärsused ja palju muud
• Otsida saad nime, aadressi või huvipunkti kategooria alusel
• Tee juhatamine hääljuhiste abil toimib nii kõndimisel, rattasõidul kui auto juhtimisel
• Ühe puudutusega saad oma lemmikkohad märkida järjehoidjana
• Vikipeedia artiklid, mida saad lugeda ilma võrguühenduseta
• Metroode plaanid ja suunajuhised
• Raja või teekonna salvestamise võimalus
• Järjehoidjate ja radade eksport ning import KML, KMZ ja GPX vormingutes
• Tume kaardivaade kasutamiseks öösel
• Kasutades lihtsat muutmisliidest saad kaarti kõikide huvides täiendada
• Android Auto liidestus
Palun teata rakenduse vigadest, soovita uusi ideid ja liitu kogukonnaga <b><i>comaps.app</i></b> veebisaidis.
<b>Vabadus on siin</b>
Uuri maailma ja avasta uusi teid - tee seda privaatselt ja kogukonnaga arvestades!

View File

@@ -1 +0,0 @@
Lihtne tee juhatamine - Avasta reisides enamat - Kõik see toimeka kogukonna toel

View File

@@ -1 +0,0 @@
CoMaps - sinu privaatne kaart

View File

@@ -1 +0,0 @@
../../../../fdroid/play/listings/fr-FR/graphics/

View File

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

View File

@@ -1 +0,0 @@
Једноставна навигација - Сазнајте више о свом путовању - Захваљујући заједници

View File

@@ -1 +0,0 @@
CoMaps - навигација

View File

@@ -1 +0,0 @@
../../../../fdroid/play/listings/tr-TR/graphics/

View File

@@ -1,36 +0,0 @@
这是一个由社区主导、以 OpenStreetMap 数据为基础的免费开源地图应用,建立在我们对运营透明、隐私安全和非营利性的承诺之上。
加入社区,和大家一起打造最优质的地图应用
• 使用 CoMaps 的同时也分享推荐给周围的人
• 提供反馈和报告问题
• 在 CoMaps 中或 OpenStreetMap 网站上更新地图数据
<i>您的反馈和五星好评是对我们最好的支持!</i>
‣ <b>简洁精致</b>:轻便易用、不出差错的基本功能。
‣ <b>以提供离线服务为核心</b>:无需移动网络即可规划和导航您的海外旅行,郊外远足时仍可搜索航点等等。所有功能均可离线使用。
‣ <b>尊重隐私</b>:开发者们在设计 CoMaps 时优先考虑的是保护用户隐私。CoMaps 无法识别用户身份、无法跟踪用户活动也无法收集个人信息。此外CoMaps 不会也不能显示任何广告。
‣ <b>节省电池和空间</b>:不会像其他导航应用那样耗电。精简的地图可以节省宝贵的手机空间。
‣ <b>由社区合作创建的免费应用</b>:如同您一样的用户通过向 OpenStreetMap 添加地点、测试功能并提供反馈、无私地贡献自己的编程技能和资金,协力开发了 CoMaps。
‣ <b>决策问责、财务透明、非营利性、完全开源。</b>
<b>主要功能</b>
• 可下载详细的地图,包括许多商业地图中未显示的地方
• 突出显示远足路线、露营地、水源、山峰、等高线等的户外模式
• 步行道和自行车道
• 餐厅、加油站、酒店、商店、景点等众多兴趣点
• 按名称、地址或兴趣点类别搜索
• 步行、骑车或驾驶时,可通过语音提示进行导航
• 一键收藏您中意的地点
• 离线阅读维基百科文章
• 地铁交通图层和路线指示
• 轨迹记录
• 以 KML、KMZ 和 GPX 格式导出和导入书签和轨迹
• 选择天暗后自动开启的黑暗模式
• 使用基本的内置编辑器来编辑 OpenStreetMap 地点,帮助大家改进地图数据
• 支持 Android Auto
请在 <b><i>comaps.app</i></b> 网站上报告功能问题、提出建议并加入我们的社区。
<b>自由在此</b>
探索您的旅程,以隐私和社区为本,畅游世界!

View File

@@ -1 +0,0 @@
轻松的地图导航 — 旅程中更多探索 — 由社区提供支持

View File

@@ -1 +0,0 @@
CoMaps — 隐私导航

View File

@@ -1,36 +0,0 @@
這是一個由社群主導、以 OpenStreetMap 資料為基礎的免費開源地圖應用,建立在我們對營運透明、隱私安全和非營利性的承諾之上。
加入社群,和大家一起打造最優質的地圖應用
• 使用 CoMaps 的同時也分享推薦給周圍的人
• 提供回饋和報告問題
• 在 CoMaps 中或 OpenStreetMap 網站上更新地圖資料
<i>您的回饋和五星好評是對我們最好的支持!</i>
‣ <b>簡潔精緻</b>:易上手、不出錯的基本功能。
‣ <b>以提供離線服務為核心</b>:無需行動網路即可規劃和導航您的海外旅行,郊外遠足時仍可搜尋航點等等。所有功能均可離線使用。
‣ <b>尊重隱私</b>:開發人員在設計 CoMaps 時優先考慮的是保護使用者隱私。CoMaps 無法辨識使用者身分、無法追蹤使用者活動、無法收集個人資訊,也無法顯示任何廣告。
‣ <b>節省電池和空間</b>:不會像其他導航應用那樣耗電。精簡的地圖可以節省寶貴的手機空間。
‣ <b>由社群合作創建的免費應用</b>:如同您一樣的使用者透過向 OpenStreetMap 添加地點、測試功能並提供回饋、無私地貢獻自己的編碼技能和資金,協力開發了 CoMaps。
‣ <b>決策問責、財務透明、非營利性、完全開源。</b>
<b>主要功能</b>
• 可下載詳細的地圖,包括許多商業地圖中未顯示的地方
• 突出顯示遠足路線、露營地、水源、山峰、等高線等的戶外模式
• 步道和自行車道
• 餐廳、加油站、旅館、商店、景點等眾多興趣點
• 按名稱、地址或興趣點類別搜尋
• 步行、騎車或駕駛時,可透過語音提示進行導航
• 一鍵收藏您喜愛的地點
• 離線閱讀維基百科文章
• 列車運輸圖層及路線指示
• 軌跡記錄
• 以 KML、KMZ 和 GPX 格式匯出和匯入書籤和軌跡
• 選擇天暗後自動開啟的黑暗模式
• 使用基本的內建編輯器來編輯 OpenStreetMap 地點,幫助大家改進地圖資料
• 支援 Android Auto
請在 <b><i>comaps.app</i></b> 網站上報告功能問題、提出建議並加入我們的社群。
<b>自由在此</b>
探索您的旅程,以隱私和社群為本,暢遊世界!

View File

@@ -1 +0,0 @@
輕鬆的地圖導航 — 旅程中更多探索 — 由社群提供支持

View File

@@ -1 +0,0 @@
CoMaps — 隱私導航

View File

@@ -38,6 +38,7 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<!-- <!--
Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt (including Foreground Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt (including Foreground
Services (FGS)) notifications from an app. Services (FGS)) notifications from an app.
@@ -97,7 +98,7 @@
<data android:scheme="geo"/> <data android:scheme="geo"/>
<data android:scheme="ge0"/> <data android:scheme="ge0"/>
<data android:scheme="cm"/> <data android:scheme="om"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>

View File

@@ -74,7 +74,7 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info, int mapObje
(jint)fID.m_index)); (jint)fID.m_index));
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle())); jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle())); jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaStringWithSupplementalCharsFix(env, info.GetSubtitle())); jni::TScopedLocalRef jSubtitle(env, jni::ToJavaString(env, info.GetSubtitle()));
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle())); jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle()));
jni::TScopedLocalRef jApiId(env, jni::ToJavaString(env, parseApi ? info.GetApiUrl() : "")); jni::TScopedLocalRef jApiId(env, jni::ToJavaString(env, parseApi ? info.GetApiUrl() : ""));
jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription())); jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription()));
@@ -118,7 +118,7 @@ jobject CreateBookmark(JNIEnv *env, const place_page::Info &info,
(jlong)info.GetID().GetMwmVersion(), (jint)info.GetID().m_index)); (jlong)info.GetID().GetMwmVersion(), (jint)info.GetID().m_index));
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle())); jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle())); jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaStringWithSupplementalCharsFix(env, info.GetSubtitle())); jni::TScopedLocalRef jSubtitle(env, jni::ToJavaString(env, info.GetSubtitle()));
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle())); jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle()));
jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription())); jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription()));
jobject mapObject = env->NewObject( jobject mapObject = env->NewObject(

View File

@@ -4,7 +4,6 @@
#include "base/assert.hpp" #include "base/assert.hpp"
#include "base/exception.hpp" #include "base/exception.hpp"
#include "base/string_utils.hpp"
#include <vector> #include <vector>
@@ -29,21 +28,6 @@ jclass g_elevationInfoClazz;
extern "C" extern "C"
{ {
int __system_property_get(char const * name, char * value);
static bool IsAndroidLowerThan7()
{
char value[92] = { 0 };
if (__system_property_get("ro.build.version.sdk", value) < 1)
return false;
const int apiLevel = atoi(value);
if (apiLevel > 0 && apiLevel < 24)
return true;
return false;
}
static bool const g_isAndroidLowerThan7 = IsAndroidLowerThan7();
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM * jvm, void *) JNI_OnLoad(JavaVM * jvm, void *)
{ {
@@ -170,24 +154,6 @@ jstring ToJavaString(JNIEnv * env, char const * s)
return env->NewStringUTF(s); return env->NewStringUTF(s);
} }
jstring ToJavaStringWithSupplementalCharsFix(JNIEnv * env, std::string const & s)
{
// Android 5 and 6 do not support unicode characters greater than 0xFFFF encoded in UTF-8.
if (g_isAndroidLowerThan7)
{
// Detect 4-byte sequence start marker to avoid unnecessary allocation + copy.
for (const auto c : s)
{
if (0b11110000 == (c & 0b11111000))
{
const auto utf16 = strings::ToUtf16(s);
return env->NewString(reinterpret_cast<jchar const *>(utf16.data()), utf16.size());
}
}
}
return env->NewStringUTF(s.c_str());
}
jclass GetStringClass(JNIEnv * env) jclass GetStringClass(JNIEnv * env)
{ {
return env->FindClass(GetStringClassName()); return env->FindClass(GetStringClassName());

View File

@@ -55,9 +55,6 @@ inline jstring ToJavaString(JNIEnv * env, std::string_view sv)
return ToJavaString(env, std::string(sv).c_str()); return ToJavaString(env, std::string(sv).c_str());
} }
// Remove after dropping Android 5 and 6 support.
jstring ToJavaStringWithSupplementalCharsFix(JNIEnv * env, std::string const & s);
jclass GetStringClass(JNIEnv * env); jclass GetStringClass(JNIEnv * env);
char const * GetStringClassName(); char const * GetStringClassName();

View File

@@ -111,10 +111,10 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
} }
int status = MapManager.nativeGetStatus(mCurrentCountry); int status = MapManager.nativeGetStatus(mCurrentCountry);
String name = MapManager.nativeGetName(mCurrentCountry);
if (status != CountryItem.STATUS_DONE) if (status != CountryItem.STATUS_DONE)
{ {
String name = getFormattedCountryName(mCurrentCountry);
UiUtils.show(mChbDownloadCountry); UiUtils.show(mChbDownloadCountry);
String checkBoxText; String checkBoxText;
if (status == CountryItem.STATUS_UPDATABLE) if (status == CountryItem.STATUS_UPDATABLE)
@@ -129,18 +129,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
} }
}; };
private String getFormattedCountryName(String mCurrentCountry) {
String name = MapManager.nativeGetName(mCurrentCountry);
CountryItem country = CountryItem.fill(mCurrentCountry);
String sizeText = StringUtils.getFileSizeString(DownloadResourcesLegacyActivity.this, country.totalSize);
if (!TextUtils.isEmpty(sizeText)) {
name = name + " (" + sizeText + ")";
}
return name;
}
private final Listener mResourcesDownloadListener = new Listener() private final Listener mResourcesDownloadListener = new Listener()
{ {
@Override @Override

View File

@@ -93,12 +93,6 @@ public class FeatureId implements Parcelable
return mFeatureIndex; return mFeatureIndex;
} }
public boolean isRealId() {
return !TextUtils.isEmpty(mMwmName) &&
mMwmVersion >= 0 &&
mFeatureIndex > 0;
}
@Override @Override
public boolean equals(Object o) public boolean equals(Object o)
{ {

View File

@@ -178,7 +178,7 @@ public class MapObject implements PlacePageData
if (getClass() != other.getClass()) if (getClass() != other.getClass())
return false; return false;
if (mFeatureId.isRealId() && other.getFeatureId().isRealId()) if (mFeatureId != FeatureId.EMPTY && other.getFeatureId() != FeatureId.EMPTY)
return mFeatureId.equals(other.getFeatureId()); return mFeatureId.equals(other.getFeatureId());
return Double.doubleToLongBits(mLon) == Double.doubleToLongBits(other.mLon) && return Double.doubleToLongBits(mLon) == Double.doubleToLongBits(other.mLon) &&

View File

@@ -76,7 +76,7 @@ public class Metadata implements Parcelable
} }
@NonNull @NonNull
public static MetadataType fromInt(@IntRange(from = 1, to = 49) int metaType) public static MetadataType fromInt(@IntRange(from = 1, to = 41) int metaType)
{ {
for (MetadataType type : values()) for (MetadataType type : values())
if (type.mMetaType == metaType) if (type.mMetaType == metaType)

View File

@@ -7,7 +7,6 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
import app.organicmaps.R; import app.organicmaps.R;
import app.organicmaps.util.StringUtils; import app.organicmaps.util.StringUtils;
import app.organicmaps.util.UiUtils; import app.organicmaps.util.UiUtils;
import static app.organicmaps.downloader.CountryItem.*; import static app.organicmaps.downloader.CountryItem.*;
class BottomPanel class BottomPanel
@@ -40,8 +39,7 @@ class BottomPanel
@Override @Override
public void onClick(View v) public void onClick(View v)
{ {
MapManager.nativeCancel(mFragment.getCurrentRoot()); mFragment.getAdapter().refreshData();
mFragment.getAdapter().refreshData();
} }
}; };

View File

@@ -58,20 +58,20 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment
mProgress = view.findViewById(R.id.osm_login_progress); mProgress = view.findViewById(R.id.osm_login_progress);
final String dataVersion = DateUtils.getShortDateFormatter().format(Framework.getDataVersion()); final String dataVersion = DateUtils.getShortDateFormatter().format(Framework.getDataVersion());
// TODO(@pastk): remove unused flow with users entering credentials into app's form if (BuildConfig.FLAVOR.equals("google"))
// Hide login and password inputs and Forgot password button {
UiUtils.hide(view.findViewById(R.id.osm_username_container), // Hide login and password inputs and Forgot password button
view.findViewById(R.id.osm_password_container), UiUtils.hide(view.findViewById(R.id.osm_username_container),
mLostPasswordButton); view.findViewById(R.id.osm_password_container),
mLostPasswordButton);
mLoginButton.setOnClickListener((v) -> loginWithBrowser()); mLoginButton.setOnClickListener((v) -> loginWithBrowser());
/* login via in-app form }
else else
{ {
mLoginButton.setOnClickListener((v) -> login()); mLoginButton.setOnClickListener((v) -> login());
mLostPasswordButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_RECOVER_PASSWORD)); mLostPasswordButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_RECOVER_PASSWORD));
} }
*/
String code = readOAuth2CodeFromArguments(); String code = readOAuth2CodeFromArguments();
if (code != null && !code.isEmpty()) if (code != null && !code.isEmpty())
@@ -150,7 +150,7 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment
requireActivity().finish(); requireActivity().finish();
} }
// This method is called by MwmActivity & UrlProcessor when "cm://oauth2/osm/callback?code=XXX" is handled // This method is called by MwmActivity & UrlProcessor when "om://oauth2/osm/callback?code=XXX" is handled
private void continueOAuth2Flow(String oauth2code) private void continueOAuth2Flow(String oauth2code)
{ {
if (!isAdded()) if (!isAdded())

View File

@@ -355,17 +355,7 @@ public class MapButtonsController extends Fragment
{ {
final View button = entry.getValue(); final View button = entry.getValue();
if (button.getParent() == parent) if (button.getParent() == parent)
{ showButton(getViewTopOffset(translation, button) >= 0, entry.getKey());
int toleranceOffset = 0;
// Allow offset tolerance for zoom buttons
switch(entry.getKey())
{
case zoomIn: case zoomOut: case zoom:
toleranceOffset = -140;
break;
}
showButton(getViewTopOffset(translation, button) >= toleranceOffset, entry.getKey());
}
} }
} }

View File

@@ -317,9 +317,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
disableOrEnable3DBuildingsForPowerMode(powerManagementValue); disableOrEnable3DBuildingsForPowerMode(powerManagementValue);
pref.setOnPreferenceChangeListener((preference, newValue) -> { pref.setOnPreferenceChangeListener((preference, newValue) -> {
Framework.Params3dMode current = new Framework.Params3dMode(); Framework.nativeSet3dMode(_3d.enabled, (Boolean)newValue);
Framework.nativeGet3dMode(current);
Framework.nativeSet3dMode(current.enabled, (Boolean)newValue);
return true; return true;
}); });
} }
@@ -358,9 +356,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
pref.setChecked(_3d.enabled); pref.setChecked(_3d.enabled);
pref.setOnPreferenceChangeListener((preference, newValue) -> { pref.setOnPreferenceChangeListener((preference, newValue) -> {
Framework.Params3dMode current = new Framework.Params3dMode(); Framework.nativeSet3dMode((Boolean) newValue, _3d.buildings);
Framework.nativeGet3dMode(current);
Framework.nativeSet3dMode((Boolean) newValue, current.buildings);
return true; return true;
}); });
} }

View File

@@ -176,11 +176,6 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
return true; return true;
}); });
TtsPlayer.sOnReloadCallback = () -> {
Toast.makeText(requireContext(), "TTS engine reloaded", Toast.LENGTH_SHORT).show();
updateTts();
};
initVolume(); initVolume();
initTtsLangInfoLink(); initTtsLangInfoLink();
initSpeedCamerasPrefs(); initSpeedCamerasPrefs();
@@ -195,13 +190,6 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
updateTts(); updateTts();
} }
@Override
public void onDestroyView()
{
TtsPlayer.sOnReloadCallback = null;
super.onDestroyView();
}
private void onInstallDataResult() private void onInstallDataResult()
{ {
updateTts(); updateTts();

View File

@@ -2,11 +2,9 @@ package app.organicmaps.sound;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.provider.Settings;
import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener; import android.speech.tts.UtteranceProgressListener;
import android.text.TextUtils; import android.text.TextUtils;
@@ -47,12 +45,8 @@ public enum TtsPlayer
private static final float SPEECH_RATE = 1.0f; private static final float SPEECH_RATE = 1.0f;
private static final int TTS_SPEAK_DELAY_MILLIS = 50; private static final int TTS_SPEAK_DELAY_MILLIS = 50;
public static Runnable sOnReloadCallback = null;
private ContentObserver mTtsEngineObserver;
private TextToSpeech mTts; private TextToSpeech mTts;
private boolean mInitializing; private boolean mInitializing;
private boolean mReloadTriggered = false;
private AudioFocusManager mAudioFocusManager; private AudioFocusManager mAudioFocusManager;
private final Bundle mParams = new Bundle(); private final Bundle mParams = new Bundle();
@@ -191,32 +185,7 @@ public enum TtsPlayer
mAudioFocusManager = new AudioFocusManager(context); mAudioFocusManager = new AudioFocusManager(context);
mParams.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, Config.TTS.getVolume()); mParams.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, Config.TTS.getVolume());
mInitializing = false; mInitializing = false;
if (mReloadTriggered && sOnReloadCallback != null)
{
sOnReloadCallback.run();
mReloadTriggered = false;
}
})); }));
if (mTtsEngineObserver == null) {
mTtsEngineObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
@Override
public void onChange(boolean selfChange) {
Logger.d(TAG, "System TTS engine changed reloading TTS engine");
mReloadTriggered = true;
if (mTts != null) {
mTts.shutdown();
mTts = null;
}
initialize(mContext);
}
};
mContext.getContentResolver().registerContentObserver(
Settings.Secure.getUriFor("tts_default_synth"),
false,
mTtsEngineObserver
);
}
} }
private static boolean isReady() private static boolean isReady()

View File

@@ -12,7 +12,7 @@ public final class Constants
public static class Url public static class Url
{ {
public static final String SHORT_SHARE_PREFIX = "cm://"; public static final String SHORT_SHARE_PREFIX = "om://";
public static final String HTTP_SHARE_PREFIX = "https://comaps.app/"; public static final String HTTP_SHARE_PREFIX = "https://comaps.app/";
public static final String MAILTO_SCHEME = "mailto:"; public static final String MAILTO_SCHEME = "mailto:";

View File

@@ -32,17 +32,17 @@ public enum ThemeSwitcher
@Override @Override
public void run() public void run()
{ {
boolean isNavAuto = RoutingController.get().isNavigating() && ThemeUtils.isNavAutoTheme(mContext); boolean navAuto = RoutingController.get().isNavigating() && ThemeUtils.isNavAutoTheme(mContext);
// Cancel old checker // Cancel old checker
UiThread.cancelDelayedTasks(mAutoThemeChecker); UiThread.cancelDelayedTasks(mAutoThemeChecker);
if (isNavAuto || ThemeUtils.isAutoTheme(mContext)) if (navAuto || ThemeUtils.isAutoTheme(mContext))
{ {
UiThread.runLater(mAutoThemeChecker, CHECK_INTERVAL_MS); UiThread.runLater(mAutoThemeChecker, CHECK_INTERVAL_MS);
setThemeAndMapStyle(calcAutoTheme()); setThemeAndMapStyle(calcAutoTheme());
} }
else // Only reached when an auto mode should be light else
setThemeAndMapStyle(mContext.getResources().getString(R.string.theme_default)); setThemeAndMapStyle(Config.getCurrentUiTheme(mContext));
} }
}; };

View File

@@ -193,14 +193,6 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
} }
} }
@Override
public void onAttach(@NonNull Context context)
{
super.onAttach(context);
if (mListener == null && getParentFragment() instanceof EditBookmarkListener)
mListener = (EditBookmarkListener) getParentFragment();
}
private void initToolbar(View view) private void initToolbar(View view)
{ {
Toolbar toolbar = view.findViewById(R.id.toolbar); Toolbar toolbar = view.findViewById(R.id.toolbar);

View File

@@ -458,7 +458,10 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
refreshMetadataOrHide(wheelchair, mWheelchair, mTvWheelchair); refreshMetadataOrHide(wheelchair, mWheelchair, mTvWheelchair);
final String driveThrough = mMapObject.getMetadata(Metadata.MetadataType.FMD_DRIVE_THROUGH); final String driveThrough = mMapObject.getMetadata(Metadata.MetadataType.FMD_DRIVE_THROUGH);
refreshMetadataOrHide(driveThrough.equals("yes") ? getString(R.string.drive_through) : "", mDriveThrough, mTvDriveThrough); if (driveThrough.equals("yes"))
{
refreshMetadataOrHide(getString(R.string.drive_through), mDriveThrough, mTvDriveThrough);
}
final String selfService = mMapObject.getMetadata(Metadata.MetadataType.FMD_SELF_SERVICE); final String selfService = mMapObject.getMetadata(Metadata.MetadataType.FMD_SELF_SERVICE);
refreshMetadataOrHide(Utils.getTagValueLocalized(getContext(), "self_service", selfService), mSelfService, mTvSelfService); refreshMetadataOrHide(Utils.getTagValueLocalized(getContext(), "self_service", selfService), mSelfService, mTvSelfService);

View File

@@ -127,7 +127,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(),
currentBookmark.getBookmarkId(), currentBookmark.getBookmarkId(),
activity, activity,
getChildFragmentManager(), activity.getSupportFragmentManager(),
PlacePageBookmarkFragment.this); PlacePageBookmarkFragment.this);
} }

View File

@@ -9,6 +9,7 @@
android:minHeight="@dimen/editor_height_field" android:minHeight="@dimen/editor_height_field"
android:paddingEnd="@dimen/margin_quarter" android:paddingEnd="@dimen/margin_quarter"
android:paddingStart="@dimen/margin_half_plus" android:paddingStart="@dimen/margin_half_plus"
android:tag="schedule"
tools:ignore="RtlSymmetry"> tools:ignore="RtlSymmetry">
<ImageView <ImageView
@@ -18,7 +19,7 @@
android:layout_marginTop="@dimen/margin_base" android:layout_marginTop="@dimen/margin_base"
app:srcCompat="@drawable/ic_operating_hours" app:srcCompat="@drawable/ic_operating_hours"
app:tint="?iconTint" /> app:tint="?iconTint" />
<LinearLayout <LinearLayout
android:id="@+id/empty_opening_hours" android:id="@+id/empty_opening_hours"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_atm" android:id="@+id/ll__place_atm"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="atm"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_capacity" android:id="@+id/ll__place_capacity"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="capacity"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_cuisine" android:id="@+id/ll__place_cuisine"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="cuisine"
tools:visibility="visible" tools:visibility="visible"
tools:ignore="UseCompoundDrawables"> tools:ignore="UseCompoundDrawables">

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_drive_through" android:id="@+id/ll__place_drive_through"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="drive_through"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_email" android:id="@+id/ll__place_email"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="email"
tools:background="#200000FF" tools:background="#200000FF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_facebook" android:id="@+id/ll__place_facebook"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="website"
tools:background="#20FF0000" tools:background="#20FF0000"
tools:visibility="visible"> tools:visibility="visible">
<ImageView <ImageView

View File

@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_instagram" android:id="@+id/ll__place_instagram"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="website"
tools:background="#20FF0000" tools:background="#20FF0000"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_latlon" android:id="@+id/ll__place_latlon"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="latlon"
android:visibility="visible" android:visibility="visible"
tools:background="#20FF0000"> tools:background="#20FF0000">

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_level" android:id="@+id/ll__place_level"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="level"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_line" android:id="@+id/ll__place_line"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="website"
tools:background="#20FF0000" tools:background="#20FF0000"
tools:visibility="visible"> tools:visibility="visible">
<ImageView <ImageView

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_network" android:id="@+id/ll__place_network"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="network"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_open_in" android:id="@+id/ll__place_open_in"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="open_in"
tools:background="#20FF0000" tools:background="#20FF0000"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -3,7 +3,8 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
style="@style/PlacePageItemFrame"> style="@style/PlacePageItemFrame"
android:tag="schedule">
<ImageView <ImageView
android:id="@+id/icon" android:id="@+id/icon"

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_operator" android:id="@+id/ll__place_operator"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="operator"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">

View File

@@ -7,7 +7,8 @@
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
tools:background="#2000FF00" tools:background="#2000FF00"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="visible"> android:visibility="visible"
android:tag="phone">
<ImageView <ImageView
android:id="@+id/iv__place_phone" android:id="@+id/iv__place_phone"
@@ -18,8 +19,8 @@
<TextView <TextView
android:id="@+id/tv__place_phone" android:id="@+id/tv__place_phone"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:textDirection="ltr" android:textDirection="firstStrongLtr"
style="@style/PlacePageMetadataText" style="@style/PlacePageMetadataText"
android:textAppearance="@style/MwmTextAppearance.PlacePage.Accent" android:textAppearance="@style/MwmTextAppearance.PlacePage.Accent"
tools:text="+1 234 567-89-00"/> tools:text="+1 234 567-89-00"/>
</LinearLayout> </LinearLayout>

View File

@@ -5,6 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll__place_self_service" android:id="@+id/ll__place_self_service"
style="@style/PlacePageItemFrame" style="@style/PlacePageItemFrame"
android:tag="drive_through"
tools:background="#4000FFFF" tools:background="#4000FFFF"
tools:visibility="visible"> tools:visibility="visible">
@@ -17,4 +18,4 @@
android:id="@+id/tv__place_self_service" android:id="@+id/tv__place_self_service"
style="@style/PlacePageMetadataText" style="@style/PlacePageMetadataText"
tools:text="Self-service" /> tools:text="Self-service" />
</LinearLayout> </LinearLayout>

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