diff --git a/.forgejo/workflows/android-check-metadata.yaml b/.forgejo/workflows/android-check-metadata.yaml index a0da1c5de..c0439b316 100644 --- a/.forgejo/workflows/android-check-metadata.yaml +++ b/.forgejo/workflows/android-check-metadata.yaml @@ -1,4 +1,4 @@ -name: Android Check Metadata +name: Android Check Store Metadata on: workflow_dispatch: # Manual trigger pull_request: @@ -21,5 +21,8 @@ jobs: android tools/python/check_store_metadata.py - - name: Check metadata - run: ./tools/python/check_store_metadata.py android + - name: Check Google Play metadata + run: ./tools/python/check_store_metadata.py gplay + + - name: Check F-Droid metadata + run: ./tools/python/check_store_metadata.py fdroid \ No newline at end of file diff --git a/.forgejo/workflows/android-release-metadata.yaml b/.forgejo/workflows/android-release-metadata.yaml index eb47f95b8..824199177 100644 --- a/.forgejo/workflows/android-release-metadata.yaml +++ b/.forgejo/workflows/android-release-metadata.yaml @@ -8,21 +8,19 @@ jobs: runs-on: ubuntu-latest environment: production steps: - - name: Checkout sources - # TODO: use shallow (and sparse?) checkout + - name: Checkout uses: actions/checkout@v4 - -# - name: Parallel submodules checkout -# shell: bash -# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) + with: + fetch-depth: 1 + sparse-checkout: | + android + tools/python/check_store_metadata.py - name: Restore release keys shell: bash run: | - echo "$PRIVATE_H" | base64 -d > private.h echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json env: - PRIVATE_H: ${{ secrets.PRIVATE_H }} GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }} - name: Upload diff --git a/.forgejo/workflows/ios-beta.yaml b/.forgejo/workflows/ios-beta.yaml index a077c7d4b..ace79aa34 100644 --- a/.forgejo/workflows/ios-beta.yaml +++ b/.forgejo/workflows/ios-beta.yaml @@ -35,7 +35,7 @@ jobs: name: Apple TestFlight runs-on: macos-15 env: - DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANGUAGE: en_US.UTF-8 LC_ALL: en_US.UTF-8 diff --git a/.forgejo/workflows/ios-check.yaml b/.forgejo/workflows/ios-check.yaml index 840d9b313..d5b773156 100644 --- a/.forgejo/workflows/ios-check.yaml +++ b/.forgejo/workflows/ios-check.yaml @@ -37,7 +37,7 @@ jobs: name: Build iOS runs-on: macos-15 env: - DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANGUAGE: en_US.UTF-8 LC_ALL: en_US.UTF-8 diff --git a/.forgejo/workflows/ios-release.yaml b/.forgejo/workflows/ios-release.yaml index f1802435d..63e47654d 100644 --- a/.forgejo/workflows/ios-release.yaml +++ b/.forgejo/workflows/ios-release.yaml @@ -7,7 +7,7 @@ jobs: name: iOS Release runs-on: macos-15 env: - DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANGUAGE: en_US.UTF-8 LC_ALL: en_US.UTF-8 diff --git a/.forgejo/workflows/macos-check.yaml b/.forgejo/workflows/macos-check.yaml index 5c694e0f9..caecd2754 100644 --- a/.forgejo/workflows/macos-check.yaml +++ b/.forgejo/workflows/macos-check.yaml @@ -32,7 +32,7 @@ jobs: name: macOS builds and tests runs-on: macos-15 env: - DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer HOMEBREW_NO_ANALYTICS: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 strategy: diff --git a/.forgejo/workflows/stale.yml b/.forgejo/workflows/stale.yml deleted file mode 100644 index 112dde060..000000000 --- a/.forgejo/workflows/stale.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Close stale PRs -on: - schedule: - - cron: "0 0 * * *" # Runs every day at midnight - -jobs: - stale: - runs-on: ubuntu-latest - permissions: - pull-requests: write - steps: - - uses: actions/stale@v9 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-pr-stale: 180 # 6 months before warning - days-before-pr-close: 365 # Closed after 12 months - stale-pr-label: "stale" - stale-pr-message: "Hi! This PR has been inactive for 6 months. If it's still relevant, please update it to let us know you’d like to keep it open 😊" - close-pr-message: "This PR has been automatically closed after 12 months of inactivity." - days-before-issue-stale: -1 # Issues are never stale - days-before-issue-close: -1 # Issues are never closed - remove-stale-when-updated: true diff --git a/.github/workflows/android-check.yaml b/.github/workflows/android-check.yaml index f87bfea69..6541872d4 100644 --- a/.github/workflows/android-check.yaml +++ b/.github/workflows/android-check.yaml @@ -6,7 +6,7 @@ on: - main env: - JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin + JAVA_HOME: /usr/lib/jvm/temurin-21-jdk-amd64 # Java 21 is required for Android Gradle 8 plugin SKIP_MAP_DOWNLOAD: true jobs: @@ -23,9 +23,16 @@ jobs: shell: bash run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) + - name: Install protobuf + shell: bash + run: | + sudo apt-get update -y + sudo apt-get install -y python3-pip + pip install "protobuf<3.21" --break-system-packages + - name: Configure repository shell: bash - run: SKIP_GENERATE_SYMBOLS=1 ./configure.sh + run: ./configure.sh - name: Lint shell: bash @@ -66,8 +73,9 @@ jobs: libxinerama-dev \ libxcursor-dev \ libxi-dev \ - python3-protobuf \ + python3-pip \ zlib1g-dev + pip install "protobuf<3.21" --break-system-packages - name: Checkout sources uses: actions/checkout@v4 diff --git a/.github/workflows/ios-check.yaml b/.github/workflows/ios-check.yaml index 295e28632..c998b6fd4 100644 --- a/.github/workflows/ios-check.yaml +++ b/.github/workflows/ios-check.yaml @@ -10,7 +10,7 @@ jobs: name: Build iOS runs-on: macos-15 env: - DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANGUAGE: en_US.UTF-8 LC_ALL: en_US.UTF-8 diff --git a/.gitignore b/.gitignore index c9f3705b5..917d1ef11 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,9 @@ data/patterns.txt* # data/colors_design.txt # data/patterns_design.txt +# Auto-generated from data/categories-strings/* by tools/unix/generate_categories.sh +data/categories.txt + # Compiled Python *.pyc diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ac12fa55..3ba193a9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,7 +120,7 @@ if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_T 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) + file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}*/liblto_plugin.so) set(CMAKE_C_ARCHIVE_CREATE " --plugin ${plugin} qcs ") set(CMAKE_C_ARCHIVE_FINISH " --plugin ${plugin} ") set(CMAKE_CXX_ARCHIVE_CREATE " --plugin ${plugin} qcs ") @@ -225,6 +225,26 @@ endif() # Used in qt/ and shaders/ find_package(Python3 REQUIRED COMPONENTS Interpreter) +execute_process( + COMMAND ${Python3_EXECUTABLE} -c "import google.protobuf; +print(google.protobuf.__version__)" + RESULT_VARIABLE PROTOBUF_CHECK + OUTPUT_VARIABLE PROTOBUF_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET +) + +if(PROTOBUF_CHECK EQUAL 0) + if(PROTOBUF_VERSION VERSION_LESS "4.0.0") + message(STATUS "Python protobuf ${PROTOBUF_VERSION} found (< 4.0)") + else() + message(FATAL_ERROR "Python protobuf ${PROTOBUF_VERSION} found, but version < 4.0 required") + endif() +else() + message(FATAL_ERROR "Python protobuf not found. Install version <4.0") +endif() + + add_subdirectory(libs) if (PLATFORM_DESKTOP) diff --git a/README.md b/README.md index de158dafd..8fc4a23c1 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,9 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www F-Droid + + Obtainium + Obtainium @@ -155,6 +158,12 @@ SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade MD5: 9cce0ffea281dc2f0e0a154d6d2e281e ``` + +To verify CoMaps via [AppVerifier](https://github.com/soupslurpr/AppVerifier), use the following signing certificate fingerprint: +``` +app.comaps +48:94:E8:E6:96:36:27:EF:66:00:31:D8:59:3F:E7:72:97:F8:35:AC:B4:E2:38:10:00:3E:92:61:35:02:3B:4C +``` --- ## ⚖️ License diff --git a/android/app/.gitignore b/android/app/.gitignore index ceef345e9..c88eb933a 100644 --- a/android/app/.gitignore +++ b/android/app/.gitignore @@ -24,3 +24,6 @@ /src/main/res/drawable-mdpi/uk_northern_ireland.png /src/main/res/drawable-mdpi/uk_scotland.png /src/main/res/drawable-mdpi/uk_wales.png + +# Symlinked to F-Droid relnotes by tools/unix/link_gplay_relnotes.sh +/src/google/play/release-notes \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index a46f3a8c1..3c691aef6 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -29,12 +29,12 @@ def getCommitMessage() { project.ext.appId = 'app.comaps' project.ext.appName = 'CoMaps' -// I have Java 21 installed, but this doesn't work on MacOS. -//java { -// toolchain { -// languageVersion.set(JavaLanguageVersion.of(17)) -// } -//} + +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(21)) + } +} android { namespace = 'app.organicmaps' @@ -311,8 +311,8 @@ android { compileOptions { coreLibraryDesugaringEnabled = true - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 } } @@ -355,8 +355,7 @@ dependencies { // Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture // https://github.com/organicmaps/organicmaps/issues/6106 implementation libs.google.guava - implementation libs.devnullorthrow.mpandroidchart - implementation libs.jcip.annotations + implementation libs.appdevnext.androidchart // Test Dependencies androidTestImplementation libs.androidx.test.junit diff --git a/android/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..ac71fa4ab --- /dev/null +++ b/android/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..149520eb7 --- /dev/null +++ b/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/android/app/src/fdroid/play/listings/ca/title.txt b/android/app/src/fdroid/play/listings/ca/title.txt new file mode 100644 index 000000000..50a631add --- /dev/null +++ b/android/app/src/fdroid/play/listings/ca/title.txt @@ -0,0 +1 @@ +CoMaps - Camina, pedala o condueix privadament diff --git a/android/app/src/fdroid/play/listings/de-DE/release-notes.txt b/android/app/src/fdroid/play/listings/de-DE/release-notes.txt index 31760b19a..b6a8eb5ca 100644 --- a/android/app/src/fdroid/play/listings/de-DE/release-notes.txt +++ b/android/app/src/fdroid/play/listings/de-DE/release-notes.txt @@ -1,8 +1,10 @@ -• OpenStreetMap-Daten vom 22. August -• Neue Geschwindigkeitsanzeige & Details aufgezeichneter Strecken -• Besserer dunkler Modus, neue farbige Labels -• Anzeige wann Orte & Öffnungszeiten überprüft wurden -• Routenplanung berücksichtigt Stoppschilder, Ampeln & bedingte Einschränkungen. -• GPS-Peilung wird statt Kompass bevorzugt & höhere GPS-Frequenz. -• Adressen & Notizen im OSM-Editor unterstützt. -• Mehr Verbesserungen an UI-Elementen & Kartenstil, alle Details in den Codeberg-Versionshinweisen! +• Karten-Daten vom 6. September +• Zeitstrafen für Radrouting +• Farbige POI-Beschriftungen in Autonavigation +• POI-Suche nach Filialnamen +• Abspannportale, Sicherheitskabinen & Büros hinzugefügt +• Aktualisierte Symbole für Türme, Nachtclubs, Apotheken und Fahnenmasten +• Lesezeichen-Farbe in GPX-Exporten +• Farbfüllung von Fußgängerbereiche auf Plätzen +• Android Auto: Anzeige Ausfahrtsnummern in Kreisverkehren +Weitere Änderungen in Codeberg-Versionshinweisen! diff --git a/android/app/src/fdroid/play/listings/en-US/release-notes.txt b/android/app/src/fdroid/play/listings/en-US/release-notes.txt index ac838ba47..23f46be4a 100644 --- a/android/app/src/fdroid/play/listings/en-US/release-notes.txt +++ b/android/app/src/fdroid/play/listings/en-US/release-notes.txt @@ -1,9 +1,10 @@ -• OpenStreetMap data as of August 22 -• New current speed indicator, display track info -• Improved dark map style, added coloured labels -• Display when places & opening hours were last checked -• Routing now considers turns, stop signs, lights & conditional restrictions -• Prefer GPS bearing over compass and increase location poll rate -• Enable adding standalone addresses & notes in the editor -• Various UI element & map style improvements +• OpenStreetMap data as of September 6 +• Turn penalties for bicycle routing +• Colored POI labels for car navigation map style +• Search POIs by branch name +• Added power portals, security booths and offices +• Update icons for towers, nightclubs, chemists, flagpoles +• Save bookmark color to GPX exports +• Color fill pedestrian parts of squares +• Android Auto: display roundabout exit numbers Check our Codeberg release notes for more changes! diff --git a/android/app/src/fdroid/play/listings/es-ES/release-notes.txt b/android/app/src/fdroid/play/listings/es-ES/release-notes.txt index 7232299c7..6ca7f2a6e 100644 --- a/android/app/src/fdroid/play/listings/es-ES/release-notes.txt +++ b/android/app/src/fdroid/play/listings/es-ES/release-notes.txt @@ -1,9 +1,10 @@ -• Datos de OSM a 22-08-2025 -• Nuevo indicador de velocidad e información de pista -• Modo oscuro mejorado y nombres de POI coloreados -• Indicador de última revisión de lugares y horarios de apertura -• Rutas mejoradas teniendo en cuenta giros, señales de STOP, semáforos y restricciones -• Mayor precisión para determinar tu localización y sentido -• Añade direcciones y notas con el editor -• Otras mejoras en elementos de la interfaz y estilo del mapa -Entra en nuestro Codeberg para más cambios! +• Datos a 6 de septiembre +• Penalizaciones de giros en rutas de bici +• Etiquetas de puntos de interés en color en navegación +• Buscar por nombre de sucursal +• Añadir portales de energía, cabinas de seguridad y oficinas +• Nuevos iconos: torres, discotecas, parafarmacias y mástiles +• Guardar color en exportaciones GPX +• Colorear áreas peatonales de plazas +• Android Auto: mostrar números de salida de rotondas +Más detalles en Codeberg diff --git a/android/app/src/fdroid/play/listings/es-ES/short-description.txt b/android/app/src/fdroid/play/listings/es-ES/short-description.txt index f45617084..7efd0a405 100644 --- a/android/app/src/fdroid/play/listings/es-ES/short-description.txt +++ b/android/app/src/fdroid/play/listings/es-ES/short-description.txt @@ -1 +1 @@ -Navegación de mapa fácil - Descubre más en tu camino - Creado por la comunidad +Navegación sencilla - Descubre más en tu camino - Creado por la comunidad diff --git a/android/app/src/fdroid/play/listings/fi-FI/full-description.txt b/android/app/src/fdroid/play/listings/fi-FI/full-description.txt index d36faea2a..07f3c84a7 100644 --- a/android/app/src/fdroid/play/listings/fi-FI/full-description.txt +++ b/android/app/src/fdroid/play/listings/fi-FI/full-description.txt @@ -1,32 +1,34 @@ -Yhteisövetoinen, ilmainen ja avoimeen lähdekoodiin perustuva karttasovellus, jonka pohjalla käytetään OpenStreetMapin avointa karttadataa. Sovelluksen kehityksessä on sitouduttu läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomuuteen. CoMapsin projekti on haarautunut Organic Mapsista, joka taas on haarautunut aiemmin Maps.ME:stä +Yhteisön johtama vapaa ja avoimeen lähdekoodiin perustuva karttasovellus, jonka karttadata perustuu OpenStreetMap:n avoimeen dataan. Sovelluksessa painottuu vahva sitoutuminen läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomaan toimintaan. CoMaps on haarautunut Organic Maps:sta, joka taas omalta osaltaan on haarautunut Maps.ME:stä. -Lue lisää projektin tavotteista ja suunnasta osoitteesta codeberg.org/comaps. -Liity yhteisöön ja auta kehittämään paras saatavilla oleva karttasovellus -• Käytä sovellusta ja kerro siitä myös muille -• Anna palautetta ja raportoi ongelmia -• Päivitä karttoja, joko sovelluksessa tai OpenStreetMapin verkkosivuilla +Lue tarkemmin projektin syistä ja sen suunnasta osoitteesta codeberg.org/comaps. +Liity yhteisöön ja auta kehittämään parasta karttasovellusta +• Käytä sovellusta ja levitä siitä sanaa +• Anna palautetta ja raportoi ongelmista +• Päivitä karttadataa sovelluksessa tai OpenStreetMap:n verkkosivuilla -‣ Offline-painotteinen: Suunnittele ja navigoi ulkomailla ilman mobiiliverkkoja. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä. -‣ Kunnioittaa yksityisyyttä: Sovellus on suunniteltu yksilön yksityisyys silmälläpitäen. Sovellus ei tunnista tai kerää tietoja sinusta. Mainosvapaa. -‣ Yksinkertainen ja viimeistelty: Olennaiset ominaisuudet, joita on helppo käyttää. -‣ Säästä akkua ja tallennustilaa: Ei kuluta akkua, kuten muut navigointisovellukset. Kompaktit kartat säästävät arvokasta tallennustilaa puhelimessasi. -‣ Ilmainen ja yhteisön luoma: Vapaaehtoiset, kuten sinä olette auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit myös auttaa kehittämällä ominaisuuksia ja lahjoittamalla sovelluskehitykseen -‣ Avoin ja läpinäkyvä päätöksenteko sekä rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva. +‣ Offline-painotteinen: Suunnittele ja navigoi matkasi ilman verkkoyhteyttä. Etsi reittipisteitä retkilläsi. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä. +‣ Kunnioittaa yksityisyyttä: Sovellus on suunniteltu yksityisyyttä silmälläpitäen. Sovellu ei tunnista ihmisä, seuraa toimintaasi, eikä kerää henkilökohtaisia tietojasi. Mainosvapaa. +‣ Yksinkertainen ja viimeistelty: Olennaiset ominaisuudet, joita on helppo käyttää. +‣ Säästää akkua ja tilaa: Ei kuluta akkua, kuten toiset karttasovellukset. Kompaktit kartat säästävät tilaa puhelimessasi. +‣ Ilmainen ja yhteisön rakentama: Ihmiset, kuten sinä ovat auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit auttaa myös kehittämällä sovellusta ja lahjoittamalla sovelluskehitykseen. +‣ Avoin ja läpinäkyvä päätöksenteko ja rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva. Tärkeimmät ominaisuudet: -• Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta -• Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms. -• Kävely- ja pyörätiet -• Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta -• Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla -• Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa -• Tallenna suosikkipaikkasi yhdellä napautuksella -• Offline Wikipedia-artikkelit -• Maanalaisen liikenteen tasot ja ohjeet -• Reittien tallennus -• Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa -• Tumma tila iltaa ja yötä varten -• Paranna karttadataa kaikille sisäänrakennetulla editorilla +
    +
  • Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta
  • +
  • Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.
  • +
  • Kävely- ja pyörätiet
  • +
  • Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta
  • +
  • Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla
  • +
  • Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa
  • +
  • Tallenna suosikkipaikkasi yhdellä napautuksella
  • +
  • Offline Wikipedia-artikkelit
  • +
  • Maanalaisen liikenteen tasot ja ohjeet
  • +
  • Reittien tallennus
  • +
  • Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa
  • +
  • Tumma tila iltaa ja yötä varten
  • +
  • Paranna karttadataa kaikille sisäänrakennetulla editorilla
  • +
Vapaus on täällä -Löydä matkasi ja navigoi maailmalla yksityisyyden ja yhteisön tukemana! +Löydä matkasi, navigoi maailmassa yksityisyyden ja yhteisön tukemana! diff --git a/android/app/src/fdroid/play/listings/fi-FI/title.txt b/android/app/src/fdroid/play/listings/fi-FI/title.txt index 7a3c6537a..efcfd36fc 100644 --- a/android/app/src/fdroid/play/listings/fi-FI/title.txt +++ b/android/app/src/fdroid/play/listings/fi-FI/title.txt @@ -1 +1 @@ -CoMaps - Navigoi ilman verkkoyhteyttä yksityisesti +CoMaps - Navigoi yksityisesti ilman verkkoyhteyttä diff --git a/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt b/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt index 13084e62c..aafc42bc1 100644 --- a/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/fr-FR/release-notes.txt @@ -1,9 +1,9 @@ -• Données OSM du 22 août -• Nouvel indicateur de vitesse et détails des pistes -• Amélioration du style sombre, ajout de labels colorées -• Affichage de la date de dernière vérification d'un lieu -• Support dans le routage des virages, signalisations et restrictions -• Amélioration de la boussole et de la précision GPS -• Support des adresses et des notes dans l'éditeur -• Diverses améliorations d'UI et du style de la carte +• Données OSM du 06 septembre +• Pénalités dans les calculs d'itinéraires vélos +• Ajout de labels colorés en mode navigation +• Support du tag branch dans la recherche +• Ajout des portiques électriques, postes de sécurité +• Mise à jour des icônes de tours, boîtes de nuits, chimiste et mat +• Enregistrement de la couleur des signets dans les exports GPX +• Android Auto: Affichage du numéro de sortie des ronds-points Plus d'informations sur notre Codeberg diff --git a/android/app/src/fdroid/play/listings/fr-FR/short-description.txt b/android/app/src/fdroid/play/listings/fr-FR/short-description.txt index dc5921a55..5bf915b47 100644 --- a/android/app/src/fdroid/play/listings/fr-FR/short-description.txt +++ b/android/app/src/fdroid/play/listings/fr-FR/short-description.txt @@ -1 +1 @@ -Navigation de cartes facile - Découvrez le monde - Propulsé par la communauté +Navigation facile - Vivez de grands voyages - Propulsé par la communauté diff --git a/android/app/src/fdroid/play/listings/hu-HU/full-description.txt b/android/app/src/fdroid/play/listings/hu-HU/full-description.txt index 92ffe381a..a5f0dd6cd 100644 --- a/android/app/src/fdroid/play/listings/hu-HU/full-description.txt +++ b/android/app/src/fdroid/play/listings/hu-HU/full-description.txt @@ -1,32 +1,32 @@ -A CoMaps egy közösség által létrehozott, ingyenes és nyílt forráskódú térképalkalmazás, amely az OpenStreetMap térképadatain alapul, és amelyet az átláthatóság, a magánélet védelme és a nonprofit jelleg iránti elkötelezettség erősít. A CoMaps az Organic Maps villája, amely viszont a Maps.ME villája. +Egy közösség által vezetett, ingyenes és nyílt forráskódú térképalkalmazás, amely az OpenStreetMap adatain alapul, és amelynek alapelvei a átláthatóság, az adatvédelem és a nonprofit működés. A CoMaps az Organic Maps alkalmazás egyik változata, amely viszont a Maps.ME alkalmazás egyik változata. -A projekt előzményeiről és az irányáról a codeberg.org/comaps oldalon olvashatsz. -Csatlakozz ott a közösséghez, és segíts a legjobb térképalkalmazás elkészítésében. -• Használd az alkalmazást és terjeszd a hírét -• Adj visszajelzést és jelentsd a problémákat -• Frissítsd és javítsd a térképadatokat az alkalmazásban vagy az OpenStreetMap weboldalán. +A projekt előzményeiről és fejlesztési irányáról bővebben a codeberg.org/comaps oldalon olvashat. +Csatlakozzon a közösséghez, és segítsen a legjobb térképalkalmazás létrehozásában +• Használja az alkalmazást, és terjessze a hírt róla +• Adjon visszajelzést, és jelentsen problémákat +• Frissítse a térképadatokat az alkalmazásban vagy az OpenStreetMap weboldalon -‣ Offline-fókuszú: Tervezd meg és navigáld külföldi útad mobilszolgáltatás nélkül, keress útpontokat egy távoli túra során stb. Az alkalmazás minden funkcióját úgy terveztük, hogy internetkapcsolat nélkül is működjön. -‣ A magánélet tiszteletben tartása: Az alkalmazás az adatvédelem szem előtt tartásával készült, nem azonosítja az embereket, nem követi nyomon és nem gyűjt személyes adatokat, és reklámmentes. -‣ Takarékosdik az akkumulátorral és a tárhellyel: Nem meríti le az akkumulátort, mint más navigációs alkalmazások. A jól összeállítot kis méretű térképek értékes helyet takarítanak meg a telefonon. -‣ Egyszerű és szép grafikus felület, nagyszerű és könnyen használható funkciók, amelyek egyszerűen működnek. -‣ Ingyenes és a közösség által készített: A hozzád hasonló emberek segítettek az alkalmazás létrehozásában azáltal, hogy hozzáadtak helyeket az OpenStreetMap térképhez, tesztelték és visszajelzést adtak a funkciókról, valamint hozzájárultak a fejlesztői képességeikkel és a pénzükkel. -‣ Nyílt és átlátható döntéshozatal és pénzügyek, nonprofit és teljesen nyílt forráskódú. +‣ Offline: Tervezze meg és navigálja külföldi utazását mobilszolgáltatás nélkül, keressen útpontokat távoli túrákon stb. Az alkalmazás összes funkciója úgy van kialakítva, hogy offline is működjön. +‣ A magánélet tiszteletben tartása: Az alkalmazás a magánélet tiszteletben tartásával lett kialakítva – nem azonosítja az embereket, nem követi nyomon őket és nem gyűjt személyes adatokat. Reklámmentes. +‣ Egyszerű és kifinomult: alapvető, könnyen használható funkciók, amelyek egyszerűen működnek. +‣ Takarékos az akkumulátorral és a tárhellyel: Nem meríti le az akkumulátort, mint más navigációs alkalmazások. A kompakt térképek értékes helyet takarítanak meg a telefonon. +‣ Ingyenes és a közösség által fejlesztett: Az Önhöz hasonló emberek segítettek az alkalmazás fejlesztésében azzal, hogy helyeket adtak hozzá az OpenStreetMaphez, tesztelték és visszajelzéseket adtak a funkciókról, valamint fejlesztői ismereteikkel és pénzzel is hozzájárultak a fejlesztéshez. +‣ Nyílt, átlátható döntéshozatal és pénzügyek, nonprofit és teljesen nyílt forráskódú. -Főbb jellemzők: -• Letölthető részletes térképek olyan helyekkel, amelyek sok kereskedelmi térképen nem állnak rendelkezésre. -• Szabadtéri üzemmód kiemelt túraútvonalakkal, táborhelyekkel, vízforrásokkal, csúcsokkal, szintvonalakkal stb. -• Sétaútvonalak és kerékpárutak -• Érdekes pontok, mint például éttermek, benzinkutak, szállodák, üzletek, látnivalók és még sok minden más -• Keresés név, cím vagy az érdekes pontok kategóriája alapján -• Navigáció hangutasításokkal gyalogláshoz, kerékpározáshoz vagy vezetéshez -• Kedvenc helyeid könyvjelzővel láthatod el egyetlen érintéssel -• Wikipedia szócikkek internetkapcsolat nélkül -• Metró tranzit réteg és irányok -• Útvonal mentése -• Könyvjelzők és nyomvonalak exportálása és importálása KML, KMZ, GPX formátumokban -• Sötét üzemmód az éjszakai használathoz -• Térképadatok javítása mindenki számára egy alapvető beépített szerkesztő segítségével +Főbb jellemzők: +• Letölthető részletes térképek olyan helyekkel, amelyek nem érhetők el a Google Maps-en +• Kültéri mód kiemelt túraútvonalakkal, kempingekkel, vízforrásokkal, csúcsokkal, szintvonalakkal stb. +• Gyalogos és kerékpáros útvonalak +• Érdekes helyek, például éttermek, benzinkutak, szállodák, üzletek, látnivalók és még sok más +• Keresés név, cím vagy érdekes hely kategória alapján +• Hangos navigáció gyalogos, kerékpáros vagy autós utazáshoz +• Kedvenc helyek könyvjelzővel egyetlen érintéssel +• Offline Wikipedia cikkek +• Metróhálózat és útvonaltervezés +• Útvonalrögzítés +• Könyvjelzők, útvonalak exportálása és importálása KML, KMZ, GPX formátumokban +• Sötét mód az éjszakai használathoz +• A beépített alapszerkesztővel mindenki javíthatja a térképadatokat -Itt van a szabadság -Fedezd fel az utadat, navigálj a világban úgy, hogy a magánélet és a közösség kerüljön előtérbe! +A szabadság itt van +Fedezze fel utazását, navigáljon a világban, ahol az adatvédelem és a közösség az első! diff --git a/android/app/src/fdroid/play/listings/hu-HU/short-description.txt b/android/app/src/fdroid/play/listings/hu-HU/short-description.txt index e818f3e16..b028d6bf2 100644 --- a/android/app/src/fdroid/play/listings/hu-HU/short-description.txt +++ b/android/app/src/fdroid/play/listings/hu-HU/short-description.txt @@ -1 +1 @@ -Könnyű térképes navigáció - Fedezz fel többet az útjaidról - A közösség erejével +Egyszerű térképnavigáció – Fedezze fel utazását – A közösség támogatásával diff --git a/android/app/src/fdroid/play/listings/hu-HU/title.txt b/android/app/src/fdroid/play/listings/hu-HU/title.txt index 788a78e1f..1cc7325ba 100644 --- a/android/app/src/fdroid/play/listings/hu-HU/title.txt +++ b/android/app/src/fdroid/play/listings/hu-HU/title.txt @@ -1 +1 @@ -CoMaps - Túra, Bicikli, Vezetés offline diszkréten +CoMaps – túrázás, kerékpározás, autózás offline diff --git a/android/app/src/fdroid/play/listings/it-IT/release-notes.txt b/android/app/src/fdroid/play/listings/it-IT/release-notes.txt new file mode 100644 index 000000000..cdd21014f --- /dev/null +++ b/android/app/src/fdroid/play/listings/it-IT/release-notes.txt @@ -0,0 +1,10 @@ +• OpenStreetMap aggiornato al 6 Settembre +• Bici: miglior stima del tempo di percorrenza +• Auto: punti d'interesse colorati +• Cerca i punti d'interesse tramite filiale +• Aggiunte strutture alta tensione, cabine di sicurezza e uffici +• Aggiornate le icone per torri, discoteche, farmacie e aste per bandiere +• Salva il colore dei Preferiti nel GPX +• Evidenziate le aree pedonali nelle piazze +• AndroidAuto: aggiunto il numero dell'uscita nelle rotonde +Visita Codeberg per ulteriori dettagli diff --git a/android/app/src/fdroid/play/listings/lv/short-description.txt b/android/app/src/fdroid/play/listings/lv/short-description.txt new file mode 100644 index 000000000..34e743746 --- /dev/null +++ b/android/app/src/fdroid/play/listings/lv/short-description.txt @@ -0,0 +1 @@ +Vienkārša kartes navigācija - Atklāj vairāk par savu ceļojumu - Darbina kopiena diff --git a/android/app/src/fdroid/play/listings/lv/title.txt b/android/app/src/fdroid/play/listings/lv/title.txt new file mode 100644 index 000000000..f16b7e960 --- /dev/null +++ b/android/app/src/fdroid/play/listings/lv/title.txt @@ -0,0 +1 @@ +CoMaps - dodies ceļā bezsaistē ar privātumu diff --git a/android/app/src/fdroid/play/listings/mt/full-description.txt b/android/app/src/fdroid/play/listings/mt/full-description.txt new file mode 100644 index 000000000..dc50480af --- /dev/null +++ b/android/app/src/fdroid/play/listings/mt/full-description.txt @@ -0,0 +1,32 @@ +App għall-mapep b'xejn u b'sors miftuħ (open source) immexxi mill-komunità bbażata fuq dejta minn OpenStreetMap, b'impenn għal trasparenza, privatezza u mhux għal-profitt. CoMaps hija fork ta' Organic Maps, li min-naħa tagħha hija fork ta' Maps.ME. + +Kompli aqra dwar ir-raġunijiet għall-proġett u d-direzzjoni tiegħu hawn codeberg.org/comaps. +Ingħaqad mal-komunità u għin biex toħloq l-aqwa app tal-mapep +• Uża l-app u semmiha ma' min taf +• Agħti feedback u rrapporta problemi +• Aġġorna d-dejta tal-mapep fl-app jew fuq il-websajt OpenStreetMap + +‣ Iffokata fuq offlajn: Ippjana u innaviga l-vjaġġ tiegħek barra minn pajjiżek mingħajr ħtieġa ta' servizz ċellulari, fittex waypoints waqt ħajk, eċċ. Il-funzjonijiet kollha tal-app huma ddisinjati biex jaħdmu offlajn. +‣ Tirrispetta l-Privatezza: L-app hija ddisinjata bil-privatezza f'moħħha - ma tidentifikax nies, ma ssegwikx, u ma tiġborx informazzjoni personali. Bla reklami. +‣ Sempliċi u Rfinuta: karatteristiċi essenzjali, faċli biex jintużaw u li sempliċement jaħdmu. +‣ Tiffrankalek Batterija u Spazju: Ma taħlix il-batterija bħal apps oħra tal-mapep. Mapep kompatti li jiffrankawlek spazju prezzjuż fuq il-mowbajl. +‣ B'xejn u Mibnija mill-Komunità: Nies bħalek għenu fl-iżvilupp tal-app billi żiedu postijiet f'OpenStreetMap, ittestjaw u taw feedback dwar il-karatteristiċi u kkontribwew il-ħiliet u l-flus tagħhom. +‣ Trasparenza fil-finanzi u fit-teħid ta' deċiżjonijiet, Mhux għall-profitt u sors kompletament miftuħ. + +Karatteristiċi Prinċipali: +• Mapep dettaljati li jistgħu jitniżżlu b'postijiet li mhumiex disponibbli fuq Google Maps +• Modalità ta' barra b'mogħdijiet tal-mixi, postijiet għal-ikkampjar, sorsi tal-ilma, quċċati, linji tal-kontorn, eċċ. +• Mogħdijiet għall-mixi u rotti għar-roti +• Postijiet ta' interess bħal ristoranti, stazzjonijiet tal-petrol, lukandi, ħwienet, postijiet turistiċi u ħafna aktar +• Fittex bl-isem jew bl-indirizz jew bil-kategorija interess +• Navigazzjoni b'avviżi bil-vuċi għall-mixi, ċikliżmu, u sewqan +• Immarka l-postijiet favoriti tiegħek b'tapp waħda +• Artikli offlajn ta' Wikipedia +• Direzzjonijiet tas-subways +• Reġistrazzjoni ta' trekks +• Esportazzjoni u importazzjoni ta' bookmarks u trekks f'formati KML, KMZ, GPX +• Modalità mudlama biex tintuża bil-lejl +• Ittejjeb id-dejta tal-mapep għal kulħadd b'użu ta' editur bażiku u integrat + +Il-Libertà Waslet +Skopri l-vjaġġ tiegħek, innaviga d-dinja bil-privatezza u bil-komunità fuq quddiem nett! diff --git a/android/app/src/fdroid/play/listings/mt/short-description.txt b/android/app/src/fdroid/play/listings/mt/short-description.txt new file mode 100644 index 000000000..c5a79f4da --- /dev/null +++ b/android/app/src/fdroid/play/listings/mt/short-description.txt @@ -0,0 +1 @@ +Navigazzjoni ta' mapep faċli - Skopri iktar mill-vjaġġ - Imsaħħaħ mill-komunita` diff --git a/android/app/src/fdroid/play/listings/mt/title.txt b/android/app/src/fdroid/play/listings/mt/title.txt new file mode 100644 index 000000000..2f4c8b18d --- /dev/null +++ b/android/app/src/fdroid/play/listings/mt/title.txt @@ -0,0 +1 @@ +CoMaps - Imxi, Suq Rota u Karozza bil-Privatezza diff --git a/android/app/src/fdroid/play/listings/pl-PL/full-description.txt b/android/app/src/fdroid/play/listings/pl-PL/full-description.txt new file mode 100644 index 000000000..dc1740305 --- /dev/null +++ b/android/app/src/fdroid/play/listings/pl-PL/full-description.txt @@ -0,0 +1,32 @@ +Prowadzona przez społeczność, darmowa i otwartoźródłowa aplikacja mapowa oparta na danych OpenStreetMap, wzmacniana zobowiązaniem do transparentności, prywatności i działalnością non-profit. CoMaps jest forkiem/spin-off'em Organic Maps, który z kolei jest forkiem Maps.ME. + +Przeczytaj o powodach powstania projektu i jego kierunku na stronie codeberg.org/comaps. +Dołącz do społeczności i pomóż stworzyć najlepszą aplikację mapową +• Używaj aplikacji i rozpowszechnia o niej informacje, +• Przekazuj opinie i zgłaszaj problemy, +• Aktualizuj dane w aplikacji lub na stronie OpenStreetMap. + +‣ Skoncentrowana na pracy w trybie offline: Zaplanuj trasę i nawiguj podczas swojej podróży za granicą bez potrzeby korzystania z sieci komórkowej, wyszukuj punkty nawigacyjne podczas dalekich wędrówek itp. Wszystkie funkcje aplikacji zostały zaprojektowane do pracy w trybie offline. +‣ Poszanowanie prywatności: Aplikacja została zaprojektowana z myślą o prywatności – nie identyfikuje osób, nie śledzi ich i nie gromadzi danych osobowych. Bez reklam. +‣ Prosta i dopracowana: niezbędne, łatwe w użyciu funkcje, które po prostu działają. +‣ Oszczędza baterię i miejsce: Nie wyczerpuje baterii jak inne aplikacje nawigacyjne. Kompaktowe mapy oszczędzają cenne miejsce w telefonie. +‣ Darmowa i stworzona przez społeczność: Osoby takie jak Ty pomogły w tworzeniu aplikacji, dodając miejsca do OpenStreetMap, testując i przekazując opinie na temat funkcji oraz wnosząc swoje umiejętności programistyczne i pieniądze. +‣ Otwarte i transparentne podejmowanie decyzji i zarządzanie finansami, nie dla zysku i w pełni otwartoźródłowe. + +Główne funkcje: +• Szczegółowe mapy do pobrania z miejscami niedostępnymi na wielu mapach komercyjnych, +• Tryb outdoorowy z wyróżnionymi szlakami turystycznymi, kempingami, źródłami wody, szczytami, poziomicami itp., +• Ścieżki spacerowe i rowerowe, +• Punkty zainteresowania, takie jak restauracje, stacje benzynowe, hotele, sklepy, atrakcje turystyczne i wiele innych, +• Wyszukiwanie według nazwy, adresu lub kategorii punktu zainteresowania, +• Nawigacja z komunikatami głosowymi dla pieszych, rowerzystów i kierowców, +• Dodawanie zakładek do ulubionych miejsc jednym dotknięciem, +• Artykuły z Wikipedii offline, +• Warstwa z liniami metra oraz nawigacja z użyciem metra, +• Nagrywanie tras, +• Eksport i import zakładek i tras w formatach KML, KMZ i GPX, +• Ciemny tryb do użytku w nocy, +• Ulepszanie danych mapowych dzięki wbudowanemu edytorowi. + +Wolność jest tutaj +Odkrywaj swoją podróż, nawiguj po świecie z prywatnością i społecznością na pierwszym planie! diff --git a/android/app/src/fdroid/play/listings/pl-PL/short-description.txt b/android/app/src/fdroid/play/listings/pl-PL/short-description.txt new file mode 100644 index 000000000..0f76a8bef --- /dev/null +++ b/android/app/src/fdroid/play/listings/pl-PL/short-description.txt @@ -0,0 +1 @@ +Łatwa nawigacja – Odkryj więcej ze swojej podróży – Wspierane przez społeczność diff --git a/android/app/src/fdroid/play/listings/pl-PL/title.txt b/android/app/src/fdroid/play/listings/pl-PL/title.txt new file mode 100644 index 000000000..1c5fdcfb1 --- /dev/null +++ b/android/app/src/fdroid/play/listings/pl-PL/title.txt @@ -0,0 +1 @@ +CoMaps - Nawiguj offline z zachowaniem prywatności diff --git a/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt b/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt index a5b703092..a88a99915 100644 --- a/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt +++ b/android/app/src/fdroid/play/listings/pt-BR/release-notes.txt @@ -1,8 +1,10 @@ -• Dados OSM de 22/08 -• Novo indicador de velocidade e tela de informações de trilha -• Melhor estilo de mapa escuro, rótulos coloridos adicionados -• Exibição da última atualização de locais e horários de funcionamento -• O roteamento agora considera conversões, PARE, semáforos, e restrições condicionais -• Preferência por orientação GPS em vez de bússola e aumento da frequência de localização -• Editor: adição de endereços e notas independentes -• Melhorias em elementos da interface e estilo de mapa +• Dados OSM de 6/09 +• Penalidades de conversão para bicicleta +• Etiquetas de POI coloridas para o estilo do mapa de navegação de carros +• Busca de POIs por nome de filial +• Adição de portais de energia, guaritas e escritórios +• Atualização de ícones para torres, discotecas, farmácias e mastros +• Salva a cor dos favoritos nas exportações GPX +• Preenchimento de praças pavimentadas +• Android Auto: exibe números de saída de rotatória +Confira nossas notas de lançamento do Codeberg para mais mudanças diff --git a/android/app/src/fdroid/play/listings/ro/full-description.txt b/android/app/src/fdroid/play/listings/ro/full-description.txt new file mode 100644 index 000000000..b7559e958 --- /dev/null +++ b/android/app/src/fdroid/play/listings/ro/full-description.txt @@ -0,0 +1,32 @@ +O aplicație de hărți gratuită & open source, condusă de comunitate, bazată pe date OpenStreetMap și întărită prin angajament față de transparență, confidențialitate și statut non-profit. CoMaps este un fork/spin-off al Organic Maps, care la rândul său este un fork al Maps.ME. + +Citește mai multe despre motivele proiectului și direcția sa pe codeberg.org/comaps. +Alătură-te comunității de acolo și ajută la crearea celei mai bune aplicații de hărți: +• Folosește aplicația și promovează-o +• Oferă feedback și raportează probleme +• Actualizează datele hărților în aplicație sau pe site-ul OpenStreetMap + +‣ Orientare offline: Planifică-ți și navighează-ți călătoria în străinătate fără nevoia unui semnal cellular, caută puncte de reper în timpul unei drumeții îndepărtate etc. Toate funcțiile aplicației sunt concepute să funcționeze offline. +‣ Respectă confidențialitatea: Aplicația este concepută cu confidențialitatea în minte - nu identifică persoanele, nu urmărește și nu colectează informații personale. Fără reclame. +‣ Simplă și rafinată: caracteristici esențiale, ușor de utilizat, care funcționează fără probleme. +‣ Economisește bateria și spațiul: Nu consumă bateria la fel de mult ca alte aplicații de navigație. Hărțile compacte economisesc spațiu prețios pe telefon. +‣ Gratuită și construită de comunitate: Oameni ca tine au contribuit la construirea aplicației prin adăugarea de locații pe OpenStreetMap, testare și oferire de feedback pentru funcții, și prin contribuția cu abilități de dezvoltare și finanțare. +‣ Decizii și finanțare deschise și transparente, non-profit și cu sursă complet deschisă (open source). + +Caracteristici principale: +• Hărți detaliate, descărcabile, cu locații care nu sunt disponibile pe Google Maps +• Mod pentru activități în aer liber cu trasee de drumeție marcate, locuri de campat, surse de apă, vârfuri, linii de contur etc. +• Căi pietonale și piste de ciclism +• Puncte de interes precum restaurante, benzinării, hoteluri, magazine, obiective turistice și multe altele +• Căutare după nume, adresă sau categorie de punct de interes +• Navigație cu anunțuri vocale pentru mers pe jos, cu bicicleta sau cu mașina +• Marchează-ți locațiile preferate cu un singur clic +• Articole Wikipedia offline +• Strat pentru metrou și indicații de traseu +• Înregistrare trasee +• Exportă și importă marcaje și trasee în formatele KML, KMZ, GPX +• Un mod întunecat pentru utilizare nocturnă +• Îmbunătățește datele hărții pentru toți, folosind un editor de bază integrat + +Libertatea este aici +Descoperă-ți călătoria, navighează prin lume având în frunte confidențialitatea și comunitatea! diff --git a/android/app/src/fdroid/play/listings/ro/short-description.txt b/android/app/src/fdroid/play/listings/ro/short-description.txt new file mode 100644 index 000000000..b68c564ac --- /dev/null +++ b/android/app/src/fdroid/play/listings/ro/short-description.txt @@ -0,0 +1 @@ +Navigare ușoară - Descoperă mai mult din călătoria ta - Susținut de comunitate diff --git a/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt b/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt index 4450553c9..2be8010c2 100644 --- a/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt +++ b/android/app/src/fdroid/play/listings/ru-RU/release-notes.txt @@ -1,9 +1,10 @@ -• Данные 22 августа -• Новый спидометр,информация о маршруте -• Улучшен тёмный стиль,цветные метки -• Время последней проверки часов работы -• Построении маршрута учитывает повороты, знак «Стоп»,светофоры и ограничения -• Предпочтение отдается GPS-координатам,а не компасу,увеличена частота опроса местоположения -• Можно добавлять отдельные адреса и заметки в редакторе -• Улучшены различные элементы пользовательского интерфейса и стиль карты -Ознакомьтесь с примечания к релизу про изменения! +• Данные на 6 сентября +• Предупреждения на веломаршруте +• Цветные метки POI при автонавигации +• Поиск POI по названию ветки +• Добавлены высоковольтные опоры, помещения охраны и офисы +• Обновлены значки башен,вышек,мачт,ночных клубов,аптек +• Сохранение цвета закладок при экспорте в GPX (через OM) +• Отображение цветом пешеходных зон +• Android Auto: отображение номеров съездов на кольцевых развязках +Посмотрите примечания к выпуску Codeberg, чтобы узнать о других изменениях! diff --git a/android/app/src/fdroid/play/listings/sk/short-description.txt b/android/app/src/fdroid/play/listings/sk/short-description.txt new file mode 100644 index 000000000..98da94b22 --- /dev/null +++ b/android/app/src/fdroid/play/listings/sk/short-description.txt @@ -0,0 +1 @@ +Jednoduchá navigácia - Objav viac zo svojej cesty - Funguje vďaka komunite diff --git a/android/app/src/fdroid/play/listings/sk/title.txt b/android/app/src/fdroid/play/listings/sk/title.txt new file mode 100644 index 000000000..213013edd --- /dev/null +++ b/android/app/src/fdroid/play/listings/sk/title.txt @@ -0,0 +1 @@ +CoMaps - kráčaj, bicykluj a jazdi v súkromí diff --git a/android/app/src/fdroid/play/listings/sl/short-description.txt b/android/app/src/fdroid/play/listings/sl/short-description.txt new file mode 100644 index 000000000..f4dea63ca --- /dev/null +++ b/android/app/src/fdroid/play/listings/sl/short-description.txt @@ -0,0 +1 @@ +Enostavna navigacija – Odkrij več o svojem potovanju – Podprto v skupnosti diff --git a/android/app/src/fdroid/play/listings/sl/title.txt b/android/app/src/fdroid/play/listings/sl/title.txt new file mode 100644 index 000000000..5c1ebf180 --- /dev/null +++ b/android/app/src/fdroid/play/listings/sl/title.txt @@ -0,0 +1 @@ +CoMaps–Hodi, kolesari, vozi brez povezave, zasebno diff --git a/android/app/src/fdroid/play/listings/sr/full-description.txt b/android/app/src/fdroid/play/listings/sr/full-description.txt index 4b26f789a..ddb27ae64 100644 --- a/android/app/src/fdroid/play/listings/sr/full-description.txt +++ b/android/app/src/fdroid/play/listings/sr/full-description.txt @@ -1,4 +1,4 @@ -Бесплатна апликација отвореног кода коју одржава заједница, која се заснива на ОpenStreetMap подацима. Непрофитна, транспарентна и цени вашу приватност. CoMaps је настала од апликације Organic Maps, које је настала од апликације Maps.ME. +Бесплатна апликација отвореног кода коју одржава заједница и која се заснива на ОpenStreetMap подацима. Непрофитна, транспарентна и цени вашу приватност. CoMaps је настала од апликације Organic Maps, која је настала од апликације Maps.ME. Прочитајте о разлозима пројекта и његовог правца на codeberg.org/comaps Придружите се отвореној заједници и помозите да направимо најбољу апликацију за мапе @@ -10,7 +10,7 @@ ‣ Поштовање приватности: Апликација је осмишљена са приватношћу корисника на уму - не идентификује људе, не прати или прикупља личне податке. Нема реклама. ‣ Једноставно и елегантно: Апликација је лака за употребу и једноставно функционише. ‣ Чува вашу батерију и простор: Не троши батерију као остале апликације за навигацију. Компактне мапе чувају драгоцени простор на вашем телефону. -‣ Отворено и направљено од стране заједнице: Људи попут вас су допринели развоју апликације додавањем локација на OpenStreetMap, тестирањем, давањем повратних информација о апликацији и помогли су својим програмерским вештинама и донацијама. +‣ Отворено и направљено од стране заједнице: Људи попут вас су допринели развоју апликације додавањем локација на OpenStreetMap, тестирањем, давањем повратних информација о апликацији и помогли су својим програмерским вештинама и донацијама. ‣ Отворено и транспарентно доношење одлука и употреба донација, непрофитна и потпуно отвореног кода. Главне карактеристике : diff --git a/android/app/src/fdroid/play/listings/sr/short-description.txt b/android/app/src/fdroid/play/listings/sr/short-description.txt index 3463b97bb..3838e27f4 100644 --- a/android/app/src/fdroid/play/listings/sr/short-description.txt +++ b/android/app/src/fdroid/play/listings/sr/short-description.txt @@ -1 +1 @@ -Једноставна навигација - Сазнајте више о свом путовању - Ради на бази заједнице +Једноставна навигација - Сазнајте више о свом путовању - Одржава заједница diff --git a/android/app/src/fdroid/play/listings/sr/title.txt b/android/app/src/fdroid/play/listings/sr/title.txt index c0e26e81c..89f06a4d0 100644 --- a/android/app/src/fdroid/play/listings/sr/title.txt +++ b/android/app/src/fdroid/play/listings/sr/title.txt @@ -1 +1 @@ -CoMaps - пешачење, бицикл, вожња +CoMaps - пешачење, бицикл и вожња, са приватношћу diff --git a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/1.jpg b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/1.jpg index b4d4ecbd0..351f556fb 100644 Binary files a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/1.jpg and b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/1.jpg differ diff --git a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/2.jpg b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/2.jpg index 9eaa167f2..98875136e 100644 Binary files a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/2.jpg and b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/2.jpg differ diff --git a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/3.jpg b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/3.jpg index f1215203a..53ca9bf36 100644 Binary files a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/3.jpg and b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/3.jpg differ diff --git a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/4.jpg b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/4.jpg index 31cee7105..49408f803 100644 Binary files a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/4.jpg and b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/4.jpg differ diff --git a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/5.jpg b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/5.jpg new file mode 100644 index 000000000..1fe214ade Binary files /dev/null and b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/5.jpg differ diff --git a/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/6.jpg b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/6.jpg new file mode 100644 index 000000000..3cf8a8d15 Binary files /dev/null and b/android/app/src/fdroid/play/listings/tr-TR/graphics/phone-screenshots/6.jpg differ diff --git a/android/app/src/google/play/listings/bn/short-description.txt b/android/app/src/google/play/listings/bn/short-description.txt deleted file mode 100644 index aac6a2300..000000000 --- a/android/app/src/google/play/listings/bn/short-description.txt +++ /dev/null @@ -1 +0,0 @@ -সহজ মানচিত্র নেভিগেশন - আপনার যাত্রা সম্পর্কে আরও জানুন - সম্প্রদায় কর্তৃক পরিচালিত diff --git a/android/app/src/google/play/listings/bn/title.txt b/android/app/src/google/play/listings/bn/title.txt deleted file mode 100644 index 17ed9d481..000000000 --- a/android/app/src/google/play/listings/bn/title.txt +++ /dev/null @@ -1 +0,0 @@ -CoMaps - গোপনীয়তা সহ যাতায়াত diff --git a/android/app/src/google/play/listings/es-ES/short-description.txt b/android/app/src/google/play/listings/es-ES/short-description.txt index f45617084..7efd0a405 100644 --- a/android/app/src/google/play/listings/es-ES/short-description.txt +++ b/android/app/src/google/play/listings/es-ES/short-description.txt @@ -1 +1 @@ -Navegación de mapa fácil - Descubre más en tu camino - Creado por la comunidad +Navegación sencilla - Descubre más en tu camino - Creado por la comunidad diff --git a/android/app/src/google/play/listings/fr-FR/short-description.txt b/android/app/src/google/play/listings/fr-FR/short-description.txt index 1acd0ceac..5bf915b47 100644 --- a/android/app/src/google/play/listings/fr-FR/short-description.txt +++ b/android/app/src/google/play/listings/fr-FR/short-description.txt @@ -1 +1 @@ -Navigation cartographique facile - Vivez de grands voyages - Propulsé par la communauté +Navigation facile - Vivez de grands voyages - Propulsé par la communauté diff --git a/android/app/src/google/play/listings/fr-FR/title.txt b/android/app/src/google/play/listings/fr-FR/title.txt index fbd0ac023..f79ff4b27 100644 --- a/android/app/src/google/play/listings/fr-FR/title.txt +++ b/android/app/src/google/play/listings/fr-FR/title.txt @@ -1 +1 @@ -CoMaps - Naviguer sans suivi +CoMaps - Naviguez tranquille diff --git a/android/app/src/google/play/listings/hu-HU/full-description.txt b/android/app/src/google/play/listings/hu-HU/full-description.txt new file mode 100644 index 000000000..7c4aa6711 --- /dev/null +++ b/android/app/src/google/play/listings/hu-HU/full-description.txt @@ -0,0 +1,36 @@ +Egy közösség által létrehozott és működtetett, ingyenes és nyílt forráskódú térképalkalmazás, amely az OpenStreetMap adatain alapul, és amelynek alapelvei a átláthatóság, az adatvédelem és a nonprofit működés. + +Csatlakozz a közösséghez, és segíts a legjobb térképalkalmazás létrehozásában! +• Használd az alkalmazást, és terjesszd a hírt róla! +• Adj visszajelzést, és jelentsd a problémákat! +• Frissítsd a térképadatokat az alkalmazásban vagy az OpenStreetMap weboldalon! + +Visszajelzéseid és az 5 csillagos értékelésed a legjobb támogatás számunkra! + +‣ Egyszerű és kifinomult: alapvető, könnyen használható funkciók, amelyek egyszerűen működnek. +‣ Offline-központú: Tervezd meg és navigálj a külföldi útjaidon mobilhálózat igénybevétele nélkül, keress útvonalpontokat távoli túrákon stb. Az alkalmazás összes funkciója úgy lett kialakítva, hogy internetkapcsolat nélkül is működjön. +‣ Tiszteletben tartja a magánéletet: Az alkalmazás a magánélet tiszteletben tartásával lett kialakítva. Nem azonosítja az embereket, nem követi nyomon őket és nem gyűjt személyes adatokat. Reklámmentes. +‣ Kíméli az akkumulátort és helytakarékos: Nem meríti le az akkumulátort, mint más navigációs alkalmazások. A kisméretű, jól összeállított térképek értékes helyet takarítanak meg a telefonon. +‣ Ingyenes és a közösség által fejlesztett: A hozzád hasonló emberek segítettek az alkalmazás fejlesztésében azzal, hogy helyeket adtak hozzá az OpenStreetMaphez, tesztelték és visszajelzéseket adtak a funkciókról, valamint fejlesztői ismereteikkel és a pénzükkel is hozzájárultak a fejlesztéshez. +‣ Nyílt és átlátható döntéshozatal és pénzügyek, nonprofit és teljesen nyílt forráskódú. + +<Főbb jellemzők: +• Letölthető részletes térképek olyan helyekkel, amelyek nem érhetők el a Google Maps-en +• Kültéri mód kiemelt túraútvonalakkal, kempingekkel, vízforrásokkal, csúcsokkal, kontúrvonalakkal, stb. +• Túraútvonalak és kerékpárutak +• Érdekes helyek, például éttermek, benzinkutak, szállodák, üzletek, látnivalók és még sok más +• Keresés név, cím vagy érdekes hely kategória szerint +• Hangos navigáció gyalogos, kerékpáros vagy autós utazáshoz +• Kedvenc helyeid könyvjelzővel láthatod el egyetlen érintéssel +• Offline Wikipedia cikkek +• Metró közlekedési réteg és útvonalak +• Útvonalrögzítés +• Könyvjelzők és útvonalak exportálása és importálása KML, KMZ, GPX formátumokban +• Sötét mód éjszakai használatra +• A beépített alapszerkesztővel mindenki javíthatja a térképadatokat +• Android Auto támogatás + +Kérjük, jelentsd az alkalmazással kapcsolatos problémákat, javasolj ötleteket, és csatlakozz közösségünkhöz a comaps.app weboldalon. + +Itt van a szabadság +Fedezd fel utadat, navigálj a világban úgy, hogy az adatvédelem és a közösség kerüljön előtérbe! diff --git a/android/app/src/google/play/listings/hu-HU/short-description.txt b/android/app/src/google/play/listings/hu-HU/short-description.txt index e818f3e16..b028d6bf2 100644 --- a/android/app/src/google/play/listings/hu-HU/short-description.txt +++ b/android/app/src/google/play/listings/hu-HU/short-description.txt @@ -1 +1 @@ -Könnyű térképes navigáció - Fedezz fel többet az útjaidról - A közösség erejével +Egyszerű térképnavigáció – Fedezze fel utazását – A közösség támogatásával diff --git a/android/app/src/google/play/listings/ia/short-description.txt b/android/app/src/google/play/listings/ia/short-description.txt deleted file mode 100644 index df5517d58..000000000 --- a/android/app/src/google/play/listings/ia/short-description.txt +++ /dev/null @@ -1 +0,0 @@ -Navigation facile del mappa – Discoperi tu viage – Alimentate per le communitate diff --git a/android/app/src/google/play/listings/ia/title.txt b/android/app/src/google/play/listings/ia/title.txt deleted file mode 100644 index 3d7c0ec50..000000000 --- a/android/app/src/google/play/listings/ia/title.txt +++ /dev/null @@ -1 +0,0 @@ -CoMaps – Naviga private diff --git a/android/app/src/google/play/listings/lv/short-description.txt b/android/app/src/google/play/listings/lv/short-description.txt new file mode 100644 index 000000000..34e743746 --- /dev/null +++ b/android/app/src/google/play/listings/lv/short-description.txt @@ -0,0 +1 @@ +Vienkārša kartes navigācija - Atklāj vairāk par savu ceļojumu - Darbina kopiena diff --git a/android/app/src/google/play/listings/lv/title.txt b/android/app/src/google/play/listings/lv/title.txt new file mode 100644 index 000000000..40f64761e --- /dev/null +++ b/android/app/src/google/play/listings/lv/title.txt @@ -0,0 +1 @@ +CoMaps - kartes ar privātumu diff --git a/android/app/src/google/play/listings/ml-IN/title.txt b/android/app/src/google/play/listings/ml-IN/title.txt index 970488d93..35e6d43be 100644 --- a/android/app/src/google/play/listings/ml-IN/title.txt +++ b/android/app/src/google/play/listings/ml-IN/title.txt @@ -1 +1 @@ -കോമാപ്പ്സ് - സ്വകാര്യതയോടെ സഞ്ചരിക്കൂ +CoMaps - ഓഫ്‌ലൈൻ നാവിഗേഷൻ diff --git a/android/app/src/google/play/listings/pl-PL/title.txt b/android/app/src/google/play/listings/pl-PL/title.txt index 62c8f3993..a700a50b9 100644 --- a/android/app/src/google/play/listings/pl-PL/title.txt +++ b/android/app/src/google/play/listings/pl-PL/title.txt @@ -1 +1 @@ -CoMaps - Nawigacja szanująca prywatność +CoMaps – Nawigacja offline diff --git a/android/app/src/google/play/listings/ro/full-description.txt b/android/app/src/google/play/listings/ro/full-description.txt new file mode 100644 index 000000000..a401198e9 --- /dev/null +++ b/android/app/src/google/play/listings/ro/full-description.txt @@ -0,0 +1,36 @@ +O aplicație de hărți gratuită & open source, condusă de comunitate, bazată pe date OpenStreetMap și susținută de angajamentul față de transparență, confidențialitate și statutul non-profit. + +Alătură-te comunității și ajută la crearea celei mai bune aplicații de hărți +• Folosește aplicația și promovează-o +• Oferă feedback și raportează probleme +• Actualizează datele hărții în aplicație sau pe site-ul OpenStreetMap + +Feedback-ul și recenziile tale cu 5 stele sunt cel mai bun sprijin pentru noi! + +‣ Simplă și Rafinată: funcții esențiale, ușor de utilizat, care pur și simplu funcționează. +‣ Focusată pe Modul Offline: Planifică-ți și navighează-ți călătoria în străinătate fără nevoia unui serviciu cellular, caută waypoint-uri în timpul unei drumeții îndepărtate etc. Toate funcțiile aplicației sunt concepute să funcționeze offline. +‣ Respectă Confidențialitatea: Aplicația este concepută cu confidențialitatea în minte - nu identifică oamenii, nu urmărește și nu colectează informații personale. Fără reclame. +‣ Îți Economisește Bateria și Spațiul: Nu-ți golește bateria ca alte aplicații de navigație. Hărțile compacte economisesc spațiu prețios pe telefon. +‣ Gratuită și Construită de Comunitate: Oameni ca tine au contribuit la construirea aplicației prin adăugarea de locuri pe OpenStreetMap, testare și oferire de feedback privind funcțiile și contribuind cu abilități de dezvoltare și bani. +‣ Decizii și Finanțe Deschise și Transparente, Non-profit și Complet Open Source. + +Funcționalități principale: +• Hărți detaliate descărcabile cu locuri care nu sunt disponibile pe Google Maps +• Mod outdoor cu trasee de drumeție evidențiate, locuri de campat, surse de apă, vârfuri, linii de cotă etc. +• Căi pietonale și piste de biciclete +• Puncte de interes precum restaurante, benzinării, hoteluri, magazine, obiective turistice și multe altele +• Căutare după nume sau adresă sau după categoria punctului de interes +• Navigare cu anunțuri vocale pentru mers pe jos, cu bicicleta sau cu mașina +• Marchează-ți locurile preferate cu un singur click +• Articole Wikipedia offline +• Strat pentru traseul de metrou și indicații +• Înregistrare traseu +• Exportă și importă marcaje și trasee în formate KML, KMZ, GPX +• Un mod întunecat pentru utilizarea nocturnă +• Îmbunătățește datele hărții pentru toți, folosind un editor de bază încorporat +• Suport Android Auto + +Te rugăm să raportezi probleme ale aplicației, să sugerezi idei și să ni te alături comunității pe site-ul comaps.app. + +Libertatea este aici +Descoperă-ți călătoria, navighează prin lume cu confidențialitate și comunitate în prim plan! diff --git a/android/app/src/google/play/listings/ro/short-description.txt b/android/app/src/google/play/listings/ro/short-description.txt new file mode 100644 index 000000000..b68c564ac --- /dev/null +++ b/android/app/src/google/play/listings/ro/short-description.txt @@ -0,0 +1 @@ +Navigare ușoară - Descoperă mai mult din călătoria ta - Susținut de comunitate diff --git a/android/app/src/google/play/listings/ro/title.txt b/android/app/src/google/play/listings/ro/title.txt index 01944c2d0..d241d05af 100644 --- a/android/app/src/google/play/listings/ro/title.txt +++ b/android/app/src/google/play/listings/ro/title.txt @@ -1 +1 @@ -CoMaps - Navighează liniștit +CoMaps - Navighează privat diff --git a/android/app/src/google/play/listings/sk/short-description.txt b/android/app/src/google/play/listings/sk/short-description.txt new file mode 100644 index 000000000..98da94b22 --- /dev/null +++ b/android/app/src/google/play/listings/sk/short-description.txt @@ -0,0 +1 @@ +Jednoduchá navigácia - Objav viac zo svojej cesty - Funguje vďaka komunite diff --git a/android/app/src/google/play/listings/sk/title.txt b/android/app/src/google/play/listings/sk/title.txt new file mode 100644 index 000000000..d68cf9003 --- /dev/null +++ b/android/app/src/google/play/listings/sk/title.txt @@ -0,0 +1 @@ +CoMaps - Naviguj v súkromí diff --git a/android/app/src/google/play/listings/sl/short-description.txt b/android/app/src/google/play/listings/sl/short-description.txt new file mode 100644 index 000000000..f4dea63ca --- /dev/null +++ b/android/app/src/google/play/listings/sl/short-description.txt @@ -0,0 +1 @@ +Enostavna navigacija – Odkrij več o svojem potovanju – Podprto v skupnosti diff --git a/android/app/src/google/play/listings/sr/short-description.txt b/android/app/src/google/play/listings/sr/short-description.txt index 3463b97bb..3838e27f4 100644 --- a/android/app/src/google/play/listings/sr/short-description.txt +++ b/android/app/src/google/play/listings/sr/short-description.txt @@ -1 +1 @@ -Једноставна навигација - Сазнајте више о свом путовању - Ради на бази заједнице +Једноставна навигација - Сазнајте више о свом путовању - Одржава заједница diff --git a/android/app/src/google/play/release-notes b/android/app/src/google/play/release-notes deleted file mode 120000 index 4ded7b4c7..000000000 --- a/android/app/src/google/play/release-notes +++ /dev/null @@ -1 +0,0 @@ -../../fdroid/play/release-notes \ No newline at end of file diff --git a/android/app/src/main/java/app/organicmaps/ChartController.java b/android/app/src/main/java/app/organicmaps/ChartController.java index aa0af954b..8c4bd2e72 100644 --- a/android/app/src/main/java/app/organicmaps/ChartController.java +++ b/android/app/src/main/java/app/organicmaps/ChartController.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import android.view.View; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import app.organicmaps.sdk.Framework; @@ -25,9 +24,11 @@ import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.formatter.ValueFormatter; +import com.github.mikephil.charting.formatter.IAxisValueFormatter; import com.github.mikephil.charting.highlight.Highlight; import com.github.mikephil.charting.listener.OnChartValueSelectedListener; +import com.google.android.material.textview.MaterialTextView; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -55,10 +56,10 @@ public class ChartController implements OnChartValueSelectedListener private MarkerView mCurrentLocationMarkerView; @SuppressWarnings("NullableProblems") @NonNull - private TextView mMaxAltitude; + private MaterialTextView mMaxAltitude; @SuppressWarnings("NullableProblems") @NonNull - private TextView mMinAltitude; + private MaterialTextView mMinAltitude; @NonNull private final Context mContext; private long mTrackId = Utils.INVALID_ID; @@ -118,7 +119,7 @@ public class ChartController implements OnChartValueSelectedListener x.setPosition(XAxis.XAxisPosition.BOTTOM); x.setAxisLineColor(ThemeUtils.getColor(mContext, androidx.appcompat.R.attr.dividerHorizontal)); x.setAxisLineWidth(mContext.getResources().getDimensionPixelSize(R.dimen.divider_height)); - ValueFormatter xAxisFormatter = new AxisValueFormatter(mChart); + IAxisValueFormatter xAxisFormatter = new AxisValueFormatter(mChart); x.setValueFormatter(xAxisFormatter); YAxis y = mChart.getAxisLeft(); diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index 27c07690f..d10c7cc20 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -33,7 +33,6 @@ import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; -import android.widget.TextView; import android.widget.Toast; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultLauncher; @@ -133,6 +132,8 @@ import app.organicmaps.widget.placepage.PlacePageViewModel; import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.textview.MaterialTextView; + import java.util.ArrayList; import java.util.Objects; @@ -719,7 +720,7 @@ public class MwmActivity extends BaseMwmFragmentActivity if (!TextUtils.isEmpty(appName)) { setTitle(appName); - ((TextView) mPointChooser.findViewById(R.id.title)).setText(appName); + ((MaterialTextView) mPointChooser.findViewById(R.id.title)).setText(appName); } } diff --git a/android/app/src/main/java/app/organicmaps/SplashActivity.java b/android/app/src/main/java/app/organicmaps/SplashActivity.java index 2771538ff..bcd2e41b3 100644 --- a/android/app/src/main/java/app/organicmaps/SplashActivity.java +++ b/android/app/src/main/java/app/organicmaps/SplashActivity.java @@ -4,7 +4,6 @@ import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; import android.content.ComponentName; -import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; @@ -22,14 +21,12 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import app.organicmaps.downloader.DownloaderActivity; import app.organicmaps.intent.Factory; -import app.organicmaps.sdk.display.DisplayManager; import app.organicmaps.sdk.location.LocationHelper; import app.organicmaps.sdk.util.Config; import app.organicmaps.sdk.util.LocationUtils; import app.organicmaps.sdk.util.concurrency.UiThread; import app.organicmaps.sdk.util.log.Logger; import app.organicmaps.util.SharingUtils; -import app.organicmaps.util.ThemeUtils; import app.organicmaps.util.Utils; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.io.IOException; diff --git a/android/app/src/main/java/app/organicmaps/backup/BackupUtils.java b/android/app/src/main/java/app/organicmaps/backup/BackupUtils.java index 5da04b826..0db596808 100644 --- a/android/app/src/main/java/app/organicmaps/backup/BackupUtils.java +++ b/android/app/src/main/java/app/organicmaps/backup/BackupUtils.java @@ -17,7 +17,7 @@ import androidx.annotation.NonNull; import androidx.documentfile.provider.DocumentFile; import app.organicmaps.R; import app.organicmaps.sdk.util.log.Logger; -import app.organicmaps.util.UiUtils; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java index cc5476b3e..e1b293ab8 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java @@ -6,9 +6,6 @@ import android.text.InputFilter; import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; @@ -20,6 +17,7 @@ import app.organicmaps.sdk.bookmarks.data.BookmarkManager; import app.organicmaps.util.InputUtils; import app.organicmaps.util.Utils; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.google.android.material.imageview.ShapeableImageView; import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; import java.util.Objects; @@ -39,6 +37,8 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment @SuppressWarnings("NullableProblems") @NonNull private TextInputEditText mEditCategoryNameView; + @NonNull + private ShapeableImageView mSaveView; @Override public void onCreate(@Nullable Bundle savedInstanceState) @@ -85,23 +85,8 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment }); mEditDescView = root.findViewById(R.id.edit_description); mEditDescView.setText(mCategory.getDescription()); - } - - @Override - public void onCreateOptionsMenu(@NonNull Menu menu, MenuInflater inflater) - { - inflater.inflate(R.menu.menu_done, menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - if (item.getItemId() == R.id.done) - { - onEditDoneClicked(); - return true; - } - return super.onOptionsItemSelected(item); + mSaveView = root.findViewById(R.id.done); + mSaveView.setOnClickListener(v -> onEditDoneClicked()); } private void onEditDoneClicked() diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/Holders.java b/android/app/src/main/java/app/organicmaps/bookmarks/Holders.java index 749c71e78..bd9c2b3bd 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/Holders.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/Holders.java @@ -23,6 +23,8 @@ import app.organicmaps.util.UiUtils; import app.organicmaps.util.Utils; import app.organicmaps.widget.recycler.RecyclerClickListener; import app.organicmaps.widget.recycler.RecyclerLongClickListener; + +import com.google.android.material.button.MaterialButton; import com.google.android.material.checkbox.MaterialCheckBox; import com.google.android.material.imageview.ShapeableImageView; import com.google.android.material.textview.MaterialTextView; @@ -59,7 +61,7 @@ public class Holders public static class HeaderViewHolder extends RecyclerView.ViewHolder { @NonNull - private final MaterialTextView mButton; + private final MaterialButton mButton; @NonNull private final MaterialTextView mText; @@ -77,7 +79,7 @@ public class Holders } @NonNull - public MaterialTextView getButton() + public MaterialButton getButton() { return mButton; } diff --git a/android/app/src/main/java/app/organicmaps/car/util/RoutingHelpers.java b/android/app/src/main/java/app/organicmaps/car/util/RoutingHelpers.java index 345f22596..bf1553edf 100644 --- a/android/app/src/main/java/app/organicmaps/car/util/RoutingHelpers.java +++ b/android/app/src/main/java/app/organicmaps/car/util/RoutingHelpers.java @@ -1,5 +1,11 @@ package app.organicmaps.car.util; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; import androidx.annotation.NonNull; import androidx.car.app.CarContext; import androidx.car.app.model.CarIcon; @@ -31,18 +37,19 @@ public final class RoutingHelpers @NonNull public static LaneDirection createLaneDirection(@NonNull LaneWay laneWay, boolean isRecommended) { - int shape = LaneDirection.SHAPE_UNKNOWN; - shape = switch (laneWay) + @LaneDirection.Shape + final int shape = switch (laneWay) { - case REVERSE -> LaneDirection.SHAPE_U_TURN_LEFT; - case SHARP_LEFT -> LaneDirection.SHAPE_SHARP_LEFT; - case LEFT -> LaneDirection.SHAPE_NORMAL_LEFT; - case SLIGHT_LEFT, MERGE_TO_LEFT -> LaneDirection.SHAPE_SLIGHT_LEFT; - case SLIGHT_RIGHT, MERGE_TO_RIGHT -> LaneDirection.SHAPE_SLIGHT_RIGHT; - case THROUGH -> LaneDirection.SHAPE_STRAIGHT; - case RIGHT -> LaneDirection.SHAPE_NORMAL_RIGHT; - case SHARP_RIGHT -> LaneDirection.SHAPE_SHARP_RIGHT; - default -> shape; + case ReverseLeft -> LaneDirection.SHAPE_U_TURN_LEFT; + case SharpLeft -> LaneDirection.SHAPE_SHARP_LEFT; + case Left -> LaneDirection.SHAPE_NORMAL_LEFT; + case MergeToLeft, SlightLeft -> LaneDirection.SHAPE_SLIGHT_LEFT; + case Through -> LaneDirection.SHAPE_STRAIGHT; + case SlightRight, MergeToRight -> LaneDirection.SHAPE_SLIGHT_RIGHT; + case Right -> LaneDirection.SHAPE_NORMAL_RIGHT; + case SharpRight -> LaneDirection.SHAPE_SHARP_RIGHT; + case ReverseRight -> LaneDirection.SHAPE_U_TURN_RIGHT; + default -> LaneDirection.SHAPE_UNKNOWN; }; return LaneDirection.create(shape, isRecommended); @@ -73,7 +80,32 @@ public final class RoutingHelpers final Maneuver.Builder builder = new Maneuver.Builder(maneuverType); if (maneuverType == Maneuver.TYPE_ROUNDABOUT_ENTER_AND_EXIT_CCW) builder.setRoundaboutExitNumber(roundaboutExitNum > 0 ? roundaboutExitNum : 1); - builder.setIcon(new CarIcon.Builder(IconCompat.createWithResource(context, carDirection.getTurnRes())).build()); + builder.setIcon(new CarIcon.Builder(createManeuverIcon(context, carDirection, roundaboutExitNum)).build()); return builder.build(); } + + @NonNull + private static IconCompat createManeuverIcon(@NonNull final CarContext context, @NonNull CarDirection carDirection, int roundaboutExitNum) + { + if (!CarDirection.isRoundAbout(carDirection) || roundaboutExitNum == 0) + { + return IconCompat.createWithResource(context, carDirection.getTurnRes()); + } + Bitmap bitmapImmutable = BitmapFactory.decodeResource(context.getResources(), carDirection.getTurnRes()); + Bitmap bitmap = bitmapImmutable.copy(Bitmap.Config.ARGB_8888, true); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(); + paint.setColor(Color.WHITE); + paint.setTextAlign(Paint.Align.LEFT); + paint.setFakeBoldText(true); + paint.setTextSize(24); + paint.setAntiAlias(true); + String digit = String.valueOf(roundaboutExitNum); + Rect bounds = new Rect(); + paint.getTextBounds(digit, 0, 1, bounds); + float cx = canvas.getWidth() / 2f - bounds.exactCenterX(); + float cy = canvas.getHeight() / 2f - bounds.exactCenterY(); + canvas.drawText(digit, cx, cy, paint); + return IconCompat.createWithBitmap(bitmap); + } } diff --git a/android/app/src/main/java/app/organicmaps/car/util/RoutingUtils.java b/android/app/src/main/java/app/organicmaps/car/util/RoutingUtils.java index a677c5d4b..ffa01e0f9 100644 --- a/android/app/src/main/java/app/organicmaps/car/util/RoutingUtils.java +++ b/android/app/src/main/java/app/organicmaps/car/util/RoutingUtils.java @@ -13,9 +13,9 @@ import androidx.car.app.navigation.model.TravelEstimate; import androidx.car.app.navigation.model.Trip; import androidx.core.graphics.drawable.IconCompat; import app.organicmaps.sdk.bookmarks.data.MapObject; +import app.organicmaps.sdk.routing.LaneInfo; import app.organicmaps.sdk.routing.LaneWay; import app.organicmaps.sdk.routing.RoutingInfo; -import app.organicmaps.sdk.routing.SingleLaneInfo; import app.organicmaps.sdk.util.Distance; import app.organicmaps.util.Graphics; import app.organicmaps.widget.LanesDrawable; @@ -69,11 +69,12 @@ public final class RoutingUtils builder.setManeuver(RoutingHelpers.createManeuver(context, info.carDirection, info.exitNum)); if (info.lanes != null) { - for (final SingleLaneInfo laneInfo : info.lanes) + for (final LaneInfo laneInfo : info.lanes) { final Lane.Builder laneBuilder = new Lane.Builder(); - for (final LaneWay laneWay : laneInfo.mLane) - laneBuilder.addDirection(RoutingHelpers.createLaneDirection(laneWay, laneInfo.mIsActive)); + for (final LaneWay laneWay : laneInfo.mLaneWays) + laneBuilder.addDirection( + RoutingHelpers.createLaneDirection(laneWay, /* isRecommended */ laneWay == laneInfo.mActiveLaneWay)); builder.addLane(laneBuilder.build()); } final LanesDrawable lanesDrawable = new LanesDrawable(context, info.lanes); diff --git a/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java b/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java index e96b86338..b6bdde58e 100644 --- a/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java +++ b/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java @@ -378,14 +378,16 @@ class DownloaderAdapter extends RecyclerView.Adapter { if (clickOnStatus) - onDownloadActionSelected(mItem, DownloaderAdapter.this); + { + if (mItem.isExpandable()) + goDeeper(mItem, true); + else + onDownloadActionSelected(mItem, DownloaderAdapter.this); + } else processLongClick(); } - case CountryItem.STATUS_FAILED -> - { - MapManagerHelper.warn3gAndRetry(mActivity, mItem.id, null); - } + case CountryItem.STATUS_FAILED -> MapManagerHelper.warn3gAndRetry(mActivity, mItem.id, null); case CountryItem.STATUS_UPDATABLE -> MapManagerHelper.warnOn3gUpdate(mActivity, mItem.id, () -> MapManagerHelper.startUpdate(mItem.id)); default -> throw new IllegalArgumentException("Inappropriate item status: " + mItem.status); diff --git a/android/app/src/main/java/app/organicmaps/editor/EditorFragment.java b/android/app/src/main/java/app/organicmaps/editor/EditorFragment.java index 5fdad226d..e4f86fe97 100644 --- a/android/app/src/main/java/app/organicmaps/editor/EditorFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/EditorFragment.java @@ -33,6 +33,8 @@ import app.organicmaps.sdk.util.Utils; import app.organicmaps.util.Graphics; import app.organicmaps.util.InputUtils; import app.organicmaps.util.UiUtils; + +import com.google.android.material.button.MaterialButton; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.imageview.ShapeableImageView; import com.google.android.material.textfield.TextInputEditText; @@ -88,8 +90,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe private MultilanguageAdapter mNamesAdapter; private MaterialTextView mNamesCaption; - private MaterialTextView mAddLanguage; - private MaterialTextView mMoreLanguages; + private MaterialButton mAddLanguage; + private MaterialButton mMoreLanguages; private MaterialTextView mStreet; private TextInputEditText mHouseNumber; @@ -97,7 +99,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe // Define Metadata entries, that have more tricky logic, separately. private MaterialTextView mPhone; - private MaterialTextView mEditPhoneLink; + private MaterialButton mEditPhoneLink; private MaterialTextView mCuisine; private SwitchCompat mWifi; private MaterialTextView mSelfService; @@ -134,7 +136,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe private TextInputEditText mDescription; private final Map mDetailsBlocks = new HashMap<>(); private final Map mSocialMediaBlocks = new HashMap<>(); - private MaterialTextView mReset; + private MaterialButton mReset; private EditorHostFragment mParent; @@ -468,7 +470,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe View levelBlock = initBlock(view, Metadata.MetadataType.FMD_LEVEL, R.id.block_level, R.drawable.ic_level_white, R.string.editor_level, InputType.TYPE_CLASS_NUMBER); View fediverseContactBlock = - initBlock(view, Metadata.MetadataType.FMD_CONTACT_FEDIVERSE, R.id.block_fediverse, R.drawable.ic_mastodon_white, + initBlock(view, Metadata.MetadataType.FMD_CONTACT_FEDIVERSE, R.id.block_fediverse, R.drawable.ic_mastodon, R.string.mastodon, InputType.TYPE_TEXT_VARIATION_URI); View facebookContactBlock = initBlock(view, Metadata.MetadataType.FMD_CONTACT_FACEBOOK, R.id.block_facebook, R.drawable.ic_facebook_white, @@ -485,7 +487,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe initBlock(view, Metadata.MetadataType.FMD_CONTACT_LINE, R.id.block_line, R.drawable.ic_line_white, R.string.editor_line_social_network, InputType.TYPE_TEXT_VARIATION_URI); View blueskyContactBlock = - initBlock(view, Metadata.MetadataType.FMD_CONTACT_BLUESKY, R.id.block_bluesky, R.drawable.ic_bluesky_white, + initBlock(view, Metadata.MetadataType.FMD_CONTACT_BLUESKY, R.id.block_bluesky, R.drawable.ic_bluesky, R.string.bluesky, InputType.TYPE_TEXT_VARIATION_URI); View operatorBlock = initBlock(view, Metadata.MetadataType.FMD_OPERATOR, R.id.block_operator, R.drawable.ic_operator, R.string.editor_operator, 0); diff --git a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java index d6d3f2867..ebcee31da 100644 --- a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java +++ b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java @@ -66,12 +66,9 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter { return new FooterViewHolder(inflater.inflate(R.layout.item_feature_category_footer, parent, false), - (FooterListener) mFragment); - } - default -> - { - throw new IllegalArgumentException("Unsupported viewType: " + viewType); + mFragment); } + default -> throw new IllegalArgumentException("Unsupported viewType: " + viewType); } } diff --git a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java index e52abfc43..d30ac500a 100644 --- a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java @@ -4,7 +4,6 @@ import static app.organicmaps.sdk.util.Utils.getLocalizedFeatureType; import android.content.Intent; import android.os.Bundle; -import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -15,7 +14,6 @@ import androidx.annotation.Nullable; import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.base.BaseMwmRecyclerFragment; -import app.organicmaps.dialog.EditTextDialogFragment; import app.organicmaps.sdk.Framework; import app.organicmaps.sdk.editor.Editor; import app.organicmaps.sdk.editor.OsmOAuth; diff --git a/android/app/src/main/java/app/organicmaps/editor/HoursMinutesPickerFragment.java b/android/app/src/main/java/app/organicmaps/editor/HoursMinutesPickerFragment.java index 20a70d7f4..923c5f5c3 100644 --- a/android/app/src/main/java/app/organicmaps/editor/HoursMinutesPickerFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/HoursMinutesPickerFragment.java @@ -9,6 +9,7 @@ import android.text.format.DateFormat; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; +import android.widget.TextView; import android.widget.TimePicker; import androidx.annotation.IntRange; import androidx.annotation.NonNull; @@ -133,7 +134,7 @@ public class HoursMinutesPickerFragment extends BaseMwmDialogFragment if (id != 0) { mPickerHoursLabel = mPicker.findViewById(id); - if (!(mPickerHoursLabel instanceof MaterialTextView)) + if (!(mPickerHoursLabel instanceof TextView)) mPickerHoursLabel = null; } diff --git a/android/app/src/main/java/app/organicmaps/editor/OsmLoginFragment.java b/android/app/src/main/java/app/organicmaps/editor/OsmLoginFragment.java index 782f149e6..e15289b01 100644 --- a/android/app/src/main/java/app/organicmaps/editor/OsmLoginFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/OsmLoginFragment.java @@ -6,7 +6,6 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ProgressBar; import android.widget.ScrollView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -15,24 +14,16 @@ import app.organicmaps.R; import app.organicmaps.base.BaseMwmToolbarFragment; import app.organicmaps.sdk.editor.OsmOAuth; import app.organicmaps.sdk.util.Constants; -import app.organicmaps.sdk.util.DateUtils; import app.organicmaps.sdk.util.concurrency.ThreadPool; import app.organicmaps.sdk.util.concurrency.UiThread; -import app.organicmaps.util.InputUtils; -import app.organicmaps.util.UiUtils; import app.organicmaps.util.Utils; import app.organicmaps.util.WindowInsetUtils.ScrollableContentInsetsListener; import com.google.android.material.button.MaterialButton; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.google.android.material.textfield.TextInputEditText; public class OsmLoginFragment extends BaseMwmToolbarFragment { - private ProgressBar mProgress; private MaterialButton mLoginButton; - private MaterialButton mLostPasswordButton; - private TextInputEditText mLoginInput; - private TextInputEditText mPasswordInput; @Nullable @Override @@ -46,28 +37,10 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment { super.onViewCreated(view, savedInstanceState); getToolbarController().setTitle(R.string.login); - mLoginInput = view.findViewById(R.id.osm_username); - mPasswordInput = view.findViewById(R.id.osm_password); mLoginButton = view.findViewById(R.id.login); - mLostPasswordButton = view.findViewById(R.id.lost_password); MaterialButton registerButton = view.findViewById(R.id.register); registerButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_REGISTER)); - mProgress = view.findViewById(R.id.osm_login_progress); - - // TODO(@pastk): remove unused flow with users entering credentials into app's form - // Hide login and password inputs and Forgot password button - UiUtils.hide(view.findViewById(R.id.osm_username_container), view.findViewById(R.id.osm_password_container), - mLostPasswordButton); - mLoginButton.setOnClickListener((v) -> loginWithBrowser()); - /* login via in-app form - else - { - mLoginButton.setOnClickListener((v) -> login()); - mLostPasswordButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), - Constants.Url.OSM_RECOVER_PASSWORD)); - } - */ String code = readOAuth2CodeFromArguments(); if (code != null && !code.isEmpty()) @@ -86,42 +59,17 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment return arguments.getString(OsmLoginActivity.EXTRA_OAUTH2CODE); } - private void login() - { - InputUtils.hideKeyboard(mLoginInput); - final String username = mLoginInput.getText().toString().trim(); - final String password = mPasswordInput.getText().toString(); - enableInput(false); - UiUtils.show(mProgress); - mLoginButton.setText(""); - - ThreadPool.getWorker().execute(() -> { - final String oauthToken = OsmOAuth.nativeAuthWithPassword(username, password); - final String username1 = (oauthToken == null) ? null : OsmOAuth.nativeGetOsmUsername(oauthToken); - UiThread.run(() -> processAuth(oauthToken, username1)); - }); - } - private void loginWithBrowser() { Utils.openUri(requireContext(), Uri.parse(OsmOAuth.nativeGetOAuth2Url()), R.string.browser_not_available); } - private void enableInput(boolean enable) - { - mPasswordInput.setEnabled(enable); - mLoginInput.setEnabled(enable); - mLoginButton.setEnabled(enable); - mLostPasswordButton.setEnabled(enable); - } - private void processAuth(String oauthToken, String username) { if (!isAdded()) return; - enableInput(true); - UiUtils.hide(mProgress); + mLoginButton.setEnabled(true); mLoginButton.setText(R.string.login_osm); if (oauthToken == null) onAuthFail(); diff --git a/android/app/src/main/java/app/organicmaps/help/HelpFragment.java b/android/app/src/main/java/app/organicmaps/help/HelpFragment.java index c66075277..fae92db1a 100644 --- a/android/app/src/main/java/app/organicmaps/help/HelpFragment.java +++ b/android/app/src/main/java/app/organicmaps/help/HelpFragment.java @@ -17,7 +17,6 @@ import app.organicmaps.BuildConfig; import app.organicmaps.R; import app.organicmaps.base.BaseMwmFragment; import app.organicmaps.sdk.Framework; -import app.organicmaps.sdk.util.Config; import app.organicmaps.sdk.util.Constants; import app.organicmaps.sdk.util.DateUtils; import app.organicmaps.util.Graphics; @@ -58,18 +57,17 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene Linkify.addLinks(osmPresentationView, Linkify.WEB_URLS); } + setupItem(R.id.faq, true, root); setupItem(R.id.news, true, root); setupItem(R.id.web, true, root); - setupItem(R.id.email, true, root); - setupItem(R.id.code_repo, false, root); - setupItem(R.id.telegram, false, root); - setupItem(R.id.instagram, false, root); - setupItem(R.id.facebook, false, root); - // setupItem(R.id.twitter, true, root); + setupItem(R.id.code_repo, true, root); + setupItem(R.id.mastodon, true, root); setupItem(R.id.matrix, true, root); - setupItem(R.id.mastodon, false, root); + setupItem(R.id.lemmy, true, root); + setupItem(R.id.bluesky, true, root); + setupItem(R.id.pixelfed, true, root); setupItem(R.id.openstreetmap, true, root); - setupItem(R.id.faq, true, root); + setupItem(R.id.email, true, root); setupItem(R.id.report, isLandscape, root); setupItem(R.id.copyright, false, root); @@ -120,18 +118,16 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene Utils.sendTo(requireContext(), BuildConfig.SUPPORT_MAIL, getString(R.string.project_name)); else if (id == R.id.code_repo) Utils.openUrl(requireActivity(), Constants.Url.CODE_REPO); - else if (id == R.id.telegram) - Utils.openUrl(requireActivity(), getString(R.string.telegram_url)); - else if (id == R.id.instagram) - Utils.openUrl(requireActivity(), getString(R.string.instagram_url)); - else if (id == R.id.facebook) - Utils.showFacebookPage(requireActivity()); - // else if (id == R.id.twitter) - // Utils.openUrl(requireActivity(), Constants.Url.TWITTER); - else if (id == R.id.matrix) - Utils.openUrl(requireActivity(), Constants.Url.MATRIX); else if (id == R.id.mastodon) Utils.openUrl(requireActivity(), Constants.Url.MASTODON); + else if (id == R.id.matrix) + Utils.openUrl(requireActivity(), Constants.Url.MATRIX); + else if (id == R.id.lemmy) + Utils.openUrl(requireActivity(), Constants.Url.LEMMY); + else if (id == R.id.bluesky) + Utils.openUrl(requireActivity(), Constants.Url.BLUESKY); + else if (id == R.id.pixelfed) + Utils.openUrl(requireActivity(), Constants.Url.PIXELFED); else if (id == R.id.openstreetmap) Utils.openUrl(requireActivity(), getString(R.string.osm_wiki_about_url)); else if (id == R.id.faq) diff --git a/android/app/src/main/java/app/organicmaps/maplayer/LayerHolder.java b/android/app/src/main/java/app/organicmaps/maplayer/LayerHolder.java index a348ff8ef..ab75e58f4 100644 --- a/android/app/src/main/java/app/organicmaps/maplayer/LayerHolder.java +++ b/android/app/src/main/java/app/organicmaps/maplayer/LayerHolder.java @@ -2,10 +2,12 @@ package app.organicmaps.maplayer; import android.view.View; import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.textview.MaterialTextView; + import app.organicmaps.R; import app.organicmaps.adapter.OnItemClickListener; @@ -14,7 +16,7 @@ class LayerHolder extends RecyclerView.ViewHolder @NonNull final ImageView mButton; @NonNull - final TextView mTitle; + final MaterialTextView mTitle; @NonNull final View mNewMarker; @Nullable diff --git a/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java b/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java index 02ed48520..28e760076 100644 --- a/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java +++ b/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java @@ -38,7 +38,6 @@ import app.organicmaps.sdk.routing.RoutingController; import app.organicmaps.sdk.util.Config; import app.organicmaps.util.ThemeUtils; import app.organicmaps.util.UiUtils; -import app.organicmaps.util.Utils; import app.organicmaps.util.WindowInsetUtils; import app.organicmaps.widget.menu.MyPositionButton; import app.organicmaps.widget.placepage.PlacePageViewModel; diff --git a/android/app/src/main/java/app/organicmaps/routing/ManageRouteBottomSheet.java b/android/app/src/main/java/app/organicmaps/routing/ManageRouteBottomSheet.java index 8e7349a04..5f3336033 100644 --- a/android/app/src/main/java/app/organicmaps/routing/ManageRouteBottomSheet.java +++ b/android/app/src/main/java/app/organicmaps/routing/ManageRouteBottomSheet.java @@ -9,7 +9,6 @@ import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import androidx.annotation.NonNull; @@ -27,6 +26,7 @@ import app.organicmaps.util.UiUtils; import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.button.MaterialButton; import com.google.android.material.divider.MaterialDividerItemDecoration; import java.util.ArrayList; @@ -42,10 +42,10 @@ public class ManageRouteBottomSheet { View v = inflater.inflate(R.layout.manage_route_bottom_sheet, container, false); - Button cancelButton = v.findViewById(R.id.btn__cancel); + MaterialButton cancelButton = v.findViewById(R.id.btn__cancel); cancelButton.setOnClickListener(this); - Button planButton = v.findViewById(R.id.btn__plan); + MaterialButton planButton = v.findViewById(R.id.btn__plan); planButton.setOnClickListener(this); mMyLocationImageView = v.findViewById(R.id.image_my_location); diff --git a/android/app/src/main/java/app/organicmaps/routing/NavigationController.java b/android/app/src/main/java/app/organicmaps/routing/NavigationController.java index e3a6bea9a..7ca7e557f 100644 --- a/android/app/src/main/java/app/organicmaps/routing/NavigationController.java +++ b/android/app/src/main/java/app/organicmaps/routing/NavigationController.java @@ -31,7 +31,6 @@ import app.organicmaps.widget.LanesView; import app.organicmaps.widget.SpeedLimitView; import app.organicmaps.widget.menu.NavMenu; import com.google.android.material.bottomsheet.BottomSheetBehavior; -import com.google.android.material.imageview.ShapeableImageView; import com.google.android.material.textview.MaterialTextView; public class NavigationController implements TrafficManager.TrafficCallback, NavMenu.NavMenuListener diff --git a/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java b/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java index a9de92638..86e8a2125 100644 --- a/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java +++ b/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java @@ -20,9 +20,7 @@ import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; import android.view.View; import android.widget.Button; -import android.widget.ImageView; import android.widget.ScrollView; -import android.widget.TextView; import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -68,15 +66,15 @@ final class RoutingBottomMenuController implements View.OnClickListener @NonNull private final MaterialTextView mError; @NonNull - private final Button mStart; + private final MaterialButton mStart; @NonNull - private final ImageView mAltitudeChart; + private final ShapeableImageView mAltitudeChart; @NonNull private final MaterialTextView mTime; @NonNull private final MaterialTextView mAltitudeDifference; @NonNull - private final TextView mTimeVehicle; + private final MaterialTextView mTimeVehicle; @Nullable private final MaterialTextView mArrival; @NonNull @@ -101,10 +99,10 @@ final class RoutingBottomMenuController implements View.OnClickListener View timeElevationLine = getViewById(activity, frame, R.id.time_elevation_line); View transitFrame = getViewById(activity, frame, R.id.transit_panel); MaterialTextView error = (MaterialTextView) getViewById(activity, frame, R.id.error); - Button start = (Button) getViewById(activity, frame, R.id.start); - ImageView altitudeChart = (ImageView) getViewById(activity, frame, R.id.altitude_chart); + MaterialButton start = (MaterialButton) getViewById(activity, frame, R.id.start); + ShapeableImageView altitudeChart = (ShapeableImageView) getViewById(activity, frame, R.id.altitude_chart); MaterialTextView time = (MaterialTextView) getViewById(activity, frame, R.id.time); - TextView timeVehicle = (TextView) getViewById(activity, frame, R.id.time_vehicle); + MaterialTextView timeVehicle = (MaterialTextView) getViewById(activity, frame, R.id.time_vehicle); MaterialTextView altitudeDifference = (MaterialTextView) getViewById(activity, frame, R.id.altitude_difference); MaterialTextView arrival = (MaterialTextView) getViewById(activity, frame, R.id.arrival); View actionFrame = getViewById(activity, frame, R.id.routing_action_frame); @@ -123,9 +121,9 @@ final class RoutingBottomMenuController implements View.OnClickListener private RoutingBottomMenuController(@NonNull Activity context, @NonNull View altitudeChartFrame, @NonNull View timeElevationLine, @NonNull View transitFrame, - @NonNull MaterialTextView error, @NonNull Button start, - @NonNull ImageView altitudeChart, @NonNull MaterialTextView time, - @NonNull MaterialTextView altitudeDifference, @NonNull TextView timeVehicle, + @NonNull MaterialTextView error, @NonNull MaterialButton start, + @NonNull ShapeableImageView altitudeChart, @NonNull MaterialTextView time, + @NonNull MaterialTextView altitudeDifference, @NonNull MaterialTextView timeVehicle, @Nullable MaterialTextView arrival, @NonNull View actionFrame, @Nullable RoutingBottomMenuListener listener) { diff --git a/android/app/src/main/java/app/organicmaps/routing/RoutingErrorDialogFragment.java b/android/app/src/main/java/app/organicmaps/routing/RoutingErrorDialogFragment.java index 66c4f5bc1..510890071 100644 --- a/android/app/src/main/java/app/organicmaps/routing/RoutingErrorDialogFragment.java +++ b/android/app/src/main/java/app/organicmaps/routing/RoutingErrorDialogFragment.java @@ -16,7 +16,6 @@ import androidx.fragment.app.FragmentManager; import app.organicmaps.R; import app.organicmaps.downloader.MapManagerHelper; import app.organicmaps.sdk.downloader.CountryItem; -import app.organicmaps.sdk.downloader.MapManager; import app.organicmaps.util.UiUtils; import com.google.android.material.textview.MaterialTextView; diff --git a/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java b/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java index 926bb34ae..2ce0bbc90 100644 --- a/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java +++ b/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java @@ -6,13 +6,15 @@ import android.os.Bundle; import android.view.View; import android.widget.CompoundButton; import android.widget.RadioGroup; -import android.widget.TextView; import androidx.activity.result.ActivityResultLauncher; import androidx.annotation.DrawableRes; import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; + +import com.google.android.material.textview.MaterialTextView; + import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.sdk.Framework; @@ -319,7 +321,7 @@ public class RoutingPlanController extends ToolbarController UiUtils.show(mDrivingOptionsBtnContainer); boolean hasAnyOptions = RoutingOptions.hasAnyOptions() && !isRulerType(); UiUtils.showIf(hasAnyOptions, mDrivingOptionsImage); - TextView title = mDrivingOptionsBtnContainer.findViewById(R.id.driving_options_btn_title); + MaterialTextView title = mDrivingOptionsBtnContainer.findViewById(R.id.driving_options_btn_title); title.setText(hasAnyOptions ? R.string.change_driving_options_btn : R.string.define_to_avoid_btn); } diff --git a/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java b/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java index 658d6d53d..53d80fc89 100644 --- a/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java +++ b/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java @@ -8,13 +8,15 @@ import android.content.res.Resources; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.DrawableRes; import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.annotation.StringRes; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.textview.MaterialTextView; + import app.organicmaps.R; import app.organicmaps.sdk.search.DisplayedCategories; import app.organicmaps.sdk.util.Language; @@ -112,7 +114,7 @@ class CategoriesAdapter extends RecyclerView.Adapter processClick(mResult, mOrder)); } @@ -56,7 +58,7 @@ class SearchAdapter extends RecyclerView.Adapter 0; diff --git a/android/app/src/main/java/app/organicmaps/widget/LanesView.java b/android/app/src/main/java/app/organicmaps/widget/LanesView.java index 6198fd268..0342d4593 100644 --- a/android/app/src/main/java/app/organicmaps/widget/LanesView.java +++ b/android/app/src/main/java/app/organicmaps/widget/LanesView.java @@ -16,7 +16,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StyleableRes; import app.organicmaps.R; -import app.organicmaps.sdk.routing.SingleLaneInfo; +import app.organicmaps.sdk.routing.LaneInfo; +import app.organicmaps.sdk.routing.LaneWay; public class LanesView extends View { @@ -77,7 +78,7 @@ public class LanesView extends View mBackgroundPaint.setColor(backgroundColor); } - public void setLanes(@Nullable SingleLaneInfo[] lanes) + public void setLanes(@Nullable LaneInfo[] lanes) { if (lanes == null || lanes.length == 0) mLanesDrawable = null; @@ -157,16 +158,16 @@ public class LanesView extends View private void createLanesForEditMode(int lanesCount) { - final SingleLaneInfo[] lanes = new SingleLaneInfo[lanesCount]; - lanes[0] = new SingleLaneInfo(new byte[] {1}, false); + final LaneInfo[] lanes = new LaneInfo[lanesCount]; + lanes[0] = new LaneInfo(new LaneWay[] {LaneWay.ReverseLeft, LaneWay.Left}, LaneWay.None); if (lanes.length > 1) - lanes[1] = new SingleLaneInfo(new byte[] {3}, false); + lanes[1] = new LaneInfo(new LaneWay[] {LaneWay.SharpLeft, LaneWay.Left, LaneWay.Through}, LaneWay.None); for (int i = 2; i <= lanes.length - 1; i++) - lanes[i] = new SingleLaneInfo(new byte[] {0}, true); + lanes[i] = new LaneInfo(new LaneWay[] {LaneWay.Through, LaneWay.Left}, LaneWay.Through); if (lanes.length > 2) - lanes[lanes.length - 2] = new SingleLaneInfo(new byte[] {8}, false); + lanes[lanes.length - 2] = new LaneInfo(new LaneWay[] {LaneWay.SlightRight, LaneWay.Right}, LaneWay.SlightRight); if (lanes.length > 3) - lanes[lanes.length - 1] = new SingleLaneInfo(new byte[] {9}, false); + lanes[lanes.length - 1] = new LaneInfo(new LaneWay[] {LaneWay.ReverseRight}, LaneWay.None); setLanes(lanes); } diff --git a/android/app/src/main/java/app/organicmaps/widget/PlaceholderView.java b/android/app/src/main/java/app/organicmaps/widget/PlaceholderView.java index 0655bec5a..5f929ac2d 100644 --- a/android/app/src/main/java/app/organicmaps/widget/PlaceholderView.java +++ b/android/app/src/main/java/app/organicmaps/widget/PlaceholderView.java @@ -6,13 +6,15 @@ import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; -import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.TextView; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; + +import com.google.android.material.imageview.ShapeableImageView; +import com.google.android.material.textview.MaterialTextView; + import app.organicmaps.R; import app.organicmaps.util.UiUtils; @@ -20,15 +22,15 @@ public class PlaceholderView extends LinearLayout { @SuppressWarnings("NullableProblems") @NonNull - private ImageView mImage; + private ShapeableImageView mImage; @SuppressWarnings("NullableProblems") @NonNull - private TextView mTitle; + private MaterialTextView mTitle; @SuppressWarnings("NullableProblems") @NonNull - private TextView mSubtitle; + private MaterialTextView mSubtitle; private int mImgMaxHeight; private int mImgMinHeight; diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java b/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java index 0543be12b..c305bda6e 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java @@ -3,22 +3,23 @@ package app.organicmaps.widget.placepage; import androidx.annotation.NonNull; import app.organicmaps.sdk.util.StringUtils; import com.github.mikephil.charting.charts.BarLineChartBase; -import com.github.mikephil.charting.formatter.DefaultValueFormatter; +import androidx.annotation.Nullable; +import com.github.mikephil.charting.components.AxisBase; +import com.github.mikephil.charting.formatter.IAxisValueFormatter; -public class AxisValueFormatter extends DefaultValueFormatter +public class AxisValueFormatter implements IAxisValueFormatter { - private static final int DEF_DIGITS = 1; @NonNull private final BarLineChartBase mChart; public AxisValueFormatter(@NonNull BarLineChartBase chart) { - super(DEF_DIGITS); + super(); mChart = chart; } @Override - public String getFormattedValue(float value) + public String getFormattedValue(float value, @Nullable AxisBase axisBase) { return StringUtils.nativeFormatDistance(value).toString(mChart.getContext()); } diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/ElevationProfileViewRenderer.java b/android/app/src/main/java/app/organicmaps/widget/placepage/ElevationProfileViewRenderer.java index fb25738b7..b22cab5db 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/ElevationProfileViewRenderer.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/ElevationProfileViewRenderer.java @@ -3,10 +3,12 @@ package app.organicmaps.widget.placepage; import android.content.Context; import android.view.View; import android.widget.RelativeLayout; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.widget.NestedScrollView; + +import com.google.android.material.textview.MaterialTextView; + import app.organicmaps.ChartController; import app.organicmaps.R; import app.organicmaps.sdk.Framework; @@ -29,22 +31,22 @@ public class ElevationProfileViewRenderer implements PlacePageStateListener private NestedScrollView mScrollView; @SuppressWarnings("NullableProblems") @NonNull - private TextView mTitle; + private MaterialTextView mTitle; @SuppressWarnings("NullableProblems") @NonNull - private TextView mAscent; + private MaterialTextView mAscent; @SuppressWarnings("NullableProblems") @NonNull - private TextView mDescent; + private MaterialTextView mDescent; @SuppressWarnings("NullableProblems") @NonNull - private TextView mMaxAltitude; + private MaterialTextView mMaxAltitude; @SuppressWarnings("NullableProblems") @NonNull - private TextView mMinAltitude; + private MaterialTextView mMinAltitude; @SuppressWarnings("NullableProblems") @NonNull - private TextView mTime; + private MaterialTextView mTime; @SuppressWarnings("NullableProblems") @NonNull private ChartController mChartController; diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/FloatingMarkerView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/FloatingMarkerView.java index d31e70030..3222840c5 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/FloatingMarkerView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/FloatingMarkerView.java @@ -8,7 +8,6 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import app.organicmaps.R; @@ -19,6 +18,7 @@ import com.github.mikephil.charting.components.IMarker; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.highlight.Highlight; import com.github.mikephil.charting.utils.MPPointF; +import com.google.android.material.textview.MaterialTextView; @SuppressLint("ViewConstructor") public class FloatingMarkerView extends RelativeLayout implements IMarker @@ -34,10 +34,10 @@ public class FloatingMarkerView extends RelativeLayout implements IMarker private View mInfoFloatingContainer; @SuppressWarnings("NullableProblems") @NonNull - private TextView mAltitudeView; + private MaterialTextView mAltitudeView; @SuppressWarnings("NullableProblems") @NonNull - private TextView mDistanceValueView; + private MaterialTextView mDistanceValueView; @SuppressWarnings("NullableProblems") @NonNull private View mFloatingTriangle; diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java index bd29be8e0..e4c86bc19 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java @@ -6,6 +6,7 @@ import static app.organicmaps.sdk.util.Utils.getLocalizedFeatureType; import static app.organicmaps.sdk.util.Utils.getTagValueLocalized; import android.content.Context; +import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; import android.location.Location; import android.net.Uri; @@ -17,7 +18,6 @@ import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import androidx.activity.result.ActivityResultLauncher; @@ -79,6 +79,7 @@ import app.organicmaps.widget.placepage.sections.PlacePageTrackFragment; import app.organicmaps.widget.placepage.sections.PlacePageWikipediaFragment; import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.button.MaterialButton; +import com.google.android.material.imageview.ShapeableImageView; import com.google.android.material.textview.MaterialTextView; import java.time.Instant; import java.time.ZoneId; @@ -148,9 +149,9 @@ public class PlacePageView extends Fragment private View mAddOrganisation; private View mAddPlace; private View mEditTopSpace; - private ImageView mColorIcon; + private ShapeableImageView mColorIcon; private MaterialTextView mTvCategory; - private ImageView mEditBookmark; + private ShapeableImageView mEditBookmark; // Data private CoordinatesFormat mCoordsFormat = CoordinatesFormat.LatLonDecimal; @@ -310,11 +311,8 @@ public class PlacePageView extends Fragment mTvEntrance = mEntrance.findViewById(R.id.tv__place_entrance); mTvLastChecked = mFrame.findViewById(R.id.place_page_last_checked); mEditPlace = mFrame.findViewById(R.id.ll__place_editor); - mEditPlace.setOnClickListener(this); mAddOrganisation = mFrame.findViewById(R.id.ll__add_organisation); - mAddOrganisation.setOnClickListener(this); mAddPlace = mFrame.findViewById(R.id.ll__place_add); - mAddPlace.setOnClickListener(this); mEditTopSpace = mFrame.findViewById(R.id.edit_top_space); latlon.setOnLongClickListener(this); address.setOnLongClickListener(this); @@ -681,12 +679,15 @@ public class PlacePageView extends Fragment UiUtils.showIf(Editor.nativeShouldShowEditPlace(), mEditPlace); UiUtils.showIf(Editor.nativeShouldShowAddBusiness(), mAddOrganisation); UiUtils.showIf(Editor.nativeShouldShowAddPlace(), mAddPlace); - mEditPlace.setEnabled(Editor.nativeShouldEnableEditPlace()); - mAddOrganisation.setEnabled(Editor.nativeShouldEnableAddPlace()); - mAddPlace.setEnabled(Editor.nativeShouldEnableAddPlace()); - MaterialTextView mTvEditPlace = mEditPlace.findViewById(R.id.tv__editor); - MaterialTextView mTvAddBusiness = mAddPlace.findViewById(R.id.tv__editor); - MaterialTextView mTvAddPlace = mAddPlace.findViewById(R.id.tv__editor); + MaterialButton mTvEditPlace = mEditPlace.findViewById(R.id.mb__place_editor); + MaterialButton mTvAddBusiness = mAddOrganisation.findViewById(R.id.mb__add_organisation); + MaterialButton mTvAddPlace = mAddPlace.findViewById(R.id.mb__place_add); + mTvEditPlace.setOnClickListener(this); + mTvAddBusiness.setOnClickListener(this); + mTvAddPlace.setOnClickListener(this); + mTvEditPlace.setEnabled(Editor.nativeShouldEnableEditPlace()); + mTvAddBusiness.setEnabled(Editor.nativeShouldEnableAddPlace()); + mTvAddPlace.setEnabled(Editor.nativeShouldEnableAddPlace()); final int editPlaceButtonColor = Editor.nativeShouldEnableEditPlace() ? ContextCompat.getColor( @@ -696,6 +697,9 @@ public class PlacePageView extends Fragment mTvEditPlace.setTextColor(editPlaceButtonColor); mTvAddBusiness.setTextColor(editPlaceButtonColor); mTvAddPlace.setTextColor(editPlaceButtonColor); + mTvEditPlace.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor)); + mTvAddBusiness.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor)); + mTvAddPlace.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor)); UiUtils.showIf( UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddOrganisation) || UiUtils.isVisible(mAddPlace), mEditTopSpace); @@ -853,11 +857,11 @@ public class PlacePageView extends Fragment // A workaround to make single taps toggle the bottom sheet. mPlacePageViewListener.onPlacePageRequestToggleState(); } - else if (id == R.id.ll__place_editor) + else if (id == R.id.mb__place_editor) ((MwmActivity) requireActivity()).showEditor(); - else if (id == R.id.ll__add_organisation) + else if (id == R.id.mb__add_organisation) addOrganisation(); - else if (id == R.id.ll__place_add) + else if (id == R.id.mb__place_add) addPlace(); else if (id == R.id.ll__place_latlon) { diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageViewModel.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageViewModel.java index a5e7cded0..4f31f2739 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageViewModel.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageViewModel.java @@ -3,10 +3,9 @@ package app.organicmaps.widget.placepage; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import app.organicmaps.sdk.bookmarks.data.Bookmark; -import app.organicmaps.sdk.bookmarks.data.ElevationInfo; + import app.organicmaps.sdk.bookmarks.data.MapObject; -import app.organicmaps.sdk.bookmarks.data.Track; + import java.util.List; public class PlacePageViewModel extends ViewModel diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageOpeningHoursFragment.java b/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageOpeningHoursFragment.java index 7165a1e10..8aa3e1cdc 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageOpeningHoursFragment.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageOpeningHoursFragment.java @@ -5,7 +5,6 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -66,7 +65,7 @@ public class PlacePageOpeningHoursFragment extends Fragment implements Observer< mFullWeekOpeningHours.setAdapter(mOpeningHoursAdapter); } - private static void setOrHideLastCheckedDate(MapObject mapObject, Resources resources, TextView checkDateView) + private static void setOrHideLastCheckedDate(MapObject mapObject, Resources resources, MaterialTextView checkDateView) { final String checkDate = mapObject.getMetadata(Metadata.MetadataType.FMD_CHECK_DATE_OPEN_HOURS); if (!checkDate.isEmpty()) diff --git a/android/app/src/main/res/drawable-hdpi/ic_entrance.webp b/android/app/src/main/res/drawable-hdpi/ic_entrance.webp deleted file mode 100644 index b2eb86c1d..000000000 Binary files a/android/app/src/main/res/drawable-hdpi/ic_entrance.webp and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_entrance.webp b/android/app/src/main/res/drawable-mdpi/ic_entrance.webp deleted file mode 100644 index 5bcc1fd15..000000000 Binary files a/android/app/src/main/res/drawable-mdpi/ic_entrance.webp and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_entrance.webp b/android/app/src/main/res/drawable-xhdpi/ic_entrance.webp deleted file mode 100644 index 0183eec9b..000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/ic_entrance.webp and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_entrance.webp b/android/app/src/main/res/drawable-xxhdpi/ic_entrance.webp deleted file mode 100644 index 7fd9a719a..000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/ic_entrance.webp and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_entrance.webp b/android/app/src/main/res/drawable-xxxhdpi/ic_entrance.webp deleted file mode 100644 index 9c5ea50f1..000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/ic_entrance.webp and /dev/null differ diff --git a/android/app/src/main/res/drawable/ic_bluesky.xml b/android/app/src/main/res/drawable/ic_bluesky.xml new file mode 100644 index 000000000..37186b5db --- /dev/null +++ b/android/app/src/main/res/drawable/ic_bluesky.xml @@ -0,0 +1,11 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_bluesky_white.xml b/android/app/src/main/res/drawable/ic_bluesky_white.xml deleted file mode 100644 index c4471a56d..000000000 --- a/android/app/src/main/res/drawable/ic_bluesky_white.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/app/src/main/res/drawable/ic_codeberg.xml b/android/app/src/main/res/drawable/ic_codeberg.xml index 9a1a85e9e..f0056006d 100644 --- a/android/app/src/main/res/drawable/ic_codeberg.xml +++ b/android/app/src/main/res/drawable/ic_codeberg.xml @@ -2,24 +2,25 @@ xmlns:aapt="http://schemas.android.com/aapt" android:width="24dp" android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> + android:viewportWidth="1024" + android:viewportHeight="1024" + android:tint="?colorControlNormal"> + android:pathData="m521.6,239c-1.3,0 -2.6,0.5 -3.4,1.2s-1.2,1.8 -0.9,2.7l197.2,739.3c95.4,-41.1 176.1,-110.3 231.3,-198.3l-420.3,-543.3c-0.8,-1 -2.3,-1.7 -3.9,-1.6z"> - - - - + + + + android:pathData="m512,0c-282.8,0 -512,229.2 -512,512 0,96.2 27.1,190.4 78.2,271.9l426.9,-551.9c3.1,-4 10.8,-4 13.9,0l426.9,551.9c51.1,-81.5 78.2,-175.8 78.2,-272 0,-282.8 -229.2,-512 -512,-512z" + android:fillColor="#000"/> diff --git a/android/app/src/main/res/drawable/ic_datepicker.xml b/android/app/src/main/res/drawable/ic_datepicker.xml deleted file mode 100644 index c62807e59..000000000 --- a/android/app/src/main/res/drawable/ic_datepicker.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/app/src/main/res/drawable/ic_entrance.xml b/android/app/src/main/res/drawable/ic_entrance.xml new file mode 100644 index 000000000..8fa45e677 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_entrance.xml @@ -0,0 +1,9 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_github.xml b/android/app/src/main/res/drawable/ic_github.xml deleted file mode 100644 index d97f1dfd1..000000000 --- a/android/app/src/main/res/drawable/ic_github.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml index ca96e4b5c..3d5c0bf44 100644 --- a/android/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -1,15 +1,16 @@ - + + android:pathData="m43.279,20.906a0.803,0.803 0,0 1,1.236 -0.052,16.697 16.697,0 0,1 4.243,11.142 16.697,16.697 0,0 1,-3.745 10.556,0.803 0.803,0 0,1 -1.256,-0.024l-1.726,-2.272a0.803,0.803 0,0 1,-0.008 -0.963,12.322 12.322,0 0,0 2.38,-7.297c0,-2.978 -1.052,-5.712 -2.806,-7.851a0.803,0.803 0,0 1,-0.02 -0.995z" + android:fillColor="@color/fg_app_icon_release"/> + android:pathData="m25.706,33.561a0.803,0.803 0,0 1,-0.309 -1.473l11.319,-7.12a0.803,0.803 0,0 1,1.2 0.911l-3.893,12.8a0.803,0.803 0,0 1,-1.505 0.088l-1.975,-4.475z" + android:fillColor="@color/fg_app_icon_release"/> + android:pathData="m40.381,45.466a0.803,0.803 0,0 1,-0.249 1.188,16.697 16.697,0 0,1 -8.132,2.103 16.765,16.765 0,0 1,-16.757 -16.761,16.765 16.765,0 0,1 24.215,-15.007 0.803,0.803 0,0 1,0.281 1.204l-1.702,2.24a0.803,0.803 0,0 1,-0.971 0.245,12.322 12.322,0 0,0 -5.065,-1.084 12.402,12.402 0,0 0,-12.402 12.402c0,6.847 5.559,12.402 12.402,12.402a12.322,12.322 0,0 0,5.683 -1.377,0.803 0.803,0 0,1 1.007,0.225z" + android:fillColor="@color/fg_app_icon_white"/> diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground_debug.xml b/android/app/src/main/res/drawable/ic_launcher_foreground_debug.xml new file mode 100644 index 000000000..b34750a5f --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground_debug.xml @@ -0,0 +1,22 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground_monochrome.xml b/android/app/src/main/res/drawable/ic_launcher_foreground_monochrome.xml index 982267933..956ad61f9 100644 --- a/android/app/src/main/res/drawable/ic_launcher_foreground_monochrome.xml +++ b/android/app/src/main/res/drawable/ic_launcher_foreground_monochrome.xml @@ -1,12 +1,15 @@ + android:width="64dp" + android:height="64dp" + android:viewportWidth="64" + android:viewportHeight="64"> + android:pathData="m43.279,20.906a0.803,0.803 0,0 1,1.236 -0.052,16.697 16.697,0 0,1 4.243,11.142 16.697,16.697 0,0 1,-3.745 10.556,0.803 0.803,0 0,1 -1.256,-0.024l-1.726,-2.272a0.803,0.803 0,0 1,-0.008 -0.963,12.322 12.322,0 0,0 2.38,-7.297c0,-2.978 -1.052,-5.712 -2.806,-7.851a0.803,0.803 0,0 1,-0.02 -0.995z" + android:fillColor="#BFFFFFFF"/> + android:pathData="m25.706,33.561a0.803,0.803 0,0 1,-0.309 -1.473l11.319,-7.12a0.803,0.803 0,0 1,1.2 0.911l-3.893,12.8a0.803,0.803 0,0 1,-1.505 0.088l-1.975,-4.475z" + android:fillColor="#BFFFFFFF"/> + diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground_test.xml b/android/app/src/main/res/drawable/ic_launcher_foreground_test.xml new file mode 100644 index 000000000..d00eebfe4 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground_test.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_lemmy.xml b/android/app/src/main/res/drawable/ic_lemmy.xml new file mode 100644 index 000000000..473e70078 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_lemmy.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_mastodon.xml b/android/app/src/main/res/drawable/ic_mastodon.xml index ad988c994..e299bbca2 100644 --- a/android/app/src/main/res/drawable/ic_mastodon.xml +++ b/android/app/src/main/res/drawable/ic_mastodon.xml @@ -1,26 +1,11 @@ + android:viewportWidth="72" + android:viewportHeight="72" + android:tint="?colorControlNormal"> - - - - - - - - + android:pathData="m35.355,-0c-11.839,0 -14.38,0.726 -15.728,0.926 -7.77,1.149 -14.866,6.626 -16.587,14.454 -0.828,3.855 -0.915,8.13 -0.762,12.051 0.219,5.622 0.262,11.233 0.772,16.832 0.353,3.719 0.969,7.41 1.843,11.042 1.637,6.709 8.26,12.291 14.751,14.569 6.949,2.375 14.422,2.769 21.583,1.138 0.788,-0.183 1.566,-0.396 2.334,-0.638 1.741,-0.553 3.78,-1.17 5.279,-2.257 0.021,-0.015 0.038,-0.036 0.05,-0.058 0.012,-0.023 0.019,-0.048 0.019,-0.074v-5.426c-0,-0.024 -0.007,-0.046 -0.017,-0.067 -0.011,-0.021 -0.027,-0.042 -0.045,-0.056s-0.042,-0.025 -0.065,-0.03c-0.023,-0.005 -0.046,-0.005 -0.069,0 -4.588,1.096 -9.29,1.646 -14.006,1.638 -8.117,0 -10.3,-3.853 -10.926,-5.456 -0.503,-1.386 -0.82,-2.83 -0.948,-4.299 -0.001,-0.025 0.003,-0.051 0.013,-0.074 0.01,-0.022 0.024,-0.043 0.043,-0.058 0.019,-0.016 0.043,-0.025 0.067,-0.03 0.024,-0.005 0.047,-0.006 0.071,0 4.511,1.088 9.136,1.639 13.777,1.638 1.116,0 2.229,-0.001 3.345,-0.03 4.667,-0.131 9.587,-0.369 14.179,-1.266 0.115,-0.023 0.229,-0.044 0.327,-0.074 7.243,-1.391 14.137,-5.756 14.837,-16.81 0.026,-0.435 0.091,-4.559 0.091,-5.011 0.003,-1.535 0.495,-10.886 -0.071,-16.633 -1.041,-7.736 -7.783,-13.833 -15.776,-15.015 -1.349,-0.2 -6.457,-0.926 -18.292,-0.926zM25.479,11.78c3.898,0 6.846,1.499 8.81,4.494l1.893,3.18 1.9,-3.18c1.964,-2.994 4.909,-4.494 8.801,-4.494 3.365,0 6.079,1.185 8.154,3.492 2.003,2.31 3.003,5.43 3.001,9.359v19.22h-7.618v-18.654c0,-3.927 -1.636,-5.93 -4.965,-5.93 -3.659,0 -5.491,2.369 -5.491,7.049v10.212h-7.57v-10.212c0,-4.68 -1.838,-7.049 -5.497,-7.049 -3.309,0 -4.961,2.003 -4.961,5.93v18.654h-7.613v-19.22c0,-3.927 1.002,-7.047 3.007,-9.359 2.069,-2.307 4.782,-3.492 8.15,-3.492z" + android:strokeWidth="1.1077" + android:fillColor="#fff"/> diff --git a/android/app/src/main/res/drawable/ic_mastodon_white.xml b/android/app/src/main/res/drawable/ic_mastodon_white.xml deleted file mode 100644 index d3dc1b2c6..000000000 --- a/android/app/src/main/res/drawable/ic_mastodon_white.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/app/src/main/res/drawable/ic_matrix.xml b/android/app/src/main/res/drawable/ic_matrix.xml index 8ae88ce1c..f4ead5f8c 100644 --- a/android/app/src/main/res/drawable/ic_matrix.xml +++ b/android/app/src/main/res/drawable/ic_matrix.xml @@ -2,7 +2,8 @@ android:height="24dp" android:width="22.95dp" android:viewportHeight="336.807" - android:viewportWidth="322.008"> + android:viewportWidth="322.008" + android:tint="?attr/colorControlNormal"> diff --git a/android/app/src/main/res/drawable/ic_menu_settings.xml b/android/app/src/main/res/drawable/ic_menu_settings.xml deleted file mode 100644 index 76dbf2072..000000000 --- a/android/app/src/main/res/drawable/ic_menu_settings.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/android/app/src/main/res/drawable/ic_minus.xml b/android/app/src/main/res/drawable/ic_minus.xml index 128a7430f..cf3559e4e 100644 --- a/android/app/src/main/res/drawable/ic_minus.xml +++ b/android/app/src/main/res/drawable/ic_minus.xml @@ -1,5 +1,9 @@ - - + + diff --git a/android/app/src/main/res/drawable/ic_openstreetmap.xml b/android/app/src/main/res/drawable/ic_openstreetmap.xml index bbb123017..991b55a35 100644 --- a/android/app/src/main/res/drawable/ic_openstreetmap.xml +++ b/android/app/src/main/res/drawable/ic_openstreetmap.xml @@ -2,7 +2,8 @@ android:height="24dp" android:width="23.95dp" android:viewportHeight="256.56815" - android:viewportWidth="256.0111"> + android:viewportWidth="256.0111" + android:tint="?attr/colorControlNormal"> diff --git a/android/app/src/main/res/drawable/ic_pixelfed.xml b/android/app/src/main/res/drawable/ic_pixelfed.xml new file mode 100644 index 000000000..7e15392ec --- /dev/null +++ b/android/app/src/main/res/drawable/ic_pixelfed.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_plus.xml b/android/app/src/main/res/drawable/ic_plus.xml index 70046c48f..5db872b1b 100644 --- a/android/app/src/main/res/drawable/ic_plus.xml +++ b/android/app/src/main/res/drawable/ic_plus.xml @@ -1,5 +1,9 @@ - - + + diff --git a/android/app/src/main/res/drawable/ic_storage_permission.xml b/android/app/src/main/res/drawable/ic_storage_permission.xml deleted file mode 100644 index 0e6e4618c..000000000 --- a/android/app/src/main/res/drawable/ic_storage_permission.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/android/app/src/main/res/drawable/ic_website.xml b/android/app/src/main/res/drawable/ic_website.xml index 134ddfa7b..11d112ce9 100644 --- a/android/app/src/main/res/drawable/ic_website.xml +++ b/android/app/src/main/res/drawable/ic_website.xml @@ -2,7 +2,8 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24" - android:viewportHeight="24"> + android:viewportHeight="24" + android:tint="?colorControlNormal"> diff --git a/android/app/src/main/res/layout-land/about.xml b/android/app/src/main/res/layout-land/about.xml index 9f2e4fd3b..3402dd064 100644 --- a/android/app/src/main/res/layout-land/about.xml +++ b/android/app/src/main/res/layout-land/about.xml @@ -166,7 +166,7 @@ android:orientation="horizontal"> + android:text="@string/website" + app:drawableStartCompat="@drawable/ic_website" /> - - + android:text="@string/mastodon" + app:drawableStartCompat="@drawable/ic_mastodon" /> + android:text="@string/lemmy" + app:drawableStartCompat="@drawable/ic_lemmy" /> - - + android:text="@string/pixelfed" + app:drawableStartCompat="@drawable/ic_pixelfed" /> + + - - @@ -84,13 +85,14 @@ android:layout_gravity="center_vertical" android:layout_marginStart="@dimen/margin_base" android:minHeight="@dimen/primary_button_min_height" - style="@style/MwmWidget.Button" + style="@style/Widget.Material3.Button.TextButton" android:text="@string/save" - android:textColor="?android:textColorPrimary"/> + android:textColor="?android:textColorPrimary" + android:textAppearance="@style/MwmTextAppearance.Body1"/> -