aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls/fusion
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/fusion
parentef5e426bed3b1362394c7cc0c97522bb20cacff0 (diff)
parent744d14b468eb4bdd4dabf72ef7acdca1bc07ea5d (diff)
Merge remote-tracking branch 'origin/5.10' into dev
Diffstat (limited to 'src/imports/controls/fusion')
-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
11 files changed, 73 insertions, 88 deletions
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;
};