AppMessages.qml 7.58 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.
 *
 ****************************************************************************/
9

10 11
import QtQuick                  2.3
import QtQuick.Controls         1.2
12
import QtQuick.Controls.Styles  1.4
13 14
import QtQuick.Dialogs          1.2

15
import QGroundControl               1.0
16 17
import QGroundControl.Palette       1.0
import QGroundControl.Controls      1.0
18 19
import QGroundControl.FactSystem    1.0
import QGroundControl.FactControls  1.0
20 21 22
import QGroundControl.Controllers   1.0
import QGroundControl.ScreenTools   1.0

23 24 25
QGCView {
    id:         qgcView
    viewPanel:  panel
Nate Weibley's avatar
Nate Weibley committed
26

27 28
    property bool loaded: false

DonLakeFlyer's avatar
DonLakeFlyer committed
29 30
    property var _qgcView: qgcView

31
    QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled }
32

33 34 35 36 37 38 39 40 41 42 43 44 45
    Component {
        id: filtersDialogComponent

        QGCViewDialog {
            QGCFlickable {
                anchors.fill:   parent
                contentHeight:  categoryColumn.height
                clip:           true

                Column {
                    id:         categoryColumn
                    spacing:    ScreenTools.defaultFontPixelHeight / 2

DonLakeFlyer's avatar
DonLakeFlyer committed
46 47 48 49 50 51 52 53 54 55 56 57 58
                    QGCButton {
                        text: qsTr("Clear All")
                        onClicked: {
                            var logCats = QGroundControl.loggingCategories()
                            for (var i=0; i<logCats.length; i++) {
                                QGroundControl.setCategoryLoggingOn(logCats[i], false)
                            }
                            QGroundControl.updateLoggingFilterRules()
                            categoryRepeater.model = undefined
                            categoryRepeater.model = QGroundControl.loggingCategories()
                        }
                    }

59
                    Repeater {
DonLakeFlyer's avatar
DonLakeFlyer committed
60 61
                        id:     categoryRepeater
                        model:  QGroundControl.loggingCategories()
62 63 64 65 66 67 68 69 70 71

                        QGCCheckBox {
                            text:       modelData
                            checked:    QGroundControl.categoryLoggingOn(modelData)
                            onClicked:  {
                                QGroundControl.setCategoryLoggingOn(modelData, checked)
                                QGroundControl.updateLoggingFilterRules()
                            }
                        }
                    }
72 73
                }
            }
74 75 76 77 78 79
        } // QGCViewDialog
    } // Component - filtersDialogComponent

    QGCViewPanel {
        id:             panel
        anchors.fill:   parent
80 81

        Rectangle {
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
            id:              logwindow
            anchors.fill:    parent
            anchors.margins: ScreenTools.defaultFontPixelWidth
            color:           qgcPal.window

            Connections {
                target: debugMessageModel

                onDataChanged: {
                    // Keep the view in sync if the button is checked
                    if (loaded) {
                        if (followTail.checked) {
                            listview.positionViewAtEnd();
                        }
                    }
                }
98 99
            }

100 101 102 103 104 105 106
            Component {
                id: delegateItem
                Rectangle {
                    color:  index % 2 == 0 ? qgcPal.window : qgcPal.windowShade
                    height: Math.round(ScreenTools.defaultFontPixelHeight * 0.5 + field.height)
                    width:  listview.width

Don Gagne's avatar
Don Gagne committed
107 108 109 110 111
                    QGCLabel {
                        id:         field
                        text:       display
                        width:      parent.width
                        wrapMode:   Text.Wrap
112 113 114 115 116
                        anchors.verticalCenter: parent.verticalCenter
                    }
                }
            }

Don Gagne's avatar
Don Gagne committed
117
            QGCListView {
118 119 120 121 122 123 124 125 126 127 128 129 130 131
                Component.onCompleted: {
                    loaded = true
                }
                anchors.top:     parent.top
                anchors.left:    parent.left
                anchors.right:   parent.right
                anchors.bottom:  followTail.top
                anchors.bottomMargin: ScreenTools.defaultFontPixelWidth
                clip:            true
                id:              listview
                model:           debugMessageModel
                delegate:        delegateItem
            }

132
            QGCFileDialog {
133
                id:             writeDialog
134
                folder:         QGroundControl.settingsManager.appSettings.logSavePath
135
                nameFilters:    [qsTr("Log files (*.txt)"), qsTr("All Files (*)")]
136
                fileExtension:  qsTr("txt")
137 138
                selectExisting: false
                title:          qsTr("Select log save file")
DonLakeFlyer's avatar
DonLakeFlyer committed
139
                qgcView:        _qgcView
140
                onAcceptedForSave: {
DonLakeFlyer's avatar
DonLakeFlyer committed
141
                    debugMessageModel.writeMessages(file);
142 143 144 145 146 147 148 149 150 151 152 153 154 155
                    visible = false;
                }
            }

            Connections {
                target:          debugMessageModel
                onWriteStarted:  writeButton.enabled = false;
                onWriteFinished: writeButton.enabled = true;
            }

            QGCButton {
                id:              writeButton
                anchors.bottom:  parent.bottom
                anchors.left:    parent.left
156
                onClicked:       writeDialog.openForSave()
157 158 159
                text:            qsTr("Save App Log")
            }

160
            QGCLabel {
161 162 163 164 165 166
                id:                 gstLabel
                anchors.left:       writeButton.right
                anchors.leftMargin: ScreenTools.defaultFontPixelWidth
                anchors.baseline:   gstCombo.baseline
                text:               qsTr("GStreamer Debug")
                visible:            QGroundControl.settingsManager.appSettings.gstDebugLevel.visible
167 168 169
            }

            FactComboBox {
170 171 172 173 174 175 176 177
                id:                 gstCombo
                anchors.left:       gstLabel.right
                anchors.leftMargin: ScreenTools.defaultFontPixelWidth / 2
                anchors.bottom:     parent.bottom
                width:              ScreenTools.defaultFontPixelWidth * 10
                model:              ["Disabled", "1", "2", "3", "4", "5", "6", "7", "8"]
                fact:               QGroundControl.settingsManager.appSettings.gstDebugLevel
                visible:            QGroundControl.settingsManager.appSettings.gstDebugLevel.visible
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
            }

            QGCButton {
                id:                     followTail
                anchors.right:          filterButton.left
                anchors.rightMargin:    ScreenTools.defaultFontPixelWidth
                anchors.bottom:         parent.bottom
                text:                   qsTr("Show Latest")
                checkable:              true
                checked:                true

                onCheckedChanged: {
                    if (checked && loaded) {
                        listview.positionViewAtEnd();
                    }
                }
            }

            QGCButton {
                id:             filterButton
                anchors.bottom: parent.bottom
                anchors.right:  parent.right
200
                text:           qsTr("Set Logging")
201
                onClicked:      showDialog(filtersDialogComponent, qsTr("Turn on logging categories"), qgcView.showDialogDefaultWidth, StandardButton.Close)
202 203
            }
        }
204 205 206
    } // QGCViewPanel
} // QGCView