7import QGroundControl.Controls
10 Layout.fillWidth: true
11 heading: qsTr("Saved Log Files")
12 visible: QGroundControl.corePlugin.options.showPX4LogTransferOptions
14 property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
15 property var _mavlinkLogManager: _activeVehicle ? _activeVehicle.mavlinkLogManager : null
16 property bool _disableDataPersistence: QGroundControl.settingsManager.appSettings.disableAllPersistence.rawValue
17 property int _selectedCount: 0
18 property bool _uploadedSelected: false
21 target: _mavlinkLogManager
22 function onSelectedCountChanged() {
23 _uploadedSelected = false
25 for (var i = 0; i < _mavlinkLogManager.logFiles.count; i++) {
26 var logFile = _mavlinkLogManager.logFiles.get(i)
27 if (logFile.selected) {
29 if (logFile.uploaded) {
30 _uploadedSelected = true
34 _selectedCount = selected
38 QGCPalette { id: qgcPal }
41 Layout.fillWidth: true
42 Layout.preferredHeight: ScreenTools.defaultFontPixelHeight * 14
44 border.color: qgcPal.text
49 anchors.margins: ScreenTools.defaultFontPixelWidth
50 orientation: ListView.Vertical
51 model: _mavlinkLogManager ? _mavlinkLogManager.logFiles : undefined
55 width: parent ? parent.width : 0
56 height: selectCheck.height
61 spacing: ScreenTools.defaultFontPixelWidth
65 checked: object.selected
66 enabled: !object.writing && !object.uploading
67 onClicked: object.selected = checked
72 Layout.fillWidth: true
73 color: object.writing ? qgcPal.warningText : qgcPal.text
77 text: Number(object.size).toLocaleString(Qt.locale(), 'f', 0)
78 visible: !object.uploading && !object.uploaded
79 color: object.writing ? qgcPal.warningText : qgcPal.text
80 horizontalAlignment: Text.AlignRight
81 Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * 12
85 text: qsTr("Uploaded")
86 visible: object.uploaded
87 horizontalAlignment: Text.AlignRight
88 Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * 12
92 visible: object.uploading && !object.uploaded
93 Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * 12
94 height: ScreenTools.defaultFontPixelHeight
97 value: object.progress * 100.0
105 Layout.fillWidth: true
106 spacing: ScreenTools.defaultFontPixelWidth
109 text: qsTr("Check All")
110 enabled: _mavlinkLogManager && !_mavlinkLogManager.uploading && !_mavlinkLogManager.logRunning
112 for (var i = 0; i < _mavlinkLogManager.logFiles.count; i++) {
113 _mavlinkLogManager.logFiles.get(i).selected = true
119 text: qsTr("Check None")
120 enabled: _mavlinkLogManager && !_mavlinkLogManager.uploading && !_mavlinkLogManager.logRunning
122 for (var i = 0; i < _mavlinkLogManager.logFiles.count; i++) {
123 _mavlinkLogManager.logFiles.get(i).selected = false
129 text: qsTr("Delete Selected")
130 enabled: _selectedCount > 0 && _mavlinkLogManager && !_mavlinkLogManager.uploading && !_mavlinkLogManager.logRunning
131 onClicked: deleteDialog.open()
136 buttons: MessageDialog.Yes | MessageDialog.No
137 title: qsTr("Delete Selected Log Files")
138 text: qsTr("Confirm deleting selected log files?")
139 onButtonClicked: function (button, role) {
140 if (button === MessageDialog.Yes)
141 _mavlinkLogManager.deleteLog()
147 text: qsTr("Upload Selected")
148 enabled: _selectedCount > 0 && _mavlinkLogManager && !_mavlinkLogManager.uploading && !_mavlinkLogManager.logRunning && !_uploadedSelected
149 visible: !_mavlinkLogManager || !_mavlinkLogManager.uploading
151 if (_mavlinkLogManager.emailAddress === "")
152 emptyEmailDialog.open()
160 buttons: MessageDialog.Close
161 title: qsTr("MAVLink Logging")
162 text: qsTr("Please enter an email address before uploading MAVLink log files.")
168 buttons: MessageDialog.Yes | MessageDialog.No
169 title: qsTr("Upload Selected Log Files")
170 text: qsTr("Confirm uploading selected log files?")
171 onButtonClicked: function (button, role) {
172 if (button === MessageDialog.Yes)
173 _mavlinkLogManager.uploadLog()
180 enabled: _mavlinkLogManager && _mavlinkLogManager.uploading && !_mavlinkLogManager.logRunning
181 visible: _mavlinkLogManager && _mavlinkLogManager.uploading
182 onClicked: cancelDialog.open()
187 buttons: MessageDialog.Yes | MessageDialog.No
188 title: qsTr("Cancel Upload")
189 text: qsTr("Confirm canceling the upload process?")
190 onButtonClicked: function (button, role) {
191 if (button === MessageDialog.Yes)
192 _mavlinkLogManager.cancelUpload()