67 lines
1.8 KiB
QML
67 lines
1.8 KiB
QML
// Copyright (C) 2017 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
pragma ComponentBehavior: Bound
|
|
import QtQuick
|
|
import QtMultimedia
|
|
|
|
Popup {
|
|
id: cameraListPopup
|
|
|
|
property alias model : view.model
|
|
property cameraDevice currentValue
|
|
property cameraDevice currentItem : model[view.currentIndex]
|
|
|
|
property int itemWidth : 200
|
|
property int itemHeight : 50
|
|
|
|
width: itemWidth + view.anchors.margins*2
|
|
height: view.count * itemHeight + view.anchors.margins*2
|
|
|
|
signal selected
|
|
|
|
ListView {
|
|
id: view
|
|
anchors.fill: parent
|
|
anchors.margins: 5
|
|
snapMode: ListView.SnapOneItem
|
|
highlightFollowsCurrentItem: true
|
|
highlight: Rectangle { color: "gray"; radius: 5 }
|
|
currentIndex: 0
|
|
clip: true
|
|
|
|
delegate: Item {
|
|
id: cameraListItem
|
|
|
|
required property int index
|
|
required property cameraDevice modelData
|
|
|
|
width: cameraListPopup.itemWidth
|
|
height: cameraListPopup.itemHeight
|
|
|
|
Text {
|
|
text: cameraListItem.modelData.description
|
|
|
|
anchors.fill: parent
|
|
anchors.margins: 5
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
elide: Text.ElideRight
|
|
color: "white"
|
|
font.bold: true
|
|
style: Text.Raised
|
|
styleColor: "black"
|
|
font.pixelSize: 14
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
view.currentIndex = cameraListItem.index
|
|
cameraListPopup.currentValue = cameraListItem.modelData
|
|
cameraListPopup.selected()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|