From f68b5622306544b993d90a8742b26eb9cc2df061 Mon Sep 17 00:00:00 2001 From: dogmaphobic <mavlink@grubba.com> Date: Mon, 25 Apr 2016 00:06:59 -0400 Subject: [PATCH] All done but low battery parameter. --- qgcresources.qrc | 3 + src/AutoPilotPlugins/PX4/Images/GeoFence.svg | 48 +- src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg | 24 + src/AutoPilotPlugins/PX4/Images/LowBattery.svg | 26 +- .../PX4/Images/LowBatteryLight.svg | 19 + src/AutoPilotPlugins/PX4/Images/RCLoss.svg | 28 +- src/AutoPilotPlugins/PX4/Images/RCLossLight.svg | 82 +++ src/AutoPilotPlugins/PX4/SafetyComponent.qml | 725 +++++++++------------ 8 files changed, 495 insertions(+), 460 deletions(-) create mode 100644 src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg create mode 100644 src/AutoPilotPlugins/PX4/Images/LowBatteryLight.svg create mode 100644 src/AutoPilotPlugins/PX4/Images/RCLossLight.svg diff --git a/qgcresources.qrc b/qgcresources.qrc index f0f05f1..59e798b 100644 --- a/qgcresources.qrc +++ b/qgcresources.qrc @@ -50,9 +50,11 @@ <file alias="FlightModesComponentIcon.png">src/AutoPilotPlugins/PX4/Images/FlightModesComponentIcon.png</file> <file alias="CameraComponentIcon.png">src/AutoPilotPlugins/PX4/Images/CameraComponentIcon.png</file> <file alias="GeoFence.svg">src/AutoPilotPlugins/PX4/Images/GeoFence.svg</file> + <file alias="GeoFenceLight.svg">src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg</file> <file alias="LandMode.svg">src/AutoPilotPlugins/PX4/Images/LandMode.svg</file> <file alias="LandModeCopter.svg">src/AutoPilotPlugins/PX4/Images/LandModeCopter.svg</file> <file alias="LowBattery.svg">src/AutoPilotPlugins/PX4/Images/LowBattery.svg</file> + <file alias="LowBatteryLight.svg">src/AutoPilotPlugins/PX4/Images/LowBatteryLight.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_03cell.svg">src/AutoPilotPlugins/PX4/Images/PowerComponentBattery_03cell.svg</file> @@ -62,6 +64,7 @@ <file alias="PowerComponentIcon.png">src/AutoPilotPlugins/PX4/Images/PowerComponentIcon.png</file> <file alias="RadioComponentIcon.png">src/AutoPilotPlugins/PX4/Images/RadioComponentIcon.png</file> <file alias="RCLoss.svg">src/AutoPilotPlugins/PX4/Images/RCLoss.svg</file> + <file alias="RCLossLight.svg">src/AutoPilotPlugins/PX4/Images/RCLossLight.svg</file> <file alias="ReturnToHomeAltitude.svg">src/AutoPilotPlugins/PX4/Images/ReturnToHomeAltitude.svg</file> <file alias="ReturnToHomeAltitudeCopter.svg">src/AutoPilotPlugins/PX4/Images/ReturnToHomeAltitudeCopter.svg</file> <file alias="SafetyComponentIcon.png">src/AutoPilotPlugins/PX4/Images/SafetyComponentIcon.png</file> diff --git a/src/AutoPilotPlugins/PX4/Images/GeoFence.svg b/src/AutoPilotPlugins/PX4/Images/GeoFence.svg index 6247fbc..331053c 100644 --- a/src/AutoPilotPlugins/PX4/Images/GeoFence.svg +++ b/src/AutoPilotPlugins/PX4/Images/GeoFence.svg @@ -1,39 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 19.2.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="0 0 84.295 121.246" style="enable-background:new 0 0 84.295 121.246;" xml:space="preserve"> + viewBox="0 0 201.6 155.534" style="enable-background:new 0 0 201.6 155.534;" xml:space="preserve"> <style type="text/css"> - .st0{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linejoin:round;stroke-dasharray:2.9701,2.9701;} - .st1{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;} - .st2{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.0241,3.0241;} - .st3{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.024,3.024;} - .st4{fill:#FFFFFF;} + .st0{fill:#00AA10;} + .st1{fill:none;stroke:#FFFFFF;stroke-width:4;stroke-linejoin:round;stroke-miterlimit:10;} + .st2{fill:none;stroke:#FFFFFF;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st3{fill:#FFFFFF;} </style> <g> - <ellipse class="st0" cx="42.135" cy="15.157" rx="41.127" ry="14.157"/> + <ellipse class="st0" cx="100.8" cy="119.056" rx="97.2" ry="32.784"/> + <ellipse class="st1" cx="100.8" cy="24.593" rx="68.894" ry="20.9"/> + <line class="st2" x1="32.295" y1="26.396" x2="32.287" y2="113.914"/> + <line class="st2" x1="169.207" y1="114.115" x2="169.262" y2="23.213"/> + <path class="st3" d="M79.006,78.38c-0.05-0.477,0.126-0.842,0.528-1.093l36.177-24.118c0.201-0.151,0.427-0.226,0.678-0.226 + c0.251,0,0.477,0.075,0.678,0.226c0.402,0.251,0.578,0.653,0.528,1.206l-6.03,36.177c-0.1,0.352-0.301,0.628-0.603,0.829 + c-0.201,0.1-0.402,0.151-0.603,0.151c-0.151,0-0.301-0.025-0.452-0.075l-11.682-4.673l-2.487,4.145 + c-0.251,0.402-0.603,0.603-1.055,0.603s-0.804-0.201-1.055-0.603l-4.447-7.763l-9.421-3.768 + C79.307,79.197,79.056,78.857,79.006,78.38L79.006,78.38z M82.774,77.966l7.311,2.939c0.05,0.05,0.113,0.1,0.188,0.151l0.113,0.075 + l20.35-21.782L82.774,77.966z M91.291,81.96l3.392,5.879l19.445-30.374L91.291,81.96z M98.375,84.372 + c0.301,0.05,0.553,0.1,0.754,0.151l10.25,4.145l4.824-28.866L98.375,84.372z"/> + <ellipse class="st1" cx="100.8" cy="116.605" rx="68.894" ry="20.9"/> </g> -<g> - <ellipse class="st0" cx="42.135" cy="106.089" rx="41.127" ry="14.157"/> -</g> -<g> - <g> - <line class="st1" x1="1.007" y1="14.788" x2="1.007" y2="16.288"/> - <line class="st2" x1="1.007" y1="19.313" x2="1" y2="102.477"/> - <line class="st1" x1="1" y1="103.989" x2="1" y2="105.489"/> - </g> -</g> -<g> - <g> - <line class="st1" x1="83.262" y1="106.089" x2="83.262" y2="104.589"/> - <line class="st3" x1="83.264" y1="101.565" x2="83.294" y2="18.405"/> - <line class="st1" x1="83.294" y1="16.893" x2="83.295" y2="15.393"/> - </g> -</g> -<path class="st4" d="M15.016,72.932c-0.064-0.608,0.16-1.073,0.672-1.393l46.104-30.736c0.256-0.192,0.544-0.288,0.864-0.288 - c0.32,0,0.608,0.096,0.864,0.288c0.512,0.32,0.736,0.832,0.672,1.537L56.51,88.444c-0.128,0.448-0.384,0.8-0.768,1.057 - c-0.256,0.128-0.512,0.192-0.768,0.192c-0.192,0-0.384-0.032-0.576-0.096l-14.888-5.955l-3.17,5.283 - c-0.32,0.512-0.768,0.768-1.345,0.768s-1.025-0.256-1.345-0.768l-5.667-9.893l-12.006-4.803C15.4,73.972,15.08,73.54,15.016,72.932 - L15.016,72.932z M19.818,72.404l9.317,3.746c0.064,0.064,0.144,0.128,0.24,0.192l0.144,0.096l25.934-27.759L19.818,72.404z - M30.672,77.494l4.322,7.492l24.781-38.709L30.672,77.494z M39.701,80.568c0.384,0.064,0.704,0.128,0.961,0.192l13.063,5.283 - l6.147-36.787L39.701,80.568z"/> </svg> diff --git a/src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg b/src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg new file mode 100644 index 0000000..295586c --- /dev/null +++ b/src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.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="0 0 201.6 155.534" style="enable-background:new 0 0 201.6 155.534;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#008A0D;} + .st1{fill:none;stroke:#231F20;stroke-width:4;stroke-linejoin:round;stroke-miterlimit:10;} + .st2{fill:#231F20;stroke:#231F20;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st3{fill:none;stroke:#231F20;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st4{fill:#231F20;stroke:#231F20;stroke-miterlimit:10;} +</style> +<ellipse class="st0" cx="100.8" cy="119.056" rx="97.2" ry="32.784"/> +<ellipse class="st1" cx="100.8" cy="24.593" rx="68.894" ry="20.9"/> +<line class="st2" x1="32.295" y1="26.396" x2="32.287" y2="113.914"/> +<line class="st3" x1="169.207" y1="114.115" x2="169.262" y2="23.213"/> +<path class="st4" d="M79.006,78.38c-0.05-0.477,0.126-0.842,0.528-1.093l36.177-24.118c0.201-0.151,0.427-0.226,0.678-0.226 + c0.251,0,0.477,0.075,0.678,0.226c0.402,0.251,0.578,0.653,0.528,1.206l-6.03,36.177c-0.1,0.352-0.301,0.628-0.603,0.829 + c-0.201,0.1-0.402,0.151-0.603,0.151c-0.151,0-0.301-0.025-0.452-0.075l-11.682-4.673l-2.487,4.145 + c-0.251,0.402-0.603,0.603-1.055,0.603s-0.804-0.201-1.055-0.603l-4.447-7.763l-9.421-3.768 + C79.307,79.197,79.056,78.857,79.006,78.38L79.006,78.38z M82.774,77.966l7.311,2.939c0.05,0.05,0.113,0.1,0.188,0.151l0.113,0.075 + l20.35-21.782L82.774,77.966z M91.291,81.96l3.392,5.879l19.445-30.374L91.291,81.96z M98.375,84.372 + c0.301,0.05,0.553,0.1,0.754,0.151l10.25,4.145l4.824-28.866L98.375,84.372z"/> +<ellipse class="st1" cx="100.8" cy="116.605" rx="68.894" ry="20.9"/> +</svg> diff --git a/src/AutoPilotPlugins/PX4/Images/LowBattery.svg b/src/AutoPilotPlugins/PX4/Images/LowBattery.svg index a0d83a8..f1b99e3 100644 --- a/src/AutoPilotPlugins/PX4/Images/LowBattery.svg +++ b/src/AutoPilotPlugins/PX4/Images/LowBattery.svg @@ -1,23 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 19.2.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="0 0 162 288" style="enable-background:new 0 0 162 288;" xml:space="preserve"> + viewBox="0 0 142.56 230.096" style="enable-background:new 0 0 142.56 230.096;" xml:space="preserve"> <style type="text/css"> - .st0{fill:#E7E7E7;stroke:#E7E7E7;stroke-width:6;} - .st1{fill:none;} - .st2{fill:#CB2027;} - .st3{fill:#E7E7E7;stroke:#E7E7E7;stroke-width:6;stroke-miterlimit:10;} + .st0{fill:none;stroke:#FFFFFF;stroke-width:10;} + .st1{fill:#A01D20;} + .st2{fill:none;stroke:#FFFFFF;stroke-width:10;stroke-miterlimit:10;} </style> -<path id="rect4970" inkscape:connector-curvature="0" class="st0" d="M14.742,264.074V40.618c0-6.588,5.831-11.93,13.042-11.93 - H134.26c7.211,0,13.042,5.342,13.042,11.93v223.456c0,6.588-5.831,11.93-13.042,11.93H27.785 - C20.573,276.003,14.742,270.662,14.742,264.074z"/> -<path id="rect4360" inkscape:connector-curvature="0" class="st1" d="M9,268.391V36.255c0-6.855,6.321-12.419,14.155-12.419h115.69 - c7.834,0,14.155,5.609,14.155,12.419v232.136c0,6.855-6.321,12.419-14.155,12.419H23.2C15.365,280.811,9,275.246,9,268.391z"/> -<path id="path4679" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="st2" d="M30.9,265.899v-39.866H131.1 - v39.866H30.9z"/> +<path id="rect4970" inkscape:connector-curvature="0" class="st0" d="M5,215.908V43.8c0-5.074,5.831-9.188,13.042-9.188h106.475 + c7.211,0,13.042,4.114,13.042,9.188v172.107c0,5.074-5.831,9.188-13.042,9.188H18.042C10.831,225.096,5,220.982,5,215.908z"/> +<path id="path4679" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="st1" d="M21.158,214.991v-39.866h100.199 + v39.866H21.158z"/> <g id="g4222" transform="translate(-127.22081,216.20249)"> - <path id="path4224" inkscape:connector-curvature="0" class="st3" d="M244.512-189.383c0,0.979-0.757,1.736-1.736,1.736h-68.995 - c-0.979,0-1.736-0.757-1.736-1.736v-17.894c0-0.979,0.757-1.736,1.736-1.736h68.995c0.979,0,1.736,0.757,1.736,1.736V-189.383 - L244.512-189.383L244.512-189.383z"/> + <path id="path4224" inkscape:connector-curvature="0" class="st2" d="M234.77-184.09c0,1.353-0.757,2.398-1.736,2.398h-68.995 + c-0.979,0-1.736-1.045-1.736-2.398v-24.715c0-1.353,0.757-2.398,1.736-2.398h68.995c0.979,0,1.736,1.045,1.736,2.398V-184.09 + L234.77-184.09L234.77-184.09z"/> </g> </svg> diff --git a/src/AutoPilotPlugins/PX4/Images/LowBatteryLight.svg b/src/AutoPilotPlugins/PX4/Images/LowBatteryLight.svg new file mode 100644 index 0000000..5332167 --- /dev/null +++ b/src/AutoPilotPlugins/PX4/Images/LowBatteryLight.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.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="0 0 142.56 230.096" style="enable-background:new 0 0 142.56 230.096;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;stroke:#000000;stroke-width:10;} + .st1{fill:#CB2027;} + .st2{fill:none;stroke:#000000;stroke-width:10;stroke-miterlimit:10;} +</style> +<path id="rect4970" inkscape:connector-curvature="0" class="st0" d="M5,215.908V43.8c0-5.074,5.831-9.188,13.042-9.188h106.475 + c7.211,0,13.042,4.114,13.042,9.188v172.107c0,5.074-5.831,9.188-13.042,9.188H18.042C10.831,225.096,5,220.982,5,215.908z"/> +<path id="path4679" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="st1" d="M21.158,214.991v-39.866h100.199 + v39.866H21.158z"/> +<g id="g4222" transform="translate(-127.22081,216.20249)"> + <path id="path4224" inkscape:connector-curvature="0" class="st2" d="M234.77-184.09c0,1.353-0.757,2.398-1.736,2.398h-68.995 + c-0.979,0-1.736-1.045-1.736-2.398v-24.715c0-1.353,0.757-2.398,1.736-2.398h68.995c0.979,0,1.736,1.045,1.736,2.398V-184.09 + L234.77-184.09L234.77-184.09z"/> +</g> +</svg> diff --git a/src/AutoPilotPlugins/PX4/Images/RCLoss.svg b/src/AutoPilotPlugins/PX4/Images/RCLoss.svg index 88bcaef..03d38d5 100644 --- a/src/AutoPilotPlugins/PX4/Images/RCLoss.svg +++ b/src/AutoPilotPlugins/PX4/Images/RCLoss.svg @@ -2,17 +2,17 @@ <!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="svg3852" inkscape:version="0.91 r13725" sodipodi:docname="gps.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-250 452 72 72" - style="enable-background:new -250 452 72 72;" xml:space="preserve"> + xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-250 452 78.5 81.4" + style="enable-background:new -250 452 78.5 81.4;" xml:space="preserve"> <style type="text/css"> .st0{display:none;} .st1{display:inline;} .st2{fill:none;stroke:#EB008B;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} .st3{display:inline;fill:none;stroke:#224A80;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} .st4{fill:none;stroke:#FFFFFF;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} - .st5{fill:#FFFFFF;} + .st5{fill:#FFFFFF;stroke:#FFFFFF;stroke-miterlimit:10;} .st6{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} - .st7{fill:none;stroke:#DD0000;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;} + .st7{fill:none;stroke:#A10000;stroke-width:10;stroke-linecap:round;stroke-miterlimit:10;} </style> <title id="title4758">GPS</title> <sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview3929" inkscape:current-layer="svg3852" inkscape:cx="55" inkscape:cy="55" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="480" inkscape:window-width="640" inkscape:zoom="11.136364" objecttolerance="10" pagecolor="#808080" showgrid="false"> @@ -67,12 +67,16 @@ <polygon id="polygon3927" class="st3" points="-264.6,453.2 -269.5,453.2 -269.5,494.2 -246.6,494.2 -246.6,453.2 -251.5,453.2 -251.5,446.7 -264.6,446.7 "/> </g> -<line class="st4" x1="-214" y1="479.9" x2="-214" y2="459.8"/> -<circle class="st5" cx="-227" cy="497" r="4.1"/> -<path class="st6" d="M-237,481.9v30.3h46.8v-30.3H-237z M-227,505.7c-4.8,0-8.7-3.9-8.7-8.7s3.9-8.7,8.7-8.7c4.8,0,8.7,3.9,8.7,8.7 - S-222.2,505.7-227,505.7z M-200.1,505.7c-4.8,0-8.7-3.9-8.7-8.7s3.9-8.7,8.7-8.7c4.8,0,8.7,3.9,8.7,8.7S-195.3,505.7-200.1,505.7z" - /> -<circle class="st5" cx="-200.1" cy="497" r="4.1"/> -<line class="st7" x1="-239.5" y1="513.5" x2="-188.5" y2="462.5"/> -<line class="st7" x1="-188.5" y1="513.4" x2="-239.5" y2="462.5"/> +<g> + <line class="st4" x1="-211.3" y1="484.9" x2="-211.4" y2="459.4"/> + <circle class="st5" cx="-227.8" cy="506.7" r="5.2"/> + <path class="st6" d="M-240.5,487.5V526h59.6v-38.5H-240.5z M-227.8,517.8c-6.1,0-11.1-4.9-11.1-11.1s4.9-11.1,11.1-11.1 + c6.1,0,11.1,4.9,11.1,11.1S-221.7,517.8-227.8,517.8z M-193.7,517.8c-6.1,0-11.1-4.9-11.1-11.1s4.9-11.1,11.1-11.1 + c6.1,0,11.1,4.9,11.1,11.1S-187.6,517.8-193.7,517.8z"/> + <circle class="st5" cx="-193.7" cy="506.7" r="5.2"/> +</g> +<g> + <line class="st7" x1="-243.2" y1="525.1" x2="-178.4" y2="460.3"/> + <line class="st7" x1="-178.4" y1="525.1" x2="-243.2" y2="460.3"/> +</g> </svg> diff --git a/src/AutoPilotPlugins/PX4/Images/RCLossLight.svg b/src/AutoPilotPlugins/PX4/Images/RCLossLight.svg new file mode 100644 index 0000000..b6f71d7 --- /dev/null +++ b/src/AutoPilotPlugins/PX4/Images/RCLossLight.svg @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" + id="svg3852" inkscape:version="0.91 r13725" sodipodi:docname="gps.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-250 452 78.5 81.4" + style="enable-background:new -250 452 78.5 81.4;" xml:space="preserve"> +<style type="text/css"> + .st0{display:none;} + .st1{display:inline;} + .st2{fill:none;stroke:#EB008B;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st3{display:inline;fill:none;stroke:#224A80;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st4{stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st5{stroke:#000000;stroke-miterlimit:10;} + .st6{stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st7{fill:none;stroke:#CB2027;stroke-width:10;stroke-linecap:round;stroke-miterlimit:10;} +</style> +<title id="title4758">GPS</title> +<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview3929" inkscape:current-layer="svg3852" inkscape:cx="55" inkscape:cy="55" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="480" inkscape:window-width="640" inkscape:zoom="11.136364" objecttolerance="10" pagecolor="#808080" showgrid="false"> + </sodipodi:namedview> +<g id="Layer_2" class="st0"> +</g> +<g id="ex_thick" transform="matrix(-1,0,0,-1,111.82126,108.29692)"> +</g> +<g id="Layer_2_copy_3" class="st0"> +</g> +<g id="ex_thin" transform="matrix(-1,0,0,-1,111.82126,108.29692)"> +</g> +<g id="Layer_2_copy" class="st0"> +</g> +<g id="em_thick" transform="matrix(-1,0,0,-1,111.82126,108.29692)"> +</g> +<g id="Layer_2_copy_4" class="st0"> + <g id="g3861" class="st1"> + <rect id="rect3863" x="-286.1" y="320.7" class="st2" width="56.3" height="56.3"/> + <circle id="circle3865" class="st2" cx="-258" cy="348.8" r="28.2"/> + </g> + <g id="g3867" class="st1"> + <rect id="rect3869" x="-221.7" y="320.7" class="st2" width="56.3" height="56.3"/> + <circle id="circle3871" class="st2" cx="-193.5" cy="348.8" r="28.2"/> + </g> + <g id="g3873" class="st1"> + <rect id="rect3875" x="-158.5" y="320.7" class="st2" width="56.3" height="56.3"/> + <circle id="circle3877" class="st2" cx="-130.3" cy="348.8" r="28.2"/> + </g> +</g> +<g id="Layer_2_copy_2" class="st0"> + <g id="g3905" class="st1"> + <rect id="rect3907" x="-286.1" y="425.3" class="st2" width="56.3" height="56.3"/> + <circle id="circle3909" class="st2" cx="-258" cy="453.5" r="28.2"/> + </g> + <g id="g3911" class="st1"> + <rect id="rect3913" x="-221.7" y="425.3" class="st2" width="56.3" height="56.3"/> + <circle id="circle3915" class="st2" cx="-193.5" cy="453.5" r="28.2"/> + </g> + <g id="g3917" class="st1"> + <rect id="rect3919" x="-158.5" y="425.3" class="st2" width="56.3" height="56.3"/> + <circle id="circle3921" class="st2" cx="-130.3" cy="453.5" r="28.2"/> + </g> +</g> +<g id="hornet" transform="matrix(-1,0,0,-1,111.82126,108.29692)"> +</g> +<g id="Layer_2_copy_5" class="st0"> +</g> +<g id="hornet_THIN" transform="matrix(-1,0,0,-1,111.82126,108.29692)"> +</g> +<g id="Layer_6" class="st0"> + <polygon id="polygon3927" class="st3" points="-264.6,453.2 -269.5,453.2 -269.5,494.2 -246.6,494.2 -246.6,453.2 -251.5,453.2 + -251.5,446.7 -264.6,446.7 "/> +</g> +<g> + <line class="st4" x1="-211.3" y1="484.9" x2="-211.4" y2="459.4"/> + <circle class="st5" cx="-227.8" cy="506.7" r="5.2"/> + <path class="st6" d="M-240.5,487.5V526h59.6v-38.5H-240.5z M-227.8,517.8c-6.1,0-11.1-4.9-11.1-11.1s4.9-11.1,11.1-11.1 + c6.1,0,11.1,4.9,11.1,11.1S-221.7,517.8-227.8,517.8z M-193.7,517.8c-6.1,0-11.1-4.9-11.1-11.1s4.9-11.1,11.1-11.1 + c6.1,0,11.1,4.9,11.1,11.1S-187.6,517.8-193.7,517.8z"/> + <circle class="st5" cx="-193.7" cy="506.7" r="5.2"/> +</g> +<g> + <line class="st7" x1="-243.2" y1="525.1" x2="-178.4" y2="460.3"/> + <line class="st7" x1="-178.4" y1="525.1" x2="-243.2" y2="460.3"/> +</g> +</svg> diff --git a/src/AutoPilotPlugins/PX4/SafetyComponent.qml b/src/AutoPilotPlugins/PX4/SafetyComponent.qml index 39f3e90..8401576 100644 --- a/src/AutoPilotPlugins/PX4/SafetyComponent.qml +++ b/src/AutoPilotPlugins/PX4/SafetyComponent.qml @@ -43,7 +43,10 @@ QGCView { QGCPalette { id: palette; colorGroupEnabled: enabled } - property real _margins: ScreenTools.defaultFontPixelHeight + property real _margins: ScreenTools.defaultFontPixelHeight + property real _middleRowWidth: ScreenTools.defaultFontPixelWidth * 22 + property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 18 + property bool _fixedWing: controller.fixedWing property Fact _fenceAction: controller.getParameterFact(-1, "GF_ACTION") property Fact _fenceRadius: controller.getParameterFact(-1, "GF_MAX_HOR_DIST") @@ -55,108 +58,314 @@ QGCView { QGCViewPanel { id: panel anchors.fill: parent - QGCFlickable { - clip: true - anchors.fill: parent - contentHeight: mainCol.height - contentWidth: parent.width - flickableDirection: Flickable.VerticalFlick - + clip: true + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + width: mainCol.width + contentHeight: mainCol.height + contentWidth: mainCol.width + flickableDirection: Flickable.VerticalFlick Column { - id: mainCol - spacing: _margins - + id: mainCol + spacing: _margins + /* + **** Low Battery **** + */ + Item { width: 1; height: _margins * 0.5; } QGCLabel { - id: rtlLabel - text: qsTr("Return Home Settings") - font.weight: Font.DemiBold + text: qsTr("Low Battery Trigger") + font.weight: Font.DemiBold } - Rectangle { - id: rtlSettings - color: palette.windowShade - width: rtlRow.width + _margins * 2 - height: rtlRow.height + _margins * 2 + color: palette.windowShade + width: rtlSettings.width + height: lowBattRow.height + _margins * 2 Row { - id: rtlRow - spacing: _margins - anchors.verticalCenter: parent.verticalCenter - Item { - width: _margins * 0.5 - height: 1 + id: lowBattRow + spacing: _margins + anchors.verticalCenter: parent.verticalCenter + Item { width: _margins * 0.5; height: 1; } + Image { + height: ScreenTools.defaultFontPixelWidth * 6 + width: ScreenTools.defaultFontPixelWidth * 20 + mipmap: true + fillMode: Image.PreserveAspectFit + source: qgcPal.globalTheme === QGCPalette.Light ? "/qmlimages/LowBatteryLight.svg" : "/qmlimages/LowBattery.svg" + anchors.verticalCenter: parent.verticalCenter } - QGCColoredImage { - id: icon - height: ScreenTools.defaultFontPixelWidth * 10 - width: ScreenTools.defaultFontPixelWidth * 20 - mipmap: true - fillMode: Image.PreserveAspectFit - source: controller.fixedWing ? "/qmlimages/ReturnToHomeAltitude.svg" : "/qmlimages/ReturnToHomeAltitudeCopter.svg" - anchors.verticalCenter: parent.verticalCenter + Item { width: _margins * 0.5; height: 1; } + Column { + spacing: _margins * 0.5 + anchors.verticalCenter: parent.verticalCenter + Row { + visible: !_fixedWing + QGCLabel { + anchors.baseline: lowBattCombo.baseline + width: _middleRowWidth + text: qsTr("Action:") + } + FactComboBox { + id: lowBattCombo + width: _editFieldWidth + model: [ qsTr("No Action"), qsTr("Return To Land") ] + fact: _lowBattAction + } + } + Row { + QGCLabel { + anchors.baseline: batLowLevelField.baseline + width: _middleRowWidth + text: qsTr("Battery Low Level:") + } + FactTextField { + id: batLowLevelField + fact: controller.getParameterFact(-1, "COM_DISARM_LAND") + showUnits: true + width: _editFieldWidth + } + } } - Item { - width: _margins * 0.5 - height: 1 + } + } + /* + **** RC Loss **** + */ + QGCLabel { + text: qsTr("RC Loss Trigger") + font.weight: Font.DemiBold + } + Rectangle { + color: palette.windowShade + width: rtlSettings.width + height: rcLossRow.height + _margins * 2 + Row { + id: rcLossRow + spacing: _margins + anchors.verticalCenter: parent.verticalCenter + Item { width: _margins * 0.5; height: 1; } + Image { + height: ScreenTools.defaultFontPixelWidth * 6 + width: ScreenTools.defaultFontPixelWidth * 20 + mipmap: true + fillMode: Image.PreserveAspectFit + source: qgcPal.globalTheme === QGCPalette.Light ? "/qmlimages/RCLossLight.svg" : "/qmlimages/RCLoss.svg" + anchors.verticalCenter: parent.verticalCenter } + Item { width: _margins * 0.5; height: 1; } Column { - spacing: _margins * 0.5 + spacing: _margins * 0.5 + anchors.verticalCenter: parent.verticalCenter + Row { + QGCLabel { + anchors.baseline: rcLossCombo.baseline + width: _middleRowWidth + text: qsTr("Action:") + } + FactComboBox { + id: rcLossCombo + width: _editFieldWidth + model: [ qsTr("Loiter"), qsTr("Return To Land"), qsTr("Land at current position") ] + fact: _rcLossAction + } + } + Row { + QGCLabel { + anchors.baseline: rcLossField.baseline + width: _middleRowWidth + text: qsTr("RC Loss Timeout:") + } + FactTextField { + id: rcLossField + fact: controller.getParameterFact(-1, "COM_RC_LOSS_T") + showUnits: true + width: _editFieldWidth + } + } + /* + This is defined in the parameter specification but it is not clear how it is used. + The actions above (RTL, Loiter, and Land At Current Position) makes its meaning + ambiguous. Loiter before RTL and/or Land At Current Position? What if the action + is set to "Loiter"? What happens after the timeout? + Row { + QGCLabel { + anchors.baseline: rcLossLoiterField.baseline + width: _middleRowWidth + text: qsTr("RC Loss Loiter Period:") + } + FactTextField { + id: rcLossLoiterField + fact: controller.getParameterFact(-1, "NAV_RCL_LT") + showUnits: true + } + } + */ + } + } + } + /* + **** Geofence **** + */ + QGCLabel { + text: qsTr("Geofence Trigger") + font.weight: Font.DemiBold + } + Rectangle { + color: palette.windowShade + width: rtlSettings.width + height: geofenceRow.height + _margins * 2 + Row { + id: geofenceRow + spacing: _margins + anchors.verticalCenter: parent.verticalCenter + Item { width: _margins * 0.5; height: 1; } + Image { + height: ScreenTools.defaultFontPixelWidth * 8 + width: ScreenTools.defaultFontPixelWidth * 20 + mipmap: true + fillMode: Image.PreserveAspectFit + source: qgcPal.globalTheme === QGCPalette.Light ? "/qmlimages/GeoFenceLight.svg" : "/qmlimages/GeoFence.svg" + anchors.verticalCenter: parent.verticalCenter + } + Item { width: _margins * 0.5; height: 1; } + Column { + spacing: _margins * 0.5 + anchors.verticalCenter: parent.verticalCenter + Row { + QGCLabel { + id: fenceActionLabel + anchors.baseline: fenceActionCombo.baseline + text: qsTr("Action on breach:") + width: _middleRowWidth + } + FactComboBox { + id: fenceActionCombo + width: _editFieldWidth + model: [ qsTr("None"), qsTr("Warning"), qsTr("Loiter"), qsTr("Return Home"), qsTr("Flight termination") ] + fact: _fenceAction + } + } + Row { + QGCCheckBox { + id: fenceRadiusCheckBox + anchors.baseline: fenceRadiusField.baseline + text: qsTr("Max radius:") + checked: _fenceRadius.value >= 0 + onClicked: _fenceRadius.value = checked ? 100 : -1 + width: _middleRowWidth + } + FactTextField { + id: fenceRadiusField + showUnits: true + fact: _fenceRadius + enabled: fenceRadiusCheckBox.checked + width: _editFieldWidth + } + } + Row { + QGCCheckBox { + id: fenceAltMaxCheckBox + anchors.baseline: fenceAltMaxField.baseline + text: qsTr("Max altitude:") + checked: _fenceAlt.value >= 0 + onClicked: _fenceAlt.value = checked ? 100 : -1 + width: _middleRowWidth + } + FactTextField { + id: fenceAltMaxField + showUnits: true + fact: _fenceAlt + enabled: fenceAltMaxCheckBox.checked + width: _editFieldWidth + } + } + } + } + } + /* + **** Return Home Settings **** + */ + QGCLabel { + id: rtlLabel + text: qsTr("Return Home Settings") + font.weight: Font.DemiBold + } + Rectangle { + id: rtlSettings + color: palette.windowShade + width: rtlRow.width + _margins * 2 + height: rtlRow.height + _margins * 2 + Row { + id: rtlRow + spacing: _margins + anchors.verticalCenter: parent.verticalCenter + Item { width: _margins * 0.5; height: 1; } + QGCColoredImage { + id: icon + color: palette.text + height: ScreenTools.defaultFontPixelWidth * 10 + width: ScreenTools.defaultFontPixelWidth * 20 + mipmap: true + fillMode: Image.PreserveAspectFit + source: _fixedWing ? "/qmlimages/ReturnToHomeAltitude.svg" : "/qmlimages/ReturnToHomeAltitudeCopter.svg" + anchors.verticalCenter: parent.verticalCenter + } + Item { width: _margins * 0.5; height: 1; } + Column { + spacing: _margins * 0.5 Row { QGCLabel { id: climbLabel anchors.baseline: climbField.baseline - width: ScreenTools.defaultFontPixelWidth * 22 + width: _middleRowWidth text: qsTr("Climb to altitude of:") } FactTextField { id: climbField fact: controller.getParameterFact(-1, "RTL_RETURN_ALT") showUnits: true + width: _editFieldWidth } } + Item { width: 1; height: _margins * 0.5; } QGCLabel { - id: returnHomeLabel - text: "Return home, then:" + id: returnHomeLabel + text: "Return home, then:" } Row { - Item { - height: 1 - width: _margins - } + Item { height: 1; width: _margins; } Column { spacing: _margins * 0.5 ExclusiveGroup { id: homeLoiterGroup } QGCRadioButton { - id: homeLandRadio - checked: _rtlLandDelay.value < 0 - exclusiveGroup: homeLoiterGroup - text: "Land immediately" - onClicked: _rtlLandDelay.value = 0 + id: homeLandRadio + checked: _rtlLandDelay.value === 0 + exclusiveGroup: homeLoiterGroup + text: "Land immediately" + onClicked: _rtlLandDelay.value = 0 } QGCRadioButton { - id: homeLoiterNoLandRadio - checked: _rtlLandDelay.value < 0 - exclusiveGroup: homeLoiterGroup - text: "Loiter, do not land" - onClicked: _rtlLandDelay.value = -1 + id: homeLoiterNoLandRadio + checked: _rtlLandDelay.value < 0 + exclusiveGroup: homeLoiterGroup + text: "Loiter and do not land" + onClicked: _rtlLandDelay.value = -1 } QGCRadioButton { - id: homeLoiterLandRadio - checked: _rtlLandDelay.value >= 0 - exclusiveGroup: homeLoiterGroup - text: qsTr("Loiter and land after specified time") - onClicked: _rtlLandDelay.value = 60 + id: homeLoiterLandRadio + checked: _rtlLandDelay.value > 0 + exclusiveGroup: homeLoiterGroup + text: qsTr("Loiter and land after specified time") + onClicked: _rtlLandDelay.value = 60 } } } - Item { - width: 1 - height: _margins - } + Item { width: 1; height: _margins * 0.5; } Row { QGCLabel { text: qsTr("Loiter Time") - width: ScreenTools.defaultFontPixelWidth * 22 + width: _middleRowWidth anchors.baseline: landDelayField.baseline color: palette.text enabled: homeLoiterLandRadio.checked === true @@ -166,402 +375,114 @@ QGCView { fact: controller.getParameterFact(-1, "RTL_LAND_DELAY") showUnits: true enabled: homeLoiterLandRadio.checked === true + width: _editFieldWidth } } Row { QGCLabel { text: qsTr("Loiter Altitude") - width: ScreenTools.defaultFontPixelWidth * 22 + width: _middleRowWidth anchors.baseline: descendField.baseline color: palette.text - enabled: homeLoiterLandRadio.checked === true + enabled: homeLoiterLandRadio.checked === true || homeLoiterNoLandRadio.checked === true } FactTextField { id: descendField fact: controller.getParameterFact(-1, "RTL_DESCEND_ALT") - enabled: homeLoiterLandRadio.checked === true + enabled: homeLoiterLandRadio.checked === true || homeLoiterNoLandRadio.checked === true showUnits: true + width: _editFieldWidth } } } } } - + /* + **** Land Mode Settings **** + */ QGCLabel { - text: qsTr("Land Mode") - font.weight: Font.DemiBold + text: qsTr("Land Mode Settings") + font.weight: Font.DemiBold } - Rectangle { - color: palette.windowShade - width: rtlSettings.width - height: landModeRow.height + _margins * 2 + color: palette.windowShade + width: rtlSettings.width + height: landModeRow.height + _margins * 2 Row { - id: landModeRow - spacing: _margins - anchors.verticalCenter: parent.verticalCenter + id: landModeRow + spacing: _margins + anchors.verticalCenter: parent.verticalCenter Item { - width: _margins * 0.5 - height: 1 + width: _margins * 0.5 + height: 1 } QGCColoredImage { - height: ScreenTools.defaultFontPixelWidth * 10 - width: ScreenTools.defaultFontPixelWidth * 20 - mipmap: true - fillMode: Image.PreserveAspectFit - source: controller.fixedWing ? "/qmlimages/LandMode.svg" : "/qmlimages/LandModeCopter.svg" - anchors.verticalCenter: parent.verticalCenter + color: palette.text + height: ScreenTools.defaultFontPixelWidth * 10 + width: ScreenTools.defaultFontPixelWidth * 20 + mipmap: true + fillMode: Image.PreserveAspectFit + source: _fixedWing ? "/qmlimages/LandMode.svg" : "/qmlimages/LandModeCopter.svg" + anchors.verticalCenter: parent.verticalCenter } Item { - width: _margins * 0.5 - height: 1 + width: _margins * 0.5 + height: 1 } Column { spacing: _margins * 0.5 anchors.verticalCenter: parent.verticalCenter Row { - visible: !controller.fixedWing + visible: !_fixedWing QGCLabel { anchors.baseline: landVelField.baseline - width: ScreenTools.defaultFontPixelWidth * 22 - text: qsTr("Land Velocity:") + width: _middleRowWidth + text: qsTr("Landing Velocity:") } FactTextField { id: landVelField fact: controller.getParameterFact(-1, "MPC_LAND_SPEED") showUnits: true + width: _editFieldWidth } } Row { QGCLabel { anchors.baseline: disarmField.baseline - width: ScreenTools.defaultFontPixelWidth * 22 + width: _middleRowWidth text: qsTr("Disarm After:") } FactTextField { id: disarmField fact: controller.getParameterFact(-1, "COM_DISARM_LAND") showUnits: true + width: _editFieldWidth } } } } } - + /* Don't know about these QGCLabel { - text: qsTr("Low Battery Trigger") - font.weight: Font.DemiBold + id: navRclObc + font.pixelSize: ScreenTools.mediumFontPixelSize + text: qsTr("Warning: You have an advanced safety configuration set using the NAV_RCL_OBC parameter. The above settings may not apply.") + visible: fact.value !== 0 + wrapMode: Text.Wrap + property Fact fact: controller.getParameterFact(-1, "NAV_RCL_OBC") } - Rectangle { - color: palette.windowShade - width: rtlSettings.width - height: lowBattRow.height + _margins * 2 - Row { - id: lowBattRow - spacing: _margins - anchors.verticalCenter: parent.verticalCenter - Item { - width: _margins * 0.5 - height: 1 - } - QGCColoredImage { - height: ScreenTools.defaultFontPixelWidth * 10 - width: ScreenTools.defaultFontPixelWidth * 20 - mipmap: true - fillMode: Image.PreserveAspectFit - source: "/qmlimages/LowBattery.svg" - anchors.verticalCenter: parent.verticalCenter - } - Item { - width: _margins * 0.5 - height: 1 - } - Column { - spacing: _margins * 0.5 - anchors.verticalCenter: parent.verticalCenter - Row { - visible: !controller.fixedWing - QGCLabel { - anchors.baseline: lowBattCombo.baseline - width: ScreenTools.defaultFontPixelWidth * 22 - text: qsTr("Action:") - } - FactComboBox { - id: lowBattCombo - width: climbField.width - model: [ qsTr("No Action"), qsTr("Return To Land") ] - fact: _lowBattAction - } - } - Row { - QGCLabel { - anchors.baseline: batLowLevelField.baseline - width: ScreenTools.defaultFontPixelWidth * 22 - text: qsTr("Battery Low Level:") - } - FactTextField { - id: batLowLevelField - fact: controller.getParameterFact(-1, "COM_DISARM_LAND") - showUnits: true - } - } - } - } - } - - - - - - - - - - - - Rectangle { - color: palette.windowShade - width: rtlSettings.width - height: _triggerCol.height + _margins * 2 - Column { - id: _triggerCol - spacing: _margins - anchors.verticalCenter: parent.verticalCenter - Row { - id: rcLossRow - spacing: _margins - Item { - width: _margins * 0.5 - height: 1 - } - QGCLabel { - text: qsTr("RC Loss") - font.weight: Font.DemiBold - width: ScreenTools.defaultFontPixelWidth * 20 - } - Item { - width: _margins * 0.5 - height: 1 - } - Column { - spacing: _margins * 0.5 - Row { - QGCLabel { - anchors.baseline: rcLossCombo.baseline - width: ScreenTools.defaultFontPixelWidth * 22 - text: qsTr("Action:") - } - FactComboBox { - id: rcLossCombo - width: climbField.width - model: [ qsTr("Loiter"), qsTr("Return To Land"), qsTr("Land at current position") ] - fact: _rcLossAction - } - } - Row { - QGCLabel { - anchors.baseline: rcLossField.baseline - width: ScreenTools.defaultFontPixelWidth * 22 - text: qsTr("RC Loss Timeout:") - } - FactTextField { - id: rcLossField - fact: controller.getParameterFact(-1, "COM_RC_LOSS_T") - showUnits: true - } - } - /* - This is defined in the parameter specification but it is not clear how it is used. - The actions above (RTL, Loiter, and Land At Current Position) makes its meaning - ambiguous. Loiter before RTL and/or Land At Current Position? What if the action - is set to "Loiter"? What happens after the timeout? - Row { - QGCLabel { - anchors.baseline: rcLossLoiterField.baseline - width: ScreenTools.defaultFontPixelWidth * 22 - text: qsTr("RC Loss Loiter Period:") - } - FactTextField { - id: rcLossLoiterField - fact: controller.getParameterFact(-1, "NAV_RCL_LT") - showUnits: true - } - } - */ - } - } - Item { - width: 1 - height: _margins - } - Row { - id: geofenceRow - spacing: _margins - Item { - width: _margins * 0.5 - height: 1 - } - QGCLabel { - text: qsTr("GeoFence") - font.weight: Font.DemiBold - width: ScreenTools.defaultFontPixelWidth * 20 - } - Item { - width: _margins * 0.5 - height: 1 - } - Column { - spacing: _margins * 0.5 - Row { - QGCLabel { - id: fenceActionLabel - anchors.baseline: fenceActionCombo.baseline - text: qsTr("Action on breach:") - width: ScreenTools.defaultFontPixelWidth * 22 - } - FactComboBox { - id: fenceActionCombo - width: fenceAltMaxField.width - model: [ qsTr("None"), qsTr("Warning"), qsTr("Loiter"), qsTr("Return Home"), qsTr("Flight termination") ] - fact: _fenceAction - } - } - Row { - QGCCheckBox { - id: fenceRadiusCheckBox - anchors.baseline: fenceRadiusField.baseline - text: qsTr("Max radius:") - checked: _fenceRadius.value >= 0 - onClicked: _fenceRadius.value = checked ? 100 : -1 - width: ScreenTools.defaultFontPixelWidth * 22 - } - FactTextField { - id: fenceRadiusField - showUnits: true - fact: _fenceRadius - enabled: fenceRadiusCheckBox.checked - } - } - Row { - QGCCheckBox { - id: fenceAltMaxCheckBox - anchors.baseline: fenceAltMaxField.baseline - text: qsTr("Max altitude:") - checked: _fenceAlt.value >= 0 - onClicked: _fenceAlt.value = checked ? 100 : -1 - width: ScreenTools.defaultFontPixelWidth * 22 - } - FactTextField { - id: fenceAltMaxField - showUnits: true - fact: _fenceAlt - enabled: fenceAltMaxCheckBox.checked - } - } - } - } - } - } - } - - /* - - QGCLabel { - id: triggerLabel - text: qsTr("Triggers For Return Home") - font.weight: Font.DemiBold - } - - Rectangle { - id: triggerSettings - anchors.topMargin: _margins / 2 - anchors.rightMargin: _margins - anchors.left: parent.left - anchors.top: triggerLabel.bottom - anchors.bottom: geoFenceSettings.bottom - width: telemetryLossField.x + telemetryLossField.width + (_margins * 2) - color: palette.windowShade - QGCLabel { - text: qsTr("RC Transmitter Signal Loss: Return Home after") - anchors.margins: _margins - anchors.left: parent.left - anchors.baseline: rcLossField.baseline - } - - FactTextField { - id: rcLossField - anchors.topMargin: _margins - anchors.top: parent.top - anchors.left: telemetryLossField.left - fact: controller.getParameterFact(-1, "COM_RC_LOSS_T") - showUnits: true - } - - FactCheckBox { - id: telemetryTimeoutCheckbox - anchors.margins: _margins - anchors.left: parent.left - anchors.baseline: telemetryLossField.baseline - fact: controller.getParameterFact(-1, "COM_DL_LOSS_EN") - checkedValue: 1 - uncheckedValue: 0 - text: qsTr("Telemetry Signal Timeout: Return Home after") + id: navDllObc + font.pixelSize: ScreenTools.mediumFontPixelSize + text: qsTr("Warning: You have an advanced safety configuration set using the NAV_DLL_OBC parameter. The above settings may not apply.") + visible: fact.value !== 0 + wrapMode: Text.Wrap + property Fact fact: controller.getParameterFact(-1, "NAV_DLL_OBC") } - - FactTextField { - id: telemetryLossField - anchors.leftMargin: _margins - anchors.topMargin: _margins / 2 - anchors.left: telemetryTimeoutCheckbox.right - anchors.top: rcLossField.bottom - fact: controller.getParameterFact(-1, "COM_DL_LOSS_T") - showUnits: true - enabled: telemetryTimeoutCheckbox.checked - } - } // Rectangle - Trigger settings - - - - QGCLabel { - id: navRclObc - anchors.topMargin: _margins - anchors.top: rtlSettings.bottom - anchors.left: parent.left - anchors.right: parent.right - font.pixelSize: ScreenTools.mediumFontPixelSize - text: qsTr("Warning: You have an advanced safety configuration set using the NAV_RCL_OBC parameter. The above settings may not apply.") - visible: fact.value !== 0 - wrapMode: Text.Wrap - - property Fact fact: controller.getParameterFact(-1, "NAV_RCL_OBC") + */ } - - QGCLabel { - id: navDllObc - anchors.topMargin: _margins / 2 - anchors.top: navRclObc.bottom - anchors.left: parent.left - anchors.right: parent.right - font.pixelSize: ScreenTools.mediumFontPixelSize - text: qsTr("Warning: You have an advanced safety configuration set using the NAV_DLL_OBC parameter. The above settings may not apply.") - visible: fact.value !== 0 - wrapMode: Text.Wrap - - property Fact fact: controller.getParameterFact(-1, "NAV_DLL_OBC") - } - - Item { - id: screenBottom - anchors.top: navDllObc.bottom - width: 1 - height: 1 - } -*/ - - - } // QGCFlickable - } // QGCViewPanel -} // QGCView + } + } +}