GeneralSettings.qml 16.7 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 24
import QGroundControl.Controls              1.0
import QGroundControl.ScreenTools           1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.Palette               1.0

Rectangle {
25
    id:                 _generalRoot
26
    color:              qgcPal.window
27 28
    anchors.fill:       parent
    anchors.margins:    ScreenTools.defaultFontPixelWidth
dogmaphobic's avatar
dogmaphobic committed
29

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

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

Don Gagne's avatar
Don Gagne committed
35
    QGCFlickable {
dogmaphobic's avatar
dogmaphobic committed
36 37 38
        clip:               true
        anchors.fill:       parent
        contentHeight:      settingsColumn.height
Don Gagne's avatar
Don Gagne committed
39
        contentWidth:       settingsColumn.width
dogmaphobic's avatar
dogmaphobic committed
40 41 42 43

        Column {
            id:                 settingsColumn
            anchors.margins:    ScreenTools.defaultFontPixelWidth
44
            spacing:            ScreenTools.defaultFontPixelHeight / 2
Don Gagne's avatar
Don Gagne committed
45

dogmaphobic's avatar
dogmaphobic committed
46
            QGCLabel {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
47
                text:   qsTr("General Settings")
48
                font.pointSize: ScreenTools.mediumFontPointSize
dogmaphobic's avatar
dogmaphobic committed
49
            }
Don Gagne's avatar
Don Gagne committed
50

51 52 53
            Rectangle {
                height: 1
                width:  parent.width
Don Gagne's avatar
Don Gagne committed
54
                color:  qgcPal.text
55
            }
Don Gagne's avatar
Don Gagne committed
56

57 58
            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
dogmaphobic's avatar
dogmaphobic committed
59 60
                width:  parent.width
            }
61

62
            //-----------------------------------------------------------------
63 64
            //-- Base UI Font Point Size
            Row {
Don Gagne's avatar
Don Gagne committed
65 66
                spacing: ScreenTools.defaultFontPixelWidth

67
                QGCLabel {
Don Gagne's avatar
Don Gagne committed
68 69
                    id:     baseFontLabel
                    text:   qsTr("Base UI font size:")
70 71
                    anchors.verticalCenter: parent.verticalCenter
                }
Don Gagne's avatar
Don Gagne committed
72

73
                Row {
Don Gagne's avatar
Don Gagne committed
74 75
                    id:         baseFontRow
                    spacing:    ScreenTools.defaultFontPixelWidth / 2
76
                    anchors.verticalCenter: parent.verticalCenter
Don Gagne's avatar
Don Gagne committed
77 78 79 80 81 82 83 84 85 86

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

                        onClicked: {
                            if(ScreenTools.defaultFontPointSize > 6) {
                                QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize - 1
87 88 89
                            }
                        }
                    }
Don Gagne's avatar
Don Gagne committed
90

91
                    QGCTextField {
Don Gagne's avatar
Don Gagne committed
92 93 94 95 96 97 98 99
                        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;}

100 101 102 103 104 105
                        onEditingFinished: {
                            var point = parseFloat(text)
                            if(point >= 6.0 && point <= 48.0)
                                QGroundControl.baseFontPointSize = point;
                        }
                    }
Don Gagne's avatar
Don Gagne committed
106 107 108 109 110 111 112 113 114

                    QGCButton {
                        width:  height
                        height: baseFontEdit.height
                        text:   "+"

                        onClicked: {
                            if(ScreenTools.defaultFontPointSize < 49) {
                                QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize + 1
115 116 117 118
                            }
                        }
                    }
                }
Don Gagne's avatar
Don Gagne committed
119

120 121
                QGCLabel {
                    anchors.verticalCenter: parent.verticalCenter
Don Gagne's avatar
Don Gagne committed
122
                    text:                   qsTr("(requires app restart)")
123 124 125 126
                }
            }

            //-----------------------------------------------------------------
127 128 129 130 131 132
            //-- Units

            Row {
                spacing:    ScreenTools.defaultFontPixelWidth

                QGCLabel {
Don Gagne's avatar
Don Gagne committed
133
                    width:              baseFontLabel.width
134
                    anchors.baseline:   distanceUnitsCombo.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
135
                    text:               qsTr("Distance units:")
136 137 138
                }

                FactComboBox {
dogmaphobic's avatar
dogmaphobic committed
139 140 141 142
                    id:                 distanceUnitsCombo
                    width:              _editFieldWidth
                    fact:               QGroundControl.distanceUnits
                    indexModel:         false
143 144 145 146
                }

                QGCLabel {
                    anchors.baseline:   distanceUnitsCombo.baseline
Don Gagne's avatar
Don Gagne committed
147
                    text:               qsTr("(requires app restart)")
148 149 150 151 152
                }

            }

            Row {
dogmaphobic's avatar
dogmaphobic committed
153
                spacing:                ScreenTools.defaultFontPixelWidth
154 155

                QGCLabel {
Don Gagne's avatar
Don Gagne committed
156
                    width:              baseFontLabel.width
157
                    anchors.baseline:   speedUnitsCombo.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
158
                    text:               qsTr("Speed units:")
159 160 161
                }

                FactComboBox {
dogmaphobic's avatar
dogmaphobic committed
162 163 164 165
                    id:                 speedUnitsCombo
                    width:              _editFieldWidth
                    fact:               QGroundControl.speedUnits
                    indexModel:         false
166 167 168
                }

                QGCLabel {
169
                    anchors.baseline:   speedUnitsCombo.baseline
Don Gagne's avatar
Don Gagne committed
170
                    text:               qsTr("(requires app restart)")
171 172 173
                }
            }

Don Gagne's avatar
Don Gagne committed
174 175 176 177 178
            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  parent.width
            }

dogmaphobic's avatar
dogmaphobic committed
179 180 181 182 183 184 185 186 187 188 189
            //-----------------------------------------------------------------
            //-- Scale on Flight View
            QGCCheckBox {
                text:       qsTr("Show scale on Fly View")
                onClicked: {
                    QGroundControl.flightMapSettings.showScaleOnFlyView = checked
                }
                Component.onCompleted: {
                    checked = QGroundControl.flightMapSettings.showScaleOnFlyView
                }
            }
dogmaphobic's avatar
dogmaphobic committed
190 191 192
            //-----------------------------------------------------------------
            //-- Audio preferences
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
193
                text:       qsTr("Mute all audio output")
dogmaphobic's avatar
dogmaphobic committed
194 195 196 197 198 199 200 201
                checked:    QGroundControl.isAudioMuted
                onClicked: {
                    QGroundControl.isAudioMuted = checked
                }
            }
            //-----------------------------------------------------------------
            //-- Prompt Save Log
            QGCCheckBox {
202
                id:         promptSaveLog
Tomaz Canabrava's avatar
Tomaz Canabrava committed
203
                text:       qsTr("Prompt to save Flight Data Log after each flight")
dogmaphobic's avatar
dogmaphobic committed
204 205 206 207 208 209 210
                checked:    QGroundControl.isSaveLogPrompt
                visible:    !ScreenTools.isMobile
                onClicked: {
                    QGroundControl.isSaveLogPrompt = checked
                }
            }
            //-----------------------------------------------------------------
211 212
            //-- Prompt Save even if not armed
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
213
                text:       qsTr("Prompt to save Flight Data Log even if vehicle was not armed")
214 215 216 217 218 219 220 221
                checked:    QGroundControl.isSaveLogPromptNotArmed
                visible:    !ScreenTools.isMobile
                enabled:    promptSaveLog.checked
                onClicked: {
                    QGroundControl.isSaveLogPromptNotArmed = checked
                }
            }
            //-----------------------------------------------------------------
dogmaphobic's avatar
dogmaphobic committed
222 223 224
            //-- Clear settings
            QGCCheckBox {
                id:         clearCheck
Tomaz Canabrava's avatar
Tomaz Canabrava committed
225
                text:       qsTr("Clear all settings on next start")
dogmaphobic's avatar
dogmaphobic committed
226 227 228 229 230 231 232 233 234
                checked:    false
                onClicked: {
                    checked ? clearDialog.visible = true : QGroundControl.clearDeleteAllSettingsNextBoot()
                }
                MessageDialog {
                    id:         clearDialog
                    visible:    false
                    icon:       StandardIcon.Warning
                    standardButtons: StandardButton.Yes | StandardButton.No
Tomaz Canabrava's avatar
Tomaz Canabrava committed
235 236
                    title:      qsTr("Clear Settings")
                    text:       qsTr("All saved settings will be reset the next time you start QGroundControl. Is this really what you want?")
dogmaphobic's avatar
dogmaphobic committed
237 238 239 240 241 242 243 244 245 246
                    onYes: {
                        QGroundControl.deleteAllSettingsNextBoot()
                        clearDialog.visible = false
                    }
                    onNo: {
                        clearCheck.checked  = false
                        clearDialog.visible = false
                    }
                }
            }
247 248 249 250 251 252 253 254
            //-----------------------------------------------------------------
            //-- Battery talker
            Row {
                spacing: ScreenTools.defaultFontPixelWidth

                QGCCheckBox {
                    id:                 announcePercentCheckbox
                    anchors.baseline:   announcePercent.baseline
Don Gagne's avatar
Don Gagne committed
255
                    text:               qsTr("Announce battery lower than:")
256 257 258 259 260 261 262 263 264 265 266 267
                    checked:            _percentRemainingAnnounce.value != 0

                    onClicked: {
                        if (checked) {
                            _percentRemainingAnnounce.value = _percentRemainingAnnounce.defaultValueString
                        } else {
                            _percentRemainingAnnounce.value = 0
                        }
                    }
                }

                FactTextField {
Don Gagne's avatar
Don Gagne committed
268 269 270
                    id:                 announcePercent
                    fact:               _percentRemainingAnnounce
                    enabled:            announcePercentCheckbox.checked
271 272
                }
            }
273 274 275 276 277

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

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

dogmaphobic's avatar
dogmaphobic committed
284
                QGCLabel {
Don Gagne's avatar
Don Gagne committed
285
                    id:                 mapProvidersLabel
286
                    anchors.baseline:   mapProviders.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
287
                    text:               qsTr("Map Providers:")
dogmaphobic's avatar
dogmaphobic committed
288
                }
Don Gagne's avatar
Don Gagne committed
289

dogmaphobic's avatar
dogmaphobic committed
290
                QGCComboBox {
dogmaphobic's avatar
dogmaphobic committed
291 292 293
                    id:                 mapProviders
                    width:              _editFieldWidth
                    model:              QGroundControl.flightMapSettings.mapProviders
dogmaphobic's avatar
dogmaphobic committed
294 295 296
                    Component.onCompleted: {
                        var index = mapProviders.find(QGroundControl.flightMapSettings.mapProvider)
                        if (index < 0) {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
297
                            console.warn(qsTr("Active map provider not in combobox"), QGroundControl.flightMapSettings.mapProvider)
dogmaphobic's avatar
dogmaphobic committed
298 299 300 301 302 303 304
                        } else {
                            mapProviders.currentIndex = index
                        }
                    }
                    onActivated: {
                        if (index != -1) {
                            currentIndex = index
Tomaz Canabrava's avatar
Tomaz Canabrava committed
305
                            console.log(qsTr("New map provider: ") + model[index])
dogmaphobic's avatar
dogmaphobic committed
306 307 308 309 310 311 312 313
                            QGroundControl.flightMapSettings.mapProvider = model[index]
                        }
                    }
                }
            }
            //-----------------------------------------------------------------
            //-- Palette Styles
            Row {
Don Gagne's avatar
Don Gagne committed
314 315
                spacing: ScreenTools.defaultFontPixelWidth

dogmaphobic's avatar
dogmaphobic committed
316
                QGCLabel {
Don Gagne's avatar
Don Gagne committed
317
                    width:              mapProvidersLabel.width
318
                    anchors.baseline:   paletteCombo.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
319
                    text:               qsTr("Style:")
dogmaphobic's avatar
dogmaphobic committed
320
                }
Don Gagne's avatar
Don Gagne committed
321

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

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

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

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

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

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

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

363
                QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
364
                    text:       qsTr("PX4 Flow")
365 366 367 368 369 370
                    visible:    !ScreenTools.isiOS
                    checked:    QGroundControl.linkManager.autoconnectPX4Flow
                    onClicked:  QGroundControl.linkManager.autoconnectPX4Flow = checked
                }

                QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
371
                    text:       qsTr("UDP")
372 373 374
                    checked:    QGroundControl.linkManager.autoconnectUDP
                    onClicked:  QGroundControl.linkManager.autoconnectUDP = checked
                }
Don Gagne's avatar
Don Gagne committed
375 376 377 378 379 380

                QGCCheckBox {
                    text:       qsTr("RTK GPS")
                    checked:    QGroundControl.linkManager.autoconnectRTKGPS
                    onClicked:  QGroundControl.linkManager.autoconnectRTKGPS = checked
                }
Don Gagne's avatar
Don Gagne committed
381
            }
382 383 384 385 386 387 388 389 390

            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  parent.width
            }

            //-----------------------------------------------------------------
            //-- Virtual joystick settings
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
391
                text:       qsTr("Virtual Joystick")
392 393 394
                checked:    QGroundControl.virtualTabletJoystick
                onClicked:  QGroundControl.virtualTabletJoystick = checked
            }
395 396 397 398 399 400

            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  parent.width
            }

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

                QGCLabel {
Don Gagne's avatar
Don Gagne committed
407
                    text:               qsTr("Offline mission editing:")
408 409 410 411 412
                    anchors.baseline:   offlineTypeCombo.baseline
                }

                FactComboBox {
                    id:         offlineTypeCombo
Don Gagne's avatar
Don Gagne committed
413
                    width:      ScreenTools.defaultFontPixelWidth * 18
414 415 416 417
                    fact:       QGroundControl.offlineEditingFirmwareType
                    indexModel: false
                }
            }
418 419 420 421 422 423 424 425 426

            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  parent.width
            }

            //-----------------------------------------------------------------
            //-- Experimental Survey settings
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
427
                text:       qsTr("Experimental Survey [WIP - no bugs reports please]")
428 429 430
                checked:    QGroundControl.experimentalSurvey
                onClicked:  QGroundControl.experimentalSurvey = checked
            }
dogmaphobic's avatar
dogmaphobic committed
431 432 433
        }
    }
}