GeneralSettings.qml 19 KB
Newer Older
1 2 3 4 5 6 7 8
/****************************************************************************
 *
 *   (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.
 *
 ****************************************************************************/
dogmaphobic's avatar
dogmaphobic committed
9 10 11 12 13 14 15 16 17


import QtQuick                  2.5
import QtQuick.Controls         1.2
import QtQuick.Controls.Styles  1.2
import QtQuick.Dialogs          1.1

import QGroundControl                       1.0
import QGroundControl.FactSystem            1.0
18
import QGroundControl.FactControls          1.0
dogmaphobic's avatar
dogmaphobic committed
19 20 21 22 23
import QGroundControl.Controls              1.0
import QGroundControl.ScreenTools           1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.Palette               1.0

24 25 26
QGCView {
    id:                 qgcView
    viewPanel:          panel
27
    color:              qgcPal.window
28 29
    anchors.fill:       parent
    anchors.margins:    ScreenTools.defaultFontPixelWidth
dogmaphobic's avatar
dogmaphobic committed
30

dogmaphobic's avatar
dogmaphobic committed
31
    property Fact _percentRemainingAnnounce:    QGroundControl.multiVehicleManager.disconnectedVehicle.battery.percentRemainingAnnounce
Don Gagne's avatar
Don Gagne committed
32
    property real _editFieldWidth:              ScreenTools.defaultFontPixelWidth * 15
33

34
    QGCPalette { id: qgcPal }
dogmaphobic's avatar
dogmaphobic committed
35

36 37 38 39 40 41 42 43 44
    QGCViewPanel {
        id:             panel
        anchors.fill:   parent

        QGCFlickable {
            clip:               true
            anchors.fill:       parent
            contentHeight:      settingsColumn.height
            contentWidth:       settingsColumn.width
Don Gagne's avatar
Don Gagne committed
45

46 47 48 49 50 51 52
            Column {
                id:                 settingsColumn
                anchors.margins:    ScreenTools.defaultFontPixelWidth
                spacing:            ScreenTools.defaultFontPixelHeight / 2

                //-----------------------------------------------------------------
                //-- Base UI Font Point Size
53
                Row {
54
                    spacing: ScreenTools.defaultFontPixelWidth
Don Gagne's avatar
Don Gagne committed
55

56 57 58 59 60
                    QGCLabel {
                        id:     baseFontLabel
                        text:   qsTr("Base UI font size:")
                        anchors.verticalCenter: parent.verticalCenter
                    }
Don Gagne's avatar
Don Gagne committed
61

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
                    Row {
                        id:         baseFontRow
                        spacing:    ScreenTools.defaultFontPixelWidth / 2
                        anchors.verticalCenter: parent.verticalCenter

                        QGCButton {
                            id:     decrementButton
                            width:  height
                            height: baseFontEdit.height
                            text:   "-"

                            onClicked: {
                                if(ScreenTools.defaultFontPointSize > 6) {
                                    QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize - 1
                                }
77 78
                            }
                        }
Don Gagne's avatar
Don Gagne committed
79

80 81 82 83 84 85 86 87 88 89 90 91 92 93
                        QGCTextField {
                            id:             baseFontEdit
                            width:          _editFieldWidth - (decrementButton.width * 2) - (baseFontRow.spacing * 2)
                            text:           QGroundControl.baseFontPointSize
                            showUnits:      true
                            unitsLabel:     "pt"
                            maximumLength:  6
                            validator:      DoubleValidator {bottom: 6.0; top: 48.0; decimals: 2;}

                            onEditingFinished: {
                                var point = parseFloat(text)
                                if(point >= 6.0 && point <= 48.0)
                                    QGroundControl.baseFontPointSize = point;
                            }
94
                        }
Don Gagne's avatar
Don Gagne committed
95

96 97 98 99
                        QGCButton {
                            width:  height
                            height: baseFontEdit.height
                            text:   "+"
Don Gagne's avatar
Don Gagne committed
100

101 102 103 104
                            onClicked: {
                                if(ScreenTools.defaultFontPointSize < 49) {
                                    QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize + 1
                                }
105 106 107
                            }
                        }
                    }
Don Gagne's avatar
Don Gagne committed
108

109 110 111 112
                    QGCLabel {
                        anchors.verticalCenter: parent.verticalCenter
                        text:                   qsTr("(requires app restart)")
                    }
113 114
                }

115 116
                //-----------------------------------------------------------------
                //-- Units
117

118 119
                Row {
                    spacing:    ScreenTools.defaultFontPixelWidth
120

121 122 123 124 125
                    QGCLabel {
                        width:              baseFontLabel.width
                        anchors.baseline:   distanceUnitsCombo.baseline
                        text:               qsTr("Distance units:")
                    }
126

127 128 129 130 131 132 133 134 135 136 137
                    FactComboBox {
                        id:                 distanceUnitsCombo
                        width:              _editFieldWidth
                        fact:               QGroundControl.distanceUnits
                        indexModel:         false
                    }

                    QGCLabel {
                        anchors.baseline:   distanceUnitsCombo.baseline
                        text:               qsTr("(requires app restart)")
                    }
138 139 140

                }

141 142
                Row {
                    spacing:                ScreenTools.defaultFontPixelWidth
143

144 145 146 147 148
                    QGCLabel {
                        width:              baseFontLabel.width
                        anchors.baseline:   speedUnitsCombo.baseline
                        text:               qsTr("Speed units:")
                    }
149

150 151 152 153 154 155
                    FactComboBox {
                        id:                 speedUnitsCombo
                        width:              _editFieldWidth
                        fact:               QGroundControl.speedUnits
                        indexModel:         false
                    }
156

157 158 159 160
                    QGCLabel {
                        anchors.baseline:   speedUnitsCombo.baseline
                        text:               qsTr("(requires app restart)")
                    }
161 162
                }

163 164 165
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
166
                }
Don Gagne's avatar
Don Gagne committed
167

168 169 170 171 172 173 174 175
                //-----------------------------------------------------------------
                //-- Audio preferences
                QGCCheckBox {
                    text:       qsTr("Mute all audio output")
                    checked:    QGroundControl.isAudioMuted
                    onClicked: {
                        QGroundControl.isAudioMuted = checked
                    }
dogmaphobic's avatar
dogmaphobic committed
176
                }
177 178 179 180 181 182 183 184 185 186
                //-----------------------------------------------------------------
                //-- Prompt Save Log
                QGCCheckBox {
                    id:         promptSaveLog
                    text:       qsTr("Prompt to save Flight Data Log after each flight")
                    checked:    QGroundControl.isSaveLogPrompt
                    visible:    !ScreenTools.isMobile
                    onClicked: {
                        QGroundControl.isSaveLogPrompt = checked
                    }
187
                }
188 189 190 191 192 193 194 195 196 197
                //-----------------------------------------------------------------
                //-- Prompt Save even if not armed
                QGCCheckBox {
                    text:       qsTr("Prompt to save Flight Data Log even if vehicle was not armed")
                    checked:    QGroundControl.isSaveLogPromptNotArmed
                    visible:    !ScreenTools.isMobile
                    enabled:    promptSaveLog.checked
                    onClicked: {
                        QGroundControl.isSaveLogPromptNotArmed = checked
                    }
dogmaphobic's avatar
dogmaphobic committed
198
                }
199 200 201 202 203 204 205 206
                //-----------------------------------------------------------------
                //-- Clear settings
                QGCCheckBox {
                    id:         clearCheck
                    text:       qsTr("Clear all settings on next start")
                    checked:    false
                    onClicked: {
                        checked ? clearDialog.visible = true : QGroundControl.clearDeleteAllSettingsNextBoot()
dogmaphobic's avatar
dogmaphobic committed
207
                    }
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
                    MessageDialog {
                        id:         clearDialog
                        visible:    false
                        icon:       StandardIcon.Warning
                        standardButtons: StandardButton.Yes | StandardButton.No
                        title:      qsTr("Clear Settings")
                        text:       qsTr("All saved settings will be reset the next time you start QGroundControl. Is this really what you want?")
                        onYes: {
                            QGroundControl.deleteAllSettingsNextBoot()
                            clearDialog.visible = false
                        }
                        onNo: {
                            clearCheck.checked  = false
                            clearDialog.visible = false
                        }
dogmaphobic's avatar
dogmaphobic committed
223 224
                    }
                }
225 226 227 228
                //-----------------------------------------------------------------
                //-- Battery talker
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
229

230 231 232 233 234
                    QGCCheckBox {
                        id:                 announcePercentCheckbox
                        anchors.baseline:   announcePercent.baseline
                        text:               qsTr("Announce battery lower than:")
                        checked:            _percentRemainingAnnounce.value != 0
235

236 237 238 239 240 241
                        onClicked: {
                            if (checked) {
                                _percentRemainingAnnounce.value = _percentRemainingAnnounce.defaultValueString
                            } else {
                                _percentRemainingAnnounce.value = 0
                            }
242 243 244
                        }
                    }

245 246 247 248 249
                    FactTextField {
                        id:                 announcePercent
                        fact:               _percentRemainingAnnounce
                        enabled:            announcePercentCheckbox.checked
                    }
250
                }
251

252 253 254 255
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
                }
Don Gagne's avatar
Don Gagne committed
256

257 258 259 260
                //-----------------------------------------------------------------
                //-- Map Providers
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
Don Gagne's avatar
Don Gagne committed
261

262 263 264 265 266
                    QGCLabel {
                        id:                 mapProvidersLabel
                        anchors.baseline:   mapProviders.baseline
                        text:               qsTr("Map Provider:")
                    }
Don Gagne's avatar
Don Gagne committed
267

268 269 270 271 272 273 274 275 276 277 278
                    QGCComboBox {
                        id:                 mapProviders
                        width:              _editFieldWidth
                        model:              QGroundControl.flightMapSettings.mapProviders
                        Component.onCompleted: {
                            var index = mapProviders.find(QGroundControl.flightMapSettings.mapProvider)
                            if (index < 0) {
                                console.warn(qsTr("Active map provider not in combobox"), QGroundControl.flightMapSettings.mapProvider)
                            } else {
                                mapProviders.currentIndex = index
                            }
dogmaphobic's avatar
dogmaphobic committed
279
                        }
280 281 282 283 284 285
                        onActivated: {
                            if (index != -1) {
                                currentIndex = index
                                console.log(qsTr("New map provider: ") + model[index])
                                QGroundControl.flightMapSettings.mapProvider = model[index]
                            }
dogmaphobic's avatar
dogmaphobic committed
286 287 288
                        }
                    }
                }
289 290 291 292 293 294 295 296 297 298
                //-----------------------------------------------------------------
                //-- Palette Styles
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth

                    QGCLabel {
                        width:              mapProvidersLabel.width
                        anchors.baseline:   paletteCombo.baseline
                        text:               qsTr("Style:")
                    }
Don Gagne's avatar
Don Gagne committed
299

300 301 302 303 304
                    QGCComboBox {
                        id:             paletteCombo
                        width:          _editFieldWidth
                        model:          [ qsTr("Indoor"), qsTr("Outdoor") ]
                        currentIndex:   QGroundControl.isDarkStyle ? 0 : 1
Don Gagne's avatar
Don Gagne committed
305

306 307 308 309 310
                        onActivated: {
                            if (index != -1) {
                                currentIndex = index
                                QGroundControl.isDarkStyle = index === 0 ? true : false
                            }
dogmaphobic's avatar
dogmaphobic committed
311 312 313
                        }
                    }
                }
Don Gagne's avatar
Don Gagne committed
314

315 316 317 318
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
                }
319

320 321 322
                //-----------------------------------------------------------------
                //-- Autoconnect settings
                QGCLabel { text: "Autoconnect to the following devices:" }
Don Gagne's avatar
Don Gagne committed
323

324 325
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth * 2
Don Gagne's avatar
Don Gagne committed
326

327 328 329 330 331 332
                    QGCCheckBox {
                        text:       qsTr("Pixhawk")
                        visible:    !ScreenTools.isiOS
                        checked:    QGroundControl.linkManager.autoconnectPixhawk
                        onClicked:  QGroundControl.linkManager.autoconnectPixhawk = checked
                    }
Don Gagne's avatar
Don Gagne committed
333

334 335 336 337 338 339
                    QGCCheckBox {
                        text:       qsTr("SiK Radio")
                        visible:    !ScreenTools.isiOS
                        checked:    QGroundControl.linkManager.autoconnect3DRRadio
                        onClicked:  QGroundControl.linkManager.autoconnect3DRRadio = checked
                    }
Don Gagne's avatar
Don Gagne committed
340

341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358
                    QGCCheckBox {
                        text:       qsTr("PX4 Flow")
                        visible:    !ScreenTools.isiOS
                        checked:    QGroundControl.linkManager.autoconnectPX4Flow
                        onClicked:  QGroundControl.linkManager.autoconnectPX4Flow = checked
                    }

                    QGCCheckBox {
                        text:       qsTr("UDP")
                        checked:    QGroundControl.linkManager.autoconnectUDP
                        onClicked:  QGroundControl.linkManager.autoconnectUDP = checked
                    }

                    QGCCheckBox {
                        text:       qsTr("RTK GPS")
                        checked:    QGroundControl.linkManager.autoconnectRTKGPS
                        onClicked:  QGroundControl.linkManager.autoconnectRTKGPS = checked
                    }
359 360
                }

361 362 363
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
364
                }
Don Gagne's avatar
Don Gagne committed
365

366 367
                //-----------------------------------------------------------------
                //-- Virtual joystick settings
Don Gagne's avatar
Don Gagne committed
368
                QGCCheckBox {
369 370 371
                    text:       qsTr("Virtual Joystick")
                    checked:    QGroundControl.virtualTabletJoystick
                    onClicked:  QGroundControl.virtualTabletJoystick = checked
Don Gagne's avatar
Don Gagne committed
372
                }
373

374 375 376 377
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
                }
378

379 380
                //-----------------------------------------------------------------
                //-- Offline mission editing settings
381 382 383

                QGCLabel { text: "Offline mission editing" }

384 385
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
386

387
                    QGCLabel {
388 389
                        text:               qsTr("Firmware:")
                        width:              hoverSpeedLabel.width
390 391
                        anchors.baseline:   offlineTypeCombo.baseline
                    }
392

393 394 395 396 397 398
                    FactComboBox {
                        id:         offlineTypeCombo
                        width:      ScreenTools.defaultFontPixelWidth * 18
                        fact:       QGroundControl.offlineEditingFirmwareType
                        indexModel: false
                    }
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 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth

                    QGCLabel {
                        text:               qsTr("Vehicle:")
                        width:              hoverSpeedLabel.width
                        anchors.baseline:   offlineVehicleCombo.baseline
                    }

                    FactComboBox {
                        id:         offlineVehicleCombo
                        width:      offlineTypeCombo.width
                        fact:       QGroundControl.offlineEditingVehicleType
                        indexModel: false
                    }
                }

                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
                    visible:  offlineVehicleCombo.currentText != "Multicopter"

                    QGCLabel {
                        text:               qsTr("Cruise speed:")
                        width:              hoverSpeedLabel.width
                        anchors.baseline:   cruiseSpeedField.baseline
                    }


                    FactTextField {
                        id:                 cruiseSpeedField
                        width:              offlineTypeCombo.width
                        fact:               QGroundControl.offlineEditingCruiseSpeed
                        enabled:            true
                    }
                }

                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
                    visible:  offlineVehicleCombo.currentText != "Fixedwing"

                    QGCLabel {
                        id:                 hoverSpeedLabel
                        text:               qsTr("Hover speed:")
                        width:              baseFontLabel.width
                        anchors.baseline:   hoverSpeedField.baseline
                    }


                    FactTextField {
                        id:                 hoverSpeedField
                        width:              offlineTypeCombo.width
                        fact:               QGroundControl.offlineEditingHoverSpeed
                        enabled:            true
                    }
                }

457 458 459
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
460
                }
461
            }
dogmaphobic's avatar
dogmaphobic committed
462
        }
463 464
    } // QGCViewPanel
} // QGCView