diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 3dd1d5446..21d0beac4 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -523,7 +523,7 @@ "settingsSectionThumbnails": "Thumbnails", "settingsThumbnailShowLocationIcon": "Show location icon", "settingsThumbnailShowMotionPhotoIcon": "Show motion photo icon", - "settingsThumbnailShowRatingIcon": "Show rating icon", + "settingsThumbnailShowRating": "Show rating", "settingsThumbnailShowRawIcon": "Show raw icon", "settingsThumbnailShowVideoDuration": "Show video duration", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 9825b9225..a704e788c 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -375,6 +375,7 @@ "settingsSectionThumbnails": "Vignettes", "settingsThumbnailShowLocationIcon": "Afficher l’icône de lieu", "settingsThumbnailShowMotionPhotoIcon": "Afficher l’icône de photo animée", + "settingsThumbnailShowRating": "Afficher la notation", "settingsThumbnailShowRawIcon": "Afficher l’icône de photo raw", "settingsThumbnailShowVideoDuration": "Afficher la durée de la vidéo", diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index 84b4c2c3d..89c5a9017 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -72,7 +72,7 @@ "videoActionSetSpeed": "재생 배속", "videoActionSettings": "설정", - "entryInfoActionEditDate": "날짜와 시간 수정", + "entryInfoActionEditDate": "날짜 및 시간 수정", "entryInfoActionEditTags": "태그 수정", "entryInfoActionRemoveMetadata": "메타데이터 삭제", @@ -375,6 +375,7 @@ "settingsSectionThumbnails": "섬네일", "settingsThumbnailShowLocationIcon": "위치 아이콘 표시", "settingsThumbnailShowMotionPhotoIcon": "모션 포토 아이콘 표시", + "settingsThumbnailShowRating": "별점 표시", "settingsThumbnailShowRawIcon": "Raw 아이콘 표시", "settingsThumbnailShowVideoDuration": "동영상 길이 표시", diff --git a/lib/model/video/metadata.dart b/lib/model/video/metadata.dart index be38b825d..924d45918 100644 --- a/lib/model/video/metadata.dart +++ b/lib/model/video/metadata.dart @@ -22,7 +22,7 @@ import 'package:flutter/foundation.dart'; class VideoMetadataFormatter { static final _epoch = DateTime.fromMillisecondsSinceEpoch(0, isUtc: true); - static final _anotherDatePattern = RegExp(r'(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})'); + static final _anotherDatePattern = RegExp(r'(\d{4})[-/](\d{2})[-/](\d{2}) (\d{2}):(\d{2}):(\d{2})'); static final _durationPattern = RegExp(r'(\d+):(\d+):(\d+)(.\d+)'); static final _locationPattern = RegExp(r'([+-][.0-9]+)'); static final Map _codecNames = { @@ -112,9 +112,10 @@ class VideoMetadataFormatter { return date.millisecondsSinceEpoch; } - // `DateTime` does not recognize: + // `DateTime` does not recognize these values found in the wild: // - `UTC 2021-05-30 19:14:21` - // - `2021` + // - `2021/10/31 21:23:17` + // - `2021` (not enough to build a date) final match = _anotherDatePattern.firstMatch(dateString); if (match != null) { diff --git a/lib/theme/icons.dart b/lib/theme/icons.dart index 19830fd48..c31abc19a 100644 --- a/lib/theme/icons.dart +++ b/lib/theme/icons.dart @@ -22,7 +22,7 @@ class AIcons { static const IconData locationOff = Icons.location_off_outlined; static const IconData mainStorage = Icons.smartphone_outlined; static const IconData privacy = MdiIcons.shieldAccountOutline; - static const IconData ratingRejected = MdiIcons.starRemoveOutline; + static const IconData ratingRejected = MdiIcons.starMinusOutline; static const IconData ratingUnrated = MdiIcons.starOffOutline; static const IconData raw = Icons.raw_on_outlined; static const IconData shooting = Icons.camera_outlined; diff --git a/lib/theme/themes.dart b/lib/theme/themes.dart index 5eca4f2f9..5dd13fc3b 100644 --- a/lib/theme/themes.dart +++ b/lib/theme/themes.dart @@ -34,9 +34,11 @@ class Themes { fontFeatures: [FontFeature.enable('smcp')], ), ), - colorScheme: const ColorScheme.dark( + colorScheme: ColorScheme.dark( primary: _accentColor, secondary: _accentColor, + // surface color is used as background for the date picker header + surface: Colors.grey.shade800, onPrimary: Colors.white, onSecondary: Colors.white, ), diff --git a/lib/widgets/search/search_delegate.dart b/lib/widgets/search/search_delegate.dart index 48dc7c1b6..07247ac09 100644 --- a/lib/widgets/search/search_delegate.dart +++ b/lib/widgets/search/search_delegate.dart @@ -183,7 +183,7 @@ class CollectionSearchDelegate { _buildFilterRow( context: context, title: context.l10n.searchSectionRating, - filters: [0, -1, 5, 4, 3, 2, 1].map((rating) => RatingFilter(rating)).toList(), + filters: [0, 5, 4, 3, 2, 1, -1].map((rating) => RatingFilter(rating)).toList(), ), ], ); diff --git a/lib/widgets/settings/thumbnails/thumbnails.dart b/lib/widgets/settings/thumbnails/thumbnails.dart index c10c87717..ed8c8fb1a 100644 --- a/lib/widgets/settings/thumbnails/thumbnails.dart +++ b/lib/widgets/settings/thumbnails/thumbnails.dart @@ -83,7 +83,7 @@ class ThumbnailsSection extends StatelessWidget { onChanged: (v) => settings.showThumbnailRating = v, title: Row( children: [ - Expanded(child: Text(context.l10n.settingsThumbnailShowRatingIcon)), + Expanded(child: Text(context.l10n.settingsThumbnailShowRating)), AnimatedOpacity( opacity: opacityFor(current), duration: Durations.toggleableTransitionAnimation, diff --git a/lib/widgets/viewer/info/info_search.dart b/lib/widgets/viewer/info/info_search.dart index 30c8b6e3e..8f0bd4c2b 100644 --- a/lib/widgets/viewer/info/info_search.dart +++ b/lib/widgets/viewer/info/info_search.dart @@ -54,7 +54,7 @@ class InfoSearchDelegate extends SearchDelegate { Widget buildSuggestions(BuildContext context) { final l10n = context.l10n; final suggestions = { - l10n.viewerInfoSearchSuggestionDate: 'date or time or when -timer -uptime -exposure -timeline', + l10n.viewerInfoSearchSuggestionDate: 'date or time or when -timer -uptime -exposure -timeline -verbatim', l10n.viewerInfoSearchSuggestionDescription: 'abstract or description or comment or textual or title', l10n.viewerInfoSearchSuggestionDimensions: 'width or height or dimension or framesize or imagelength', l10n.viewerInfoSearchSuggestionResolution: 'resolution', diff --git a/test/model/video/metadata_test.dart b/test/model/video/metadata_test.dart index ac60cb941..469e0c574 100644 --- a/test/model/video/metadata_test.dart +++ b/test/model/video/metadata_test.dart @@ -7,5 +7,6 @@ void main() { expect(VideoMetadataFormatter.parseVideoDate('2011-05-08T03:46+09:00'), DateTime(2011, 5, 7, 18, 46).add(localOffset).millisecondsSinceEpoch); expect(VideoMetadataFormatter.parseVideoDate('UTC 2021-05-30 19:14:21'), DateTime(2021, 5, 30, 19, 14, 21).millisecondsSinceEpoch); + expect(VideoMetadataFormatter.parseVideoDate('2021/10/31 21:23:17'), DateTime(2021, 10, 31, 21, 23, 17).millisecondsSinceEpoch); }); } diff --git a/untranslated.json b/untranslated.json index 20b2b2e7b..f1c5f26d0 100644 --- a/untranslated.json +++ b/untranslated.json @@ -9,15 +9,7 @@ "editEntryDateDialogTargetFieldsHeader", "collectionSortRating", "searchSectionRating", - "settingsThumbnailShowRatingIcon" - ], - - "fr": [ - "settingsThumbnailShowRatingIcon" - ], - - "ko": [ - "settingsThumbnailShowRatingIcon" + "settingsThumbnailShowRating" ], "ru": [ @@ -30,6 +22,6 @@ "editEntryDateDialogTargetFieldsHeader", "collectionSortRating", "searchSectionRating", - "settingsThumbnailShowRatingIcon" + "settingsThumbnailShowRating" ] }