diff options
Diffstat (limited to 'src/imports/controls/material/ComboBox.qml')
-rw-r--r-- | src/imports/controls/material/ComboBox.qml | 86 |
1 files changed, 44 insertions, 42 deletions
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml index 97724585..183bcef9 100644 --- a/src/imports/controls/material/ComboBox.qml +++ b/src/imports/controls/material/ComboBox.qml @@ -1,9 +1,9 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2016 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** -** This file is part of the Qt Labs Controls module of the Qt Toolkit. +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL3$ ** Commercial License Usage @@ -36,48 +36,65 @@ import QtQuick 2.6 import QtQuick.Window 2.2 -import Qt.labs.templates 1.0 as T -import Qt.labs.controls.material 1.0 -import QtGraphicalEffects 1.0 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 T.ComboBox { id: control + Material.elevation: control.pressed ? 8 : 2 + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem.implicitHeight + topPadding + bottomPadding) + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) baselineOffset: contentItem.y + contentItem.baselineOffset spacing: 6 + // external vertical padding is 6 (to increase touch area) padding: 12 + leftPadding: padding - 4 + rightPadding: padding - 4 + + // Don't use toolTextColor, as that is often white when we have a white background. + Material.foreground: Material.foreground === Material.toolTextColor ? undefined : Material.foreground - //! [delegate] delegate: MenuItem { - width: control.width + width: control.popup.width text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + Material.foreground: control.currentIndex === index ? control.Material.accent : control.Material.foreground highlighted: control.highlightedIndex === index - pressed: highlighted && control.pressed } - //! [delegate] - //! [contentItem] + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + opacity: !control.enabled ? 0.5 : 1.0 + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/drop-indicator.png" + } + contentItem: Text { + leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + text: control.displayText font: control.font color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter elide: Text.ElideRight - rightPadding: 14 + control.spacing } - //! [contentItem] - //! [background] background: Rectangle { implicitWidth: 120 - implicitHeight: 32 + implicitHeight: 48 + // external vertical padding is 6 (to increase touch area) + y: 6 + height: parent.height - 12 radius: 2 color: control.Material.dialogColor @@ -87,36 +104,23 @@ T.ComboBox { } } - layer.enabled: control.enabled - layer.effect: DropShadow { - verticalOffset: 1 - color: control.Material.dropShadowColor - samples: control.pressed ? 15 : 9 - spread: 0.5 - } - - Image { - x: parent.width - width - control.rightPadding - y: (parent.height - height) / 2 - opacity: !control.enabled ? 0.5 : 1.0 - source: "qrc:/qt-project.org/imports/Qt/labs/controls/material/images/drop-indicator.png" + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation } Rectangle { width: parent.width height: parent.height radius: parent.radius - visible: control.activeFocus + visible: control.visualFocus color: control.Material.checkBoxUncheckedRippleColor } } - //! [background] - //! [popup] popup: T.Popup { - y: control.height - implicitWidth: control.width - implicitHeight: listview.contentHeight + width: control.width + implicitHeight: contentItem.implicitHeight transformOrigin: Item.Top topMargin: 12 bottomMargin: 12 @@ -138,26 +142,24 @@ T.ComboBox { } contentItem: ListView { - id: listview clip: true + implicitHeight: contentHeight model: control.popup.visible ? control.delegateModel : null currentIndex: control.highlightedIndex + highlightRangeMode: ListView.ApplyRange + highlightMoveDuration: 0 T.ScrollIndicator.vertical: ScrollIndicator { } } background: Rectangle { - radius: 3 + radius: 2 color: control.Material.dialogColor layer.enabled: control.enabled - layer.effect: DropShadow { - verticalOffset: 1 - color: control.Material.dropShadowColor - samples: 15 - spread: 0.5 + layer.effect: ElevationEffect { + elevation: 8 } } } - //! [popup] } |