From 39e4539925687d46c7bbe04681dcc09757dc9ae2 Mon Sep 17 00:00:00 2001 From: wanglu Date: Thu, 28 Mar 2019 09:31:38 +0800 Subject: Fix review problems: 1.Add autobuild 2.Replace literal with notation in tsutils/tsrecorder/tsrecorder.c 3.Update LICENSE and COPYRIGHT This is a logging app with following functions included: 1.video recording 2.Audio recording 3.Can data recording & playing 4.Screen touch event recording & playing Change-Id: Id7942e16f87e69d25240f4985d3c47bc262d25c2 Signed-off-by: wanglu --- app/logfile/LogSave.qml | 238 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 app/logfile/LogSave.qml (limited to 'app/logfile/LogSave.qml') diff --git a/app/logfile/LogSave.qml b/app/logfile/LogSave.qml new file mode 100644 index 0000000..3b8a6ad --- /dev/null +++ b/app/logfile/LogSave.qml @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2019 TOYOTA MOTOR CORPORATION + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.0 +import LogSaveImpl 1.0 +import '..' + +ColumnLayout { + property int blankheight : 50 + property bool saving : false + + anchors.left: parent.left + anchors.right: parent.right + + Item { height:blankheight } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + Label { + text: 'CurPath : ' + color: 'white' + } + Label { + id: logpath + text: '' + color: 'white' + font.italic: true + font.pixelSize: 20 + } + } + + // Can log + Item { height:blankheight/3 } + Image { + width: tabbar.width + source: '../images/HMI_Settings_DividingLine.svg' + } + Item { height:blankheight/3 } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + Label { text: 'CAN'; color: '#59FF7F' } + Switch { id: canswitch;anchors.right: parent.right } + } +// Item { height:blankheight/3 } + CANLog {} + + // Touch log + Item { height:blankheight/3 } + Image { + width: tabbar.width + source: '../images/HMI_Settings_DividingLine.svg' + } + Item { height:blankheight/3 } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + Label { text: 'Touch'; color: '#59FF7F' } + Switch { id: touchswitch;anchors.right: parent.right } + } +// Item { height:blankheight/3 } + TouchLog {} + + // Video log + Item { height:blankheight/3 } + Image { + width: tabbar.width + source: '../images/HMI_Settings_DividingLine.svg' + } + Item { height:blankheight/3 } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + Label { text: 'Video'; color: '#59FF7F' } + Switch { id: videoswitch;anchors.right: parent.right } + } +// Item { height:blankheight/3 } + VideoLog { id: videolog } + + //Audio log + Item { height:blankheight/3 } + Image { + width: tabbar.width + source: '../images/HMI_Settings_DividingLine.svg' + } + Item { height:blankheight/3 } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + Label { text: 'Audio'; color: '#59FF7F' } + Switch { id: audioswitch;anchors.right: parent.right } + } +// Item { height:blankheight/3 } + AudioLog { id: audiolog } + + //Status bar + Item { height:blankheight/3 } + Image { + width: tabbar.width + source: '../images/HMI_Settings_DividingLine.svg' + } + Item { height:blankheight/3 } + RowLayout { + Label { + text: 'Status: ' + color: '#59FF7F' + } + Label { + id: recordstatus + property int hour: 0 + property int minute: 0 + property int second: 0 + property string duration: '' + text: saving ? ('Log Saving... '+ duration) : (hour > 0 || minute > 0 || second > 0) ? ('Duration: ' + duration) : 'Press SaveStart to save log file.' + font.pixelSize: 30 + Timer { + id: timer + property double seconds: 0 + interval: 1000 + running: false + repeat: true + onTriggered: { + if(saving) { + seconds++ + parent.hour = seconds/(60*60) + parent.minute = parent.hour > 0 ? seconds%(60*60)/60 : seconds/60 + parent.second = seconds - parent.hour*(60*60) - parent.minute*60 + parent.duration = (parent.hour > 0 ? (parent.hour + 'h ') : '')+(parent.minute > 0 ? (parent.minute + 'm ') : '')+(parent.second > 0 ? (parent.second + 's') : '') + } + } + } + } + } + + // Buttons + Item { height:blankheight/3 } + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + Button { + id: savestart + anchors.horizontalCenter: parent.horizontalCenter + text: saving ? 'SaveStop' : 'SaveStart' + highlighted: true + onClicked: { + if(!saving && (canswitch.checked || touchswitch.checked || videoswitch.checked || audioswitch.checked)) { + if(logsaveimpl.createLogFolders()) { + logpath.text = logsaveimpl.getCurrentSeg() + + if(canswitch.checked) { + logsaveimpl.setCANProperty() + } + + if(touchswitch.checked) { + logsaveimpl.setTouchProperty() + } + + if(videoswitch.checked) { + logsaveimpl.setVideoProperty(videolog.properties) + } + + if(audioswitch.checked) { + logsaveimpl.setAudioProperty(audiolog.currentsps) + } + + console.log("touchswitch.checked: " + touchswitch.checked) + if(logsaveimpl.saveStart(canswitch.checked, touchswitch.checked, videoswitch.checked, audioswitch.checked)) { + recordstatus.hour = recordstatus.minute = recordstatus.second = 0 + recordstatus.duration = '' + timer.seconds = 0 + timer.start() + saving = true + } + } + }else if(saving) { + logsaveimpl.saveStop() + saving = false + timer.stop() + } + } + } + } + LogSaveImpl { + id: logsaveimpl + } + Component.onCompleted: { + if(logsaveimpl.createTripFolder()) { + logpath.text = trippath = logsaveimpl.getCurrentTrip() + } + else { + logpath.text = "" + } + } + + onVisibleChanged: { + if(!visible) { + resetPosition() + } + } + + function adjustPosition(offset) { + y -= offset + var heights = 0 + for(var child in children) { + heights += children[child].height + if(heights <= offset) { + children[child].opacity = 0 + } + else { + children[child].opacity = 0 + break + } + } + } + + function resetPosition() { + var children = logsave.children + for(var child in children) { + children[child].opacity = 1 + } + logsave.y = 0 + } +} -- cgit 1.2.3-korg