GeneralSettings.qml 17.1 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 31 32
    property Fact _percentRemainingAnnounce:    QGroundControl.multiVehicleManager.disconnectedVehicle.battery.percentRemainingAnnounce
    property real _firstLabelWidth:             ScreenTools.defaultFontPixelWidth * 16
    property real _editFieldWidth:              ScreenTools.defaultFontPixelWidth * 22
33

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

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

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

dogmaphobic's avatar
dogmaphobic committed
47
            QGCLabel {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
48
                text:   qsTr("General Settings")
49
                font.pointSize: ScreenTools.mediumFontPointSize
dogmaphobic's avatar
dogmaphobic committed
50
            }
51 52 53 54 55
            Rectangle {
                height: 1
                width:  parent.width
                color:  qgcPal.button
            }
56 57
            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
dogmaphobic's avatar
dogmaphobic committed
58 59
                width:  parent.width
            }
60

61
            //-----------------------------------------------------------------
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 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 115 116 117 118 119 120 121 122 123 124 125
            //-- Base UI Font Point Size
            Row {
                spacing:    ScreenTools.defaultFontPixelWidth
                QGCLabel {
                    width:              _firstLabelWidth
                    text:               qsTr("Base UI font size:")
                    anchors.verticalCenter: parent.verticalCenter
                }
                Row {
                    anchors.verticalCenter: parent.verticalCenter
                    Rectangle {
                        width:              baseFontEdit.height
                        height:             width
                        color:              qgcPal.button
                        QGCLabel {
                            text:           "-"
                            anchors.centerIn: parent
                        }
                        MouseArea {
                            anchors.fill: parent
                            onClicked: {
                                if(ScreenTools.defaultFontPointSize > 6)
                                    QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize - 1
                            }
                        }
                    }
                    QGCTextField {
                        id:                 baseFontEdit
                        width:              _editFieldWidth - (height * 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;
                        }
                    }
                    Rectangle {
                        width:              baseFontEdit.height
                        height:             width
                        color:              qgcPal.button
                        QGCLabel {
                            text:           "+"
                            anchors.centerIn: parent
                        }
                        MouseArea {
                            anchors.fill: parent
                            onClicked: {
                                if(ScreenTools.defaultFontPointSize < 49)
                                    QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize + 1
                            }
                        }
                    }
                }
                QGCLabel {
                    anchors.verticalCenter: parent.verticalCenter
                    text:               qsTr("(requires reboot to take affect)")
                }
            }

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

            Row {
                spacing:    ScreenTools.defaultFontPixelWidth

                QGCLabel {
dogmaphobic's avatar
dogmaphobic committed
132
                    width:              _firstLabelWidth
133
                    anchors.baseline:   distanceUnitsCombo.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
134
                    text:               qsTr("Distance units:")
135 136 137
                }

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

                QGCLabel {
                    anchors.baseline:   distanceUnitsCombo.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
146
                    text:               qsTr("(requires reboot to take affect)")
147 148 149 150 151
                }

            }

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

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

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

                QGCLabel {
168
                    anchors.baseline:   speedUnitsCombo.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
169
                    text:              qsTr("(requires reboot to take affect)")
170 171 172
                }
            }

dogmaphobic's avatar
dogmaphobic committed
173 174 175 176 177 178 179 180 181 182 183
            //-----------------------------------------------------------------
            //-- 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
184 185 186
            //-----------------------------------------------------------------
            //-- Audio preferences
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
187
                text:       qsTr("Mute all audio output")
dogmaphobic's avatar
dogmaphobic committed
188 189 190 191 192 193 194 195
                checked:    QGroundControl.isAudioMuted
                onClicked: {
                    QGroundControl.isAudioMuted = checked
                }
            }
            //-----------------------------------------------------------------
            //-- Prompt Save Log
            QGCCheckBox {
196
                id:         promptSaveLog
Tomaz Canabrava's avatar
Tomaz Canabrava committed
197
                text:       qsTr("Prompt to save Flight Data Log after each flight")
dogmaphobic's avatar
dogmaphobic committed
198 199 200 201 202 203 204
                checked:    QGroundControl.isSaveLogPrompt
                visible:    !ScreenTools.isMobile
                onClicked: {
                    QGroundControl.isSaveLogPrompt = checked
                }
            }
            //-----------------------------------------------------------------
205 206
            //-- Prompt Save even if not armed
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
207
                text:       qsTr("Prompt to save Flight Data Log even if vehicle was not armed")
208 209 210 211 212 213 214 215
                checked:    QGroundControl.isSaveLogPromptNotArmed
                visible:    !ScreenTools.isMobile
                enabled:    promptSaveLog.checked
                onClicked: {
                    QGroundControl.isSaveLogPromptNotArmed = checked
                }
            }
            //-----------------------------------------------------------------
dogmaphobic's avatar
dogmaphobic committed
216 217 218
            //-- Clear settings
            QGCCheckBox {
                id:         clearCheck
Tomaz Canabrava's avatar
Tomaz Canabrava committed
219
                text:       qsTr("Clear all settings on next start")
dogmaphobic's avatar
dogmaphobic committed
220 221 222 223 224 225 226 227 228
                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
229 230
                    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
231 232 233 234 235 236 237 238 239 240
                    onYes: {
                        QGroundControl.deleteAllSettingsNextBoot()
                        clearDialog.visible = false
                    }
                    onNo: {
                        clearCheck.checked  = false
                        clearDialog.visible = false
                    }
                }
            }
241 242 243 244 245 246 247 248
            //-----------------------------------------------------------------
            //-- Battery talker
            Row {
                spacing: ScreenTools.defaultFontPixelWidth

                QGCCheckBox {
                    id:                 announcePercentCheckbox
                    anchors.baseline:   announcePercent.baseline
Tomaz Canabrava's avatar
Tomaz Canabrava committed
249
                    text:               qsTr("Announce battery percent lower than:")
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
                    checked:            _percentRemainingAnnounce.value != 0

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

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

            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  parent.width
            }
dogmaphobic's avatar
dogmaphobic committed
272 273 274 275 276
            //-----------------------------------------------------------------
            //-- Map Providers
            Row {
                spacing:    ScreenTools.defaultFontPixelWidth
                QGCLabel {
277
                    anchors.baseline:   mapProviders.baseline
dogmaphobic's avatar
dogmaphobic committed
278
                    width:              _firstLabelWidth
Tomaz Canabrava's avatar
Tomaz Canabrava committed
279
                    text:               qsTr("Map Providers:")
dogmaphobic's avatar
dogmaphobic committed
280 281
                }
                QGCComboBox {
dogmaphobic's avatar
dogmaphobic committed
282 283 284
                    id:                 mapProviders
                    width:              _editFieldWidth
                    model:              QGroundControl.flightMapSettings.mapProviders
dogmaphobic's avatar
dogmaphobic committed
285 286 287
                    Component.onCompleted: {
                        var index = mapProviders.find(QGroundControl.flightMapSettings.mapProvider)
                        if (index < 0) {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
288
                            console.warn(qsTr("Active map provider not in combobox"), QGroundControl.flightMapSettings.mapProvider)
dogmaphobic's avatar
dogmaphobic committed
289 290 291 292 293 294 295
                        } else {
                            mapProviders.currentIndex = index
                        }
                    }
                    onActivated: {
                        if (index != -1) {
                            currentIndex = index
Tomaz Canabrava's avatar
Tomaz Canabrava committed
296
                            console.log(qsTr("New map provider: ") + model[index])
dogmaphobic's avatar
dogmaphobic committed
297 298 299 300 301 302 303 304 305 306
                            QGroundControl.flightMapSettings.mapProvider = model[index]
                        }
                    }
                }
            }
            //-----------------------------------------------------------------
            //-- Palette Styles
            Row {
                spacing:    ScreenTools.defaultFontPixelWidth
                QGCLabel {
307
                    anchors.baseline:   paletteCombo.baseline
dogmaphobic's avatar
dogmaphobic committed
308
                    width:              _firstLabelWidth
Tomaz Canabrava's avatar
Tomaz Canabrava committed
309
                    text:               qsTr("Style:")
dogmaphobic's avatar
dogmaphobic committed
310 311
                }
                QGCComboBox {
dogmaphobic's avatar
dogmaphobic committed
312 313 314 315
                    id:                 paletteCombo
                    width:              _editFieldWidth
                    model:              [ qsTr("Indoor"), qsTr("Outdoor") ]
                    currentIndex:       QGroundControl.isDarkStyle ? 0 : 1
dogmaphobic's avatar
dogmaphobic committed
316 317 318 319 320 321 322 323
                    onActivated: {
                        if (index != -1) {
                            currentIndex = index
                            QGroundControl.isDarkStyle = index === 0 ? true : false
                        }
                    }
                }
            }
Don Gagne's avatar
Don Gagne committed
324

325 326 327 328 329
            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  parent.width
            }

Don Gagne's avatar
Don Gagne committed
330 331 332 333
            //-----------------------------------------------------------------
            //-- Autoconnect settings
            QGCLabel { text: "Autoconnect to the following devices:" }

334 335
            Row {
                spacing: ScreenTools.defaultFontPixelWidth * 2
Don Gagne's avatar
Don Gagne committed
336

337
                QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
338
                    text:       qsTr("Pixhawk")
339 340 341 342
                    visible:    !ScreenTools.isiOS
                    checked:    QGroundControl.linkManager.autoconnectPixhawk
                    onClicked:  QGroundControl.linkManager.autoconnectPixhawk = checked
                }
Don Gagne's avatar
Don Gagne committed
343

344
                QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
345
                    text:       qsTr("SiK Radio")
346 347 348 349
                    visible:    !ScreenTools.isiOS
                    checked:    QGroundControl.linkManager.autoconnect3DRRadio
                    onClicked:  QGroundControl.linkManager.autoconnect3DRRadio = checked
                }
Don Gagne's avatar
Don Gagne committed
350

351
                QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
352
                    text:       qsTr("PX4 Flow")
353 354 355 356 357 358
                    visible:    !ScreenTools.isiOS
                    checked:    QGroundControl.linkManager.autoconnectPX4Flow
                    onClicked:  QGroundControl.linkManager.autoconnectPX4Flow = checked
                }

                QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
359
                    text:       qsTr("UDP")
360 361 362
                    checked:    QGroundControl.linkManager.autoconnectUDP
                    onClicked:  QGroundControl.linkManager.autoconnectUDP = checked
                }
Don Gagne's avatar
Don Gagne committed
363 364 365 366 367 368

                QGCCheckBox {
                    text:       qsTr("RTK GPS")
                    checked:    QGroundControl.linkManager.autoconnectRTKGPS
                    onClicked:  QGroundControl.linkManager.autoconnectRTKGPS = checked
                }
Don Gagne's avatar
Don Gagne committed
369
            }
370 371 372 373 374 375 376 377 378

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

            //-----------------------------------------------------------------
            //-- Virtual joystick settings
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
379
                text:       qsTr("Virtual Joystick")
380 381 382
                checked:    QGroundControl.virtualTabletJoystick
                onClicked:  QGroundControl.virtualTabletJoystick = checked
            }
383 384 385 386 387 388

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

389 390
            //-----------------------------------------------------------------
            //-- Offline mission editing settings
391 392 393 394
            Row {
                spacing: ScreenTools.defaultFontPixelWidth

                QGCLabel {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
395
                    text:               qsTr("Offline mission editing vehicle type:")
396 397 398 399 400 401 402 403 404 405
                    anchors.baseline:   offlineTypeCombo.baseline
                }

                FactComboBox {
                    id:         offlineTypeCombo
                    width:      ScreenTools.defaultFontPixelWidth * 25
                    fact:       QGroundControl.offlineEditingFirmwareType
                    indexModel: false
                }
            }
406 407 408 409 410 411 412 413 414

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

            //-----------------------------------------------------------------
            //-- Experimental Survey settings
            QGCCheckBox {
Tomaz Canabrava's avatar
Tomaz Canabrava committed
415
                text:       qsTr("Experimental Survey [WIP - no bugs reports please]")
416 417 418
                checked:    QGroundControl.experimentalSurvey
                onClicked:  QGroundControl.experimentalSurvey = checked
            }
dogmaphobic's avatar
dogmaphobic committed
419 420 421
        }
    }
}