improved desktop UI
[mardrone] / mardrone / ardrone_desktop.qml
index bcfcfa4..d5bf0b8 100644 (file)
@@ -1,21 +1,22 @@
-
+// uiName:Desktop
 import Drone 1.0
 import QtQuick 1.0
 import QtDesktop 0.1
-import gauges 1.0
+import Gauges 1.0
 import JoyStick 1.0
 
 Window {
     title: "MArdrone"
-
-    width: 1024
-    height: 480
+    id:mainWindow
+    width: 700
+    height: 800
     maximumHeight: mainWindow.height
-    minimumHeight: 480
+    minimumHeight: 800
     maximumWidth: 1280
-    minimumWidth: 800
+    minimumWidth: 700
     visible: true
 
+
     MenuBar {
         Menu {
             text: "File"
@@ -29,6 +30,11 @@ Window {
                 shortcut: "Ctrl+Q"
                 onTriggered: Qt.quit()
             }
+            MenuItem {
+                text: "Record"
+                shortcut: "Ctrl+R"
+                onTriggered: Qt.quit()
+            }
         }
         Menu {
             text: "Edit"
@@ -54,9 +60,13 @@ Window {
 
   }
 
+    Column {
+        width:parent.width
+     //   spacing:5
       Rectangle {
-        id:mainWindow
-        width:640
+        id:mainWiew
+        width:parent.width
+        color:"black"
         height:480
         //onEntered:(mainWindow.fullscreen=true)
 
@@ -64,30 +74,32 @@ Window {
         DroneVideo {
             id:droneVideo
             y:0
-            x:0
+         //       anchors.horizontalCenter: parent.horizontalCenter
          //   anchors.horizontalCenter:parent.horizontalCenter
-            width:drone.confFullScreen? parent.width:640 ;height:480*width/640;
+            width:drone.confFullScreen? parent.width:640 ;height:width<=640 ?480*width/640:480;
+        }
+        Binding {
+          target:drone
+          property:"logSeq"
+          value: droneVideo.frameSeq;
         }
-
         EfisPFD {
             id:hudPDF
             y:0
-            x:0
+   //         anchors.horizontalCenter: parent.horizontalCenter
             visible:drone.confShowHorizon
             roll:drone.droneRoll
             pitch:drone.dronePitch
             ias:drone.droneSpeed
-            alt:drone.droneAltitude
+            alt:drone.droneAltitude/10
             indicatorColor:"green"
             skyColor:"#00000000"
             groundColor:"#00000000"
             width:640;height:480;
         }
-
-
         Text {
             y:100
- //           visible:drone.confUseAccel
+            visible:drone.confShowDebug
             color: "#00FF00"
             id: droneCtrlValues
             font.pixelSize:20
@@ -111,17 +123,20 @@ Window {
             font.pixelSize:20
             text: drone.decodedStatus
         }
-        Button {
+   /*     Button {
             y:150;x:0
             height: 50
             width: 50
             iconSource: "gear32x32.png"
             onClicked:{   configDialog.visible = true }
         }
-
+*/
         JoyStickIndicator {
-            x:200;y:350
-            visible:drone.showJSIndivators
+
+            anchors.left:parent.left
+            anchors.bottom:parent.bottom
+            anchors.margins:10
+            visible:drone.confShowJSIndicators&js.haveJoyStick&drone.confUseJoyStick
             border.width:1
             color:"transparent"
             width:100;height:100
@@ -142,8 +157,11 @@ Window {
 
 
         JoyStickIndicator {
-            x:500;y:350
-            visible:drone.showJSIndivators
+
+            anchors.right:parent.right
+            anchors.bottom:parent.bottom
+            anchors.margins:10
+            visible:drone.confShowJSIndicators&js.haveJoyStick&drone.confUseJoyStick
             border.width:1
             color:"transparent"
             width:100;height:100
@@ -166,6 +184,7 @@ Window {
                 id:lj
                 width:280;height:280;
                 y:200
+                joyBackground: ""
                 visible: !drone.confUseAccel & !drone.confUseJoyStick
                 anchors.left:parent.left
                 anchors.margins:50
@@ -179,6 +198,7 @@ Window {
                  visible: !drone.confUseJoyStick
                 id:rj
                 y:200
+                joyBackground: ""
                 anchors.right:parent.right
                 width:280;height:280;
                 anchors.margins:50
@@ -186,63 +206,216 @@ Window {
                 onXvChanged:{drone.yaw=xv/200.0;}
                 onPressedChanged: { drone.ctrlActive=pressed;}
             }
-        Column {
-            anchors.left: droneVideo.right
+      }
+
+      Rectangle {
+          width:parent.width
+     //     width:chlidrenRect.width
+     //     height:childrenRect.height
+          height:320
+          color: "black"
+
+
+
+        Row {
+            id:instrumentPanel
+            spacing:5
+            anchors.fill:parent
+            anchors.margins:5
+
             EfisPFD {
                 id:pDF
-                width:320
-                height:240
-    //            visible:drone.confShowHorizon
+                width:300
+                height:320
+                showHSI:true
                 roll:drone.droneRoll
                 pitch:drone.dronePitch
                 ias:drone.droneSpeed
-                alt:drone.droneAltitude
+                alt:drone.droneAltitude/10
+           //     bezel:"glareshield1.png"
+            }
+        Grid {
+            columns: 3
+
+
+        AltGauge {
+            width:120
+            height:120
+            id:altGauge
+            value:drone.droneAltitude/10
+            bezel:"bezel.png"
+        }
+        AttitudeGauge {
+            width:120
+            height:120
+            id:attGauge
+            roll:drone.droneRoll
+            pitch:drone.dronePitch
+            bezel:"bezel.png"
+        }
+        Item {
+            width:120
+            height:120
+
+
+        GaugeArc {
+            anchors.fill:parent
+            id:speedGauge
+ //           anchors.margins:10
+            displayScale:0.95
+            font.pixelSize:10
+            tickIncrement:20
+            tickSpacing:24
+            tickMinor:5
+            lowPosition:220
+            highPosition:120
+            low:0
+            high:200
+            gaugeStyle:2
+            color:"white"
+            value:drone.droneSpeed
+            lineWidth:2
+            backColor:"black"
+        }
+        Image {
+            anchors.fill:parent
+            source:"bezel.png"
+        }
+        }
+
+        Item {
+            width:120
+            height:120
+
+
+        GaugeArc {
+            anchors.fill:parent
+            id:fuelGauge
+ //           anchors.margins:10
+            displayScale:0.95
+            font.pixelSize:10
+            tickIncrement:10
+            tickSpacing:22
+            tickMinor:5
+            lowPosition:240
+            highPosition:120
+            low:0
+            high:100
+            gaugeStyle:2
+            color:"white"
+            value:drone.droneVBat
+            lineWidth:2
+            backColor:"black"
+        }
+        Image {
+            anchors.fill:parent
+            source:"bezel.png"
+        }
+        }
+        Item {
+            width:120
+            height:120
+
+            HeadingGauge {
+                width:120
+                height:120
+                id:hdgGauge
+                value:drone.droneYaw
+                bezel:"bezel.png"
+            }
+        }
+        Item {
+            width:120
+            height:120
+        Rectangle {
+            anchors.fill:parent
+            anchors.margins:5
+            color:"gray"
             }
         Row {
+            anchors.centerIn:parent
             spacing: 5
-            anchors.right:parent.right
-            anchors.rightMargin: 10
-            y:100
-            height:100
+            anchors.margins: 30
+            height:90
         BarGauge {
            val:drone.pwm_motor1;
            max: 255
-           height:100
+           height:parent.height
+           width:10
         }
         BarGauge {
             val:drone.pwm_motor2;
             max: 255
-            height:100
+           height:parent.height
+                     width:10
         }
         BarGauge {
             val:drone.pwm_motor3;
             max: 255
-            height:100
+            height:parent.height
+            width:10
         }
         BarGauge {
             val:drone.pwm_motor4;
             max: 255
-            height:100
+            height:parent.height
+             width:10
         }
+        /*
         BarGauge {
             val:drone.droneVBat
             max: 100
-            height:100
+            height:parent.height
+                      width:10
         }
+        */
         }
-        AltGauge {
-            width:150
-            height:150
-            id:altGauge
-        //    value:drone.altitude
-            value:testAlt.value
+        Image {
+            anchors.fill:parent
+            source:"bezel.png"
         }
-        Slider {
-           id: testAlt
-           maximumValue:1000
         }
+        Button {
+
+            width:80
+            height:50
+            id:flyButton
+     //       anchors.bottom:parent.bottom
+            anchors.margins:15
+            text:"Fly";
+            checkable:true
+            onClicked:{drone.fly=checked;
+            // mainWindow.fullsecreen=checked;
+            }
+        }
+        Button {
 
+            width:90
+            height:50
+            id:emergencyButton
+         //   anchors.bottom:parent.bottom
+            anchors.margins:15
+            text:"Emrg";
+            checkable:true
+            onClicked:{drone.emergency=checked;}
         }
+
+        Button {
+
+            width:100
+            height:50
+            id:recordButton
+       //     anchors.bottom:parent.bottom
+            anchors.margins:15
+            text:"Rec";
+            checkable:true
+            onClicked:{droneVideo.recVideo=checked; drone.logFileName=droneVideo.videoFileName; drone.recordLog=checked;}
+        }
+            } // Grid if instruments
+        }
+
+        } // Column ( Main window content )
+       }
         Dialog {
             id:configDialog
             width:800
@@ -250,6 +423,6 @@ Window {
             data:ConfigDialogDesktop {}
         }
 
-        } // Main page
-    }
+  } // Main page
+