// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only // Qt-Security score:significant reason:default pragma ComponentBehavior: Bound import QtQuick import QtQuick.Window import QtQuick.Controls.impl import QtQuick.Templates as T import QtQuick.Controls.Material import QtQuick.Controls.Material.impl T.ComboBox { id: control implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding, implicitIndicatorHeight + topPadding + bottomPadding) leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) Material.background: flat ? "transparent" : undefined Material.foreground: flat ? undefined : Material.primaryTextColor delegate: MenuItem { required property var model required property int index width: ListView.view.width text: model[control.textRole] Material.foreground: control.currentIndex === index ? ListView.view.contentItem.Material.accent : ListView.view.contentItem.Material.foreground highlighted: control.highlightedIndex === index hoverEnabled: control.hoverEnabled } indicator: ColorImage { x: control.mirrored ? control.padding : control.width - width - control.padding y: control.topPadding + (control.availableHeight - height) / 2 color: control.enabled ? control.Material.foreground : control.Material.hintTextColor source: "qrc:/qt-project.org/imports/QtQuick/Controls/Material/images/drop-indicator.png" } contentItem: T.TextField { leftPadding: Material.textFieldHorizontalPadding topPadding: Material.textFieldVerticalPadding bottomPadding: Material.textFieldVerticalPadding text: control.editable ? control.editText : control.displayText enabled: control.editable autoScroll: control.editable readOnly: control.down inputMethodHints: control.inputMethodHints validator: control.validator selectByMouse: control.selectTextByMouse color: control.enabled ? control.Material.foreground : control.Material.hintTextColor selectionColor: control.Material.accentColor selectedTextColor: control.Material.primaryHighlightedTextColor verticalAlignment: Text.AlignVCenter cursorDelegate: CursorDelegate { } } background: MaterialTextContainer { implicitWidth: 120 implicitHeight: control.Material.textFieldHeight outlineColor: (enabled && control.hovered) ? control.Material.primaryTextColor : control.Material.hintTextColor focusedOutlineColor: control.Material.accentColor controlHasActiveFocus: control.activeFocus controlHasText: true horizontalPadding: control.Material.textFieldHorizontalPadding } popup: T.Popup { y: control.editable ? control.height - 5 : 0 width: control.width height: Math.min(contentItem.implicitHeight + verticalPadding * 2, control.Window.height - topMargin - bottomMargin) transformOrigin: Item.Top topMargin: 12 bottomMargin: 12 verticalPadding: 8 Material.theme: control.Material.theme Material.accent: control.Material.accent Material.primary: control.Material.primary enter: Transition { // grow_fade_in NumberAnimation { property: "scale"; from: 0.9; easing.type: Easing.OutQuint; duration: 220 } NumberAnimation { property: "opacity"; from: 0.0; easing.type: Easing.OutCubic; duration: 150 } } exit: Transition { // shrink_fade_out NumberAnimation { property: "scale"; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } NumberAnimation { property: "opacity"; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } } contentItem: ListView { clip: true implicitHeight: contentHeight model: control.delegateModel currentIndex: control.highlightedIndex highlightMoveDuration: 0 T.ScrollIndicator.vertical: ScrollIndicator { } } background: Rectangle { radius: 4 color: parent.Material.dialogColor layer.enabled: control.enabled layer.effect: RoundedElevationEffect { elevation: 4 roundedScale: Material.ExtraSmallScale } } } }