GeneralSettings.qml 17.6 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 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
                Row {
                    spacing:    ScreenTools.defaultFontPixelWidth

                    QGCLabel {
                        width:              baseFontLabel.width
                        anchors.baseline:   areaUnitsCombo.baseline
                        text:               qsTr("Area units:")
                    }

                    FactComboBox {
                        id:                 areaUnitsCombo
                        width:              _editFieldWidth
                        fact:               QGroundControl.areaUnits
                        indexModel:         false
                    }

                    QGCLabel {
                        anchors.baseline:   areaUnitsCombo.baseline
                        text:               qsTr("(requires app restart)")
                    }

                }

164 165
                Row {
                    spacing:                ScreenTools.defaultFontPixelWidth
166

167 168 169 170 171
                    QGCLabel {
                        width:              baseFontLabel.width
                        anchors.baseline:   speedUnitsCombo.baseline
                        text:               qsTr("Speed units:")
                    }
172

173 174 175 176 177 178
                    FactComboBox {
                        id:                 speedUnitsCombo
                        width:              _editFieldWidth
                        fact:               QGroundControl.speedUnits
                        indexModel:         false
                    }
179

180 181 182 183
                    QGCLabel {
                        anchors.baseline:   speedUnitsCombo.baseline
                        text:               qsTr("(requires app restart)")
                    }
184 185
                }

186 187 188
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
189
                }
Don Gagne's avatar
Don Gagne committed
190

191 192 193 194 195 196 197 198
                //-----------------------------------------------------------------
                //-- Audio preferences
                QGCCheckBox {
                    text:       qsTr("Mute all audio output")
                    checked:    QGroundControl.isAudioMuted
                    onClicked: {
                        QGroundControl.isAudioMuted = checked
                    }
dogmaphobic's avatar
dogmaphobic committed
199
                }
200 201 202 203 204 205 206 207 208 209
                //-----------------------------------------------------------------
                //-- 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
                    }
210
                }
211 212 213 214 215 216 217 218 219 220
                //-----------------------------------------------------------------
                //-- 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
221
                }
222 223 224 225 226 227 228 229
                //-----------------------------------------------------------------
                //-- 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
230
                    }
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
                    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
246 247
                    }
                }
248 249 250 251
                //-----------------------------------------------------------------
                //-- Battery talker
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
252

253 254 255 256 257
                    QGCCheckBox {
                        id:                 announcePercentCheckbox
                        anchors.baseline:   announcePercent.baseline
                        text:               qsTr("Announce battery lower than:")
                        checked:            _percentRemainingAnnounce.value != 0
258

259 260 261 262 263 264
                        onClicked: {
                            if (checked) {
                                _percentRemainingAnnounce.value = _percentRemainingAnnounce.defaultValueString
                            } else {
                                _percentRemainingAnnounce.value = 0
                            }
265 266 267
                        }
                    }

268 269 270 271 272
                    FactTextField {
                        id:                 announcePercent
                        fact:               _percentRemainingAnnounce
                        enabled:            announcePercentCheckbox.checked
                    }
273
                }
274

275 276 277 278
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
                }
Don Gagne's avatar
Don Gagne committed
279

280 281 282 283
                //-----------------------------------------------------------------
                //-- Map Providers
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
Don Gagne's avatar
Don Gagne committed
284

285 286 287 288 289
                    QGCLabel {
                        id:                 mapProvidersLabel
                        anchors.baseline:   mapProviders.baseline
                        text:               qsTr("Map Provider:")
                    }
Don Gagne's avatar
Don Gagne committed
290

291 292 293 294 295 296 297 298 299 300 301
                    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
302
                        }
303 304 305 306 307 308
                        onActivated: {
                            if (index != -1) {
                                currentIndex = index
                                console.log(qsTr("New map provider: ") + model[index])
                                QGroundControl.flightMapSettings.mapProvider = model[index]
                            }
dogmaphobic's avatar
dogmaphobic committed
309 310 311
                        }
                    }
                }
312 313 314 315 316 317 318 319 320 321
                //-----------------------------------------------------------------
                //-- Palette Styles
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth

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

323 324 325 326 327
                    QGCComboBox {
                        id:             paletteCombo
                        width:          _editFieldWidth
                        model:          [ qsTr("Indoor"), qsTr("Outdoor") ]
                        currentIndex:   QGroundControl.isDarkStyle ? 0 : 1
Don Gagne's avatar
Don Gagne committed
328

329 330 331 332 333
                        onActivated: {
                            if (index != -1) {
                                currentIndex = index
                                QGroundControl.isDarkStyle = index === 0 ? true : false
                            }
dogmaphobic's avatar
dogmaphobic committed
334 335 336
                        }
                    }
                }
Don Gagne's avatar
Don Gagne committed
337

338 339 340 341
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
                }
342

343 344 345
                //-----------------------------------------------------------------
                //-- Autoconnect settings
                QGCLabel { text: "Autoconnect to the following devices:" }
Don Gagne's avatar
Don Gagne committed
346

347 348
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth * 2
Don Gagne's avatar
Don Gagne committed
349

350 351 352 353 354 355
                    QGCCheckBox {
                        text:       qsTr("Pixhawk")
                        visible:    !ScreenTools.isiOS
                        checked:    QGroundControl.linkManager.autoconnectPixhawk
                        onClicked:  QGroundControl.linkManager.autoconnectPixhawk = checked
                    }
Don Gagne's avatar
Don Gagne committed
356

357 358 359 360 361 362
                    QGCCheckBox {
                        text:       qsTr("SiK Radio")
                        visible:    !ScreenTools.isiOS
                        checked:    QGroundControl.linkManager.autoconnect3DRRadio
                        onClicked:  QGroundControl.linkManager.autoconnect3DRRadio = checked
                    }
Don Gagne's avatar
Don Gagne committed
363

364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
                    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
                    }
382 383
                }

384 385 386
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
387
                }
Don Gagne's avatar
Don Gagne committed
388

389 390
                //-----------------------------------------------------------------
                //-- Virtual joystick settings
Don Gagne's avatar
Don Gagne committed
391
                QGCCheckBox {
392 393 394
                    text:       qsTr("Virtual Joystick")
                    checked:    QGroundControl.virtualTabletJoystick
                    onClicked:  QGroundControl.virtualTabletJoystick = checked
Don Gagne's avatar
Don Gagne committed
395
                }
396

397 398 399 400
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
                }
401

402 403 404 405
                //-----------------------------------------------------------------
                //-- Offline mission editing settings
                Row {
                    spacing: ScreenTools.defaultFontPixelWidth
406

407 408 409 410
                    QGCLabel {
                        text:               qsTr("Offline mission editing:")
                        anchors.baseline:   offlineTypeCombo.baseline
                    }
411

412 413 414 415 416 417
                    FactComboBox {
                        id:         offlineTypeCombo
                        width:      ScreenTools.defaultFontPixelWidth * 18
                        fact:       QGroundControl.offlineEditingFirmwareType
                        indexModel: false
                    }
418 419
                }

420 421 422
                Item {
                    height: ScreenTools.defaultFontPixelHeight / 2
                    width:  parent.width
423
                }
424
            }
dogmaphobic's avatar
dogmaphobic committed
425
        }
426 427
    } // QGCViewPanel
} // QGCView