Merge branch 'develop'
2
.flutter
|
@ -1 +1 @@
|
||||||
Subproject commit 603104015dd692ea3403755b55d07813d5cf8965
|
Subproject commit dec2ee5c1f98f8e84a7d5380c05eb8a3d0a81668
|
4
.github/workflows/quality-check.yml
vendored
|
@ -69,7 +69,7 @@ jobs:
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
|
uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
build-mode: ${{ matrix.build-mode }}
|
build-mode: ${{ matrix.build-mode }}
|
||||||
|
@ -83,6 +83,6 @@ jobs:
|
||||||
./flutterw build apk --profile -t lib/main_play.dart --flavor play
|
./flutterw build apk --profile -t lib/main_play.dart --flavor play
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
|
uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
|
||||||
with:
|
with:
|
||||||
category: "/language:${{matrix.language}}"
|
category: "/language:${{matrix.language}}"
|
||||||
|
|
2
.github/workflows/release.yml
vendored
|
@ -75,7 +75,7 @@ jobs:
|
||||||
AVES_GOOGLE_API_KEY: ${{ secrets.AVES_GOOGLE_API_KEY }}
|
AVES_GOOGLE_API_KEY: ${{ secrets.AVES_GOOGLE_API_KEY }}
|
||||||
|
|
||||||
- name: Generate artifact attestation
|
- name: Generate artifact attestation
|
||||||
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
|
uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
|
||||||
with:
|
with:
|
||||||
subject-path: 'outputs/*'
|
subject-path: 'outputs/*'
|
||||||
|
|
||||||
|
|
2
.github/workflows/scorecards.yml
vendored
|
@ -71,6 +71,6 @@ jobs:
|
||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
# Upload the results to GitHub's code scanning dashboard.
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
|
uses: github/codeql-action/upload-sarif@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|
14
CHANGELOG.md
|
@ -4,6 +4,20 @@ 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.18"></a>[v1.11.18] - 2024-11-18
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Albums: improved album creation feedback
|
||||||
|
- upgraded Flutter to stable v3.24.5
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- crash when playing video with DCL restriction enabled
|
||||||
|
- cataloguing images with wrong MPF offsets
|
||||||
|
- printing multi-page items containing some unprintable pages
|
||||||
|
- English (Shavian) locale tags for store listing
|
||||||
|
|
||||||
## <a id="v1.11.17"></a>[v1.11.17] - 2024-10-30
|
## <a id="v1.11.17"></a>[v1.11.17] - 2024-10-30
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -154,12 +154,12 @@ dependencies {
|
||||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1'
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1'
|
||||||
|
|
||||||
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.15.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-process:2.8.6'
|
implementation 'androidx.lifecycle:lifecycle-process:2.8.7'
|
||||||
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'
|
||||||
implementation 'androidx.work:work-runtime-ktx:2.9.1'
|
implementation 'androidx.work:work-runtime-ktx:2.10.0'
|
||||||
|
|
||||||
implementation 'com.caverock:androidsvg-aar:1.4'
|
implementation 'com.caverock:androidsvg-aar:1.4'
|
||||||
implementation 'com.commonsware.cwac:document:0.5.0'
|
implementation 'com.commonsware.cwac:document:0.5.0'
|
||||||
|
@ -181,7 +181,7 @@ dependencies {
|
||||||
|
|
||||||
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.3'
|
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.3'
|
||||||
|
|
||||||
kapt 'androidx.annotation:annotation:1.8.2'
|
kapt 'androidx.annotation:annotation:1.9.1'
|
||||||
ksp "com.github.bumptech.glide:ksp:$glide_version"
|
ksp "com.github.bumptech.glide:ksp:$glide_version"
|
||||||
|
|
||||||
compileOnly rootProject.findProject(':streams_channel')
|
compileOnly rootProject.findProject(':streams_channel')
|
||||||
|
|
|
@ -792,7 +792,7 @@ class MetadataFetchHandler(private val context: Context) : MethodCallHandler {
|
||||||
|
|
||||||
private fun hasAppleHdrGainMap(uri: Uri, sizeBytes: Long?): Boolean {
|
private fun hasAppleHdrGainMap(uri: Uri, sizeBytes: Long?): Boolean {
|
||||||
val mpEntries = MultiPage.getJpegMpfEntries(context, uri, sizeBytes) ?: return false
|
val mpEntries = MultiPage.getJpegMpfEntries(context, uri, sizeBytes) ?: return false
|
||||||
mpEntries.filter { it.type == MpEntry.TYPE_UNDEFINED }.forEach { mpEntry ->
|
mpEntries.filter { it.type == MpEntry.TYPE_UNDEFINED }.forEachIndexed { mpIndex, mpEntry ->
|
||||||
var dataOffset = mpEntry.dataOffset
|
var dataOffset = mpEntry.dataOffset
|
||||||
if (dataOffset > 0) {
|
if (dataOffset > 0) {
|
||||||
val baseOffset = MultiPage.getJpegMpfBaseOffset(context, uri, sizeBytes)
|
val baseOffset = MultiPage.getJpegMpfBaseOffset(context, uri, sizeBytes)
|
||||||
|
@ -802,10 +802,14 @@ class MetadataFetchHandler(private val context: Context) : MethodCallHandler {
|
||||||
}
|
}
|
||||||
StorageUtils.openInputStream(context, uri)?.let { input ->
|
StorageUtils.openInputStream(context, uri)?.let { input ->
|
||||||
input.skip(dataOffset)
|
input.skip(dataOffset)
|
||||||
|
try {
|
||||||
val pageMetadata = Helper.safeRead(input, sizeBytes)
|
val pageMetadata = Helper.safeRead(input, sizeBytes)
|
||||||
if (pageMetadata.getDirectoriesOfType(XmpDirectory::class.java).any { it.xmpMeta.hasHdrGainMap() }) {
|
if (pageMetadata.getDirectoriesOfType(XmpDirectory::class.java).any { it.xmpMeta.hasHdrGainMap() }) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.w(LOG_TAG, "failed to read metadata by metadata-extractor for uri=$uri mpIndex=$mpIndex mpEntry=$mpEntry", e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -99,9 +99,12 @@ object MimeTypes {
|
||||||
else -> true
|
else -> true
|
||||||
}
|
}
|
||||||
|
|
||||||
// as of `ExifInterface` v1.3.1, `isSupportedMimeType` reports
|
// as of `ExifInterface` v1.4.0-alpha01, `isSupportedMimeType` reports
|
||||||
// no support for TIFF images, but it can actually open them (maybe other formats too)
|
// no support for AVIF/TIFF images, but it can actually open them (maybe other formats too)
|
||||||
fun canReadWithExifInterface(mimeType: String, strict: Boolean = true) = ExifInterface.isSupportedMimeType(mimeType) || !strict
|
fun canReadWithExifInterface(mimeType: String, strict: Boolean = true): Boolean {
|
||||||
|
if (!strict) return true
|
||||||
|
return ExifInterface.isSupportedMimeType(mimeType) || mimeType == AVIF
|
||||||
|
}
|
||||||
|
|
||||||
// as of latest PixyMeta
|
// as of latest PixyMeta
|
||||||
fun canReadWithPixyMeta(mimeType: String) = when (mimeType) {
|
fun canReadWithPixyMeta(mimeType: String) = when (mimeType) {
|
||||||
|
@ -143,7 +146,7 @@ object MimeTypes {
|
||||||
return if (pageId != null && MultiPageImage.isSupported(mimeType)) {
|
return if (pageId != null && MultiPageImage.isSupported(mimeType)) {
|
||||||
true
|
true
|
||||||
} else when (mimeType) {
|
} else when (mimeType) {
|
||||||
DNG, DNG_ADOBE, HEIC, HEIF, PNG, WEBP -> true
|
AVIF, DNG, DNG_ADOBE, HEIC, HEIF, PNG, WEBP -> true
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
android/app/src/main/res/values-az/strings.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="app_name">Aves</string>
|
||||||
|
<string name="app_widget_label">Şəkil Çərçivəsi</string>
|
||||||
|
<string name="wallpaper">Divar kağızı</string>
|
||||||
|
<string name="map_shortcut_short_label">Xəritə</string>
|
||||||
|
<string name="search_shortcut_short_label">Axtarış</string>
|
||||||
|
<string name="videos_shortcut_short_label">Videolar</string>
|
||||||
|
<string name="analysis_channel_name">Medianı yoxla</string>
|
||||||
|
<string name="analysis_notification_default_title">Media yoxlanılır</string>
|
||||||
|
<string name="analysis_notification_action_stop">Dayandır</string>
|
||||||
|
</resources>
|
12
android/app/src/main/res/values-et/strings.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="app_name">Aves</string>
|
||||||
|
<string name="app_widget_label">Fotoraam</string>
|
||||||
|
<string name="wallpaper">Taustapilt</string>
|
||||||
|
<string name="map_shortcut_short_label">Kaart</string>
|
||||||
|
<string name="search_shortcut_short_label">Otsi</string>
|
||||||
|
<string name="videos_shortcut_short_label">Videod</string>
|
||||||
|
<string name="analysis_channel_name">Meedia tuvastamine</string>
|
||||||
|
<string name="analysis_notification_default_title">Tuvastame meediat</string>
|
||||||
|
<string name="analysis_notification_action_stop">Peata</string>
|
||||||
|
</resources>
|
|
@ -8,4 +8,5 @@
|
||||||
<string name="analysis_channel_name">Сканировать медия</string>
|
<string name="analysis_channel_name">Сканировать медия</string>
|
||||||
<string name="analysis_notification_default_title">Сканирование медиа</string>
|
<string name="analysis_notification_default_title">Сканирование медиа</string>
|
||||||
<string name="analysis_notification_action_stop">Стоп</string>
|
<string name="analysis_notification_action_stop">Стоп</string>
|
||||||
|
<string name="map_shortcut_short_label">Карта</string>
|
||||||
</resources>
|
</resources>
|
|
@ -26,5 +26,6 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'androidx.annotation:annotation:1.8.2'
|
implementation 'androidx.annotation:annotation:1.9.1'
|
||||||
|
implementation 'org.jspecify:jspecify:1.0.0'
|
||||||
}
|
}
|
|
@ -1,4 +1,2 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest />
|
||||||
|
|
||||||
</manifest>
|
|
|
@ -18,12 +18,10 @@ package androidx.exifinterface.media;
|
||||||
|
|
||||||
import android.media.MediaDataSource;
|
import android.media.MediaDataSource;
|
||||||
import android.media.MediaMetadataRetriever;
|
import android.media.MediaMetadataRetriever;
|
||||||
import android.os.Build;
|
|
||||||
import android.system.ErrnoException;
|
import android.system.ErrnoException;
|
||||||
import android.system.Os;
|
import android.system.Os;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.DoNotInline;
|
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
|
@ -32,12 +30,19 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Forked from 'androidx.exifinterface:exifinterface:1.4.0-alpha01' on 2024/11/17
|
||||||
|
* Named differently to let ExifInterface be loaded as subdependency.
|
||||||
|
* cf https://github.com/androidx/androidx/tree/androidx-main/exifinterface/exifinterface/src/main/java/androidx/exifinterface/media
|
||||||
|
*/
|
||||||
|
|
||||||
class ExifInterfaceUtilsFork {
|
class ExifInterfaceUtilsFork {
|
||||||
private static final String TAG = "ExifInterfaceUtils";
|
private static final String TAG = "ExifInterfaceUtils";
|
||||||
|
|
||||||
private ExifInterfaceUtilsFork() {
|
private ExifInterfaceUtilsFork() {
|
||||||
// Prevent instantiation
|
// Prevent instantiation
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copies all of the bytes from {@code in} to {@code out}. Neither stream is closed.
|
* Copies all of the bytes from {@code in} to {@code out}. Neither stream is closed.
|
||||||
* Returns the total number of bytes transferred.
|
* Returns the total number of bytes transferred.
|
||||||
|
@ -146,45 +151,18 @@ class ExifInterfaceUtilsFork {
|
||||||
* Closes a file descriptor that has been duplicated.
|
* Closes a file descriptor that has been duplicated.
|
||||||
*/
|
*/
|
||||||
static void closeFileDescriptor(FileDescriptor fd) {
|
static void closeFileDescriptor(FileDescriptor fd) {
|
||||||
// Os.dup and Os.close was introduced in API 21 so this method shouldn't be called
|
|
||||||
// in API < 21.
|
|
||||||
if (Build.VERSION.SDK_INT >= 21) {
|
|
||||||
try {
|
try {
|
||||||
Api21Impl.close(fd);
|
|
||||||
// Catching ErrnoException will raise error in API < 21
|
|
||||||
} catch (Exception ex) {
|
|
||||||
Log.e(TAG, "Error closing fd.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Log.e(TAG, "closeFileDescriptor is called in API < 21, which must be wrong.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequiresApi(21)
|
|
||||||
static class Api21Impl {
|
|
||||||
private Api21Impl() {}
|
|
||||||
|
|
||||||
@DoNotInline
|
|
||||||
static FileDescriptor dup(FileDescriptor fileDescriptor) throws ErrnoException {
|
|
||||||
return Os.dup(fileDescriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@DoNotInline
|
|
||||||
static long lseek(FileDescriptor fd, long offset, int whence) throws ErrnoException {
|
|
||||||
return Os.lseek(fd, offset, whence);
|
|
||||||
}
|
|
||||||
|
|
||||||
@DoNotInline
|
|
||||||
static void close(FileDescriptor fd) throws ErrnoException {
|
|
||||||
Os.close(fd);
|
Os.close(fd);
|
||||||
|
} catch (ErrnoException ex) {
|
||||||
|
Log.e(TAG, "Error closing fd.", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(23)
|
@RequiresApi(23)
|
||||||
static class Api23Impl {
|
static class Api23Impl {
|
||||||
private Api23Impl() {}
|
private Api23Impl() {
|
||||||
|
}
|
||||||
|
|
||||||
@DoNotInline
|
|
||||||
static void setDataSource(MediaMetadataRetriever retriever, MediaDataSource dataSource) {
|
static void setDataSource(MediaMetadataRetriever retriever, MediaDataSource dataSource) {
|
||||||
retriever.setDataSource(dataSource);
|
retriever.setDataSource(dataSource);
|
||||||
}
|
}
|
||||||
|
|
5
fastlane/metadata/android/az/full_description.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<i>Aves</i> can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like <b>multi-page TIFFs, SVGs, old AVIs and more</b>! It scans your media collection to identify <b>motion photos</b>, <b>panoramas</b> (aka photo spheres), <b>360° videos</b>, as well as <b>GeoTIFF</b> files.
|
||||||
|
|
||||||
|
<b>Navigation and search</b> is an important part of <i>Aves</i>. The goal is for users to easily flow from albums to photos to tags to maps, etc.
|
||||||
|
|
||||||
|
<i>Aves</i> integrates with Android (from KitKat to Android 14, including Android TV) with features such as <b>widgets</b>, <b>app shortcuts</b>, <b>screen saver</b> and <b>global search</b> handling. It also works as a <b>media viewer and picker</b>.
|
1
fastlane/metadata/android/az/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Gallery and metadata explorer
|
5
fastlane/metadata/android/en-US/changelogs/137.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
In v1.11.18:
|
||||||
|
- peruse your videos frame by frame
|
||||||
|
- create map shortcuts to filtered collections
|
||||||
|
- enjoy the app in Shavian
|
||||||
|
Full changelog available on GitHub
|
5
fastlane/metadata/android/en-US/changelogs/13701.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
In v1.11.18:
|
||||||
|
- peruse your videos frame by frame
|
||||||
|
- create map shortcuts to filtered collections
|
||||||
|
- enjoy the app in Shavian
|
||||||
|
Full changelog available on GitHub
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 280 KiB |
Before Width: | Height: | Size: 496 KiB After Width: | Height: | Size: 496 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 325 KiB After Width: | Height: | Size: 325 KiB |
Before Width: | Height: | Size: 336 KiB After Width: | Height: | Size: 336 KiB |
5
fastlane/metadata/android/et/full_description.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<i>Aves</i> can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like <b>multi-page TIFFs, SVGs, old AVIs and more</b>! It scans your media collection to identify <b>motion photos</b>, <b>panoramas</b> (aka photo spheres), <b>360° videos</b>, as well as <b>GeoTIFF</b> files.
|
||||||
|
|
||||||
|
<b>Navigation and search</b> is an important part of <i>Aves</i>. The goal is for users to easily flow from albums to photos to tags to maps, etc.
|
||||||
|
|
||||||
|
<i>Aves</i> integrates with Android (from KitKat to Android 14, including Android TV) with features such as <b>widgets</b>, <b>app shortcuts</b>, <b>screen saver</b> and <b>global search</b> handling. It also works as a <b>media viewer and picker</b>.
|
1
fastlane/metadata/android/et/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Galerii ja metainfo kuvaja
|
|
@ -269,7 +269,7 @@
|
||||||
"@tileLayoutGrid": {},
|
"@tileLayoutGrid": {},
|
||||||
"settingsDisplayUseTvInterface": "واجهة أندرويد TV",
|
"settingsDisplayUseTvInterface": "واجهة أندرويد TV",
|
||||||
"@settingsDisplayUseTvInterface": {},
|
"@settingsDisplayUseTvInterface": {},
|
||||||
"settingsTimeToTakeActionTile": "حان الوقت لاتخاذ الإجراءات اللازمة",
|
"settingsTimeToTakeActionTile": "وقت إتخاذ الإجراءات",
|
||||||
"@settingsTimeToTakeActionTile": {},
|
"@settingsTimeToTakeActionTile": {},
|
||||||
"aboutCreditsWorldAtlas1": "يستخدم هذا التطبيق ملف TopoJSON من",
|
"aboutCreditsWorldAtlas1": "يستخدم هذا التطبيق ملف TopoJSON من",
|
||||||
"@aboutCreditsWorldAtlas1": {},
|
"@aboutCreditsWorldAtlas1": {},
|
||||||
|
@ -1544,5 +1544,11 @@
|
||||||
"mapStyleOsmLiberty": "حرية خرائط OSM",
|
"mapStyleOsmLiberty": "حرية خرائط OSM",
|
||||||
"@mapStyleOsmLiberty": {},
|
"@mapStyleOsmLiberty": {},
|
||||||
"mapAttributionOsmLiberty": "البلاط بواسطة [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • مُستضاف بواسطة [OSM Americana](https://tile.ourmap.us)",
|
"mapAttributionOsmLiberty": "البلاط بواسطة [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • مُستضاف بواسطة [OSM Americana](https://tile.ourmap.us)",
|
||||||
"@mapAttributionOsmLiberty": {}
|
"@mapAttributionOsmLiberty": {},
|
||||||
|
"videoActionShowPreviousFrame": "إظهار الإطار السابق",
|
||||||
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"videoActionShowNextFrame": "إظهار الإطار التالي",
|
||||||
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "الألبوم موجود بالفعل",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
121
lib/l10n/app_az.arb
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"columnCount": "{count, plural, =1{{count} sütun} other{{count} sütun}}",
|
||||||
|
"@columnCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeSeconds": "{count, plural, =1{{count} saniyə} other{{count} saniyə}}",
|
||||||
|
"@timeSeconds": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hideTooltip": "Gizlət",
|
||||||
|
"@hideTooltip": {},
|
||||||
|
"chipActionGoToAlbumPage": "Albomlarda Göstər",
|
||||||
|
"@chipActionGoToAlbumPage": {},
|
||||||
|
"chipActionGoToCountryPage": "Ölkələrdə Göstər",
|
||||||
|
"@chipActionGoToCountryPage": {},
|
||||||
|
"welcomeOptional": "Zəruri deyil",
|
||||||
|
"@welcomeOptional": {},
|
||||||
|
"welcomeTermsToggle": "Mən hökm və şərtlərlə razıyam",
|
||||||
|
"@welcomeTermsToggle": {},
|
||||||
|
"itemCount": "{count, plural, =1{{count} element}\n other{{count} element}}",
|
||||||
|
"@itemCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeMinutes": "{count, plural, =1{{count} dəqiqə} other{{count} dəqiqə}}",
|
||||||
|
"@timeMinutes": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeDays": "{count, plural, =1{{count} gün} other{{count} gün}}",
|
||||||
|
"@timeDays": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"focalLength": "{length} mm",
|
||||||
|
"@focalLength": {
|
||||||
|
"placeholders": {
|
||||||
|
"length": {
|
||||||
|
"type": "String",
|
||||||
|
"example": "5.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"applyButtonLabel": "TƏTBİQ ET",
|
||||||
|
"@applyButtonLabel": {},
|
||||||
|
"deleteButtonLabel": "SİL",
|
||||||
|
"@deleteButtonLabel": {},
|
||||||
|
"nextButtonLabel": "NÖVBƏTİ",
|
||||||
|
"@nextButtonLabel": {},
|
||||||
|
"showButtonLabel": "GÖSTƏR",
|
||||||
|
"@showButtonLabel": {},
|
||||||
|
"hideButtonLabel": "GİZLƏT",
|
||||||
|
"@hideButtonLabel": {},
|
||||||
|
"continueButtonLabel": "DAVAM ET",
|
||||||
|
"@continueButtonLabel": {},
|
||||||
|
"saveCopyButtonLabel": "NÜSXƏNİ SAXLA",
|
||||||
|
"@saveCopyButtonLabel": {},
|
||||||
|
"applyTooltip": "Tətbiq et",
|
||||||
|
"@applyTooltip": {},
|
||||||
|
"cancelTooltip": "Ləğv et",
|
||||||
|
"@cancelTooltip": {},
|
||||||
|
"changeTooltip": "Dəyişdir",
|
||||||
|
"@changeTooltip": {},
|
||||||
|
"clearTooltip": "Təmizlə",
|
||||||
|
"@clearTooltip": {},
|
||||||
|
"previousTooltip": "Əvvəlki",
|
||||||
|
"@previousTooltip": {},
|
||||||
|
"nextTooltip": "Növbəti",
|
||||||
|
"@nextTooltip": {},
|
||||||
|
"showTooltip": "Göstər",
|
||||||
|
"@showTooltip": {},
|
||||||
|
"actionRemove": "Təmizlə",
|
||||||
|
"@actionRemove": {},
|
||||||
|
"resetTooltip": "Sıfırla",
|
||||||
|
"@resetTooltip": {},
|
||||||
|
"saveTooltip": "Saxla",
|
||||||
|
"@saveTooltip": {},
|
||||||
|
"stopTooltip": "Dayandır",
|
||||||
|
"@stopTooltip": {},
|
||||||
|
"pickTooltip": "Seçin",
|
||||||
|
"@pickTooltip": {},
|
||||||
|
"doubleBackExitMessage": "Çıxmaq üçün təkrar “geri”-yə kliklə.",
|
||||||
|
"@doubleBackExitMessage": {},
|
||||||
|
"doNotAskAgain": "Təkrar soruşma",
|
||||||
|
"@doNotAskAgain": {},
|
||||||
|
"sourceStateLoading": "Yüklənilir",
|
||||||
|
"@sourceStateLoading": {},
|
||||||
|
"sourceStateCataloguing": "Sənədləşdirmə",
|
||||||
|
"@sourceStateCataloguing": {},
|
||||||
|
"sourceStateLocatingCountries": "Ölkələr yerləşdirilir",
|
||||||
|
"@sourceStateLocatingCountries": {},
|
||||||
|
"sourceStateLocatingPlaces": "Yerlər müəyyənləşdirilir",
|
||||||
|
"@sourceStateLocatingPlaces": {},
|
||||||
|
"chipActionDelete": "Sil",
|
||||||
|
"@chipActionDelete": {},
|
||||||
|
"chipActionShowCollection": "Kolleksiyada Göstər",
|
||||||
|
"@chipActionShowCollection": {},
|
||||||
|
"chipActionGoToPlacePage": "Yerlərdə Göstər",
|
||||||
|
"@chipActionGoToPlacePage": {},
|
||||||
|
"appName": "Aves",
|
||||||
|
"@appName": {},
|
||||||
|
"welcomeMessage": "Aves-ə Xoş Gəlmisiniz",
|
||||||
|
"@welcomeMessage": {}
|
||||||
|
}
|
|
@ -971,7 +971,7 @@
|
||||||
"@settingsRemoveAnimationsDialogTitle": {},
|
"@settingsRemoveAnimationsDialogTitle": {},
|
||||||
"settingsTimeToTakeActionTile": "Zeit zum Reagieren",
|
"settingsTimeToTakeActionTile": "Zeit zum Reagieren",
|
||||||
"@settingsTimeToTakeActionTile": {},
|
"@settingsTimeToTakeActionTile": {},
|
||||||
"settingsDisplaySectionTitle": "Anzeige",
|
"settingsDisplaySectionTitle": "Darstellung",
|
||||||
"@settingsDisplaySectionTitle": {},
|
"@settingsDisplaySectionTitle": {},
|
||||||
"settingsThemeBrightnessTile": "Thema",
|
"settingsThemeBrightnessTile": "Thema",
|
||||||
"@settingsThemeBrightnessTile": {},
|
"@settingsThemeBrightnessTile": {},
|
||||||
|
@ -1378,5 +1378,19 @@
|
||||||
"explorerPageTitle": "Explorer",
|
"explorerPageTitle": "Explorer",
|
||||||
"@explorerPageTitle": {},
|
"@explorerPageTitle": {},
|
||||||
"mapAttributionOsmData": "Kartendaten © [OpenStreetMap](https://www.openstreetmap.org/copyright) Mitwirkende",
|
"mapAttributionOsmData": "Kartendaten © [OpenStreetMap](https://www.openstreetmap.org/copyright) Mitwirkende",
|
||||||
"@mapAttributionOsmData": {}
|
"@mapAttributionOsmData": {},
|
||||||
|
"videoActionShowPreviousFrame": "Vorigen Frame zeigen",
|
||||||
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"videoActionShowNextFrame": "Nächsten Frame zeigen",
|
||||||
|
"@videoActionShowNextFrame": {},
|
||||||
|
"mapStyleOpenTopoMap": "OpenTopoMap",
|
||||||
|
"@mapStyleOpenTopoMap": {},
|
||||||
|
"mapStyleOsmLiberty": "OSM Liberty",
|
||||||
|
"@mapStyleOsmLiberty": {},
|
||||||
|
"mapAttributionOsmLiberty": "Kacheln von [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Gehostet von [OSM Americana](https://tile.ourmap.us)",
|
||||||
|
"@mapAttributionOsmLiberty": {},
|
||||||
|
"mapAttributionOpenTopoMap": "[SRTM](https://www.earthdata.nasa.gov/sensors/srtm) | Kacheln von [OpenTopoMap](https://opentopomap.org/), [CC BY-SA](https://creativecommons.org/licenses/by-sa/3.0/)",
|
||||||
|
"@mapAttributionOpenTopoMap": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Album existiert bereits",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -423,6 +423,7 @@
|
||||||
|
|
||||||
"newAlbumDialogTitle": "New Album",
|
"newAlbumDialogTitle": "New Album",
|
||||||
"newAlbumDialogNameLabel": "Album name",
|
"newAlbumDialogNameLabel": "Album name",
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Album already exists",
|
||||||
"newAlbumDialogNameLabelAlreadyExistsHelper": "Directory already exists",
|
"newAlbumDialogNameLabelAlreadyExistsHelper": "Directory already exists",
|
||||||
"newAlbumDialogStorageLabel": "Storage:",
|
"newAlbumDialogStorageLabel": "Storage:",
|
||||||
|
|
||||||
|
|
|
@ -1390,5 +1390,7 @@
|
||||||
"videoActionShowPreviousFrame": "Mostrar fotograma anterior",
|
"videoActionShowPreviousFrame": "Mostrar fotograma anterior",
|
||||||
"@videoActionShowPreviousFrame": {},
|
"@videoActionShowPreviousFrame": {},
|
||||||
"videoActionShowNextFrame": "Mostrar fotograma siguiente",
|
"videoActionShowNextFrame": "Mostrar fotograma siguiente",
|
||||||
"@videoActionShowNextFrame": {}
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "El álbum ya existe",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
468
lib/l10n/app_et.arb
Normal file
|
@ -0,0 +1,468 @@
|
||||||
|
{
|
||||||
|
"welcomeMessage": "Tere tulemast kasutama Avest",
|
||||||
|
"@welcomeMessage": {},
|
||||||
|
"welcomeOptional": "Pole kohustuslik",
|
||||||
|
"@welcomeOptional": {},
|
||||||
|
"itemCount": "{count, plural, =1{{count} objekt} other{{count} objekti}}",
|
||||||
|
"@itemCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeSeconds": "{count, plural, =1{{count} sekund} other{{count} sekundit}}",
|
||||||
|
"@timeSeconds": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeMinutes": "{count, plural, =1{{count} minut} other{{count} minutit}}",
|
||||||
|
"@timeMinutes": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeDays": "{count, plural, =1{{count} päev} other{{count} päeva}}",
|
||||||
|
"@timeDays": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"applyTooltip": "Rakenda",
|
||||||
|
"@applyTooltip": {},
|
||||||
|
"cancelTooltip": "Katkesta",
|
||||||
|
"@cancelTooltip": {},
|
||||||
|
"changeTooltip": "Muuda",
|
||||||
|
"@changeTooltip": {},
|
||||||
|
"nextTooltip": "Järgmine",
|
||||||
|
"@nextTooltip": {},
|
||||||
|
"showTooltip": "Näita",
|
||||||
|
"@showTooltip": {},
|
||||||
|
"hideTooltip": "Peida",
|
||||||
|
"@hideTooltip": {},
|
||||||
|
"actionRemove": "Eemalda",
|
||||||
|
"@actionRemove": {},
|
||||||
|
"resetTooltip": "Lähtesta",
|
||||||
|
"@resetTooltip": {},
|
||||||
|
"saveTooltip": "Salvesta",
|
||||||
|
"@saveTooltip": {},
|
||||||
|
"pickTooltip": "Vali",
|
||||||
|
"@pickTooltip": {},
|
||||||
|
"doubleBackExitMessage": "Väljumiseks klõpsi uuesti nuppu „Tagasi“.",
|
||||||
|
"@doubleBackExitMessage": {},
|
||||||
|
"doNotAskAgain": "Ära küsi enam uuesti",
|
||||||
|
"@doNotAskAgain": {},
|
||||||
|
"sourceStateLoading": "Laadime andmeid",
|
||||||
|
"@sourceStateLoading": {},
|
||||||
|
"sourceStateCataloguing": "Katalogiseerime",
|
||||||
|
"@sourceStateCataloguing": {},
|
||||||
|
"sourceStateLocatingCountries": "Tuvastame riike",
|
||||||
|
"@sourceStateLocatingCountries": {},
|
||||||
|
"sourceStateLocatingPlaces": "Tuvastame asukohti",
|
||||||
|
"@sourceStateLocatingPlaces": {},
|
||||||
|
"chipActionDelete": "Kustuta",
|
||||||
|
"@chipActionDelete": {},
|
||||||
|
"applyButtonLabel": "RAKENDA",
|
||||||
|
"@applyButtonLabel": {},
|
||||||
|
"deleteButtonLabel": "KUSTUTA",
|
||||||
|
"@deleteButtonLabel": {},
|
||||||
|
"nextButtonLabel": "JÄRGMINE",
|
||||||
|
"@nextButtonLabel": {},
|
||||||
|
"showButtonLabel": "NÄITA",
|
||||||
|
"@showButtonLabel": {},
|
||||||
|
"continueButtonLabel": "JÄTKA",
|
||||||
|
"@continueButtonLabel": {},
|
||||||
|
"saveCopyButtonLabel": "SALVESTA KOOPIA",
|
||||||
|
"@saveCopyButtonLabel": {},
|
||||||
|
"chipActionShowCollection": "Näita kogumikus",
|
||||||
|
"@chipActionShowCollection": {},
|
||||||
|
"chipActionGoToAlbumPage": "Näita albumites",
|
||||||
|
"@chipActionGoToAlbumPage": {},
|
||||||
|
"chipActionGoToCountryPage": "Näita riikides",
|
||||||
|
"@chipActionGoToCountryPage": {},
|
||||||
|
"chipActionGoToPlacePage": "Näita asukohtades",
|
||||||
|
"@chipActionGoToPlacePage": {},
|
||||||
|
"chipActionGoToTagPage": "Näita siltides",
|
||||||
|
"@chipActionGoToTagPage": {},
|
||||||
|
"chipActionGoToExplorerPage": "Näita sirvijas",
|
||||||
|
"@chipActionGoToExplorerPage": {},
|
||||||
|
"chipActionFilterOut": "Sõelu välja",
|
||||||
|
"@chipActionFilterOut": {},
|
||||||
|
"chipActionFilterIn": "Sõelu sisse",
|
||||||
|
"@chipActionFilterIn": {},
|
||||||
|
"chipActionHide": "Peida",
|
||||||
|
"@chipActionHide": {},
|
||||||
|
"chipActionLock": "Lukusta",
|
||||||
|
"@chipActionLock": {},
|
||||||
|
"chipActionPin": "Kinnita üles äärde",
|
||||||
|
"@chipActionPin": {},
|
||||||
|
"stopTooltip": "Lõpeta",
|
||||||
|
"@stopTooltip": {},
|
||||||
|
"entryActionOpenMap": "Näita kaardirakenduses",
|
||||||
|
"@entryActionOpenMap": {},
|
||||||
|
"chipActionUnpin": "Eemalda ülalt äärest",
|
||||||
|
"@chipActionUnpin": {},
|
||||||
|
"chipActionRename": "Muuda nime",
|
||||||
|
"@chipActionRename": {},
|
||||||
|
"chipActionShowCountryStates": "Näita riike",
|
||||||
|
"@chipActionShowCountryStates": {},
|
||||||
|
"chipActionCreateAlbum": "Loo album",
|
||||||
|
"@chipActionCreateAlbum": {},
|
||||||
|
"chipActionCreateVault": "Loo turvaruum",
|
||||||
|
"@chipActionCreateVault": {},
|
||||||
|
"chipActionConfigureVault": "Seadista turvaruumi",
|
||||||
|
"@chipActionConfigureVault": {},
|
||||||
|
"entryActionCopyToClipboard": "Kopeeri lõikelauale",
|
||||||
|
"@entryActionCopyToClipboard": {},
|
||||||
|
"entryActionDelete": "Kustuta",
|
||||||
|
"@entryActionDelete": {},
|
||||||
|
"entryActionConvert": "Konverteeri",
|
||||||
|
"@entryActionConvert": {},
|
||||||
|
"entryActionExport": "Ekspordi",
|
||||||
|
"@entryActionExport": {},
|
||||||
|
"entryActionInfo": "Teave",
|
||||||
|
"@entryActionInfo": {},
|
||||||
|
"entryActionRename": "Muuda nime",
|
||||||
|
"@entryActionRename": {},
|
||||||
|
"entryActionRotateCCW": "Pööra vastupäeva",
|
||||||
|
"@entryActionRotateCCW": {},
|
||||||
|
"entryActionRotateCW": "Pööra päripäeva",
|
||||||
|
"@entryActionRotateCW": {},
|
||||||
|
"entryActionFlip": "Pööra ümber horisontaalselt",
|
||||||
|
"@entryActionFlip": {},
|
||||||
|
"entryActionPrint": "Trüki",
|
||||||
|
"@entryActionPrint": {},
|
||||||
|
"entryActionShareImageOnly": "Jaga vaid pilti",
|
||||||
|
"@entryActionShareImageOnly": {},
|
||||||
|
"entryActionShareVideoOnly": "Jaga vaid videot",
|
||||||
|
"@entryActionShareVideoOnly": {},
|
||||||
|
"entryActionViewSource": "Vaata allikat",
|
||||||
|
"@entryActionViewSource": {},
|
||||||
|
"entryActionShowGeoTiffOnMap": "Näita kaardi ülekattena",
|
||||||
|
"@entryActionShowGeoTiffOnMap": {},
|
||||||
|
"entryActionConvertMotionPhotoToStillImage": "Muuda stoppkaadriks",
|
||||||
|
"@entryActionConvertMotionPhotoToStillImage": {},
|
||||||
|
"entryActionViewMotionPhotoVideo": "Ava video",
|
||||||
|
"@entryActionViewMotionPhotoVideo": {},
|
||||||
|
"entryActionEdit": "Muuda",
|
||||||
|
"@entryActionEdit": {},
|
||||||
|
"entryActionOpen": "Ava rakendusega",
|
||||||
|
"@entryActionOpen": {},
|
||||||
|
"entryActionSetAs": "Seadista kui",
|
||||||
|
"@entryActionSetAs": {},
|
||||||
|
"entryActionRotateScreen": "Pööra ekraani",
|
||||||
|
"@entryActionRotateScreen": {},
|
||||||
|
"entryActionAddFavourite": "Lisa lemmikuks",
|
||||||
|
"@entryActionAddFavourite": {},
|
||||||
|
"entryActionRemoveFavourite": "Eemalda lemmikute hulgast",
|
||||||
|
"@entryActionRemoveFavourite": {},
|
||||||
|
"videoActionMute": "Summuta",
|
||||||
|
"@videoActionMute": {},
|
||||||
|
"videoActionUnmute": "Eemalda summutamine",
|
||||||
|
"@videoActionUnmute": {},
|
||||||
|
"videoActionPause": "Peata",
|
||||||
|
"@videoActionPause": {},
|
||||||
|
"videoActionPlay": "Esita",
|
||||||
|
"@videoActionPlay": {},
|
||||||
|
"videoActionReplay10": "Keri tagasi 10 sekundit",
|
||||||
|
"@videoActionReplay10": {},
|
||||||
|
"videoActionSkip10": "Keri edasi 10 sekundit",
|
||||||
|
"@videoActionSkip10": {},
|
||||||
|
"videoActionShowPreviousFrame": "Näita eelmist kaadrit",
|
||||||
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"videoActionShowNextFrame": "Näita järgmist kaadrit",
|
||||||
|
"@videoActionShowNextFrame": {},
|
||||||
|
"videoActionSelectStreams": "Vali meediavood",
|
||||||
|
"@videoActionSelectStreams": {},
|
||||||
|
"videoActionSetSpeed": "Taasesituse kiirus",
|
||||||
|
"@videoActionSetSpeed": {},
|
||||||
|
"videoRepeatActionSetStart": "Määra algus",
|
||||||
|
"@videoRepeatActionSetStart": {},
|
||||||
|
"videoRepeatActionSetEnd": "Määra lõpp",
|
||||||
|
"@videoRepeatActionSetEnd": {},
|
||||||
|
"viewerActionSettings": "Seadistused",
|
||||||
|
"@viewerActionSettings": {},
|
||||||
|
"configureVaultDialogTitle": "Seadista turvaruumi",
|
||||||
|
"@configureVaultDialogTitle": {},
|
||||||
|
"vaultDialogLockTypeLabel": "Lukustuse tüüp",
|
||||||
|
"@vaultDialogLockTypeLabel": {},
|
||||||
|
"authenticateToConfigureVault": "Turvaruumi seadistamiseks autendi",
|
||||||
|
"@authenticateToConfigureVault": {},
|
||||||
|
"authenticateToUnlockVault": "Turvaruumi lukustuse eemaldamiseks autendi",
|
||||||
|
"@authenticateToUnlockVault": {},
|
||||||
|
"vaultBinUsageDialogMessage": "Mõned turvaruumid kasutavad prügikasti.",
|
||||||
|
"@vaultBinUsageDialogMessage": {},
|
||||||
|
"settingsConfirmationVaultDataLoss": "Näita turvaruumi andmekao hoiatust",
|
||||||
|
"@settingsConfirmationVaultDataLoss": {},
|
||||||
|
"statsTopPlacesSectionTitle": "Populaarsemad kohad",
|
||||||
|
"@statsTopPlacesSectionTitle": {},
|
||||||
|
"statsTopCountriesSectionTitle": "Populaarsemad riigid",
|
||||||
|
"@statsTopCountriesSectionTitle": {},
|
||||||
|
"appName": "Aves",
|
||||||
|
"@appName": {},
|
||||||
|
"welcomeTermsToggle": "Nõustun kasutustingimustega",
|
||||||
|
"@welcomeTermsToggle": {},
|
||||||
|
"columnCount": "{count, plural, =1{{count} veerg} other{{count} veergu}}",
|
||||||
|
"@columnCount": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"format": "decimalPattern"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"focalLength": "{length} mm",
|
||||||
|
"@focalLength": {
|
||||||
|
"placeholders": {
|
||||||
|
"length": {
|
||||||
|
"type": "String",
|
||||||
|
"example": "5.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clearTooltip": "Tühjenda",
|
||||||
|
"@clearTooltip": {},
|
||||||
|
"previousTooltip": "Eelmine",
|
||||||
|
"@previousTooltip": {},
|
||||||
|
"hideButtonLabel": "PEIDA",
|
||||||
|
"@hideButtonLabel": {},
|
||||||
|
"chipActionSetCover": "Määra kaanepildiks",
|
||||||
|
"@chipActionSetCover": {},
|
||||||
|
"vaultLockTypePattern": "Muster",
|
||||||
|
"@vaultLockTypePattern": {},
|
||||||
|
"vaultLockTypePin": "PIN-kood",
|
||||||
|
"@vaultLockTypePin": {},
|
||||||
|
"newVaultDialogTitle": "Uus turvaruum",
|
||||||
|
"@newVaultDialogTitle": {},
|
||||||
|
"albumTierVaults": "Turvaruumid",
|
||||||
|
"@albumTierVaults": {},
|
||||||
|
"vaultLockTypePassword": "Salasõna",
|
||||||
|
"@vaultLockTypePassword": {},
|
||||||
|
"vaultDialogLockModeWhenScreenOff": "Ekraani väljalülitumisel lukusta turvaruum",
|
||||||
|
"@vaultDialogLockModeWhenScreenOff": {},
|
||||||
|
"newVaultWarningDialogMessage": "Turvaruumis asuvad objektid on nähtavad vaid sellele rakendusele ja mitte ühelgi muul viisil.\n\nKui sa eemaldad nutiseadmest selle rakenduse või kustutad rakenduse andmed, siis kaob igasugune ligipääs nendele objektidele.",
|
||||||
|
"@newVaultWarningDialogMessage": {},
|
||||||
|
"entryActionRestore": "Taasta",
|
||||||
|
"@entryActionRestore": {},
|
||||||
|
"entryActionShare": "Jaga",
|
||||||
|
"@entryActionShare": {},
|
||||||
|
"statsTopTagsSectionTitle": "Populaarsemad sildid",
|
||||||
|
"@statsTopTagsSectionTitle": {},
|
||||||
|
"statsTopStatesSectionTitle": "Populaarsemad osariigid",
|
||||||
|
"@statsTopStatesSectionTitle": {},
|
||||||
|
"statsTopAlbumsSectionTitle": "Populaarsemad albumid",
|
||||||
|
"@statsTopAlbumsSectionTitle": {},
|
||||||
|
"videoActionABRepeat": "A-B kordus",
|
||||||
|
"@videoActionABRepeat": {},
|
||||||
|
"viewerActionLock": "Lukusta vaade",
|
||||||
|
"@viewerActionLock": {},
|
||||||
|
"viewerActionUnlock": "Eemalda vaate lukustus",
|
||||||
|
"@viewerActionUnlock": {},
|
||||||
|
"slideshowActionResume": "Jätka",
|
||||||
|
"@slideshowActionResume": {},
|
||||||
|
"slideshowActionShowInCollection": "Näita kogumikus",
|
||||||
|
"@slideshowActionShowInCollection": {},
|
||||||
|
"entryInfoActionEditDate": "Muuda kuupäeva ja kellaaega",
|
||||||
|
"@entryInfoActionEditDate": {},
|
||||||
|
"entryInfoActionEditLocation": "Muuda asukohta",
|
||||||
|
"@entryInfoActionEditLocation": {},
|
||||||
|
"entryInfoActionEditTitleDescription": "Muuda pealkirja ja kirjeldust",
|
||||||
|
"@entryInfoActionEditTitleDescription": {},
|
||||||
|
"entryInfoActionEditRating": "Muuda hinnangut",
|
||||||
|
"@entryInfoActionEditRating": {},
|
||||||
|
"entryInfoActionEditTags": "Muuda silte",
|
||||||
|
"@entryInfoActionEditTags": {},
|
||||||
|
"entryInfoActionRemoveMetadata": "Eemalda metainfo",
|
||||||
|
"@entryInfoActionRemoveMetadata": {},
|
||||||
|
"videoActionCaptureFrame": "Tee stoppkaader",
|
||||||
|
"@videoActionCaptureFrame": {},
|
||||||
|
"entryInfoActionExportMetadata": "Ekspordi metainfo",
|
||||||
|
"@entryInfoActionExportMetadata": {},
|
||||||
|
"entryInfoActionRemoveLocation": "Eemalda asukoht",
|
||||||
|
"@entryInfoActionRemoveLocation": {},
|
||||||
|
"editorActionTransform": "Muuda",
|
||||||
|
"@editorActionTransform": {},
|
||||||
|
"editorTransformCrop": "Kadreeri",
|
||||||
|
"@editorTransformCrop": {},
|
||||||
|
"editorTransformRotate": "Pööra",
|
||||||
|
"@editorTransformRotate": {},
|
||||||
|
"cropAspectRatioFree": "Vaba",
|
||||||
|
"@cropAspectRatioFree": {},
|
||||||
|
"cropAspectRatioOriginal": "Algne",
|
||||||
|
"@cropAspectRatioOriginal": {},
|
||||||
|
"cropAspectRatioSquare": "Ruut",
|
||||||
|
"@cropAspectRatioSquare": {},
|
||||||
|
"filterAspectRatioLandscapeLabel": "Rõhtloodis",
|
||||||
|
"@filterAspectRatioLandscapeLabel": {},
|
||||||
|
"filterAspectRatioPortraitLabel": "Püstloodis",
|
||||||
|
"@filterAspectRatioPortraitLabel": {},
|
||||||
|
"filterBinLabel": "Prügikast",
|
||||||
|
"@filterBinLabel": {},
|
||||||
|
"filterFavouriteLabel": "Lemmik",
|
||||||
|
"@filterFavouriteLabel": {},
|
||||||
|
"filterNoDateLabel": "Kuupäevata",
|
||||||
|
"@filterNoDateLabel": {},
|
||||||
|
"filterNoAddressLabel": "Aadressita",
|
||||||
|
"@filterNoAddressLabel": {},
|
||||||
|
"filterNoTagLabel": "Sildistamata",
|
||||||
|
"@filterNoTagLabel": {},
|
||||||
|
"filterNoTitleLabel": "Ilma nimeta",
|
||||||
|
"@filterNoTitleLabel": {},
|
||||||
|
"filterOnThisDayLabel": "Täna",
|
||||||
|
"@filterOnThisDayLabel": {},
|
||||||
|
"filterRecentlyAddedLabel": "Hiljuti lisatud",
|
||||||
|
"@filterRecentlyAddedLabel": {},
|
||||||
|
"filterRatingRejectedLabel": "Tagasilükatud",
|
||||||
|
"@filterRatingRejectedLabel": {},
|
||||||
|
"filterTypeAnimatedLabel": "Animeeritud",
|
||||||
|
"@filterTypeAnimatedLabel": {},
|
||||||
|
"filterTypeMotionPhotoLabel": "Liikuv foto",
|
||||||
|
"@filterTypeMotionPhotoLabel": {},
|
||||||
|
"filterTypePanoramaLabel": "Panoraam",
|
||||||
|
"@filterTypePanoramaLabel": {},
|
||||||
|
"filterTypeRawLabel": "Töötlemata raw-vormingus foto",
|
||||||
|
"@filterTypeRawLabel": {},
|
||||||
|
"filterTypeSphericalVideoLabel": "360° video",
|
||||||
|
"@filterTypeSphericalVideoLabel": {},
|
||||||
|
"filterTypeGeotiffLabel": "GeoTIFF",
|
||||||
|
"@filterTypeGeotiffLabel": {},
|
||||||
|
"accessibilityAnimationsRemove": "Eemalda ekraanieffektid",
|
||||||
|
"@accessibilityAnimationsRemove": {},
|
||||||
|
"accessibilityAnimationsKeep": "Jäta ekraanieffektid alles",
|
||||||
|
"@accessibilityAnimationsKeep": {},
|
||||||
|
"albumTierNew": "Uus",
|
||||||
|
"@albumTierNew": {},
|
||||||
|
"albumTierPinned": "Esiletõstetud",
|
||||||
|
"@albumTierPinned": {},
|
||||||
|
"albumTierSpecial": "Üldised",
|
||||||
|
"@albumTierSpecial": {},
|
||||||
|
"albumTierApps": "Rakendused",
|
||||||
|
"@albumTierApps": {},
|
||||||
|
"albumTierRegular": "Muud",
|
||||||
|
"@albumTierRegular": {},
|
||||||
|
"coordinateFormatDms": "KMS",
|
||||||
|
"@coordinateFormatDms": {},
|
||||||
|
"coordinateFormatDecimal": "Kümnendsüsteem",
|
||||||
|
"@coordinateFormatDecimal": {},
|
||||||
|
"coordinateDmsWest": "W",
|
||||||
|
"@coordinateDmsWest": {},
|
||||||
|
"coordinateDmsNorth": "N",
|
||||||
|
"@coordinateDmsNorth": {},
|
||||||
|
"coordinateDmsEast": "E",
|
||||||
|
"@coordinateDmsEast": {},
|
||||||
|
"displayRefreshRatePreferLowest": "Madalaim sagedus",
|
||||||
|
"@displayRefreshRatePreferLowest": {},
|
||||||
|
"displayRefreshRatePreferHighest": "Kõrgeim sagedus",
|
||||||
|
"@displayRefreshRatePreferHighest": {},
|
||||||
|
"keepScreenOnVideoPlayback": "Video taasesitusel",
|
||||||
|
"@keepScreenOnVideoPlayback": {},
|
||||||
|
"keepScreenOnViewerOnly": "Vaid vaate lehel",
|
||||||
|
"@keepScreenOnViewerOnly": {},
|
||||||
|
"keepScreenOnAlways": "Alati",
|
||||||
|
"@keepScreenOnAlways": {},
|
||||||
|
"lengthUnitPixel": "px",
|
||||||
|
"@lengthUnitPixel": {},
|
||||||
|
"lengthUnitPercent": "%",
|
||||||
|
"@lengthUnitPercent": {},
|
||||||
|
"mapStyleGoogleNormal": "Google Maps",
|
||||||
|
"@mapStyleGoogleNormal": {},
|
||||||
|
"mapStyleGoogleHybrid": "Google Maps (hübriidkaart)",
|
||||||
|
"@mapStyleGoogleHybrid": {},
|
||||||
|
"mapStyleGoogleTerrain": "Google Maps (maastik)",
|
||||||
|
"@mapStyleGoogleTerrain": {},
|
||||||
|
"mapStyleOsmLiberty": "OSM Liberty",
|
||||||
|
"@mapStyleOsmLiberty": {},
|
||||||
|
"mapStyleOpenTopoMap": "OpenTopoMap",
|
||||||
|
"@mapStyleOpenTopoMap": {},
|
||||||
|
"mapStyleOsmHot": "OSMi humanitaarkaart",
|
||||||
|
"@mapStyleOsmHot": {},
|
||||||
|
"mapStyleStamenWatercolor": "Stamen Watercolor",
|
||||||
|
"@mapStyleStamenWatercolor": {},
|
||||||
|
"maxBrightnessNever": "Mitte kunagi",
|
||||||
|
"@maxBrightnessNever": {},
|
||||||
|
"subtitlePositionTop": "Üleval",
|
||||||
|
"@subtitlePositionTop": {},
|
||||||
|
"subtitlePositionBottom": "All",
|
||||||
|
"@subtitlePositionBottom": {},
|
||||||
|
"themeBrightnessLight": "Hele kujundus",
|
||||||
|
"@themeBrightnessLight": {},
|
||||||
|
"settingsVideoEnablePip": "Pilt pildis",
|
||||||
|
"@settingsVideoEnablePip": {},
|
||||||
|
"videoControlsPlayOutside": "Ava välises meediamängijas",
|
||||||
|
"@videoControlsPlayOutside": {},
|
||||||
|
"videoLoopModeShortOnly": "Vaid lühivideod",
|
||||||
|
"@videoLoopModeShortOnly": {},
|
||||||
|
"videoPlaybackSkip": "Jäta vahele",
|
||||||
|
"@videoPlaybackSkip": {},
|
||||||
|
"videoPlaybackMuted": "Esita summutatuna",
|
||||||
|
"@videoPlaybackMuted": {},
|
||||||
|
"videoPlaybackWithSound": "Esita heliga",
|
||||||
|
"@videoPlaybackWithSound": {},
|
||||||
|
"videoResumptionModeNever": "Mitte kunagi",
|
||||||
|
"@videoResumptionModeNever": {},
|
||||||
|
"videoResumptionModeAlways": "Alati",
|
||||||
|
"@videoResumptionModeAlways": {},
|
||||||
|
"settingsDisplayRefreshRateModeDialogTitle": "Värskendussagedus",
|
||||||
|
"@settingsDisplayRefreshRateModeDialogTitle": {},
|
||||||
|
"settingsDisplayRefreshRateModeTile": "Ekraani värskendussagedus",
|
||||||
|
"@settingsDisplayRefreshRateModeTile": {},
|
||||||
|
"filterLocatedLabel": "Asukoht tuvastatud",
|
||||||
|
"@filterLocatedLabel": {},
|
||||||
|
"filterNoLocationLabel": "Asukoht tuvastamata",
|
||||||
|
"@filterNoLocationLabel": {},
|
||||||
|
"filterNoRatingLabel": "Pole hinnatud",
|
||||||
|
"@filterNoRatingLabel": {},
|
||||||
|
"filterTaggedLabel": "Sildistatud",
|
||||||
|
"@filterTaggedLabel": {},
|
||||||
|
"filterMimeImageLabel": "Pilt",
|
||||||
|
"@filterMimeImageLabel": {},
|
||||||
|
"filterMimeVideoLabel": "Video",
|
||||||
|
"@filterMimeVideoLabel": {},
|
||||||
|
"coordinateDms": "{coordinate} {direction}",
|
||||||
|
"@coordinateDms": {
|
||||||
|
"placeholders": {
|
||||||
|
"coordinate": {
|
||||||
|
"type": "String",
|
||||||
|
"example": "38° 41′ 47.72″"
|
||||||
|
},
|
||||||
|
"direction": {
|
||||||
|
"type": "String",
|
||||||
|
"example": "S"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"coordinateDmsSouth": "S",
|
||||||
|
"@coordinateDmsSouth": {},
|
||||||
|
"nameConflictStrategySkip": "Jäta vahele",
|
||||||
|
"@nameConflictStrategySkip": {},
|
||||||
|
"overlayHistogramLuminance": "Heledus",
|
||||||
|
"@overlayHistogramLuminance": {},
|
||||||
|
"maxBrightnessAlways": "Alati",
|
||||||
|
"@maxBrightnessAlways": {},
|
||||||
|
"overlayHistogramNone": "Määratlemata",
|
||||||
|
"@overlayHistogramNone": {},
|
||||||
|
"nameConflictStrategyRename": "Muuda nime",
|
||||||
|
"@nameConflictStrategyRename": {},
|
||||||
|
"nameConflictStrategyReplace": "Asenda",
|
||||||
|
"@nameConflictStrategyReplace": {},
|
||||||
|
"overlayHistogramRGB": "RGB",
|
||||||
|
"@overlayHistogramRGB": {},
|
||||||
|
"keepScreenOnNever": "Mitte kunagi",
|
||||||
|
"@keepScreenOnNever": {},
|
||||||
|
"videoLoopModeNever": "Mitte kunagi",
|
||||||
|
"@videoLoopModeNever": {},
|
||||||
|
"themeBrightnessDark": "Tume kujundus",
|
||||||
|
"@themeBrightnessDark": {},
|
||||||
|
"themeBrightnessBlack": "Süsimust kujundus",
|
||||||
|
"@themeBrightnessBlack": {},
|
||||||
|
"videoLoopModeAlways": "Alati",
|
||||||
|
"@videoLoopModeAlways": {},
|
||||||
|
"unitSystemMetric": "Meetermõõdustik",
|
||||||
|
"@unitSystemMetric": {}
|
||||||
|
}
|
|
@ -278,17 +278,17 @@
|
||||||
"@exportEntryDialogHeight": {},
|
"@exportEntryDialogHeight": {},
|
||||||
"aboutTranslatorsSectionTitle": "مترجم ها",
|
"aboutTranslatorsSectionTitle": "مترجم ها",
|
||||||
"@aboutTranslatorsSectionTitle": {},
|
"@aboutTranslatorsSectionTitle": {},
|
||||||
"aboutLicensesAndroidLibrariesSectionTitle": "کتابخانه های اندروید",
|
"aboutLicensesAndroidLibrariesSectionTitle": "کتابخانههای اندروید",
|
||||||
"@aboutLicensesAndroidLibrariesSectionTitle": {},
|
"@aboutLicensesAndroidLibrariesSectionTitle": {},
|
||||||
"aboutLicensesFlutterPackagesSectionTitle": "بسته های Flutter",
|
"aboutLicensesFlutterPackagesSectionTitle": "بستههای Flutter",
|
||||||
"@aboutLicensesFlutterPackagesSectionTitle": {},
|
"@aboutLicensesFlutterPackagesSectionTitle": {},
|
||||||
"aboutBugReportButton": "گزارش",
|
"aboutBugReportButton": "گزارش",
|
||||||
"@aboutBugReportButton": {},
|
"@aboutBugReportButton": {},
|
||||||
"aboutLicensesFlutterPluginsSectionTitle": "پلاگین های Flutter",
|
"aboutLicensesFlutterPluginsSectionTitle": "افزونههای Flutter",
|
||||||
"@aboutLicensesFlutterPluginsSectionTitle": {},
|
"@aboutLicensesFlutterPluginsSectionTitle": {},
|
||||||
"aboutBugCopyInfoButton": "کپی",
|
"aboutBugCopyInfoButton": "کپی",
|
||||||
"@aboutBugCopyInfoButton": {},
|
"@aboutBugCopyInfoButton": {},
|
||||||
"aboutLicensesDartPackagesSectionTitle": "بسته های Dart",
|
"aboutLicensesDartPackagesSectionTitle": "بستههای Dart",
|
||||||
"@aboutLicensesDartPackagesSectionTitle": {},
|
"@aboutLicensesDartPackagesSectionTitle": {},
|
||||||
"policyPageTitle": "سیاست حفظ حریم خصوصی",
|
"policyPageTitle": "سیاست حفظ حریم خصوصی",
|
||||||
"@policyPageTitle": {},
|
"@policyPageTitle": {},
|
||||||
|
@ -393,7 +393,7 @@
|
||||||
"@keepScreenOnAlways": {},
|
"@keepScreenOnAlways": {},
|
||||||
"albumTierRegular": "سایر",
|
"albumTierRegular": "سایر",
|
||||||
"@albumTierRegular": {},
|
"@albumTierRegular": {},
|
||||||
"accessibilityAnimationsKeep": "نمایش از جلوه های نمایشگر",
|
"accessibilityAnimationsKeep": "نمایش از جلوههای نمایشگر",
|
||||||
"@accessibilityAnimationsKeep": {},
|
"@accessibilityAnimationsKeep": {},
|
||||||
"widgetDisplayedItemMostRecent": "جدیدترین",
|
"widgetDisplayedItemMostRecent": "جدیدترین",
|
||||||
"@widgetDisplayedItemMostRecent": {},
|
"@widgetDisplayedItemMostRecent": {},
|
||||||
|
@ -545,7 +545,7 @@
|
||||||
"@albumTierSpecial": {},
|
"@albumTierSpecial": {},
|
||||||
"viewerTransitionParallax": "انطباق",
|
"viewerTransitionParallax": "انطباق",
|
||||||
"@viewerTransitionParallax": {},
|
"@viewerTransitionParallax": {},
|
||||||
"coordinateFormatDecimal": "درجه های اعشاری",
|
"coordinateFormatDecimal": "درجههای اعشاری",
|
||||||
"@coordinateFormatDecimal": {},
|
"@coordinateFormatDecimal": {},
|
||||||
"videoResumeButtonLabel": "ادامه",
|
"videoResumeButtonLabel": "ادامه",
|
||||||
"@videoResumeButtonLabel": {},
|
"@videoResumeButtonLabel": {},
|
||||||
|
@ -559,7 +559,7 @@
|
||||||
"@videoPlaybackSkip": {},
|
"@videoPlaybackSkip": {},
|
||||||
"setCoverDialogCustom": "شخصی",
|
"setCoverDialogCustom": "شخصی",
|
||||||
"@setCoverDialogCustom": {},
|
"@setCoverDialogCustom": {},
|
||||||
"nameConflictDialogSingleSourceMessage": "برخی از پرونده های موجود در پوشه مقصد به همین نام هستند.",
|
"nameConflictDialogSingleSourceMessage": "برخی از پروندههای موجود در پوشه مقصد به همین نام هستند.",
|
||||||
"@nameConflictDialogSingleSourceMessage": {},
|
"@nameConflictDialogSingleSourceMessage": {},
|
||||||
"missingSystemFilePickerDialogMessage": "انتخابگر پرونده سامانه وجود ندارد یا غیرفعال است. لطفا آن را فعال کنید و دوباره امتحان کنید.",
|
"missingSystemFilePickerDialogMessage": "انتخابگر پرونده سامانه وجود ندارد یا غیرفعال است. لطفا آن را فعال کنید و دوباره امتحان کنید.",
|
||||||
"@missingSystemFilePickerDialogMessage": {},
|
"@missingSystemFilePickerDialogMessage": {},
|
||||||
|
@ -603,11 +603,11 @@
|
||||||
"@searchDateSectionTitle": {},
|
"@searchDateSectionTitle": {},
|
||||||
"searchCountriesSectionTitle": "کشور ها",
|
"searchCountriesSectionTitle": "کشور ها",
|
||||||
"@searchCountriesSectionTitle": {},
|
"@searchCountriesSectionTitle": {},
|
||||||
"settingsConfirmationDialogTitle": "درخواست های تایید",
|
"settingsConfirmationDialogTitle": "درخواستهای تایید",
|
||||||
"@settingsConfirmationDialogTitle": {},
|
"@settingsConfirmationDialogTitle": {},
|
||||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "دکمه های نمایش داده شده",
|
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "دکمههای نمایش داده شده",
|
||||||
"@settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": {},
|
"@settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": {},
|
||||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "دکمه های در دسترس",
|
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "دکمههای در دسترس",
|
||||||
"@settingsViewerQuickActionEditorAvailableButtonsSectionTitle": {},
|
"@settingsViewerQuickActionEditorAvailableButtonsSectionTitle": {},
|
||||||
"settingsViewerQuickActionEmpty": "بدون دکمه",
|
"settingsViewerQuickActionEmpty": "بدون دکمه",
|
||||||
"@settingsViewerQuickActionEmpty": {},
|
"@settingsViewerQuickActionEmpty": {},
|
||||||
|
@ -664,7 +664,7 @@
|
||||||
"@editEntryLocationDialogLongitude": {},
|
"@editEntryLocationDialogLongitude": {},
|
||||||
"viewerOpenPanoramaButtonLabel": "بازکردن پانوراما",
|
"viewerOpenPanoramaButtonLabel": "بازکردن پانوراما",
|
||||||
"@viewerOpenPanoramaButtonLabel": {},
|
"@viewerOpenPanoramaButtonLabel": {},
|
||||||
"statsTopAlbumsSectionTitle": "آلبوم های ممتاز",
|
"statsTopAlbumsSectionTitle": "آلبومهای ممتاز",
|
||||||
"@statsTopAlbumsSectionTitle": {},
|
"@statsTopAlbumsSectionTitle": {},
|
||||||
"settingsSubtitleThemeTextColor": "رنگ متن",
|
"settingsSubtitleThemeTextColor": "رنگ متن",
|
||||||
"@settingsSubtitleThemeTextColor": {},
|
"@settingsSubtitleThemeTextColor": {},
|
||||||
|
@ -672,7 +672,7 @@
|
||||||
"@mapStyleTooltip": {},
|
"@mapStyleTooltip": {},
|
||||||
"viewerInfoSearchFieldLabel": "جستجو فراداده",
|
"viewerInfoSearchFieldLabel": "جستجو فراداده",
|
||||||
"@viewerInfoSearchFieldLabel": {},
|
"@viewerInfoSearchFieldLabel": {},
|
||||||
"filePickerDoNotShowHiddenFiles": "پرونده های پنهان را نمایش نده",
|
"filePickerDoNotShowHiddenFiles": "پروندههای پنهان را نمایش نده",
|
||||||
"@filePickerDoNotShowHiddenFiles": {},
|
"@filePickerDoNotShowHiddenFiles": {},
|
||||||
"filePickerUseThisFolder": "استفاده از این پوشه",
|
"filePickerUseThisFolder": "استفاده از این پوشه",
|
||||||
"@filePickerUseThisFolder": {},
|
"@filePickerUseThisFolder": {},
|
||||||
|
@ -696,7 +696,7 @@
|
||||||
"@sourceViewerPageTitle": {},
|
"@sourceViewerPageTitle": {},
|
||||||
"panoramaDisableSensorControl": "خاموش کردن هدایت حسگر",
|
"panoramaDisableSensorControl": "خاموش کردن هدایت حسگر",
|
||||||
"@panoramaDisableSensorControl": {},
|
"@panoramaDisableSensorControl": {},
|
||||||
"filePickerShowHiddenFiles": "نمایش پرونده های پنهان",
|
"filePickerShowHiddenFiles": "نمایش پروندههای پنهان",
|
||||||
"@filePickerShowHiddenFiles": {},
|
"@filePickerShowHiddenFiles": {},
|
||||||
"setCoverDialogLatest": "آخرین مورد",
|
"setCoverDialogLatest": "آخرین مورد",
|
||||||
"@setCoverDialogLatest": {},
|
"@setCoverDialogLatest": {},
|
||||||
|
@ -796,7 +796,7 @@
|
||||||
"@settingsCoordinateFormatDialogTitle": {},
|
"@settingsCoordinateFormatDialogTitle": {},
|
||||||
"statsTopStatesSectionTitle": "آمارهای ممتاز",
|
"statsTopStatesSectionTitle": "آمارهای ممتاز",
|
||||||
"@statsTopStatesSectionTitle": {},
|
"@statsTopStatesSectionTitle": {},
|
||||||
"statsTopTagsSectionTitle": "برچسب های ممتاز",
|
"statsTopTagsSectionTitle": "برچسبهای ممتاز",
|
||||||
"@statsTopTagsSectionTitle": {},
|
"@statsTopTagsSectionTitle": {},
|
||||||
"coordinateFormatDms": "DMS",
|
"coordinateFormatDms": "DMS",
|
||||||
"@coordinateFormatDms": {},
|
"@coordinateFormatDms": {},
|
||||||
|
@ -824,7 +824,7 @@
|
||||||
"@sortByItemCount": {},
|
"@sortByItemCount": {},
|
||||||
"settingsKeepScreenOnTile": "صفحه را روشن نگه دار",
|
"settingsKeepScreenOnTile": "صفحه را روشن نگه دار",
|
||||||
"@settingsKeepScreenOnTile": {},
|
"@settingsKeepScreenOnTile": {},
|
||||||
"settingsViewerGestureSideTapNext": "روی لبه های صفحه ضربه بزنید تا مورد قبلی/بعدی نشان داده شود",
|
"settingsViewerGestureSideTapNext": "روی لبههای صفحه ضربه بزنید تا مورد قبلی/بعدی نشان داده شود",
|
||||||
"@settingsViewerGestureSideTapNext": {},
|
"@settingsViewerGestureSideTapNext": {},
|
||||||
"deleteMultiAlbumConfirmationDialogMessage": "{count, plural, =1{این آلبوم ها و مورد موجود در آنها پاک شود؟} other{این آلبوم ها و {count} مورد موجود در آنها پاک شود؟}}",
|
"deleteMultiAlbumConfirmationDialogMessage": "{count, plural, =1{این آلبوم ها و مورد موجود در آنها پاک شود؟} other{این آلبوم ها و {count} مورد موجود در آنها پاک شود؟}}",
|
||||||
"@deleteMultiAlbumConfirmationDialogMessage": {
|
"@deleteMultiAlbumConfirmationDialogMessage": {
|
||||||
|
@ -834,7 +834,7 @@
|
||||||
},
|
},
|
||||||
"removeEntryMetadataMotionPhotoXmpWarningDialogMessage": "XMP برای پخش ویدیو در داخل یک عکس متحرک مورد نیاز است.\n\nار پاکسازی آن اطمینان دارید?",
|
"removeEntryMetadataMotionPhotoXmpWarningDialogMessage": "XMP برای پخش ویدیو در داخل یک عکس متحرک مورد نیاز است.\n\nار پاکسازی آن اطمینان دارید?",
|
||||||
"@removeEntryMetadataMotionPhotoXmpWarningDialogMessage": {},
|
"@removeEntryMetadataMotionPhotoXmpWarningDialogMessage": {},
|
||||||
"newVaultWarningDialogMessage": "موارد موجود در گاوصندوق تنها برای این برنامه در دسترس هستند و در هیچ برنامه دیگری وجود ندارد.\n\nاگر این برنامه را پاک کنید، یا داده های برنامه را پاک کنید، همه این موارد را از دست خواهید داد.",
|
"newVaultWarningDialogMessage": "موارد موجود در گاوصندوق تنها برای این برنامه در دسترس هستند و در هیچ برنامه دیگری وجود ندارد.\n\nاگر این برنامه را پاک کنید، یا دادههای برنامه را پاک کنید، همه این موارد را از دست خواهید داد.",
|
||||||
"@newVaultWarningDialogMessage": {},
|
"@newVaultWarningDialogMessage": {},
|
||||||
"deleteEntriesConfirmationDialogMessage": "{count, plural, =1{این مورد پاک شود؟} other{این {count} مورد پاک شوند؟}}",
|
"deleteEntriesConfirmationDialogMessage": "{count, plural, =1{این مورد پاک شود؟} other{این {count} مورد پاک شوند؟}}",
|
||||||
"@deleteEntriesConfirmationDialogMessage": {
|
"@deleteEntriesConfirmationDialogMessage": {
|
||||||
|
@ -905,7 +905,7 @@
|
||||||
"@sortOrderOldestFirst": {},
|
"@sortOrderOldestFirst": {},
|
||||||
"settingsSlideshowFillScreen": "پر کردن صفحه",
|
"settingsSlideshowFillScreen": "پر کردن صفحه",
|
||||||
"@settingsSlideshowFillScreen": {},
|
"@settingsSlideshowFillScreen": {},
|
||||||
"settingsAccessibilityShowPinchGestureAlternatives": "نمایش جایگزین های چند لمس همزمان",
|
"settingsAccessibilityShowPinchGestureAlternatives": "نمایش جایگزینهای چند لمس همزمان",
|
||||||
"@settingsAccessibilityShowPinchGestureAlternatives": {},
|
"@settingsAccessibilityShowPinchGestureAlternatives": {},
|
||||||
"viewerInfoLabelDate": "تاریخ",
|
"viewerInfoLabelDate": "تاریخ",
|
||||||
"@viewerInfoLabelDate": {},
|
"@viewerInfoLabelDate": {},
|
||||||
|
@ -937,9 +937,9 @@
|
||||||
"@settingsHomeTile": {},
|
"@settingsHomeTile": {},
|
||||||
"settingsSlideshowAnimatedZoomEffect": "جلوه بزرگنمایی پویانمایی شده",
|
"settingsSlideshowAnimatedZoomEffect": "جلوه بزرگنمایی پویانمایی شده",
|
||||||
"@settingsSlideshowAnimatedZoomEffect": {},
|
"@settingsSlideshowAnimatedZoomEffect": {},
|
||||||
"statsTopCountriesSectionTitle": "کشور های ممتاز",
|
"statsTopCountriesSectionTitle": "کشورهای ممتاز",
|
||||||
"@statsTopCountriesSectionTitle": {},
|
"@statsTopCountriesSectionTitle": {},
|
||||||
"statsTopPlacesSectionTitle": "مکان های ممتاز",
|
"statsTopPlacesSectionTitle": "مکانهای ممتاز",
|
||||||
"@statsTopPlacesSectionTitle": {},
|
"@statsTopPlacesSectionTitle": {},
|
||||||
"editEntryDateDialogTitle": "تاریخ و زمان",
|
"editEntryDateDialogTitle": "تاریخ و زمان",
|
||||||
"@editEntryDateDialogTitle": {},
|
"@editEntryDateDialogTitle": {},
|
||||||
|
@ -1001,7 +1001,7 @@
|
||||||
"@appPickDialogNone": {},
|
"@appPickDialogNone": {},
|
||||||
"aboutLinkLicense": "مجوز",
|
"aboutLinkLicense": "مجوز",
|
||||||
"@aboutLinkLicense": {},
|
"@aboutLinkLicense": {},
|
||||||
"aboutBugSaveLogInstruction": "ذخیره گزارش های برنامه در یک پرونده",
|
"aboutBugSaveLogInstruction": "ذخیره گزارشهای برنامه در یک پرونده",
|
||||||
"@aboutBugSaveLogInstruction": {},
|
"@aboutBugSaveLogInstruction": {},
|
||||||
"aboutDataUsageDatabase": "پایگاه داده",
|
"aboutDataUsageDatabase": "پایگاه داده",
|
||||||
"@aboutDataUsageDatabase": {},
|
"@aboutDataUsageDatabase": {},
|
||||||
|
@ -1019,7 +1019,7 @@
|
||||||
"@aboutDataUsageClearCache": {},
|
"@aboutDataUsageClearCache": {},
|
||||||
"aboutCreditsWorldAtlas2": "زیر مجوز ISC.",
|
"aboutCreditsWorldAtlas2": "زیر مجوز ISC.",
|
||||||
"@aboutCreditsWorldAtlas2": {},
|
"@aboutCreditsWorldAtlas2": {},
|
||||||
"aboutLicensesBanner": "این برنامه از بسته ها و کتابخانه های منبع باز زیر استفاده می کند.",
|
"aboutLicensesBanner": "این برنامه از بستهها و کتابخانههای منبع باز زیر استفاده می کند.",
|
||||||
"@aboutLicensesBanner": {},
|
"@aboutLicensesBanner": {},
|
||||||
"collectionSelectPageTitle": "انتخاب موارد",
|
"collectionSelectPageTitle": "انتخاب موارد",
|
||||||
"@collectionSelectPageTitle": {},
|
"@collectionSelectPageTitle": {},
|
||||||
|
@ -1071,9 +1071,9 @@
|
||||||
"@albumGroupType": {},
|
"@albumGroupType": {},
|
||||||
"albumPickPageTitlePick": "انتخاب آلبوم",
|
"albumPickPageTitlePick": "انتخاب آلبوم",
|
||||||
"@albumPickPageTitlePick": {},
|
"@albumPickPageTitlePick": {},
|
||||||
"albumScreenRecordings": "ضبط های از صفحه",
|
"albumScreenRecordings": "ضبطهای از صفحه",
|
||||||
"@albumScreenRecordings": {},
|
"@albumScreenRecordings": {},
|
||||||
"albumVideoCaptures": "ویدیو های ضبط شده",
|
"albumVideoCaptures": "ویدیوهای ضبط شده",
|
||||||
"@albumVideoCaptures": {},
|
"@albumVideoCaptures": {},
|
||||||
"albumEmpty": "بدون آلبوم",
|
"albumEmpty": "بدون آلبوم",
|
||||||
"@albumEmpty": {},
|
"@albumEmpty": {},
|
||||||
|
@ -1091,21 +1091,21 @@
|
||||||
"@settingsActionImport": {},
|
"@settingsActionImport": {},
|
||||||
"settingsSystemDefault": "پیشفرض سامانه",
|
"settingsSystemDefault": "پیشفرض سامانه",
|
||||||
"@settingsSystemDefault": {},
|
"@settingsSystemDefault": {},
|
||||||
"settingsConfirmationTile": "درخواست های تایید",
|
"settingsConfirmationTile": "درخواستهای تایید",
|
||||||
"@settingsConfirmationTile": {},
|
"@settingsConfirmationTile": {},
|
||||||
"settingsKeepScreenOnDialogTitle": "صفحه را روشن نگه دار",
|
"settingsKeepScreenOnDialogTitle": "صفحه را روشن نگه دار",
|
||||||
"@settingsKeepScreenOnDialogTitle": {},
|
"@settingsKeepScreenOnDialogTitle": {},
|
||||||
"settingsShowBottomNavigationBar": "نمایش گزینهگان پیمایش پایین",
|
"settingsShowBottomNavigationBar": "نمایش گزینههای پیمایش پایین",
|
||||||
"@settingsShowBottomNavigationBar": {},
|
"@settingsShowBottomNavigationBar": {},
|
||||||
"settingsDoubleBackExit": "برای خروج دوبار روی «بازگشت» ضربه بزنید",
|
"settingsDoubleBackExit": "برای خروج دوبار روی «بازگشت» ضربه بزنید",
|
||||||
"@settingsDoubleBackExit": {},
|
"@settingsDoubleBackExit": {},
|
||||||
"settingsNavigationDrawerEditorPageTitle": "گزینهگان پیمایش",
|
"settingsNavigationDrawerEditorPageTitle": "گزینههای پیمایش",
|
||||||
"@settingsNavigationDrawerEditorPageTitle": {},
|
"@settingsNavigationDrawerEditorPageTitle": {},
|
||||||
"settingsConfirmationBeforeMoveUndatedItems": "پیش از جابجایی موارد بدون تاریخ بپرسید",
|
"settingsConfirmationBeforeMoveUndatedItems": "پیش از جابجایی موارد بدون تاریخ بپرسید",
|
||||||
"@settingsConfirmationBeforeMoveUndatedItems": {},
|
"@settingsConfirmationBeforeMoveUndatedItems": {},
|
||||||
"settingsNavigationDrawerBanner": "برای جابجایی و مرتب کردن مجدد موارد، لمس کنید و نگه دارید.",
|
"settingsNavigationDrawerBanner": "برای جابجایی و مرتب کردن مجدد موارد، لمس کنید و نگه دارید.",
|
||||||
"@settingsNavigationDrawerBanner": {},
|
"@settingsNavigationDrawerBanner": {},
|
||||||
"settingsConfirmationVaultDataLoss": "نمایش هشدار از دست دادن داده های گاوصندوق",
|
"settingsConfirmationVaultDataLoss": "نمایش هشدار از دست دادن دادههای گاوصندوق",
|
||||||
"@settingsConfirmationVaultDataLoss": {},
|
"@settingsConfirmationVaultDataLoss": {},
|
||||||
"settingsNavigationDrawerTabAlbums": "آلبوم ها",
|
"settingsNavigationDrawerTabAlbums": "آلبوم ها",
|
||||||
"@settingsNavigationDrawerTabAlbums": {},
|
"@settingsNavigationDrawerTabAlbums": {},
|
||||||
|
@ -1117,7 +1117,7 @@
|
||||||
"@settingsThumbnailShowHdrIcon": {},
|
"@settingsThumbnailShowHdrIcon": {},
|
||||||
"settingsCollectionQuickActionTabBrowsing": "مرور کردن",
|
"settingsCollectionQuickActionTabBrowsing": "مرور کردن",
|
||||||
"@settingsCollectionQuickActionTabBrowsing": {},
|
"@settingsCollectionQuickActionTabBrowsing": {},
|
||||||
"settingsCollectionQuickActionEditorPageTitle": "کنش های سریع",
|
"settingsCollectionQuickActionEditorPageTitle": "کنشهای سریع",
|
||||||
"@settingsCollectionQuickActionEditorPageTitle": {},
|
"@settingsCollectionQuickActionEditorPageTitle": {},
|
||||||
"settingsCollectionQuickActionTabSelecting": "انتخاب کردن",
|
"settingsCollectionQuickActionTabSelecting": "انتخاب کردن",
|
||||||
"@settingsCollectionQuickActionTabSelecting": {},
|
"@settingsCollectionQuickActionTabSelecting": {},
|
||||||
|
@ -1153,7 +1153,7 @@
|
||||||
"@settingsVideoBackgroundModeDialogTitle": {},
|
"@settingsVideoBackgroundModeDialogTitle": {},
|
||||||
"settingsVideoGestureDoubleTapTogglePlay": "برای پخش/ایست دوبار ضربه زدن",
|
"settingsVideoGestureDoubleTapTogglePlay": "برای پخش/ایست دوبار ضربه زدن",
|
||||||
"@settingsVideoGestureDoubleTapTogglePlay": {},
|
"@settingsVideoGestureDoubleTapTogglePlay": {},
|
||||||
"settingsVideoGestureSideDoubleTapSeek": "روی لبه های صفحه دوبار ضربه بزنید تا به عقب/جلو بروید",
|
"settingsVideoGestureSideDoubleTapSeek": "روی لبههای صفحه دوبار ضربه بزنید تا به عقب/جلو بروید",
|
||||||
"@settingsVideoGestureSideDoubleTapSeek": {},
|
"@settingsVideoGestureSideDoubleTapSeek": {},
|
||||||
"settingsSubtitleThemePageTitle": "زیرنویس ها",
|
"settingsSubtitleThemePageTitle": "زیرنویس ها",
|
||||||
"@settingsSubtitleThemePageTitle": {},
|
"@settingsSubtitleThemePageTitle": {},
|
||||||
|
@ -1179,7 +1179,7 @@
|
||||||
"@settingsAllowErrorReporting": {},
|
"@settingsAllowErrorReporting": {},
|
||||||
"settingsThemeColorHighlights": "رنگ متون برجسته",
|
"settingsThemeColorHighlights": "رنگ متون برجسته",
|
||||||
"@settingsThemeColorHighlights": {},
|
"@settingsThemeColorHighlights": {},
|
||||||
"settingsThemeEnableDynamicColor": "رنگ های پویا",
|
"settingsThemeEnableDynamicColor": "رنگهای پویا",
|
||||||
"@settingsThemeEnableDynamicColor": {},
|
"@settingsThemeEnableDynamicColor": {},
|
||||||
"settingsHiddenFiltersEmpty": "پالایشی پنهان نیست",
|
"settingsHiddenFiltersEmpty": "پالایشی پنهان نیست",
|
||||||
"@settingsHiddenFiltersEmpty": {},
|
"@settingsHiddenFiltersEmpty": {},
|
||||||
|
@ -1271,15 +1271,15 @@
|
||||||
"@settingsNavigationSectionTitle": {},
|
"@settingsNavigationSectionTitle": {},
|
||||||
"settingsNavigationDrawerTabTypes": "انواع",
|
"settingsNavigationDrawerTabTypes": "انواع",
|
||||||
"@settingsNavigationDrawerTabTypes": {},
|
"@settingsNavigationDrawerTabTypes": {},
|
||||||
"settingsNavigationDrawerTile": "گزینهگان پیمایش",
|
"settingsNavigationDrawerTile": "گزینههای پیمایش",
|
||||||
"@settingsNavigationDrawerTile": {},
|
"@settingsNavigationDrawerTile": {},
|
||||||
"settingsSearchEmpty": "تنظیمی منطبق نشد",
|
"settingsSearchEmpty": "تنظیمی منطبق نشد",
|
||||||
"@settingsSearchEmpty": {},
|
"@settingsSearchEmpty": {},
|
||||||
"settingsCollectionBurstPatternsTile": "الگوهای انفجاری",
|
"settingsCollectionBurstPatternsTile": "الگوهای تصاویر چندتایی",
|
||||||
"@settingsCollectionBurstPatternsTile": {},
|
"@settingsCollectionBurstPatternsTile": {},
|
||||||
"settingsCollectionBurstPatternsNone": "هیچکدام",
|
"settingsCollectionBurstPatternsNone": "هیچکدام",
|
||||||
"@settingsCollectionBurstPatternsNone": {},
|
"@settingsCollectionBurstPatternsNone": {},
|
||||||
"settingsCollectionQuickActionsTile": "کنش های سریع",
|
"settingsCollectionQuickActionsTile": "کنشهای سریع",
|
||||||
"@settingsCollectionQuickActionsTile": {},
|
"@settingsCollectionQuickActionsTile": {},
|
||||||
"settingsUnitSystemTile": "واحد ها",
|
"settingsUnitSystemTile": "واحد ها",
|
||||||
"@settingsUnitSystemTile": {},
|
"@settingsUnitSystemTile": {},
|
||||||
|
@ -1301,9 +1301,9 @@
|
||||||
"@settingsViewerSectionTitle": {},
|
"@settingsViewerSectionTitle": {},
|
||||||
"settingsViewerShowInformationSubtitle": "نمایش عنوان، تاریخ، مکان، و...",
|
"settingsViewerShowInformationSubtitle": "نمایش عنوان، تاریخ، مکان، و...",
|
||||||
"@settingsViewerShowInformationSubtitle": {},
|
"@settingsViewerShowInformationSubtitle": {},
|
||||||
"settingsViewerQuickActionsTile": "کنش های سریع",
|
"settingsViewerQuickActionsTile": "کنشهای سریع",
|
||||||
"@settingsViewerQuickActionsTile": {},
|
"@settingsViewerQuickActionsTile": {},
|
||||||
"settingsViewerQuickActionEditorPageTitle": "کنش های سریع",
|
"settingsViewerQuickActionEditorPageTitle": "کنشهای سریع",
|
||||||
"@settingsViewerQuickActionEditorPageTitle": {},
|
"@settingsViewerQuickActionEditorPageTitle": {},
|
||||||
"settingsViewerQuickActionEditorBanner": "لمس کنید و نگه دارید تا دکمه ها را حرکت دهید و انتخاب کنید که کدام کنش ها در بیننده نمایش داده می شود.",
|
"settingsViewerQuickActionEditorBanner": "لمس کنید و نگه دارید تا دکمه ها را حرکت دهید و انتخاب کنید که کدام کنش ها در بیننده نمایش داده می شود.",
|
||||||
"@settingsViewerQuickActionEditorBanner": {},
|
"@settingsViewerQuickActionEditorBanner": {},
|
||||||
|
@ -1339,19 +1339,19 @@
|
||||||
"@searchRatingSectionTitle": {},
|
"@searchRatingSectionTitle": {},
|
||||||
"searchMetadataSectionTitle": "فراداده",
|
"searchMetadataSectionTitle": "فراداده",
|
||||||
"@searchMetadataSectionTitle": {},
|
"@searchMetadataSectionTitle": {},
|
||||||
"settingsConfirmationBeforeDeleteItems": "همیشه پیش از پاکسازی موارد پرسش کن",
|
"settingsConfirmationBeforeDeleteItems": "همیشه پیش از پاکسازی موارد بپرس",
|
||||||
"@settingsConfirmationBeforeDeleteItems": {},
|
"@settingsConfirmationBeforeDeleteItems": {},
|
||||||
"genericSuccessFeedback": "انجام شد!",
|
"genericSuccessFeedback": "انجام شد!",
|
||||||
"@genericSuccessFeedback": {},
|
"@genericSuccessFeedback": {},
|
||||||
"aboutLicensesShowAllButtonLabel": "نمایش تمام مجوز ها",
|
"aboutLicensesShowAllButtonLabel": "نمایش تمام مجوز ها",
|
||||||
"@aboutLicensesShowAllButtonLabel": {},
|
"@aboutLicensesShowAllButtonLabel": {},
|
||||||
"drawerCollectionSphericalVideos": "ویدیو های 360°",
|
"drawerCollectionSphericalVideos": "ویدیوهای 360°",
|
||||||
"@drawerCollectionSphericalVideos": {},
|
"@drawerCollectionSphericalVideos": {},
|
||||||
"searchAlbumsSectionTitle": "آلبوم ها",
|
"searchAlbumsSectionTitle": "آلبوم ها",
|
||||||
"@searchAlbumsSectionTitle": {},
|
"@searchAlbumsSectionTitle": {},
|
||||||
"tagPageTitle": "برچسب ها",
|
"tagPageTitle": "برچسب ها",
|
||||||
"@tagPageTitle": {},
|
"@tagPageTitle": {},
|
||||||
"settingsEnableBin": "بهرهوری از سطل زباله",
|
"settingsEnableBin": "بهکارگیری سطل زباله",
|
||||||
"@settingsEnableBin": {},
|
"@settingsEnableBin": {},
|
||||||
"settingsEnableBinSubtitle": "موارد پاک شده را به مدت 30 روز نگه دارید",
|
"settingsEnableBinSubtitle": "موارد پاک شده را به مدت 30 روز نگه دارید",
|
||||||
"@settingsEnableBinSubtitle": {},
|
"@settingsEnableBinSubtitle": {},
|
||||||
|
@ -1445,9 +1445,9 @@
|
||||||
},
|
},
|
||||||
"settingsDisablingBinWarningDialogMessage": "موارد موجود در سطل زباله برای همیشه نابود خواهند شد.",
|
"settingsDisablingBinWarningDialogMessage": "موارد موجود در سطل زباله برای همیشه نابود خواهند شد.",
|
||||||
"@settingsDisablingBinWarningDialogMessage": {},
|
"@settingsDisablingBinWarningDialogMessage": {},
|
||||||
"settingsAllowInstalledAppAccessSubtitle": "برای بهبود نمایش آلبوم بهرهوری میشود",
|
"settingsAllowInstalledAppAccessSubtitle": "برای بهبود نمایش آلبوم بهکارگرفته میشود",
|
||||||
"@settingsAllowInstalledAppAccessSubtitle": {},
|
"@settingsAllowInstalledAppAccessSubtitle": {},
|
||||||
"settingsStorageAccessBanner": "برخی پوشه ها برای اصلاح پرونپه های موجود در آنها به یک مجوز دسترسی نیاز دارند. در اینجا می توانید پوشه هایی را که قبلاً به آنها دسترسی داشته اید، مرور کنید.",
|
"settingsStorageAccessBanner": "برخی پوشه ها برای اصلاح پروندههای موجود در آنها به یک مجوز دسترسی نیاز دارند. در اینجا می توانید پوشه هایی را که قبلاً به آنها دسترسی داشته اید، مرور کنید.",
|
||||||
"@settingsStorageAccessBanner": {},
|
"@settingsStorageAccessBanner": {},
|
||||||
"collectionMoveFailureFeedback": "{count, plural, =1{هدایت ۱ مورد ناموفق بود} other{هدایت {count} مورد ناموفق بود}}",
|
"collectionMoveFailureFeedback": "{count, plural, =1{هدایت ۱ مورد ناموفق بود} other{هدایت {count} مورد ناموفق بود}}",
|
||||||
"@collectionMoveFailureFeedback": {
|
"@collectionMoveFailureFeedback": {
|
||||||
|
|
|
@ -1390,5 +1390,7 @@
|
||||||
"videoActionShowNextFrame": "Montrer l’image suivante",
|
"videoActionShowNextFrame": "Montrer l’image suivante",
|
||||||
"@videoActionShowNextFrame": {},
|
"@videoActionShowNextFrame": {},
|
||||||
"videoActionShowPreviousFrame": "Montrer l’image précédente",
|
"videoActionShowPreviousFrame": "Montrer l’image précédente",
|
||||||
"@videoActionShowPreviousFrame": {}
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "L’album existe déjà",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1390,5 +1390,7 @@
|
||||||
"videoActionShowPreviousFrame": "Tampilkan bingkai sebelumnya",
|
"videoActionShowPreviousFrame": "Tampilkan bingkai sebelumnya",
|
||||||
"@videoActionShowPreviousFrame": {},
|
"@videoActionShowPreviousFrame": {},
|
||||||
"videoActionShowNextFrame": "Tampilkan bingkai berikutnya",
|
"videoActionShowNextFrame": "Tampilkan bingkai berikutnya",
|
||||||
"@videoActionShowNextFrame": {}
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Album sudah ada",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1390,5 +1390,7 @@
|
||||||
"videoActionShowNextFrame": "다음 프레임 보기",
|
"videoActionShowNextFrame": "다음 프레임 보기",
|
||||||
"@videoActionShowNextFrame": {},
|
"@videoActionShowNextFrame": {},
|
||||||
"videoActionShowPreviousFrame": "이전 프레임 보기",
|
"videoActionShowPreviousFrame": "이전 프레임 보기",
|
||||||
"@videoActionShowPreviousFrame": {}
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "앨범이 이미 있습니다",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1392,5 +1392,7 @@
|
||||||
"videoActionShowNextFrame": "Volgend frame weergeven",
|
"videoActionShowNextFrame": "Volgend frame weergeven",
|
||||||
"@videoActionShowNextFrame": {},
|
"@videoActionShowNextFrame": {},
|
||||||
"videoActionShowPreviousFrame": "Vorig frame weergeven",
|
"videoActionShowPreviousFrame": "Vorig frame weergeven",
|
||||||
"@videoActionShowPreviousFrame": {}
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Album bestaat al",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1548,5 +1548,7 @@
|
||||||
"videoActionShowPreviousFrame": "Pokaż poprzednią klatkę",
|
"videoActionShowPreviousFrame": "Pokaż poprzednią klatkę",
|
||||||
"@videoActionShowPreviousFrame": {},
|
"@videoActionShowPreviousFrame": {},
|
||||||
"videoActionShowNextFrame": "Pokaż kolejną klatkę",
|
"videoActionShowNextFrame": "Pokaż kolejną klatkę",
|
||||||
"@videoActionShowNextFrame": {}
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Album już istnieje",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1386,5 +1386,11 @@
|
||||||
"mapAttributionOsmLiberty": "Blocos por [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Hospedado por [OSM Americana](https://tile.ourmap.us)",
|
"mapAttributionOsmLiberty": "Blocos por [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Hospedado por [OSM Americana](https://tile.ourmap.us)",
|
||||||
"@mapAttributionOsmLiberty": {},
|
"@mapAttributionOsmLiberty": {},
|
||||||
"mapAttributionOpenTopoMap": "[SRTM](https://www.earthdata.nasa.gov/sensors/srtm) | Blocos por [OpenTopoMap](https://opentopomap.org/), [CC BY-SA](https://creativecommons.org/licenses/by-sa/3.0/)",
|
"mapAttributionOpenTopoMap": "[SRTM](https://www.earthdata.nasa.gov/sensors/srtm) | Blocos por [OpenTopoMap](https://opentopomap.org/), [CC BY-SA](https://creativecommons.org/licenses/by-sa/3.0/)",
|
||||||
"@mapAttributionOpenTopoMap": {}
|
"@mapAttributionOpenTopoMap": {},
|
||||||
|
"videoActionShowNextFrame": "Mostrar próximo quadro",
|
||||||
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "O álbum já existe",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {},
|
||||||
|
"videoActionShowPreviousFrame": "Mostrar quadro anterior",
|
||||||
|
"@videoActionShowPreviousFrame": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1544,5 +1544,9 @@
|
||||||
"mapStyleOsmLiberty": "OSM Slobody",
|
"mapStyleOsmLiberty": "OSM Slobody",
|
||||||
"@mapStyleOsmLiberty": {},
|
"@mapStyleOsmLiberty": {},
|
||||||
"mapAttributionOsmLiberty": "Dlaždice podľa [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Hostovaný [OSM Americana](https://tile.ourmap.us)",
|
"mapAttributionOsmLiberty": "Dlaždice podľa [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Hostovaný [OSM Americana](https://tile.ourmap.us)",
|
||||||
"@mapAttributionOsmLiberty": {}
|
"@mapAttributionOsmLiberty": {},
|
||||||
|
"videoActionShowPreviousFrame": "Zobraziť predchádzajúci rám",
|
||||||
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"videoActionShowNextFrame": "Zobraziť ďalší rám",
|
||||||
|
"@videoActionShowNextFrame": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1570,5 +1570,7 @@
|
||||||
"videoActionShowPreviousFrame": "Visa föregående bildruta",
|
"videoActionShowPreviousFrame": "Visa föregående bildruta",
|
||||||
"@videoActionShowPreviousFrame": {},
|
"@videoActionShowPreviousFrame": {},
|
||||||
"videoActionShowNextFrame": "Visa nästa bildruta",
|
"videoActionShowNextFrame": "Visa nästa bildruta",
|
||||||
"@videoActionShowNextFrame": {}
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Albumet existerar redan",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1386,5 +1386,11 @@
|
||||||
"mapAttributionOsmLiberty": "Döşemeler [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Barındıran [OSM Americana](https://tile.ourmap.us)",
|
"mapAttributionOsmLiberty": "Döşemeler [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • Barındıran [OSM Americana](https://tile.ourmap.us)",
|
||||||
"@mapAttributionOsmLiberty": {},
|
"@mapAttributionOsmLiberty": {},
|
||||||
"mapAttributionOsmData": "Harita verileri © [OpenStreetMap](https://www.openstreetmap.org/copyright) katkıda bulunanlar",
|
"mapAttributionOsmData": "Harita verileri © [OpenStreetMap](https://www.openstreetmap.org/copyright) katkıda bulunanlar",
|
||||||
"@mapAttributionOsmData": {}
|
"@mapAttributionOsmData": {},
|
||||||
|
"videoActionShowNextFrame": "Sonraki kareyi göster",
|
||||||
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "Böyle bir albüm zaten var",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {},
|
||||||
|
"videoActionShowPreviousFrame": "Önceki kareyi göster",
|
||||||
|
"@videoActionShowPreviousFrame": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1382,5 +1382,13 @@
|
||||||
"mapAttributionOpenTopoMap": "[SRTM](https://www.earthdata.nasa.gov/sensors/srtm) | 图块由 [OpenTopoMap](https://opentopomap.org/)提供,[CC BY-SA](https://creativecommons.org/licenses/by-sa/3.0/)",
|
"mapAttributionOpenTopoMap": "[SRTM](https://www.earthdata.nasa.gov/sensors/srtm) | 图块由 [OpenTopoMap](https://opentopomap.org/)提供,[CC BY-SA](https://creativecommons.org/licenses/by-sa/3.0/)",
|
||||||
"@mapAttributionOpenTopoMap": {},
|
"@mapAttributionOpenTopoMap": {},
|
||||||
"mapAttributionOsmData": "地图数据由 © [OpenStreetMap](https://www.openstreetmap.org/copyright) 贡献",
|
"mapAttributionOsmData": "地图数据由 © [OpenStreetMap](https://www.openstreetmap.org/copyright) 贡献",
|
||||||
"@mapAttributionOsmData": {}
|
"@mapAttributionOsmData": {},
|
||||||
|
"videoActionShowPreviousFrame": "显示上一帧",
|
||||||
|
"@videoActionShowPreviousFrame": {},
|
||||||
|
"videoActionShowNextFrame": "显示下一帧",
|
||||||
|
"@videoActionShowNextFrame": {},
|
||||||
|
"newAlbumDialogAlbumAlreadyExistsHelper": "相册已存在",
|
||||||
|
"@newAlbumDialogAlbumAlreadyExistsHelper": {},
|
||||||
|
"mapAttributionOsmLiberty": "绘制于 [OpenMapTiles](https://www.openmaptiles.org/), [CC BY](http://creativecommons.org/licenses/by/4.0) • 主办方 [OSM Americana](https://tile.ourmap.us)",
|
||||||
|
"@mapAttributionOsmLiberty": {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,11 +110,16 @@ class Contributors {
|
||||||
Contributor('Your Average Code', 'neumeiersi91358@th-nuernberg.de'),
|
Contributor('Your Average Code', 'neumeiersi91358@th-nuernberg.de'),
|
||||||
Contributor('Paranoid Android', 'f.cherdzhiev@innopolis.university'),
|
Contributor('Paranoid Android', 'f.cherdzhiev@innopolis.university'),
|
||||||
Contributor('Noah Kenzie Rodriguez-Beus', 'noahbeus@protonmail.com'),
|
Contributor('Noah Kenzie Rodriguez-Beus', 'noahbeus@protonmail.com'),
|
||||||
|
Contributor('5FeetUnder', '15950507+5FeetUnder@users.noreply.github.com'),
|
||||||
|
Contributor('Cleverson Cândido', 'optimuspraimu@gmail.com'),
|
||||||
|
Contributor('Hasan Kara', 'hasanbeytullahkara@gmail.com'),
|
||||||
|
// Contributor('Femini', 'nizamismidov4@gmail.com'), // Azerbaijani
|
||||||
// Contributor('Alvi Khan', 'aveenalvi@gmail.com'), // Bengali
|
// Contributor('Alvi Khan', 'aveenalvi@gmail.com'), // Bengali
|
||||||
// Contributor('Htet Oo Hlaing', 'htetoh2006@outlook.com'), // Burmese
|
// Contributor('Htet Oo Hlaing', 'htetoh2006@outlook.com'), // Burmese
|
||||||
// Contributor('Khant', 'khant@users.noreply.hosted.weblate.org'), // Burmese
|
// Contributor('Khant', 'khant@users.noreply.hosted.weblate.org'), // Burmese
|
||||||
// Contributor('Grooty12', 'Rasmus@rosendahl-kaa.name'), // Danish
|
// Contributor('Grooty12', 'Rasmus@rosendahl-kaa.name'), // Danish
|
||||||
// Contributor('Victor M', 'victormorita@tuta.io'), // Danish
|
// Contributor('Victor M', 'victormorita@tuta.io'), // Danish
|
||||||
|
// Contributor('Priit Jõerüüt', 'hwlate@joeruut.com'), // Estonian
|
||||||
// Contributor('Åzze', 'laitinen.jere222@gmail.com'), // Finnish
|
// Contributor('Åzze', 'laitinen.jere222@gmail.com'), // Finnish
|
||||||
// Contributor('Olli', 'ollinen@ollit.dev'), // Finnish
|
// Contributor('Olli', 'ollinen@ollit.dev'), // Finnish
|
||||||
// Contributor('Idj', 'joneltmp+goahn@gmail.com'), // Hebrew
|
// Contributor('Idj', 'joneltmp+goahn@gmail.com'), // Hebrew
|
||||||
|
|
|
@ -33,8 +33,14 @@ extension ExtraAvesEntryCatalog on AvesEntry {
|
||||||
if ((isVideo && (!isSized || durationMillis == 0)) || mimeType == MimeTypes.avif) {
|
if ((isVideo && (!isSized || durationMillis == 0)) || mimeType == MimeTypes.avif) {
|
||||||
// exotic video that is not sized during loading
|
// exotic video that is not sized during loading
|
||||||
final fields = await VideoMetadataFormatter.getLoadingMetadata(this);
|
final fields = await VideoMetadataFormatter.getLoadingMetadata(this);
|
||||||
|
// check size as the video interpreter may fail on some AVIF stills
|
||||||
|
final width = fields['width'];
|
||||||
|
final height = fields['height'];
|
||||||
|
final isValid = (width == null || width > 0) && (height == null || height > 0);
|
||||||
|
if (isValid) {
|
||||||
await applyNewFields(fields, persist: persist);
|
await applyNewFields(fields, persist: persist);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// cataloguing on platform
|
// cataloguing on platform
|
||||||
catalogMetadata = await metadataFetchService.getCatalogMetadata(this, background: background);
|
catalogMetadata = await metadataFetchService.getCatalogMetadata(this, background: background);
|
||||||
|
|
|
@ -50,7 +50,7 @@ extension ExtraAvesEntryInfo on AvesEntry {
|
||||||
);
|
);
|
||||||
}).toList();
|
}).toList();
|
||||||
|
|
||||||
if (isVideo || (mimeType == MimeTypes.heif && isMultiPage)) {
|
if (isVideo || (mimeType == MimeTypes.heif && isMultiPage) || mimeType == MimeTypes.avif) {
|
||||||
directories.addAll(await _getStreamDirectories(context));
|
directories.addAll(await _getStreamDirectories(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,9 +147,11 @@ mixin AlbumMixin on SourceBase {
|
||||||
// new albums
|
// new albums
|
||||||
|
|
||||||
void createAlbum(String directory) {
|
void createAlbum(String directory) {
|
||||||
|
if (!_directories.contains(directory)) {
|
||||||
_newAlbums.add(directory);
|
_newAlbums.add(directory);
|
||||||
addDirectories(albums: {directory});
|
addDirectories(albums: {directory});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void renameNewAlbum(String source, String destination) {
|
void renameNewAlbum(String source, String destination) {
|
||||||
if (_newAlbums.remove(source)) {
|
if (_newAlbums.remove(source)) {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:aves/model/covers.dart';
|
import 'package:aves/model/covers.dart';
|
||||||
import 'package:aves/model/entry/entry.dart';
|
import 'package:aves/model/entry/entry.dart';
|
||||||
|
@ -26,6 +27,7 @@ import 'package:aves/model/vaults/vaults.dart';
|
||||||
import 'package:aves/services/analysis_service.dart';
|
import 'package:aves/services/analysis_service.dart';
|
||||||
import 'package:aves/services/common/image_op_events.dart';
|
import 'package:aves/services/common/image_op_events.dart';
|
||||||
import 'package:aves/services/common/services.dart';
|
import 'package:aves/services/common/services.dart';
|
||||||
|
import 'package:aves/widgets/aves_app.dart';
|
||||||
import 'package:aves_model/aves_model.dart';
|
import 'package:aves_model/aves_model.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:event_bus/event_bus.dart';
|
import 'package:event_bus/event_bus.dart';
|
||||||
|
@ -498,11 +500,19 @@ abstract class CollectionSource with SourceBase, AlbumMixin, CountryMixin, Place
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startAnalysisService) {
|
if (startAnalysisService) {
|
||||||
|
final lifecycleState = AvesApp.lifecycleStateNotifier.value;
|
||||||
|
switch (lifecycleState) {
|
||||||
|
case AppLifecycleState.resumed:
|
||||||
|
case AppLifecycleState.inactive:
|
||||||
await AnalysisService.startService(
|
await AnalysisService.startService(
|
||||||
force: force,
|
force: force,
|
||||||
entryIds: entries?.map((entry) => entry.id).toList(),
|
entryIds: entries?.map((entry) => entry.id).toList(),
|
||||||
);
|
);
|
||||||
|
default:
|
||||||
|
unawaited(reportService.log('analysis service not started because app is in state=$lifecycleState'));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// explicit GC before cataloguing multiple items
|
// explicit GC before cataloguing multiple items
|
||||||
await deviceService.requestGarbageCollection();
|
await deviceService.requestGarbageCollection();
|
||||||
|
|
|
@ -63,7 +63,7 @@ class MediaStoreSource extends CollectionSource {
|
||||||
if (currentTimeZoneOffset != null) {
|
if (currentTimeZoneOffset != null) {
|
||||||
final catalogTimeZoneOffset = settings.catalogTimeZoneRawOffsetMillis;
|
final catalogTimeZoneOffset = settings.catalogTimeZoneRawOffsetMillis;
|
||||||
if (currentTimeZoneOffset != catalogTimeZoneOffset) {
|
if (currentTimeZoneOffset != catalogTimeZoneOffset) {
|
||||||
unawaited(reportService.log('Time zone offset change: $currentTimeZoneOffset -> $catalogTimeZoneOffset. Clear catalog metadata to get correct date/times.'));
|
unawaited(reportService.recordError('Time zone offset change: $currentTimeZoneOffset -> $catalogTimeZoneOffset. Clear catalog metadata to get correct date/times.', null));
|
||||||
await localMediaDb.clearDates();
|
await localMediaDb.clearDates();
|
||||||
await localMediaDb.clearCatalogMetadata();
|
await localMediaDb.clearCatalogMetadata();
|
||||||
settings.catalogTimeZoneRawOffsetMillis = currentTimeZoneOffset;
|
settings.catalogTimeZoneRawOffsetMillis = currentTimeZoneOffset;
|
||||||
|
|
|
@ -19,6 +19,11 @@ class AndroidFileUtils {
|
||||||
// cf https://developer.android.com/reference/android/provider/MediaStore#VOLUME_EXTERNAL
|
// cf https://developer.android.com/reference/android/provider/MediaStore#VOLUME_EXTERNAL
|
||||||
static const externalVolume = 'external';
|
static const externalVolume = 'external';
|
||||||
|
|
||||||
|
static const standardDirDcim = 'DCIM';
|
||||||
|
static const standardDirDownloads = 'Download';
|
||||||
|
static const standardDirMovies = 'Movies';
|
||||||
|
static const standardDirPictures = 'Pictures';
|
||||||
|
|
||||||
static const mediaStoreUriRoot = '$contentScheme://$mediaStoreAuthority/';
|
static const mediaStoreUriRoot = '$contentScheme://$mediaStoreAuthority/';
|
||||||
static const mediaUriPathRoots = {'/$externalVolume/images/', '/$externalVolume/video/'};
|
static const mediaUriPathRoots = {'/$externalVolume/images/', '/$externalVolume/video/'};
|
||||||
|
|
||||||
|
@ -43,12 +48,13 @@ class AndroidFileUtils {
|
||||||
await _initStorageVolumes();
|
await _initStorageVolumes();
|
||||||
vaultRoot = await storageService.getVaultRoot();
|
vaultRoot = await storageService.getVaultRoot();
|
||||||
primaryStorage = storageVolumes.firstWhereOrNull((volume) => volume.isPrimary)?.path ?? separator;
|
primaryStorage = storageVolumes.firstWhereOrNull((volume) => volume.isPrimary)?.path ?? separator;
|
||||||
// standard
|
// standard dirs
|
||||||
dcimPath = pContext.join(primaryStorage, 'DCIM');
|
dcimPath = pContext.join(primaryStorage, standardDirDcim);
|
||||||
// effective download path may have a different case
|
// effective download path may have a different case
|
||||||
downloadPath = pContext.join(primaryStorage, 'Download').toLowerCase();
|
downloadPath = pContext.join(primaryStorage, standardDirDownloads).toLowerCase();
|
||||||
moviesPath = pContext.join(primaryStorage, 'Movies');
|
moviesPath = pContext.join(primaryStorage, standardDirMovies);
|
||||||
picturesPath = pContext.join(primaryStorage, 'Pictures');
|
picturesPath = pContext.join(primaryStorage, standardDirPictures);
|
||||||
|
// custom dirs
|
||||||
avesVideoCapturesPath = pContext.join(dcimPath, 'Video Captures');
|
avesVideoCapturesPath = pContext.join(dcimPath, 'Video Captures');
|
||||||
videoCapturesPaths = {
|
videoCapturesPaths = {
|
||||||
// from Samsung
|
// from Samsung
|
||||||
|
|
|
@ -64,9 +64,11 @@ class AvesApp extends StatefulWidget {
|
||||||
// temporary exclude locales not ready yet for prime time
|
// temporary exclude locales not ready yet for prime time
|
||||||
// `ckb`: add `flutter_ckb_localization` and necessary app localization delegates when ready
|
// `ckb`: add `flutter_ckb_localization` and necessary app localization delegates when ready
|
||||||
static final _unsupportedLocales = {
|
static final _unsupportedLocales = {
|
||||||
|
'az', // Azerbaijani
|
||||||
'bn', // Bengali
|
'bn', // Bengali
|
||||||
'ckb', // Kurdish (Central)
|
'ckb', // Kurdish (Central)
|
||||||
'da', // Danish
|
'da', // Danish
|
||||||
|
'et', // Estonian
|
||||||
'fi', // Finnish
|
'fi', // Finnish
|
||||||
'gl', // Galician
|
'gl', // Galician
|
||||||
'he', // Hebrew
|
'he', // Hebrew
|
||||||
|
|
|
@ -689,7 +689,7 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
|
||||||
},
|
},
|
||||||
routeSettings: const RouteSettings(name: TileViewDialog.routeName),
|
routeSettings: const RouteSettings(name: TileViewDialog.routeName),
|
||||||
);
|
);
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
if (value != null && initialValue != value) {
|
if (value != null && initialValue != value) {
|
||||||
settings.collectionSortFactor = value.$1!;
|
settings.collectionSortFactor = value.$1!;
|
||||||
|
|
|
@ -512,7 +512,7 @@ class EntrySetActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAware
|
||||||
);
|
);
|
||||||
if (confirmed == null || !confirmed) return null;
|
if (confirmed == null || !confirmed) return null;
|
||||||
|
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
return supported;
|
return supported;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:aves/model/source/collection_source.dart';
|
||||||
import 'package:aves/services/common/services.dart';
|
import 'package:aves/services/common/services.dart';
|
||||||
import 'package:aves/theme/durations.dart';
|
import 'package:aves/theme/durations.dart';
|
||||||
import 'package:aves/utils/android_file_utils.dart';
|
import 'package:aves/utils/android_file_utils.dart';
|
||||||
|
@ -9,6 +10,7 @@ import 'package:aves/widgets/dialogs/aves_dialog.dart';
|
||||||
import 'package:aves_model/aves_model.dart';
|
import 'package:aves_model/aves_model.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class CreateAlbumDialog extends StatefulWidget {
|
class CreateAlbumDialog extends StatefulWidget {
|
||||||
static const routeName = '/dialog/create_album';
|
static const routeName = '/dialog/create_album';
|
||||||
|
@ -23,7 +25,8 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
final TextEditingController _nameController = TextEditingController();
|
final TextEditingController _nameController = TextEditingController();
|
||||||
final FocusNode _nameFieldFocusNode = FocusNode();
|
final FocusNode _nameFieldFocusNode = FocusNode();
|
||||||
final ValueNotifier<bool> _existsNotifier = ValueNotifier(false);
|
final ValueNotifier<bool> _directoryExistsNotifier = ValueNotifier(false);
|
||||||
|
final ValueNotifier<bool> _albumExistsNotifier = ValueNotifier(false);
|
||||||
final ValueNotifier<bool> _isValidNotifier = ValueNotifier(false);
|
final ValueNotifier<bool> _isValidNotifier = ValueNotifier(false);
|
||||||
late Set<StorageVolume> _allVolumes;
|
late Set<StorageVolume> _allVolumes;
|
||||||
late StorageVolume? _primaryVolume, _selectedVolume;
|
late StorageVolume? _primaryVolume, _selectedVolume;
|
||||||
|
@ -43,13 +46,14 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
_nameController.dispose();
|
_nameController.dispose();
|
||||||
_nameFieldFocusNode.removeListener(_onFocus);
|
_nameFieldFocusNode.removeListener(_onFocus);
|
||||||
_nameFieldFocusNode.dispose();
|
_nameFieldFocusNode.dispose();
|
||||||
_existsNotifier.dispose();
|
_directoryExistsNotifier.dispose();
|
||||||
_isValidNotifier.dispose();
|
_isValidNotifier.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final l10n = context.l10n;
|
||||||
const contentHorizontalPadding = EdgeInsets.symmetric(horizontal: AvesDialog.defaultHorizontalContentPadding);
|
const contentHorizontalPadding = EdgeInsets.symmetric(horizontal: AvesDialog.defaultHorizontalContentPadding);
|
||||||
|
|
||||||
final volumeTiles = <Widget>[];
|
final volumeTiles = <Widget>[];
|
||||||
|
@ -61,7 +65,7 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
volumeTiles.addAll([
|
volumeTiles.addAll([
|
||||||
Padding(
|
Padding(
|
||||||
padding: contentHorizontalPadding + const EdgeInsets.only(top: 20),
|
padding: contentHorizontalPadding + const EdgeInsets.only(top: 20),
|
||||||
child: Text(context.l10n.newAlbumDialogStorageLabel),
|
child: Text(l10n.newAlbumDialogStorageLabel),
|
||||||
),
|
),
|
||||||
...primaryVolumes.map((volume) => _buildVolumeTile(context, volume)),
|
...primaryVolumes.map((volume) => _buildVolumeTile(context, volume)),
|
||||||
...otherVolumes.map((volume) => _buildVolumeTile(context, volume)),
|
...otherVolumes.map((volume) => _buildVolumeTile(context, volume)),
|
||||||
|
@ -70,21 +74,27 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
}
|
}
|
||||||
|
|
||||||
return AvesDialog(
|
return AvesDialog(
|
||||||
title: context.l10n.newAlbumDialogTitle,
|
title: l10n.newAlbumDialogTitle,
|
||||||
scrollController: _scrollController,
|
scrollController: _scrollController,
|
||||||
scrollableContent: [
|
scrollableContent: [
|
||||||
...volumeTiles,
|
...volumeTiles,
|
||||||
Padding(
|
Padding(
|
||||||
padding: contentHorizontalPadding + const EdgeInsets.only(bottom: 8),
|
padding: contentHorizontalPadding + const EdgeInsets.only(bottom: 8),
|
||||||
child: ValueListenableBuilder<bool>(
|
child: AnimatedBuilder(
|
||||||
valueListenable: _existsNotifier,
|
animation: Listenable.merge([_albumExistsNotifier, _directoryExistsNotifier]),
|
||||||
builder: (context, exists, child) {
|
builder: (context, child) {
|
||||||
|
var helperText = '';
|
||||||
|
if (_albumExistsNotifier.value) {
|
||||||
|
helperText = l10n.newAlbumDialogAlbumAlreadyExistsHelper;
|
||||||
|
} else if (_directoryExistsNotifier.value) {
|
||||||
|
helperText = l10n.newAlbumDialogNameLabelAlreadyExistsHelper;
|
||||||
|
}
|
||||||
return TextField(
|
return TextField(
|
||||||
controller: _nameController,
|
controller: _nameController,
|
||||||
focusNode: _nameFieldFocusNode,
|
focusNode: _nameFieldFocusNode,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: context.l10n.newAlbumDialogNameLabel,
|
labelText: l10n.newAlbumDialogNameLabel,
|
||||||
helperText: exists ? context.l10n.newAlbumDialogNameLabelAlreadyExistsHelper : '',
|
helperText: helperText,
|
||||||
),
|
),
|
||||||
autofocus: _allVolumes.length == 1,
|
autofocus: _allVolumes.length == 1,
|
||||||
onChanged: (_) => _validate(),
|
onChanged: (_) => _validate(),
|
||||||
|
@ -96,11 +106,16 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
actions: [
|
actions: [
|
||||||
const CancelButton(),
|
const CancelButton(),
|
||||||
ValueListenableBuilder<bool>(
|
ValueListenableBuilder<bool>(
|
||||||
|
valueListenable: _albumExistsNotifier,
|
||||||
|
builder: (context, albumExists, child) {
|
||||||
|
return ValueListenableBuilder<bool>(
|
||||||
valueListenable: _isValidNotifier,
|
valueListenable: _isValidNotifier,
|
||||||
builder: (context, isValid, child) {
|
builder: (context, isValid, child) {
|
||||||
return TextButton(
|
return TextButton(
|
||||||
onPressed: isValid ? () => _submit(context) : null,
|
onPressed: isValid ? () => _submit(context) : null,
|
||||||
child: Text(context.l10n.createAlbumButtonLabel),
|
child: Text(albumExists ? l10n.showButtonLabel : l10n.createAlbumButtonLabel),
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -147,34 +162,18 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
String _sanitize(String input) => input.trim();
|
Future<String?> _buildAlbumPath() async {
|
||||||
|
final name = _nameController.text.trim();
|
||||||
|
if (name.isEmpty) return null;
|
||||||
|
|
||||||
String? _buildAlbumPath(String name) {
|
|
||||||
final selectedVolume = _selectedVolume;
|
|
||||||
if (selectedVolume == null || name.isEmpty) return null;
|
|
||||||
return pContext.join(selectedVolume.path, 'Pictures', name);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> _validate() async {
|
|
||||||
final newName = _sanitize(_nameController.text);
|
|
||||||
final path = _buildAlbumPath(newName);
|
|
||||||
// this check ignores case
|
|
||||||
final exists = path != null && await Directory(path).exists();
|
|
||||||
_existsNotifier.value = exists;
|
|
||||||
_isValidNotifier.value = path != null && newName.isNotEmpty;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> _submit(BuildContext context) async {
|
|
||||||
if (!_isValidNotifier.value) return;
|
|
||||||
|
|
||||||
final newName = _sanitize(_nameController.text);
|
|
||||||
final albumPath = _buildAlbumPath(newName);
|
|
||||||
final volumePath = _selectedVolume?.path;
|
final volumePath = _selectedVolume?.path;
|
||||||
if (albumPath == null || volumePath == null) return;
|
if (volumePath == null) return null;
|
||||||
|
|
||||||
|
final candidatePath = pContext.join(volumePath, AndroidFileUtils.standardDirPictures, name);
|
||||||
|
|
||||||
// uses resolved directory name case if it exists
|
// uses resolved directory name case if it exists
|
||||||
var resolvedPath = volumePath;
|
var resolvedPath = volumePath;
|
||||||
final relativePathSegments = pContext.split(pContext.relative(albumPath, from: volumePath));
|
final relativePathSegments = pContext.split(pContext.relative(candidatePath, from: volumePath));
|
||||||
for (final targetSegment in relativePathSegments) {
|
for (final targetSegment in relativePathSegments) {
|
||||||
String? resolvedSegment;
|
String? resolvedSegment;
|
||||||
final directory = Directory(resolvedPath);
|
final directory = Directory(resolvedPath);
|
||||||
|
@ -184,6 +183,22 @@ class _CreateAlbumDialogState extends State<CreateAlbumDialog> {
|
||||||
}
|
}
|
||||||
resolvedPath = pContext.join(resolvedPath, resolvedSegment ?? targetSegment);
|
resolvedPath = pContext.join(resolvedPath, resolvedSegment ?? targetSegment);
|
||||||
}
|
}
|
||||||
Navigator.maybeOf(context)?.pop(resolvedPath);
|
|
||||||
|
return resolvedPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _validate() async {
|
||||||
|
final path = await _buildAlbumPath();
|
||||||
|
final isValid = path != null;
|
||||||
|
_isValidNotifier.value = isValid;
|
||||||
|
_directoryExistsNotifier.value = isValid && await Directory(path).exists();
|
||||||
|
_albumExistsNotifier.value = isValid && context.read<CollectionSource>().rawAlbums.contains(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _submit(BuildContext context) async {
|
||||||
|
final path = await _buildAlbumPath();
|
||||||
|
if (path == null) return;
|
||||||
|
|
||||||
|
Navigator.maybeOf(context)?.pop(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,7 +250,7 @@ class _AlbumPickPageState extends State<_AlbumPickPage> {
|
||||||
);
|
);
|
||||||
if (directory == null) return;
|
if (directory == null) return;
|
||||||
|
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
|
|
||||||
_pickAlbum(directory);
|
_pickAlbum(directory);
|
||||||
|
@ -274,7 +274,7 @@ class _AlbumPickPageState extends State<_AlbumPickPage> {
|
||||||
);
|
);
|
||||||
if (details == null) return;
|
if (details == null) return;
|
||||||
|
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
|
|
||||||
await vaults.create(details);
|
await vaults.create(details);
|
||||||
|
|
|
@ -13,7 +13,7 @@ Future<void> showSelectionDialog<T>({
|
||||||
builder: builder,
|
builder: builder,
|
||||||
routeSettings: const RouteSettings(name: AvesSingleSelectionDialog.routeName),
|
routeSettings: const RouteSettings(name: AvesSingleSelectionDialog.routeName),
|
||||||
);
|
);
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
onSelection(value);
|
onSelection(value);
|
||||||
|
|
|
@ -186,7 +186,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> with
|
||||||
},
|
},
|
||||||
routeSettings: const RouteSettings(name: TileViewDialog.routeName),
|
routeSettings: const RouteSettings(name: TileViewDialog.routeName),
|
||||||
);
|
);
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
if (value != null && initialValue != value) {
|
if (value != null && initialValue != value) {
|
||||||
sortFactor = value.$1!;
|
sortFactor = value.$1!;
|
||||||
|
@ -199,6 +199,11 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> with
|
||||||
void _createAlbum(BuildContext context, {required bool locked}) async {
|
void _createAlbum(BuildContext context, {required bool locked}) async {
|
||||||
final l10n = context.l10n;
|
final l10n = context.l10n;
|
||||||
final source = context.read<CollectionSource>();
|
final source = context.read<CollectionSource>();
|
||||||
|
|
||||||
|
// get navigator beforehand because
|
||||||
|
// local context may be deactivated when action is triggered after navigation
|
||||||
|
final navigator = Navigator.maybeOf(context);
|
||||||
|
|
||||||
late final String? directory;
|
late final String? directory;
|
||||||
if (locked) {
|
if (locked) {
|
||||||
if (!await showSkippableConfirmationDialog(
|
if (!await showSkippableConfirmationDialog(
|
||||||
|
@ -226,16 +231,29 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> with
|
||||||
routeSettings: const RouteSettings(name: CreateAlbumDialog.routeName),
|
routeSettings: const RouteSettings(name: CreateAlbumDialog.routeName),
|
||||||
);
|
);
|
||||||
if (directory == null) return;
|
if (directory == null) return;
|
||||||
|
|
||||||
|
// wait for the dialog to hide
|
||||||
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
}
|
}
|
||||||
|
final filter = AlbumFilter(directory, source.getAlbumDisplayName(context, directory));
|
||||||
|
|
||||||
|
final albumExists = source.rawAlbums.contains(directory);
|
||||||
|
if (albumExists) {
|
||||||
|
// album already exists, so we just need to highlight it
|
||||||
|
await _showAlbum(navigator, filter);
|
||||||
|
} else {
|
||||||
|
// create the album and mark it as new
|
||||||
source.createAlbum(directory);
|
source.createAlbum(directory);
|
||||||
|
|
||||||
final filter = AlbumFilter(directory, source.getAlbumDisplayName(context, directory));
|
|
||||||
// get navigator beforehand because
|
|
||||||
// local context may be deactivated when action is triggered after navigation
|
|
||||||
final navigator = Navigator.maybeOf(context);
|
|
||||||
final showAction = SnackBarAction(
|
final showAction = SnackBarAction(
|
||||||
label: l10n.showButtonLabel,
|
label: l10n.showButtonLabel,
|
||||||
onPressed: () async {
|
onPressed: () => _showAlbum(navigator, filter),
|
||||||
|
);
|
||||||
|
showFeedback(context, FeedbackType.info, l10n.genericSuccessFeedback, showAction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _showAlbum(NavigatorState? navigator, AlbumFilter filter) async {
|
||||||
// local context may be deactivated when action is triggered after navigation
|
// local context may be deactivated when action is triggered after navigation
|
||||||
if (navigator != null) {
|
if (navigator != null) {
|
||||||
final context = navigator.context;
|
final context = navigator.context;
|
||||||
|
@ -253,9 +271,6 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> with
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
);
|
|
||||||
showFeedback(context, FeedbackType.info, l10n.genericSuccessFeedback, showAction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _delete(BuildContext context) async {
|
Future<void> _delete(BuildContext context) async {
|
||||||
|
|
|
@ -249,7 +249,7 @@ abstract class ChipSetActionDelegate<T extends CollectionFilter> with FeedbackMi
|
||||||
},
|
},
|
||||||
routeSettings: const RouteSettings(name: TileViewDialog.routeName),
|
routeSettings: const RouteSettings(name: TileViewDialog.routeName),
|
||||||
);
|
);
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
if (value != null && initialValue != value) {
|
if (value != null && initialValue != value) {
|
||||||
sortFactor = value.$1!;
|
sortFactor = value.$1!;
|
||||||
|
|
|
@ -31,7 +31,7 @@ class LocaleTile extends StatelessWidget {
|
||||||
builder: (context) => const LocaleSelectionPage(),
|
builder: (context) => const LocaleSelectionPage(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.pageTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.pageTransitionLoose * timeDilation);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
settings.locale = value == systemLocaleOption ? null : value;
|
settings.locale = value == systemLocaleOption ? null : value;
|
||||||
|
|
|
@ -479,7 +479,7 @@ class EntryActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAwareMix
|
||||||
);
|
);
|
||||||
if (newName == null || newName.isEmpty || newName == targetEntry.filenameWithoutExtension) return;
|
if (newName == null || newName.isEmpty || newName == targetEntry.filenameWithoutExtension) return;
|
||||||
|
|
||||||
// wait for the dialog to hide as applying the change may block the UI
|
// wait for the dialog to hide
|
||||||
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
await Future.delayed(ADurations.dialogTransitionLoose * timeDilation);
|
||||||
await rename(
|
await rename(
|
||||||
context,
|
context,
|
||||||
|
|
|
@ -105,6 +105,7 @@ class EntryPrinter with FeedbackMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<pdf.Widget?> _buildPageImage(AvesEntry entry) async {
|
Future<pdf.Widget?> _buildPageImage(AvesEntry entry) async {
|
||||||
|
try {
|
||||||
if (entry.isSvg) {
|
if (entry.isSvg) {
|
||||||
final data = await mediaFetchService.getSvg(
|
final data = await mediaFetchService.getSvg(
|
||||||
entry.uri,
|
entry.uri,
|
||||||
|
@ -123,6 +124,9 @@ class EntryPrinter with FeedbackMixin {
|
||||||
fit: _fit,
|
fit: _fit,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
debugPrint('failed to load image for entry=$entry, error=$error');
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,10 +20,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -28,10 +28,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -113,10 +113,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "99f282cb0e02edcbbf8c6b3bbc7c90b65635156c412e58f3975a7e55284ce685"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.20.0"
|
||||||
latlong2:
|
latlong2:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -153,10 +153,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logger
|
name: logger
|
||||||
sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32"
|
sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.5.0"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -286,10 +286,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: web
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.5.1"
|
||||||
wkt_parser:
|
wkt_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -5,10 +5,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _flutterfire_internals
|
name: _flutterfire_internals
|
||||||
sha256: "5534e701a2c505fed1f0799e652dd6ae23bd4d2c4cf797220e5ced5764a7c1c2"
|
sha256: "71c01c1998c40b3af1944ad0a5f374b4e6fef7f3d2df487f3970dbeadaeb25a1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.44"
|
version: "1.3.46"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -68,10 +68,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_core
|
name: firebase_core
|
||||||
sha256: "51dfe2fbf3a984787a2e7b8592f2f05c986bfedd6fdacea3f9e0a7beb334de96"
|
sha256: "2438a75ad803e818ad3bd5df49137ee619c46b6fc7101f4dbc23da07305ce553"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.0"
|
version: "3.8.0"
|
||||||
firebase_core_platform_interface:
|
firebase_core_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -92,18 +92,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_crashlytics
|
name: firebase_crashlytics
|
||||||
sha256: "6899800fff1af819955aef740f18c4c8600f8b952a2a1ea97bc0872ebb257387"
|
sha256: "4e80ef22428dfecf609df8049419c7446c6e1d797d7f307cad3c7ab70e72ddc5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.3"
|
version: "4.1.5"
|
||||||
firebase_crashlytics_platform_interface:
|
firebase_crashlytics_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_crashlytics_platform_interface
|
name: firebase_crashlytics_platform_interface
|
||||||
sha256: "97c47b0a1779a3d4118416a3f0c6c564cc59ad89095e899893204d4b2ad08f4c"
|
sha256: "1104f428ec5249fff62016985719bb232ca91c4bde0d1a033af9b7d8b7451d70"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.44"
|
version: "3.6.46"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
|
|
@ -35,10 +35,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -120,10 +120,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "99f282cb0e02edcbbf8c6b3bbc7c90b65635156c412e58f3975a7e55284ce685"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.20.0"
|
||||||
latlong2:
|
latlong2:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -160,10 +160,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logger
|
name: logger
|
||||||
sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32"
|
sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.5.0"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -293,10 +293,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: web
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.5.1"
|
||||||
wkt_parser:
|
wkt_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -49,10 +49,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -65,10 +65,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: csslib
|
name: csslib
|
||||||
sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
|
sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.2"
|
||||||
custom_rounded_rectangle_border:
|
custom_rounded_rectangle_border:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -89,10 +89,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
sha256: c4af09051b4f0508f6c1dc0a5c085bf014d5c9a4a0678ce1799c2b4d716387a0
|
sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.1.0"
|
version: "10.1.2"
|
||||||
device_info_plus_platform_interface:
|
device_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -203,18 +203,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter
|
name: google_maps_flutter
|
||||||
sha256: "2e302fa3aaf4e2a297f0342d83ebc5e8e9f826e9a716aef473fe7f404ec630a7"
|
sha256: "209856c8e5571626afba7182cf634b2910069dc567954e76ec3e3fb37f5e9db3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.9.0"
|
version: "2.10.0"
|
||||||
google_maps_flutter_android:
|
google_maps_flutter_android:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter_android
|
name: google_maps_flutter_android
|
||||||
sha256: "6caec25edb8014ec7d503babc597794de2d4c1baf3e3d20b57c41bd3e439b916"
|
sha256: bccf64ccbb2ea672dc62a61177b315a340af86b0228564484b023657544a3fd5
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.14.10"
|
version: "2.14.11"
|
||||||
google_maps_flutter_ios:
|
google_maps_flutter_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -243,10 +243,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: html
|
name: html
|
||||||
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.15.4"
|
version: "0.15.5"
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -267,10 +267,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "99f282cb0e02edcbbf8c6b3bbc7c90b65635156c412e58f3975a7e55284ce685"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.20.0"
|
||||||
latlong2:
|
latlong2:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -307,10 +307,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logger
|
name: logger
|
||||||
sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32"
|
sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.5.0"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -464,18 +464,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: web
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.5.1"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: e1d0cc62e65dc2561f5071fcbccecf58ff20c344f8f3dc7d4922df372a11df1f
|
sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.7.1"
|
version: "5.8.0"
|
||||||
win32_registry:
|
win32_registry:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -42,10 +42,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -127,10 +127,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "99f282cb0e02edcbbf8c6b3bbc7c90b65635156c412e58f3975a7e55284ce685"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.20.0"
|
||||||
latlong2:
|
latlong2:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -167,10 +167,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logger
|
name: logger
|
||||||
sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32"
|
sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.5.0"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -300,10 +300,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: web
|
||||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "0.5.1"
|
||||||
wkt_parser:
|
wkt_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -27,10 +27,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -34,10 +34,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -58,10 +58,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.2"
|
||||||
collection:
|
collection:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -156,10 +156,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: js
|
name: js
|
||||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.7"
|
version: "0.7.1"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -188,8 +188,8 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: media_kit
|
path: media_kit
|
||||||
ref: "3e7812ac2db4ec19ea501a387c1bf7a9c79bb64e"
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
resolved-ref: "3e7812ac2db4ec19ea501a387c1bf7a9c79bb64e"
|
resolved-ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
url: "https://github.com/media-kit/media-kit.git"
|
url: "https://github.com/media-kit/media-kit.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.1.11"
|
version: "1.1.11"
|
||||||
|
@ -205,8 +205,8 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: media_kit_video
|
path: media_kit_video
|
||||||
ref: "3e7812ac2db4ec19ea501a387c1bf7a9c79bb64e"
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
resolved-ref: "3e7812ac2db4ec19ea501a387c1bf7a9c79bb64e"
|
resolved-ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
url: "https://github.com/media-kit/media-kit.git"
|
url: "https://github.com/media-kit/media-kit.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.2.5"
|
version: "1.2.5"
|
||||||
|
@ -222,10 +222,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: package_info_plus
|
name: package_info_plus
|
||||||
sha256: df3eb3e0aed5c1107bb0fdb80a8e82e778114958b1c5ac5644fb1ac9cae8a998
|
sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.1.0"
|
version: "8.1.1"
|
||||||
package_info_plus_platform_interface:
|
package_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -270,50 +270,50 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness
|
name: screen_brightness
|
||||||
sha256: ed8da4a4511e79422fc1aa88138e920e4008cd312b72cdaa15ccb426c0faaedd
|
sha256: a43fdbccd5b90044f68057412dde7715cd7499a4c24f5d5da7e01ed4cf41e0af
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.2+1"
|
version: "2.0.0+2"
|
||||||
screen_brightness_android:
|
screen_brightness_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_android
|
name: screen_brightness_android
|
||||||
sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf"
|
sha256: "74455f9901ab8a1a45c9097b83855dbbb7498110cc2bc249cb5a86570dd1cf7c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0+2"
|
version: "2.0.0"
|
||||||
screen_brightness_ios:
|
screen_brightness_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_ios
|
name: screen_brightness_ios
|
||||||
sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2"
|
sha256: caee02b34e0089b138a7aee35c461bd2d7c78446dd417f07613def192598ca08
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0"
|
version: "2.0.0"
|
||||||
screen_brightness_macos:
|
screen_brightness_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_macos
|
name: screen_brightness_macos
|
||||||
sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd"
|
sha256: "84fc8ffcbcf19c03d76b7673b0f2c2a2663c09aa2bc37c76ea83ab049294a97a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0+1"
|
version: "2.0.0"
|
||||||
screen_brightness_platform_interface:
|
screen_brightness_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_platform_interface
|
name: screen_brightness_platform_interface
|
||||||
sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171
|
sha256: "321e9455b0057e3647fd37700931e063739d94a8aa1b094f98133c01cb56c27b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0"
|
version: "2.0.0"
|
||||||
screen_brightness_windows:
|
screen_brightness_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: screen_brightness_windows
|
name: screen_brightness_windows
|
||||||
sha256: "9261bf33d0fc2707d8cf16339ce25768100a65e70af0fcabaf032fc12408ba86"
|
sha256: fa97ae838c42f762f04d2d70adb3d957350d6a84e3598ec800e269e7c466eedd
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.3"
|
version: "2.0.0"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -443,10 +443,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: e1d0cc62e65dc2561f5071fcbccecf58ff20c344f8f3dc7d4922df372a11df1f
|
sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.7.1"
|
version: "5.8.0"
|
||||||
xml:
|
xml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -24,12 +24,12 @@ dependency_overrides:
|
||||||
media_kit:
|
media_kit:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/media-kit/media-kit.git
|
url: https://github.com/media-kit/media-kit.git
|
||||||
ref: 18f155fe81cae93db712307411a17b2b93760eb6
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
path: media_kit
|
path: media_kit
|
||||||
media_kit_video:
|
media_kit_video:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/media-kit/media-kit.git
|
url: https://github.com/media-kit/media-kit.git
|
||||||
ref: 18f155fe81cae93db712307411a17b2b93760eb6
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
path: media_kit_video
|
path: media_kit_video
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
114
pubspec.lock
|
@ -13,10 +13,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _flutterfire_internals
|
name: _flutterfire_internals
|
||||||
sha256: "5534e701a2c505fed1f0799e652dd6ae23bd4d2c4cf797220e5ced5764a7c1c2"
|
sha256: "71c01c1998c40b3af1944ad0a5f374b4e6fef7f3d2df487f3970dbeadaeb25a1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.44"
|
version: "1.3.46"
|
||||||
_macros:
|
_macros:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: dart
|
description: dart
|
||||||
|
@ -247,10 +247,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: coverage
|
name: coverage
|
||||||
sha256: "88b0fddbe4c92910fefc09cc0248f5e7f0cd23e450ded4c28f16ab8ee8f83268"
|
sha256: "4b03e11f6d5b8f6e5bb5e9f7889a56fe6c5cbe942da5378ea4d4d7f73ef9dfe5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0"
|
version: "1.11.0"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -263,10 +263,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: csslib
|
name: csslib
|
||||||
sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
|
sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.2"
|
||||||
custom_rounded_rectangle_border:
|
custom_rounded_rectangle_border:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -303,10 +303,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
sha256: c4af09051b4f0508f6c1dc0a5c085bf014d5c9a4a0678ce1799c2b4d716387a0
|
sha256: f545ffbadee826f26f2e1a0f0cbd667ae9a6011cc0f77c0f8f00a969655e6e95
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.1.0"
|
version: "11.1.1"
|
||||||
device_info_plus_platform_interface:
|
device_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -409,10 +409,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_core
|
name: firebase_core
|
||||||
sha256: "51dfe2fbf3a984787a2e7b8592f2f05c986bfedd6fdacea3f9e0a7beb334de96"
|
sha256: "2438a75ad803e818ad3bd5df49137ee619c46b6fc7101f4dbc23da07305ce553"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.0"
|
version: "3.8.0"
|
||||||
firebase_core_platform_interface:
|
firebase_core_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -433,18 +433,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_crashlytics
|
name: firebase_crashlytics
|
||||||
sha256: "6899800fff1af819955aef740f18c4c8600f8b952a2a1ea97bc0872ebb257387"
|
sha256: "4e80ef22428dfecf609df8049419c7446c6e1d797d7f307cad3c7ab70e72ddc5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.3"
|
version: "4.1.5"
|
||||||
firebase_crashlytics_platform_interface:
|
firebase_crashlytics_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_crashlytics_platform_interface
|
name: firebase_crashlytics_platform_interface
|
||||||
sha256: "97c47b0a1779a3d4118416a3f0c6c564cc59ad89095e899893204d4b2ad08f4c"
|
sha256: "1104f428ec5249fff62016985719bb232ca91c4bde0d1a033af9b7d8b7451d70"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.44"
|
version: "3.6.46"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -473,10 +473,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: floating
|
name: floating
|
||||||
sha256: aaebbbf0cef0454f68476edb6d79ca9734ee0e0080a03cee75db42fcc462efb5
|
sha256: d6e7046bfec4c1ab9e09ef9d88fee104b1eb41171d6e083099bf310535d26b79
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.0"
|
version: "5.0.1"
|
||||||
fluster:
|
fluster:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -600,10 +600,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: get_it
|
name: get_it
|
||||||
sha256: "35c253f83f9e03cbac65ffa159510e41ae15f49b37291ab8c522d7a0b6f330cd"
|
sha256: c49895c1ecb0ee2a0ec568d39de882e2c299ba26355aa6744ab1001f98cebd15
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.0.1"
|
version: "8.0.2"
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -648,18 +648,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter
|
name: google_maps_flutter
|
||||||
sha256: "2e302fa3aaf4e2a297f0342d83ebc5e8e9f826e9a716aef473fe7f404ec630a7"
|
sha256: "209856c8e5571626afba7182cf634b2910069dc567954e76ec3e3fb37f5e9db3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.9.0"
|
version: "2.10.0"
|
||||||
google_maps_flutter_android:
|
google_maps_flutter_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter_android
|
name: google_maps_flutter_android
|
||||||
sha256: "6caec25edb8014ec7d503babc597794de2d4c1baf3e3d20b57c41bd3e439b916"
|
sha256: bccf64ccbb2ea672dc62a61177b315a340af86b0228564484b023657544a3fd5
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.14.10"
|
version: "2.14.11"
|
||||||
google_maps_flutter_ios:
|
google_maps_flutter_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -696,10 +696,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: html
|
name: html
|
||||||
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.15.4"
|
version: "0.15.5"
|
||||||
http:
|
http:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -848,10 +848,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logger
|
name: logger
|
||||||
sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32"
|
sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.5.0"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -904,8 +904,8 @@ packages:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
path: media_kit
|
path: media_kit
|
||||||
ref: "18f155fe81cae93db712307411a17b2b93760eb6"
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
resolved-ref: "18f155fe81cae93db712307411a17b2b93760eb6"
|
resolved-ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
url: "https://github.com/media-kit/media-kit.git"
|
url: "https://github.com/media-kit/media-kit.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.1.11"
|
version: "1.1.11"
|
||||||
|
@ -921,8 +921,8 @@ packages:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
path: media_kit_video
|
path: media_kit_video
|
||||||
ref: "18f155fe81cae93db712307411a17b2b93760eb6"
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
resolved-ref: "18f155fe81cae93db712307411a17b2b93760eb6"
|
resolved-ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
url: "https://github.com/media-kit/media-kit.git"
|
url: "https://github.com/media-kit/media-kit.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.2.5"
|
version: "1.2.5"
|
||||||
|
@ -971,10 +971,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: network_info_plus
|
name: network_info_plus
|
||||||
sha256: "89bad7bf9614e78716f0f86c905fe2a850dbdcc00c377968d5260c49c2c6f2eb"
|
sha256: bf9e39e523e9951d741868dc33ac386b0bc24301e9b7c8a7d60dbc34879150a8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.0"
|
version: "6.1.1"
|
||||||
network_info_plus_platform_interface:
|
network_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1019,10 +1019,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: package_info_plus
|
name: package_info_plus
|
||||||
sha256: df3eb3e0aed5c1107bb0fdb80a8e82e778114958b1c5ac5644fb1ac9cae8a998
|
sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.1.0"
|
version: "8.1.1"
|
||||||
package_info_plus_platform_interface:
|
package_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1035,10 +1035,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: palette_generator
|
name: palette_generator
|
||||||
sha256: d50fbcd69abb80c5baec66d700033b1a320108b1aa17a5961866a12c0abb7c0c
|
sha256: "0b20245c451f14a5ca0818ab7a377765162389f8e8f0db361cceabf0fed9d1ea"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.3+4"
|
version: "0.3.3+5"
|
||||||
panorama:
|
panorama:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1060,18 +1060,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_parsing
|
name: path_parsing
|
||||||
sha256: "45f7d6bba1128761de5540f39d5ca000ea8a1f22f06b76b61094a60a2997bd0e"
|
sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "1.1.0"
|
||||||
path_provider:
|
path_provider:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.5"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1244,10 +1244,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: printing
|
name: printing
|
||||||
sha256: b576764370c920b510cedf3eac7dc199d6d4af34336d608e97546392c0113362
|
sha256: b535d177fc6e8f8908e19b0ff5c1d4a87e3c4d0bf675e05aa2562af1b7853906
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.13.3"
|
version: "5.13.4"
|
||||||
process:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1364,10 +1364,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
|
sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.3"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1497,10 +1497,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
sha256: "79a297dc3cc137e758c6a4baf83342b039e5a6d2436fcdf3f96a00adaaf2ad62"
|
sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.4.1"
|
||||||
sqflite_android:
|
sqflite_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1521,10 +1521,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_darwin
|
name: sqflite_darwin
|
||||||
sha256: "769733dddf94622d5541c73e4ddc6aa7b252d865285914b6fcd54a63c4b4f027"
|
sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.1-1"
|
version: "2.4.1"
|
||||||
sqflite_platform_interface:
|
sqflite_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1674,10 +1674,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
sha256: "0dea215895a4d254401730ca0ba8204b29109a34a99fb06ae559a2b60988d2de"
|
sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.13"
|
version: "6.3.14"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1690,10 +1690,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_linux
|
name: url_launcher_linux
|
||||||
sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
|
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.0"
|
version: "3.2.1"
|
||||||
url_launcher_macos:
|
url_launcher_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1762,10 +1762,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: vector_tile_renderer
|
name: vector_tile_renderer
|
||||||
sha256: b58fa02b472ced87de00de2b4d5837576239bddb21b562481f25bde39bd117ae
|
sha256: "89746f1108eccbc0b6f33fbbef3fcf394cda3733fc0d5064ea03d53a459b56d3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.2.0"
|
version: "5.2.1"
|
||||||
vm_service:
|
vm_service:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1850,10 +1850,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: e1d0cc62e65dc2561f5071fcbccecf58ff20c344f8f3dc7d4922df372a11df1f
|
sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.7.1"
|
version: "5.8.0"
|
||||||
win32_registry:
|
win32_registry:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1896,4 +1896,4 @@ packages:
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.5.0 <4.0.0"
|
||||||
flutter: ">=3.24.4"
|
flutter: ">=3.24.5"
|
||||||
|
|
|
@ -7,13 +7,13 @@ 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.17+136
|
version: 1.11.18+137
|
||||||
publish_to: none
|
publish_to: none
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
# this project bundles Flutter SDK via `flutter_wrapper`
|
# this project bundles Flutter SDK via `flutter_wrapper`
|
||||||
# cf https://github.com/passsy/flutter_wrapper
|
# cf https://github.com/passsy/flutter_wrapper
|
||||||
flutter: 3.24.4
|
flutter: 3.24.5
|
||||||
sdk: '>=3.5.0 <4.0.0'
|
sdk: '>=3.5.0 <4.0.0'
|
||||||
|
|
||||||
# use `scripts/apply_flavor_{flavor}.sh` to set the right dependencies for the flavor
|
# use `scripts/apply_flavor_{flavor}.sh` to set the right dependencies for the flavor
|
||||||
|
@ -122,12 +122,12 @@ dependency_overrides:
|
||||||
media_kit:
|
media_kit:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/media-kit/media-kit.git
|
url: https://github.com/media-kit/media-kit.git
|
||||||
ref: 18f155fe81cae93db712307411a17b2b93760eb6
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
path: media_kit
|
path: media_kit
|
||||||
media_kit_video:
|
media_kit_video:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/media-kit/media-kit.git
|
url: https://github.com/media-kit/media-kit.git
|
||||||
ref: 18f155fe81cae93db712307411a17b2b93760eb6
|
ref: d094ba83715b0ac893e546781b2862e855d34502
|
||||||
path: media_kit_video
|
path: media_kit_video
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
In v1.11.17:
|
In v1.11.18:
|
||||||
- peruse your videos frame by frame
|
- peruse your videos frame by frame
|
||||||
- create map shortcuts to filtered collections
|
- create map shortcuts to filtered collections
|
||||||
- enjoy the app in Shavian
|
- enjoy the app in Shavian
|
||||||
|
|