/* * 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 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]); } }