driver: fixed language selection; l10n: added TR images for izzy
13
CHANGELOG.md
|
@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
## <a id="unreleased"></a>[Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- optional dynamic accent color on Android 12+
|
||||
- Turkish translation (thanks metezd)
|
||||
|
||||
### Changed
|
||||
|
||||
- do not force quit on storage permission denial
|
||||
|
||||
### Fixed
|
||||
|
||||
- merge ambiguously cased directories
|
||||
|
||||
## <a id="v1.6.8"></a>[v1.6.8] - 2022-05-27
|
||||
|
||||
### Fixed
|
||||
|
|
|
@ -93,7 +93,7 @@ At this stage this project does *not* accept PRs, except for translations.
|
|||
|
||||
### Translations
|
||||
|
||||
If you want to translate this app in your language and share the result, [there is a guide](https://github.com/deckerst/aves/wiki/Contributing-to-Translations). English, Korean and French are already handled by me. Russian, German, Spanish, Portuguese, Indonesian, Japanese, Italian & Chinese are handled by generous volunteers.
|
||||
If you want to translate this app in your language and share the result, [there is a guide](https://github.com/deckerst/aves/wiki/Contributing-to-Translations). English, Korean and French are already handled by me. Russian, German, Spanish, Portuguese, Indonesian, Japanese, Italian, Chinese & Turkish are handled by generous volunteers.
|
||||
|
||||
### Donations
|
||||
|
||||
|
|
BIN
fastlane/metadata/android/tr/images/featureGraphic.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
fastlane/metadata/android/tr/images/phoneScreenshots/1.png
Normal file
After Width: | Height: | Size: 245 KiB |
BIN
fastlane/metadata/android/tr/images/phoneScreenshots/2.png
Normal file
After Width: | Height: | Size: 494 KiB |
BIN
fastlane/metadata/android/tr/images/phoneScreenshots/3.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
fastlane/metadata/android/tr/images/phoneScreenshots/4.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
fastlane/metadata/android/tr/images/phoneScreenshots/5.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
fastlane/metadata/android/tr/images/phoneScreenshots/6.png
Normal file
After Width: | Height: | Size: 338 KiB |
|
@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
|
|||
class QueryBar extends StatefulWidget {
|
||||
final ValueNotifier<String> queryNotifier;
|
||||
final FocusNode? focusNode;
|
||||
final EdgeInsetsGeometry? leadingPadding;
|
||||
final IconData? icon;
|
||||
final String? hintText;
|
||||
final bool editable;
|
||||
|
@ -15,6 +16,7 @@ class QueryBar extends StatefulWidget {
|
|||
super.key,
|
||||
required this.queryNotifier,
|
||||
this.focusNode,
|
||||
this.leadingPadding,
|
||||
this.icon,
|
||||
this.hintText,
|
||||
this.editable = true,
|
||||
|
@ -60,7 +62,7 @@ class _QueryBarState extends State<QueryBar> {
|
|||
focusNode: widget.focusNode ?? FocusNode(),
|
||||
decoration: InputDecoration(
|
||||
icon: Padding(
|
||||
padding: const EdgeInsetsDirectional.only(start: 16),
|
||||
padding: widget.leadingPadding ?? const EdgeInsetsDirectional.only(start: 16),
|
||||
child: Icon(widget.icon ?? AIcons.filter),
|
||||
),
|
||||
hintText: widget.hintText ?? MaterialLocalizations.of(context).searchFieldLabel,
|
||||
|
|
|
@ -63,15 +63,16 @@ class _AppPickDialogState extends State<AppPickDialog> {
|
|||
ValueListenableBuilder<String>(
|
||||
valueListenable: _queryNotifier,
|
||||
builder: (context, query, child) {
|
||||
final upQuery = query.toUpperCase().trim();
|
||||
final visiblePackages = packages.where((package) {
|
||||
return {
|
||||
package.packageName,
|
||||
package.currentLabel,
|
||||
package.englishLabel,
|
||||
...package.potentialDirs,
|
||||
}.any((v) => v != null && v.toLowerCase().contains(query.toLowerCase()));
|
||||
}.any((v) => v != null && v.toUpperCase().contains(upQuery));
|
||||
}).toList();
|
||||
final showNoneOption = query.isEmpty;
|
||||
final showNoneOption = upQuery.isEmpty;
|
||||
final itemCount = visiblePackages.length + (showNoneOption ? 1 : 0);
|
||||
return Expanded(
|
||||
child: ListView.builder(
|
||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:collection';
|
|||
import 'package:aves/l10n/l10n.dart';
|
||||
import 'package:aves/model/settings/settings.dart';
|
||||
import 'package:aves/theme/durations.dart';
|
||||
import 'package:aves/widgets/common/basic/query_bar.dart';
|
||||
import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart';
|
||||
import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||
import 'package:aves/widgets/common/providers/media_query_data_provider.dart';
|
||||
|
@ -64,6 +65,7 @@ class LocaleSelectionPage extends StatefulWidget {
|
|||
|
||||
class _LocaleSelectionPageState extends State<LocaleSelectionPage> {
|
||||
late Locale _selectedValue;
|
||||
final ValueNotifier<String> _queryNotifier = ValueNotifier('');
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
@ -79,8 +81,21 @@ class _LocaleSelectionPageState extends State<LocaleSelectionPage> {
|
|||
title: Text(context.l10n.settingsLanguage),
|
||||
),
|
||||
body: SafeArea(
|
||||
child: ListView(
|
||||
children: _getLocaleOptions(context).entries.map((kv) {
|
||||
child: ValueListenableBuilder<String>(
|
||||
valueListenable: _queryNotifier,
|
||||
builder: (context, query, child) {
|
||||
final upQuery = query.toUpperCase().trim();
|
||||
return ListView(
|
||||
children: [
|
||||
QueryBar(
|
||||
queryNotifier: _queryNotifier,
|
||||
leadingPadding: const EdgeInsetsDirectional.only(start: 24, end: 8),
|
||||
),
|
||||
..._getLocaleOptions(context).entries.where((kv) {
|
||||
if (upQuery.isEmpty) return true;
|
||||
final title = kv.value;
|
||||
return title.toUpperCase().contains(upQuery);
|
||||
}).map((kv) {
|
||||
final value = kv.key;
|
||||
final title = kv.value;
|
||||
return ReselectableRadioListTile<Locale>(
|
||||
|
@ -97,7 +112,10 @@ class _LocaleSelectionPageState extends State<LocaleSelectionPage> {
|
|||
maxLines: 1,
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
}),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -18,10 +18,13 @@ Future<void> configureAndLaunch() async {
|
|||
..hasAcceptedTerms = true
|
||||
..isInstalledAppAccessAllowed = true
|
||||
..isErrorReportingAllowed = false
|
||||
..themeBrightness = AvesThemeBrightness.dark
|
||||
..themeColorMode = AvesThemeColorMode.polychrome
|
||||
..setTileExtent(CountryListPage.routeName, 112)
|
||||
..setTileLayout(CountryListPage.routeName, TileLayout.grid)
|
||||
// display
|
||||
..themeBrightness = AvesThemeBrightness.dark
|
||||
..themeColorMode = AvesThemeColorMode.polychrome
|
||||
..enableDynamicColor = false
|
||||
..enableBlurEffect = true
|
||||
// navigation
|
||||
..keepScreenOn = KeepScreenOn.always
|
||||
..homePage = HomePageSetting.collection
|
||||
|
@ -41,7 +44,6 @@ Future<void> configureAndLaunch() async {
|
|||
..showOverlayInfo = true
|
||||
..showOverlayShootingDetails = false
|
||||
..showOverlayThumbnailPreview = false
|
||||
..enableBlurEffect = true
|
||||
..viewerUseCutout = true
|
||||
// info
|
||||
..infoMapStyle = EntryMapStyle.stamenWatercolor
|
||||
|
|
|
@ -83,6 +83,11 @@ void setLanguage(String languageCode) {
|
|||
await driver.tapKeyAndWait('drawer-settings-button');
|
||||
await driver.tapKeyAndWait('section-language');
|
||||
await driver.tapKeyAndWait('tile-language');
|
||||
|
||||
final name = SupportedLocales.languagesByLanguageCode[languageCode] ?? languageCode;
|
||||
await driver.tap(find.byType('TextField'));
|
||||
await driver.enterText(name);
|
||||
|
||||
await driver.tapKeyAndWait(languageCode);
|
||||
_languageCode = languageCode;
|
||||
|
||||
|
|
|
@ -19,8 +19,15 @@ Future<void> configureAndLaunch() async {
|
|||
..isInstalledAppAccessAllowed = true
|
||||
..isErrorReportingAllowed = false
|
||||
..locale = const Locale('en')
|
||||
// display
|
||||
..themeBrightness = AvesThemeBrightness.dark
|
||||
..themeColorMode = AvesThemeColorMode.polychrome
|
||||
..enableDynamicColor = false
|
||||
..enableBlurEffect = true
|
||||
// navigation
|
||||
..keepScreenOn = KeepScreenOn.always
|
||||
..homePage = HomePageSetting.collection
|
||||
..showBottomNavigationBar = true
|
||||
// collection
|
||||
..collectionBrowsingQuickActions = SettingsDefaults.collectionBrowsingQuickActions
|
||||
// viewer
|
||||
|
@ -29,7 +36,6 @@ Future<void> configureAndLaunch() async {
|
|||
..showOverlayInfo = true
|
||||
..showOverlayShootingDetails = true
|
||||
..showOverlayThumbnailPreview = true
|
||||
..enableBlurEffect = true
|
||||
..imageBackground = EntryBackground.checkered
|
||||
// info
|
||||
..infoMapStyle = EntryMapStyle.googleNormal;
|
||||
|
|