collection: refresh when hiding filter

This commit is contained in:
Thibault Deckers 2021-02-24 14:14:20 +09:00
parent f51d9ef14f
commit 79e2c857b9
2 changed files with 10 additions and 0 deletions

View file

@ -45,6 +45,7 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin {
_subscriptions.add(source.eventBus.on<EntryAddedEvent>().listen((e) => onEntryAdded(e.entries))); _subscriptions.add(source.eventBus.on<EntryAddedEvent>().listen((e) => onEntryAdded(e.entries)));
_subscriptions.add(source.eventBus.on<EntryRemovedEvent>().listen((e) => onEntryRemoved(e.entries))); _subscriptions.add(source.eventBus.on<EntryRemovedEvent>().listen((e) => onEntryRemoved(e.entries)));
_subscriptions.add(source.eventBus.on<EntryMovedEvent>().listen((e) => _refresh())); _subscriptions.add(source.eventBus.on<EntryMovedEvent>().listen((e) => _refresh()));
_subscriptions.add(source.eventBus.on<FilterVisibilityChangedEvent>().listen((e) => _refresh()));
_subscriptions.add(source.eventBus.on<CatalogMetadataChangedEvent>().listen((e) => _refresh())); _subscriptions.add(source.eventBus.on<CatalogMetadataChangedEvent>().listen((e) => _refresh()));
_subscriptions.add(source.eventBus.on<AddressMetadataChangedEvent>().listen((e) { _subscriptions.add(source.eventBus.on<AddressMetadataChangedEvent>().listen((e) {
if (this.filters.any((filter) => filter is LocationFilter)) { if (this.filters.any((filter) => filter is LocationFilter)) {

View file

@ -248,6 +248,8 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
updateLocations(); updateLocations();
updateTags(); updateTags();
eventBus.fire(FilterVisibilityChangedEvent(filter, visible));
if (visible) { if (visible) {
refreshMetadata(visibleEntries.where(filter.test).toSet()); refreshMetadata(visibleEntries.where(filter.test).toSet());
} }
@ -274,6 +276,13 @@ class EntryMovedEvent {
const EntryMovedEvent(this.entries); const EntryMovedEvent(this.entries);
} }
class FilterVisibilityChangedEvent {
final CollectionFilter filter;
final bool visible;
const FilterVisibilityChangedEvent(this.filter, this.visible);
}
class ProgressEvent { class ProgressEvent {
final int done, total; final int done, total;