4import Qt.labs.qmlmodels
7import QGroundControl.Controls
11 pageComponent: pageComponent
12 pageDescription: qsTr("Log Download allows you to download binary log files from your vehicle. Click Refresh to get list of available logs.")
19 height: availableHeight
21 Component.onCompleted: LogDownloadController.refresh()
24 Layout.fillWidth: true
25 Layout.fillHeight: true
26 contentWidth: gridLayout.width
27 contentHeight: gridLayout.height
31 rows: LogDownloadController.model.count + 1
33 flow: GridLayout.TopToBottom
34 columnSpacing: ScreenTools.defaultFontPixelWidth
43 model: LogDownloadController.model
46 Binding on checkState {
47 value: object.selected ? Qt.Checked : Qt.Unchecked
50 onClicked: object.selected = checked
54 QGCLabel { text: qsTr("Id") }
57 model: LogDownloadController.model
59 QGCLabel { text: object.id }
62 QGCLabel { text: qsTr("Date") }
65 model: LogDownloadController.model
69 if (!object.received) {
73 if (object.time.getUTCFullYear() < 2010) {
74 return qsTr("Date Unknown")
77 return object.time.toLocaleString(undefined)
82 QGCLabel { text: qsTr("Size") }
85 model: LogDownloadController.model
87 QGCLabel { text: object.sizeStr }
90 QGCLabel { text: qsTr("Status") }
93 model: LogDownloadController.model
95 QGCLabel { text: object.status }
101 spacing: ScreenTools.defaultFontPixelWidth
102 Layout.alignment: Qt.AlignTop
103 Layout.fillWidth: false
106 Layout.fillWidth: true
107 enabled: !LogDownloadController.requestingList && !LogDownloadController.downloadingLogs
108 text: qsTr("Refresh")
111 if (!QGroundControl.multiVehicleManager.activeVehicle || QGroundControl.multiVehicleManager.activeVehicle.isOfflineEditingVehicle) {
112 QGroundControl.showMessageDialog(logDownloadPage, qsTr("Log Refresh"), qsTr("You must be connected to a vehicle in order to download logs."))
116 LogDownloadController.refresh()
121 Layout.fillWidth: true
122 enabled: !LogDownloadController.requestingList && !LogDownloadController.downloadingLogs
123 text: qsTr("Download")
126 var logsSelected = false
127 for (var i = 0; i < LogDownloadController.model.count; i++) {
128 if (LogDownloadController.model.get(i).selected) {
135 QGroundControl.showMessageDialog(logDownloadPage, qsTr("Log Download"), qsTr("You must select at least one log file to download."))
139 if (ScreenTools.isMobile) {
140 LogDownloadController.download()
144 fileDialog.title = qsTr("Select save directory")
145 fileDialog.folder = QGroundControl.settingsManager.appSettings.logSavePath
146 fileDialog.selectFolder = true
147 fileDialog.openForLoad()
152 onAcceptedForLoad: (file) => {
153 LogDownloadController.download(file)
160 Layout.fillWidth: true
161 enabled: !LogDownloadController.requestingList && !LogDownloadController.downloadingLogs && (LogDownloadController.model.count > 0)
162 text: qsTr("Erase All")
163 onClicked: QGroundControl.showMessageDialog(
165 qsTr("Delete All Log Files"),
166 qsTr("All log files will be erased permanently. Is this really what you want?"),
167 Dialog.Yes | Dialog.No,
168 function() { LogDownloadController.eraseAll() }
173 Layout.fillWidth: true
175 enabled: LogDownloadController.requestingList || LogDownloadController.downloadingLogs
176 onClicked: LogDownloadController.cancel()