#414 search: missing address filter

This commit is contained in:
Thibault Deckers 2022-11-29 15:48:44 +01:00
parent e30efc7ddf
commit 638ddd0a21
5 changed files with 56 additions and 0 deletions

View file

@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
### Added ### Added
- Viewer: long press on rating quick action for quicker rating - Viewer: long press on rating quick action for quicker rating
- Search: missing address filter
- Lithuanian translation (thanks Gediminas Murauskas) - Lithuanian translation (thanks Gediminas Murauskas)
### Changed ### Changed

View file

@ -127,6 +127,7 @@
"filterBinLabel": "Recycle bin", "filterBinLabel": "Recycle bin",
"filterFavouriteLabel": "Favorite", "filterFavouriteLabel": "Favorite",
"filterNoDateLabel": "Undated", "filterNoDateLabel": "Undated",
"filterNoAddressLabel": "No address",
"filterNoLocationLabel": "Unlocated", "filterNoLocationLabel": "Unlocated",
"filterNoRatingLabel": "Unrated", "filterNoRatingLabel": "Unrated",
"filterNoTagLabel": "Untagged", "filterNoTagLabel": "Untagged",

View file

@ -7,6 +7,7 @@ class MissingFilter extends CollectionFilter {
static const type = 'missing'; static const type = 'missing';
static const _date = 'date'; static const _date = 'date';
static const _fineAddress = 'fine_address';
static const _title = 'title'; static const _title = 'title';
final String metadataType; final String metadataType;
@ -14,6 +15,7 @@ class MissingFilter extends CollectionFilter {
late final EntryFilter _test; late final EntryFilter _test;
static final date = MissingFilter._private(_date); static final date = MissingFilter._private(_date);
static final fineAddress = MissingFilter._private(_fineAddress);
static final title = MissingFilter._private(_title); static final title = MissingFilter._private(_title);
@override @override
@ -25,6 +27,10 @@ class MissingFilter extends CollectionFilter {
_test = (entry) => (entry.catalogMetadata?.dateMillis ?? 0) == 0; _test = (entry) => (entry.catalogMetadata?.dateMillis ?? 0) == 0;
_icon = AIcons.dateUndated; _icon = AIcons.dateUndated;
break; break;
case _fineAddress:
_test = (entry) => entry.hasGps && !entry.hasFineAddress;
_icon = AIcons.locationUnlocated;
break;
case _title: case _title:
_test = (entry) => (entry.catalogMetadata?.xmpTitle ?? '').isEmpty; _test = (entry) => (entry.catalogMetadata?.xmpTitle ?? '').isEmpty;
_icon = AIcons.descriptionUntitled; _icon = AIcons.descriptionUntitled;
@ -60,6 +66,8 @@ class MissingFilter extends CollectionFilter {
switch (metadataType) { switch (metadataType) {
case _date: case _date:
return context.l10n.filterNoDateLabel; return context.l10n.filterNoDateLabel;
case _fineAddress:
return context.l10n.filterNoAddressLabel;
case _title: case _title:
return context.l10n.filterNoTitleLabel; return context.l10n.filterNoTitleLabel;
default: default:

View file

@ -227,6 +227,7 @@ class CollectionSearchDelegate extends AvesSearchDelegate {
filters: [ filters: [
MissingFilter.date, MissingFilter.date,
LocationFilter(LocationLevel.place, ''), LocationFilter(LocationLevel.place, ''),
MissingFilter.fineAddress,
TagFilter(''), TagFilter(''),
RatingFilter(0), RatingFilter(0),
MissingFilter.title, MissingFilter.title,

View file

@ -89,6 +89,7 @@
"filterBinLabel", "filterBinLabel",
"filterFavouriteLabel", "filterFavouriteLabel",
"filterNoDateLabel", "filterNoDateLabel",
"filterNoAddressLabel",
"filterNoLocationLabel", "filterNoLocationLabel",
"filterNoRatingLabel", "filterNoRatingLabel",
"filterNoTagLabel", "filterNoTagLabel",
@ -590,6 +591,7 @@
], ],
"de": [ "de": [
"filterNoAddressLabel",
"subtitlePositionTop", "subtitlePositionTop",
"subtitlePositionBottom", "subtitlePositionBottom",
"widgetDisplayedItemRandom", "widgetDisplayedItemRandom",
@ -599,6 +601,14 @@
"settingsWidgetDisplayedItem" "settingsWidgetDisplayedItem"
], ],
"el": [
"filterNoAddressLabel"
],
"es": [
"filterNoAddressLabel"
],
"fa": [ "fa": [
"appName", "appName",
"welcomeMessage", "welcomeMessage",
@ -689,6 +699,7 @@
"filterBinLabel", "filterBinLabel",
"filterFavouriteLabel", "filterFavouriteLabel",
"filterNoDateLabel", "filterNoDateLabel",
"filterNoAddressLabel",
"filterNoLocationLabel", "filterNoLocationLabel",
"filterNoRatingLabel", "filterNoRatingLabel",
"filterNoTagLabel", "filterNoTagLabel",
@ -1189,8 +1200,13 @@
"filePickerUseThisFolder" "filePickerUseThisFolder"
], ],
"fr": [
"filterNoAddressLabel"
],
"gl": [ "gl": [
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"accessibilityAnimationsRemove", "accessibilityAnimationsRemove",
"accessibilityAnimationsKeep", "accessibilityAnimationsKeep",
"displayRefreshRatePreferHighest", "displayRefreshRatePreferHighest",
@ -1648,6 +1664,7 @@
"id": [ "id": [
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"subtitlePositionTop", "subtitlePositionTop",
"subtitlePositionBottom", "subtitlePositionBottom",
"widgetDisplayedItemRandom", "widgetDisplayedItemRandom",
@ -1657,9 +1674,14 @@
"settingsWidgetDisplayedItem" "settingsWidgetDisplayedItem"
], ],
"it": [
"filterNoAddressLabel"
],
"ja": [ "ja": [
"chipActionFilterIn", "chipActionFilterIn",
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"subtitlePositionTop", "subtitlePositionTop",
"subtitlePositionBottom", "subtitlePositionBottom",
"widgetDisplayedItemRandom", "widgetDisplayedItemRandom",
@ -1669,11 +1691,20 @@
"settingsWidgetDisplayedItem" "settingsWidgetDisplayedItem"
], ],
"ko": [
"filterNoAddressLabel"
],
"lt": [
"filterNoAddressLabel"
],
"nb": [ "nb": [
"videoActionCaptureFrame", "videoActionCaptureFrame",
"videoActionSelectStreams", "videoActionSelectStreams",
"entryInfoActionEditLocation", "entryInfoActionEditLocation",
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"coordinateFormatDms", "coordinateFormatDms",
"mapStyleHuaweiNormal", "mapStyleHuaweiNormal",
"mapStyleHuaweiTerrain", "mapStyleHuaweiTerrain",
@ -1792,6 +1823,7 @@
"nl": [ "nl": [
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"subtitlePositionTop", "subtitlePositionTop",
"subtitlePositionBottom", "subtitlePositionBottom",
"widgetDisplayedItemRandom", "widgetDisplayedItemRandom",
@ -1808,6 +1840,7 @@
"timeDays", "timeDays",
"focalLength", "focalLength",
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"filterTypeRawLabel", "filterTypeRawLabel",
"filterTypeSphericalVideoLabel", "filterTypeSphericalVideoLabel",
"filterTypeGeotiffLabel", "filterTypeGeotiffLabel",
@ -2300,6 +2333,7 @@
"pt": [ "pt": [
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"subtitlePositionTop", "subtitlePositionTop",
"subtitlePositionBottom", "subtitlePositionBottom",
"widgetDisplayedItemRandom", "widgetDisplayedItemRandom",
@ -2309,6 +2343,14 @@
"settingsWidgetDisplayedItem" "settingsWidgetDisplayedItem"
], ],
"ro": [
"filterNoAddressLabel"
],
"ru": [
"filterNoAddressLabel"
],
"th": [ "th": [
"itemCount", "itemCount",
"timeSeconds", "timeSeconds",
@ -2318,6 +2360,7 @@
"applyButtonLabel", "applyButtonLabel",
"entryActionShowGeoTiffOnMap", "entryActionShowGeoTiffOnMap",
"videoActionCaptureFrame", "videoActionCaptureFrame",
"filterNoAddressLabel",
"coordinateDms", "coordinateDms",
"keepScreenOnViewerOnly", "keepScreenOnViewerOnly",
"accessibilityAnimationsRemove", "accessibilityAnimationsRemove",
@ -2681,6 +2724,7 @@
"tr": [ "tr": [
"entryInfoActionExportMetadata", "entryInfoActionExportMetadata",
"filterNoAddressLabel",
"subtitlePositionTop", "subtitlePositionTop",
"subtitlePositionBottom", "subtitlePositionBottom",
"widgetDisplayedItemRandom", "widgetDisplayedItemRandom",
@ -2691,6 +2735,7 @@
], ],
"zh": [ "zh": [
"filterNoAddressLabel",
"aboutLicensesFlutterPackagesSectionTitle", "aboutLicensesFlutterPackagesSectionTitle",
"aboutLicensesDartPackagesSectionTitle" "aboutLicensesDartPackagesSectionTitle"
] ]