Newer
Older
/****************************************************************************
*
* (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.
*
****************************************************************************/
import QtQuick 2.3
import QtQuick.Controls 1.2
import QGroundControl 1.0
import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
import QGroundControl.Controllers 1.0
import QGroundControl.ScreenTools 1.0
AnalyzePage {
id: logDownloadPage
pageComponent: pageComponent
pageName: qsTr("Log Download")
pageDescription: qsTr("Log Download allows you to download binary log files from your vehicle. Click Refresh to get list of available logs.")
property real _margin: ScreenTools.defaultFontPixelWidth
property real _butttonWidth: ScreenTools.defaultFontPixelWidth * 10
QGCPalette { id: palette; colorGroupEnabled: enabled }
Component {
id: pageComponent
RowLayout {
width: availableWidth
height: availableHeight
Connections {
target: logController
onSelectionChanged: {
tableView.selection.clear()
for(var i = 0; i < logController.model.count; i++) {
var o = logController.model.get(i)
if (o && o.selected) {
tableView.selection.select(i, i)
}
}
}
}
selectionMode: SelectionMode.MultiSelection
Layout.fillWidth: true
TableViewColumn {
title: qsTr("Id")
width: ScreenTools.defaultFontPixelWidth * 6
horizontalAlignment: Text.AlignHCenter
delegate : Text {
horizontalAlignment: Text.AlignHCenter
text: {
var o = logController.model.get(styleData.row)
return o ? o.id : ""
}
}
}
TableViewColumn {
title: qsTr("Date")
width: ScreenTools.defaultFontPixelWidth * 34
horizontalAlignment: Text.AlignHCenter
var o = logController.model.get(styleData.row)
if (o) {
//-- Have we received this entry already?
if(logController.model.get(styleData.row).received) {
var d = logController.model.get(styleData.row).time
if(d.getUTCFullYear() < 2010)
return qsTr("Date Unknown")
else
return d.toLocaleString()
}
}
return ""
}
}
}
TableViewColumn {
title: qsTr("Size")
width: ScreenTools.defaultFontPixelWidth * 18
horizontalAlignment: Text.AlignHCenter
delegate : Text {
horizontalAlignment: Text.AlignRight
text: {
var o = logController.model.get(styleData.row)
return o ? o.sizeStr : ""
}
}
}
TableViewColumn {
title: qsTr("Status")
width: ScreenTools.defaultFontPixelWidth * 22
horizontalAlignment: Text.AlignHCenter
delegate : Text {
horizontalAlignment: Text.AlignHCenter
text: {
var o = logController.model.get(styleData.row)
return o ? o.status : ""
}
}
}
}
Column {
spacing: _margin
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
QGCButton {
enabled: !logController.requestingList && !logController.downloadingLogs
text: qsTr("Refresh")
width: _butttonWidth
onClicked: {
if (!QGroundControl.multiVehicleManager.activeVehicle || QGroundControl.multiVehicleManager.activeVehicle.isOfflineEditingVehicle) {
Gus Grubba
committed
mainWindow.showMessageDialog(qsTr("Log Refresh"), qsTr("You must be connected to a vehicle in order to download logs."))
enabled: !logController.requestingList && !logController.downloadingLogs && tableView.selection.count > 0
text: qsTr("Download")
width: _butttonWidth
onClicked: {
//-- Clear selection
for(var i = 0; i < logController.model.count; i++) {
var o = logController.model.get(i)
if (o) o.selected = false
}
//-- Flag selected log files
tableView.selection.forEach(function(rowIndex){
var o = logController.model.get(rowIndex)
fileDialog.title = qsTr("Select save directory")
fileDialog.selectExisting = true
fileDialog.folder = QGroundControl.settingsManager.appSettings.logSavePath
fileDialog.selectFolder = true
fileDialog.openForLoad()
}
QGCFileDialog {
id: fileDialog
onAcceptedForLoad: {
logController.download(file)
close()
}
enabled: !logController.requestingList && !logController.downloadingLogs && logController.model.count > 0
text: qsTr("Erase All")
width: _butttonWidth
Gus Grubba
committed
onClicked: mainWindow.showDialog(
eraseAllMessage,
qsTr("Delete All Log Files"),
mainWindow.showDialogDefaultWidth,
StandardButton.Yes | StandardButton.No)
Component {
id: eraseAllMessage
QGCViewMessage {
message: qsTr("All log files will be erased permanently. Is this really what you want?")
function accept() {
}
}
}
}
QGCButton {
text: qsTr("Cancel")
width: _butttonWidth
enabled: logController.requestingList || logController.downloadingLogs
onClicked: logController.cancel()