PairingIndicator.qml 25.2 KB
Newer Older
Gus Grubba's avatar
Gus Grubba committed
1 2 3 4 5 6 7 8 9 10 11 12
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

import QtQuick                  2.11
import QtQuick.Controls         2.4
import QtQuick.Layouts          1.11
Gus Grubba's avatar
Gus Grubba committed
13
import QtQuick.Dialogs          1.3
Gus Grubba's avatar
Gus Grubba committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27

import QGroundControl                       1.0
import QGroundControl.Controls              1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.ScreenTools           1.0
import QGroundControl.Palette               1.0

//-------------------------------------------------------------------------
//-- GPS Indicator
Item {
    id:             _root
    width:          pairingRow.width * 1.1
    anchors.top:    parent.top
    anchors.bottom: parent.bottom
Gus Grubba's avatar
Gus Grubba committed
28 29

    property bool _light:               qgcPal.globalTheme === QGCPalette.Light && !activeVehicle
Gus Grubba's avatar
Gus Grubba committed
30
    property real _contentWidth:        ScreenTools.defaultFontPixelWidth  * 34
Gus Grubba's avatar
Gus Grubba committed
31 32 33 34 35 36
    property real _contentSpacing:      ScreenTools.defaultFontPixelHeight * 0.5
    property real _rectWidth:           _contentWidth
    property real _rectHeight:          _contentWidth * 0.75

    property string kPairingManager:    qsTr("Pairing Manager")

Gus Grubba's avatar
Gus Grubba committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
    function runPairing() {
        QGroundControl.pairingManager.firstBoot = false
        if(QGroundControl.pairingManager.pairedDeviceNameList.length > 0) {
            connectionPopup.open()
        } else {
            mhPopup.open()
        }
    }

    Connections {
        target: QGroundControl.pairingManager
        //-- Connect automatically once paired
        onPairingStatusChanged: {
            if(QGroundControl.pairingManager.pairingStatus === PairingManager.PairingSuccess) {
                if(QGroundControl.pairingManager.pairedVehicle !== "") {
                    QGroundControl.pairingManager.connectToPairedDevice(QGroundControl.pairingManager.pairedVehicle)
                }
            }
        }
    }

Gus Grubba's avatar
Gus Grubba committed
58 59 60 61 62 63
    Row {
        id:                     pairingRow
        spacing:                ScreenTools.defaultFontPixelWidth
        anchors.top:            parent.top
        anchors.bottom:         parent.bottom
        anchors.horizontalCenter: parent.horizontalCenter
Gus Grubba's avatar
Gus Grubba committed
64
        QGCColoredImage {
Gus Grubba's avatar
Gus Grubba committed
65 66 67
            id:                 pairingIcon
            height:             parent.height
            width:              height
Gus Grubba's avatar
Gus Grubba committed
68
            color:              qgcPal.text
69
            source:             "/custom/img/PairingIcon.svg"
Gus Grubba's avatar
Gus Grubba committed
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
            sourceSize.width:   width
            fillMode:           Image.PreserveAspectFit
            smooth:             true
            mipmap:             true
            antialiasing:       true
            anchors.verticalCenter: parent.verticalCenter
        }
        QGCLabel {
            text:               qsTr("Pair Vehicle")
            width:              !activeVehicle ? (ScreenTools.defaultFontPixelWidth * 12) : 0
            visible:            !activeVehicle
            font.family:        ScreenTools.demiboldFontFamily
            anchors.verticalCenter: parent.verticalCenter
        }
    }
    MouseArea {
        anchors.fill:           parent
        onClicked: {
Gus Grubba's avatar
Gus Grubba committed
88
            runPairing()
Gus Grubba's avatar
Gus Grubba committed
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
        }
    }
    //-------------------------------------------------------------------------
    //-- Microhard
    Popup {
        id:                     mhPopup
        width:                  mhBody.width
        height:                 mhBody.height
        modal:                  true
        focus:                  true
        parent:                 Overlay.overlay
        x:                      Math.round((mainWindow.width  - width)  * 0.5)
        y:                      Math.round((mainWindow.height - height) * 0.5)
        closePolicy:            Popup.CloseOnEscape | Popup.CloseOnPressOutside
        background: Rectangle {
            anchors.fill:       parent
            color:              qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75)
            radius:             ScreenTools.defaultFontPixelWidth * 0.25
        }
        Item {
            id:                 mhBody
            width:              mhCol.width  + (ScreenTools.defaultFontPixelWidth   * 8)
            height:             mhCol.height + (ScreenTools.defaultFontPixelHeight  * 2)
            anchors.centerIn:   parent
            Column {
                id:                 mhCol
Gus Grubba's avatar
Gus Grubba committed
115
                spacing:            _contentSpacing
Gus Grubba's avatar
Gus Grubba committed
116 117 118
                anchors.centerIn:   parent
                Item { width: 1; height: 1; }
                QGCLabel {
Gus Grubba's avatar
Gus Grubba committed
119
                    text:           kPairingManager
Gus Grubba's avatar
Gus Grubba committed
120
                    font.family:    ScreenTools.demiboldFontFamily
Gus Grubba's avatar
Gus Grubba committed
121
                    font.pointSize: ScreenTools.mediumFontPointSize
Gus Grubba's avatar
Gus Grubba committed
122 123
                    anchors.horizontalCenter: parent.horizontalCenter
                }
Gus Grubba's avatar
Gus Grubba committed
124 125 126 127 128
                Rectangle {
                    width:          _contentWidth
                    height:         1
                    color:          qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25)
                }
Gus Grubba's avatar
Gus Grubba committed
129 130
                Item { width: 1; height: 1; }
                QGCLabel {
Gus Grubba's avatar
Gus Grubba committed
131
                    text:           qsTr("To connect to your vehicle, please click on the pairing button in order to put the vehicle in discovery mode")
Gus Grubba's avatar
Gus Grubba committed
132 133 134 135 136
                    width:          _contentWidth
                    wrapMode:       Text.WordWrap
                    horizontalAlignment: Text.AlignHCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                }
Gus Grubba's avatar
Gus Grubba committed
137 138 139 140
                Item { width: 1; height: ScreenTools.defaultFontPixelHeight  * 2; }
                QGCColoredImage {
                    height:             ScreenTools.defaultFontPixelHeight * 6
                    width:              height
141
                    source:             "/custom/img/PairingButton.svg"
Gus Grubba's avatar
Gus Grubba committed
142 143 144 145 146
                    sourceSize.height:  height
                    fillMode:           Image.PreserveAspectFit
                    mipmap:             true
                    smooth:             true
                    color:              qgcPal.text
Gus Grubba's avatar
Gus Grubba committed
147 148
                    anchors.horizontalCenter: parent.horizontalCenter
                }
Gus Grubba's avatar
Gus Grubba committed
149
                Item { width: 1; height: ScreenTools.defaultFontPixelHeight  * 2; }
Gus Grubba's avatar
Gus Grubba committed
150
                QGCButton {
Gus Grubba's avatar
Gus Grubba committed
151
                    text:           qsTr("Pair a Vehicle")
Gus Grubba's avatar
Gus Grubba committed
152 153 154 155
                    width:          _contentWidth
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        mhPopup.close()
Gus Grubba's avatar
Gus Grubba committed
156
                        progressPopup.open()
Gus Grubba's avatar
Gus Grubba committed
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
                        QGroundControl.pairingManager.startMicrohardPairing();
                    }
                }
                Item { width: 1; height: 1; }
            }
        }
    }
    //-------------------------------------------------------------------------
    //-- NFC
    Popup {
        id:                     nfcPopup
        width:                  nfcBody.width
        height:                 nfcBody.height
        modal:                  true
        focus:                  true
        parent:                 Overlay.overlay
        x:                      Math.round((mainWindow.width  - width)  * 0.5)
        y:                      Math.round((mainWindow.height - height) * 0.5)
        closePolicy:            Popup.CloseOnEscape | Popup.CloseOnPressOutside
        background: Rectangle {
            anchors.fill:       parent
            color:              qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75)
            radius:             ScreenTools.defaultFontPixelWidth * 0.25
        }
        Item {
            id:                 nfcBody
            width:              nfcCol.width  + (ScreenTools.defaultFontPixelWidth   * 8)
            height:             nfcCol.height + (ScreenTools.defaultFontPixelHeight  * 2)
            anchors.centerIn:   parent
            Column {
                id:                 nfcCol
Gus Grubba's avatar
Gus Grubba committed
188
                spacing:            _contentSpacing
Gus Grubba's avatar
Gus Grubba committed
189 190 191
                anchors.centerIn:   parent
                Item { width: 1; height: 1; }
                QGCLabel {
Gus Grubba's avatar
Gus Grubba committed
192
                    text:           kPairingManager
Gus Grubba's avatar
Gus Grubba committed
193
                    font.family:    ScreenTools.demiboldFontFamily
Gus Grubba's avatar
Gus Grubba committed
194
                    font.pointSize: ScreenTools.mediumFontPointSize
Gus Grubba's avatar
Gus Grubba committed
195 196
                    anchors.horizontalCenter: parent.horizontalCenter
                }
Gus Grubba's avatar
Gus Grubba committed
197 198 199 200 201
                Rectangle {
                    width:          _contentWidth
                    height:         1
                    color:          qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25)
                }
Gus Grubba's avatar
Gus Grubba committed
202 203
                Item { width: 1; height: 1; }
                Rectangle {
Gus Grubba's avatar
Gus Grubba committed
204 205
                    width:          _rectWidth
                    height:         _rectHeight
Gus Grubba's avatar
Gus Grubba committed
206 207 208 209 210
                    color:          Qt.rgba(0,0,0,0)
                    border.color:   qgcPal.text
                    border.width:   1
                    anchors.horizontalCenter: parent.horizontalCenter
                    QGCLabel {
Gus Grubba's avatar
Gus Grubba committed
211
                        text:       "Vehicle and Tablet  Graphic"
Gus Grubba's avatar
Gus Grubba committed
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
                        anchors.centerIn: parent
                    }
                }
                Item { width: 1; height: 1; }
                QGCLabel {
                    text:           qsTr("Please make sure your vehicle is close to your Ground Station device")
                    width:          _contentWidth
                    wrapMode:       Text.WordWrap
                    horizontalAlignment: Text.AlignHCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                Item { width: 1; height: 1; }
                QGCButton {
                    text:           qsTr("Pair Via NFC")
                    width:          _contentWidth
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        nfcPopup.close()
Gus Grubba's avatar
Gus Grubba committed
230
                        progressPopup.open()
Gus Grubba's avatar
Gus Grubba committed
231 232 233 234 235 236 237 238
                        QGroundControl.pairingManager.startNFCScan();
                    }
                }
                Item { width: 1; height: 1; }
            }
        }
    }
    //-------------------------------------------------------------------------
Gus Grubba's avatar
Gus Grubba committed
239
    //-- Pairing/Connection Progress
Gus Grubba's avatar
Gus Grubba committed
240
    Popup {
Gus Grubba's avatar
Gus Grubba committed
241 242 243
        id:                     progressPopup
        width:                  progressBody.width
        height:                 progressBody.height
Gus Grubba's avatar
Gus Grubba committed
244 245 246 247 248
        modal:                  true
        focus:                  true
        parent:                 Overlay.overlay
        x:                      Math.round((mainWindow.width  - width)  * 0.5)
        y:                      Math.round((mainWindow.height - height) * 0.5)
Gus Grubba's avatar
Gus Grubba committed
249
        closePolicy:            cancelButton.visible ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside)
Gus Grubba's avatar
Gus Grubba committed
250 251 252 253 254 255
        background: Rectangle {
            anchors.fill:       parent
            color:              qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75)
            radius:             ScreenTools.defaultFontPixelWidth * 0.25
        }
        Item {
Gus Grubba's avatar
Gus Grubba committed
256 257 258
            id:                 progressBody
            width:              progressCol.width  + (ScreenTools.defaultFontPixelWidth   * 8)
            height:             progressCol.height + (ScreenTools.defaultFontPixelHeight  * 2)
Gus Grubba's avatar
Gus Grubba committed
259 260
            anchors.centerIn:   parent
            Column {
Gus Grubba's avatar
Gus Grubba committed
261
                id:                     progressCol
Gus Grubba's avatar
Gus Grubba committed
262 263
                spacing:                _contentSpacing
                anchors.centerIn:       parent
Gus Grubba's avatar
Gus Grubba committed
264 265
                Item { width: 1; height: 1; }
                QGCLabel {
Gus Grubba's avatar
Gus Grubba committed
266 267
                    text:               kPairingManager
                    font.family:        ScreenTools.demiboldFontFamily
Gus Grubba's avatar
Gus Grubba committed
268
                    font.pointSize:     ScreenTools.mediumFontPointSize
Gus Grubba's avatar
Gus Grubba committed
269 270
                    anchors.horizontalCenter: parent.horizontalCenter
                }
Gus Grubba's avatar
Gus Grubba committed
271 272
                QGCLabel {
                    text:               QGroundControl.pairingManager ? QGroundControl.pairingManager.pairingStatusStr : ""
Gus Grubba's avatar
Gus Grubba committed
273
                    visible:            !connectedIndicator.visible
Gus Grubba's avatar
Gus Grubba committed
274 275 276 277 278 279 280
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                Rectangle {
                    width:              _contentWidth
                    height:             1
                    color:              qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25)
                }
Gus Grubba's avatar
Gus Grubba committed
281
                Item { width: 1; height: 1; }
Gus Grubba's avatar
Gus Grubba committed
282 283
                //-- Pairing/Connecting
                Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 3; visible: busyIndicator.visible; }
Gus Grubba's avatar
Gus Grubba committed
284 285
                QGCColoredImage {
                    id:                 busyIndicator
Gus Grubba's avatar
Gus Grubba committed
286
                    height:             ScreenTools.defaultFontPixelHeight * 4
Gus Grubba's avatar
Gus Grubba committed
287 288 289 290 291 292 293
                    width:              height
                    source:             "/qmlimages/MapSync.svg"
                    sourceSize.height:  height
                    fillMode:           Image.PreserveAspectFit
                    mipmap:             true
                    smooth:             true
                    color:              qgcPal.text
Gus Grubba's avatar
Gus Grubba committed
294
                    visible:            QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive || QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnecting
Gus Grubba's avatar
Gus Grubba committed
295 296 297 298 299 300 301 302 303
                    anchors.horizontalCenter: parent.horizontalCenter
                    RotationAnimation on rotation {
                        loops:          Animation.Infinite
                        from:           360
                        to:             0
                        duration:       720
                        running:        busyIndicator.visible
                    }
                }
Gus Grubba's avatar
Gus Grubba committed
304 305 306 307 308
                Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 3; visible: busyIndicator.visible; }
                //-- Error State
                Image {
                    height:             ScreenTools.defaultFontPixelHeight * 4
                    width:              height
309
                    source:             "/custom/img/PairingError.svg"
Gus Grubba's avatar
Gus Grubba committed
310 311 312 313 314 315 316 317 318 319 320 321
                    sourceSize.height:  height
                    fillMode:           Image.PreserveAspectFit
                    mipmap:             true
                    smooth:             true
                    visible:            QGroundControl.pairingManager.errorState
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                //-- Connection Successful
                Image {
                    id:                 connectedIndicator
                    height:             width * 0.2
                    width:              _contentWidth
322
                    source:             "/custom/img/PairingConnected.svg"
Gus Grubba's avatar
Gus Grubba committed
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429
                    sourceSize.height:  height
                    fillMode:           Image.PreserveAspectFit
                    mipmap:             true
                    smooth:             true
                    visible:            QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                Item { width: 1; height: _contentSpacing; visible: connectedIndicator.visible; }
                QGCLabel {
                    text:               QGroundControl.pairingManager.pairedVehicle
                    visible:            connectedIndicator.visible
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                QGCLabel {
                    text:               qsTr("Connection Successful")
                    visible:            connectedIndicator.visible
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                Item { width: 1; height: _contentSpacing; }
                //-- Buttons
                QGCButton {
                    width:                  _contentWidth
                    visible:                QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected) : false
                    text:                   qsTr("Done")
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        progressPopup.close()
                    }
                }
                QGCButton {
                    text:                   qsTr("Pair Another")
                    width:                  _contentWidth
                    visible:                QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected) : false
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        progressPopup.close()
                        mhPopup.open()
                    }
                }
                QGCButton {
                    text:                   qsTr("Try Again")
                    width:                  _contentWidth
                    visible:                QGroundControl.pairingManager ? QGroundControl.pairingManager.errorState : false
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        progressPopup.close()
                        runPairing()
                    }
                }
                QGCButton {
                    id:                     cancelButton
                    width:                  _contentWidth
                    visible:                QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive || QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnecting || QGroundControl.pairingManager.errorState) : false
                    text:                   qsTr("Cancel")
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        if(QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive)
                            QGroundControl.pairingManager.stopPairing()
                        else {
                            //-- TODO: Cancel connection to paired device
                        }
                        progressPopup.close()
                    }
                }
                Item { width: 1; height: 1; }
            }
        }
    }
    //-------------------------------------------------------------------------
    //-- Connection Manager
    Popup {
        id:                     connectionPopup
        width:                  connectionBody.width
        height:                 connectionBody.height
        modal:                  true
        focus:                  true
        parent:                 Overlay.overlay
        x:                      Math.round((mainWindow.width  - width)  * 0.5)
        y:                      Math.round((mainWindow.height - height) * 0.5)
        closePolicy:            cancelButton.visible ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside)
        background: Rectangle {
            anchors.fill:       parent
            color:              qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75)
            radius:             ScreenTools.defaultFontPixelWidth * 0.25
        }
        Item {
            id:                 connectionBody
            width:              connectionCol.width  + (ScreenTools.defaultFontPixelWidth   * 8)
            height:             connectionCol.height + (ScreenTools.defaultFontPixelHeight  * 2)
            anchors.centerIn:   parent
            Column {
                id:                     connectionCol
                spacing:                _contentSpacing
                anchors.centerIn:       parent
                Item { width: 1; height: 1; }
                QGCLabel {
                    text:               kPairingManager
                    font.family:        ScreenTools.demiboldFontFamily
                    font.pointSize:     ScreenTools.mediumFontPointSize
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                Rectangle {
                    width:              _contentWidth
                    height:             1
                    color:              qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25)
                }
                Item { width: 1; height: 1; }
Gus Grubba's avatar
Gus Grubba committed
430
                QGCLabel {
431 432 433
                    text:               qsTr("List Of Available Devices")
                    visible:            QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairedDeviceNameList.length > 0 && !cancelButton.visible) : false
                    font.family:        ScreenTools.demiboldFontFamily
Gus Grubba's avatar
Gus Grubba committed
434 435 436
                }
                Item { width: 1; height: 1; }
                GridLayout {
437 438 439 440
                    columns:            3
                    visible:            QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairedDeviceNameList.length > 0 && !cancelButton.visible) : false
                    columnSpacing:      ScreenTools.defaultFontPixelWidth
                    rowSpacing:         ScreenTools.defaultFontPixelHeight * 0.25
Gus Grubba's avatar
Gus Grubba committed
441
                    anchors.horizontalCenter: parent.horizontalCenter
Gus Grubba's avatar
Gus Grubba committed
442
                    property var _pairModel: QGroundControl.pairingManager ? QGroundControl.pairingManager.pairedDeviceNameList : []
Gus Grubba's avatar
Gus Grubba committed
443
                    Repeater {
Gus Grubba's avatar
Gus Grubba committed
444 445
                        model:                  parent._pairModel
                        delegate: QGCLabel {
Gus Grubba's avatar
Gus Grubba committed
446
                            text:               modelData
Gus Grubba's avatar
Gus Grubba committed
447 448 449 450
                            Layout.row:         index
                            Layout.column:      0
                            Layout.minimumWidth:ScreenTools.defaultFontPixelWidth * 14
                            Layout.fillWidth:   true
Gus Grubba's avatar
Gus Grubba committed
451 452 453
                        }
                    }
                    Repeater {
Gus Grubba's avatar
Gus Grubba committed
454 455
                        model:                  parent._pairModel
                        delegate: QGCButton {
Gus Grubba's avatar
Gus Grubba committed
456 457 458 459 460
                            text:               qsTr("Connect")
                            Layout.row:         index
                            Layout.column:      1
                            onClicked: {
                                QGroundControl.pairingManager.connectToPairedDevice(modelData)
Gus Grubba's avatar
Gus Grubba committed
461 462
                                connectionPopup.close()
                                progressPopup.open()
Gus Grubba's avatar
Gus Grubba committed
463
                            }
Gus Grubba's avatar
Gus Grubba committed
464 465 466
                        }
                    }
                    Repeater {
Gus Grubba's avatar
Gus Grubba committed
467 468 469 470 471 472 473 474 475
                        model:                  parent._pairModel
                        delegate: QGCColoredImage {
                            Layout.preferredWidth:  ScreenTools.defaultFontPixelHeight * 1.5
                            Layout.preferredHeight: ScreenTools.defaultFontPixelHeight * 1.5
                            sourceSize.height:      height
                            source:                 "/res/TrashDelete.svg"
                            color:                  qgcPal.colorRed
                            Layout.row:             index
                            Layout.column:          2
Gus Grubba's avatar
Gus Grubba committed
476
                            MouseArea {
Gus Grubba's avatar
Gus Grubba committed
477
                                anchors.fill:       parent
Gus Grubba's avatar
Gus Grubba committed
478
                                onClicked: {
Gus Grubba's avatar
Gus Grubba committed
479 480 481 482
                                    removePrompt.open()
                                }
                            }
                            MessageDialog {
Gus Grubba's avatar
Gus Grubba committed
483 484 485 486 487
                                id:                 removePrompt
                                title:              qsTr("Remove Paired Vehicle")
                                text:               qsTr("Confirm removing %1?").arg(modelData)
                                standardButtons:    StandardButton.Yes | StandardButton.No
                                onNo:               removePrompt.close()
Gus Grubba's avatar
Gus Grubba committed
488 489 490
                                onYes: {
                                    QGroundControl.pairingManager.removePairedDevice(modelData)
                                    removePrompt.close()
Gus Grubba's avatar
Gus Grubba committed
491 492 493 494 495
                                }
                            }
                        }
                    }
                }
Gus Grubba's avatar
Gus Grubba committed
496 497 498
                Item { width: 1; height: _contentSpacing; }
                QGCButton {
                    width:                  _contentWidth
Gus Grubba's avatar
Gus Grubba committed
499
                    text:                   qsTr("Close")
Gus Grubba's avatar
Gus Grubba committed
500 501 502
                    anchors.horizontalCenter: parent.horizontalCenter
                    onClicked: {
                        connectionPopup.close()
Gus Grubba's avatar
Gus Grubba committed
503
                    }
Gus Grubba's avatar
Gus Grubba committed
504 505 506 507 508
                }
                QGCButton {
                    text:                   qsTr("Pair Another")
                    width:                  _contentWidth
                    anchors.horizontalCenter: parent.horizontalCenter
Gus Grubba's avatar
Gus Grubba committed
509 510
                    onClicked: {
                        connectionPopup.close()
Gus Grubba's avatar
Gus Grubba committed
511
                        mhPopup.open()
Gus Grubba's avatar
Gus Grubba committed
512 513 514 515 516 517 518
                    }
                }
                Item { width: 1; height: 1; }
            }
        }
    }
}