Revision control

++ // Copyright (C) 2017 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ pragma ComponentBehavior: Bound
++ import QtQuick
++
++ Item {
++ id: selector
++
++ property alias list: view.model
++ property alias selectedIndex: view.currentIndex
++ property alias label: labelText.text
++ property bool expanded
++
++ width: 100
++ height: labelText.implicitHeight + 26
++
++ Rectangle {
++ anchors {
++ left: parent.left
++ right: parent.right
++ bottom: parent.bottom
++ }
++
++ height: labelText.implicitHeight + 4 + (selector.expanded ? 20 * view.count : 20)
++ Behavior on height { NumberAnimation { duration: 300 } }
++
++ radius: 2
++ border.width: 1
++ border.color: "yellow"
++ color: "yellow"
++
++ MouseArea {
++ anchors.fill: parent
++
++ onClicked: selector.expanded = !selector.expanded
++
++ Text {
++ id: labelText
++
++ anchors {
++ left: parent.left
++ top: parent.top
++ margins: 2
++ }
++ }
++
++ Rectangle {
++ anchors {
++ left: parent.left
++ top: labelText.bottom
++ right: parent.right
++ bottom: parent.bottom
++ margins: 2
++ leftMargin: 10
++ }
++
++ radius: 2
++ color: "white"
++
++ ListView {
++ id: view
++
++ anchors.fill: parent
++
++ clip: true
++
++ delegate: Text {
++ required property int index
++ required property string modelData
++
++ anchors {
++ left: parent.left
++ right: parent.right
++ }
++ height: 20
++
++ verticalAlignment: Text.AlignVCenter
++
++ text: modelData
++
++ MouseArea {
++ anchors.fill: parent
++
++ onClicked: {
++ parent.ListView.view.currentIndex = parent.index
++ selector.expanded = !selector.expanded
++ }
++ }
++ }
++ highlight: Rectangle {
++ anchors {
++ left: parent.left
++ right: parent.right
++ }
++ height: 20
++ radius: 2
++
++ color: "yellow"
++ }
++ }
++ }
++ }
++ }
++ }