/*===================================================================== QGroundControl Open Source Ground Control Station (c) 2009, 2015 QGROUNDCONTROL PROJECT This file is part of the QGROUNDCONTROL project QGROUNDCONTROL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. QGROUNDCONTROL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with QGROUNDCONTROL. If not, see . ======================================================================*/ import QtQuick 2.5 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 import QtQuick.Dialogs 1.2 import QGroundControl.Palette 1.0 import QGroundControl.Controls 1.0 import QGroundControl.Controllers 1.0 import QGroundControl.ScreenTools 1.0 QGCView { viewPanel: panel property real _margins: ScreenTools.defaultFontPixelHeight LogDownloadController { id: controller factPanel: panel onSelectionChanged: { tableView.selection.clear() for(var i = 0; i < controller.model.count; i++) { var o = controller.model.get(i) if (o && o.selected) { tableView.selection.select(i, i) } } } } QGCPalette { id: palette; colorGroupEnabled: enabled } QGCViewPanel { id: panel anchors.fill: parent TableView { id: tableView anchors.margins: _margins anchors.left: parent.left anchors.right: refreshButton.left anchors.top: parent.top anchors.bottom: parent.bottom model: controller.model selectionMode: SelectionMode.MultiSelection TableViewColumn { title: "Id" width: ScreenTools.defaultFontPixelWidth * 6 horizontalAlignment: Text.AlignHCenter delegate : Text { horizontalAlignment: Text.AlignHCenter text: { var o = controller.model.get(styleData.row) return o ? o.id : "" } } } TableViewColumn { title: "Date" width: ScreenTools.defaultFontPixelWidth * 34 horizontalAlignment: Text.AlignHCenter delegate : Text { text: { var o = controller.model.get(styleData.row) if (o) { //-- Have we received this entry already? if(controller.model.get(styleData.row).received) { var d = controller.model.get(styleData.row).time if(d.getUTCFullYear() < 2010) return "Date Unknown" else return d.toLocaleString() } } return "" } } } TableViewColumn { title: "Size" width: ScreenTools.defaultFontPixelWidth * 18 horizontalAlignment: Text.AlignHCenter delegate : Text { horizontalAlignment: Text.AlignRight text: { var o = controller.model.get(styleData.row) return o ? o.sizeStr : "" } } } TableViewColumn { title: "Status" width: ScreenTools.defaultFontPixelWidth * 22 horizontalAlignment: Text.AlignHCenter delegate : Text { horizontalAlignment: Text.AlignHCenter text: { var o = controller.model.get(styleData.row) return o ? o.status : "" } } } } QGCButton { id: refreshButton anchors.margins: _margins anchors.top: parent.top anchors.right: parent.right enabled: !controller.requestingList && !controller.downloadingLogs text: "Refresh" onClicked: { controller.refresh() } } QGCButton { id: downloadButton anchors.margins: _margins anchors.top: refreshButton.bottom anchors.right: parent.right enabled: !controller.requestingList && !controller.downloadingLogs && tableView.selection.count > 0 text: "Download" onClicked: { //-- Clear selection for(var i = 0; i < controller.model.count; i++) { var o = controller.model.get(i) if (o) o.selected = false } //-- Flag selected log files tableView.selection.forEach(function(rowIndex){ var o = controller.model.get(rowIndex) if (o) o.selected = true }) //-- Download them controller.download() } } QGCButton { id: eraseAllButton anchors.margins: _margins anchors.top: downloadButton.bottom anchors.right: parent.right enabled: !controller.requestingList && !controller.downloadingLogs && controller.model.count > 0 text: "Erase All" onClicked: { eraseAllDialog.visible = true } MessageDialog { id: eraseAllDialog visible: false icon: StandardIcon.Warning standardButtons: StandardButton.Yes | StandardButton.No title: "Delete All Log Files" text: "All log files will be erased permanently. Is this really what you want?" onYes: { controller.eraseAll() eraseAllDialog.visible = false } onNo: { eraseAllDialog.visible = false } } } QGCButton { id: cancelButton anchors.margins: _margins anchors.top: eraseAllButton.bottom anchors.right: parent.right text: "Cancel" enabled: controller.requestingList || controller.downloadingLogs onClicked: { controller.cancel() } } } }