aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-01-16 09:37:42 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2018-01-16 09:38:19 +0100
commit08e6333450bc28c61fa804101df3ae8bef4e9568 (patch)
treeacb8973cbbd2319ab75e460e35a3278459d717df /src/imports/controls
parentef5e426bed3b1362394c7cc0c97522bb20cacff0 (diff)
parent744d14b468eb4bdd4dabf72ef7acdca1bc07ea5d (diff)
Merge remote-tracking branch 'origin/5.10' into dev
Diffstat (limited to 'src/imports/controls')
-rw-r--r--src/imports/controls/BusyIndicator.qml5
-rw-r--r--src/imports/controls/ComboBox.qml1
-rw-r--r--src/imports/controls/DelayButton.qml62
-rw-r--r--src/imports/controls/Dial.qml1
-rw-r--r--src/imports/controls/GroupBox.qml1
-rw-r--r--src/imports/controls/ScrollBar.qml6
-rw-r--r--src/imports/controls/ScrollIndicator.qml6
-rw-r--r--src/imports/controls/SwipeView.qml1
-rw-r--r--src/imports/controls/Tumbler.qml10
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-checkbox-custom.qml1
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml1
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-combobox-custom.qml1
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-radiobutton-custom.qml1
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml1
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-switch-custom.qml1
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml1
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc27
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-index.qdoc13
-rw-r--r--src/imports/controls/fusion/BusyIndicator.qml6
-rw-r--r--src/imports/controls/fusion/ComboBox.qml5
-rw-r--r--src/imports/controls/fusion/DelayButton.qml58
-rw-r--r--src/imports/controls/fusion/ProgressBar.qml3
-rw-r--r--src/imports/controls/fusion/RoundButton.qml12
-rw-r--r--src/imports/controls/fusion/ScrollBar.qml6
-rw-r--r--src/imports/controls/fusion/ScrollIndicator.qml6
-rw-r--r--src/imports/controls/fusion/TabButton.qml27
-rw-r--r--src/imports/controls/fusion/Tumbler.qml10
-rw-r--r--src/imports/controls/fusion/qquickfusionbusyindicator.cpp21
-rw-r--r--src/imports/controls/fusion/qquickfusionbusyindicator_p.h7
-rw-r--r--src/imports/controls/imagine/ComboBox.qml8
-rw-r--r--src/imports/controls/imagine/Tumbler.qml9
-rw-r--r--src/imports/controls/material/BusyIndicator.qml4
-rw-r--r--src/imports/controls/material/CheckBox.qml2
-rw-r--r--src/imports/controls/material/ComboBox.qml1
-rw-r--r--src/imports/controls/material/Dial.qml2
-rw-r--r--src/imports/controls/material/GroupBox.qml1
-rw-r--r--src/imports/controls/material/LICENSE_ANGULARJS.txt19
-rw-r--r--src/imports/controls/material/RadioButton.qml2
-rw-r--r--src/imports/controls/material/ScrollBar.qml2
-rw-r--r--src/imports/controls/material/ScrollIndicator.qml6
-rw-r--r--src/imports/controls/material/SwipeView.qml1
-rw-r--r--src/imports/controls/material/Switch.qml2
-rw-r--r--src/imports/controls/material/ToolButton.qml2
-rw-r--r--src/imports/controls/material/Tumbler.qml10
-rw-r--r--src/imports/controls/material/qquickmaterialbusyindicator.cpp24
-rw-r--r--src/imports/controls/material/qquickmaterialbusyindicator_p.h4
-rw-r--r--src/imports/controls/material/qt_attribution.json13
-rw-r--r--src/imports/controls/qquickdefaultbusyindicator.cpp24
-rw-r--r--src/imports/controls/qquickdefaultbusyindicator_p.h4
-rw-r--r--src/imports/controls/qtquickcontrols2plugin.cpp12
-rw-r--r--src/imports/controls/universal/CheckBox.qml2
-rw-r--r--src/imports/controls/universal/ComboBox.qml1
-rw-r--r--src/imports/controls/universal/GroupBox.qml1
-rw-r--r--src/imports/controls/universal/RadioButton.qml2
-rw-r--r--src/imports/controls/universal/ScrollIndicator.qml6
-rw-r--r--src/imports/controls/universal/Switch.qml2
-rw-r--r--src/imports/controls/universal/Tumbler.qml9
59 files changed, 262 insertions, 218 deletions
diff --git a/src/imports/controls/BusyIndicator.qml b/src/imports/controls/BusyIndicator.qml
index bff591c7..bde5fa7c 100644
--- a/src/imports/controls/BusyIndicator.qml
+++ b/src/imports/controls/BusyIndicator.qml
@@ -53,8 +53,9 @@ T.BusyIndicator {
pen: control.palette.dark
fill: control.palette.dark
+
+ running: control.running
opacity: control.running ? 1 : 0
- visible: control.running || animator.running
- Behavior on opacity { OpacityAnimator { id: animator; duration: 250 } }
+ Behavior on opacity { OpacityAnimator { duration: 250 } }
}
}
diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml
index defbff29..2bb26967 100644
--- a/src/imports/controls/ComboBox.qml
+++ b/src/imports/controls/ComboBox.qml
@@ -88,7 +88,6 @@ T.ComboBox {
color: control.editable ? control.palette.text : control.palette.buttonText
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
background: Rectangle {
diff --git a/src/imports/controls/DelayButton.qml b/src/imports/controls/DelayButton.qml
index e879c73f..b34caed6 100644
--- a/src/imports/controls/DelayButton.qml
+++ b/src/imports/controls/DelayButton.qml
@@ -58,55 +58,35 @@ T.DelayButton {
}
}
- contentItem: Item {
- implicitWidth: label.implicitWidth
- implicitHeight: label.implicitHeight
-
- Item {
- x: -control.leftPadding + (control.progress * control.width)
- width: (1.0 - control.progress) * control.width
- height: parent.height
-
+ contentItem: ItemGroup {
+ ClippedText {
clip: control.progress > 0
+ clipX: -control.leftPadding + control.progress * control.width
+ clipWidth: (1.0 - control.progress) * control.width
visible: control.progress < 1
- Text {
- id: label
- x: -parent.x
- width: control.availableWidth
- height: parent.height
-
- text: control.text
- font: control.font
- opacity: enabled ? 1 : 0.3
- color: control.palette.buttonText
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
+ text: control.text
+ font: control.font
+ opacity: enabled ? 1 : 0.3
+ color: control.palette.buttonText
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
- Item {
- x: -control.leftPadding
- width: control.progress * control.width
- height: parent.height
-
+ ClippedText {
clip: control.progress > 0
+ clipX: -control.leftPadding
+ clipWidth: control.progress * control.width
visible: control.progress > 0
- Text {
- x: control.leftPadding
- width: control.availableWidth
- height: parent.height
-
- text: control.text
- font: control.font
- opacity: enabled ? 1 : 0.3
- color: control.palette.brightText
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
+ text: control.text
+ font: control.font
+ opacity: enabled ? 1 : 0.3
+ color: control.palette.brightText
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
}
diff --git a/src/imports/controls/Dial.qml b/src/imports/controls/Dial.qml
index 6b96187a..f4132611 100644
--- a/src/imports/controls/Dial.qml
+++ b/src/imports/controls/Dial.qml
@@ -54,7 +54,6 @@ T.Dial {
}
handle: ColorImage {
- id: handleItem
x: background.x + background.width / 2 - handle.width / 2
y: background.y + background.height / 2 - handle.height / 2
width: 14
diff --git a/src/imports/controls/GroupBox.qml b/src/imports/controls/GroupBox.qml
index 1a481e22..a594869b 100644
--- a/src/imports/controls/GroupBox.qml
+++ b/src/imports/controls/GroupBox.qml
@@ -62,7 +62,6 @@ T.GroupBox {
font: control.font
color: control.palette.windowText
elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/ScrollBar.qml b/src/imports/controls/ScrollBar.qml
index b67a2564..2f8826bf 100644
--- a/src/imports/controls/ScrollBar.qml
+++ b/src/imports/controls/ScrollBar.qml
@@ -51,8 +51,6 @@ T.ScrollBar {
visible: control.policy !== T.ScrollBar.AlwaysOff
contentItem: Rectangle {
- id: handle
-
implicitWidth: control.interactive ? 6 : 2
implicitHeight: control.interactive ? 6 : 2
@@ -63,14 +61,14 @@ T.ScrollBar {
states: State {
name: "active"
when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0)
- PropertyChanges { target: handle; opacity: 0.75 }
+ PropertyChanges { target: control.contentItem; opacity: 0.75 }
}
transitions: Transition {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 450 }
- NumberAnimation { target: handle; duration: 200; property: "opacity"; to: 0.0 }
+ NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 }
}
}
}
diff --git a/src/imports/controls/ScrollIndicator.qml b/src/imports/controls/ScrollIndicator.qml
index 0025d489..6616d6c6 100644
--- a/src/imports/controls/ScrollIndicator.qml
+++ b/src/imports/controls/ScrollIndicator.qml
@@ -50,8 +50,6 @@ T.ScrollIndicator {
padding: 2
contentItem: Rectangle {
- id: indicator
-
implicitWidth: 2
implicitHeight: 2
@@ -62,7 +60,7 @@ T.ScrollIndicator {
states: State {
name: "active"
when: control.active
- PropertyChanges { target: indicator; opacity: 0.75 }
+ PropertyChanges { target: control.contentItem; opacity: 0.75 }
}
transitions: [
@@ -70,7 +68,7 @@ T.ScrollIndicator {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 450 }
- NumberAnimation { target: indicator; duration: 200; property: "opacity"; to: 0.0 }
+ NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 }
}
}
]
diff --git a/src/imports/controls/SwipeView.qml b/src/imports/controls/SwipeView.qml
index d0816c50..827c9cd6 100644
--- a/src/imports/controls/SwipeView.qml
+++ b/src/imports/controls/SwipeView.qml
@@ -60,5 +60,6 @@ T.SwipeView {
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 250
+ maximumFlickVelocity: 4 * (control.orientation === Qt.Horizontal ? width : height)
}
}
diff --git a/src/imports/controls/Tumbler.qml b/src/imports/controls/Tumbler.qml
index 25c00162..8d5546c9 100644
--- a/src/imports/controls/Tumbler.qml
+++ b/src/imports/controls/Tumbler.qml
@@ -45,7 +45,6 @@ T.Tumbler {
implicitHeight: 200
delegate: Text {
- id: label
text: modelData
color: control.visualFocus ? control.palette.highlight : control.palette.text
font: control.font
@@ -55,15 +54,14 @@ T.Tumbler {
}
contentItem: TumblerView {
- id: tumblerView
model: control.model
delegate: control.delegate
path: Path {
- startX: tumblerView.width / 2
- startY: -tumblerView.delegateHeight / 2
+ startX: contentItem.width / 2
+ startY: -contentItem.delegateHeight / 2
PathLine {
- x: tumblerView.width / 2
- y: (control.visibleItemCount + 1) * tumblerView.delegateHeight - tumblerView.delegateHeight / 2
+ x: contentItem.width / 2
+ y: (control.visibleItemCount + 1) * contentItem.delegateHeight - contentItem.delegateHeight / 2
}
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-checkbox-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-checkbox-custom.qml
index e86f1393..ed2a6621 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-checkbox-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-checkbox-custom.qml
@@ -58,7 +58,6 @@ CheckBox {
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
- horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
leftPadding: control.indicator.width + control.spacing
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml
index 2815aa25..aa19ff14 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml
@@ -41,7 +41,6 @@ CheckDelegate {
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-combobox-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-combobox-custom.qml
index eb5f832c..68e7ddad 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-combobox-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-combobox-custom.qml
@@ -76,7 +76,6 @@ ComboBox {
text: control.displayText
font: control.font
color: control.pressed ? "#17a81a" : "#21be2b"
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml
index 8ce86d61..e19d28f3 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml
@@ -39,8 +39,6 @@ ItemDelegate {
font: control.font
color: control.enabled ? (control.down ? "#17a81a" : "#21be2b") : "#bdbebf"
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-radiobutton-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-radiobutton-custom.qml
index 3b3e8d4a..6d77772d 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-radiobutton-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-radiobutton-custom.qml
@@ -58,7 +58,6 @@ RadioButton {
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
- horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
leftPadding: control.indicator.width + control.spacing
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml
index 1033befd..d486943d 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml
@@ -41,7 +41,6 @@ RadioDelegate {
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml
index f8b8f7af..4159e7f7 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml
@@ -58,8 +58,6 @@ SwipeDelegate {
font: control.font
color: control.enabled ? (control.down ? "#17a81a" : "#21be2b") : "#bdbebf"
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
Behavior on x {
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-switch-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-switch-custom.qml
index f1ec0797..51e6b0c2 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-switch-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-switch-custom.qml
@@ -57,7 +57,6 @@ Switch {
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
- horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
leftPadding: control.indicator.width + control.spacing
}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml
index 00b82f79..726614d8 100644
--- a/src/imports/controls/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml
@@ -41,7 +41,6 @@ SwitchDelegate {
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc
index 33cfcdc8..9d356686 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc
@@ -53,21 +53,42 @@
Primary=BlueGrey
\endcode
- \section1 Imagine Style Configuration
+ \section1 Controls Section
+
+ The following values can be specified in a \c Controls section of the
+ configuration file:
+
+ \table
+ \header
+ \li Variable
+ \li Description
+ \row
+ \li \c Style
+ \li Specifies the style to run the application with.
+ The value can be the name of one of the \l {Available Styles}{built-in styles}
+ or a \l {Creating a Custom Style}{custom style}.
+ \row
+ \li \c FallbackStyle
+ \li Specifies the style to use for controls that are not implemented.
+ The style must be one of the \l {Available Styles}{built-in styles}.
+ By default, the \l {Default Style}{Default} style is used.
+ \endtable
+
+ \section1 Imagine Section
The following table lists values that can be used to configure the
\l {Imagine style} in an \c Imagine section of the configuration file:
\include qquickimaginestyle.qdocinc conf
- \section1 Material Style Configuration
+ \section1 Material Section
The following table lists values that can be used to configure the
\l {Material style} in a \c Material section of the configuration file:
\include qquickmaterialstyle.qdocinc conf
- \section1 Universal Style Configuration
+ \section1 Universal Section
The following table lists values that can be used to configure the
\l {Universal style} in a \c Universal section of the configuration file:
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
index 43c38745..2ce0eb92 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
@@ -108,6 +108,19 @@
\li ...
\endtable
+ \section1 License and Attributions
+
+ Qt Quick Controls 2 is available under commercial licenses from \l{The Qt Company}.
+ In addition, it is available under the
+ \l{GNU Lesser General Public License, version 3}, or
+ the \l{GNU General Public License, version 2}.
+ See \l{Qt Licensing} for further details.
+
+ Furthermore Qt Quick Controls 2 potentially contains third party
+ modules under following permissive licenses:
+
+ \generatelist{groupsbymodule attributions-qtquickcontrols2}
+
\section1 Topics
\list
diff --git a/src/imports/controls/fusion/BusyIndicator.qml b/src/imports/controls/fusion/BusyIndicator.qml
index 1de0e973..cba5fc2e 100644
--- a/src/imports/controls/fusion/BusyIndicator.qml
+++ b/src/imports/controls/fusion/BusyIndicator.qml
@@ -54,12 +54,12 @@ T.BusyIndicator {
implicitHeight: 28
color: control.palette.text
+ running: control.running
opacity: control.running ? 1 : 0
- visible: control.running || opacityAnimator.running
- Behavior on opacity { OpacityAnimator { id: opacityAnimator; duration: 250 } }
+ Behavior on opacity { OpacityAnimator { duration: 250 } }
RotationAnimator on rotation {
- running: control.running || opacityAnimator.running
+ running: control.running || contentItem.visible
from: 0
to: 360
duration: 1000
diff --git a/src/imports/controls/fusion/ComboBox.qml b/src/imports/controls/fusion/ComboBox.qml
index c4d49e0f..bc232759 100644
--- a/src/imports/controls/fusion/ComboBox.qml
+++ b/src/imports/controls/fusion/ComboBox.qml
@@ -81,7 +81,7 @@ T.ComboBox {
enabled: control.editable
autoScroll: control.editable
- readOnly: control.popup.visible
+ readOnly: control.down
inputMethodHints: control.inputMethodHints
validator: control.validator
@@ -140,7 +140,6 @@ T.ComboBox {
}
popup: T.Popup {
- id: popup
width: control.width
height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin)
topMargin: 6
@@ -151,7 +150,7 @@ T.ComboBox {
contentItem: ListView {
clip: true
implicitHeight: contentHeight
- model: control.popup.visible ? control.delegateModel : null
+ model: control.delegateModel
currentIndex: control.highlightedIndex
highlightRangeMode: ListView.ApplyRange
highlightMoveDuration: 0
diff --git a/src/imports/controls/fusion/DelayButton.qml b/src/imports/controls/fusion/DelayButton.qml
index 2c8006be..261db320 100644
--- a/src/imports/controls/fusion/DelayButton.qml
+++ b/src/imports/controls/fusion/DelayButton.qml
@@ -58,53 +58,33 @@ T.DelayButton {
}
}
- contentItem: Item {
- implicitWidth: label.implicitWidth
- implicitHeight: label.implicitHeight
-
- Item {
- x: -control.leftPadding + (control.mirrored ? 0 : control.progress * control.width)
- width: control.width
- height: parent.height
-
+ contentItem: ItemGroup {
+ ClippedText {
clip: control.progress > 0
+ clipX: -control.leftPadding + (control.mirrored ? 0 : control.progress * control.width)
+ clipWidth: control.width
visible: control.mirrored ? control.progress > 0 : control.progress < 1
- Text {
- id: label
- x: -parent.x
- width: control.availableWidth
- height: parent.height
-
- text: control.text
- font: control.font
- color: control.mirrored ? control.palette.brightText : control.palette.buttonText
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
+ text: control.text
+ font: control.font
+ color: control.mirrored ? control.palette.brightText : control.palette.buttonText
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
- Item {
- x: -control.leftPadding
- width: (control.mirrored ? 1.0 - control.progress : control.progress) * control.width
- height: parent.height
-
+ ClippedText {
clip: control.progress > 0
+ clipX: -control.leftPadding
+ clipWidth: (control.mirrored ? 1.0 - control.progress : control.progress) * control.width
visible: control.mirrored ? control.progress < 1 : control.progress > 0
- Text {
- x: -parent.x
- width: control.availableWidth
- height: parent.height
-
- text: control.text
- font: control.font
- color: control.mirrored ? control.palette.buttonText : control.palette.brightText
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
+ text: control.text
+ font: control.font
+ color: control.mirrored ? control.palette.buttonText : control.palette.brightText
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
}
diff --git a/src/imports/controls/fusion/ProgressBar.qml b/src/imports/controls/fusion/ProgressBar.qml
index 2b4edd3d..547d5f7c 100644
--- a/src/imports/controls/fusion/ProgressBar.qml
+++ b/src/imports/controls/fusion/ProgressBar.qml
@@ -80,7 +80,6 @@ T.ProgressBar {
clip: true
ColorImage {
- id: mask
width: Math.ceil(parent.width / implicitWidth + 1) * implicitWidth
height: parent.height
@@ -92,7 +91,7 @@ T.ProgressBar {
visible: control.indeterminate
NumberAnimation on x {
running: control.indeterminate && control.visible
- from: -mask.implicitWidth
+ from: -31 // progressmask.png width
to: 0
loops: Animation.Infinite
duration: 750
diff --git a/src/imports/controls/fusion/RoundButton.qml b/src/imports/controls/fusion/RoundButton.qml
index 9ebc74dd..5d28b52c 100644
--- a/src/imports/controls/fusion/RoundButton.qml
+++ b/src/imports/controls/fusion/RoundButton.qml
@@ -72,18 +72,16 @@ T.RoundButton {
implicitHeight: 32
visible: !control.flat || control.down || control.checked
- color: Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered)
- gradient: control.down || control.checked ? null : buttonGradient
-
- Gradient {
- id: buttonGradient
+ gradient: Gradient {
GradientStop {
position: 0
- color: Fusion.gradientStart(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered))
+ color: control.down || control.checked ? Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered)
+ : Fusion.gradientStart(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered))
}
GradientStop {
position: 1
- color: Fusion.gradientStop(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered))
+ color: control.down || control.checked ? Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered)
+ : Fusion.gradientStop(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered))
}
}
diff --git a/src/imports/controls/fusion/ScrollBar.qml b/src/imports/controls/fusion/ScrollBar.qml
index 0de27b22..25881d2d 100644
--- a/src/imports/controls/fusion/ScrollBar.qml
+++ b/src/imports/controls/fusion/ScrollBar.qml
@@ -53,8 +53,6 @@ T.ScrollBar {
visible: control.policy !== T.ScrollBar.AlwaysOff
contentItem: Rectangle {
- id: handle
-
implicitWidth: control.interactive ? 6 : 2
implicitHeight: control.interactive ? 6 : 2
@@ -65,14 +63,14 @@ T.ScrollBar {
states: State {
name: "active"
when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0)
- PropertyChanges { target: handle; opacity: 0.75 }
+ PropertyChanges { target: control.contentItem; opacity: 0.75 }
}
transitions: Transition {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 450 }
- NumberAnimation { target: handle; duration: 200; property: "opacity"; to: 0.0 }
+ NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 }
}
}
}
diff --git a/src/imports/controls/fusion/ScrollIndicator.qml b/src/imports/controls/fusion/ScrollIndicator.qml
index f80514d6..7d6372a3 100644
--- a/src/imports/controls/fusion/ScrollIndicator.qml
+++ b/src/imports/controls/fusion/ScrollIndicator.qml
@@ -52,8 +52,6 @@ T.ScrollIndicator {
padding: 2
contentItem: Rectangle {
- id: indicator
-
implicitWidth: 2
implicitHeight: 2
@@ -64,7 +62,7 @@ T.ScrollIndicator {
states: State {
name: "active"
when: control.active
- PropertyChanges { target: indicator; opacity: 0.75 }
+ PropertyChanges { target: control.contentItem; opacity: 0.75 }
}
transitions: [
@@ -72,7 +70,7 @@ T.ScrollIndicator {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 450 }
- NumberAnimation { target: indicator; duration: 200; property: "opacity"; to: 0.0 }
+ NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 }
}
}
]
diff --git a/src/imports/controls/fusion/TabButton.qml b/src/imports/controls/fusion/TabButton.qml
index 0875f327..bdcee759 100644
--- a/src/imports/controls/fusion/TabButton.qml
+++ b/src/imports/controls/fusion/TabButton.qml
@@ -77,33 +77,22 @@ T.TabButton {
height: control.height - (control.checked ? 0 : 2)
border.color: Qt.lighter(Fusion.outline(control.palette), 1.1)
- gradient: control.checked ? selectedGradient : normalGradient
- Gradient {
- id: selectedGradient
+ gradient: Gradient {
GradientStop {
position: 0
- color: Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04)
+ color: control.checked ? Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04)
+ : Qt.darker(Fusion.tabFrameColor(control.palette), 1.08)
}
GradientStop {
- position: 1
- color: Fusion.tabFrameColor(control.palette)
- }
- }
-
- Gradient {
- id: normalGradient
- GradientStop {
- position: 0
- color: Qt.darker(Fusion.tabFrameColor(control.palette), 1.08)
- }
- GradientStop {
- position: 0.85
- color: Qt.darker(Fusion.tabFrameColor(control.palette), 1.08)
+ position: control.checked ? 0 : 0.85
+ color: control.checked ? Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04)
+ : Qt.darker(Fusion.tabFrameColor(control.palette), 1.08)
}
GradientStop {
position: 1
- color: Qt.darker(Fusion.tabFrameColor(control.palette), 1.16)
+ color: control.checked ? Fusion.tabFrameColor(control.palette)
+ : Qt.darker(Fusion.tabFrameColor(control.palette), 1.16)
}
}
}
diff --git a/src/imports/controls/fusion/Tumbler.qml b/src/imports/controls/fusion/Tumbler.qml
index d4a8cc7e..75815f15 100644
--- a/src/imports/controls/fusion/Tumbler.qml
+++ b/src/imports/controls/fusion/Tumbler.qml
@@ -47,7 +47,6 @@ T.Tumbler {
implicitHeight: 200
delegate: Text {
- id: label
text: modelData
color: control.palette.windowText
font: control.font
@@ -57,15 +56,14 @@ T.Tumbler {
}
contentItem: TumblerView {
- id: tumblerView
model: control.model
delegate: control.delegate
path: Path {
- startX: tumblerView.width / 2
- startY: -tumblerView.delegateHeight / 2
+ startX: contentItem.width / 2
+ startY: -contentItem.delegateHeight / 2
PathLine {
- x: tumblerView.width / 2
- y: (control.visibleItemCount + 1) * tumblerView.delegateHeight - tumblerView.delegateHeight / 2
+ x: contentItem.width / 2
+ y: (control.visibleItemCount + 1) * contentItem.delegateHeight - contentItem.delegateHeight / 2
}
}
diff --git a/src/imports/controls/fusion/qquickfusionbusyindicator.cpp b/src/imports/controls/fusion/qquickfusionbusyindicator.cpp
index 7254b7b7..f5c92010 100644
--- a/src/imports/controls/fusion/qquickfusionbusyindicator.cpp
+++ b/src/imports/controls/fusion/qquickfusionbusyindicator.cpp
@@ -59,11 +59,22 @@ void QQuickFusionBusyIndicator::setColor(const QColor &color)
update();
}
+bool QQuickFusionBusyIndicator::isRunning() const
+{
+ return isVisible();
+}
+
+void QQuickFusionBusyIndicator::setRunning(bool running)
+{
+ if (running)
+ setVisible(true);
+}
+
void QQuickFusionBusyIndicator::paint(QPainter *painter)
{
const qreal w = width();
const qreal h = height();
- if (w <= 0 || h <= 0 || !isVisible())
+ if (w <= 0 || h <= 0 || !isRunning())
return;
const qreal sz = qMin(w, h);
@@ -87,4 +98,12 @@ void QQuickFusionBusyIndicator::paint(QPainter *painter)
painter->drawArc(bounds, 0, 20 * 16);
}
+void QQuickFusionBusyIndicator::itemChange(ItemChange change, const ItemChangeData &data)
+{
+ QQuickPaintedItem::itemChange(change, data);
+
+ if (change == ItemOpacityHasChanged && qFuzzyIsNull(data.realValue))
+ setVisible(false);
+}
+
QT_END_NAMESPACE
diff --git a/src/imports/controls/fusion/qquickfusionbusyindicator_p.h b/src/imports/controls/fusion/qquickfusionbusyindicator_p.h
index c8af3311..77487ec8 100644
--- a/src/imports/controls/fusion/qquickfusionbusyindicator_p.h
+++ b/src/imports/controls/fusion/qquickfusionbusyindicator_p.h
@@ -57,6 +57,7 @@ class QQuickFusionBusyIndicator : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(QColor color READ color WRITE setColor FINAL)
+ Q_PROPERTY(bool running READ isRunning WRITE setRunning)
public:
explicit QQuickFusionBusyIndicator(QQuickItem *parent = nullptr);
@@ -64,8 +65,14 @@ public:
QColor color() const;
void setColor(const QColor &color);
+ bool isRunning() const;
+ void setRunning(bool running);
+
void paint(QPainter *painter) override;
+protected:
+ void itemChange(ItemChange change, const ItemChangeData &data) override;
+
private:
QColor m_color;
};
diff --git a/src/imports/controls/imagine/ComboBox.qml b/src/imports/controls/imagine/ComboBox.qml
index eae8569e..fa22ab90 100644
--- a/src/imports/controls/imagine/ComboBox.qml
+++ b/src/imports/controls/imagine/ComboBox.qml
@@ -71,7 +71,7 @@ T.ComboBox {
{"disabled": !control.enabled},
{"pressed": control.pressed},
{"editable": control.editable},
- {"open": control.popup.visible},
+ {"open": control.down},
{"focused": control.visualFocus},
{"mirrored": control.mirrored},
{"hovered": control.hovered},
@@ -90,7 +90,7 @@ T.ComboBox {
enabled: control.editable
autoScroll: control.editable
- readOnly: control.popup.visible
+ readOnly: control.down
inputMethodHints: control.inputMethodHints
validator: control.validator
@@ -112,7 +112,7 @@ T.ComboBox {
{"disabled": !control.enabled},
{"pressed": control.pressed},
{"editable": control.editable},
- {"open": control.popup.visible},
+ {"open": control.down},
{"focused": control.visualFocus || (control.editable && control.activeFocus)},
{"mirrored": control.mirrored},
{"hovered": control.hovered},
@@ -142,7 +142,7 @@ T.ComboBox {
contentItem: ListView {
clip: true
implicitHeight: contentHeight
- model: control.popup.visible ? control.delegateModel : null
+ model: control.delegateModel
currentIndex: control.highlightedIndex
highlightMoveDuration: 0
diff --git a/src/imports/controls/imagine/Tumbler.qml b/src/imports/controls/imagine/Tumbler.qml
index 7cd2b6a9..0fa8c137 100644
--- a/src/imports/controls/imagine/Tumbler.qml
+++ b/src/imports/controls/imagine/Tumbler.qml
@@ -56,15 +56,14 @@ T.Tumbler {
}
contentItem: TumblerView {
- id: tumblerView
model: control.model
delegate: control.delegate
path: Path {
- startX: tumblerView.width / 2
- startY: -tumblerView.delegateHeight / 2
+ startX: contentItem.width / 2
+ startY: -contentItem.delegateHeight / 2
PathLine {
- x: tumblerView.width / 2
- y: (control.visibleItemCount + 1) * tumblerView.delegateHeight - tumblerView.delegateHeight / 2
+ x: contentItem.width / 2
+ y: (control.visibleItemCount + 1) * contentItem.delegateHeight - contentItem.delegateHeight / 2
}
}
diff --git a/src/imports/controls/material/BusyIndicator.qml b/src/imports/controls/material/BusyIndicator.qml
index 8fc64029..5e53bdb9 100644
--- a/src/imports/controls/material/BusyIndicator.qml
+++ b/src/imports/controls/material/BusyIndicator.qml
@@ -52,8 +52,8 @@ T.BusyIndicator {
implicitHeight: 48
color: control.Material.accentColor
+ running: control.running
opacity: control.running ? 1 : 0
- visible: control.running || animator.running
- Behavior on opacity { OpacityAnimator { id: animator; duration: 250 } }
+ Behavior on opacity { OpacityAnimator { duration: 250 } }
}
}
diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml
index 2a4d4e7c..1f818e6e 100644
--- a/src/imports/controls/material/CheckBox.qml
+++ b/src/imports/controls/material/CheckBox.qml
@@ -80,8 +80,6 @@ T.CheckBox {
font: control.font
color: control.enabled ? control.Material.foreground : control.Material.hintTextColor
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
}
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml
index a58f1a37..3dd3cf30 100644
--- a/src/imports/controls/material/ComboBox.qml
+++ b/src/imports/controls/material/ComboBox.qml
@@ -92,7 +92,6 @@ T.ComboBox {
color: control.enabled ? control.Material.foreground : control.Material.hintTextColor
selectionColor: control.Material.accentColor
selectedTextColor: control.Material.primaryHighlightedTextColor
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
cursorDelegate: CursorDelegate { }
diff --git a/src/imports/controls/material/Dial.qml b/src/imports/controls/material/Dial.qml
index eec16838..3d94df18 100644
--- a/src/imports/controls/material/Dial.qml
+++ b/src/imports/controls/material/Dial.qml
@@ -57,8 +57,6 @@ T.Dial {
}
handle: SliderHandle {
- id: handleItem
-
x: background.x + background.width / 2 - handle.width / 2
y: background.y + background.height / 2 - handle.height / 2
transform: [
diff --git a/src/imports/controls/material/GroupBox.qml b/src/imports/controls/material/GroupBox.qml
index 5b1e7813..cc2ab0f0 100644
--- a/src/imports/controls/material/GroupBox.qml
+++ b/src/imports/controls/material/GroupBox.qml
@@ -62,7 +62,6 @@ T.GroupBox {
font: control.font
color: control.enabled ? control.Material.foreground : control.Material.hintTextColor
elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/material/LICENSE_ANGULARJS.txt b/src/imports/controls/material/LICENSE_ANGULARJS.txt
new file mode 100644
index 00000000..c1f2a826
--- /dev/null
+++ b/src/imports/controls/material/LICENSE_ANGULARJS.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2014-2016 Google, Inc. http://angularjs.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml
index 573dfd70..2a95f989 100644
--- a/src/imports/controls/material/RadioButton.qml
+++ b/src/imports/controls/material/RadioButton.qml
@@ -80,8 +80,6 @@ T.RadioButton {
font: control.font
color: control.enabled ? control.Material.foreground : control.Material.hintTextColor
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
}
diff --git a/src/imports/controls/material/ScrollBar.qml b/src/imports/controls/material/ScrollBar.qml
index 2b5fa12f..2ff925af 100644
--- a/src/imports/controls/material/ScrollBar.qml
+++ b/src/imports/controls/material/ScrollBar.qml
@@ -50,8 +50,6 @@ T.ScrollBar {
visible: control.policy !== T.ScrollBar.AlwaysOff
contentItem: Rectangle {
- id: handle
-
implicitWidth: control.interactive ? 13 : 4
implicitHeight: control.interactive ? 13 : 4
diff --git a/src/imports/controls/material/ScrollIndicator.qml b/src/imports/controls/material/ScrollIndicator.qml
index 37a8429b..92727822 100644
--- a/src/imports/controls/material/ScrollIndicator.qml
+++ b/src/imports/controls/material/ScrollIndicator.qml
@@ -49,8 +49,6 @@ T.ScrollIndicator {
padding: 2
contentItem: Rectangle {
- id: indicator
-
implicitWidth: 4
implicitHeight: 4
@@ -61,7 +59,7 @@ T.ScrollIndicator {
states: State {
name: "active"
when: control.active
- PropertyChanges { target: indicator; opacity: 0.75 }
+ PropertyChanges { target: control.contentItem; opacity: 0.75 }
}
transitions: [
@@ -69,7 +67,7 @@ T.ScrollIndicator {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 450 }
- NumberAnimation { target: indicator; duration: 200; property: "opacity"; to: 0.0 }
+ NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 }
}
}
]
diff --git a/src/imports/controls/material/SwipeView.qml b/src/imports/controls/material/SwipeView.qml
index d5915d9f..eb753579 100644
--- a/src/imports/controls/material/SwipeView.qml
+++ b/src/imports/controls/material/SwipeView.qml
@@ -60,5 +60,6 @@ T.SwipeView {
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 250
+ maximumFlickVelocity: 4 * (control.orientation === Qt.Horizontal ? width : height)
}
}
diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml
index 0434fb7f..d44a9f2c 100644
--- a/src/imports/controls/material/Switch.qml
+++ b/src/imports/controls/material/Switch.qml
@@ -75,8 +75,6 @@ T.Switch {
font: control.font
color: control.enabled ? control.Material.foreground : control.Material.hintTextColor
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
}
diff --git a/src/imports/controls/material/ToolButton.qml b/src/imports/controls/material/ToolButton.qml
index 369c7f3b..86a9f5c0 100644
--- a/src/imports/controls/material/ToolButton.qml
+++ b/src/imports/controls/material/ToolButton.qml
@@ -73,7 +73,7 @@ T.ToolButton {
implicitWidth: 48
implicitHeight: 48
- readonly property bool square: control.contentItem.implicitWidth <= control.contentItem.implicitHeight
+ readonly property bool square: control.contentItem.width <= control.contentItem.height
x: (parent.width - width) / 2
y: (parent.height - height) / 2
diff --git a/src/imports/controls/material/Tumbler.qml b/src/imports/controls/material/Tumbler.qml
index e3fdd869..eff1ff47 100644
--- a/src/imports/controls/material/Tumbler.qml
+++ b/src/imports/controls/material/Tumbler.qml
@@ -46,7 +46,6 @@ T.Tumbler {
implicitHeight: 200
delegate: Text {
- id: label
text: modelData
color: control.Material.foreground
font: control.font
@@ -56,15 +55,14 @@ T.Tumbler {
}
contentItem: TumblerView {
- id: tumblerView
model: control.model
delegate: control.delegate
path: Path {
- startX: tumblerView.width / 2
- startY: -tumblerView.delegateHeight / 2
+ startX: contentItem.width / 2
+ startY: -contentItem.delegateHeight / 2
PathLine {
- x: tumblerView.width / 2
- y: (control.visibleItemCount + 1) * tumblerView.delegateHeight - tumblerView.delegateHeight / 2
+ x: contentItem.width / 2
+ y: (control.visibleItemCount + 1) * contentItem.delegateHeight - contentItem.delegateHeight / 2
}
}
diff --git a/src/imports/controls/material/qquickmaterialbusyindicator.cpp b/src/imports/controls/material/qquickmaterialbusyindicator.cpp
index 9df8f5d2..bd15390b 100644
--- a/src/imports/controls/material/qquickmaterialbusyindicator.cpp
+++ b/src/imports/controls/material/qquickmaterialbusyindicator.cpp
@@ -197,6 +197,17 @@ void QQuickMaterialBusyIndicator::setColor(QColor color)
update();
}
+bool QQuickMaterialBusyIndicator::isRunning() const
+{
+ return isVisible();
+}
+
+void QQuickMaterialBusyIndicator::setRunning(bool running)
+{
+ if (running)
+ setVisible(true);
+}
+
int QQuickMaterialBusyIndicator::elapsed() const
{
return m_elapsed;
@@ -205,14 +216,23 @@ int QQuickMaterialBusyIndicator::elapsed() const
void QQuickMaterialBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
{
QQuickItem::itemChange(change, data);
- if (change == ItemVisibleHasChanged)
+ switch (change) {
+ case ItemOpacityHasChanged:
+ if (qFuzzyIsNull(data.realValue))
+ setVisible(false);
+ break;
+ case ItemVisibleHasChanged:
update();
+ break;
+ default:
+ break;
+ }
}
QSGNode *QQuickMaterialBusyIndicator::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
QQuickMaterialBusyIndicatorNode *node = static_cast<QQuickMaterialBusyIndicatorNode *>(oldNode);
- if (isVisible() && width() > 0 && height() > 0) {
+ if (isRunning() && width() > 0 && height() > 0) {
if (!node) {
node = new QQuickMaterialBusyIndicatorNode(this);
node->start();
diff --git a/src/imports/controls/material/qquickmaterialbusyindicator_p.h b/src/imports/controls/material/qquickmaterialbusyindicator_p.h
index da84c7b1..6c6d2445 100644
--- a/src/imports/controls/material/qquickmaterialbusyindicator_p.h
+++ b/src/imports/controls/material/qquickmaterialbusyindicator_p.h
@@ -57,6 +57,7 @@ class QQuickMaterialBusyIndicator : public QQuickItem
{
Q_OBJECT
Q_PROPERTY(QColor color READ color WRITE setColor FINAL)
+ Q_PROPERTY(bool running READ isRunning WRITE setRunning FINAL)
public:
explicit QQuickMaterialBusyIndicator(QQuickItem *parent = nullptr);
@@ -64,6 +65,9 @@ public:
QColor color() const;
void setColor(QColor color);
+ bool isRunning() const;
+ void setRunning(bool running);
+
int elapsed() const;
protected:
diff --git a/src/imports/controls/material/qt_attribution.json b/src/imports/controls/material/qt_attribution.json
new file mode 100644
index 00000000..01b45e9f
--- /dev/null
+++ b/src/imports/controls/material/qt_attribution.json
@@ -0,0 +1,13 @@
+{
+ "Id": "shadow_angular_material",
+ "Name": "Shadow values from Angular Material",
+ "QDocModule": "qtquickcontrols2",
+ "QtUsage": "Used in the Material Style of Qt Quick Controls 2.",
+ "Files": "ElevationEffect.qml",
+ "Description": "Shadow values for the elevation effect.",
+ "Homepage": "https://angularjs.org/",
+ "License": "MIT License",
+ "LicenseId": "MIT",
+ "LicenseFile": "LICENSE_ANGULARJS.txt",
+ "Copyright": "Copyright (c) 2014-2016 Google, Inc"
+}
diff --git a/src/imports/controls/qquickdefaultbusyindicator.cpp b/src/imports/controls/qquickdefaultbusyindicator.cpp
index 138e94e8..c02d8128 100644
--- a/src/imports/controls/qquickdefaultbusyindicator.cpp
+++ b/src/imports/controls/qquickdefaultbusyindicator.cpp
@@ -171,6 +171,17 @@ void QQuickDefaultBusyIndicator::setFill(const QColor &fill)
update();
}
+bool QQuickDefaultBusyIndicator::isRunning() const
+{
+ return isVisible();
+}
+
+void QQuickDefaultBusyIndicator::setRunning(bool running)
+{
+ if (running)
+ setVisible(true);
+}
+
int QQuickDefaultBusyIndicator::elapsed() const
{
return m_elapsed;
@@ -179,14 +190,23 @@ int QQuickDefaultBusyIndicator::elapsed() const
void QQuickDefaultBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
{
QQuickItem::itemChange(change, data);
- if (change == ItemVisibleHasChanged)
+ switch (change) {
+ case ItemOpacityHasChanged:
+ if (qFuzzyIsNull(data.realValue))
+ setVisible(false);
+ break;
+ case ItemVisibleHasChanged:
update();
+ break;
+ default:
+ break;
+ }
}
QSGNode *QQuickDefaultBusyIndicator::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *)
{
QQuickDefaultBusyIndicatorNode *node = static_cast<QQuickDefaultBusyIndicatorNode *>(oldNode);
- if (isVisible() && width() > 0 && height() > 0) {
+ if (isRunning() && width() > 0 && height() > 0) {
if (!node) {
node = new QQuickDefaultBusyIndicatorNode(this);
node->start();
diff --git a/src/imports/controls/qquickdefaultbusyindicator_p.h b/src/imports/controls/qquickdefaultbusyindicator_p.h
index f327c8de..1beeb0c9 100644
--- a/src/imports/controls/qquickdefaultbusyindicator_p.h
+++ b/src/imports/controls/qquickdefaultbusyindicator_p.h
@@ -58,6 +58,7 @@ class QQuickDefaultBusyIndicator : public QQuickItem
Q_OBJECT
Q_PROPERTY(QColor pen READ pen WRITE setPen FINAL)
Q_PROPERTY(QColor fill READ fill WRITE setFill FINAL)
+ Q_PROPERTY(bool running READ isRunning WRITE setRunning)
public:
explicit QQuickDefaultBusyIndicator(QQuickItem *parent = nullptr);
@@ -68,6 +69,9 @@ public:
QColor fill() const;
void setFill(const QColor &fill);
+ bool isRunning() const;
+ void setRunning(bool running);
+
int elapsed() const;
protected:
diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp
index 4ac5b7e0..464bbbdf 100644
--- a/src/imports/controls/qtquickcontrols2plugin.cpp
+++ b/src/imports/controls/qtquickcontrols2plugin.cpp
@@ -51,6 +51,8 @@
#include <QtQuickControls2/private/qquicktumblerview_p.h>
#endif
#include <QtQuickTemplates2/private/qquickoverlay_p.h>
+#include <QtQuickControls2/private/qquickclippedtext_p.h>
+#include <QtQuickControls2/private/qquickitemgroup_p.h>
#include "qquickdefaultbusyindicator_p.h"
#include "qquickdefaultdial_p.h"
@@ -186,16 +188,24 @@ void QtQuickControls2Plugin::initializeEngine(QQmlEngine *engine, const char *ur
const QByteArray import = QByteArray(uri) + ".impl";
qmlRegisterModule(import, 2, QT_VERSION_MINOR - 7); // Qt 5.7->2.0, 5.8->2.1, 5.9->2.2...
+ // QtQuick.Controls.impl 2.0 (Qt 5.7)
qmlRegisterType<QQuickDefaultBusyIndicator>(import, 2, 0, "BusyIndicatorImpl");
qmlRegisterType<QQuickDefaultDial>(import, 2, 0, "DialImpl");
qmlRegisterType<QQuickPaddedRectangle>(import, 2, 0, "PaddedRectangle");
qmlRegisterType<QQuickDefaultProgressBar>(import, 2, 0, "ProgressBarImpl");
- qmlRegisterType<QQuickPlaceholderText>(import, 2, 2, "PlaceholderText");
+
+ // QtQuick.Controls.impl 2.1 (Qt 5.8)
#if QT_CONFIG(quick_listview) && QT_CONFIG(quick_pathview)
qmlRegisterType<QQuickTumblerView>(import, 2, 1, "TumblerView");
#endif
qmlRegisterSingletonType<QQuickDefaultStyle>(import, 2, 1, "Default", styleSingleton);
+ // QtQuick.Controls.impl 2.2 (Qt 5.9)
+ qmlRegisterType<QQuickClippedText>(import, 2, 2, "ClippedText");
+ qmlRegisterType<QQuickItemGroup>(import, 2, 2, "ItemGroup");
+ qmlRegisterType<QQuickPlaceholderText>(import, 2, 2, "PlaceholderText");
+
+ // QtQuick.Controls.impl 2.3 (Qt 5.10)
qmlRegisterType<QQuickColorImage>(import, 2, 3, "ColorImage");
qmlRegisterType<QQuickIconImage>(import, 2, 3, "IconImage");
qmlRegisterSingletonType<QQuickColor>(import, 2, 3, "Color", colorSingleton);
diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml
index 0da8b6ac..7566c33a 100644
--- a/src/imports/controls/universal/CheckBox.qml
+++ b/src/imports/controls/universal/CheckBox.qml
@@ -67,8 +67,6 @@ T.CheckBox {
text: control.text
font: control.font
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
opacity: enabled ? 1.0 : 0.2
diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml
index 2a5a4f3f..f8ea2874 100644
--- a/src/imports/controls/universal/ComboBox.qml
+++ b/src/imports/controls/universal/ComboBox.qml
@@ -100,7 +100,6 @@ T.ComboBox {
control.editable && control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground
selectionColor: control.Universal.accent
selectedTextColor: control.Universal.chromeWhiteColor
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/imports/controls/universal/GroupBox.qml b/src/imports/controls/universal/GroupBox.qml
index 39af8cc0..f6b0b271 100644
--- a/src/imports/controls/universal/GroupBox.qml
+++ b/src/imports/controls/universal/GroupBox.qml
@@ -60,7 +60,6 @@ T.GroupBox {
text: control.title
font: control.font
elide: Text.ElideRight
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
opacity: enabled ? 1.0 : 0.2
diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml
index ef095db5..763725b6 100644
--- a/src/imports/controls/universal/RadioButton.qml
+++ b/src/imports/controls/universal/RadioButton.qml
@@ -67,8 +67,6 @@ T.RadioButton {
text: control.text
font: control.font
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
opacity: enabled ? 1.0 : 0.2
diff --git a/src/imports/controls/universal/ScrollIndicator.qml b/src/imports/controls/universal/ScrollIndicator.qml
index 029efe4c..f09124db 100644
--- a/src/imports/controls/universal/ScrollIndicator.qml
+++ b/src/imports/controls/universal/ScrollIndicator.qml
@@ -47,8 +47,6 @@ T.ScrollIndicator {
contentItem.implicitHeight + topPadding + bottomPadding)
contentItem: Rectangle {
- id: indicator
-
implicitWidth: 6
implicitHeight: 6
@@ -66,13 +64,13 @@ T.ScrollIndicator {
transitions: [
Transition {
to: "active"
- NumberAnimation { target: indicator; property: "opacity"; to: 1.0 }
+ NumberAnimation { target: control.contentItem; property: "opacity"; to: 1.0 }
},
Transition {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 5000 }
- NumberAnimation { target: indicator; property: "opacity"; to: 0.0 }
+ NumberAnimation { target: control.contentItem; property: "opacity"; to: 0.0 }
}
}
]
diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml
index 7682c3ed..b0d1923b 100644
--- a/src/imports/controls/universal/Switch.qml
+++ b/src/imports/controls/universal/Switch.qml
@@ -67,8 +67,6 @@ T.Switch {
text: control.text
font: control.font
elide: Text.ElideRight
- visible: control.text
- horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
opacity: enabled ? 1.0 : 0.2
diff --git a/src/imports/controls/universal/Tumbler.qml b/src/imports/controls/universal/Tumbler.qml
index 5b5a0744..09ca5d9b 100644
--- a/src/imports/controls/universal/Tumbler.qml
+++ b/src/imports/controls/universal/Tumbler.qml
@@ -56,15 +56,14 @@ T.Tumbler {
}
contentItem: TumblerView {
- id: tumblerView
model: control.model
delegate: control.delegate
path: Path {
- startX: tumblerView.width / 2
- startY: -tumblerView.delegateHeight / 2
+ startX: contentItem.width / 2
+ startY: -contentItem.delegateHeight / 2
PathLine {
- x: tumblerView.width / 2
- y: (control.visibleItemCount + 1) * tumblerView.delegateHeight - tumblerView.delegateHeight / 2
+ x: contentItem.width / 2
+ y: (control.visibleItemCount + 1) * contentItem.delegateHeight - contentItem.delegateHeight / 2
}
}