aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls/material/ComboBox.qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/controls/material/ComboBox.qml')
-rw-r--r--src/imports/controls/material/ComboBox.qml86
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]
}