Commit f970a839 authored by dogmaphobic's avatar dogmaphobic

UI Tweaks

parent fb371f36
<RCC> <RCC>
<qresource prefix="/qmlimages"> <qresource prefix="/qmlimages">
<file alias="SafetyComponentTree.svg">src/AutoPilotPlugins/PX4/Images/SafetyComponentTree.svg</file> <file alias="AirframeComponentIcon.png">src/AutoPilotPlugins/PX4/Images/AirframeComponentIcon.png</file>
<file alias="SafetyComponentHome.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentHome.png</file>
<file alias="SafetyComponentArrowDown.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentArrowDown.png</file>
<file alias="SafetyComponentPlane.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentPlane.png</file>
<file alias="VehicleDown.png">src/AutoPilotPlugins/PX4/Images/VehicleDown.png</file>
<file alias="VehicleUpsideDown.png">src/AutoPilotPlugins/PX4/Images/VehicleUpsideDown.png</file>
<file alias="VehicleLeft.png">src/AutoPilotPlugins/PX4/Images/VehicleLeft.png</file>
<file alias="VehicleRight.png">src/AutoPilotPlugins/PX4/Images/VehicleRight.png</file>
<file alias="VehicleNoseDown.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDown.png</file>
<file alias="VehicleTailDown.png">src/AutoPilotPlugins/PX4/Images/VehicleTailDown.png</file>
<file alias="VehicleDownRotate.png">src/AutoPilotPlugins/PX4/Images/VehicleDownRotate.png</file>
<file alias="VehicleLeftRotate.png">src/AutoPilotPlugins/PX4/Images/VehicleLeftRotate.png</file>
<file alias="VehicleNoseDownRotate.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDownRotate.png</file>
<file alias="AirframeStandardPlane.png">src/AutoPilotPlugins/PX4/Images/AirframeStandardPlane.png</file>
<file alias="AirframeFlyingWing.png">src/AutoPilotPlugins/PX4/Images/AirframeFlyingWing.png</file> <file alias="AirframeFlyingWing.png">src/AutoPilotPlugins/PX4/Images/AirframeFlyingWing.png</file>
<file alias="AirframeQuadRotorX.png">src/AutoPilotPlugins/PX4/Images/AirframeQuadRotorX.png</file>
<file alias="AirframeQuadRotorPlus.png">src/AutoPilotPlugins/PX4/Images/AirframeQuadRotorPlus.png</file>
<file alias="AirframeOctoRotorX.png">src/AutoPilotPlugins/PX4/Images/AirframeOctoRotorX.png</file>
<file alias="AirframeOctoRotorPlus.png">src/AutoPilotPlugins/PX4/Images/AirframeOctoRotorPlus.png</file>
<file alias="AirframeHexaRotorX.png">src/AutoPilotPlugins/PX4/Images/AirframeHexaRotorX.png</file>
<file alias="AirframeHexaRotorPlus.png">src/AutoPilotPlugins/PX4/Images/AirframeHexaRotorPlus.png</file> <file alias="AirframeHexaRotorPlus.png">src/AutoPilotPlugins/PX4/Images/AirframeHexaRotorPlus.png</file>
<file alias="AirframeHexaRotorX.png">src/AutoPilotPlugins/PX4/Images/AirframeHexaRotorX.png</file>
<file alias="AirframeOctoRotorPlus.png">src/AutoPilotPlugins/PX4/Images/AirframeOctoRotorPlus.png</file>
<file alias="AirframeOctoRotorX.png">src/AutoPilotPlugins/PX4/Images/AirframeOctoRotorX.png</file>
<file alias="AirframeQuadRotorH.png">src/AutoPilotPlugins/PX4/Images/AirframeQuadRotorH.png</file> <file alias="AirframeQuadRotorH.png">src/AutoPilotPlugins/PX4/Images/AirframeQuadRotorH.png</file>
<file alias="AirframeQuadRotorPlus.png">src/AutoPilotPlugins/PX4/Images/AirframeQuadRotorPlus.png</file>
<file alias="AirframeQuadRotorX.png">src/AutoPilotPlugins/PX4/Images/AirframeQuadRotorX.png</file>
<file alias="AirframeSimulation.png">src/AutoPilotPlugins/PX4/Images/AirframeSimulation.png</file> <file alias="AirframeSimulation.png">src/AutoPilotPlugins/PX4/Images/AirframeSimulation.png</file>
<file alias="AirframeStandardPlane.png">src/AutoPilotPlugins/PX4/Images/AirframeStandardPlane.png</file>
<file alias="arrow-down.png">src/QmlControls/arrow-down.png</file> <file alias="arrow-down.png">src/QmlControls/arrow-down.png</file>
<file alias="subMenuButtonImage.png">resources/CogWheels.png</file>
<file alias="SensorsComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SensorsComponentIcon.png</file>
<file alias="RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file>
<file alias="FlightModesComponentIcon.png">src/AutoPilotPlugins/PX4/Images/FlightModesComponentIcon.png</file>
<file alias="AirframeComponentIcon.png">src/AutoPilotPlugins/PX4/Images/AirframeComponentIcon.png</file>
<file alias="SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file>
<file alias="PowerComponentIcon.png">src/AutoPilotPlugins/PX4/Images/PowerComponentIcon.png</file>
<file alias="FirmwareUpgradeIcon.png">src/VehicleSetup/FirmwareUpgradeIcon.png</file> <file alias="FirmwareUpgradeIcon.png">src/VehicleSetup/FirmwareUpgradeIcon.png</file>
<file alias="VehicleSummaryIcon.png">src/VehicleSetup/VehicleSummaryIcon.png</file> <file alias="FlightModesComponentIcon.png">src/AutoPilotPlugins/PX4/Images/FlightModesComponentIcon.png</file>
<file alias="PowerComponentBattery_01cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_01cell.svg</file> <file alias="PowerComponentBattery_01cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_01cell.svg</file>
<file alias="PowerComponentBattery_02cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_02cell.svg</file> <file alias="PowerComponentBattery_02cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_02cell.svg</file>
<file alias="PowerComponentBattery_03cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_03cell.svg</file> <file alias="PowerComponentBattery_03cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_03cell.svg</file>
<file alias="PowerComponentBattery_04cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_04cell.svg</file> <file alias="PowerComponentBattery_04cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_04cell.svg</file>
<file alias="PowerComponentBattery_05cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_05cell.svg</file> <file alias="PowerComponentBattery_05cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_05cell.svg</file>
<file alias="PowerComponentBattery_06cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_06cell.svg</file> <file alias="PowerComponentBattery_06cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_06cell.svg</file>
<file alias="PowerComponentIcon.png">src/AutoPilotPlugins/PX4/Images/PowerComponentIcon.png</file>
<file alias="RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file>
<file alias="ReturnToHomeAltitude.svg">src/AutoPilotPlugins/PX4/Images/ReturnToHomeAltitude.svg</file>
<file alias="SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file>
<file alias="SensorsComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SensorsComponentIcon.png</file>
<file alias="subMenuButtonImage.png">resources/CogWheels.png</file>
<file alias="VehicleDown.png">src/AutoPilotPlugins/PX4/Images/VehicleDown.png</file>
<file alias="VehicleDownRotate.png">src/AutoPilotPlugins/PX4/Images/VehicleDownRotate.png</file>
<file alias="VehicleLeft.png">src/AutoPilotPlugins/PX4/Images/VehicleLeft.png</file>
<file alias="VehicleLeftRotate.png">src/AutoPilotPlugins/PX4/Images/VehicleLeftRotate.png</file>
<file alias="VehicleNoseDown.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDown.png</file>
<file alias="VehicleNoseDownRotate.png">src/AutoPilotPlugins/PX4/Images/VehicleNoseDownRotate.png</file>
<file alias="VehicleRight.png">src/AutoPilotPlugins/PX4/Images/VehicleRight.png</file>
<file alias="VehicleSummaryIcon.png">src/VehicleSetup/VehicleSummaryIcon.png</file>
<file alias="VehicleTailDown.png">src/AutoPilotPlugins/PX4/Images/VehicleTailDown.png</file>
<file alias="VehicleUpsideDown.png">src/AutoPilotPlugins/PX4/Images/VehicleUpsideDown.png</file>
<file alias="attitudeDial.svg">src/FlightMap/Images/attitudeDial.svg</file> <file alias="attitudeDial.svg">src/FlightMap/Images/attitudeDial.svg</file>
<file alias="attitudeInstrument.svg">src/FlightMap/Images/attitudeInstrument.svg</file> <file alias="attitudeInstrument.svg">src/FlightMap/Images/attitudeInstrument.svg</file>
......
...@@ -39,6 +39,28 @@ QGCView { ...@@ -39,6 +39,28 @@ QGCView {
QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled } QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled }
property real _minW: ScreenTools.defaultFontPixelWidth * 30
property real _boxWidth: _minW
property real _boxSpace: ScreenTools.defaultFontPixelWidth
function computeDimensions() {
var sw = 0
var rw = 0
var idx = Math.floor(scroll.width / (_minW + ScreenTools.defaultFontPixelWidth))
if(idx < 1) {
_boxWidth = scroll.width
_boxSpace = 0
} else {
_boxSpace = 0
if(idx > 1) {
_boxSpace = ScreenTools.defaultFontPixelWidth
sw = _boxSpace * (idx - 1)
}
rw = scroll.width - sw
_boxWidth = rw / idx
}
}
AirframeComponentController { AirframeComponentController {
id: controller id: controller
factPanel: panel factPanel: panel
...@@ -127,16 +149,25 @@ QGCView { ...@@ -127,16 +149,25 @@ QGCView {
width: 10 width: 10
} }
ScrollView { Flickable {
id: scroll id: scroll
anchors.top: lastSpacer.bottom anchors.top: lastSpacer.bottom
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
width: parent.width width: parent.width
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff clip: true
contentHeight: flowView.height
contentWidth: parent.width
boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.VerticalFlick
onWidthChanged: {
computeDimensions()
}
Flow { Flow {
id: flowView
width: scroll.width width: scroll.width
spacing: ScreenTools.defaultFontPixelWidth spacing: _boxSpace
ExclusiveGroup { ExclusiveGroup {
id: airframeTypeExclusive id: airframeTypeExclusive
...@@ -148,8 +179,8 @@ QGCView { ...@@ -148,8 +179,8 @@ QGCView {
// Outer summary item rectangle // Outer summary item rectangle
Rectangle { Rectangle {
id: airframeBackground id: airframeBackground
width: ScreenTools.defaultFontPixelWidth * 30 width: _boxWidth
height: width * .75 height: ScreenTools.defaultFontPixelWidth * 22.5
color: (modelData.name != controller.currentAirframeType) ? qgcPal.windowShade : qgcPal.buttonHighlight color: (modelData.name != controller.currentAirframeType) ? qgcPal.windowShade : qgcPal.buttonHighlight
readonly property real titleHeight: ScreenTools.defaultFontPixelHeight * 1.75 readonly property real titleHeight: ScreenTools.defaultFontPixelHeight * 1.75
......
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 144 72" style="enable-background:new 0 0 144 72;" xml:space="preserve">
<style type="text/css">
.st0{opacity:0.5;}
.st1{fill:#FFFFFF;}
.st2{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;}
.st3{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;stroke-dasharray:3.0478,3.0478;}
.st4{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;stroke-dasharray:3.6243,3.6243;}
.st5{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;stroke-dasharray:3.0018,3.0018;}
.st6{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;stroke-dasharray:2.9665,2.9665;}
</style>
<g class="st0">
<title>Layer 1</title>
<g id="layer1_1_">
<g id="g4623_1_">
<path id="rect2192_1_" class="st1" d="M77.2,59.3h3.4v7.1c-1,0.5-2.2,0.6-3.4,0V59.3z"/>
<path id="path1307_1_" class="st1" d="M90.9,60.2c-7.6-1.6-15.9,1.7-24,0c5.5-5.1,7.1-15.3,12-20.8
C82.8,44.7,85.2,55.1,90.9,60.2z"/>
<path id="path2183_1_" class="st1" d="M88.5,46.8c-6.1-1.2-12.7,1.4-19.2,0c4.4-4.1,5.7-12.3,9.6-16.6C82,34.5,84,42.8,88.5,46.8
z"/>
<path id="path2185_1_" class="st1" d="M86.3,36.2c-4.7-1-9.8,1-14.8,0c3.4-3.1,4.4-9.5,7.4-12.8C81.3,26.7,82.8,33.1,86.3,36.2z"
/>
</g>
</g>
</g>
<path class="st1" d="M143,37.1c0.1,0.4,0,0.8-0.3,1.1l-6.4,6.1l-1.1,7.7c-0.1,0.4-0.3,0.7-0.7,0.8s-0.7,0.1-1-0.1l-3.3-2.5l-7.9,7.6
c-0.1,0.1-0.2,0.2-0.3,0.2c-0.2,0.1-0.3,0.1-0.5,0.1c-0.3-0.1-0.6-0.2-0.8-0.5l-16.6-27.2c-0.2-0.4-0.2-0.8,0-1.1
c0.1-0.2,0.3-0.3,0.5-0.4c0.2-0.1,0.4-0.1,0.6,0l37,7.7C142.6,36.4,142.9,36.7,143,37.1L143,37.1z M111.3,32L134.8,43l0.1-0.1
c0-0.1,0.1-0.1,0.1-0.2l4.9-4.7L111.3,32z M108,31.6l25.5,18.1l0.8-5.8L108,31.6z M108.6,33.5l13.3,21.7l6.9-6.7
c0.1-0.1,0.3-0.2,0.6-0.4L108.6,33.5z"/>
<g>
<polygon class="st1" points="32,56.6 16.7,38.7 1.4,56.6 5.3,56.6 5.3,69.3 12.9,69.3 12.9,59.1 20.6,59.1 20.6,69.3 28.2,69.3
28.2,56.6 "/>
</g>
<g>
<title>Layer 1</title>
<g id="layer1">
<g id="g4623">
<path id="rect2192" class="st1" d="M69,61.6h3.9v8.3c-1.1,0.5-2.5,0.7-3.9,0V61.6z"/>
<path id="path1307" class="st1" d="M84.9,62.6c-8.9-1.8-18.4,2-27.8,0c6.4-5.9,8.3-17.8,13.9-24.1C75.5,44.7,78.4,56.7,84.9,62.6
z"/>
<path id="path2183" class="st1" d="M82.1,47.1c-7.1-1.4-14.7,1.6-22.2,0C65,42.4,66.5,32.9,71,27.9
C74.6,32.8,76.9,42.4,82.1,47.1z"/>
<path id="path2185" class="st1" d="M79.5,34.9c-5.5-1.1-11.3,1.2-17.1,0c4-3.6,5.1-11,8.6-14.8C73.8,23.8,75.5,31.2,79.5,34.9z"
/>
</g>
</g>
</g>
<g>
<g>
<line class="st2" x1="77.3" y1="5.4" x2="78.8" y2="5.4"/>
<line class="st3" x1="81.8" y1="5.4" x2="123" y2="5.4"/>
<polyline class="st2" points="124.5,5.4 126,5.4 126,6.9 "/>
<line class="st4" x1="126" y1="10.5" x2="126" y2="15.9"/>
<line class="st2" x1="126" y1="17.8" x2="126" y2="19.3"/>
<g>
<polygon class="st1" points="72,5.4 79.5,8.4 77.7,5.4 79.5,2.3 "/>
</g>
<g>
<g>
<polygon class="st1" points="123.3,21.1 123.5,21 125.6,18.8 125.6,25.3 123.3,27.6 "/>
<path class="st1" d="M128.6,27.6l-2.2-2.3v-6.5c0.6,0.8,1.4,1.6,2.2,2.3V27.6z"/>
</g>
</g>
</g>
</g>
<g>
<g>
<line class="st2" x1="16.7" y1="29.4" x2="16.7" y2="27.9"/>
<line class="st5" x1="16.7" y1="24.9" x2="16.7" y2="8.4"/>
<polyline class="st2" points="16.7,6.9 16.7,5.4 18.2,5.4 "/>
<line class="st6" x1="21.2" y1="5.4" x2="67.2" y2="5.4"/>
<line class="st2" x1="68.7" y1="5.4" x2="70.2" y2="5.4"/>
<g>
<polygon class="st1" points="16.7,34.7 19.8,27.2 16.7,29 13.7,27.2 "/>
</g>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="356 -168 306 480" enable-background="new 356 -168 306 480" xml:space="preserve">
<g>
<title>Layer 1</title>
<g id="layer1">
<g id="g4623">
<path id="rect2192" fill="#FFFFFF" d="M484.7,225.1h36.7v77.8c-10.8,5.1-23.7,6.6-36.7,0V225.1z"/>
<path id="path1307" fill="#FFFFFF" d="M633.7,234.3c-83.3-16.9-172.7,18.5-261.3,0C432.8,178.9,450.2,67.3,503,8
C545.8,65.7,572.4,178.9,633.7,234.3z"/>
<path id="path2183" fill="#FFFFFF" d="M607.5,89.1c-66.6-13.5-138.1,14.8-208.9,0C446.9,44.8,460.8-44.4,503-91.8
C537.2-45.7,558.5,44.8,607.5,89.1z"/>
<path id="path2185" fill="#FFFFFF" d="M583.6-26.4c-51.3-10.4-106.5,11.4-161.1,0c37.3-34.2,48-103,80.6-139.5
C529.4-130.3,545.8-60.5,583.6-26.4z"/>
</g>
</g>
</g>
</svg>
...@@ -106,13 +106,15 @@ QGCView { ...@@ -106,13 +106,15 @@ QGCView {
Flickable { Flickable {
anchors.fill: parent anchors.fill: parent
flickableDirection: Flickable.VerticalFlick clip: true
contentHeight: innerColumn.height contentHeight: innerColumn.height
contentWidth: panel.width
boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.VerticalFlick
Column { Column {
id: innerColumn id: innerColumn
anchors.left: parent.left width: panel.width
anchors.right: parent.right
spacing: ScreenTools.defaultFontPixelHeight spacing: ScreenTools.defaultFontPixelHeight
QGCLabel { QGCLabel {
...@@ -246,6 +248,7 @@ QGCView { ...@@ -246,6 +248,7 @@ QGCView {
QGCButton { QGCButton {
text: "Calibrate" text: "Calibrate"
width: ScreenTools.defaultFontPixelWidth * 20
onClicked: controller.calibrateEsc() onClicked: controller.calibrateEsc()
} }
} }
...@@ -279,11 +282,13 @@ QGCView { ...@@ -279,11 +282,13 @@ QGCView {
QGCButton { QGCButton {
text: "Start Configuration" text: "Start Configuration"
width: ScreenTools.defaultFontPixelWidth * 20
onClicked: controller.busConfigureActuators() onClicked: controller.busConfigureActuators()
} }
QGCButton { QGCButton {
text: "End Configuration" text: "End Configuration"
width: ScreenTools.defaultFontPixelWidth * 20
onClicked: controller.StopBusConfigureActuators() onClicked: controller.StopBusConfigureActuators()
} }
} }
......
This diff is collapsed.
...@@ -62,7 +62,7 @@ QGCView { ...@@ -62,7 +62,7 @@ QGCView {
id: editorDialogComponent id: editorDialogComponent
ParameterEditorDialog { fact: __editorDialogFact } ParameterEditorDialog { fact: __editorDialogFact }
} // Component - Editor Dialog }
Component { Component {
id: searchDialogComponent id: searchDialogComponent
...@@ -207,14 +207,17 @@ QGCView { ...@@ -207,14 +207,17 @@ QGCView {
id: groupedViewComponent id: groupedViewComponent
Item { Item {
ScrollView { Flickable {
id : groupScroll id : groupScroll
width: defaultTextWidth * 25 width: defaultTextWidth * 25
height: parent.height height: parent.height
clip: true
Component.onCompleted: flickableItem.flickableDirection = Flickable.VerticalFlick contentHeight: groupedViewComponentColumn.height
contentWidth: groupedViewComponentColumn.width
boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.VerticalFlick
Column { Column {
id: groupedViewComponentColumn
Repeater { Repeater {
model: controller.componentIds model: controller.componentIds
...@@ -261,24 +264,27 @@ QGCView { ...@@ -261,24 +264,27 @@ QGCView {
} // Column - Component } // Column - Component
} // Repeater - Components } // Repeater - Components
} // Column - Component } // Column - Component
} // ScrollView - Groups } // Flickable - Groups
ScrollView { Flickable {
id: factScrollView id: factScrollView
anchors.left: groupScroll.right anchors.left: groupScroll.right
anchors.right: parent.right anchors.right: parent.right
height: parent.height height: parent.height
contentHeight: factRowsLoader.height
contentWidth: panel.width * 2 //-- TODO: Find how to get actual resulting width. "factRowsLoader.sourceComponent.width" doesn't work.
boundsBehavior: Flickable.StopAtBounds
clip: true
Loader { Loader {
id: factRowsLoader id: factRowsLoader
width: factScrollView.width
sourceComponent: factRowsComponent sourceComponent: factRowsComponent
property int componentId: controller.componentIds[0] property int componentId: controller.componentIds[0]
property string group: controller.getGroupsForComponent(controller.componentIds[0])[0] property string group: controller.getGroupsForComponent(controller.componentIds[0])[0]
property var parameterNames: controller.getParametersForGroup(componentId, group) property var parameterNames: controller.getParametersForGroup(componentId, group)
} }
} // ScrollView - Facts } // Flickable - Facts
} // Item } // Item
} // Component - groupedViewComponent } // Component - groupedViewComponent
...@@ -291,6 +297,8 @@ QGCView { ...@@ -291,6 +297,8 @@ QGCView {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
height: parent.height height: parent.height
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff
Loader { Loader {
id: factRowsLoader id: factRowsLoader
......
...@@ -8,20 +8,20 @@ import QGroundControl.Palette 1.0 ...@@ -8,20 +8,20 @@ import QGroundControl.Palette 1.0
Item { Item {
property color color: "white" // Image color property color color: "white" // Image color
property alias asynchronous: image.asynchronous property alias asynchronous: image.asynchronous
property alias cache: image.cache property alias cache: image.cache
property alias fillMode: image.fillMode property alias fillMode: image.fillMode
property alias horizontalAlignment: image.horizontalAlignment property alias horizontalAlignment: image.horizontalAlignment
property alias mirror: image.mirror property alias mirror: image.mirror
property alias paintedHeight: image.paintedHeight property alias paintedHeight: image.paintedHeight
property alias paintedWidth: image.paintedWidth property alias paintedWidth: image.paintedWidth
property alias progress: image.progress property alias progress: image.progress
property alias smooth: image.smooth property alias smooth: image.smooth
property alias mipmap: image.mipmap property alias mipmap: image.mipmap
property alias source: image.source property alias source: image.source
property alias sourceSize: image.sourceSize property alias sourceSize: image.sourceSize
property alias status: image.status property alias status: image.status
property alias verticalAlignment: image.verticalAlignment property alias verticalAlignment: image.verticalAlignment
width: image.width width: image.width
height: image.height height: image.height
...@@ -32,6 +32,7 @@ Item { ...@@ -32,6 +32,7 @@ Item {
mipmap: true mipmap: true
antialiasing: true antialiasing: true
visible: false visible: false
fillMode: Image.PreserveAspectFit
anchors.fill: parent anchors.fill: parent
} }
......
...@@ -19,6 +19,7 @@ Item { ...@@ -19,6 +19,7 @@ Item {
readonly property real _defaultFontHeight: 16 readonly property real _defaultFontHeight: 16
readonly property real fontHRatio: isTinyScreen ? (_textMeasure.contentHeight / _defaultFontHeight) * 0.75 : (_textMeasure.contentHeight / _defaultFontHeight) readonly property real fontHRatio: isTinyScreen ? (_textMeasure.contentHeight / _defaultFontHeight) * 0.75 : (_textMeasure.contentHeight / _defaultFontHeight)
readonly property real realFontHeight: _textMeasure.contentHeight readonly property real realFontHeight: _textMeasure.contentHeight
readonly property real realFontWidth : _textMeasure.contentWidth
// On OSX ElCapitan with Qt 5.4.0 any font pixel size above 19 shows garbage test. No idea why at this point. // On OSX ElCapitan with Qt 5.4.0 any font pixel size above 19 shows garbage test. No idea why at this point.
// Will remove Math.min when problem is figure out. // Will remove Math.min when problem is figure out.
......
...@@ -45,13 +45,11 @@ Button { ...@@ -45,13 +45,11 @@ Button {
anchors.rightMargin: ScreenTools.defaultFontPixelWidth / 3 anchors.rightMargin: ScreenTools.defaultFontPixelWidth / 3
anchors.right: parent.right anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
width: radius * 2 width: ScreenTools.defaultFontPixelWidth
height: width height: width
radius: indicatorRadius radius: width / 2
color: control.setupComplete ? "#00d932" : "red" color: control.setupComplete ? "#00d932" : "red"
visible: control.setupIndicator visible: control.setupIndicator
readonly property real indicatorRadius: (ScreenTools.defaultFontPixelHeight * .75) / 2
} }
} }
......
...@@ -36,6 +36,7 @@ import QGroundControl.ScreenTools 1.0 ...@@ -36,6 +36,7 @@ import QGroundControl.ScreenTools 1.0
import QGroundControl.MultiVehicleManager 1.0 import QGroundControl.MultiVehicleManager 1.0
Rectangle { Rectangle {
//color: qgcPal.windowShadeDark
color: qgcPal.window color: qgcPal.window
z: QGroundControl.zOrderTopMost z: QGroundControl.zOrderTopMost
...@@ -203,133 +204,115 @@ Rectangle { ...@@ -203,133 +204,115 @@ Rectangle {
} }
Rectangle { Rectangle {
//-- Fill entire screen, including behind tool bar //-- Limit height to available height (below tool bar)
anchors.fill: parent anchors.topMargin: _margin
color: qgcPal.windowShadeDark height: mainWindow.avaiableHeight
anchors.bottom: parent.bottom
/* I think this takes too much space and is not exactly necessary anchors.left: parent.left
QGCLabel { anchors.right: parent.right
id: title color: qgcPal.window
anchors.topMargin: _margin
anchors.top: parent.top Flickable {
anchors.left: parent.left id: buttonScroll
anchors.right: parent.right width: _buttonWidth
horizontalAlignment: Text.AlignHCenter anchors.topMargin: _defaultTextHeight / 2
font.pixelSize: ScreenTools.largeFontPixelSize anchors.top: parent.top
text: "Vehicle Setup"
}
*/
Rectangle {
//-- Limit height to available height (below tool bar)
anchors.topMargin: _margin
//anchors.top: title.bottom
height: mainWindow.avaiableHeight
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.left: parent.left clip: true
anchors.right: parent.right contentHeight: buttonColumn.height
color: qgcPal.window contentWidth: parent.width
boundsBehavior: Flickable.StopAtBounds
ScrollView { flickableDirection: Flickable.VerticalFlick
id: buttonScroll
width: _buttonWidth Column {
anchors.topMargin: _defaultTextHeight / 2 id: buttonColumn
anchors.top: parent.top width: _buttonWidth
anchors.bottom: parent.bottom spacing: _defaultTextHeight / 2
frameVisible: false
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff SubMenuButton {
verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff id: summaryButton
width: _buttonWidth
Column { imageResource: "/qmlimages/VehicleSummaryIcon.png"
id: buttonColumn setupIndicator: false
width: _buttonWidth checked: true
spacing: _defaultTextHeight / 2 exclusiveGroup: setupButtonGroup
text: "SUMMARY"
SubMenuButton {
id: summaryButton onClicked: showSummaryPanel()
width: _buttonWidth }
imageResource: "/qmlimages/VehicleSummaryIcon.png"
setupIndicator: false SubMenuButton {
checked: true id: firmwareButton
exclusiveGroup: setupButtonGroup width: _buttonWidth
text: "SUMMARY" imageResource: "/qmlimages/FirmwareUpgradeIcon.png"
setupIndicator: false
onClicked: showSummaryPanel() exclusiveGroup: setupButtonGroup
} visible: !ScreenTools.isMobile
text: "FIRMWARE"
SubMenuButton {
id: firmwareButton onClicked: showFirmwarePanel()
width: _buttonWidth }
imageResource: "/qmlimages/FirmwareUpgradeIcon.png"
setupIndicator: false SubMenuButton {
exclusiveGroup: setupButtonGroup id: joystickButton
visible: !ScreenTools.isMobile width: _buttonWidth
text: "FIRMWARE" setupIndicator: true
setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false
onClicked: showFirmwarePanel() exclusiveGroup: setupButtonGroup
} visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length != 0
text: "JOYSTICK"
onClicked: showJoystickPanel()
}
Repeater {
model: _fullParameterVehicleAvailable ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0
SubMenuButton { SubMenuButton {
id: joystickButton
width: _buttonWidth width: _buttonWidth
setupIndicator: true imageResource: modelData.iconResource
setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false setupIndicator: modelData.requiresSetup
setupComplete: modelData.setupComplete
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length != 0 text: modelData.name.toUpperCase()
text: "JOYSTICK"
onClicked: showJoystickPanel() onClicked: showVehicleComponentPanel(modelData)
} }
}
Repeater { SubMenuButton {
model: _fullParameterVehicleAvailable ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0 width: _buttonWidth
setupIndicator: false
SubMenuButton { exclusiveGroup: setupButtonGroup
width: _buttonWidth visible: multiVehicleManager.parameterReadyVehicleAvailable
imageResource: modelData.iconResource text: "PARAMETERS"
setupIndicator: modelData.requiresSetup
setupComplete: modelData.setupComplete
exclusiveGroup: setupButtonGroup
text: modelData.name.toUpperCase()
onClicked: showVehicleComponentPanel(modelData) onClicked: showParametersPanel()
} }
}
SubMenuButton {
width: _buttonWidth
setupIndicator: false
exclusiveGroup: setupButtonGroup
visible: multiVehicleManager.parameterReadyVehicleAvailable
text: "PARAMETERS"
onClicked: showParametersPanel()
}
SubMenuButton { SubMenuButton {
width: _buttonWidth width: _buttonWidth
setupIndicator: false setupIndicator: false
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: ScreenTools.isDebug visible: ScreenTools.isDebug
text: "DEBUG" text: "DEBUG"
onClicked: showDebugPanel() onClicked: showDebugPanel()
} }
} // Column
} // ScrollView
Loader {
id: panelLoader
anchors.topMargin: _margin
anchors.bottomMargin: _margin
anchors.leftMargin: _defaultTextWidth
anchors.rightMargin: _defaultTextWidth
anchors.left: buttonScroll.right
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
} }
} }
Loader {
id: panelLoader
anchors.topMargin: _margin
anchors.bottomMargin: _margin
anchors.leftMargin: _defaultTextWidth
anchors.rightMargin: _defaultTextWidth
anchors.left: buttonScroll.right
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
}
} }
} }
...@@ -32,81 +32,126 @@ import QGroundControl.MultiVehicleManager 1.0 ...@@ -32,81 +32,126 @@ import QGroundControl.MultiVehicleManager 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
Rectangle { Rectangle {
color: qgcPal.window id: _summaryRoot
anchors.fill: parent
color: qgcPal.window
property real _minSummaryW: ScreenTools.defaultFontPixelWidth * 30
property real _summaryBoxWidth: _minSummaryW
property real _summaryBoxSpace: ScreenTools.defaultFontPixelWidth
function computeSummaryBoxSize() {
var sw = 0
var rw = 0
var idx = Math.floor(_summaryRoot.width / (_minSummaryW + ScreenTools.defaultFontPixelWidth))
if(idx < 1) {
_summaryBoxWidth = _summaryRoot.width
_summaryBoxSpace = 0
} else {
_summaryBoxSpace = 0
if(idx > 1) {
_summaryBoxSpace = ScreenTools.defaultFontPixelWidth
sw = _summaryBoxSpace * (idx - 1)
}
rw = _summaryRoot.width - sw
_summaryBoxWidth = rw / idx
}
}
function capitalizeWords(sentence) {
return sentence.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
}
QGCPalette { QGCPalette {
id: qgcPal id: qgcPal
colorGroupEnabled: enabled colorGroupEnabled: enabled
} }
Column { Component.onCompleted: {
anchors.fill: parent computeSummaryBoxSize()
spacing: ScreenTools.defaultFontPixelHeight }
QGCLabel {
width: parent.width
wrapMode: Text.WordWrap
color: setupComplete ? qgcPal.text : qgcPal.warningText
font.pixelSize: ScreenTools.mediumFontPixelSize
text: setupComplete ?
"Below you will find a summary of the settings for your vehicle. To the left are the setup menus for each component." :
"WARNING: Your vehicle requires setup prior to flight. Please resolve the items marked in red using the menu on the left."
property bool setupComplete: multiVehicleManager.activeVehicle.autopilot.setupComplete
}
Flow {
width: parent.width
spacing: ScreenTools.defaultFontPixelWidth
Repeater { onWidthChanged: {
model: multiVehicleManager.activeVehicle.autopilot.vehicleComponents computeSummaryBoxSize()
}
Flickable {
clip: true
anchors.fill: parent
contentHeight: summaryColumn.height
contentWidth: _summaryRoot.width
flickableDirection: Flickable.VerticalFlick
boundsBehavior: Flickable.StopAtBounds
Column {
id: summaryColumn
width: _summaryRoot.width
spacing: ScreenTools.defaultFontPixelHeight
QGCLabel {
width: parent.width
wrapMode: Text.WordWrap
color: setupComplete ? qgcPal.text : qgcPal.warningText
font.pixelSize: ScreenTools.mediumFontPixelSize
text: setupComplete ?
"Below you will find a summary of the settings for your vehicle. To the left are the setup menus for each component." :
"WARNING: Your vehicle requires setup prior to flight. Please resolve the items marked in red using the menu on the left."
property bool setupComplete: multiVehicleManager.activeVehicle.autopilot.setupComplete
}
// Outer summary item rectangle Flow {
Rectangle { id: _flowCtl
width: ScreenTools.defaultFontPixelWidth * 28 width: _summaryRoot.width
height: ScreenTools.defaultFontPixelHeight * 13 spacing: _summaryBoxSpace
color: qgcPal.window
readonly property real titleHeight: ScreenTools.defaultFontPixelHeight * 2 Repeater {
model: multiVehicleManager.activeVehicle.autopilot.vehicleComponents
// Title bar // Outer summary item rectangle
Rectangle { Rectangle {
id: titleBar width: _summaryBoxWidth
width: parent.width height: ScreenTools.defaultFontPixelHeight * 13
height: titleHeight color: qgcPal.window
color: qgcPal.windowShade
readonly property real titleHeight: ScreenTools.defaultFontPixelHeight * 2
// Title text
QGCLabel {
anchors.fill: parent
verticalAlignment: TextEdit.AlignVCenter
horizontalAlignment: TextEdit.AlignHCenter
text: modelData.name.toUpperCase()
}
// Setup indicator // Title bar
Rectangle { Rectangle {
anchors.rightMargin: ScreenTools.defaultFontPixelWidth / 3 id: titleBar
anchors.right: parent.right width: parent.width
anchors.verticalCenter: parent.verticalCenter height: titleHeight
width: 10//radius * 2 color: qgcPal.windowShade
height: 10//height
radius: (ScreenTools.defaultFontPixelHeight * .75) * 2 // Title text
color: modelData.setupComplete ? "#00d932" : "red" QGCLabel {
visible: modelData.requiresSetup anchors.fill: parent
verticalAlignment: TextEdit.AlignVCenter
horizontalAlignment: TextEdit.AlignHCenter
text: capitalizeWords(modelData.name)
}
// Setup indicator
Rectangle {
anchors.rightMargin: ScreenTools.defaultFontPixelWidth / 3
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
width: ScreenTools.defaultFontPixelWidth
height: width
radius: width / 2
color: modelData.setupComplete ? "#00d932" : "red"
visible: modelData.requiresSetup
}
} }
}
// Summary Qml
Rectangle {
anchors.top: titleBar.bottom
width: parent.width
Loader { // Summary Qml
anchors.fill: parent Rectangle {
source: modelData.summaryQmlSource anchors.top: titleBar.bottom
width: parent.width
Loader {
anchors.fill: parent
source: modelData.summaryQmlSource
}
} }
} }
} }
......
...@@ -98,6 +98,7 @@ Item { ...@@ -98,6 +98,7 @@ Item {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.top: parent.top anchors.top: parent.top
mainWindow: mainWindow
isBackgroundDark: flightView.isBackgroundDark isBackgroundDark: flightView.isBackgroundDark
z: QGroundControl.zOrderTopMost z: QGroundControl.zOrderTopMost
} }
...@@ -118,11 +119,9 @@ Item { ...@@ -118,11 +119,9 @@ Item {
Loader { Loader {
id: setupViewLoader id: setupViewLoader
anchors.bottom: parent.bottom anchors.fill: parent
anchors.right: parent.right
anchors.left: parent.left
height: mainWindow.avaiableHeight
visible: false visible: false
property var tabletPosition: mainWindow.tabletPosition property var tabletPosition: mainWindow.tabletPosition
} }
} }
...@@ -45,6 +45,7 @@ Rectangle { ...@@ -45,6 +45,7 @@ Rectangle {
QGCPalette { id: qgcPal; colorGroupEnabled: true } QGCPalette { id: qgcPal; colorGroupEnabled: true }
property var activeVehicle: multiVehicleManager.activeVehicle property var activeVehicle: multiVehicleManager.activeVehicle
property var mainWindow: null
property bool isMessageImportant: activeVehicle ? !activeVehicle.messageTypeNormal && !activeVehicle.messageTypeNone : false property bool isMessageImportant: activeVehicle ? !activeVehicle.messageTypeNormal && !activeVehicle.messageTypeNone : false
property bool isBackgroundDark: true property bool isBackgroundDark: true
...@@ -395,22 +396,27 @@ Rectangle { ...@@ -395,22 +396,27 @@ Rectangle {
height: ScreenTools.defaultFontPixelHeight * ScreenTools.fontHRatio * 6 height: ScreenTools.defaultFontPixelHeight * ScreenTools.fontHRatio * 6
color: Qt.rgba(0,0,0,0.65) color: Qt.rgba(0,0,0,0.65)
visible: false visible: false
QGCLabel { ScrollView {
id: toolBarMessage
width: toolBarMessageArea.width - toolBarMessageCloseButton.width width: toolBarMessageArea.width - toolBarMessageCloseButton.width
wrapMode: Text.WordWrap
color: qgcPal.warningText
lineHeightMode: Text.ProportionalHeight
lineHeight: 1.25
anchors.left: parent.left
anchors.top: parent.top anchors.top: parent.top
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.margins: tbSpacing frameVisible: false
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff
QGCLabel {
id: toolBarMessage
width: toolBarMessageArea.width - toolBarMessageCloseButton.width
wrapMode: Text.WordWrap
color: qgcPal.warningText
lineHeightMode: Text.ProportionalHeight
lineHeight: 1.15
anchors.margins: tbSpacing
}
} }
QGCButton { QGCButton {
id: toolBarMessageCloseButton id: toolBarMessageCloseButton
primary: true primary: true
text: "Close Message" text: "Close"
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.margins: tbSpacing anchors.margins: tbSpacing
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment