From fb35b7d1550970354455793bd95d981e5fee657a Mon Sep 17 00:00:00 2001 From: Jacob Walser Date: Wed, 3 May 2017 14:45:20 -0400 Subject: [PATCH] Add joystick toolbar indicator for Sub --- qgcresources.qrc | 1 + qgroundcontrol.qrc | 1 + .../APM/ArduSubFirmwarePlugin.cc | 1 + src/ui/toolbar/Images/Joystick.png | Bin 0 -> 39199 bytes src/ui/toolbar/JoystickIndicator.qml | 102 ++++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 src/ui/toolbar/Images/Joystick.png create mode 100644 src/ui/toolbar/JoystickIndicator.qml diff --git a/qgcresources.qrc b/qgcresources.qrc index ab45927ff..1adcca7a6 100644 --- a/qgcresources.qrc +++ b/qgcresources.qrc @@ -154,6 +154,7 @@ src/ui/toolbar/Images/TelemRSSI.svg src/ui/toolbar/Images/Yield.svg src/ui/toolbar/Images/CameraIcon.svg + src/ui/toolbar/Images/Joystick.png src/MissionManager/CogWheel.svg src/AutoPilotPlugins/Common/Images/StationMode.svg src/AutoPilotPlugins/Common/Images/APMode.svg diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 643946656..13452d1fc 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -10,6 +10,7 @@ src/ui/toolbar/ModeIndicator.qml src/ui/toolbar/RCRSSIIndicator.qml src/ui/toolbar/TelemetryRSSIIndicator.qml + src/ui/toolbar/JoystickIndicator.qml src/AutoPilotPlugins/PX4/AirframeComponent.qml diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc index 1dfa4fdf5..e2a39dfab 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc @@ -115,6 +115,7 @@ const QVariantList& ArduSubFirmwarePlugin::toolBarIndicators(const Vehicle* vehi _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MessageIndicator.qml"))); _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml"))); _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml"))); + _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/JoystickIndicator.qml"))); } return _toolBarIndicators; } diff --git a/src/ui/toolbar/Images/Joystick.png b/src/ui/toolbar/Images/Joystick.png new file mode 100644 index 0000000000000000000000000000000000000000..bbaa8350d08ac3172e5dca97689c8b3dcf4fc5df GIT binary patch literal 39199 zcmce-hdTQ;~H7FgzPIWy4LkhQC1}*vm$Y?aZC2P zRFqZ5wXgZMuAQzue&==d`Fy^A!LJ^1?|D7XbD!rrub$r0(>l1He?JTcJE)_5)er{T zGYtO0_Huxg4=TD%;1|c;8(LRkJJ8=Zl^(` zS0+PFrHC*x&;7gC@S-;F^Fop00ao$y{^Ef~NxJxjyz(pzi^-nDM_CSMgc}~YHDz`C zAES1Gsn_>*R#Sgu+)P_iPP2JIjis%lfCre%(!ccm1$mxR zfqsAXLJMZz@JKFlh@?R+3;2dbUoTE}2l)I% zm$^AFBP1zO78$7r!BF}YKcHN^!p?d{?2;wg65BOH&Hjlug`=V%n_Zz=LHHfe7O$|- z4rAIwAUVz{b{GEBJ_QM}_}$M>kGLWA#CM4sX?cBUJsH>W<2_RuZ`{y`%c!p}QKh?B zIs!D|W_Nd$bBnqKDBRs;l!&KH!fw#}=@EuZ@p8&eKREv-C%J;b!$eGRDtAY{Ggo>z zEw(Lu0PsWZt>AX^*6Uq=%47ml_)xfi#@}^XjERpx#a%@X+fTJysO?%YCvQG~Sr~Em z>3OEYCWnE(KDwJaxNQaR?w5BZ3S9zv-}r+Ldc)-1OxGvdO%5y>F**A61+e}gt(?xi zD++095#T7*w_?DPG~Yui!X)$=+Xw*~R)&b%R%Hy%UE`Si9EEn;%!spF?ou~tQw~>L!$2VocEr&#u&QeV#@X*AS_~N340fLN?BH)2Grka>9IOX2fEdPSrU5 znyL;hrNm(ecKJxoGY!Z^*?T?b#Twwea5YhZ!A$=pjQ#09iWL}}@6%y1-BppD*CTp7 zaN3i~D$j2JUHa2VeG3pixB6d%mTratrDb!IA`&AKR97EH`0i=E5O1T$Qv6~-9tD{W zCNQl>eNW}J|1v&Y&bSAynDM(i`kybnzLY{AqCJ$}_1O!dTE@{Q5O=?A;&3%{oB!tK@o3#Kt%mzgq#otA*GlM$J}+eM*(KslmZg2(MIF&OwIbd0I?3#q2a z?YsY?Q_JVp4?{7I{5|#8>Jg{di8Sx6u%e$H#$b)`4ZB3=)(SQAkQ(e8oV*K#ZNge{ zDc*)rnf@q;yhIc*9qdUOblG*qZ50Lf{`)~x>s=B})mp|D{5z_j(P@73baf_?1UIXc zo>f*S>cnU{{#N;jqBz8zKdJ<8g!^w&_P^zHFc~}hs%9U%6Ee;W_#10 z@n7r7Ec!vJQo05NN3IH#p5&8-&_&>|jPVLTmw}3VUeI?~XZ>4hD1SA> zE>G1ae|hkSXP@n^YuAx~B;H=o4!Fp^vUv{b$Rw0i=pQqh&! zsC!RxCZ9h1n1W71uI%g12vH0zUdD@y+Ayd2KwZYUSQaHbj;A=)wC^N%a zt`5)(BBdgl)?22bV~8nHHlBC%H^0{zq?aAV%=CA-NY;i{ZL6QYH`%8$iv|rBqL67y z|LV){O>P6wVTK8~c``oJmm;OYnp`Gk=ygn2yHn&=RqAyIH$K6{4DB*W>0UMb?$Ym{ z;W&L5>?5222f&*VTgUg0z3oIT-MjfUa4iU&0^~xTzZZ9@zHD4>Ig0-(ug?| z;2COb)*Oo@;Ut3Rl zhmK}}trShAPg69v6`PG!8ns4)=i_%hm)?X57q92Ex6F)dKRij#qau=uXmf_N(@AbQ z(FG(ww9N^`Js%~e!_DNLCXVJ^DkjZYB9x{18fSmg9WUP6%?B7;gc1rywn`#>=~Pv# z=*^!>m~5q9(&alN=ou?4+-F>}CfmHX+Po6y6{a!<#U8RsS9a9xr1bpXYX-W51RKT# zS7pO|>0Iwbs4+Y*AkeH`VHHNsA3&?Ta};oUdu|x`hCE{6^S1|$&i?)DYj2fT17Ok( zKd34sS&oTr2}pgE-zYMv`p{OVt3;pRNjA(2OJkKH_KQQ;p|jP9@x*OpTEOScXpXZ> z0+9#UVbhahr08g_k5W*MB>P6?&Y7ybDf7d1xfHRGE4EAUw8=vo4ayMdDp#l82jxLV zQ{Fptqy`TQrEX1|5kUR+$a6*(%0o@@TcnN8xnAWq?FTbpWT&dzv|^O2*K-C`&JY&e zY_@JOo@f4^EwdekQLrE6c(G!UT%W9&r37+7ovK07lIL|V<`;m&#v9gjccLs4cT+dn zASzGDK&1k2hU@57gh|KeWd)Y4Pfm(V>q1f$c#hINoIMAfsy}+bFmqdmjP=%&_BBkN z1I`b?F!L1|cu;Q?yo2}%_~6S%2v{1Y*ApAH;IDZh&Sz5Ch+3vV{k&8Inl1Ji%=7BGxsjzgc`y7n?dAl&1utA>`5r9Oc5X&7I!lVxq-_OIE+Rp2;_s46( zPt?o;=guLP%f-6uXK@K8v%}(Ouc;aqt-IRGN%b?SHr%?^zA*?R^q|V|#*C>}bxo)Q zAfP?w>D6fN6No)9lkdeO;jAiY)c5;PDHBJdk@(*Gvk@Yf3p0auQsq$JFOvhgVU$m( zD!enJ^(YobZmqIZImg}~3l%hE7q>pInLi)bZaBb>54Y>aODD^KEl}}Gz7R!BwNWWR z-G_99-d}=%v_qcEGuo=AdXh9a99Rfw?|&HI>B+6?<1aw%N4U03ruz_;qqtaM5_6Th z`Tr{Vcs+kOhByJT#=B9{3VQw~3mldXqEO9ItTI#^VqWx<@i@j}ra%{r;31ixYP6+B zjjJ&qPlb;Dg@3n*X}N)*t^+K*k<1RvoRX^VJ_rdqPE#S7n)o1q3bN>*>6fTlnsDX#O*jiI?@tXqlq9PKHwWcDC>_K? zjdw_R)BTFzV-Q;96nnpQ0c5xeUl+y(^<(-Y&>od#tUt~?h+BpVe?lvlGk&G79X
Nl9(K?M-JOOL_LHpsc3K@m6Z!N-W*O0%_LYb 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 + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +import QtQuick 2.5 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.2 + +import QGroundControl 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.MultiVehicleManager 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Palette 1.0 + +// Joystick Indicator +Item { + width: joystickRow.width * 1.1 + anchors.top: parent.top + anchors.bottom: parent.bottom + visible: activeVehicle ? activeVehicle.sub : false + + + Component { + id: joystickInfo + + Rectangle { + width: joystickCol.width + ScreenTools.defaultFontPixelWidth * 3 + height: joystickCol.height + ScreenTools.defaultFontPixelHeight * 2 + radius: ScreenTools.defaultFontPixelHeight * 0.5 + color: qgcPal.window + border.color: qgcPal.text + + Column { + id: joystickCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + width: Math.max(joystickGrid.width, joystickLabel.width) + anchors.margins: ScreenTools.defaultFontPixelHeight + anchors.centerIn: parent + + QGCLabel { + id: joystickLabel + text: qsTr("Joystick Status") + font.family: ScreenTools.demiboldFontFamily + anchors.horizontalCenter: parent.horizontalCenter + } + + GridLayout { + id: joystickGrid + anchors.margins: ScreenTools.defaultFontPixelHeight + columnSpacing: ScreenTools.defaultFontPixelWidth + columns: 2 + anchors.horizontalCenter: parent.horizontalCenter + + QGCLabel { text: qsTr("Connected:") } + QGCLabel { + text: joystickManager.activeJoystick ? "Yes" : "No" + color: joystickManager.activeJoystick ? qgcPal.buttonText : "red" + } + QGCLabel { text: qsTr("Enabled:") } + QGCLabel { + text: activeVehicle && activeVehicle.joystickEnabled ? "Yes" : "No" + color: activeVehicle && activeVehicle.joystickEnabled ? qgcPal.buttonText : "red" + } + } + } + + Component.onCompleted: { + var pos = mapFromItem(toolBar, centerX - (width / 2), toolBar.height) + x = pos.x + y = pos.y + ScreenTools.defaultFontPixelHeight + } + } + } + + Row { + id: joystickRow + anchors.top: parent.top + anchors.bottom: parent.bottom + spacing: ScreenTools.defaultFontPixelWidth + + QGCColoredImage { + width: height + anchors.top: parent.top + anchors.bottom: parent.bottom + sourceSize.height: height + source: "/qmlimages/Joystick.png" + fillMode: Image.PreserveAspectFit + color: activeVehicle && activeVehicle.joystickEnabled && joystickManager.activeJoystick ? qgcPal.buttonText : "red" + } + } + + MouseArea { + anchors.fill: parent + onClicked: mainWindow.showPopUp(joystickInfo, mapToItem(toolBar, x, y).x + (width / 2)) + } +} -- 2.22.0