info: show media content symbols
This commit is contained in:
parent
1a3a5a5721
commit
de6cecace6
2 changed files with 36 additions and 5 deletions
|
@ -11,6 +11,7 @@ class AIcons {
|
||||||
static const IconData allCollection = Icons.collections_outlined;
|
static const IconData allCollection = Icons.collections_outlined;
|
||||||
static const IconData image = Icons.photo_outlined;
|
static const IconData image = Icons.photo_outlined;
|
||||||
static const IconData video = Icons.movie_outlined;
|
static const IconData video = Icons.movie_outlined;
|
||||||
|
static const IconData audio = Icons.audiotrack_outlined;
|
||||||
static const IconData vector = Icons.code_outlined;
|
static const IconData vector = Icons.code_outlined;
|
||||||
|
|
||||||
static const IconData android = Icons.android;
|
static const IconData android = Icons.android;
|
||||||
|
|
|
@ -33,10 +33,10 @@ class _MetadataSectionSliverState extends State<MetadataSectionSliver> with Auto
|
||||||
|
|
||||||
bool get isVisible => widget.visibleNotifier.value;
|
bool get isVisible => widget.visibleNotifier.value;
|
||||||
|
|
||||||
// directory names from metadata-extractor
|
// special directory names
|
||||||
static const exifThumbnailDirectory = 'Exif Thumbnail'; // from metadata-extractor
|
static const exifThumbnailDirectory = 'Exif Thumbnail'; // from metadata-extractor
|
||||||
static const xmpDirectory = 'XMP'; // from metadata-extractor
|
static const xmpDirectory = 'XMP'; // from metadata-extractor
|
||||||
static const videoDirectory = 'Video'; // additional generic video directory
|
static const mediaDirectory = 'Media'; // additional media (video/audio/images) directory
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -87,13 +87,43 @@ class _MetadataSectionSliverState extends State<MetadataSectionSliver> with Auto
|
||||||
return InfoRowGroup(dir.tags, maxValueLength: Constants.infoGroupMaxValueLength);
|
return InfoRowGroup(dir.tags, maxValueLength: Constants.infoGroupMaxValueLength);
|
||||||
}
|
}
|
||||||
final dir = directoriesWithTitle[index - 1 - untitledDirectoryCount];
|
final dir = directoriesWithTitle[index - 1 - untitledDirectoryCount];
|
||||||
|
Widget thumbnail;
|
||||||
|
final prefixChildren = <Widget>[];
|
||||||
|
switch (dir.name) {
|
||||||
|
case exifThumbnailDirectory:
|
||||||
|
thumbnail = MetadataThumbnails(source: MetadataThumbnailSource.exif, entry: entry);
|
||||||
|
break;
|
||||||
|
case xmpDirectory:
|
||||||
|
thumbnail = MetadataThumbnails(source: MetadataThumbnailSource.xmp, entry: entry);
|
||||||
|
break;
|
||||||
|
case mediaDirectory:
|
||||||
|
thumbnail = MetadataThumbnails(source: MetadataThumbnailSource.embedded, entry: entry);
|
||||||
|
Widget builder(IconData data) => Padding(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 4, horizontal: 8),
|
||||||
|
child: Icon(data),
|
||||||
|
);
|
||||||
|
if (dir.tags['Has Video'] == 'yes') prefixChildren.add(builder(AIcons.video));
|
||||||
|
if (dir.tags['Has Audio'] == 'yes') prefixChildren.add(builder(AIcons.audio));
|
||||||
|
if (dir.tags['Has Image'] == 'yes') {
|
||||||
|
int count;
|
||||||
|
if (dir.tags.containsKey('Image Count')) {
|
||||||
|
count = int.tryParse(dir.tags['Image Count']);
|
||||||
|
}
|
||||||
|
prefixChildren.addAll(List.generate(count ?? 1, (i) => builder(AIcons.image)));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return AvesExpansionTile(
|
return AvesExpansionTile(
|
||||||
title: dir.name,
|
title: dir.name,
|
||||||
expandedNotifier: _expandedDirectoryNotifier,
|
expandedNotifier: _expandedDirectoryNotifier,
|
||||||
children: [
|
children: [
|
||||||
if (dir.name == exifThumbnailDirectory) MetadataThumbnails(source: MetadataThumbnailSource.exif, entry: entry),
|
if (prefixChildren.isNotEmpty)
|
||||||
if (dir.name == xmpDirectory) MetadataThumbnails(source: MetadataThumbnailSource.xmp, entry: entry),
|
Align(
|
||||||
if (dir.name == videoDirectory) MetadataThumbnails(source: MetadataThumbnailSource.embedded, entry: entry),
|
alignment: AlignmentDirectional.topStart,
|
||||||
|
child: Wrap(children: prefixChildren),
|
||||||
|
),
|
||||||
|
if (thumbnail != null) thumbnail,
|
||||||
Container(
|
Container(
|
||||||
alignment: Alignment.topLeft,
|
alignment: Alignment.topLeft,
|
||||||
padding: EdgeInsets.only(left: 8, right: 8, bottom: 8),
|
padding: EdgeInsets.only(left: 8, right: 8, bottom: 8),
|
||||||
|
|
Loading…
Reference in a new issue