debug: added entry details

This commit is contained in:
Thibault Deckers 2020-08-25 14:54:12 +09:00
parent 7cea3e0c27
commit 789f195306

View file

@ -7,6 +7,7 @@ import 'package:aves/model/metadata_db.dart';
import 'package:aves/services/metadata_service.dart'; import 'package:aves/services/metadata_service.dart';
import 'package:aves/widgets/fullscreen/info/info_page.dart'; import 'package:aves/widgets/fullscreen/info/info_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:tuple/tuple.dart';
class FullscreenDebugPage extends StatefulWidget { class FullscreenDebugPage extends StatefulWidget {
final ImageEntry entry; final ImageEntry entry;
@ -23,7 +24,9 @@ class _FullscreenDebugPageState extends State<FullscreenDebugPage> {
Future<AddressDetails> _dbAddressLoader; Future<AddressDetails> _dbAddressLoader;
Future<Map> _contentResolverMetadataLoader; Future<Map> _contentResolverMetadataLoader;
int get contentId => widget.entry.contentId; ImageEntry get entry => widget.entry;
int get contentId => entry.contentId;
@override @override
void initState() { void initState() {
@ -33,32 +36,94 @@ class _FullscreenDebugPageState extends State<FullscreenDebugPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final tabs = <Tuple2<Tab, Widget>>[
Tuple2(Tab(text: 'Entry'), _buildEntryTabView()),
Tuple2(Tab(text: 'DB'), _buildDbTabView()),
Tuple2(Tab(text: 'Content Resolver'), _buildContentResolverTabView()),
];
return DefaultTabController( return DefaultTabController(
length: 2, length: tabs.length,
child: Scaffold( child: Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Debug'), title: Text('Debug'),
bottom: TabBar( bottom: TabBar(
tabs: [ tabs: tabs.map((t) => t.item1).toList(),
Tab(text: 'DB'),
Tab(text: 'Content Resolver'),
],
), ),
), ),
body: SafeArea( body: SafeArea(
child: TabBarView( child: TabBarView(
children: [ children: tabs.map((t) => t.item2).toList(),
_buildDbTabView(),
_buildContentResolverTabView(),
],
), ),
), ),
), ),
); );
} }
Widget _buildEntryTabView() {
return ListView(
padding: EdgeInsets.all(16),
children: [
InfoRowGroup({
'uri': '${entry.uri}',
'contentId': '${entry.contentId}',
'path': '${entry.path}',
'directory': '${entry.directory}',
'filenameWithoutExtension': '${entry.filenameWithoutExtension}',
'sourceTitle': '${entry.sourceTitle}',
'sourceMimeType': '${entry.sourceMimeType}',
'mimeType': '${entry.mimeType}',
'mimeTypeAnySubtype': '${entry.mimeTypeAnySubtype}',
}),
Divider(),
InfoRowGroup({
'dateModifiedSecs': '${entry.dateModifiedSecs} (${DateTime.fromMillisecondsSinceEpoch(entry.dateModifiedSecs * 1000)})',
'sourceDateTakenMillis': '${entry.sourceDateTakenMillis} (${DateTime.fromMillisecondsSinceEpoch(entry.sourceDateTakenMillis)})',
'bestDate': '${entry.bestDate}',
'monthTaken': '${entry.monthTaken}',
'dayTaken': '${entry.dayTaken}',
}),
Divider(),
InfoRowGroup({
'width': '${entry.width}',
'height': '${entry.height}',
'orientationDegrees': '${entry.orientationDegrees}',
'rotated': '${entry.rotated}',
'displayAspectRatio': '${entry.displayAspectRatio}',
'displaySize': '${entry.displaySize}',
'megaPixels': '${entry.megaPixels}',
}),
Divider(),
InfoRowGroup({
'durationMillis': '${entry.durationMillis}',
'durationText': '${entry.durationText}',
}),
Divider(),
InfoRowGroup({
'sizeBytes': '${entry.sizeBytes}',
'isFavourite': '${entry.isFavourite}',
'isSvg': '${entry.isSvg}',
'isPhoto': '${entry.isPhoto}',
'isVideo': '${entry.isVideo}',
'isCatalogued': '${entry.isCatalogued}',
'isAnimated': '${entry.isAnimated}',
'canEdit': '${entry.canEdit}',
'canPrint': '${entry.canPrint}',
'canRotate': '${entry.canRotate}',
'xmpSubjects': '${entry.xmpSubjects}',
}),
Divider(),
InfoRowGroup({
'hasGps': '${entry.hasGps}',
'isLocated': '${entry.isLocated}',
'latLng': '${entry.latLng}',
'geoUri': '${entry.geoUri}',
}),
],
);
}
Widget _buildDbTabView() { Widget _buildDbTabView() {
final catalog = widget.entry.catalogMetadata; final catalog = entry.catalogMetadata;
return ListView( return ListView(
padding: EdgeInsets.all(16), padding: EdgeInsets.all(16),
children: [ children: [
@ -185,7 +250,7 @@ class _FullscreenDebugPageState extends State<FullscreenDebugPage> {
_dbDateLoader = metadataDb.loadDates().then((values) => values.firstWhere((row) => row.contentId == contentId, orElse: () => null)); _dbDateLoader = metadataDb.loadDates().then((values) => values.firstWhere((row) => row.contentId == contentId, orElse: () => null));
_dbMetadataLoader = metadataDb.loadMetadataEntries().then((values) => values.firstWhere((row) => row.contentId == contentId, orElse: () => null)); _dbMetadataLoader = metadataDb.loadMetadataEntries().then((values) => values.firstWhere((row) => row.contentId == contentId, orElse: () => null));
_dbAddressLoader = metadataDb.loadAddresses().then((values) => values.firstWhere((row) => row.contentId == contentId, orElse: () => null)); _dbAddressLoader = metadataDb.loadAddresses().then((values) => values.firstWhere((row) => row.contentId == contentId, orElse: () => null));
_contentResolverMetadataLoader = MetadataService.getContentResolverMetadata(widget.entry); _contentResolverMetadataLoader = MetadataService.getContentResolverMetadata(entry);
setState(() {}); setState(() {});
} }
} }