AppMessages.qml 7.54 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 136 137
                nameFilters:    [qsTr("Log files (*.txt)"), qsTr("All Files (*)")]
                selectExisting: false
                title:          qsTr("Select log save file")
DonLakeFlyer's avatar
DonLakeFlyer committed
138
                qgcView:        _qgcView
139
                onAcceptedForSave: {
DonLakeFlyer's avatar
DonLakeFlyer committed
140
                    debugMessageModel.writeMessages(file);
141 142 143 144 145 146 147 148 149 150 151 152 153 154
                    visible = false;
                }
            }

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

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

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

            FactComboBox {
169 170 171 172 173 174 175 176
                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
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
            }

            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
199
                text:           qsTr("Set Logging")
200
                onClicked:      showDialog(filtersDialogComponent, qsTr("Turn on logging categories"), qgcView.showDialogDefaultWidth, StandardButton.Close)
201 202
            }
        }
203 204 205
    } // QGCViewPanel
} // QGCView