@ -27,39 +27,103 @@ Rectangle {
@@ -27,39 +27,103 @@ Rectangle {
height: mainLayout . height + ( _margins * 2 )
color: "#80000000"
radius: _margins
visible: ! QGroundControl . settingsManager . flyViewSettings . alternateInstrumentPanel . rawValue && ( _camera || _anyVideoStreamAvailable ) && multiVehiclePanelSelector . showSingleVehiclePanel
property real _margins : ScreenTools . defaultFontPixelHeight / 2
property var _activeVehicle : QGroundControl . multiVehicleManager . activeVehicle
property var _cameraManager : _activeVehicle ? _activeVehicle . cameraManager : null
property var _videoManager : QGroundControl . videoManager
property bool _noCameras : _cameraManager ? _cameraManager . cameras . count === 0 : true
property bool _multipleCameras : _cameraManager ? _cameraManager . cameras . count > 1 : false
property bool _noMavlinkCameraStreams : _camera ? _camera . streamLabels.length : true
property bool _multipleMavlinkCameraStreams : _camera ? _camera . streamLabels . length > 1 : false
property bool _anyVideoStreamAvailable : _videoManager . hasVideo
property int _curCameraIndex : _cameraManager ? _cameraManager . currentCamera : - 1
property int _curStreamIndex : _camera ? _camera . currentStream : - 1
property var _camera : ! _noCameras ? ( _cameraManager . cameras . get ( _curCameraIndex ) && _cameraManager . cameras . get ( _curCameraIndex ) . paramComplete ? _cameraManager . cameras . get ( _curCameraIndex ) : null ) : null
property string _cameraName : _camera ? ( _multipleCameras ? _camera . modelName : "" ) : qsTr ( "Video Stream" )
property bool _hasThermalVideoStream : _camera ? _camera . thermalStreamInstance : false
property bool _cameraModeUndefined : _camera ? _camera . cameraMode === QGCCameraControl.CAM_MODE_UNDEFINED : true
property bool _cameraInVideoMode : _camera ? _camera . cameraMode === QGCCameraControl.CAM_MODE_VIDEO : false
property bool _cameraInPhotoMode : _camera ? _camera . cameraMode === QGCCameraControl.CAM_MODE_PHOTO : false
property bool _cameraElapsedMode : _camera && _camera . cameraMode === QGCCameraControl . CAM_MODE_PHOTO && _camera . photoMode === QGCCameraControl . PHOTO_CAPTURE_TIMELAPSE
property real _spacers : ScreenTools . defaultFontPixelHeight * 0.5
property real _labelFieldWidth : ScreenTools . defaultFontPixelWidth * 30
property real _editFieldWidth : ScreenTools . defaultFontPixelWidth * 30
property bool _communicationLost : _activeVehicle ? _activeVehicle . connectionLost : false
property bool _hasModes : _camera && _camera . hasModes
property bool _videoRecording : _camera && _camera . videoStatus === QGCCameraControl . VIDEO_CAPTURE_STATUS_RUNNING
property bool _photoIdle : _camera && ( _camera . photoStatus === QGCCameraControl . PHOTO_CAPTURE_IDLE || _camera . photoStatus >= QGCCameraControl . PHOTO_CAPTURE_LAST )
property bool _storageReady : _camera && _camera . storageStatus === QGCCameraControl . STORAGE_READY
property bool _batteryReady : _camera && _camera . batteryRemaining >= 0
property bool _storageSupported : _camera && _camera . storageStatus === QGCCameraControl . STORAGE_NOT_SUPPORTED
property bool _canShoot : ( ! _cameraModeUndefined && ( ( _storageReady && _camera . storageFree > 0 ) || _storageSupported ) ) || _videoManager . streaming
property bool _isShooting : ( ( _cameraInVideoMode && _videoRecording ) || ( _cameraInPhotoMode && ! _photoIdle ) ) || _videoManager . recording
property var _videoSettings : QGroundControl . settingsManager . videoSettings
visible: ! QGroundControl . settingsManager . flyViewSettings . alternateInstrumentPanel . rawValue && ( _mavlinkCamera || _videoStreamAvailable ) && 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 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 _videoStreamPhotoCaptureIsIdle : true
property bool _videoStreamRecording : _videoStreamManager . recording
property bool _videoStreamCanShoot : _videoStreamIsStreaming
property bool _videoStreamIsShootingInCurrentMode : _videoStreamInPhotoMode ? ! _videoStreamPhotoCaptureIsIdle : _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
property int _mavlinkCameraManagerCurCameraIndex : _mavlinkCameraManager ? _mavlinkCameraManager . currentCamera : - 1
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 bool _noMavlinkCameraStreams : _mavlinkCamera ? _mavlinkCamera . streamLabels.length : true
property bool _multipleMavlinkCameraStreams : _mavlinkCamera ? _mavlinkCamera . streamLabels . length > 1 : false
property int _mavlinCameraCurStreamIndex : _mavlinkCamera ? _mavlinkCamera . currentStream : - 1
property bool _mavlinkCameraHasThermalVideoStream : _mavlinkCamera ? _mavlinkCamera . thermalStreamInstance : false
property bool _mavlinkCameraModeUndefined : _mavlinkCamera ? _mavlinkCamera . cameraMode === QGCCameraControl.CAM_MODE_UNDEFINED : true
property bool _mavlinkCameraInVideoMode : _mavlinkCamera ? _mavlinkCamera . cameraMode === QGCCameraControl.CAM_MODE_VIDEO : false
property bool _mavlinkCameraInPhotoMode : _mavlinkCamera ? _mavlinkCamera . cameraMode === QGCCameraControl.CAM_MODE_PHOTO : false
property bool _mavlinkCameraElapsedMode : _mavlinkCamera && _mavlinkCamera . cameraMode === QGCCameraControl . CAM_MODE_PHOTO && _mavlinkCamera . photoMode === QGCCameraControl . PHOTO_CAPTURE_TIMELAPSE
property bool _mavlinkCameraHasModes : _mavlinkCamera && _mavlinkCamera . hasModes
property bool _mavlinkCameraVideoIsRecording : _mavlinkCamera && _mavlinkCamera . videoStatus === QGCCameraControl . VIDEO_CAPTURE_STATUS_RUNNING
property bool _mavlinkCameraPhotoCaptureIsIdle : _mavlinkCamera && ( _mavlinkCamera . photoStatus === QGCCameraControl . PHOTO_CAPTURE_IDLE || _mavlinkCamera . photoStatus >= QGCCameraControl . PHOTO_CAPTURE_LAST )
property bool _mavlinkCameraStorageReady : _mavlinkCamera && _mavlinkCamera . storageStatus === QGCCameraControl . STORAGE_READY
property bool _mavlinkCameraBatteryReady : _mavlinkCamera && _mavlinkCamera . batteryRemaining >= 0
property bool _mavlinkCameraStorageSupported : _mavlinkCamera && _mavlinkCamera . storageStatus === QGCCameraControl . STORAGE_NOT_SUPPORTED
property bool _mavlinkCameraAllowsPhotoWhileRecording : false
property bool _mavlinkCameraCanShoot : ( ! _mavlinkCameraModeUndefined && ( ( _mavlinkCameraStorageReady && _mavlinkCamera . storageFree > 0 ) || _mavlinkCameraStorageSupported ) ) || _videoStreamManager . streaming
property bool _mavlinkCameraIsShooting : ( ( _mavlinkCameraInVideoMode && _mavlinkCameraVideoIsRecording ) || ( _mavlinkCameraInPhotoMode && ! _mavlinkCameraPhotoCaptureIsIdle ) ) || _videoStreamManager . recording
/ / 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 . modelName : "" ) : qsTr ( "Video Stream" )
property bool _showModeIndicator : _mavlinkCamera ? _mavlinkCameraHasModes : _onlyVideoStreamAvailable
property bool _modeIndicatorPhotoMode : _mavlinkCamera ? _mavlinkCameraInPhotoMode : _videoStreamInPhotoMode
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
function setCameraMode ( photoMode ) {
_videoStreamInPhotoMode = photoMode
if ( _mavlinkCamera ) {
if ( _mavlinkCameraInPhotoMode ) {
_mavlinkCamera . setVideoMode ( )
} else {
_mavlinkCamera . setPhotoMode ( )
}
}
}
function toggleShooting ( ) {
if ( _mavlinkCamera ) {
if ( _mavlinkCameraInVideoMode ) {
_mavlinkCamera . toggleVideo ( )
} else {
if ( _mavlinkCameraInPhotoMode && ! _mavlinkCameraPhotoCaptureIsIdle && _mavlinkCameraElapsedMode ) {
_mavlinkCamera . stopTakePhoto ( )
} else {
_mavlinkCamera . takePhoto ( )
}
}
} else {
if ( _videoStreamInPhotoMode ) {
_videoStreamPhotoCaptureIsIdle = false
_videoStreamManager . grabImage ( )
videoStreamPhotoCaptureTimer . start ( )
} else {
if ( _videoStreamManager . recording ) {
_videoStreamManager . stopRecording ( )
} else {
_videoStreamManager . startRecording ( )
}
}
}
}
Timer {
id: videoStreamPhotoCaptureTimer
interval: 500
onTriggered: _videoStreamPhotoCaptureIsIdle = true
}
QGCPalette { id: qgcPal ; colorGroupEnabled: enabled }
@ -88,26 +152,28 @@ Rectangle {
@@ -88,26 +152,28 @@ Rectangle {
anchors.horizontalCenter: parent . horizontalCenter
spacing: ScreenTools . defaultFontPixelHeight / 2
/ / - - P h o t o / V i d e o M o d e S e l e c t o r ( M a v l i n k C a m e r a s o n l y )
/ / P h o t o / V i d e o M o d e S e l e c t o r
/ / 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 .
Rectangle {
id: camMode
Layout.alignment: Qt . AlignHCenter
width: _hasModes ? ScreenTools . defaultFontPixelWidth * 10 : 0
height: _hasModes ? width / 2 : 0
width: ScreenTools . defaultFontPixelWidth * 10
height: width / 2
color: qgcPal . windowShadeLight
radius: height * 0.5
visible: _hasModes
visible: _showModeIndicator
/ / - - V i d e o M o d e
Rectangle {
width: parent . height
height: parent . height
color: _cameraInVideoMode ? qgcPal.window : qgcPal . windowShadeLight
radius: height * 0.5
anchors.left: parent . left
border.color: qgcPal . text
border.width: _cameraInVideoMode ? 1 : 0
anchors.verticalCenter: parent . verticalCenter
width: parent . height
height: parent . height
color: _modeIndicatorPhotoMode ? qgcPal.windowShadeLight : qgcPal . window
radius: height * 0.5
anchors.left: parent . left
border.color: qgcPal . text
border.width: _modeIndicatorPhotoMode ? 0 : 1
QGCColoredImage {
height: parent . height * 0.5
width: height
@ -115,26 +181,24 @@ Rectangle {
@@ -115,26 +181,24 @@ Rectangle {
source: "/qmlimages/camera_video.svg"
fillMode: Image . PreserveAspectFit
sourceSize.height: height
color: _cameraInVideoMode ? qgcPal.colorGreen : qgcPal . text
color: _modeIndicatorPhotoMode ? qgcPal.text : qgcPal . colorGreen
MouseArea {
anchors.fill: parent
enabled: _cameraInPhotoMode && ! _isShooting
onClicked: {
_camera . setVideoMode ( )
}
enabled: _switchToVideoModeAllowed
onClicked: setCameraMode ( false )
}
}
}
/ / - - P h o t o M o d e
Rectangle {
width: parent . height
height: parent . height
color: _cameraInPhotoMode ? qgcPal.window : qgcPal . windowShadeLight
radius: height * 0.5
anchors.right: parent . right
border.color: qgcPal . text
border.width: _cameraInPhotoMode ? 1 : 0
anchors.verticalCenter: parent . verticalCenter
width: parent . height
height: parent . height
color: _modeIndicatorPhotoMode ? qgcPal.window : qgcPal . windowShadeLight
radius: height * 0.5
anchors.right: parent . right
border.color: qgcPal . text
border.width: _modeIndicatorPhotoMode ? 1 : 0
QGCColoredImage {
height: parent . height * 0.5
width: height
@ -142,59 +206,40 @@ Rectangle {
@@ -142,59 +206,40 @@ Rectangle {
source: "/qmlimages/camera_photo.svg"
fillMode: Image . PreserveAspectFit
sourceSize.height: height
color: _ca mera InPhotoMode ? qgcPal.colorGreen : qgcPal . text
color: _mod eIndicator PhotoMode ? qgcPal.colorGreen : qgcPal . text
MouseArea {
anchors.fill: parent
enabled: _cameraInVideoMode && ! _isShooting
onClicked: {
_camera . setPhotoMode ( )
}
enabled: _switchToPhotoModeAllowed
onClicked: setCameraMode ( 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 .
Rectangle {
Layout.alignment: Qt . AlignHCenter
color: Qt . rgba ( 0 , 0 , 0 , 0 )
width: ScreenTools . defaultFontPixelWidth * 6
height: width
radius: width * 0.5
visible: _camera || _anyVideoStreamAvailable
border.color: qgcPal . buttonText
border.width: 3
Rectangle {
anchors.centerIn: parent
width: parent . width * ( _isShooting ? 0.5 : 0.75 )
width: parent . width * ( _isShootingInCurrentMode ? 0.5 : 0.75 )
height: width
radius: _isShooting ? 0 : width * 0.5
color: _canShoot ? qgcPal.colorRed : qgcPal . colorGrey
radius: _isShootingInCurrentMode ? 0 : width * 0.5
color: _canShootInCurrentMode ? qgcPal.colorRed : qgcPal . colorGrey
}
MouseArea {
anchors.fill: parent
enabled: _canShoot
onClicked: {
if ( _camera ) {
if ( _cameraInVideoMode ) {
_camera . toggleVideo ( )
} else {
if ( _cameraInPhotoMode && ! _photoIdle && _cameraElapsedMode ) {
_camera . stopTakePhoto ( )
} else {
_camera . takePhoto ( )
}
}
} else {
if ( _videoManager . recording ) {
_videoManager . stopRecording ( )
} else {
_videoManager . startRecording ( )
}
}
}
enabled: _canShootInCurrentMode
onClicked: toggleShooting ( )
}
}
@ -205,32 +250,32 @@ Rectangle {
@@ -205,32 +250,32 @@ Rectangle {
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: _c ameraName
visible: _c ameraName !== ""
text: _mavlinkC ameraName
visible: _mavlinkC ameraName !== ""
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: ( _cameraInVideoMode && _c amera . videoStatus === QGCCameraControl . VIDEO_CAPTURE_STATUS_RUNNING ) ? _c amera . recordTimeStr : "00:00:00"
text: ( _mavlinkCameraInVideoMode && _mavlinkC amera . videoStatus === QGCCameraControl . VIDEO_CAPTURE_STATUS_RUNNING ) ? _mavlinkC amera . recordTimeStr : "00:00:00"
font.pointSize: ScreenTools . largeFontPointSize
visible: _c ameraInVideoMode
visible: _mavlinkC ameraInVideoMode
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: _activeVehicle && _c ameraInPhotoMode ? ( '00000' + _activeVehicle . cameraTriggerPoints . count ) . slice ( - 5 ) : "0000_c ameraPhotoMode0"
text: _activeVehicle && _mavlinkC ameraInPhotoMode ? ( '00000' + _activeVehicle . cameraTriggerPoints . count ) . slice ( - 5 ) : "0000_mavlinkC ameraPhotoMode0"
font.pointSize: ScreenTools . largeFontPointSize
visible: _c ameraInPhotoMode
visible: _mavlinkC ameraInPhotoMode
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: _c amera ? qsTr ( "Free Space: " ) + _c amera . storageFreeStr : ""
text: _mavlinkC amera ? qsTr ( "Free Space: " ) + _mavlinkC amera . storageFreeStr : ""
font.pointSize: ScreenTools . defaultFontPointSize
visible: _s torageReady
visible: _mavlinkCameraS torageReady
}
QGCLabel {
Layout.alignment: Qt . AlignHCenter
text: _c amera ? qsTr ( "Battery: " ) + _c amera . batteryRemainingStr : ""
text: _mavlinkC amera ? qsTr ( "Battery: " ) + _mavlinkC amera . batteryRemainingStr : ""
font.pointSize: ScreenTools . defaultFontPointSize
visible: _b atteryReady
visible: _mavlinkCameraB atteryReady
}
}
}
@ -248,14 +293,14 @@ Rectangle {
@@ -248,14 +293,14 @@ Rectangle {
GridLayout {
id: gridLayout
flow: GridLayout . TopToBottom
rows: dynamicRows + ( _camera ? _c amera . activeSettings.length : 0 )
rows: dynamicRows + ( _mavlinkCamera ? _mavlinkC amera . activeSettings.length : 0 )
property int dynamicRows: 10
/ / F i r s t c o l u m n
QGCLabel {
text: qsTr ( "Camera" )
visible: _multipleCameras
visible: _multipleMavlink Cameras
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
@ -267,35 +312,34 @@ Rectangle {
@@ -267,35 +312,34 @@ Rectangle {
QGCLabel {
text: qsTr ( "Thermal View Mode" )
visible: _h asThermalVideoStream
visible: _mavlinkCameraH asThermalVideoStream
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
QGCLabel {
text: qsTr ( "Blend Opacity" )
visible: _hasThermalVideoStream && _c amera . thermalMode === QGCCameraControl . THERMAL_BLEND
visible: _mavlinkCameraHasThermalVideoStream && _mavlinkC amera . thermalMode === QGCCameraControl . THERMAL_BLEND
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
/ / M a v l i n k C a m e r a P r o t o c o l a c t i v e s e t t i n g s
Repeater {
model: _camera ? _c amera . activeSettings : [ ]
model: _mavlinkCamera ? _mavlinkC amera . activeSettings : [ ]
QGCLabel {
text: _c amera . getFact ( modelData ) . shortDescription
text: _mavlinkC amera . getFact ( modelData ) . shortDescription
}
}
QGCLabel {
text: qsTr ( "Photo Mode" )
visible: _h asModes
visible: _mavlinkCameraH asModes
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
QGCLabel {
text: qsTr ( "Photo Interval (seconds)" )
width: _labelFieldWidth
visible: _cameraInPhotoMode && _camera . photoMode === QGCCameraControl . PHOTO_CAPTURE_TIMELAPSE
visible: _mavlinkCameraInPhotoMode && _mavlinkCamera . photoMode === QGCCameraControl . PHOTO_CAPTURE_TIMELAPSE
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
@ -313,13 +357,13 @@ Rectangle {
@@ -313,13 +357,13 @@ Rectangle {
QGCLabel {
text: qsTr ( "Reset Camera Defaults" )
visible: _c amera
visible: _mavlinkC amera
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
QGCLabel {
text: qsTr ( "Storage" )
visible: _s torageSupported
visible: _mavlinkCameraS torageSupported
onVisibleChanged: gridLayout . dynamicRows += visible ? 1 : - 1
}
@ -327,49 +371,49 @@ Rectangle {
@@ -327,49 +371,49 @@ Rectangle {
QGCComboBox {
Layout.fillWidth: true
sizeToContents: true
model: _cameraManager ? _c ameraManager . cameraLabels : [ ]
currentIndex: _c urCameraIndex
visible: _multipleCameras
onActivated: _c ameraManager . currentCamera = index
model: _mavlinkCameraManager ? _mavlinkC ameraManager . cameraLabels : [ ]
currentIndex: _mavlinkCameraManagerC urCameraIndex
visible: _multipleMavlink Cameras
onActivated: _mavlinkC ameraManager . currentCamera = index
}
QGCComboBox {
Layout.fillWidth: true
sizeToContents: true
model: _camera ? _c amera . streamLabels : [ ]
currentIndex: _c urStreamIndex
model: _mavlinkCamera ? _mavlinkC amera . streamLabels : [ ]
currentIndex: _mavlinCameraC urStreamIndex
visible: _multipleMavlinkCameraStreams
onActivated: _c amera . currentStream = index
onActivated: _mavlinkC amera . currentStream = index
}
QGCComboBox {
Layout.fillWidth: true
sizeToContents: true
model: [ qsTr ( "Off" ) , qsTr ( "Blend" ) , qsTr ( "Full" ) , qsTr ( "Picture In Picture" ) ]
currentIndex: _camera ? _c amera . thermalMode : - 1
visible: _h asThermalVideoStream
onActivated: _c amera . thermalMode = index
currentIndex: _mavlinkCamera ? _mavlinkC amera . thermalMode : - 1
visible: _mavlinkCameraH asThermalVideoStream
onActivated: _mavlinkC amera . thermalMode = index
}
QGCSlider {
Layout.fillWidth: true
maximumValue: 100
minimumValue: 0
value: _camera ? _c amera . thermalOpacity : 0
value: _mavlinkCamera ? _mavlinkC amera . thermalOpacity : 0
updateValueWhileDragging: true
visible: _hasThermalVideoStream && _c amera . thermalMode === QGCCameraControl . THERMAL_BLEND
onValueChanged: _c amera . thermalOpacity = value
visible: _mavlinkCameraHasThermalVideoStream && _mavlinkC amera . thermalMode === QGCCameraControl . THERMAL_BLEND
onValueChanged: _mavlinkC amera . thermalOpacity = value
}
/ / M a v l i n k C a m e r a P r o t o c o l a c t i v e s e t t i n g s
Repeater {
model: _camera ? _c amera . activeSettings : [ ]
model: _mavlinkCamera ? _mavlinkC amera . activeSettings : [ ]
RowLayout {
Layout.fillWidth: true
spacing: ScreenTools . defaultFontPixelWidth
property var _fact : _c amera . getFact ( modelData )
property var _fact : _mavlinkC amera . getFact ( modelData )
property bool _isBool : _fact . typeIsBool
property bool _isCombo : ! _isBool && _fact . enumStrings . length > 0
property bool _isSlider : _fact && ! isNaN ( _fact . increment )
@ -409,9 +453,9 @@ Rectangle {
@@ -409,9 +453,9 @@ Rectangle {
Layout.fillWidth: true
sizeToContents: true
model: [ qsTr ( "Single" ) , qsTr ( "Time Lapse" ) ]
currentIndex: _camera ? _c amera . photoMode : 0
visible: _h asModes
onActivated: _c amera . photoMode = index
currentIndex: _mavlinkCamera ? _mavlinkC amera . photoMode : 0
visible: _mavlinkCameraH asModes
onActivated: _mavlinkC amera . photoMode = index
}
QGCSlider {
@ -419,27 +463,27 @@ Rectangle {
@@ -419,27 +463,27 @@ Rectangle {
maximumValue: 60
minimumValue: 1
stepSize: 1
value: _camera ? _c amera . photoLapse : 5
value: _mavlinkCamera ? _mavlinkC amera . photoLapse : 5
displayValue: true
updateValueWhileDragging: true
visible: _cameraInPhotoMode && _c amera . photoMode === QGCCameraControl . PHOTO_CAPTURE_TIMELAPSE
visible: _mavlinkCameraInPhotoMode && _mavlinkC amera . photoMode === QGCCameraControl . PHOTO_CAPTURE_TIMELAPSE
onValueChanged: {
if ( _c amera ) {
_c amera . photoLapse = value
if ( _mavlinkC amera ) {
_mavlinkC amera . photoLapse = value
}
}
}
QGCSwitch {
checked: _videoSettings . gridLines . rawValue
checked: _videoStreamS ettings . gridLines . rawValue
visible: _anyVideoStreamAvailable
onClicked: _videoSettings . gridLines . rawValue = checked ? 1 : 0
onClicked: _videoStreamS ettings . gridLines . rawValue = checked ? 1 : 0
}
FactComboBox {
Layout.fillWidth: true
sizeToContents: true
fact: _videoSettings . videoFit
fact: _videoStreamS ettings . videoFit
indexModel: false
visible: _anyVideoStreamAvailable
}
@ -447,7 +491,7 @@ Rectangle {
@@ -447,7 +491,7 @@ Rectangle {
QGCButton {
Layout.fillWidth: true
text: qsTr ( "Reset" )
visible: _c amera
visible: _mavlinkC amera
onClicked: resetPrompt . open ( )
MessageDialog {
id: resetPrompt
@ -456,7 +500,7 @@ Rectangle {
@@ -456,7 +500,7 @@ Rectangle {
standardButtons: StandardButton . Yes | StandardButton . No
onNo: resetPrompt . close ( )
onYes: {
_c amera . resetSettings ( )
_mavlinkC amera . resetSettings ( )
resetPrompt . close ( )
}
}
@ -465,7 +509,7 @@ Rectangle {
@@ -465,7 +509,7 @@ Rectangle {
QGCButton {
Layout.fillWidth: true
text: qsTr ( "Format" )
visible: _s torageSupported
visible: _mavlinkCameraS torageSupported
onClicked: formatPrompt . open ( )
MessageDialog {
id: formatPrompt
@ -474,7 +518,7 @@ Rectangle {
@@ -474,7 +518,7 @@ Rectangle {
standardButtons: StandardButton . Yes | StandardButton . No
onNo: formatPrompt . close ( )
onYes: {
_c amera . formatCard ( )
_mavlinkC amera . formatCard ( )
formatPrompt . close ( )
}
}