diff options
Diffstat (limited to 'app/logfile/VideoLog.qml')
-rw-r--r-- | app/logfile/VideoLog.qml | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/app/logfile/VideoLog.qml b/app/logfile/VideoLog.qml new file mode 100644 index 0000000..325bea8 --- /dev/null +++ b/app/logfile/VideoLog.qml @@ -0,0 +1,213 @@ +/* + * 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.1 +import QtQuick.Controls 2.0 +import '..' + +RowLayout { + id: videolog + + property var properties: ['', 0, 0,0] + + property int part1width: 250 + property int part2width: 600 + property int partheight: 50 + property int part1fontsize: 30 + property int part2fontsize: 30 + property var cameradevs: [] + + ColumnLayout{ + Repeater { + model: ['Zone : ', 'FPS : ', 'Width : ', 'Height : '] + delegate: Item { + implicitWidth: part1width + implicitHeight: partheight + Label { + anchors.right: parent.right + anchors.bottom: parent.bottom + font.pixelSize: part1fontsize + text: model.modelData + } + } + } + } + ColumnLayout{ +// RowLayout{ +// implicitWidth: part2width +// implicitHeight: partheight +// ButtonGroup { +// id: zonegroup +// } +// Repeater { +// id: zones +// model: ['None', 'Front', 'Rear', 'Left', 'Right'] +// delegate: CheckBox { +// text: model.modelData +// font.family: 'Roboto' +// font.pixelSize: part2fontsize +// ButtonGroup.group: zonegroup +// contentItem: Text { +// text: parent.text +// font: parent.font +// color:'white' +// horizontalAlignment: Text.AlignHCenter +// verticalAlignment: Text.AlignVCenter +// leftPadding: parent.indicator.width + parent.spacing +// } +// onCheckedChanged: { +// if(checked) { +// properties[0] = text +// } +// } +// } +// Component.onCompleted: { +// zones.itemAt(0).checked = true +// } +// } +// } + + ComboBox { + id: camerainfo + implicitWidth: part2width + font.pixelSize: 25 + model: cameradevs + contentItem: Text { + text: camerainfo.displayText + font: camerainfo.font + color: camerainfo.pressed ? "#17a81a" : "white" + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + indicator: Canvas { + id: canvas + x: camerainfo.width - width - camerainfo.rightPadding + y: camerainfo.topPadding + (camerainfo.availableHeight - height) / 2 + width: 20 + height: 12 + contextType: "2d" + + Connections { + target: camerainfo + onPressedChanged: { + canvas.requestPaint() + properties[0] = camerainfo.displayText + console.log("onPressedChanged", properties[0]) + } + } + + onPaint: { + context.reset(); + context.moveTo(0, 0); + context.lineTo(width, 0); + context.lineTo(width / 2, height); + context.closePath(); + context.fillStyle = camerainfo.pressed ? "#17a81a" : "white"; + context.fill(); + } + } + popup: Popup { + id: popup + y: camerainfo.height - 1 + implicitWidth: camerainfo.width + implicitHeight: listview.count > 6 ? (listview.contentHeight/3.3) : listview.contentHeight + padding: 0 + + contentItem: ListView { + id: listview + clip: true + model: camerainfo.visible ? camerainfo.delegateModel : null + currentIndex: camerainfo.highlightedIndex + ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Image { source: "images/camerainfo_bg.svg" } + } + delegate: ItemDelegate { + id: popupdelegate + width: camerainfo.width + contentItem: Item { + implicitHeight: 30 + Text { + text: modelData + color: popupdelegate.pressed || highlighted ? "#21be2b" : "white" + font: camerainfo.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + } + highlighted: camerainfo.highlightedIndex == index + } + + background: Image { source: "images/camerainfo_bg.svg" } + + onCurrentTextChanged: { + properties[0] = camerainfo.currentText + console.log("onCurrentTextChanged", properties[0]) + } + } + + Repeater { + id: textfields + property list<IntValidator> range: [ + IntValidator{bottom: 0; top: 100;}, + IntValidator{bottom: 0; top: 2000;}, + IntValidator{bottom: 0; top: 2000;} + ] + model: ['(0~100)', '(0~2000)', '(0~2000)'] + delegate: TextField { + implicitWidth: part2width + implicitHeight: partheight + color: 'white' + font.pixelSize: part2fontsize + verticalAlignment: TextInput.AlignBottom + Label { + anchors.right: parent.right + anchors.bottom: parent.bottom + text: model.modelData + color: 'gray' + font.pixelSize: 20 + } + onTextChanged: { + if(text == '0') { + text = '' + } + if(model.index + 1 < properties.length) { + properties[model.index + 1] = text + } + } + onFocusChanged: { + root.updateKeyBoard() + } + } + Component.onCompleted: { + for(var i = 0; i < textfields.count && i < range.length; i++) { + textfields.itemAt(i).validator = range[i] + root.addTarget(textfields.itemAt(i)) + } + } + } + } + + Component.onCompleted: { + logsaveimpl.enumerateCameras(); + cameradevs = logsaveimpl.cameradevs(); + properties[0] = cameradevs[0] + console.log(properties[0]); + } +} |