Merge branch 'develop'

This commit is contained in:
Thibault Deckers 2024-07-11 19:03:40 +02:00
commit 6d4c765613
69 changed files with 60 additions and 1141 deletions

View file

@ -49,9 +49,6 @@ jobs:
cp build/app/outputs/bundle/playRelease/*.aab outputs cp build/app/outputs/bundle/playRelease/*.aab outputs
./flutterw build apk -t lib/main_play.dart --flavor play --bundle-sksl-path shaders.sksl.json ./flutterw build apk -t lib/main_play.dart --flavor play --bundle-sksl-path shaders.sksl.json
cp build/app/outputs/apk/play/release/*.apk outputs cp build/app/outputs/apk/play/release/*.apk outputs
scripts/apply_flavor_huawei.sh
./flutterw build apk -t lib/main_huawei.dart --flavor huawei --bundle-sksl-path shaders.sksl.json
cp build/app/outputs/apk/huawei/release/*.apk outputs
scripts/apply_flavor_izzy.sh scripts/apply_flavor_izzy.sh
./flutterw build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi ./flutterw build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi
cp build/app/outputs/apk/izzy/release/*.apk outputs cp build/app/outputs/apk/izzy/release/*.apk outputs
@ -65,7 +62,6 @@ jobs:
AVES_KEY_ALIAS: ${{ secrets.AVES_KEY_ALIAS }} AVES_KEY_ALIAS: ${{ secrets.AVES_KEY_ALIAS }}
AVES_KEY_PASSWORD: ${{ secrets.AVES_KEY_PASSWORD }} AVES_KEY_PASSWORD: ${{ secrets.AVES_KEY_PASSWORD }}
AVES_GOOGLE_API_KEY: ${{ secrets.AVES_GOOGLE_API_KEY }} AVES_GOOGLE_API_KEY: ${{ secrets.AVES_GOOGLE_API_KEY }}
AVES_HUAWEI_API_KEY: ${{ secrets.AVES_HUAWEI_API_KEY }}
- name: Create a release with the APK and App Bundle. - name: Create a release with the APK and App Bundle.
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1

View file

@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
## <a id="unreleased"></a>[Unreleased] ## <a id="unreleased"></a>[Unreleased]
## <a id="v1.11.4"></a>[v1.11.4] - 2024-07-09 ## <a id="v1.11.5"></a>[v1.11.5] - 2024-07-11
### Added ### Added
@ -19,6 +19,12 @@ All notable changes to this project will be documented in this file.
- handling wallpaper intent without URI - handling wallpaper intent without URI
- sizing widgets with some launchers on Android >=12 - sizing widgets with some launchers on Android >=12
### Removed
- `huawei` app flavor
## <a id="v1.11.4"></a>[v1.11.4] - 2024-07-09 [YANKED]
## <a id="v1.11.3"></a>[v1.11.3] - 2024-06-17 ## <a id="v1.11.3"></a>[v1.11.3] - 2024-06-17
### Added ### Added

View file

@ -12,9 +12,6 @@ Aves is a gallery and metadata explorer app. It is built for Android, with Flutt
[<img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" [<img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"
alt='Get it on Google Play' alt='Get it on Google Play'
height="80">](https://play.google.com/store/apps/details?id=deckers.thibault.aves&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1) height="80">](https://play.google.com/store/apps/details?id=deckers.thibault.aves&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)
[<img src="https://raw.githubusercontent.com/deckerst/common/main/assets/huawei-appgallery-badge-english-black.png"
alt='Get it on Huawei AppGallery'
height="80">](https://appgallery.huawei.com/app/C106014023)
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" [<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png"
alt='Get it on IzzyOnDroid' alt='Get it on IzzyOnDroid'
height="80">](https://apt.izzysoft.de/fdroid/index/apk/deckers.thibault.aves) height="80">](https://apt.izzysoft.de/fdroid/index/apk/deckers.thibault.aves)

View file

@ -40,7 +40,6 @@ if (keystorePropertiesFile.exists()) {
keystoreProperties["keyAlias"] = System.getenv("AVES_KEY_ALIAS") ?: "<NONE>" keystoreProperties["keyAlias"] = System.getenv("AVES_KEY_ALIAS") ?: "<NONE>"
keystoreProperties["keyPassword"] = System.getenv("AVES_KEY_PASSWORD") ?: "<NONE>" keystoreProperties["keyPassword"] = System.getenv("AVES_KEY_PASSWORD") ?: "<NONE>"
keystoreProperties["googleApiKey"] = System.getenv("AVES_GOOGLE_API_KEY") ?: "<NONE>" keystoreProperties["googleApiKey"] = System.getenv("AVES_GOOGLE_API_KEY") ?: "<NONE>"
keystoreProperties["huaweiApiKey"] = System.getenv("AVES_HUAWEI_API_KEY") ?: "<NONE>"
} }
android { android {
@ -70,8 +69,7 @@ android {
targetSdk 34 targetSdk 34
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
manifestPlaceholders = [googleApiKey: keystoreProperties["googleApiKey"] ?: "<NONE>", manifestPlaceholders = [googleApiKey: keystoreProperties["googleApiKey"] ?: "<NONE>"]
huaweiApiKey: keystoreProperties["huaweiApiKey"] ?: "<NONE>"]
multiDexEnabled true multiDexEnabled true
} }
@ -94,13 +92,6 @@ android {
ext.useNdkAbiFilters = true ext.useNdkAbiFilters = true
} }
huawei {
// Huawei AppGallery
dimension "store"
// generate a universal APK without x86 native libs
ext.useNdkAbiFilters = true
}
izzy { izzy {
// IzzyOnDroid // IzzyOnDroid
// check offending libraries with `scanapk` // check offending libraries with `scanapk`
@ -198,7 +189,7 @@ dependencies {
implementation "androidx.appcompat:appcompat:1.7.0" implementation "androidx.appcompat:appcompat:1.7.0"
implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.lifecycle:lifecycle-process:2.8.2' implementation 'androidx.lifecycle:lifecycle-process:2.8.3'
implementation 'androidx.media:media:1.7.0' implementation 'androidx.media:media:1.7.0'
implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.security:security-crypto:1.1.0-alpha06' implementation 'androidx.security:security-crypto:1.1.0-alpha06'
@ -221,9 +212,6 @@ dependencies {
implementation 'com.github.deckerst.mp4parser:muxer:4cc0c5d06c' implementation 'com.github.deckerst.mp4parser:muxer:4cc0c5d06c'
implementation 'com.github.deckerst:pixymeta-android:9ec7097f17' implementation 'com.github.deckerst:pixymeta-android:9ec7097f17'
// huawei flavor only
huaweiImplementation "com.huawei.agconnect:agconnect-core:$huawei_agconnect_version"
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.2' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.2'
kapt 'androidx.annotation:annotation:1.8.0' kapt 'androidx.annotation:annotation:1.8.0'
@ -237,8 +225,3 @@ if (useCrashlytics) {
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'com.google.firebase.crashlytics'
} }
if (useHms) {
println("Building flavor with HMS plugin")
apply plugin: 'com.huawei.agconnect'
}

View file

@ -313,9 +313,6 @@
<meta-data <meta-data
android:name="com.google.android.geo.API_KEY" android:name="com.google.android.geo.API_KEY"
android:value="${googleApiKey}" /> android:value="${googleApiKey}" />
<meta-data
android:name="deckers.thibault.aves.huawei.API_KEY"
android:value="${huaweiApiKey}" />
<meta-data <meta-data
android:name="firebase_crashlytics_collection_enabled" android:name="firebase_crashlytics_collection_enabled"
android:value="false" /> android:value="false" />

View file

@ -41,16 +41,15 @@ class HomeWidgetProvider : AppWidgetProvider() {
for (widgetId in appWidgetIds) { for (widgetId in appWidgetIds) {
val widgetInfo = appWidgetManager.getAppWidgetOptions(widgetId) val widgetInfo = appWidgetManager.getAppWidgetOptions(widgetId)
goAsync().run { val pendingResult = goAsync()
defaultScope.launch { defaultScope.launch() {
val backgroundProps = getProps(context, widgetId, widgetInfo, drawEntryImage = false) val backgroundProps = getProps(context, widgetId, widgetInfo, drawEntryImage = false)
updateWidgetImage(context, appWidgetManager, widgetId, backgroundProps) updateWidgetImage(context, appWidgetManager, widgetId, backgroundProps)
val imageProps = getProps(context, widgetId, widgetInfo, drawEntryImage = true, reuseEntry = false) val imageProps = getProps(context, widgetId, widgetInfo, drawEntryImage = true, reuseEntry = false)
updateWidgetImage(context, appWidgetManager, widgetId, imageProps) updateWidgetImage(context, appWidgetManager, widgetId, imageProps)
finish() pendingResult?.finish()
}
} }
} }
} }

View file

@ -1,38 +1,21 @@
buildscript { buildscript {
ext { ext {
agp_version = '8.5.0' // same as `settings.ext.agp_version` in `/android/settings.gradle`
glide_version = '4.16.0' glide_version = '4.16.0'
// AppGallery Connect plugin versions: https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-sdk-changenotes-0000001058732550
huawei_agconnect_version = '1.9.1.300'
abiCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4] abiCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4]
useCrashlytics = gradle.startParameter.taskNames.any { task -> task.containsIgnoreCase("play") } useCrashlytics = gradle.startParameter.taskNames.any { task -> task.containsIgnoreCase("play") }
useHms = gradle.startParameter.taskNames.any { task -> task.containsIgnoreCase("huawei") }
} }
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
if (useHms) {
// HMS (used by some flavors only)
maven { url 'https://developer.huawei.com/repo/' }
}
} }
dependencies { dependencies {
// necessary when applying plugin `com.huawei.agconnect`
classpath "com.android.tools.build:gradle:$agp_version"
if (useCrashlytics) { if (useCrashlytics) {
// GMS & Firebase Crashlytics (used by some flavors only) // GMS & Firebase Crashlytics (used by some flavors only)
classpath 'com.google.gms:google-services:4.4.1' classpath 'com.google.gms:google-services:4.4.1'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
} }
if (useHms) {
// HMS (used by some flavors only)
classpath "com.huawei.agconnect:agcp:$huawei_agconnect_version"
}
} }
} }
@ -40,11 +23,6 @@ allprojects {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
if (useHms) {
// HMS (used by some flavors only)
maven { url 'https://developer.huawei.com/repo/' }
}
} }
// gradle.projectsEvaluated { // gradle.projectsEvaluated {

View file

@ -20,7 +20,3 @@ android.nonFinalResIds=false
# full mode is too aggressive and removes essential code # full mode is too aggressive and removes essential code
# of `metadata-extractor` even when adding `-keep class com.drew.**{ *; }` # of `metadata-extractor` even when adding `-keep class com.drew.**{ *; }`
android.enableR8.fullMode=false android.enableR8.fullMode=false
# fix for AppGallery Connect plugin which does not support yet Gradle 8
# cf https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-common-faq-0000001063210244#section17273113244910
apmsInstrumentationEnabled=false

View file

@ -3,4 +3,3 @@ storePassword=<KEYSTORE_PASSWORD>
keyAlias=<KEY_ALIAS> keyAlias=<KEY_ALIAS>
keyPassword=<KEY_PASSWORD> keyPassword=<KEY_PASSWORD>
googleApiKey=<GOOGLE_API_KEY> googleApiKey=<GOOGLE_API_KEY>
huaweiApiKey=<HUAWEI_API_KEY>

View file

@ -0,0 +1,4 @@
In v1.11.5:
- explore your collection with the... explorer
- convert your motion photos to stills in bulk
Full changelog available on GitHub

View file

@ -0,0 +1,4 @@
In v1.11.5:
- explore your collection with the... explorer
- convert your motion photos to stills in bulk
Full changelog available on GitHub

View file

@ -1,11 +1,10 @@
enum AppFlavor { play, huawei, izzy, libre } enum AppFlavor { play, izzy, libre }
extension ExtraAppFlavor on AppFlavor { extension ExtraAppFlavor on AppFlavor {
bool get canEnableErrorReporting { bool get canEnableErrorReporting {
switch (this) { switch (this) {
case AppFlavor.play: case AppFlavor.play:
return true; return true;
case AppFlavor.huawei:
case AppFlavor.izzy: case AppFlavor.izzy:
case AppFlavor.libre: case AppFlavor.libre:
return false; return false;
@ -15,7 +14,6 @@ extension ExtraAppFlavor on AppFlavor {
bool get hasMapStyleDefault { bool get hasMapStyleDefault {
switch (this) { switch (this) {
case AppFlavor.play: case AppFlavor.play:
case AppFlavor.huawei:
return true; return true;
case AppFlavor.izzy: case AppFlavor.izzy:
case AppFlavor.libre: case AppFlavor.libre:

View file

@ -313,8 +313,6 @@
"@exportEntryDialogFormat": {}, "@exportEntryDialogFormat": {},
"widgetOpenPageHome": "إفتح الرئيسية", "widgetOpenPageHome": "إفتح الرئيسية",
"@widgetOpenPageHome": {}, "@widgetOpenPageHome": {},
"mapStyleHuaweiNormal": "خرائط بيتال (هواوي)",
"@mapStyleHuaweiNormal": {},
"keepScreenOnAlways": "دائما", "keepScreenOnAlways": "دائما",
"@keepScreenOnAlways": {}, "@keepScreenOnAlways": {},
"appExportSettings": "إعدادات", "appExportSettings": "إعدادات",
@ -571,8 +569,6 @@
"@settingsSubtitleThemeTextAlignmentLeft": {}, "@settingsSubtitleThemeTextAlignmentLeft": {},
"settingsVideoGestureSideDoubleTapSeek": "انقر نقرًا مزدوجًا على حواف الشاشة للتقدم للأمام/للخلف", "settingsVideoGestureSideDoubleTapSeek": "انقر نقرًا مزدوجًا على حواف الشاشة للتقدم للأمام/للخلف",
"@settingsVideoGestureSideDoubleTapSeek": {}, "@settingsVideoGestureSideDoubleTapSeek": {},
"mapStyleHuaweiTerrain": "خرائط بيتال (التضاريس)",
"@mapStyleHuaweiTerrain": {},
"sortByItemCount": "حسب عدد العناصر", "sortByItemCount": "حسب عدد العناصر",
"@sortByItemCount": {}, "@sortByItemCount": {},
"sectionUnknown": "مجهول", "sectionUnknown": "مجهول",

View file

@ -327,10 +327,6 @@
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleGoogleTerrain": "Карты Google (Рэльеф мясцовасці)", "mapStyleGoogleTerrain": "Карты Google (Рэльеф мясцовасці)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Карты Petal",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Карты Petal (Рэльеф мясцовасці)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Гуманітарная ОСМ", "mapStyleOsmHot": "Гуманітарная ОСМ",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Тычынка Акварэль", "mapStyleStamenWatercolor": "Тычынка Акварэль",

View file

@ -214,8 +214,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Terreny)", "mapStyleGoogleTerrain": "Google Maps (Terreny)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terreny)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",
@ -715,8 +713,6 @@
"@filterTypeSphericalVideoLabel": {}, "@filterTypeSphericalVideoLabel": {},
"filterMimeImageLabel": "Imatge", "filterMimeImageLabel": "Imatge",
"@filterMimeImageLabel": {}, "@filterMimeImageLabel": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"filterMimeVideoLabel": "Vídeo", "filterMimeVideoLabel": "Vídeo",
"@filterMimeVideoLabel": {}, "@filterMimeVideoLabel": {},
"maxBrightnessAlways": "Sempre", "maxBrightnessAlways": "Sempre",

View file

@ -277,10 +277,6 @@
}, },
"mapStyleGoogleTerrain": "Mapy Google (terén)", "mapStyleGoogleTerrain": "Mapy Google (terén)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Mapy Petal",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Mapy Petal (terénní)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitární OSM", "mapStyleOsmHot": "Humanitární OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (vodové barvy)", "mapStyleStamenWatercolor": "Stamen Watercolor (vodové barvy)",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Gelände)", "mapStyleGoogleTerrain": "Google Maps (Gelände)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Gelände)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitäres OSM", "mapStyleOsmHot": "Humanitäres OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (Aquarell)", "mapStyleStamenWatercolor": "Stamen Watercolor (Aquarell)",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Terrain)", "mapStyleGoogleTerrain": "Google Maps (Terrain)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terrain)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",

View file

@ -238,8 +238,6 @@
"mapStyleGoogleNormal": "Google Maps", "mapStyleGoogleNormal": "Google Maps",
"mapStyleGoogleHybrid": "Google Maps (Hybrid)", "mapStyleGoogleHybrid": "Google Maps (Hybrid)",
"mapStyleGoogleTerrain": "Google Maps (Terrain)", "mapStyleGoogleTerrain": "Google Maps (Terrain)",
"mapStyleHuaweiNormal": "Petal Maps",
"mapStyleHuaweiTerrain": "Petal Maps (Terrain)",
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",

View file

@ -231,10 +231,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Relieve)", "mapStyleGoogleTerrain": "Google Maps (Relieve)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Relieve)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "OSM Humanitario", "mapStyleOsmHot": "OSM Humanitario",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (Acuarela)", "mapStyleStamenWatercolor": "Stamen Watercolor (Acuarela)",

View file

@ -283,16 +283,12 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (lurra)", "mapStyleGoogleTerrain": "Google Maps (lurra)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleOsmHot": "OSM humanitarioa", "mapStyleOsmHot": "OSM humanitarioa",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (akuarela)", "mapStyleStamenWatercolor": "Stamen Watercolor (akuarela)",
"@mapStyleStamenWatercolor": {}, "@mapStyleStamenWatercolor": {},
"keepScreenOnNever": "Inoiz", "keepScreenOnNever": "Inoiz",
"@keepScreenOnNever": {}, "@keepScreenOnNever": {},
"mapStyleHuaweiTerrain": "Petal Maps (lurra)",
"@mapStyleHuaweiTerrain": {},
"nameConflictStrategyReplace": "Ordezkatu", "nameConflictStrategyReplace": "Ordezkatu",
"@nameConflictStrategyReplace": {}, "@nameConflictStrategyReplace": {},
"keepScreenOnVideoPlayback": "Bideoa erreproduzitzean", "keepScreenOnVideoPlayback": "Bideoa erreproduzitzean",

View file

@ -339,10 +339,6 @@
"count": {} "count": {}
} }
}, },
"mapStyleHuaweiNormal": "پتال مپس",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "پتال مپس (نمایش زمین)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "اوپن‌استریت‌مپ بشردوستانه", "mapStyleOsmHot": "اوپن‌استریت‌مپ بشردوستانه",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"subtitlePositionBottom": "پایین", "subtitlePositionBottom": "پایین",

View file

@ -352,10 +352,6 @@
"@lengthUnitPercent": {}, "@lengthUnitPercent": {},
"mapStyleGoogleNormal": "Google Maps", "mapStyleGoogleNormal": "Google Maps",
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Maasto)",
"@mapStyleHuaweiTerrain": {},
"overlayHistogramRGB": "RGB", "overlayHistogramRGB": "RGB",
"@overlayHistogramRGB": {}, "@overlayHistogramRGB": {},
"subtitlePositionTop": "Ylhäällä", "subtitlePositionTop": "Ylhäällä",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Relief)", "mapStyleGoogleTerrain": "Google Maps (Relief)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Relief)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "OSM Humanitaire", "mapStyleOsmHot": "OSM Humanitaire",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (Aquarelle)", "mapStyleStamenWatercolor": "Stamen Watercolor (Aquarelle)",

View file

@ -275,8 +275,6 @@
"@unitSystemImperial": {}, "@unitSystemImperial": {},
"videoControlsPlay": "Reproducir", "videoControlsPlay": "Reproducir",
"@videoControlsPlay": {}, "@videoControlsPlay": {},
"mapStyleHuaweiNormal": "Petal Maps (Huawei)",
"@mapStyleHuaweiNormal": {},
"videoLoopModeNever": "Nunca", "videoLoopModeNever": "Nunca",
"@videoLoopModeNever": {}, "@videoLoopModeNever": {},
"videoLoopModeAlways": "Sempre", "videoLoopModeAlways": "Sempre",
@ -293,8 +291,6 @@
"@videoLoopModeShortOnly": {}, "@videoLoopModeShortOnly": {},
"mapStyleGoogleHybrid": "Google Maps (híbrido)", "mapStyleGoogleHybrid": "Google Maps (híbrido)",
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terreo)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OpenStreetMap Team", "mapStyleOsmHot": "Humanitarian OpenStreetMap Team",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"chipActionShowCollection": "Mostrar na colección", "chipActionShowCollection": "Mostrar na colección",

View file

@ -241,8 +241,6 @@
"@lengthUnitPercent": {}, "@lengthUnitPercent": {},
"mapStyleGoogleNormal": "Google térkép", "mapStyleGoogleNormal": "Google térkép",
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleHuaweiNormal": "Petal térkép",
"@mapStyleHuaweiNormal": {},
"nameConflictStrategySkip": "Átugrik", "nameConflictStrategySkip": "Átugrik",
"@nameConflictStrategySkip": {}, "@nameConflictStrategySkip": {},
"unitSystemMetric": "Metrikus", "unitSystemMetric": "Metrikus",
@ -607,8 +605,6 @@
"@filterTypeAnimatedLabel": {}, "@filterTypeAnimatedLabel": {},
"mapStyleGoogleTerrain": "Google térkép (Domborzat)", "mapStyleGoogleTerrain": "Google térkép (Domborzat)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiTerrain": "Petal térkép (Domborzat)",
"@mapStyleHuaweiTerrain": {},
"nameConflictStrategyReplace": "Kicserél", "nameConflictStrategyReplace": "Kicserél",
"@nameConflictStrategyReplace": {}, "@nameConflictStrategyReplace": {},
"subtitlePositionTop": "Felül", "subtitlePositionTop": "Felül",

View file

@ -239,10 +239,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Terrain)", "mapStyleGoogleTerrain": "Google Maps (Terrain)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terrain)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",

View file

@ -219,8 +219,6 @@
"@exportEntryDialogFormat": {}, "@exportEntryDialogFormat": {},
"widgetOpenPageHome": "Opna upphafsskjá", "widgetOpenPageHome": "Opna upphafsskjá",
"@widgetOpenPageHome": {}, "@widgetOpenPageHome": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"keepScreenOnAlways": "Alltaf", "keepScreenOnAlways": "Alltaf",
"@keepScreenOnAlways": {}, "@keepScreenOnAlways": {},
"appExportSettings": "Stillingar", "appExportSettings": "Stillingar",
@ -493,8 +491,6 @@
"@settingsSubtitleThemeTextAlignmentLeft": {}, "@settingsSubtitleThemeTextAlignmentLeft": {},
"settingsVideoGestureSideDoubleTapSeek": "Tvíbankaðu á skjájaðra leita afturábak/áfram", "settingsVideoGestureSideDoubleTapSeek": "Tvíbankaðu á skjájaðra leita afturábak/áfram",
"@settingsVideoGestureSideDoubleTapSeek": {}, "@settingsVideoGestureSideDoubleTapSeek": {},
"mapStyleHuaweiTerrain": "Petal Maps (yfirborð)",
"@mapStyleHuaweiTerrain": {},
"sortByItemCount": "Eftir fjölda atriða", "sortByItemCount": "Eftir fjölda atriða",
"@sortByItemCount": {}, "@sortByItemCount": {},
"sectionUnknown": "Óþekkt", "sectionUnknown": "Óþekkt",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Terreno)", "mapStyleGoogleTerrain": "Google Maps (Terreno)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terreno)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "OSM umanitario", "mapStyleOsmHot": "OSM umanitario",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (Acquerello)", "mapStyleStamenWatercolor": "Stamen Watercolor (Acquerello)",

View file

@ -231,10 +231,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google マップ(地形)", "mapStyleGoogleTerrain": "Google マップ(地形)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal マップ",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal マップ(地形)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google 지도 (지형)", "mapStyleGoogleTerrain": "Google 지도 (지형)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal 지도",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal 지도 (지형)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (수채화)", "mapStyleStamenWatercolor": "Stamen Watercolor (수채화)",

View file

@ -955,10 +955,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (reljefinis)", "mapStyleGoogleTerrain": "Google Maps (reljefinis)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (reljefinis)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarinis OSM", "mapStyleOsmHot": "Humanitarinis OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (akvarelė)", "mapStyleStamenWatercolor": "Stamen Watercolor (akvarelė)",

View file

@ -424,10 +424,6 @@
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleGoogleTerrain": "Google မြေပုံ (မြေအနေအထားပြ)", "mapStyleGoogleTerrain": "Google မြေပုံ (မြေအနေအထားပြ)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal မြေပုံ",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal မြေပုံ (မြေအနေအထားပြ)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleGoogleHybrid": "Google မြေပုံ (ဂြိုဟ်တု)", "mapStyleGoogleHybrid": "Google မြေပုံ (ဂြိုဟ်တု)",

View file

@ -1038,10 +1038,6 @@
"@settingsConfirmationBeforeMoveUndatedItems": {}, "@settingsConfirmationBeforeMoveUndatedItems": {},
"entryInfoActionEditLocation": "Rediger plassering", "entryInfoActionEditLocation": "Rediger plassering",
"@entryInfoActionEditLocation": {}, "@entryInfoActionEditLocation": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (terreng)",
"@mapStyleHuaweiTerrain": {},
"editEntryDateDialogShift": "Bytt", "editEntryDateDialogShift": "Bytt",
"@editEntryDateDialogShift": {}, "@editEntryDateDialogShift": {},
"locationPickerUseThisLocationButton": "Bruk denne plasseringen", "locationPickerUseThisLocationButton": "Bruk denne plasseringen",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Terrein)", "mapStyleGoogleTerrain": "Google Maps (Terrein)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terrein)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Waterkleur", "mapStyleStamenWatercolor": "Stamen Waterkleur",

View file

@ -248,10 +248,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (mark)", "mapStyleGoogleTerrain": "Google Maps (mark)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (mark)",
"@mapStyleHuaweiTerrain": {},
"nameConflictStrategyRename": "Byt namn", "nameConflictStrategyRename": "Byt namn",
"@nameConflictStrategyRename": {}, "@nameConflictStrategyRename": {},
"nameConflictStrategyReplace": "Byt ut", "nameConflictStrategyReplace": "Byt ut",

View file

@ -219,8 +219,6 @@
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"videoLoopModeShortOnly": "Tylko krótkie wideo", "videoLoopModeShortOnly": "Tylko krótkie wideo",
"@videoLoopModeShortOnly": {}, "@videoLoopModeShortOnly": {},
"mapStyleHuaweiTerrain": "Mapy Petal (teren)",
"@mapStyleHuaweiTerrain": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (kolory wody)", "mapStyleStamenWatercolor": "Stamen Watercolor (kolory wody)",
"@mapStyleStamenWatercolor": {}, "@mapStyleStamenWatercolor": {},
"nameConflictStrategyRename": "Zmień nazwę", "nameConflictStrategyRename": "Zmień nazwę",
@ -299,8 +297,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Mapy Google (teren)", "mapStyleGoogleTerrain": "Mapy Google (teren)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Mapy Petal",
"@mapStyleHuaweiNormal": {},
"keepScreenOnAlways": "Zawsze", "keepScreenOnAlways": "Zawsze",
"@keepScreenOnAlways": {}, "@keepScreenOnAlways": {},
"themeBrightnessLight": "Jasny", "themeBrightnessLight": "Jasny",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Maps (Terreno)", "mapStyleGoogleTerrain": "Google Maps (Terreno)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terreno)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "OSM Humanitário", "mapStyleOsmHot": "OSM Humanitário",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor (Aquarela)", "mapStyleStamenWatercolor": "Stamen Watercolor (Aquarela)",

View file

@ -251,10 +251,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Hărți Google (Teren)", "mapStyleGoogleTerrain": "Hărți Google (Teren)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Teren)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "OSM umanitar", "mapStyleOsmHot": "OSM umanitar",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamine Acuarela", "mapStyleStamenWatercolor": "Stamine Acuarela",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Карты (Местность)", "mapStyleGoogleTerrain": "Google Карты (Местность)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Карты",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Карты (Местность)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Акварель", "mapStyleStamenWatercolor": "Stamen Акварель",

View file

@ -280,10 +280,6 @@
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleGoogleHybrid": "Google mapy (Hybridné)", "mapStyleGoogleHybrid": "Google mapy (Hybridné)",
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleHuaweiNormal": "Mapy Petal",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Mapy Petal (Terén)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",

View file

@ -13,10 +13,6 @@
"@displayRefreshRatePreferLowest": {}, "@displayRefreshRatePreferLowest": {},
"keepScreenOnViewerOnly": "Visningssidan bara", "keepScreenOnViewerOnly": "Visningssidan bara",
"@keepScreenOnViewerOnly": {}, "@keepScreenOnViewerOnly": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terrain)",
"@mapStyleHuaweiTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"videoResumptionModeAlways": "Alltid", "videoResumptionModeAlways": "Alltid",

View file

@ -179,10 +179,6 @@
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleGoogleHybrid": "Google Maps (Hybrid)", "mapStyleGoogleHybrid": "Google Maps (Hybrid)",
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Terrain)",
"@mapStyleHuaweiTerrain": {},
"videoLoopModeNever": "ปิด", "videoLoopModeNever": "ปิด",
"@videoLoopModeNever": {}, "@videoLoopModeNever": {},
"videoLoopModeAlways": "เปิดตลอด", "videoLoopModeAlways": "เปิดตลอด",

View file

@ -225,10 +225,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Haritalar (Arazi)", "mapStyleGoogleTerrain": "Google Haritalar (Arazi)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Haritalar",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Haritalar (Arazi)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "İnsancıl OSM", "mapStyleOsmHot": "İnsancıl OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Suluboya", "mapStyleStamenWatercolor": "Stamen Suluboya",

View file

@ -221,10 +221,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google Карти (Місцевість)", "mapStyleGoogleTerrain": "Google Карти (Місцевість)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal Maps (Місцевість)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"nameConflictStrategyRename": "Перейменувати", "nameConflictStrategyRename": "Перейменувати",

View file

@ -415,8 +415,6 @@
"@exportEntryDialogFormat": {}, "@exportEntryDialogFormat": {},
"widgetOpenPageHome": "Mở trang chủ", "widgetOpenPageHome": "Mở trang chủ",
"@widgetOpenPageHome": {}, "@widgetOpenPageHome": {},
"mapStyleHuaweiNormal": "Petal Maps",
"@mapStyleHuaweiNormal": {},
"keepScreenOnAlways": "Luôn luôn", "keepScreenOnAlways": "Luôn luôn",
"@keepScreenOnAlways": {}, "@keepScreenOnAlways": {},
"appExportSettings": "Cài đặt", "appExportSettings": "Cài đặt",
@ -665,8 +663,6 @@
"@settingsSubtitleThemeTextAlignmentLeft": {}, "@settingsSubtitleThemeTextAlignmentLeft": {},
"settingsVideoGestureSideDoubleTapSeek": "Nhấn đúp vào các cạnh màn hình để lùi lại/tiến tới", "settingsVideoGestureSideDoubleTapSeek": "Nhấn đúp vào các cạnh màn hình để lùi lại/tiến tới",
"@settingsVideoGestureSideDoubleTapSeek": {}, "@settingsVideoGestureSideDoubleTapSeek": {},
"mapStyleHuaweiTerrain": "Petal Maps (Địa hình)",
"@mapStyleHuaweiTerrain": {},
"sortByItemCount": "Theo số mục", "sortByItemCount": "Theo số mục",
"@sortByItemCount": {}, "@sortByItemCount": {},
"sectionUnknown": "Không biết", "sectionUnknown": "Không biết",

View file

@ -243,10 +243,6 @@
"@mapStyleGoogleHybrid": {}, "@mapStyleGoogleHybrid": {},
"mapStyleGoogleTerrain": "Google 地图 (地形)", "mapStyleGoogleTerrain": "Google 地图 (地形)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal 地图",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal 地图 (地形)",
"@mapStyleHuaweiTerrain": {},
"mapStyleOsmHot": "Humanitarian OSM", "mapStyleOsmHot": "Humanitarian OSM",
"@mapStyleOsmHot": {}, "@mapStyleOsmHot": {},
"mapStyleStamenWatercolor": "Stamen Watercolor", "mapStyleStamenWatercolor": "Stamen Watercolor",

View file

@ -217,10 +217,6 @@
"@mapStyleGoogleNormal": {}, "@mapStyleGoogleNormal": {},
"mapStyleGoogleTerrain": "Google 地圖 (地形)", "mapStyleGoogleTerrain": "Google 地圖 (地形)",
"@mapStyleGoogleTerrain": {}, "@mapStyleGoogleTerrain": {},
"mapStyleHuaweiNormal": "Petal 地圖",
"@mapStyleHuaweiNormal": {},
"mapStyleHuaweiTerrain": "Petal 地圖 (地形)",
"@mapStyleHuaweiTerrain": {},
"nameConflictStrategyRename": "重新命名", "nameConflictStrategyRename": "重新命名",
"@nameConflictStrategyRename": {}, "@nameConflictStrategyRename": {},
"nameConflictStrategyReplace": "取代", "nameConflictStrategyReplace": "取代",

View file

@ -1,11 +0,0 @@
import 'package:aves/app_flavor.dart';
import 'package:aves/main_common.dart';
import 'package:aves/widget_common.dart';
const _flavor = AppFlavor.huawei;
@pragma('vm:entry-point')
void main() => mainCommon(_flavor);
@pragma('vm:entry-point')
void widgetMain() => widgetMainCommon(_flavor);

View file

@ -169,19 +169,6 @@ class Dependencies {
), ),
]; ];
static const List<Dependency> _huaweiMobileServices = [
Dependency(
name: 'Huawei Mobile Services (Availability, Map)',
license: apache2,
licenseUrl: 'https://github.com/HMS-Core/hms-flutter-plugin/blob/master/LICENCE',
sourceUrl: 'https://github.com/HMS-Core/hms-flutter-plugin',
),
];
static const List<Dependency> _flutterPluginsHuaweiOnly = [
..._huaweiMobileServices,
];
static const List<Dependency> _flutterPluginsIzzyOnly = [ static const List<Dependency> _flutterPluginsIzzyOnly = [
..._googleMobileServices, ..._googleMobileServices,
]; ];
@ -199,7 +186,6 @@ class Dependencies {
static List<Dependency> flutterPlugins(AppFlavor flavor) => [ static List<Dependency> flutterPlugins(AppFlavor flavor) => [
..._flutterPluginsCommon, ..._flutterPluginsCommon,
if (flavor == AppFlavor.huawei) ..._flutterPluginsHuaweiOnly,
if (flavor == AppFlavor.izzy) ..._flutterPluginsIzzyOnly, if (flavor == AppFlavor.izzy) ..._flutterPluginsIzzyOnly,
if (flavor == AppFlavor.libre) ..._flutterPluginsLibreOnly, if (flavor == AppFlavor.libre) ..._flutterPluginsLibreOnly,
if (flavor == AppFlavor.play) ..._flutterPluginsPlayOnly, if (flavor == AppFlavor.play) ..._flutterPluginsPlayOnly,

View file

@ -6,8 +6,6 @@ extension ExtraEntryMapStyle on EntryMapStyle {
case EntryMapStyle.googleNormal: case EntryMapStyle.googleNormal:
case EntryMapStyle.googleHybrid: case EntryMapStyle.googleHybrid:
case EntryMapStyle.googleTerrain: case EntryMapStyle.googleTerrain:
case EntryMapStyle.hmsNormal:
case EntryMapStyle.hmsTerrain:
return true; return true;
default: default:
return false; return false;

View file

@ -68,8 +68,6 @@ extension ExtraEntryMapStyleView on EntryMapStyle {
EntryMapStyle.googleNormal => l10n.mapStyleGoogleNormal, EntryMapStyle.googleNormal => l10n.mapStyleGoogleNormal,
EntryMapStyle.googleHybrid => l10n.mapStyleGoogleHybrid, EntryMapStyle.googleHybrid => l10n.mapStyleGoogleHybrid,
EntryMapStyle.googleTerrain => l10n.mapStyleGoogleTerrain, EntryMapStyle.googleTerrain => l10n.mapStyleGoogleTerrain,
EntryMapStyle.hmsNormal => l10n.mapStyleHuaweiNormal,
EntryMapStyle.hmsTerrain => l10n.mapStyleHuaweiTerrain,
EntryMapStyle.osmHot => l10n.mapStyleOsmHot, EntryMapStyle.osmHot => l10n.mapStyleOsmHot,
EntryMapStyle.stamenWatercolor => l10n.mapStyleStamenWatercolor, EntryMapStyle.stamenWatercolor => l10n.mapStyleStamenWatercolor,
}; };

View file

@ -167,8 +167,6 @@ class _GeoMapState extends State<GeoMap> {
case EntryMapStyle.googleNormal: case EntryMapStyle.googleNormal:
case EntryMapStyle.googleHybrid: case EntryMapStyle.googleHybrid:
case EntryMapStyle.googleTerrain: case EntryMapStyle.googleTerrain:
case EntryMapStyle.hmsNormal:
case EntryMapStyle.hmsTerrain:
child = mobileServices.buildMap<AvesEntry>( child = mobileServices.buildMap<AvesEntry>(
controller: controller, controller: controller,
clusterListenable: _clusterChangeNotifier, clusterListenable: _clusterChangeNotifier,

View file

@ -3,9 +3,6 @@ enum EntryMapStyle {
googleNormal, googleNormal,
googleHybrid, googleHybrid,
googleTerrain, googleTerrain,
// Huawei
hmsNormal,
hmsTerrain,
// Leaflet // Leaflet
// browse providers at https://leaflet-extras.github.io/leaflet-providers/preview/ // browse providers at https://leaflet-extras.github.io/leaflet-providers/preview/
osmHot, osmHot,

View file

@ -89,10 +89,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_map name: flutter_map
sha256: cc102fe5eeab1a740c321e1982706061e46259cd75115b3b3779195f21d57cc3 sha256: "2ecb34619a4be19df6f40c2f8dce1591675b4eff7a6857bd8f533706977385da"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.1" version: "7.0.2"
http: http:
dependency: transitive dependency: transitive
description: description:

View file

@ -96,10 +96,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_map name: flutter_map
sha256: cc102fe5eeab1a740c321e1982706061e46259cd75115b3b3779195f21d57cc3 sha256: "2ecb34619a4be19df6f40c2f8dce1591675b4eff7a6857bd8f533706977385da"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.1" version: "7.0.2"
http: http:
dependency: transitive dependency: transitive
description: description:

View file

@ -150,10 +150,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_map name: flutter_map
sha256: cc102fe5eeab1a740c321e1982706061e46259cd75115b3b3779195f21d57cc3 sha256: "2ecb34619a4be19df6f40c2f8dce1591675b4eff7a6857bd8f533706977385da"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.1" version: "7.0.2"
flutter_plugin_android_lifecycle: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
@ -211,18 +211,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: google_maps_flutter_android name: google_maps_flutter_android
sha256: e9a506d05a4c70b091ebe41b1f28f3b1efdfddfa4f81487018d9feebeff94709 sha256: f6306d83edddba7aa017ca6f547d6f36a1443f90ed49d91d48ef70d7aa86e2e1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.0" version: "2.12.0"
google_maps_flutter_ios: google_maps_flutter_ios:
dependency: transitive dependency: transitive
description: description:
name: google_maps_flutter_ios name: google_maps_flutter_ios
sha256: "7250837d9b2f1a40d7724d735aaa4fc574c5f0e120f3f43149aceace16095ccf" sha256: ef8a646c2fa2211b179ec2fe074d7aacbe63d261d321786da7508bcc6daa2a64
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.8.0" version: "2.8.2"
google_maps_flutter_platform_interface: google_maps_flutter_platform_interface:
dependency: "direct main" dependency: "direct main"
description: description:

View file

@ -1,30 +0,0 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
#/pubspec.lock
**/doc/api/
.dart_tool/
.packages
build/

View file

@ -1,10 +0,0 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: 5464c5bac742001448fe4fc0597be939379f88ea
channel: stable
project_type: package

View file

@ -1 +0,0 @@
include: ../../analysis_options.yaml

View file

@ -1,89 +0,0 @@
library aves_services_platform;
import 'package:aves_map/aves_map.dart';
import 'package:aves_platform_meta/aves_platform_meta_platform_interface.dart';
import 'package:aves_services/aves_services.dart';
import 'package:aves_services_platform/src/map.dart';
import 'package:flutter/widgets.dart';
import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
import 'package:huawei_map/huawei_map.dart' as hmap;
import 'package:latlong2/latlong.dart';
class PlatformMobileServices extends MobileServices {
// cf https://developer.huawei.com/consumer/en/doc/development/hmscore-common-References/huaweiapiavailability-0000001050121134#section9492524178
static const int _hmsCoreAvailable = 0;
static const manifestApiKey = 'deckers.thibault.aves.huawei.API_KEY';
bool _isAvailable = false;
@override
Future<void> init() async {
try {
final result = await HmsApiAvailability().isHMSAvailable();
_isAvailable = result == _hmsCoreAvailable;
} on Exception catch (e, stack) {
debugPrint('Failed to check services availability with exception=$e, stack=$stack');
}
debugPrint('Device has Huawei Mobile Services=$_isAvailable');
final apiKey = await AvesPlatformMetaPlatform.instance.getMetadata(manifestApiKey);
hmap.HuaweiMapInitializer.setApiKey(apiKey: apiKey ?? '');
hmap.HuaweiMapInitializer.initializeMap();
}
@override
bool get isServiceAvailable => _isAvailable;
@override
EntryMapStyle get defaultMapStyle => EntryMapStyle.hmsNormal;
@override
List<EntryMapStyle> get mapStyles => isServiceAvailable
? [
EntryMapStyle.hmsNormal,
EntryMapStyle.hmsTerrain,
]
: [];
@override
Widget buildMap<T>({
required AvesMapController? controller,
required Listenable clusterListenable,
required ValueNotifier<ZoomedBounds> boundsNotifier,
required EntryMapStyle style,
required TransitionBuilder decoratorBuilder,
required ButtonPanelBuilder buttonPanelBuilder,
required MarkerClusterBuilder<T> markerClusterBuilder,
required MarkerWidgetBuilder<T> markerWidgetBuilder,
required MarkerImageReadyChecker<T> markerImageReadyChecker,
required ValueNotifier<LatLng?>? dotLocationNotifier,
required ValueNotifier<double>? overlayOpacityNotifier,
required MapOverlay? overlayEntry,
required UserZoomChangeCallback? onUserZoomChange,
required MapTapCallback? onMapTap,
required MarkerTapCallback<T>? onMarkerTap,
required MarkerLongPressCallback<T>? onMarkerLongPress,
}) {
return EntryHmsMap<T>(
controller: controller,
clusterListenable: clusterListenable,
boundsNotifier: boundsNotifier,
minZoom: 3,
maxZoom: 20,
style: style,
decoratorBuilder: decoratorBuilder,
buttonPanelBuilder: buttonPanelBuilder,
markerClusterBuilder: markerClusterBuilder,
markerWidgetBuilder: markerWidgetBuilder,
markerImageReadyChecker: markerImageReadyChecker,
dotLocationNotifier: dotLocationNotifier,
overlayOpacityNotifier: overlayOpacityNotifier,
overlayEntry: overlayEntry,
onUserZoomChange: onUserZoomChange,
onMapTap: onMapTap,
onMarkerTap: onMarkerTap,
onMarkerLongPress: onMarkerLongPress,
);
}
}

View file

@ -1,341 +0,0 @@
import 'dart:async';
import 'dart:typed_data';
import 'package:aves_map/aves_map.dart';
import 'package:aves_utils/aves_utils.dart';
import 'package:flutter/material.dart';
import 'package:huawei_map/huawei_map.dart';
import 'package:latlong2/latlong.dart' as ll;
import 'package:provider/provider.dart';
class EntryHmsMap<T> extends StatefulWidget {
final AvesMapController? controller;
final Listenable clusterListenable;
final ValueNotifier<ZoomedBounds> boundsNotifier;
final double? minZoom, maxZoom;
final EntryMapStyle style;
final TransitionBuilder decoratorBuilder;
final ButtonPanelBuilder buttonPanelBuilder;
final MarkerClusterBuilder<T> markerClusterBuilder;
final MarkerWidgetBuilder<T> markerWidgetBuilder;
final MarkerImageReadyChecker<T> markerImageReadyChecker;
final ValueNotifier<ll.LatLng?>? dotLocationNotifier;
final ValueNotifier<double>? overlayOpacityNotifier;
final MapOverlay? overlayEntry;
final UserZoomChangeCallback? onUserZoomChange;
final MapTapCallback? onMapTap;
final MarkerTapCallback<T>? onMarkerTap;
final MarkerLongPressCallback<T>? onMarkerLongPress;
const EntryHmsMap({
super.key,
this.controller,
required this.clusterListenable,
required this.boundsNotifier,
this.minZoom,
this.maxZoom,
required this.style,
required this.decoratorBuilder,
required this.buttonPanelBuilder,
required this.markerClusterBuilder,
required this.markerWidgetBuilder,
required this.markerImageReadyChecker,
required this.dotLocationNotifier,
this.overlayOpacityNotifier,
this.overlayEntry,
this.onUserZoomChange,
this.onMapTap,
this.onMarkerTap,
this.onMarkerLongPress,
});
@override
State<StatefulWidget> createState() => _EntryHmsMapState<T>();
}
class _EntryHmsMapState<T> extends State<EntryHmsMap<T>> {
HuaweiMapController? _serviceMapController;
final List<StreamSubscription> _subscriptions = [];
Map<MarkerKey<T>, GeoEntry<T>> _geoEntryByMarkerKey = {};
final Map<MarkerKey<T>, Uint8List> _markerBitmaps = {};
final StreamController<MarkerKey<T>> _markerBitmapReadyStreamController = StreamController.broadcast();
Uint8List? _dotMarkerBitmap;
ValueNotifier<ZoomedBounds> get boundsNotifier => widget.boundsNotifier;
ZoomedBounds get bounds => boundsNotifier.value;
static const uninitializedLatLng = LatLng(0, 0);
@override
void initState() {
super.initState();
_registerWidget(widget);
}
@override
void didUpdateWidget(covariant EntryHmsMap<T> oldWidget) {
super.didUpdateWidget(oldWidget);
_unregisterWidget(oldWidget);
_registerWidget(widget);
}
@override
void dispose() {
_unregisterWidget(widget);
super.dispose();
}
void _registerWidget(EntryHmsMap<T> widget) {
final avesMapController = widget.controller;
if (avesMapController != null) {
_subscriptions.add(avesMapController.moveCommands.listen((event) => _moveTo(_toServiceLatLng(event.latLng))));
_subscriptions.add(avesMapController.zoomCommands.listen((event) => _zoomBy(event.delta)));
}
widget.clusterListenable.addListener(_updateMarkers);
}
void _unregisterWidget(EntryHmsMap<T> widget) {
widget.clusterListenable.removeListener(_updateMarkers);
_subscriptions
..forEach((sub) => sub.cancel())
..clear();
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
MarkerGeneratorWidget<Key>(
markers: const [DotMarker(key: Key('dot'))],
isReadyToRender: (key) => true,
onRendered: (key, bitmap) => _dotMarkerBitmap = bitmap,
),
MarkerGeneratorWidget<MarkerKey<T>>(
markers: _geoEntryByMarkerKey.keys.map(widget.markerWidgetBuilder).toList(),
isReadyToRender: widget.markerImageReadyChecker,
onRendered: (key, bitmap) {
_markerBitmaps[key] = bitmap;
_markerBitmapReadyStreamController.add(key);
},
),
widget.decoratorBuilder(context, _buildMap()),
widget.buttonPanelBuilder(_resetRotation),
],
);
}
Widget _buildMap() {
final _onMarkerLongPress = widget.onMarkerLongPress;
return StreamBuilder(
stream: _markerBitmapReadyStreamController.stream,
builder: (context, _) {
final markers = <Marker>{};
_geoEntryByMarkerKey.forEach((markerKey, geoEntry) {
final bytes = _markerBitmaps[markerKey];
if (bytes != null) {
final point = LatLng(geoEntry.latitude!, geoEntry.longitude!);
markers.add(Marker(
markerId: MarkerId(geoEntry.markerId!),
clickable: true,
icon: BitmapDescriptor.fromBytes(bytes),
position: point,
onClick: () => widget.onMarkerTap?.call(geoEntry),
));
}
});
final interactive = context.select<MapThemeData, bool>((v) => v.interactive);
// final overlayEntry = widget.overlayEntry;
return NullableValueListenableBuilder<ll.LatLng?>(
valueListenable: widget.dotLocationNotifier,
builder: (context, dotLocation, child) {
return NullableValueListenableBuilder<double>(
valueListenable: widget.overlayOpacityNotifier,
builder: (context, value, child) {
// final double overlayOpacity = value ?? 1.0;
return HuaweiMap(
initialCameraPosition: CameraPosition(
bearing: bounds.rotation,
target: _toServiceLatLng(bounds.projectedCenter),
zoom: bounds.zoom,
),
mapType: _toMapType(widget.style),
// compass disabled to use provider agnostic controls
compassEnabled: false,
mapToolbarEnabled: false,
minMaxZoomPreference: MinMaxZoomPreference(
widget.minZoom ?? MinMaxZoomPreference.unbounded.minZoom,
widget.maxZoom ?? MinMaxZoomPreference.unbounded.maxZoom,
),
// `allGesturesEnabled`, if defined overrides specific gesture settings
rotateGesturesEnabled: interactive,
scrollGesturesEnabled: interactive,
// zoom controls disabled to use provider agnostic controls
zoomControlsEnabled: false,
zoomGesturesEnabled: interactive,
// tilt disabled to match leaflet
tiltGesturesEnabled: false,
myLocationEnabled: false,
myLocationButtonEnabled: false,
trafficEnabled: false,
isScrollGesturesEnabledDuringRotateOrZoom: true,
markers: {
...markers,
if (dotLocation != null && _dotMarkerBitmap != null)
Marker(
markerId: const MarkerId('dot'),
anchor: const Offset(.5, .5),
clickable: true,
icon: BitmapDescriptor.fromBytes(_dotMarkerBitmap!),
position: _toServiceLatLng(dotLocation),
zIndex: 1,
)
},
// TODO TLAD [hms] GeoTIFF ground overlay
// groundOverlays: {
// if (overlayEntry != null && overlayEntry.canOverlay)
// GroundOverlay(
// groundOverlayId: GroundOverlayId('overlay'),
// // Google Maps API allows defining overlay either via
// // 1) position, anchor and width/height (in meters)
// // 2) bounds
// // Huawei requires width/height (in meters?), but also allows bounds...
// width: 42,
// height: 42,
// imageDescriptor: BitmapDescriptor.defaultMarker,
// position: _toServiceLatLng(overlayEntry.center!),
// ),
// },
// TODO TLAD [hms] dynamic tile provider from current bounds,
// tileOverlays: {
// if (overlayEntry != null && overlayEntry.canOverlay)
// TileOverlay(
// tileOverlayId: TileOverlayId(overlayEntry.entry.uri),
// // `tileProvider` is `RepetitiveTile`, `UrlTile` or List<Tile>
// // tileProvider: <Tile>[
// // Tile(
// // x: x,
// // y: y,
// // zoom: zoom,
// // imageData: imageData,
// // ),
// // ],
// transparency: 1 - overlayOpacity,
// ),
// },
onMapCreated: (controller) async {
_serviceMapController = controller;
final zoom = await controller.getZoomLevel();
await _updateVisibleRegion(zoom: zoom ?? bounds.zoom, rotation: bounds.rotation);
if (mounted) {
setState(() {});
}
},
onCameraMove: (position) => _updateVisibleRegion(zoom: position.zoom, rotation: position.bearing),
onCameraIdle: _onIdle,
onClick: (v) => widget.onMapTap?.call(_fromServiceLatLng(v)),
onLongPress: _onMarkerLongPress != null
? (v) {
final pressLocation = _fromServiceLatLng(v);
final markers = _geoEntryByMarkerKey.values.toSet();
final geoEntry = ImageMarker.markerMatch(pressLocation, bounds.zoom, markers);
if (geoEntry != null) {
_onMarkerLongPress(geoEntry, pressLocation);
}
}
: null,
onPoiClick: (poi) {
final poiPosition = poi.latLng;
if (poiPosition != null) {
widget.onMapTap?.call(_fromServiceLatLng(poiPosition));
}
},
logoPadding: const EdgeInsets.all(8),
// lite mode disabled because it is not interactive
liteMode: false,
);
},
);
},
);
},
);
}
void _onIdle() {
if (!mounted) return;
widget.controller?.notifyIdle(bounds);
_updateMarkers();
}
void _updateMarkers() {
setState(() => _geoEntryByMarkerKey = widget.markerClusterBuilder());
}
Future<void> _updateVisibleRegion({required double zoom, required double rotation}) async {
if (!mounted) return;
final bounds = await _serviceMapController?.getVisibleRegion();
if (bounds != null && (bounds.northeast != uninitializedLatLng || bounds.southwest != uninitializedLatLng)) {
final sw = bounds.southwest;
final ne = bounds.northeast;
boundsNotifier.value = ZoomedBounds(
sw: _fromServiceLatLng(sw),
ne: _fromServiceLatLng(ne),
zoom: zoom,
rotation: rotation,
);
} else {
// the visible region is sometimes uninitialized when queried right after creation,
// so we query it again next frame
WidgetsBinding.instance.addPostFrameCallback((_) {
_updateVisibleRegion(zoom: zoom, rotation: rotation);
});
}
}
Future<void> _resetRotation() async {
final controller = _serviceMapController;
if (controller == null) return;
await controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
target: _toServiceLatLng(bounds.projectedCenter),
zoom: bounds.zoom,
)));
}
Future<void> _zoomBy(double amount) async {
final controller = _serviceMapController;
if (controller == null) return;
final zoom = await controller.getZoomLevel();
if (zoom == null) return;
widget.onUserZoomChange?.call(zoom + amount);
await controller.animateCamera(CameraUpdate.zoomBy(amount));
}
Future<void> _moveTo(LatLng point) async {
final controller = _serviceMapController;
if (controller == null) return;
await controller.animateCamera(CameraUpdate.newLatLng(point));
}
// `LatLng` used by `google_maps_flutter` is not the one from `latlong2` package
LatLng _toServiceLatLng(ll.LatLng location) => LatLng(location.latitude, location.longitude);
ll.LatLng _fromServiceLatLng(LatLng location) => ll.LatLng(location.lat, location.lng);
MapType _toMapType(EntryMapStyle style) {
switch (style) {
case EntryMapStyle.hmsNormal:
return MapType.normal;
case EntryMapStyle.hmsTerrain:
return MapType.terrain;
default:
return MapType.none;
}
}
}

View file

@ -1,341 +0,0 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
async:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.11.0"
aves_map:
dependency: "direct main"
description:
path: "../aves_map"
relative: true
source: path
version: "0.0.1"
aves_platform_meta:
dependency: "direct main"
description:
path: "../aves_platform_meta"
relative: true
source: path
version: "0.0.1"
aves_services:
dependency: "direct main"
description:
path: "../aves_services"
relative: true
source: path
version: "0.0.1"
aves_ui:
dependency: transitive
description:
path: "../aves_ui"
relative: true
source: path
version: "0.0.1"
aves_utils:
dependency: "direct main"
description:
path: "../aves_utils"
relative: true
source: path
version: "0.0.1"
characters:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
clock:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
version: "1.18.0"
custom_rounded_rectangle_border:
dependency: transitive
description:
name: custom_rounded_rectangle_border
sha256: "3e8ca0c26b8d22d5d3842bab59dfd209995f8e42af7c2eef03da70642c040819"
url: "https://pub.dev"
source: hosted
version: "0.3.0"
dart_earcut:
dependency: transitive
description:
name: dart_earcut
sha256: "41b493147e30a051efb2da1e3acb7f38fe0db60afba24ac1ea5684cee272721e"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
equatable:
dependency: transitive
description:
name: equatable
sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2
url: "https://pub.dev"
source: hosted
version: "2.0.5"
fluster:
dependency: transitive
description:
name: fluster
sha256: "3807f5d088b7798f0416b8578498046338af98bb4fb922a70e2810b8293963f6"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
flutter_map:
dependency: transitive
description:
name: flutter_map
sha256: cc102fe5eeab1a740c321e1982706061e46259cd75115b3b3779195f21d57cc3
url: "https://pub.dev"
source: hosted
version: "7.0.1"
http:
dependency: transitive
description:
name: http
sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
huawei_hmsavailability:
dependency: "direct main"
description:
path: flutter-hms-availability
ref: agp8-compat
resolved-ref: "031b7aa2553dfb71c2791c918f535b5d4e6a82be"
url: "https://github.com/deckerst/hms-flutter-plugin.git"
source: git
version: "6.6.0+300"
huawei_map:
dependency: "direct main"
description:
path: flutter-hms-map
ref: agp8-compat
resolved-ref: "031b7aa2553dfb71c2791c918f535b5d4e6a82be"
url: "https://github.com/deckerst/hms-flutter-plugin.git"
source: git
version: "6.11.0+304"
intl:
dependency: transitive
description:
name: intl
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
version: "0.19.0"
latlong2:
dependency: "direct main"
description:
name: latlong2
sha256: "98227922caf49e6056f91b6c56945ea1c7b166f28ffcd5fb8e72fc0b453cc8fe"
url: "https://pub.dev"
source: hosted
version: "0.9.1"
lints:
dependency: transitive
description:
name: lints
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
lists:
dependency: transitive
description:
name: lists
sha256: "4ca5c19ae4350de036a7e996cdd1ee39c93ac0a2b840f4915459b7d0a7d4ab27"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
logger:
dependency: transitive
description:
name: logger
sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4
url: "https://pub.dev"
source: hosted
version: "2.3.0"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.8.0"
meta:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
mgrs_dart:
dependency: transitive
description:
name: mgrs_dart
sha256: fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7
url: "https://pub.dev"
source: hosted
version: "2.0.0"
nested:
dependency: transitive
description:
name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
path:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
polylabel:
dependency: transitive
description:
name: polylabel
sha256: "41b9099afb2aa6c1730bdd8a0fab1400d287694ec7615dd8516935fa3144214b"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
proj4dart:
dependency: transitive
description:
name: proj4dart
sha256: c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e
url: "https://pub.dev"
source: hosted
version: "2.1.0"
provider:
dependency: "direct main"
description:
name: provider
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
url: "https://pub.dev"
source: hosted
version: "6.1.2"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
url: "https://pub.dev"
source: hosted
version: "1.3.2"
unicode:
dependency: transitive
description:
name: unicode
sha256: "0f69e46593d65245774d4f17125c6084d2c20b4e473a983f6e21b7d7762218f1"
url: "https://pub.dev"
source: hosted
version: "0.3.1"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
wkt_parser:
dependency: transitive
description:
name: wkt_parser
sha256: "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
sdks:
dart: ">=3.4.1 <4.0.0"
flutter: ">=3.10.0"

View file

@ -1,37 +0,0 @@
name: aves_services_platform
version: 0.0.1
publish_to: none
environment:
sdk: '>=3.4.1 <4.0.0'
dependencies:
flutter:
sdk: flutter
aves_map:
path: ../aves_map
aves_platform_meta:
path: ../aves_platform_meta
aves_services:
path: ../aves_services
aves_utils:
path: ../aves_utils
# cf https://github.com/HMS-Core/hms-flutter-plugin/pull/296
huawei_hmsavailability:
git:
url: https://github.com/deckerst/hms-flutter-plugin.git
ref: agp8-compat
path: flutter-hms-availability
# cf https://github.com/HMS-Core/hms-flutter-plugin/pull/296
huawei_map:
git:
url: https://github.com/deckerst/hms-flutter-plugin.git
ref: agp8-compat
path: flutter-hms-map
latlong2:
provider:
dev_dependencies:
flutter_lints:
flutter:

View file

@ -103,10 +103,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_map name: flutter_map
sha256: cc102fe5eeab1a740c321e1982706061e46259cd75115b3b3779195f21d57cc3 sha256: "2ecb34619a4be19df6f40c2f8dce1591675b4eff7a6857bd8f533706977385da"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.1" version: "7.0.2"
http: http:
dependency: transitive dependency: transitive
description: description:

View file

@ -444,18 +444,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flex_color_picker name: flex_color_picker
sha256: "31b27677d8d8400e4cff5edb3f189f606dd964d608779b6ae1b7ddad37ea48c6" sha256: "809af4ec82ede3b140ed0219b97d548de99e47aa4b99b14a10f705a2dbbcba5e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.5.0" version: "3.5.1"
flex_seed_scheme: flex_seed_scheme:
dependency: transitive dependency: transitive
description: description:
name: flex_seed_scheme name: flex_seed_scheme
sha256: fb66cdb8ca89084e79efcad2bc2d9deb144666875116f08cdd8d9f8238c8b3ab sha256: "6c595e545b0678e1fe17e8eec3d1fbca7237482da194fadc20ad8607dc7a7f3d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "3.0.0"
floating: floating:
dependency: "direct main" dependency: "direct main"
description: description:
@ -532,18 +532,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_map name: flutter_map
sha256: cc102fe5eeab1a740c321e1982706061e46259cd75115b3b3779195f21d57cc3 sha256: "2ecb34619a4be19df6f40c2f8dce1591675b4eff7a6857bd8f533706977385da"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.1" version: "7.0.2"
flutter_markdown: flutter_markdown:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_markdown name: flutter_markdown
sha256: "85cc6f7daeae537844c92e2d56e2aff61b00095f8f77913b529ea4be12fc45ea" sha256: "2e8a801b1ded5ea001a4529c97b1f213dcb11c6b20668e081cafb23468593514"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.2+1" version: "0.7.3"
flutter_plugin_android_lifecycle: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
@ -643,18 +643,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: google_maps_flutter_android name: google_maps_flutter_android
sha256: e9a506d05a4c70b091ebe41b1f28f3b1efdfddfa4f81487018d9feebeff94709 sha256: f6306d83edddba7aa017ca6f547d6f36a1443f90ed49d91d48ef70d7aa86e2e1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.0" version: "2.12.0"
google_maps_flutter_ios: google_maps_flutter_ios:
dependency: transitive dependency: transitive
description: description:
name: google_maps_flutter_ios name: google_maps_flutter_ios
sha256: "7250837d9b2f1a40d7724d735aaa4fc574c5f0e120f3f43149aceace16095ccf" sha256: ef8a646c2fa2211b179ec2fe074d7aacbe63d261d321786da7508bcc6daa2a64
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.8.0" version: "2.8.2"
google_maps_flutter_platform_interface: google_maps_flutter_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -811,10 +811,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: local_auth_android name: local_auth_android
sha256: b77dc490fef9214e785c326bf11fa733feaa47675d0433f05f48b5caa486c8f7 sha256: "33fcebe9c3cf1bb0033bc85caed354c1e75ff7f7670918a571bd3152a2b65bf4"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.40" version: "1.0.42"
local_auth_darwin: local_auth_darwin:
dependency: transitive dependency: transitive
description: description:
@ -948,7 +948,7 @@ packages:
description: description:
path: "." path: "."
ref: aves ref: aves
resolved-ref: ca4b4345bef3af58989abd93cb01c3e3e4654710 resolved-ref: "4b11d59f4bda152627f701070272f657f8358e67"
url: "https://github.com/deckerst/aves_panorama_motion_sensors.git" url: "https://github.com/deckerst/aves_panorama_motion_sensors.git"
source: git source: git
version: "0.1.0" version: "0.1.0"
@ -1037,7 +1037,7 @@ packages:
description: description:
path: "." path: "."
ref: aves ref: aves
resolved-ref: "60feae72537dff610ad306ebcacc14703335fdb7" resolved-ref: "56de42183e4c1df7b64a714d9066049b9febb85c"
url: "https://github.com/deckerst/aves_panorama.git" url: "https://github.com/deckerst/aves_panorama.git"
source: git source: git
version: "0.4.1" version: "0.4.1"
@ -1093,10 +1093,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: pdf name: pdf
sha256: "243f05342fc0bdf140eba5b069398985cdbdd3dbb1d776cf43d5ea29cc570ba6" sha256: "81d5522bddc1ef5c28e8f0ee40b71708761753c163e0c93a40df56fd515ea0f0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.10.8" version: "3.11.0"
pdf_widget_wrapper: pdf_widget_wrapper:
dependency: transitive dependency: transitive
description: description:
@ -1213,10 +1213,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: printing name: printing
sha256: "1c99cab90ebcc1fff65831d264627d5b529359d563e53f33ab9b8117f2d280bc" sha256: cc4b256a5a89d5345488e3318897b595867f5181b8c5ed6fc63bfa5f2044aec3
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.12.0" version: "5.13.1"
process: process:
dependency: transitive dependency: transitive
description: description:
@ -1499,7 +1499,7 @@ packages:
description: description:
path: "." path: "."
ref: HEAD ref: HEAD
resolved-ref: acaf1351bf7f5f2cf2ea25989b732b9acb56e267 resolved-ref: "35a9b0fcc0e97f756756c0010fb223129c2d832c"
url: "https://github.com/deckerst/aves_streams_channel.git" url: "https://github.com/deckerst/aves_streams_channel.git"
source: git source: git
version: "0.3.0" version: "0.3.0"

View file

@ -7,7 +7,7 @@ repository: https://github.com/deckerst/aves
# - play changelog: /whatsnew/whatsnew-en-US # - play changelog: /whatsnew/whatsnew-en-US
# - izzy changelog: /fastlane/metadata/android/en-US/changelogs/XXX01.txt # - izzy changelog: /fastlane/metadata/android/en-US/changelogs/XXX01.txt
# - libre changelog: /fastlane/metadata/android/en-US/changelogs/XXX.txt # - libre changelog: /fastlane/metadata/android/en-US/changelogs/XXX.txt
version: 1.11.4+123 version: 1.11.5+124
publish_to: none publish_to: none
environment: environment:

View file

@ -1,13 +0,0 @@
#!/bin/bash
if [ ! -d "scripts" ]; then
cd ..
fi
PUBSPEC_PATH="pubspec.yaml"
./flutterw clean
sed -i 's|plugins/aves_services_.*|plugins/aves_services_huawei|g' "$PUBSPEC_PATH"
sed -i 's|plugins/aves_report_.*|plugins/aves_report_console|g' "$PUBSPEC_PATH"
./flutterw pub get

View file

@ -1,4 +1,4 @@
In v1.11.4: In v1.11.5:
- explore your collection with the... explorer - explore your collection with the... explorer
- convert your motion photos to stills in bulk - convert your motion photos to stills in bulk
Full changelog available on GitHub Full changelog available on GitHub