+ function resetCamera(deviceId, mode) {
+ if (!cam.reset(deviceId, mode)) {
+ showError(qsTr("Failed to set camera device and mode. Please restart the application."));
+ }
+ }
+
+ PositionSource {
+ // NOTE: The source will not reset the position when we lose the signal.
+ // This shouldn't be a big problem as we are course enough.
+ // If we ever need street level updates then this will be an issue.
+ id: positionSource
+ active: settings.useGps
+ // TODO: we cannot bind to cam.running because camera will stop
+ // when the connection dialog pops up and we end up with an infinite loop
+ // active: cam.running && settings.useGps
+ onPositionChanged: geocode.search(position.coordinate.longitude, position.coordinate.latitude);
+ }
+
+ MetaData {
+ id: metaData
+ camera: cam
+ manufacturer: deviceInfo.manufacturer
+ model: deviceInfo.model
+ country: geocode.country
+ city: geocode.city
+ suburb: geocode.suburb
+ longitude: positionSource.position.coordinate.longitude
+ longitudeValid: positionSource.position.longitudeValid && settings.useGps
+ latitude: positionSource.position.coordinate.latitude
+ latitudeValid: positionSource.position.latitudeValid && settings.useGps
+ elevation: positionSource.position.coordinate.altitude
+ elevationValid: positionSource.position.altitudeValid && settings.useGps
+ orientation: orientation.orientation
+ artist: settings.creatorName
+ captureDirection: compass.direction
+ captureDirectionValid: compass.directionValid
+ horizontalError: positionSource.position.horizontalAccuracy
+ horizontalErrorValid: positionSource.position.horizontalAccuracyValid && settings.useGps
+ dateTimeEnabled: true
+ }
+
+ Orientation {
+ id: orientation
+ active: cam.running
+ }
+
+ Compass {
+ id: compass
+ active: cam.running
+ }
+
+ ReverseGeocode {
+ id: geocode
+ active: cam.running && settings.useGps && settings.useGeotags
+ }
+
+ PipelineManager {
+ id: pipelineManager
+ camera: cam
+ }
+
+ Qtm.DeviceInfo {
+ id: deviceInfo
+ }
+
+ FSMonitor {
+ id: fileSystem
+ }
+