#443 info: improved display for google device
in XMP
This commit is contained in:
parent
da751190c5
commit
386c1cf57d
5 changed files with 43 additions and 7 deletions
|
@ -28,13 +28,14 @@ class Namespaces {
|
||||||
static const gCamera = 'http://ns.google.com/photos/1.0/camera/';
|
static const gCamera = 'http://ns.google.com/photos/1.0/camera/';
|
||||||
static const gCreations = 'http://ns.google.com/photos/1.0/creations/';
|
static const gCreations = 'http://ns.google.com/photos/1.0/creations/';
|
||||||
static const gDepth = 'http://ns.google.com/photos/1.0/depthmap/';
|
static const gDepth = 'http://ns.google.com/photos/1.0/depthmap/';
|
||||||
static const gettyImagesGift = 'http://xmp.gettyimages.com/gift/1.0/';
|
static const gDevice = 'http://ns.google.com/photos/dd/1.0/device/';
|
||||||
static const gFocus = 'http://ns.google.com/photos/1.0/focus/';
|
static const gFocus = 'http://ns.google.com/photos/1.0/focus/';
|
||||||
static const gImage = 'http://ns.google.com/photos/1.0/image/';
|
static const gImage = 'http://ns.google.com/photos/1.0/image/';
|
||||||
static const gimp210 = 'http://www.gimp.org/ns/2.10/';
|
|
||||||
static const gimpXmp = 'http://www.gimp.org/xmp/';
|
|
||||||
static const gPano = 'http://ns.google.com/photos/1.0/panorama/';
|
static const gPano = 'http://ns.google.com/photos/1.0/panorama/';
|
||||||
static const gSpherical = 'http://ns.google.com/videos/1.0/spherical/';
|
static const gSpherical = 'http://ns.google.com/videos/1.0/spherical/';
|
||||||
|
static const gettyImagesGift = 'http://xmp.gettyimages.com/gift/1.0/';
|
||||||
|
static const gimp210 = 'http://www.gimp.org/ns/2.10/';
|
||||||
|
static const gimpXmp = 'http://www.gimp.org/xmp/';
|
||||||
static const illustrator = 'http://ns.adobe.com/illustrator/1.0/';
|
static const illustrator = 'http://ns.adobe.com/illustrator/1.0/';
|
||||||
static const iptc4xmpCore = 'http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/';
|
static const iptc4xmpCore = 'http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/';
|
||||||
static const iptc4xmpExt = 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/';
|
static const iptc4xmpExt = 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/';
|
||||||
|
@ -93,17 +94,18 @@ class Namespaces {
|
||||||
dwc: 'Darwin Core',
|
dwc: 'Darwin Core',
|
||||||
exif: 'Exif',
|
exif: 'Exif',
|
||||||
exifEx: 'Exif Ex',
|
exifEx: 'Exif Ex',
|
||||||
gettyImagesGift: 'Getty Images',
|
|
||||||
gAudio: 'Google Audio',
|
gAudio: 'Google Audio',
|
||||||
gCamera: 'Google Camera',
|
gCamera: 'Google Camera',
|
||||||
gCreations: 'Google Creations',
|
gCreations: 'Google Creations',
|
||||||
gDepth: 'Google Depth',
|
gDepth: 'Google Depth',
|
||||||
|
gDevice: 'Google Device',
|
||||||
gFocus: 'Google Focus',
|
gFocus: 'Google Focus',
|
||||||
gImage: 'Google Image',
|
gImage: 'Google Image',
|
||||||
gimp210: 'GIMP 2.10',
|
|
||||||
gimpXmp: 'GIMP',
|
|
||||||
gPano: 'Google Panorama',
|
gPano: 'Google Panorama',
|
||||||
gSpherical: 'Google Spherical',
|
gSpherical: 'Google Spherical',
|
||||||
|
gettyImagesGift: 'Getty Images',
|
||||||
|
gimp210: 'GIMP 2.10',
|
||||||
|
gimpXmp: 'GIMP',
|
||||||
illustrator: 'Illustrator',
|
illustrator: 'Illustrator',
|
||||||
iptc4xmpCore: 'IPTC Core',
|
iptc4xmpCore: 'IPTC Core',
|
||||||
iptc4xmpExt: 'IPTC Extension',
|
iptc4xmpExt: 'IPTC Extension',
|
||||||
|
|
|
@ -60,7 +60,6 @@ class _TvRailState extends State<TvRail> {
|
||||||
controller.focusedIndex = null;
|
controller.focusedIndex = null;
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
final nodes = _focusNode.children.toList();
|
final nodes = _focusNode.children.toList();
|
||||||
debugPrint('TLAD focusedIndex=$focusedIndex < nodes.length=${nodes.length}');
|
|
||||||
if (focusedIndex < nodes.length) {
|
if (focusedIndex < nodes.length) {
|
||||||
nodes[focusedIndex].requestFocus();
|
nodes[focusedIndex].requestFocus();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||||
import 'package:aves/widgets/dialogs/aves_dialog.dart';
|
import 'package:aves/widgets/dialogs/aves_dialog.dart';
|
||||||
import 'package:aves/widgets/map/map_page.dart';
|
import 'package:aves/widgets/map/map_page.dart';
|
||||||
import 'package:aves/widgets/viewer/action/single_entry_editor.dart';
|
import 'package:aves/widgets/viewer/action/single_entry_editor.dart';
|
||||||
|
import 'package:aves/widgets/viewer/debug/debug_page.dart';
|
||||||
import 'package:aves/widgets/viewer/embedded/notifications.dart';
|
import 'package:aves/widgets/viewer/embedded/notifications.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -118,6 +119,10 @@ class EntryInfoActionDelegate with FeedbackMixin, PermissionAwareMixin, EntryEdi
|
||||||
case EntryAction.viewMotionPhotoVideo:
|
case EntryAction.viewMotionPhotoVideo:
|
||||||
OpenEmbeddedDataNotification.motionPhotoVideo().dispatch(context);
|
OpenEmbeddedDataNotification.motionPhotoVideo().dispatch(context);
|
||||||
break;
|
break;
|
||||||
|
// debug
|
||||||
|
case EntryAction.debug:
|
||||||
|
_goToDebug(context, targetEntry);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -273,4 +278,14 @@ class EntryInfoActionDelegate with FeedbackMixin, PermissionAwareMixin, EntryEdi
|
||||||
);
|
);
|
||||||
mapCollection.dispose();
|
mapCollection.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _goToDebug(BuildContext context, AvesEntry targetEntry) {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
settings: const RouteSettings(name: ViewerDebugPage.routeName),
|
||||||
|
builder: (context) => ViewerDebugPage(entry: targetEntry),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,8 @@ class XmpNamespace extends Equatable {
|
||||||
return XmpGAudioNamespace(nsPrefix, rawProps);
|
return XmpGAudioNamespace(nsPrefix, rawProps);
|
||||||
case Namespaces.gDepth:
|
case Namespaces.gDepth:
|
||||||
return XmpGDepthNamespace(nsPrefix, rawProps);
|
return XmpGDepthNamespace(nsPrefix, rawProps);
|
||||||
|
case Namespaces.gDevice:
|
||||||
|
return XmpGDeviceNamespace(nsPrefix, rawProps);
|
||||||
case Namespaces.gImage:
|
case Namespaces.gImage:
|
||||||
return XmpGImageNamespace(nsPrefix, rawProps);
|
return XmpGImageNamespace(nsPrefix, rawProps);
|
||||||
case Namespaces.iptc4xmpCore:
|
case Namespaces.iptc4xmpCore:
|
||||||
|
|
|
@ -69,6 +69,24 @@ class XmpGDepthNamespace extends XmpGoogleNamespace {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class XmpGDeviceNamespace extends XmpNamespace {
|
||||||
|
XmpGDeviceNamespace(String nsPrefix, Map<String, String> rawProps) : super(Namespaces.gDevice, nsPrefix, rawProps);
|
||||||
|
|
||||||
|
@override
|
||||||
|
late final List<XmpCardData> cards = [
|
||||||
|
XmpCardData(
|
||||||
|
RegExp(nsPrefix + r'Cameras\[(\d+)\]/(.*)'),
|
||||||
|
cards: [
|
||||||
|
XmpCardData(RegExp(r'Camera:DepthMap/(.*)')),
|
||||||
|
XmpCardData(RegExp(r'Camera:Image/(.*)')),
|
||||||
|
XmpCardData(RegExp(r'Camera:ImagingModel/(.*)')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
XmpCardData(RegExp(nsPrefix + r'Container/Container:Directory\[(\d+)\]/(.*)')),
|
||||||
|
XmpCardData(RegExp(nsPrefix + r'Profiles\[(\d+)\]/(.*)')),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
class XmpGImageNamespace extends XmpGoogleNamespace {
|
class XmpGImageNamespace extends XmpGoogleNamespace {
|
||||||
const XmpGImageNamespace(String nsPrefix, Map<String, String> rawProps) : super(Namespaces.gImage, nsPrefix, rawProps);
|
const XmpGImageNamespace(String nsPrefix, Map<String, String> rawProps) : super(Namespaces.gImage, nsPrefix, rawProps);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue