#1075 metadata: toggle for all types in removal dialog
This commit is contained in:
parent
598b705b36
commit
e14a1a0bee
3 changed files with 19 additions and 6 deletions
|
@ -6,7 +6,8 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
### Added
|
||||
|
||||
- edit location via GPX
|
||||
- Metadata: edit location via GPX
|
||||
- Metadata: toggle for all types in removal dialog
|
||||
|
||||
### Changed
|
||||
|
||||
|
|
|
@ -518,6 +518,7 @@
|
|||
"editEntryRatingDialogTitle": "Rating",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Metadata Removal",
|
||||
"removeEntryMetadataDialogAll": "All",
|
||||
"removeEntryMetadataDialogMore": "More",
|
||||
|
||||
"removeEntryMetadataMotionPhotoXmpWarningDialogMessage": "XMP is required to play the video inside a motion photo.\n\nAre you sure you want to remove it?",
|
||||
|
|
|
@ -29,7 +29,7 @@ class RemoveEntryMetadataDialog extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
||||
late final List<MetadataType> _mainOptions, _moreOptions;
|
||||
late final List<MetadataType> _allOptions, _mainOptions, _moreOptions;
|
||||
final Set<MetadataType> _types = {};
|
||||
bool _showMore = false;
|
||||
final ValueNotifier<bool> _isValidNotifier = ValueNotifier(false);
|
||||
|
@ -37,10 +37,11 @@ class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
final byMain = groupBy([
|
||||
_allOptions = [
|
||||
...MetadataTypes.common,
|
||||
if (widget.showJpegTypes) ...MetadataTypes.jpeg,
|
||||
], MetadataTypes.main.contains);
|
||||
];
|
||||
final byMain = groupBy(_allOptions, MetadataTypes.main.contains);
|
||||
_mainOptions = (byMain[true] ?? [])..sort(_compareTypeText);
|
||||
_moreOptions = (byMain[false] ?? [])..sort(_compareTypeText);
|
||||
_validate();
|
||||
|
@ -59,6 +60,17 @@ class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
|||
return AvesDialog(
|
||||
title: l10n.removeEntryMetadataDialogTitle,
|
||||
scrollableContent: [
|
||||
SwitchListTile(
|
||||
value: _types.length == _allOptions.length,
|
||||
onChanged: (selected) {
|
||||
selected ? _types.addAll(_allOptions) : _types.clear();
|
||||
setState(_validate);
|
||||
},
|
||||
title: Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(l10n.removeEntryMetadataDialogAll),
|
||||
),
|
||||
),
|
||||
..._mainOptions.map(_toTile),
|
||||
if (_moreOptions.isNotEmpty)
|
||||
Padding(
|
||||
|
@ -131,8 +143,7 @@ class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
|||
value: _types.contains(type),
|
||||
onChanged: (selected) {
|
||||
selected ? _types.add(type) : _types.remove(type);
|
||||
_validate();
|
||||
setState(() {});
|
||||
setState(_validate);
|
||||
},
|
||||
title: Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
|
|
Loading…
Reference in a new issue