summaryrefslogtreecommitdiffstats
path: root/app/logfile/LogSave.qml
diff options
context:
space:
mode:
Diffstat (limited to 'app/logfile/LogSave.qml')
-rw-r--r--app/logfile/LogSave.qml238
1 files changed, 238 insertions, 0 deletions
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
+ }
+}