From 2687a5fbd58ae476bf7cba1729abef00475f62e5 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sun, 19 Mar 2017 10:08:45 -0700 Subject: [PATCH 1/4] Make clipToViewport=false --- src/FlightDisplay/FlightDisplayViewMap.qml | 2 +- src/FlightMap/MapItems/MissionItemIndicatorDrag.qml | 2 +- src/FlightMap/MapItems/PolygonEditor.qml | 4 ++-- src/FlightMap/MapScale.qml | 4 ++-- src/MissionEditor/FWLandingPatternMapVisual.qml | 2 +- src/MissionEditor/MissionEditor.qml | 4 ++-- src/MissionEditor/SurveyMapVisual.qml | 8 ++++---- src/QtLocationPlugin/QMLControl/OfflineMap.qml | 8 ++++---- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index ef5fa6e..aaf8403 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -303,7 +303,7 @@ FlightMap { flightWidgets.guidedModeBar.state = "Shown" } else { if (flightWidgets.gotoEnabled) { - _gotoHereCoordinate = flightMap.toCoordinate(Qt.point(mouse.x, mouse.y)) + _gotoHereCoordinate = flightMap.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) flightWidgets.guidedModeBar.confirmAction(flightWidgets.guidedModeBar.confirmGoTo) } } diff --git a/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml b/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml index 720ad59..094672f 100644 --- a/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml +++ b/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml @@ -44,7 +44,7 @@ Rectangle { function liveDrag() { if (!itemDragger._preventCoordinateBindingLoop && itemDrag.drag.active) { var point = Qt.point(itemDragger.x + _touchMarginHorizontal + itemIndicator.anchorPoint.x, itemDragger.y + _touchMarginVertical + itemIndicator.anchorPoint.y) - var coordinate = map.toCoordinate(point) + var coordinate = map.toCoordinate(point, false /* clipToViewPort */) itemDragger._preventCoordinateBindingLoop = true coordinate.altitude = itemCoordinate.altitude itemCoordinate = coordinate diff --git a/src/FlightMap/MapItems/PolygonEditor.qml b/src/FlightMap/MapItems/PolygonEditor.qml index 107d1b8..6f3631c 100644 --- a/src/FlightMap/MapItems/PolygonEditor.qml +++ b/src/FlightMap/MapItems/PolygonEditor.qml @@ -231,7 +231,7 @@ Item { } } - var clickCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y)) + var clickCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) var polygonPath = _newPolygon.path if (polygonPath.length == 0) { // Add first coordinate @@ -275,7 +275,7 @@ Item { return } if (_newPolygon.path.length) { - var dragCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y)) + var dragCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) var polygonPath = _newPolygon.path if (justClicked){ // Add new drag coordinate diff --git a/src/FlightMap/MapScale.qml b/src/FlightMap/MapScale.qml index 9934a2b..515d83d 100644 --- a/src/FlightMap/MapScale.qml +++ b/src/FlightMap/MapScale.qml @@ -111,8 +111,8 @@ Item { function calculateScale() { var scaleLinePixelLength = 100 - var leftCoord = mapControl.toCoordinate(Qt.point(0, scale.y)) - var rightCoord = mapControl.toCoordinate(Qt.point(scaleLinePixelLength, scale.y)) + var leftCoord = mapControl.toCoordinate(Qt.point(0, scale.y), false /* clipToViewPort */) + var rightCoord = mapControl.toCoordinate(Qt.point(scaleLinePixelLength, scale.y), false /* clipToViewPort */) var scaleLineMeters = Math.round(leftCoord.distanceTo(rightCoord)) if (QGroundControl.settingsManager.unitsSettings.distanceUnits.value == UnitsSettings.DistanceUnitsFeet) { diff --git a/src/MissionEditor/FWLandingPatternMapVisual.qml b/src/MissionEditor/FWLandingPatternMapVisual.qml index 2002e8c..1434a91 100644 --- a/src/MissionEditor/FWLandingPatternMapVisual.qml +++ b/src/MissionEditor/FWLandingPatternMapVisual.qml @@ -147,7 +147,7 @@ Item { anchors.fill: map onClicked: { - var coordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y)) + var coordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) coordinate.latitude = coordinate.latitude.toFixed(_decimalPlaces) coordinate.longitude = coordinate.longitude.toFixed(_decimalPlaces) coordinate.altitude = coordinate.altitude.toFixed(_decimalPlaces) diff --git a/src/MissionEditor/MissionEditor.qml b/src/MissionEditor/MissionEditor.qml index c1bd59d..77e218b 100644 --- a/src/MissionEditor/MissionEditor.qml +++ b/src/MissionEditor/MissionEditor.qml @@ -382,7 +382,7 @@ QGCView { return } - var coordinate = editorMap.toCoordinate(Qt.point(mouse.x, mouse.y)) + var coordinate = editorMap.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) coordinate.latitude = coordinate.latitude.toFixed(_decimalPlaces) coordinate.longitude = coordinate.longitude.toFixed(_decimalPlaces) coordinate.altitude = coordinate.altitude.toFixed(_decimalPlaces) @@ -429,7 +429,7 @@ QGCView { function liveDrag() { if (!itemDragger.preventCoordinateBindingLoop && Drag.active) { var point = Qt.point(itemDragger.x + (itemDragger.width / 2), itemDragger.y + (itemDragger.height / 2)) - var coordinate = editorMap.toCoordinate(point) + var coordinate = editorMap.toCoordinate(point, false /* clipToViewPort */) coordinate.altitude = itemDragger.coordinateItem.coordinate.altitude itemDragger.preventCoordinateBindingLoop = true itemDragger.coordinateItem.coordinate = coordinate diff --git a/src/MissionEditor/SurveyMapVisual.qml b/src/MissionEditor/SurveyMapVisual.qml index 5f0dcdb..593a9da 100644 --- a/src/MissionEditor/SurveyMapVisual.qml +++ b/src/MissionEditor/SurveyMapVisual.qml @@ -81,10 +81,10 @@ Item { var topRight = Qt.point(rect.x + rect.width, rect.y) var bottomLeft = Qt.point(rect.x, rect.y + rect.height) var bottomRight = Qt.point(rect.x + rect.width, rect.y + rect.height) - _missionItem.addPolygonCoordinate(map.toCoordinate(topLeft)) - _missionItem.addPolygonCoordinate(map.toCoordinate(topRight)) - _missionItem.addPolygonCoordinate(map.toCoordinate(bottomRight)) - _missionItem.addPolygonCoordinate(map.toCoordinate(bottomLeft)) + _missionItem.addPolygonCoordinate(map.toCoordinate(topLeft, false /* clipToViewPort */)) + _missionItem.addPolygonCoordinate(map.toCoordinate(topRight, false /* clipToViewPort */)) + _missionItem.addPolygonCoordinate(map.toCoordinate(bottomRight, false /* clipToViewPort */)) + _missionItem.addPolygonCoordinate(map.toCoordinate(bottomLeft, false /* clipToViewPort */)) } } diff --git a/src/QtLocationPlugin/QMLControl/OfflineMap.qml b/src/QtLocationPlugin/QMLControl/OfflineMap.qml index 8d1e591..e0512dd 100644 --- a/src/QtLocationPlugin/QMLControl/OfflineMap.qml +++ b/src/QtLocationPlugin/QMLControl/OfflineMap.qml @@ -55,7 +55,7 @@ QGCView { Component.onCompleted: { QGroundControl.mapEngineManager.loadTileSets() updateMap() - savedCenter = _map.toCoordinate(Qt.point(_map.width / 2, _map.height / 2)) + savedCenter = _map.toCoordinate(Qt.point(_map.width / 2, _map.height / 2), false /* clipToViewPort */) } Connections { @@ -76,8 +76,8 @@ QGCView { var yl = 0 var xr = _map.width.toFixed(0) - 1 // Must be within boundaries of visible map var yr = _map.height.toFixed(0) - 1 // Must be within boundaries of visible map - var c0 = _map.toCoordinate(Qt.point(xl, yl)) - var c1 = _map.toCoordinate(Qt.point(xr, yr)) + var c0 = _map.toCoordinate(Qt.point(xl, yl), false /* clipToViewPort */) + var c1 = _map.toCoordinate(Qt.point(xr, yr), false /* clipToViewPort */) QGroundControl.mapEngineManager.updateForCurrentView(c0.longitude, c0.latitude, c1.longitude, c1.latitude, sliderMinZoom.value, sliderMaxZoom.value, mapType) } } @@ -142,7 +142,7 @@ QGCView { function enterInfoView() { _map.visible = true isMapInteractive = false - savedCenter = _map.toCoordinate(Qt.point(_map.width / 2, _map.height / 2)) + savedCenter = _map.toCoordinate(Qt.point(_map.width / 2, _map.height / 2), false /* clipToViewPort */) savedZoom = _map.zoomLevel savedMapType = mapType if(!offlineMapView._currentSelection.defaultSet) { From 7331365d2c55b86d59ed8c32c39145e5f4541202 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sun, 19 Mar 2017 10:08:52 -0700 Subject: [PATCH 2/4] Remove unused code --- src/FlightMap/FlightMap.qml | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/FlightMap/FlightMap.qml b/src/FlightMap/FlightMap.qml index 6204540..5f68962 100644 --- a/src/FlightMap/FlightMap.qml +++ b/src/FlightMap/FlightMap.qml @@ -56,32 +56,6 @@ Map { return dist } - function calculateScale() { - var coord1, coord2, dist, text, f - f = 0 - coord1 = _map.toCoordinate(Qt.point(0, scale.y)) - coord2 = _map.toCoordinate(Qt.point(0 + scaleImage.sourceSize.width, scale.y)) - dist = Math.round(coord1.distanceTo(coord2)) - if (dist === 0) { - // not visible - } else { - for (var i = 0; i < scaleLengths.length - 1; i++) { - if (dist < (scaleLengths[i] + scaleLengths[i+1]) / 2 ) { - f = scaleLengths[i] / dist - dist = scaleLengths[i] - break; - } - } - if (f === 0) { - f = dist / scaleLengths[i] - dist = scaleLengths[i] - } - } - text = formatDistance(dist) - scaleImage.width = (scaleImage.sourceSize.width * f) - 2 * scaleImageLeft.sourceSize.width - scaleText.text = text - } - function setVisibleRegion(region) { // This works around a bug on Qt where if you set a visibleRegion and then the user moves or zooms the map // and then you set the same visibleRegion the map will not move/scale appropriately since it thinks there From 37b638b813a2ce19a1c03fa419084c17d150139f Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sun, 19 Mar 2017 10:09:10 -0700 Subject: [PATCH 3/4] Fix signalling on _cameraOrientationLandscapeFact --- src/MissionManager/SurveyMissionItem.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/MissionManager/SurveyMissionItem.cc b/src/MissionManager/SurveyMissionItem.cc index 9206b61..f6db04b 100644 --- a/src/MissionManager/SurveyMissionItem.cc +++ b/src/MissionManager/SurveyMissionItem.cc @@ -108,15 +108,16 @@ SurveyMissionItem::SurveyMissionItem(Vehicle* vehicle, QObject* parent) connect(&_cameraTriggerDistanceFact, &Fact::valueChanged, this, &SurveyMissionItem::_generateGrid); connect(&_gridAltitudeFact, &Fact::valueChanged, this, &SurveyMissionItem::_updateCoordinateAltitude); - // Signal to Qml when camera value changes to it can recalc - connect(&_groundResolutionFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_frontalOverlapFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_sideOverlapFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_cameraSensorWidthFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_cameraSensorHeightFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_cameraResolutionWidthFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_cameraResolutionHeightFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); - connect(&_cameraFocalLengthFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + // Signal to Qml when camera value changes so it can recalc + connect(&_groundResolutionFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_frontalOverlapFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_sideOverlapFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_cameraSensorWidthFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_cameraSensorHeightFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_cameraResolutionWidthFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_cameraResolutionHeightFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_cameraFocalLengthFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); + connect(&_cameraOrientationLandscapeFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraValueChanged); connect(&_cameraTriggerFact, &Fact::valueChanged, this, &SurveyMissionItem::_cameraTriggerChanged); From fe70b116045da9e289ea67784b18a3d8d41fdc23 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sun, 19 Mar 2017 10:09:32 -0700 Subject: [PATCH 4/4] Fix radios, fix initial load setup --- src/MissionEditor/SurveyItemEditor.qml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/MissionEditor/SurveyItemEditor.qml b/src/MissionEditor/SurveyItemEditor.qml index b7c1491..65f69f0 100644 --- a/src/MissionEditor/SurveyItemEditor.qml +++ b/src/MissionEditor/SurveyItemEditor.qml @@ -48,12 +48,15 @@ Rectangle { break; } } + missionItem.cameraOrientationFixed = false if (index == -1) { gridTypeCombo.currentIndex = _gridTypeManual } else { - var listIndex = index - _gridTypeCamera gridTypeCombo.currentIndex = index - missionItem.cameraOrientationFixed = _vehicleCameraList[listIndex].fixedOrientation + if (index != 1) { + // Specific camera is selected + missionItem.cameraOrientationFixed = _vehicleCameraList[index - _gridTypeCamera].fixedOrientation + } } } } @@ -228,7 +231,7 @@ Rectangle { QGCRadioButton { width: _editFieldWidth text: "Landscape" - checked: missionItem.cameraOrientationLandscape.value == 1 + checked: !!missionItem.cameraOrientationLandscape.value exclusiveGroup: cameraOrientationGroup onClicked: missionItem.cameraOrientationLandscape.value = 1 } @@ -236,7 +239,7 @@ Rectangle { QGCRadioButton { id: cameraOrientationPortrait text: "Portrait" - checked: missionItem.cameraOrientationLandscape.value == 0 + checked: !missionItem.cameraOrientationLandscape.value exclusiveGroup: cameraOrientationGroup onClicked: missionItem.cameraOrientationLandscape.value = 0 } @@ -372,7 +375,7 @@ Rectangle { QGCRadioButton { id: fixedAltitudeRadio text: qsTr("Altitude") - checked: missionItem.fixedValueIsAltitude.value + checked: !!missionItem.fixedValueIsAltitude.value exclusiveGroup: fixedValueGroup onClicked: missionItem.fixedValueIsAltitude.value = 1 }