@ -27,23 +27,28 @@ Rectangle {
@@ -27,23 +27,28 @@ Rectangle {
height: mainLayout . height + ( _margins * 2 )
color: "#80000000"
radius: _margins
visible: ! QGroundControl . settingsManager . flyViewSettings . alternateInstrumentPanel . rawValue && ( _mavlinkCamera || _videoStreamAvailable ) && multiVehiclePanelSelector . showSingleVehiclePanel
visible: ! QGroundControl . settingsManager . flyViewSettings . alternateInstrumentPanel . rawValue && ( _mavlinkCamera || _videoStreamAvailable || _simpleCameraAvailable ) && multiVehiclePanelSelector . showSingleVehiclePanel
property real _margins : ScreenTools . defaultFontPixelHeight / 2
property var _activeVehicle : QGroundControl . multiVehicleManager . activeVehicle
/ / T h e f o l l o w i n g p r o p e r t i e s r e l a t e t o a s i m p l e c a m e r a
property var _flyViewSettings : QGroundControl . settingsManager . flyViewSettings
property bool _simpleCameraAvailable : ! _mavlinkCamera && _activeVehicle && _flyViewSettings . showSimpleCameraControl . rawValue
property bool _onlySimpleCameraAvailable : ! _anyVideoStreamAvailable && _simpleCameraAvailable
property bool _simpleCameraIsShootingInCurrentMode : _onlySimpleCameraAvailable && ! _simplePhotoCaptureIsIdle
/ / T h e f o l l o w i n g p r o p e r t i e s r e l a t e t o a s i m p l e v i d e o s t r e a m
property bool _videoStreamAvailable : _videoStreamManager . hasVideo
property var _videoStreamSettings : QGroundControl . settingsManager . videoSettings
property var _videoStreamManager : QGroundControl . videoManager
property bool _videoStreamAllowsPhotoWhileRecording : true
property bool _videoStreamIsStreaming : _videoStreamManager . streaming
property bool _videoStream PhotoCaptureIsIdle : true
property bool _simple PhotoCaptureIsIdle : true
property bool _videoStreamRecording : _videoStreamManager . recording
property bool _videoStreamCanShoot : _videoStreamIsStreaming
property bool _videoStreamIsShootingInCurrentMode : _videoStreamInPhotoMode ? ! _videoStream PhotoCaptureIsIdle : _videoStreamRecording
property bool _videoStreamIsShootingInCurrentMode : _videoStreamInPhotoMode ? ! _simple PhotoCaptureIsIdle : _videoStreamRecording
property bool _videoStreamInPhotoMode : false
property bool _onlyVideoStreamAvailable : ! _mavlinkCamera && _videoStreamManager . hasVideo
/ / T h e f o l l o w i n g p r o p e r t i e s r e l a t e t o a m a v l i n k p r o t o c o l c a m e r a
property var _mavlinkCameraManager : _activeVehicle ? _activeVehicle . cameraManager : null
@ -51,6 +56,7 @@ Rectangle {
@@ -51,6 +56,7 @@ Rectangle {
property bool _noMavlinkCameras : _mavlinkCameraManager ? _mavlinkCameraManager . cameras . count === 0 : true
property var _mavlinkCamera : ! _noMavlinkCameras ? ( _mavlinkCameraManager . cameras . get ( _mavlinkCameraManagerCurCameraIndex ) && _mavlinkCameraManager . cameras . get ( _mavlinkCameraManagerCurCameraIndex ) . paramComplete ? _mavlinkCameraManager . cameras . get ( _mavlinkCameraManagerCurCameraIndex ) : null ) : null
property bool _multipleMavlinkCameras : _mavlinkCameraManager ? _mavlinkCameraManager . cameras . count > 1 : false
property string _mavlinkCameraName : _mavlinkCamera && _multipleMavlinkCameras ? _mavlinkCamera . modelName : ""
property bool _noMavlinkCameraStreams : _mavlinkCamera ? _mavlinkCamera . streamLabels.length : true
property bool _multipleMavlinkCameraStreams : _mavlinkCamera ? _mavlinkCamera . streamLabels . length > 1 : false
property int _mavlinCameraCurStreamIndex : _mavlinkCamera ? _mavlinkCamera . currentStream : - 1
@ -72,15 +78,18 @@ Rectangle {
@@ -72,15 +78,18 @@ Rectangle {
/ / T h e f o l l o w i n g s e t t i n g s a n d f u n c t i o n s u n i f y b e t w e e n a m a v l i n k c a m e r a a n d a s i m p l e v i d e o s t r e a m f o r s i m p l e a c c e s s
property bool _anyVideoStreamAvailable : _videoStreamManager . hasVideo
property string _mavlinkCameraName : _mavlinkCamera ? ( _multipleMavlinkCameras ? _mavlinkCamera . model Name : "" ) : qsTr ( "Video Stream ")
property bool _showModeIndicator : _mavlinkCamera ? _mavlinkCameraHasModes : _onlyVideoStreamAvailable
property bool _modeIndicatorPhotoMode : _mavlinkCamera ? _mavlinkCameraInPhotoMode : _videoStreamInPhotoMode
property string _cameraName : _mavlinkCamera ? _mavlinkCameraName : ""
property bool _showModeIndicator : _mavlinkCamera ? _mavlinkCameraHasModes : _videoStreamManager . hasVideo
property bool _modeIndicatorPhotoMode : _mavlinkCamera ? _mavlinkCameraInPhotoMode : _videoStreamInPhotoMode || _onlySimpleCameraAvailable
property bool _allowsPhotoWhileRecording : _mavlinkCamera ? _mavlinkCameraAllowsPhotoWhileRecording : _videoStreamAllowsPhotoWhileRecording
property bool _switchToPhotoModeAllowed : ! _modeIndicatorPhotoMode && ( _mavlinkCamera ? ! _mavlinkCameraIsShooting : true )
property bool _switchToVideoModeAllowed : _modeIndicatorPhotoMode && ( _mavlinkCamera ? ! _mavlinkCameraIsShooting : true )
property bool _videoIsRecording : _mavlinkCamera ? _mavlinkCameraIsShooting : _videoStreamRecording
property bool _canShootInCurrentMode : _mavlinkCamera ? _mavlinkCameraCanShoot : _videoStreamCanShoot
property bool _isShootingInCurrentMode : _mavlinkCamera ? _mavlinkCameraIsShooting : _videoStreamIsShootingInCurrentMode
property bool _canShootInCurrentMode : _mavlinkCamera ? _mavlinkCameraCanShoot : _videoStreamCanShoot || _simpleCameraAvailable
property bool _isShootingInCurrentMode : _mavlinkCamera ? _mavlinkCameraIsShooting : _videoStreamIsShootingInCurrentMode || _simpleCameraIsShootingInCurrentMode
on_OnlySimpleCameraAvailableChanged: console . log ( "_onlySimpleCameraAvailable" , _onlySimpleCameraAvailable , _modeIndicatorPhotoMode , _videoStreamInPhotoMode , _mavlinkCamera )
on_ModeIndicatorPhotoModeChanged: console . log ( "_modeIndicatorPhotoMode" , _modeIndicatorPhotoMode )
function setCameraMode ( photoMode ) {
_videoStreamInPhotoMode = photoMode
@ -94,6 +103,7 @@ Rectangle {
@@ -94,6 +103,7 @@ Rectangle {
}
function toggleShooting ( ) {
console . log ( "toggleShooting" , _anyVideoStreamAvailable )
if ( _mavlinkCamera ) {
if ( _mavlinkCameraInVideoMode ) {
_mavlinkCamera . toggleVideo ( )
@ -104,11 +114,15 @@ Rectangle {
@@ -104,11 +114,15 @@ Rectangle {
_mavlinkCamera . takePhoto ( )
}
}
} else {
} else if ( _onlySimpleCameraAvailable || ( _simpleCameraAvailable && _anyVideoStreamAvailable && _videoStreamInPhotoMode && ! videoGrabRadio . checked ) ) {
_simplePhotoCaptureIsIdle = false
_activeVehicle . triggerSimpleCamera ( )
simplePhotoCaptureTimer . start ( )
} else if ( _anyVideoStreamAvailable ) {
if ( _videoStreamInPhotoMode ) {
_videoStreamPhotoCaptureIsIdle = false
_simple PhotoCaptureIsIdle = false
_videoStreamManager . grabImage ( )
videoStreamPhotoCaptureTimer . start ( )
simple PhotoCaptureTimer. start ( )
} else {
if ( _videoStreamManager . recording ) {
_videoStreamManager . stopRecording ( )
@ -120,9 +134,9 @@ Rectangle {
@@ -120,9 +134,9 @@ Rectangle {
}
Timer {
id: videoStream PhotoCaptureTimer
id: simple PhotoCaptureTimer
interval: 500
onTriggered: _videoStream PhotoCaptureIsIdle = true
onTriggered: _simple PhotoCaptureIsIdle = true
}
QGCPalette { id: qgcPal ; colorGroupEnabled: enabled }
@ -138,6 +152,7 @@ Rectangle {
@@ -138,6 +152,7 @@ Rectangle {
sourceSize.height: height
color: qgcPal . text
fillMode: Image . PreserveAspectFit
visible: ! _onlySimpleCameraAvailable
QGCMouseArea {
fillItem: parent
@ -216,6 +231,23 @@ Rectangle {
@@ -216,6 +231,23 @@ Rectangle {
}
}
RowLayout {
Layout.alignment: Qt . AlignHCenter
spacing: 0
visible: _showModeIndicator && ! _mavlinkCamera && _simpleCameraAvailable && _videoStreamInPhotoMode
QGCRadioButton {
id: videoGrabRadio
font.pointSize: ScreenTools . smallFontPointSize
text: qsTr ( "Video Grab" )
}
QGCRadioButton {
font.pointSize: ScreenTools . smallFontPointSize
text: qsTr ( "Camera Trigger" )
checked: true
}
}
/ / T a k e P h o t o , S t a r t / S t o p V i d e o b u t t o n
/ / I M P O R T A N T : T h i s c o n t r o l s u p p o r t s b o t h m a v l i n k c a m e r a s a n d s i m p l e v i d e o s t r e a m s . D o n o r e f e r e n c e a n y t h i n g h e r e w h i c h i s n o t
/ / u s i n g t h e u n i f i e d p r o p e r t i e s / f u n c t i o n s .
@ -250,8 +282,8 @@ Rectangle {
@@ -250,8 +282,8 @@ Rectangle {
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: _mavlinkC ameraName
visible: _mavlinkC ameraName !== ""
text: _c ameraName
visible: _c ameraName !== ""
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter
@ -261,9 +293,9 @@ Rectangle {
@@ -261,9 +293,9 @@ Rectangle {
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: _activeVehicle && _mavlinkCameraInPhotoMode ? ( '00000' + _activeVehicle . cameraTriggerPoints . count ) . slice ( - 5 ) : "0000_mavlinkCameraPhotoMode 0"
text: _activeVehicle ? ( '00000' + _activeVehicle . cameraTriggerPoints . count ) . slice ( - 5 ) : "00000"
font.pointSize: ScreenTools . largeFontPointSize
visible: _mavlinkCameraIn PhotoMode
visible: _modeIndicator PhotoMode
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter