// A setting whose value is chosen from far more options than belong on screen. // // PickerRow { // label: "Language" // value: SystemLocale.currentLabel // SearchPicker { items: SystemLocale.locales; onPicked: ... } // } // // Three pages rendered an entire dataset as rows -- every installed locale, the // whole tz database, every mode a monitor advertises -- so the one line telling // you what is currently set was buried under hundreds that were not. The chooser // itself was never the problem and is unchanged: this only collapses it behind // the current value, which is what a person came to the page to read. // // Collapsed by default, and closes again once something is picked, so the page // returns to being readable rather than staying open on a list nobody needs any // more. import QtQuick import qs.config Column { id: root property string label: "" property string detail: "" // What is set right now. Shown on the collapsed row, so the common case -- // looking rather than changing -- needs no interaction at all. property string value: "" property bool enabled: true property bool divider: true property bool expanded: false default property alias content: body.data // Pages call this from their picker's onPicked, so choosing something puts // the list away instead of leaving it open over the rest of the page. function collapse(): void { root.expanded = false; } width: parent ? parent.width : 620 spacing: 0 SettingRow { width: parent.width label: root.label detail: root.detail activatable: root.enabled divider: root.divider && !root.expanded opacity: root.enabled ? 1 : 0.5 controlWidth: 210 onActivated: root.expanded = !root.expanded Row { anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter spacing: 9 Text { anchors.verticalCenter: parent.verticalCenter text: root.value color: Theme.fgDim font.family: Theme.fontFamily font.features: Theme.tabularFigures font.pixelSize: Theme.fontSize elide: Text.ElideRight } Text { anchors.verticalCenter: parent.verticalCenter text: root.expanded ? "▴" : "▾" color: Theme.fgMuted font.family: Theme.fontFamily font.pixelSize: Theme.fontSizeSmall } } } Column { id: body width: parent.width visible: root.expanded } }