LedDisplay/app/ressources/qml/ComboBoxDelegate.qml

98 lines
2.1 KiB
QML

import QtQuick 2.0
import QtQuick.Controls 2.9
import QtQuick.Controls.Material 2.0
ItemDelegate {
id: control
property var model: []
property string currentText: model[currentIndex]
property int currentIndex: 0
onClicked: {
if(currentText != "")
currentIndex = model.indexOf(currentText)
else
currentIndex = 0
textEditDialog.open()
}
Text {
anchors {
right: nextPageIconText.left
verticalCenter: parent.verticalCenter
rightMargin: control.padding
}
font.pixelSize: parent.font.pixelSize
color: control.Material.foreground
text: currentText === "" ? "Not set": currentText
}
Text {
id: nextPageIconText
anchors {
right: parent.right
verticalCenter: parent.verticalCenter
rightMargin: control.padding
}
font.pixelSize: parent.height * 0.5
font.styleName: fontAwesome.name
verticalAlignment: Text.AlignVCenter
color: control.Material.foreground
text: "\uf105"
}
Dialog {
id: textEditDialog
parent: Overlay.overlay
x: (parent.width - width) / 2
y: (parent.height - height) / 2
width: parent.width * 0.9
Material.theme: control.Material.theme
Material.accent: control.Material.accent
modal: true
title: control.text
standardButtons: Dialog.Ok | Dialog.Cancel
contentItem: ListView {
id: listView
implicitHeight: childrenRect.height
delegate: RadioDelegate {
width: parent.width
checked: index === control.currentIndex
ButtonGroup.group: buttonGroup
text: modelData
onClicked: {
control.currentIndex = index
textEditDialog.close()
}
}
}
onAboutToShow: {
listView.model = []
listView.model = control.model
}
ButtonGroup {
id: buttonGroup
}
}
}