From 9967011d30a06275b206f952581330aa06768353 Mon Sep 17 00:00:00 2001 From: dogmaphobic Date: Mon, 12 Oct 2015 18:19:21 -0400 Subject: [PATCH] Adding a RoundButton element. Also moving the Plan View tool bar buttons into a Row element. --- qgroundcontrol.qrc | 1 + src/MissionEditor/MissionEditor.qml | 272 ++++++++---------- .../QGroundControl.Controls.qmldir | 1 + src/QmlControls/RoundButton.qml | 35 +++ 4 files changed, 162 insertions(+), 147 deletions(-) create mode 100644 src/QmlControls/RoundButton.qml diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index f6d196c44..fea17435d 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -114,6 +114,7 @@ src/QmlControls/MissionItemSummary.qml src/QmlControls/MissionItemEditor.qml src/QmlControls/DropButton.qml + src/QmlControls/RoundButton.qml src/QmlControls/QGCCanvas.qml diff --git a/src/MissionEditor/MissionEditor.qml b/src/MissionEditor/MissionEditor.qml index b8ab36743..53ab3f8dd 100644 --- a/src/MissionEditor/MissionEditor.qml +++ b/src/MissionEditor/MissionEditor.qml @@ -130,204 +130,182 @@ QGCView { } } - Image { - id: addMissionItemsButton - anchors.rightMargin: ScreenTools.defaultFontPixelHeight - anchors.right: homePositionManagerButton.left - anchors.top: homePositionManagerButton.top - width: ScreenTools.defaultFontPixelHeight * 3 - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true - source: "/qmlimages/MapAddMission.svg" - opacity: _addMissionItems ? 1.0 : 0.75 - MouseArea { - anchors.fill: parent + Row { + spacing: ScreenTools.defaultFontPixelWidth + anchors.top: parent.top + anchors.right: parent.right + anchors.margins: ScreenTools.defaultFontPixelWidth + + RoundButton { + id: addMissionItemsButton + buttonImage: "/qmlimages/MapAddMission.svg" + opacity: _addMissionItems ? 1.0 : 0.75 onClicked: { _addMissionItems = !_addMissionItems _showHomePositionManager = false } } - } - Image { - id: homePositionManagerButton - anchors.rightMargin: ScreenTools.defaultFontPixelHeight - anchors.right: centerMapButton.left - anchors.top: centerMapButton.top - width: ScreenTools.defaultFontPixelHeight * 3 - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true - source: "/qmlimages/MapHome.svg" - opacity: _showHomePositionManager ? 1.0 : 0.75 - MouseArea { - anchors.fill: parent + RoundButton { + id: homePositionManagerButton + buttonImage: "/qmlimages/MapHome.svg" + opacity: _showHomePositionManager ? 1.0 : 0.75 onClicked: { _showHomePositionManager = !_showHomePositionManager _addMissionItems = false } } - } - DropButton { - id: centerMapButton - anchors.rightMargin: ScreenTools.defaultFontPixelHeight - anchors.right: syncButton.left - anchors.top: syncButton.top - dropDirection: dropDown - buttonImage: "/qmlimages/MapCenter.svg" - viewportMargins: ScreenTools.defaultFontPixelWidth / 2 - exclusiveGroup: _dropButtonsExclusiveGroup - - dropDownComponent: Component { - Row { - spacing: ScreenTools.defaultFontPixelWidth - - QGCButton { - text: "Home" - - onClicked: { - centerMapButton.hideDropDown() - editorMap.center = QtPositioning.coordinate(_homePositionCoordinate.latitude, _homePositionCoordinate.longitude) - _showHomePositionManager = true + DropButton { + id: centerMapButton + dropDirection: dropDown + buttonImage: "/qmlimages/MapCenter.svg" + viewportMargins: ScreenTools.defaultFontPixelWidth / 2 + exclusiveGroup: _dropButtonsExclusiveGroup + + dropDownComponent: Component { + Row { + spacing: ScreenTools.defaultFontPixelWidth + + QGCButton { + text: "Home" + + onClicked: { + centerMapButton.hideDropDown() + editorMap.center = QtPositioning.coordinate(_homePositionCoordinate.latitude, _homePositionCoordinate.longitude) + _showHomePositionManager = true + } } - } - QGCButton { - text: "Vehicle" - enabled: activeVehicle && activeVehicle.latitude != 0 && activeVehicle.longitude != 0 + QGCButton { + text: "Vehicle" + enabled: activeVehicle && activeVehicle.latitude != 0 && activeVehicle.longitude != 0 - property var activeVehicle: multiVehicleManager.activeVehicle + property var activeVehicle: multiVehicleManager.activeVehicle - onClicked: { - centerMapButton.hideDropDown() - editorMap.latitude = activeVehicle.latitude - editorMap.longitude = activeVehicle.longitude + onClicked: { + centerMapButton.hideDropDown() + editorMap.latitude = activeVehicle.latitude + editorMap.longitude = activeVehicle.longitude + } } - } -/* + /* -This code will need to wait for Qml 5.5 support since Map.visibleRegion is only in Qt 5.5 + This code will need to wait for Qml 5.5 support since Map.visibleRegion is only in Qt 5.5 - QGCButton { - text: "All Items" + QGCButton { + text: "All Items" - onClicked: { - centerMapButton.hideDropDown() + onClicked: { + centerMapButton.hideDropDown() - // Begin with only the home position in the region - var region = QtPositioning.rectangle(QtPositioning.coordinate(_homePositionCoordinate.latitude, _homePositionCoordinate.longitude), - QtPositioning.coordinate(_homePositionCoordinate.latitude, _homePositionCoordinate.longitude)) + // Begin with only the home position in the region + var region = QtPositioning.rectangle(QtPositioning.coordinate(_homePositionCoordinate.latitude, _homePositionCoordinate.longitude), + QtPositioning.coordinate(_homePositionCoordinate.latitude, _homePositionCoordinate.longitude)) - // Now expand the region to include all mission items - for (var i=0; i<_missionItems.count; i++) { - var missionItem = _missionItems.get(i) + // Now expand the region to include all mission items + for (var i=0; i<_missionItems.count; i++) { + var missionItem = _missionItems.get(i) - region.topLeft.latitude = Math.max(missionItem.coordinate.latitude, region.topLeft.latitude) - region.topLeft.longitude = Math.min(missionItem.coordinate.longitude, region.topLeft.longitude) + region.topLeft.latitude = Math.max(missionItem.coordinate.latitude, region.topLeft.latitude) + region.topLeft.longitude = Math.min(missionItem.coordinate.longitude, region.topLeft.longitude) - region.topRight.latitude = Math.max(missionItem.coordinate.latitude, region.topRight.latitude) - region.topRight.longitude = Math.max(missionItem.coordinate.longitude, region.topRight.longitude) + region.topRight.latitude = Math.max(missionItem.coordinate.latitude, region.topRight.latitude) + region.topRight.longitude = Math.max(missionItem.coordinate.longitude, region.topRight.longitude) - region.bottomLeft.latitude = Math.min(missionItem.coordinate.latitude, region.bottomLeft.latitude) - region.bottomLeft.longitude = Math.min(missionItem.coordinate.longitude, region.bottomLeft.longitude) + region.bottomLeft.latitude = Math.min(missionItem.coordinate.latitude, region.bottomLeft.latitude) + region.bottomLeft.longitude = Math.min(missionItem.coordinate.longitude, region.bottomLeft.longitude) - region.bottomRight.latitude = Math.min(missionItem.coordinate.latitude, region.bottomRight.latitude) - region.bottomRight.longitude = Math.max(missionItem.coordinate.longitude, region.bottomRight.longitude) - } + region.bottomRight.latitude = Math.min(missionItem.coordinate.latitude, region.bottomRight.latitude) + region.bottomRight.longitude = Math.max(missionItem.coordinate.longitude, region.bottomRight.longitude) + } - editorMap.visibleRegion = region + editorMap.visibleRegion = region + } } + */ } -*/ } } - } - DropButton { - id: syncButton - anchors.rightMargin: ScreenTools.defaultFontPixelHeight - anchors.right: mapTypeButton.left - anchors.top: mapTypeButton.top - dropDirection: dropDown - buttonImage: "/qmlimages/MapSync.svg" - viewportMargins: ScreenTools.defaultFontPixelWidth / 2 - exclusiveGroup: _dropButtonsExclusiveGroup - - dropDownComponent: Component { - Row { - spacing: ScreenTools.defaultFontPixelWidth - - QGCButton { - text: "Load from vehicle" - enabled: _activeVehicle && !_activeVehicle.missionManager.inProgress - - onClicked: { - syncButton.hideDropDown() - controller.getMissionItems() + DropButton { + id: syncButton + dropDirection: dropDown + buttonImage: "/qmlimages/MapSync.svg" + viewportMargins: ScreenTools.defaultFontPixelWidth / 2 + exclusiveGroup: _dropButtonsExclusiveGroup + + dropDownComponent: Component { + Row { + spacing: ScreenTools.defaultFontPixelWidth + + QGCButton { + text: "Load from vehicle" + enabled: _activeVehicle && !_activeVehicle.missionManager.inProgress + + onClicked: { + syncButton.hideDropDown() + controller.getMissionItems() + } } - } - QGCButton { - text: "Save to vehicle" - enabled: _activeVehicle && !_activeVehicle.missionManager.inProgress + QGCButton { + text: "Save to vehicle" + enabled: _activeVehicle && !_activeVehicle.missionManager.inProgress - onClicked: { - syncButton.hideDropDown() - controller.setMissionItems() + onClicked: { + syncButton.hideDropDown() + controller.setMissionItems() + } } - } - QGCButton { - text: "Load from file..." + QGCButton { + text: "Load from file..." - onClicked: { - syncButton.hideDropDown() - controller.loadMissionFromFile() + onClicked: { + syncButton.hideDropDown() + controller.loadMissionFromFile() + } } - } - QGCButton { - text: "Save to file..." + QGCButton { + text: "Save to file..." - onClicked: { - syncButton.hideDropDown() - controller.saveMissionToFile() + onClicked: { + syncButton.hideDropDown() + controller.saveMissionToFile() + } } } } } - } - DropButton { - id: mapTypeButton - anchors.margins: ScreenTools.defaultFontPixelHeight - anchors.top: parent.top - anchors.right: parent.right - dropDirection: dropDown - buttonImage: "/qmlimages/MapType.svg" - viewportMargins: ScreenTools.defaultFontPixelWidth / 2 - exclusiveGroup: _dropButtonsExclusiveGroup + DropButton { + id: mapTypeButton + dropDirection: dropDown + buttonImage: "/qmlimages/MapType.svg" + viewportMargins: ScreenTools.defaultFontPixelWidth / 2 + exclusiveGroup: _dropButtonsExclusiveGroup - dropDownComponent: Component { - Row { - spacing: ScreenTools.defaultFontPixelWidth + dropDownComponent: Component { + Row { + spacing: ScreenTools.defaultFontPixelWidth - Repeater { - model: QGroundControl.flightMapSettings.mapTypes + Repeater { + model: QGroundControl.flightMapSettings.mapTypes - QGCButton { - checkable: true - checked: editorMap.mapType == text - text: modelData - exclusiveGroup: _mapTypeButtonsExclusiveGroup + QGCButton { + checkable: true + checked: editorMap.mapType == text + text: modelData + exclusiveGroup: _mapTypeButtonsExclusiveGroup - onClicked: { - editorMap.mapType = text - checked = true - mapTypeButton.hideDropDown() + onClicked: { + editorMap.mapType = text + checked = true + mapTypeButton.hideDropDown() + } } } } diff --git a/src/QmlControls/QGroundControl.Controls.qmldir b/src/QmlControls/QGroundControl.Controls.qmldir index 5d72b54cc..bd7b1db6e 100644 --- a/src/QmlControls/QGroundControl.Controls.qmldir +++ b/src/QmlControls/QGroundControl.Controls.qmldir @@ -14,6 +14,7 @@ QGCCanvas 1.0 QGCCanvas.qml SubMenuButton 1.0 SubMenuButton.qml IndicatorButton 1.0 IndicatorButton.qml DropButton 1.0 DropButton.qml +RoundButton 1.0 RoundButton.qml VehicleRotationCal 1.0 VehicleRotationCal.qml VehicleSummaryRow 1.0 VehicleSummaryRow.qml ViewWidget 1.0 ViewWidget.qml diff --git a/src/QmlControls/RoundButton.qml b/src/QmlControls/RoundButton.qml new file mode 100644 index 000000000..5da0bdc81 --- /dev/null +++ b/src/QmlControls/RoundButton.qml @@ -0,0 +1,35 @@ +import QtQuick 2.4 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.2 + +import QGroundControl.ScreenTools 1.0 + +Item { + id: _root + + signal clicked() + property alias buttonImage: button.source + property real radius: (ScreenTools.defaultFontPixelHeight * 3) / 2 + + width: radius * 2 + height: radius * 2 + + Rectangle { + anchors.fill: parent + radius: width / 2 + border.width: 2 + border.color: "white" + color: "transparent" + Image { + id: button + anchors.fill: parent + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + MouseArea { + anchors.fill: parent + onClicked: _root.clicked() + } + } + } +} -- 2.22.0