#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
|
### Added
|
||||||
|
|
||||||
- edit location via GPX
|
- Metadata: edit location via GPX
|
||||||
|
- Metadata: toggle for all types in removal dialog
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
|
@ -518,6 +518,7 @@
|
||||||
"editEntryRatingDialogTitle": "Rating",
|
"editEntryRatingDialogTitle": "Rating",
|
||||||
|
|
||||||
"removeEntryMetadataDialogTitle": "Metadata Removal",
|
"removeEntryMetadataDialogTitle": "Metadata Removal",
|
||||||
|
"removeEntryMetadataDialogAll": "All",
|
||||||
"removeEntryMetadataDialogMore": "More",
|
"removeEntryMetadataDialogMore": "More",
|
||||||
|
|
||||||
"removeEntryMetadataMotionPhotoXmpWarningDialogMessage": "XMP is required to play the video inside a motion photo.\n\nAre you sure you want to remove it?",
|
"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> {
|
class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
||||||
late final List<MetadataType> _mainOptions, _moreOptions;
|
late final List<MetadataType> _allOptions, _mainOptions, _moreOptions;
|
||||||
final Set<MetadataType> _types = {};
|
final Set<MetadataType> _types = {};
|
||||||
bool _showMore = false;
|
bool _showMore = false;
|
||||||
final ValueNotifier<bool> _isValidNotifier = ValueNotifier(false);
|
final ValueNotifier<bool> _isValidNotifier = ValueNotifier(false);
|
||||||
|
@ -37,10 +37,11 @@ class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
final byMain = groupBy([
|
_allOptions = [
|
||||||
...MetadataTypes.common,
|
...MetadataTypes.common,
|
||||||
if (widget.showJpegTypes) ...MetadataTypes.jpeg,
|
if (widget.showJpegTypes) ...MetadataTypes.jpeg,
|
||||||
], MetadataTypes.main.contains);
|
];
|
||||||
|
final byMain = groupBy(_allOptions, MetadataTypes.main.contains);
|
||||||
_mainOptions = (byMain[true] ?? [])..sort(_compareTypeText);
|
_mainOptions = (byMain[true] ?? [])..sort(_compareTypeText);
|
||||||
_moreOptions = (byMain[false] ?? [])..sort(_compareTypeText);
|
_moreOptions = (byMain[false] ?? [])..sort(_compareTypeText);
|
||||||
_validate();
|
_validate();
|
||||||
|
@ -59,6 +60,17 @@ class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
||||||
return AvesDialog(
|
return AvesDialog(
|
||||||
title: l10n.removeEntryMetadataDialogTitle,
|
title: l10n.removeEntryMetadataDialogTitle,
|
||||||
scrollableContent: [
|
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),
|
..._mainOptions.map(_toTile),
|
||||||
if (_moreOptions.isNotEmpty)
|
if (_moreOptions.isNotEmpty)
|
||||||
Padding(
|
Padding(
|
||||||
|
@ -131,8 +143,7 @@ class _RemoveEntryMetadataDialogState extends State<RemoveEntryMetadataDialog> {
|
||||||
value: _types.contains(type),
|
value: _types.contains(type),
|
||||||
onChanged: (selected) {
|
onChanged: (selected) {
|
||||||
selected ? _types.add(type) : _types.remove(type);
|
selected ? _types.add(type) : _types.remove(type);
|
||||||
_validate();
|
setState(_validate);
|
||||||
setState(() {});
|
|
||||||
},
|
},
|
||||||
title: Align(
|
title: Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
|
|
Loading…
Reference in a new issue