#1507 search: add mime type filters

This commit is contained in:
Thibault Deckers 2025-04-13 19:31:16 +02:00
parent ad5a9c848d
commit 63130de577
56 changed files with 177 additions and 3 deletions

View file

@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
## <a id="unreleased"></a>[Unreleased]
### Added
- Search: format filters
## <a id="v1.12.9"></a>[v1.12.9] - 2025-04-06
### Added

View file

@ -815,6 +815,7 @@
"searchCollectionFieldHint": "Search collection",
"searchRecentSectionTitle": "Recent",
"searchDateSectionTitle": "Date",
"searchFormatSectionTitle": "Formats",
"searchAlbumsSectionTitle": "Albums",
"searchCountriesSectionTitle": "Countries",
"searchStatesSectionTitle": "States",

View file

@ -2973,6 +2973,12 @@ abstract class AppLocalizations {
/// **'Date'**
String get searchDateSectionTitle;
/// No description provided for @searchFormatSectionTitle.
///
/// In en, this message translates to:
/// **'Formats'**
String get searchFormatSectionTitle;
/// No description provided for @searchAlbumsSectionTitle.
///
/// In en, this message translates to:

View file

@ -1580,6 +1580,9 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'تاريخ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'الألبومات';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsAz extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1598,6 +1598,9 @@ class AppLocalizationsBe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Альбомы';

View file

@ -1632,6 +1632,9 @@ class AppLocalizationsBg extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Албуми';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsBn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1580,6 +1580,9 @@ class AppLocalizationsCa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Àlbums';

View file

@ -1617,6 +1617,9 @@ class AppLocalizationsCkb extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1593,6 +1593,9 @@ class AppLocalizationsCs extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Alba';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsDa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dato';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1625,6 +1625,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Alben';

View file

@ -1625,6 +1625,9 @@ class AppLocalizationsEl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Ημερομηνια';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Άλμπουμ';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1625,6 +1625,9 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Fecha';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Álbumes';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsEt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Kuupäevad';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumid';

View file

@ -1580,6 +1580,9 @@ class AppLocalizationsEu extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumak';

View file

@ -1577,6 +1577,9 @@ class AppLocalizationsFa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'تاریخ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'آلبوم ها';

View file

@ -1622,6 +1622,9 @@ class AppLocalizationsFi extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1625,6 +1625,9 @@ class AppLocalizationsGl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Álbums';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsHe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1619,6 +1619,9 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get searchDateSectionTitle => 'दिनांक';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'एल्बम';

View file

@ -1575,6 +1575,9 @@ class AppLocalizationsHu extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dátum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumok';

View file

@ -1609,6 +1609,9 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Tanggal';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1580,6 +1580,9 @@ class AppLocalizationsIs extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dagsetning';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albúm';

View file

@ -1625,6 +1625,9 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1609,6 +1609,9 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get searchDateSectionTitle => '日付';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'アルバム';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsKn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'ದಿನಾಂಕ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'ಆಲ್ಬಮ್ ಗಳು';

View file

@ -1607,6 +1607,9 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get searchDateSectionTitle => '날짜';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => '앨범';

View file

@ -1587,6 +1587,9 @@ class AppLocalizationsLt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datos';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumai';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsMl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1589,6 +1589,9 @@ class AppLocalizationsMy extends AppLocalizations {
@override
String get searchDateSectionTitle => 'ရက်စွဲ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'အယ်လ်ဘမ်များ';

View file

@ -1580,6 +1580,9 @@ class AppLocalizationsNb extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dato';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsNe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1627,6 +1627,9 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1569,6 +1569,9 @@ class AppLocalizationsNn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dato';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsOr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'ତାରିଖ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1590,6 +1590,9 @@ class AppLocalizationsPl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumy';

View file

@ -1625,6 +1625,9 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Álbuns';

View file

@ -1580,6 +1580,9 @@ class AppLocalizationsRo extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dată';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albume';

View file

@ -1642,6 +1642,9 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Альбомы';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsSat extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1585,6 +1585,9 @@ class AppLocalizationsSk extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dátum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumy';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsSl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsSr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1608,6 +1608,9 @@ class AppLocalizationsSv extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1628,6 +1628,9 @@ class AppLocalizationsTa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'திகதி';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'தொகுப்புகள்';

View file

@ -1616,6 +1616,9 @@ class AppLocalizationsTh extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1620,6 +1620,9 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Tarih';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albümler';

View file

@ -1599,6 +1599,9 @@ class AppLocalizationsUk extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Альбоми';

View file

@ -1575,6 +1575,9 @@ class AppLocalizationsVi extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Thời gian';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Bộ sưu tập';

View file

@ -1609,6 +1609,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get searchDateSectionTitle => '日期';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => '相册';

View file

@ -83,7 +83,7 @@ class QueryFilter extends CollectionFilter {
String get universalLabel => query;
@override
Widget? iconBuilder(BuildContext context, double size, {bool allowGenericIcon = true}) => Icon(AIcons.text, size: size);
Widget? iconBuilder(BuildContext context, double size, {bool allowGenericIcon = true}) => Icon(AIcons.text, fill: 1, size: size);
@override
Future<Color> color(BuildContext context) {

View file

@ -21,7 +21,6 @@ import 'package:aves/model/source/collection_source.dart';
import 'package:aves/model/source/location/country.dart';
import 'package:aves/model/source/location/place.dart';
import 'package:aves/model/source/tag.dart';
import 'package:aves/ref/mime_types.dart';
import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/action_mixins/feedback.dart';
import 'package:aves/widgets/common/action_mixins/vault_aware.dart';
@ -41,6 +40,7 @@ class CollectionSearchDelegate extends AvesSearchDelegate with FeedbackMixin, Va
final ValueNotifier<String?> _expandedSectionNotifier = ValueNotifier(null);
final FocusNode _suggestionsTopFocusNode = FocusNode();
final ScrollController _suggestionsScrollController = ScrollController();
late final List<MimeFilter> _mimeTypeFilters;
@override
FocusNode? get suggestionsFocusNode => _suggestionsTopFocusNode;
@ -62,7 +62,6 @@ class CollectionSearchDelegate extends AvesSearchDelegate with FeedbackMixin, Va
TypeFilter.geotiff,
TypeFilter.hdr,
TypeFilter.raw,
MimeFilter(MimeTypes.svg),
];
static final _monthFilters = List.generate(12, (i) => DateFilter(DateLevel.m, DateTime(1, i + 1)));
@ -78,6 +77,7 @@ class CollectionSearchDelegate extends AvesSearchDelegate with FeedbackMixin, Va
routeName: SearchPage.routeName,
) {
query = initialQuery ?? '';
_mimeTypeFilters = source.allEntries.map((entry) => entry.mimeType).toSet().map(MimeFilter.new).toList()..sort();
}
@override
@ -149,6 +149,7 @@ class CollectionSearchDelegate extends AvesSearchDelegate with FeedbackMixin, Va
filters: history,
),
_buildDateFilters(context, containQuery),
_buildMimeTypeFilters(context, containQuery),
_buildAlbumFilters(containQuery),
_buildCountryFilters(containQuery),
_buildStateFilters(containQuery),
@ -205,6 +206,15 @@ class CollectionSearchDelegate extends AvesSearchDelegate with FeedbackMixin, Va
);
}
Widget _buildMimeTypeFilters(BuildContext context, _ContainQuery containQuery) {
final filters = _mimeTypeFilters.where((f) => containQuery(f.universalLabel)).toList();
return _buildFilterRow(
context: context,
title: context.l10n.searchFormatSectionTitle,
filters: filters,
);
}
Widget _buildAlbumFilters(_ContainQuery containQuery) {
return AnimatedBuilder(
animation: dynamicAlbums,