diff options
Diffstat (limited to 'src/imports/controls/universal')
56 files changed, 366 insertions, 414 deletions
diff --git a/src/imports/controls/universal/ApplicationWindow.qml b/src/imports/controls/universal/ApplicationWindow.qml index ba07021a..16c44c6a 100644 --- a/src/imports/controls/universal/ApplicationWindow.qml +++ b/src/imports/controls/universal/ApplicationWindow.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 -import QtQuick.Controls.Universal.impl 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 +import QtQuick.Controls.Universal.impl 2.2 T.ApplicationWindow { id: window diff --git a/src/imports/controls/universal/BusyIndicator.qml b/src/imports/controls/universal/BusyIndicator.qml index 514a233e..1e6e383a 100644 --- a/src/imports/controls/universal/BusyIndicator.qml +++ b/src/imports/controls/universal/BusyIndicator.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 -import QtQuick.Controls.Universal.impl 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 +import QtQuick.Controls.Universal.impl 2.2 T.BusyIndicator { id: control @@ -45,9 +45,7 @@ T.BusyIndicator { implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding - contentItem: ProgressRing { - id: ring - + contentItem: BusyIndicatorImpl { implicitWidth: 20 implicitHeight: 20 @@ -55,10 +53,6 @@ T.BusyIndicator { count: size < 60 ? 5 : 6 // "Small" vs. "Large" color: control.Universal.accent - - ProgressRingAnimator { - target: ring - running: control.visible && control.running - } + visible: control.running } } diff --git a/src/imports/controls/universal/Button.qml b/src/imports/controls/universal/Button.qml index aa65e714..3b21216f 100644 --- a/src/imports/controls/universal/Button.qml +++ b/src/imports/controls/universal/Button.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Button { id: control diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml index 916348f9..94934e7a 100644 --- a/src/imports/controls/universal/CheckBox.qml +++ b/src/imports/controls/universal/CheckBox.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 -import QtQuick.Controls.Universal.impl 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 +import QtQuick.Controls.Universal.impl 2.2 T.CheckBox { id: control diff --git a/src/imports/controls/universal/CheckDelegate.qml b/src/imports/controls/universal/CheckDelegate.qml index 42e7b10c..e9abd9bb 100644 --- a/src/imports/controls/universal/CheckDelegate.qml +++ b/src/imports/controls/universal/CheckDelegate.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.CheckDelegate { id: control diff --git a/src/imports/controls/universal/CheckIndicator.qml b/src/imports/controls/universal/CheckIndicator.qml index 166cf184..98412ca1 100644 --- a/src/imports/controls/universal/CheckIndicator.qml +++ b/src/imports/controls/universal/CheckIndicator.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 Rectangle { implicitWidth: 20 @@ -67,7 +67,7 @@ Rectangle { x: (parent.width - width) / 2 y: (parent.height - height) / 2 width: partiallyChecked ? parent.width / 2 : parent.width - height: partiallyChecked ? parent.height / 2 : parent.height + height: partiallyChecked ? parent.height / 2 : parent.height visible: !control.pressed && control.hovered || partiallyChecked color: !partiallyChecked ? "transparent" : diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml index 2d768a1d..4c5ecf74 100644 --- a/src/imports/controls/universal/ComboBox.qml +++ b/src/imports/controls/universal/ComboBox.qml @@ -36,9 +36,9 @@ import QtQuick 2.8 import QtQuick.Window 2.2 -import QtQuick.Controls 2.1 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Controls 2.2 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ComboBox { id: control @@ -50,39 +50,58 @@ T.ComboBox { indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) baselineOffset: contentItem.y + contentItem.baselineOffset - spacing: 10 - padding: 12 - topPadding: padding - 7 - rightPadding: padding - 2 - bottomPadding: padding - 5 + leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + + Universal.theme: editable && activeFocus ? Universal.Light : undefined delegate: ItemDelegate { - width: control.popup.width + width: parent.width text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData highlighted: control.highlightedIndex === index hoverEnabled: control.hoverEnabled } indicator: Image { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + x: control.mirrored ? control.padding : control.width - width - control.padding y: control.topPadding + (control.availableHeight - height) / 2 source: "image://universal/downarrow/" + (!control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumHighColor) sourceSize.width: width sourceSize.height: height + + Rectangle { + z: -1 + width: parent.width + height: parent.height + color: control.activeFocus ? control.Universal.accent : + control.pressed ? control.Universal.baseMediumLowColor : + control.hovered ? control.Universal.baseLowColor : "transparent" + visible: control.editable && !contentItem.hovered && (control.pressed || control.hovered) + opacity: control.activeFocus && !control.pressed ? 0.4 : 1.0 + } } - contentItem: Text { - leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + contentItem: T.TextField { + leftPadding: control.mirrored ? 1 : 12 + rightPadding: control.mirrored ? 10 : 1 + topPadding: 5 - control.topPadding + bottomPadding: 7 - control.bottomPadding + + text: control.editable ? control.editText : control.displayText + + enabled: control.editable + autoScroll: control.editable + readOnly: control.popup.visible + inputMethodHints: control.inputMethodHints + validator: control.validator - text: control.displayText font: control.font + color: !control.enabled ? control.Universal.chromeDisabledLowColor : + control.editable && control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground + selectionColor: control.Universal.accent + selectedTextColor: control.Universal.chromeWhiteColor horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground } background: Rectangle { @@ -91,11 +110,13 @@ T.ComboBox { border.width: control.flat ? 0 : 2 // ComboBoxBorderThemeThickness border.color: !control.enabled ? control.Universal.baseLowColor : - control.pressed || popup.visible ? control.Universal.baseMediumLowColor : + control.editable && control.activeFocus ? control.Universal.accent : + control.down || popup.visible ? control.Universal.baseMediumLowColor : control.hovered ? control.Universal.baseMediumColor : control.Universal.baseMediumLowColor color: !control.enabled ? control.Universal.baseLowColor : - control.pressed || popup.visible ? control.Universal.listMediumColor : - control.flat && control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor + control.down ? control.Universal.listMediumColor : + control.flat && control.hovered ? control.Universal.listLowColor : + control.editable && control.activeFocus ? control.Universal.background : control.Universal.altMediumLowColor visible: !control.flat || control.pressed || control.hovered || control.visualFocus Rectangle { @@ -104,7 +125,7 @@ T.ComboBox { width: parent.width - 4 height: parent.height - 4 - visible: control.visualFocus + visible: control.visualFocus && !control.editable color: control.Universal.accent opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 } diff --git a/src/imports/controls/universal/Dial.qml b/src/imports/controls/universal/Dial.qml index 9eaf69ba..26c6f834 100644 --- a/src/imports/controls/universal/Dial.qml +++ b/src/imports/controls/universal/Dial.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Dial { id: control diff --git a/src/imports/controls/universal/Dialog.qml b/src/imports/controls/universal/Dialog.qml index f805581c..be0c9928 100644 --- a/src/imports/controls/universal/Dialog.qml +++ b/src/imports/controls/universal/Dialog.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls 2.1 -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls 2.2 +import QtQuick.Controls.Universal 2.2 T.Dialog { id: control diff --git a/src/imports/controls/universal/DialogButtonBox.qml b/src/imports/controls/universal/DialogButtonBox.qml index 043496d9..e02c3ec5 100644 --- a/src/imports/controls/universal/DialogButtonBox.qml +++ b/src/imports/controls/universal/DialogButtonBox.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.DialogButtonBox { id: control diff --git a/src/imports/controls/universal/Drawer.qml b/src/imports/controls/universal/Drawer.qml index 09b3751d..0fec02b9 100644 --- a/src/imports/controls/universal/Drawer.qml +++ b/src/imports/controls/universal/Drawer.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Drawer { id: control diff --git a/src/imports/controls/universal/Frame.qml b/src/imports/controls/universal/Frame.qml index 1c83f3fd..7ff93311 100644 --- a/src/imports/controls/universal/Frame.qml +++ b/src/imports/controls/universal/Frame.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Frame { id: control diff --git a/src/imports/controls/universal/GroupBox.qml b/src/imports/controls/universal/GroupBox.qml index 435a9755..72ca43d0 100644 --- a/src/imports/controls/universal/GroupBox.qml +++ b/src/imports/controls/universal/GroupBox.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.GroupBox { id: control diff --git a/src/imports/controls/universal/ItemDelegate.qml b/src/imports/controls/universal/ItemDelegate.qml index a8d55ba6..c210d3d7 100644 --- a/src/imports/controls/universal/ItemDelegate.qml +++ b/src/imports/controls/universal/ItemDelegate.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ItemDelegate { id: control diff --git a/src/imports/controls/universal/Label.qml b/src/imports/controls/universal/Label.qml index 9e377f61..6da3d735 100644 --- a/src/imports/controls/universal/Label.qml +++ b/src/imports/controls/universal/Label.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Label { id: control diff --git a/src/imports/controls/universal/Menu.qml b/src/imports/controls/universal/Menu.qml index afae51f0..65ce3351 100644 --- a/src/imports/controls/universal/Menu.qml +++ b/src/imports/controls/universal/Menu.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Controls 2.1 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Controls 2.2 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Menu { id: control diff --git a/src/imports/controls/universal/MenuItem.qml b/src/imports/controls/universal/MenuItem.qml index 380a5b0e..0bc56d43 100644 --- a/src/imports/controls/universal/MenuItem.qml +++ b/src/imports/controls/universal/MenuItem.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.MenuItem { id: control diff --git a/src/imports/controls/universal/MenuSeparator.qml b/src/imports/controls/universal/MenuSeparator.qml index cd79c60f..92af05c8 100644 --- a/src/imports/controls/universal/MenuSeparator.qml +++ b/src/imports/controls/universal/MenuSeparator.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.MenuSeparator { id: control diff --git a/src/imports/controls/universal/Page.qml b/src/imports/controls/universal/Page.qml index e8c7bd4a..cf45d8c2 100644 --- a/src/imports/controls/universal/Page.qml +++ b/src/imports/controls/universal/Page.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Page { id: control diff --git a/src/imports/controls/universal/PageIndicator.qml b/src/imports/controls/universal/PageIndicator.qml index 817c89fb..a41565b9 100644 --- a/src/imports/controls/universal/PageIndicator.qml +++ b/src/imports/controls/universal/PageIndicator.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.PageIndicator { id: control diff --git a/src/imports/controls/universal/Pane.qml b/src/imports/controls/universal/Pane.qml index 903e501a..fd717e07 100644 --- a/src/imports/controls/universal/Pane.qml +++ b/src/imports/controls/universal/Pane.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Pane { id: control diff --git a/src/imports/controls/universal/Popup.qml b/src/imports/controls/universal/Popup.qml index 53178b71..d27dc4fe 100644 --- a/src/imports/controls/universal/Popup.qml +++ b/src/imports/controls/universal/Popup.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Popup { id: control diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml index cd314c27..da6953a7 100644 --- a/src/imports/controls/universal/ProgressBar.qml +++ b/src/imports/controls/universal/ProgressBar.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 -import QtQuick.Controls.Universal.impl 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 +import QtQuick.Controls.Universal.impl 2.2 T.ProgressBar { id: control @@ -47,20 +47,13 @@ T.ProgressBar { implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) - contentItem: ProgressStrip { - id: strip + contentItem: ProgressBarImpl { implicitHeight: 10 scale: control.mirrored ? -1 : 1 - indeterminate: control.indeterminate color: control.Universal.accent progress: control.position - clip: control.indeterminate - - ProgressStripAnimator { - target: strip - running: control.visible && control.indeterminate - } + indeterminate: control.visible && control.indeterminate } background: Rectangle { diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml index 8f599e55..e9c55fe9 100644 --- a/src/imports/controls/universal/RadioButton.qml +++ b/src/imports/controls/universal/RadioButton.qml @@ -35,9 +35,9 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 -import QtQuick.Controls.Universal.impl 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 +import QtQuick.Controls.Universal.impl 2.2 T.RadioButton { id: control diff --git a/src/imports/controls/universal/RadioDelegate.qml b/src/imports/controls/universal/RadioDelegate.qml index 14680cd6..e59d5de4 100644 --- a/src/imports/controls/universal/RadioDelegate.qml +++ b/src/imports/controls/universal/RadioDelegate.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.RadioDelegate { id: control diff --git a/src/imports/controls/universal/RadioIndicator.qml b/src/imports/controls/universal/RadioIndicator.qml index c745b04e..3c664c03 100644 --- a/src/imports/controls/universal/RadioIndicator.qml +++ b/src/imports/controls/universal/RadioIndicator.qml @@ -35,7 +35,7 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Controls.Universal 2.1 +import QtQuick.Controls.Universal 2.2 Rectangle { implicitWidth: 20 diff --git a/src/imports/controls/universal/RangeSlider.qml b/src/imports/controls/universal/RangeSlider.qml index fec8bb18..bd6b5787 100644 --- a/src/imports/controls/universal/RangeSlider.qml +++ b/src/imports/controls/universal/RangeSlider.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.RangeSlider { id: control diff --git a/src/imports/controls/universal/RoundButton.qml b/src/imports/controls/universal/RoundButton.qml index 9a50c0fe..c70f5adf 100644 --- a/src/imports/controls/universal/RoundButton.qml +++ b/src/imports/controls/universal/RoundButton.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.RoundButton { id: control diff --git a/src/imports/controls/universal/ScrollBar.qml b/src/imports/controls/universal/ScrollBar.qml index 6d5c84fe..654739e7 100644 --- a/src/imports/controls/universal/ScrollBar.qml +++ b/src/imports/controls/universal/ScrollBar.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ScrollBar { id: control diff --git a/src/imports/controls/universal/ScrollIndicator.qml b/src/imports/controls/universal/ScrollIndicator.qml index f03bc819..2137c9da 100644 --- a/src/imports/controls/universal/ScrollIndicator.qml +++ b/src/imports/controls/universal/ScrollIndicator.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ScrollIndicator { id: control diff --git a/src/imports/controls/universal/Slider.qml b/src/imports/controls/universal/Slider.qml index 472f5455..112883f6 100644 --- a/src/imports/controls/universal/Slider.qml +++ b/src/imports/controls/universal/Slider.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Slider { id: control diff --git a/src/imports/controls/universal/SpinBox.qml b/src/imports/controls/universal/SpinBox.qml index 57120a7b..facc7bdd 100644 --- a/src/imports/controls/universal/SpinBox.qml +++ b/src/imports/controls/universal/SpinBox.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.SpinBox { id: control diff --git a/src/imports/controls/universal/StackView.qml b/src/imports/controls/universal/StackView.qml index 6e6d1b50..72a9cce4 100644 --- a/src/imports/controls/universal/StackView.qml +++ b/src/imports/controls/universal/StackView.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.StackView { id: control diff --git a/src/imports/controls/universal/SwipeDelegate.qml b/src/imports/controls/universal/SwipeDelegate.qml index bc82e40e..0b888e70 100644 --- a/src/imports/controls/universal/SwipeDelegate.qml +++ b/src/imports/controls/universal/SwipeDelegate.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.SwipeDelegate { id: control diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml index 2b0012d5..8dd11610 100644 --- a/src/imports/controls/universal/Switch.qml +++ b/src/imports/controls/universal/Switch.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.Switch { id: control diff --git a/src/imports/controls/universal/SwitchDelegate.qml b/src/imports/controls/universal/SwitchDelegate.qml index 5e4a1c52..6e2ec2c9 100644 --- a/src/imports/controls/universal/SwitchDelegate.qml +++ b/src/imports/controls/universal/SwitchDelegate.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.SwitchDelegate { id: control diff --git a/src/imports/controls/universal/SwitchIndicator.qml b/src/imports/controls/universal/SwitchIndicator.qml index 0f68d26a..67bd28cf 100644 --- a/src/imports/controls/universal/SwitchIndicator.qml +++ b/src/imports/controls/universal/SwitchIndicator.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 Item { implicitWidth: 44 diff --git a/src/imports/controls/universal/TabBar.qml b/src/imports/controls/universal/TabBar.qml index a8d80fec..e36578c0 100644 --- a/src/imports/controls/universal/TabBar.qml +++ b/src/imports/controls/universal/TabBar.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.TabBar { id: control diff --git a/src/imports/controls/universal/TabButton.qml b/src/imports/controls/universal/TabButton.qml index 04f04291..5a84b949 100644 --- a/src/imports/controls/universal/TabButton.qml +++ b/src/imports/controls/universal/TabButton.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.TabButton { id: control diff --git a/src/imports/controls/universal/TextArea.qml b/src/imports/controls/universal/TextArea.qml index 8d422a2c..87249395 100644 --- a/src/imports/controls/universal/TextArea.qml +++ b/src/imports/controls/universal/TextArea.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.TextArea { id: control diff --git a/src/imports/controls/universal/TextField.qml b/src/imports/controls/universal/TextField.qml index 5723e484..a63335eb 100644 --- a/src/imports/controls/universal/TextField.qml +++ b/src/imports/controls/universal/TextField.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.TextField { id: control diff --git a/src/imports/controls/universal/ToolBar.qml b/src/imports/controls/universal/ToolBar.qml index 35f79806..e914a678 100644 --- a/src/imports/controls/universal/ToolBar.qml +++ b/src/imports/controls/universal/ToolBar.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ToolBar { id: control diff --git a/src/imports/controls/universal/ToolButton.qml b/src/imports/controls/universal/ToolButton.qml index 4dad17f7..a5195cc5 100644 --- a/src/imports/controls/universal/ToolButton.qml +++ b/src/imports/controls/universal/ToolButton.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ToolButton { id: control diff --git a/src/imports/controls/universal/ToolSeparator.qml b/src/imports/controls/universal/ToolSeparator.qml index a4a5f18c..8eb67394 100644 --- a/src/imports/controls/universal/ToolSeparator.qml +++ b/src/imports/controls/universal/ToolSeparator.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ToolSeparator { id: control diff --git a/src/imports/controls/universal/ToolTip.qml b/src/imports/controls/universal/ToolTip.qml index bd3d54e7..55c7e3fe 100644 --- a/src/imports/controls/universal/ToolTip.qml +++ b/src/imports/controls/universal/ToolTip.qml @@ -35,8 +35,8 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 T.ToolTip { id: control diff --git a/src/imports/controls/universal/Tumbler.qml b/src/imports/controls/universal/Tumbler.qml index e7093d0a..4187c97f 100644 --- a/src/imports/controls/universal/Tumbler.qml +++ b/src/imports/controls/universal/Tumbler.qml @@ -35,10 +35,10 @@ ****************************************************************************/ import QtQuick 2.8 -import QtQuick.Templates 2.1 as T -import QtQuick.Controls.Universal 2.1 -import QtQuick.Controls 2.1 -import QtQuick.Controls.impl 2.1 +import QtQuick.Templates 2.2 as T +import QtQuick.Controls.Universal 2.2 +import QtQuick.Controls 2.2 +import QtQuick.Controls.impl 2.2 T.Tumbler { id: control diff --git a/src/imports/controls/universal/images/downarrow.png b/src/imports/controls/universal/images/downarrow.png Binary files differindex fef7b0f2..9ac84a23 100644 --- a/src/imports/controls/universal/images/downarrow.png +++ b/src/imports/controls/universal/images/downarrow.png diff --git a/src/imports/controls/universal/images/downarrow@2x.png b/src/imports/controls/universal/images/downarrow@2x.png Binary files differindex eabf658a..8dafab94 100644 --- a/src/imports/controls/universal/images/downarrow@2x.png +++ b/src/imports/controls/universal/images/downarrow@2x.png diff --git a/src/imports/controls/universal/images/downarrow@3x.png b/src/imports/controls/universal/images/downarrow@3x.png Binary files differindex f9d39a2c..17ab1cf8 100644 --- a/src/imports/controls/universal/images/downarrow@3x.png +++ b/src/imports/controls/universal/images/downarrow@3x.png diff --git a/src/imports/controls/universal/images/downarrow@4x.png b/src/imports/controls/universal/images/downarrow@4x.png Binary files differindex b252b588..0e145e2d 100644 --- a/src/imports/controls/universal/images/downarrow@4x.png +++ b/src/imports/controls/universal/images/downarrow@4x.png diff --git a/src/imports/controls/universal/qquickuniversalprogressring.cpp b/src/imports/controls/universal/qquickuniversalbusyindicator.cpp index 1d733fed..ef08cdec 100644 --- a/src/imports/controls/universal/qquickuniversalprogressring.cpp +++ b/src/imports/controls/universal/qquickuniversalbusyindicator.cpp @@ -34,13 +34,13 @@ ** ****************************************************************************/ -#include "qquickuniversalprogressring_p.h" +#include "qquickuniversalbusyindicator_p.h" #include <QtCore/qmath.h> #include <QtCore/qeasingcurve.h> #include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickanimatorjob_p.h> #include <QtQuick/private/qsgadaptationlayer_p.h> +#include <QtQuickControls2/private/qquickanimatednode_p.h> QT_BEGIN_NAMESPACE @@ -48,16 +48,13 @@ static const int PhaseCount = 6; static const int Interval = 167; static const int TotalDuration = 4052; -class QQuickUniversalProgressRingAnimatorJob : public QQuickAnimatorJob +class QQuickUniversalBusyIndicatorNode : public QQuickAnimatedNode { public: - QQuickUniversalProgressRingAnimatorJob(); + QQuickUniversalBusyIndicatorNode(QQuickUniversalBusyIndicator *item); - void initialize(QQuickAnimatorController *controller) override; void updateCurrentTime(int time) override; - void writeBack() override; - void nodeWasDestroyed() override; - void afterNodeSync() override; + void sync(QQuickItem *item) override; private: struct Phase { @@ -69,12 +66,16 @@ private: QEasingCurve curve; }; - QSGNode *m_node; Phase m_phases[PhaseCount]; }; -QQuickUniversalProgressRingAnimatorJob::QQuickUniversalProgressRingAnimatorJob() : m_node(nullptr) +QQuickUniversalBusyIndicatorNode::QQuickUniversalBusyIndicatorNode(QQuickUniversalBusyIndicator *item) + : QQuickAnimatedNode(item) { + setLoopCount(Infinite); + setDuration(TotalDuration); + setCurrentTime(item->elapsed()); + m_phases[0] = Phase(433, -110, 10, QEasingCurve::BezierSpline); m_phases[1] = Phase(767, 10, 93, QEasingCurve::Linear ); m_phases[2] = Phase(417, 93, 205, QEasingCurve::BezierSpline); @@ -88,25 +89,11 @@ QQuickUniversalProgressRingAnimatorJob::QQuickUniversalProgressRingAnimatorJob() m_phases[5].curve.addCubicBezierSegment(QPointF(0.00, 0.00), QPointF(0.95, 0.37), QPointF(1.00, 1.00)); } -void QQuickUniversalProgressRingAnimatorJob::initialize(QQuickAnimatorController *controller) -{ - QQuickAnimatorJob::initialize(controller); - m_node = QQuickItemPrivate::get(m_target)->childContainerNode(); -} - -void QQuickUniversalProgressRingAnimatorJob::updateCurrentTime(int time) +void QQuickUniversalBusyIndicatorNode::updateCurrentTime(int time) { - if (!m_node) - return; - - QSGNode *containerNode = m_node->firstChild(); - Q_ASSERT(!containerNode || containerNode->type() == QSGNode::TransformNodeType); - if (!containerNode) - return; - int nodeIndex = 0; - int count = containerNode->childCount(); - QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(containerNode->firstChild()); + int count = childCount(); + QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(firstChild()); while (transformNode) { Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); @@ -147,126 +134,118 @@ void QQuickUniversalProgressRingAnimatorJob::updateCurrentTime(int time) } } -void QQuickUniversalProgressRingAnimatorJob::writeBack() +void QQuickUniversalBusyIndicatorNode::sync(QQuickItem *item) { -} + QQuickUniversalBusyIndicator *indicator = static_cast<QQuickUniversalBusyIndicator *>(item); + QQuickItemPrivate *d = QQuickItemPrivate::get(item); -void QQuickUniversalProgressRingAnimatorJob::nodeWasDestroyed() -{ - m_node = nullptr; -} + QMatrix4x4 matrix; + matrix.translate(item->width() / 2, item->height() / 2); + setMatrix(matrix); -void QQuickUniversalProgressRingAnimatorJob::afterNodeSync() -{ - m_node = QQuickItemPrivate::get(m_target)->childContainerNode(); -} + qreal size = qMin(item->width(), item->height()); + qreal diameter = size / 10.0; + qreal radius = diameter / 2; + qreal offset = (size - diameter * 2) / M_PI; + const QRectF rect(offset, offset, diameter, diameter); -QQuickUniversalProgressRingAnimator::QQuickUniversalProgressRingAnimator(QObject *parent) - : QQuickAnimator(parent) -{ - setDuration(TotalDuration); - setLoops(QQuickAnimator::Infinite); -} + int count = indicator->count(); + QSGNode *transformNode = firstChild(); + for (int i = 0; i < count; ++i) { + if (!transformNode) { + transformNode = new QSGTransformNode; + appendChildNode(transformNode); -QString QQuickUniversalProgressRingAnimator::propertyName() const -{ - return QString(); -} + QSGOpacityNode *opacityNode = new QSGOpacityNode; + transformNode->appendChildNode(opacityNode); -QQuickAnimatorJob *QQuickUniversalProgressRingAnimator::createJob() const -{ - return new QQuickUniversalProgressRingAnimatorJob; + QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); + rectNode->setAntialiasing(true); + opacityNode->appendChildNode(rectNode); + } + + QSGNode *opacityNode = transformNode->firstChild(); + Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); + + QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); + Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); + + rectNode->setRect(rect); + rectNode->setColor(indicator->color()); + rectNode->setRadius(radius); + rectNode->update(); + + transformNode = transformNode->nextSibling(); + } + + while (transformNode) { + QSGNode *nextSibling = transformNode->nextSibling(); + delete transformNode; + transformNode = nextSibling; + } } -QQuickUniversalProgressRing::QQuickUniversalProgressRing(QQuickItem *parent) - : QQuickItem(parent), m_count(5), m_color(Qt::black) +QQuickUniversalBusyIndicator::QQuickUniversalBusyIndicator(QQuickItem *parent) + : QQuickItem(parent), m_count(5), m_elapsed(0), m_color(Qt::black) { setFlag(ItemHasContents); } -int QQuickUniversalProgressRing::count() const +int QQuickUniversalBusyIndicator::count() const { return m_count; } -void QQuickUniversalProgressRing::setCount(int count) +void QQuickUniversalBusyIndicator::setCount(int count) { if (m_count == count) return; m_count = count; update(); - emit countChanged(); } -QColor QQuickUniversalProgressRing::color() const +QColor QQuickUniversalBusyIndicator::color() const { return m_color; } -void QQuickUniversalProgressRing::setColor(const QColor &color) +void QQuickUniversalBusyIndicator::setColor(const QColor &color) { if (m_color == color) return; m_color = color; update(); - emit colorChanged(); } -QSGNode *QQuickUniversalProgressRing::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) +int QQuickUniversalBusyIndicator::elapsed() const { - QQuickItemPrivate *d = QQuickItemPrivate::get(this); - - if (!oldNode) - oldNode = new QSGTransformNode; - Q_ASSERT(oldNode->type() == QSGNode::TransformNodeType); - - QMatrix4x4 matrix; - matrix.translate(width() / 2, height() / 2); - static_cast<QSGTransformNode *>(oldNode)->setMatrix(matrix); - - qreal size = qMin(width(), height()); - qreal diameter = size / 10.0; - qreal radius = diameter / 2; - qreal offset = (size - diameter * 2) / M_PI; - const QRectF rect(offset, offset, diameter, diameter); - - QSGNode *transformNode = oldNode->firstChild(); - for (int i = 0; i < m_count; ++i) { - if (!transformNode) { - transformNode = new QSGTransformNode; - oldNode->appendChildNode(transformNode); + return m_elapsed; +} - QSGOpacityNode *opacityNode = new QSGOpacityNode; - transformNode->appendChildNode(opacityNode); +void QQuickUniversalBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) +{ + QQuickItem::itemChange(change, data); + if (change == ItemVisibleHasChanged) + update(); +} - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - opacityNode->appendChildNode(rectNode); +QSGNode *QQuickUniversalBusyIndicator::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) +{ + QQuickUniversalBusyIndicatorNode *node = static_cast<QQuickUniversalBusyIndicatorNode *>(oldNode); + if (isVisible() && width() > 0 && height() > 0) { + if (!node) { + node = new QQuickUniversalBusyIndicatorNode(this); + node->start(); } - - QSGNode *opacityNode = transformNode->firstChild(); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - rectNode->setRect(rect); - rectNode->setColor(m_color); - rectNode->setRadius(radius); - rectNode->update(); - - transformNode = transformNode->nextSibling(); + node->sync(this); + } else { + m_elapsed = node ? node->currentTime() : 0; + delete node; + node = nullptr; } - - while (transformNode) { - QSGNode *nextSibling = transformNode->nextSibling(); - delete transformNode; - transformNode = nextSibling; - } - - return oldNode; + return node; } QT_END_NAMESPACE diff --git a/src/imports/controls/universal/qquickuniversalprogressring_p.h b/src/imports/controls/universal/qquickuniversalbusyindicator_p.h index ef73ebed..7e3484d8 100644 --- a/src/imports/controls/universal/qquickuniversalprogressring_p.h +++ b/src/imports/controls/universal/qquickuniversalbusyindicator_p.h @@ -34,8 +34,8 @@ ** ****************************************************************************/ -#ifndef QQUICKUNIVERSALPROGRESSRING_P_H -#define QQUICKUNIVERSALPROGRESSRING_P_H +#ifndef QQUICKUNIVERSALBUSYINDICATOR_P_H +#define QQUICKUNIVERSALBUSYINDICATOR_P_H // // W A R N I N G @@ -49,18 +49,17 @@ // #include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquickanimator_p.h> QT_BEGIN_NAMESPACE -class QQuickUniversalProgressRing : public QQuickItem +class QQuickUniversalBusyIndicator : public QQuickItem { Q_OBJECT - Q_PROPERTY(int count READ count WRITE setCount NOTIFY countChanged FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL) + Q_PROPERTY(int count READ count WRITE setCount FINAL) + Q_PROPERTY(QColor color READ color WRITE setColor FINAL) public: - QQuickUniversalProgressRing(QQuickItem *parent = nullptr); + explicit QQuickUniversalBusyIndicator(QQuickItem *parent = nullptr); int count() const; void setCount(int count); @@ -68,32 +67,20 @@ public: QColor color() const; void setColor(const QColor &color); -Q_SIGNALS: - void countChanged(); - void colorChanged(); + int elapsed() const; protected: + void itemChange(ItemChange change, const ItemChangeData &data) override; QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; private: int m_count; + int m_elapsed; QColor m_color; }; -class QQuickUniversalProgressRingAnimator : public QQuickAnimator -{ - Q_OBJECT - -public: - QQuickUniversalProgressRingAnimator(QObject *parent = nullptr); - -protected: - QString propertyName() const override; - QQuickAnimatorJob *createJob() const override; -}; - QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickUniversalProgressRing) +QML_DECLARE_TYPE(QQuickUniversalBusyIndicator) -#endif // QQUICKUNIVERSALPROGRESSRING_P_H +#endif // QQUICKUNIVERSALBUSYINDICATOR_P_H diff --git a/src/imports/controls/universal/qquickuniversalprogressstrip.cpp b/src/imports/controls/universal/qquickuniversalprogressbar.cpp index 32af5113..2e1368b1 100644 --- a/src/imports/controls/universal/qquickuniversalprogressstrip.cpp +++ b/src/imports/controls/universal/qquickuniversalprogressbar.cpp @@ -34,14 +34,14 @@ ** ****************************************************************************/ -#include "qquickuniversalprogressstrip_p.h" +#include "qquickuniversalprogressbar_p.h" #include <QtCore/qmath.h> #include <QtCore/qeasingcurve.h> #include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickanimatorjob_p.h> #include <QtQuick/private/qsgadaptationlayer_p.h> #include <QtQuick/qsgrectanglenode.h> +#include <QtQuickControls2/private/qquickanimatednode_p.h> QT_BEGIN_NAMESPACE @@ -57,16 +57,13 @@ static const qreal ContainerAnimationEndPosition = 0.435222; // relative static const qreal EllipseAnimationWellPosition = 0.333333333333333; // relative static const qreal EllipseAnimationEndPosition = 0.666666666666667; // relative -class QQuickUniversalProgressStripAnimatorJob : public QQuickAnimatorJob +class QQuickUniversalProgressBarNode : public QQuickAnimatedNode { public: - QQuickUniversalProgressStripAnimatorJob(); + QQuickUniversalProgressBarNode(QQuickUniversalProgressBar *item); - void initialize(QQuickAnimatorController *controller) override; void updateCurrentTime(int time) override; - void writeBack() override; - void nodeWasDestroyed() override; - void afterNodeSync() override; + void sync(QQuickItem *item) override; private: struct Phase { @@ -77,13 +74,18 @@ private: qreal to; }; - QSGNode *m_node; + bool m_indeterminate; Phase m_borderPhases[PhaseCount]; Phase m_ellipsePhases[PhaseCount]; }; -QQuickUniversalProgressStripAnimatorJob::QQuickUniversalProgressStripAnimatorJob() : m_node(nullptr) +QQuickUniversalProgressBarNode::QQuickUniversalProgressBarNode(QQuickUniversalProgressBar *item) + : QQuickAnimatedNode(item), + m_indeterminate(false) { + setLoopCount(Infinite); + setDuration(TotalDuration); + m_borderPhases[0] = Phase( 500, -50, 0); m_borderPhases[1] = Phase(1500, 0, 0); m_borderPhases[2] = Phase(1000, 0, 100); @@ -95,18 +97,9 @@ QQuickUniversalProgressStripAnimatorJob::QQuickUniversalProgressStripAnimatorJob m_ellipsePhases[3] = Phase(1000, EllipseAnimationWellPosition, EllipseAnimationEndPosition); } -void QQuickUniversalProgressStripAnimatorJob::initialize(QQuickAnimatorController *controller) -{ - QQuickAnimatorJob::initialize(controller); - m_node = QQuickItemPrivate::get(m_target)->childContainerNode(); -} - -void QQuickUniversalProgressStripAnimatorJob::updateCurrentTime(int time) +void QQuickUniversalProgressBarNode::updateCurrentTime(int time) { - if (!m_node) - return; - - QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(m_node->firstChild()); + QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(firstChild()); Q_ASSERT(!geometryNode || geometryNode->type() == QSGNode::GeometryNodeType); if (!geometryNode) return; @@ -197,105 +190,37 @@ void QQuickUniversalProgressStripAnimatorJob::updateCurrentTime(int time) } } -void QQuickUniversalProgressStripAnimatorJob::writeBack() -{ -} - -void QQuickUniversalProgressStripAnimatorJob::nodeWasDestroyed() -{ - m_node = nullptr; -} - -void QQuickUniversalProgressStripAnimatorJob::afterNodeSync() -{ - m_node = QQuickItemPrivate::get(m_target)->childContainerNode(); -} - -QQuickUniversalProgressStripAnimator::QQuickUniversalProgressStripAnimator(QObject *parent) - : QQuickAnimator(parent) -{ - setDuration(TotalDuration); - setLoops(QQuickAnimator::Infinite); -} - -QString QQuickUniversalProgressStripAnimator::propertyName() const -{ - return QString(); -} - -QQuickAnimatorJob *QQuickUniversalProgressStripAnimator::createJob() const -{ - return new QQuickUniversalProgressStripAnimatorJob; -} - -QQuickUniversalProgressStrip::QQuickUniversalProgressStrip(QQuickItem *parent) - : QQuickItem(parent), m_color(Qt::black), m_progress(0.0), m_indeterminate(false) -{ - setFlag(ItemHasContents); -} - -QColor QQuickUniversalProgressStrip::color() const -{ - return m_color; -} - -void QQuickUniversalProgressStrip::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - update(); -} - -qreal QQuickUniversalProgressStrip::progress() const -{ - return m_progress; -} - -void QQuickUniversalProgressStrip::setProgress(qreal progress) -{ - if (progress == m_progress) - return; - - m_progress = progress; - update(); -} - -bool QQuickUniversalProgressStrip::isIndeterminate() const -{ - return m_indeterminate; -} - -void QQuickUniversalProgressStrip::setIndeterminate(bool indeterminate) +void QQuickUniversalProgressBarNode::sync(QQuickItem *item) { - if (indeterminate == m_indeterminate) - return; - - m_indeterminate = indeterminate; - update(); -} + QQuickUniversalProgressBar *bar = static_cast<QQuickUniversalProgressBar *>(item); + if (m_indeterminate != bar->isIndeterminate()) { + m_indeterminate = bar->isIndeterminate(); + if (m_indeterminate) + start(); + else + stop(); + } -QSGNode *QQuickUniversalProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) -{ - QQuickItemPrivate *d = QQuickItemPrivate::get(this); + QQuickItemPrivate *d = QQuickItemPrivate::get(item); - QRectF bounds = boundingRect(); - bounds.setHeight(implicitHeight()); - bounds.moveTop((height() - bounds.height()) / 2.0); + QRectF bounds = item->boundingRect(); + bounds.setHeight(item->implicitHeight()); + bounds.moveTop((item->height() - bounds.height()) / 2.0); if (!m_indeterminate) - bounds.setWidth(m_progress * bounds.width()); + bounds.setWidth(bar->progress() * bounds.width()); - QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(oldNode); - if (!geometryNode) - geometryNode = window()->createRectangleNode(); + QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(firstChild()); + if (!geometryNode) { + geometryNode = item->window()->createRectangleNode(); + appendChildNode(geometryNode); + } geometryNode->setRect(bounds); - geometryNode->setColor(m_indeterminate ? Qt::transparent : m_color); + geometryNode->setColor(m_indeterminate ? Qt::transparent : bar->color()); if (!m_indeterminate) { while (QSGNode *node = geometryNode->firstChild()) delete node; - return geometryNode; + return; } QSGTransformNode *gridNode = static_cast<QSGTransformNode *>(geometryNode->firstChild()); @@ -333,14 +258,82 @@ QSGNode *QQuickUniversalProgressStrip::updatePaintNode(QSGNode *oldNode, UpdateP QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - rectNode->setRect(QRectF((EllipseCount - i - 1) * (EllipseDiameter + EllipseOffset), (height() - EllipseDiameter) / 2, EllipseDiameter, EllipseDiameter)); - rectNode->setColor(m_color); + rectNode->setRect(QRectF((EllipseCount - i - 1) * (EllipseDiameter + EllipseOffset), (item->height() - EllipseDiameter) / 2, EllipseDiameter, EllipseDiameter)); + rectNode->setColor(bar->color()); rectNode->update(); borderNode = borderNode->nextSibling(); } +} + +QQuickUniversalProgressBar::QQuickUniversalProgressBar(QQuickItem *parent) + : QQuickItem(parent), m_color(Qt::black), m_progress(0.0), m_indeterminate(false) +{ + setFlag(ItemHasContents); +} + +QColor QQuickUniversalProgressBar::color() const +{ + return m_color; +} + +void QQuickUniversalProgressBar::setColor(const QColor &color) +{ + if (m_color == color) + return; + + m_color = color; + update(); +} - return geometryNode; +qreal QQuickUniversalProgressBar::progress() const +{ + return m_progress; +} + +void QQuickUniversalProgressBar::setProgress(qreal progress) +{ + if (progress == m_progress) + return; + + m_progress = progress; + update(); +} + +bool QQuickUniversalProgressBar::isIndeterminate() const +{ + return m_indeterminate; +} + +void QQuickUniversalProgressBar::setIndeterminate(bool indeterminate) +{ + if (indeterminate == m_indeterminate) + return; + + m_indeterminate = indeterminate; + setClip(m_indeterminate); + update(); +} + +void QQuickUniversalProgressBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) +{ + QQuickItem::itemChange(change, data); + if (change == ItemVisibleHasChanged) + update(); +} + +QSGNode *QQuickUniversalProgressBar::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) +{ + QQuickUniversalProgressBarNode *node = static_cast<QQuickUniversalProgressBarNode *>(oldNode); + if (isVisible() && width() > 0 && height() > 0) { + if (!node) + node = new QQuickUniversalProgressBarNode(this); + node->sync(this); + } else { + delete node; + node = nullptr; + } + return node; } QT_END_NAMESPACE diff --git a/src/imports/controls/universal/qquickuniversalprogressstrip_p.h b/src/imports/controls/universal/qquickuniversalprogressbar_p.h index 89350e4d..04e5ff3c 100644 --- a/src/imports/controls/universal/qquickuniversalprogressstrip_p.h +++ b/src/imports/controls/universal/qquickuniversalprogressbar_p.h @@ -34,8 +34,8 @@ ** ****************************************************************************/ -#ifndef QQUICKUNIVERSALPROGRESSSTRIP_P_H -#define QQUICKUNIVERSALPROGRESSSTRIP_P_H +#ifndef QQUICKUNIVERSALPROGRESSBAR_P_H +#define QQUICKUNIVERSALPROGRESSBAR_P_H // // W A R N I N G @@ -49,11 +49,10 @@ // #include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquickanimator_p.h> QT_BEGIN_NAMESPACE -class QQuickUniversalProgressStrip : public QQuickItem +class QQuickUniversalProgressBar : public QQuickItem { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor FINAL) @@ -61,7 +60,7 @@ class QQuickUniversalProgressStrip : public QQuickItem Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL) public: - QQuickUniversalProgressStrip(QQuickItem *parent = nullptr); + explicit QQuickUniversalProgressBar(QQuickItem *parent = nullptr); QColor color() const; void setColor(const QColor &color); @@ -73,6 +72,7 @@ public: void setIndeterminate(bool indeterminate); protected: + void itemChange(ItemChange change, const ItemChangeData &data) override; QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; private: @@ -81,21 +81,8 @@ private: bool m_indeterminate; }; -class QQuickUniversalProgressStripAnimator : public QQuickAnimator -{ - Q_OBJECT - -public: - QQuickUniversalProgressStripAnimator(QObject *parent = nullptr); - -protected: - QString propertyName() const override; - QQuickAnimatorJob *createJob() const override; -}; - QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickUniversalProgressStrip) -QML_DECLARE_TYPE(QQuickUniversalProgressStripAnimator) +QML_DECLARE_TYPE(QQuickUniversalProgressBar) -#endif // QQUICKUNIVERSALPROGRESSSTRIP_P_H +#endif // QQUICKUNIVERSALPROGRESSBAR_P_H diff --git a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp index 394e9162..e80fda6f 100644 --- a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp +++ b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp @@ -36,9 +36,9 @@ #include <QtQuickControls2/private/qquickstyleplugin_p.h> +#include "qquickuniversalbusyindicator_p.h" #include "qquickuniversalfocusrectangle_p.h" -#include "qquickuniversalprogressring_p.h" -#include "qquickuniversalprogressstrip_p.h" +#include "qquickuniversalprogressbar_p.h" #include "qquickuniversalstyle_p.h" #include "qquickuniversaltheme_p.h" @@ -76,8 +76,8 @@ QtQuickControls2UniversalStylePlugin::QtQuickControls2UniversalStylePlugin(QObje void QtQuickControls2UniversalStylePlugin::registerTypes(const char *uri) { + qmlRegisterModule(uri, 2, QT_VERSION_MINOR - 7); // Qt 5.7->2.0, 5.8->2.1, 5.9->2.2... qmlRegisterUncreatableType<QQuickUniversalStyle>(uri, 2, 0, "Universal", tr("Universal is an attached property")); - qmlRegisterRevision<QQuickUniversalStyle, 1>(uri, 2, 1); } void QtQuickControls2UniversalStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri) @@ -87,13 +87,11 @@ void QtQuickControls2UniversalStylePlugin::initializeEngine(QQmlEngine *engine, engine->addImageProvider(name(), new QQuickColorImageProvider(QStringLiteral(":/qt-project.org/imports/QtQuick/Controls.2/Universal/images"))); QByteArray import = QByteArray(uri) + ".impl"; - qmlRegisterType<QQuickUniversalFocusRectangle>(import, 2, 0, "FocusRectangle"); - qmlRegisterRevision<QQuickUniversalFocusRectangle, 1>(import, 2, 1); - qmlRegisterType<QQuickUniversalProgressRing>(import, 2, 0, "ProgressRing"); - qmlRegisterType<QQuickUniversalProgressRingAnimator>(import, 2, 0, "ProgressRingAnimator"); - qmlRegisterType<QQuickUniversalProgressStrip>(import, 2, 0, "ProgressStrip"); - qmlRegisterType<QQuickUniversalProgressStripAnimator>(import, 2, 0, "ProgressStripAnimator"); + qmlRegisterModule(import, 2, QT_VERSION_MINOR - 7); // Qt 5.7->2.0, 5.8->2.1, 5.9->2.2... + qmlRegisterType<QQuickUniversalFocusRectangle>(import, 2, 0, "FocusRectangle"); + qmlRegisterType<QQuickUniversalBusyIndicator>(import, 2, 0, "BusyIndicatorImpl"); + qmlRegisterType<QQuickUniversalProgressBar>(import, 2, 0, "ProgressBarImpl"); qmlRegisterType(typeUrl(QStringLiteral("RadioIndicator.qml")), import, 2, 0, "RadioIndicator"); qmlRegisterType(typeUrl(QStringLiteral("SwitchIndicator.qml")), import, 2, 0, "SwitchIndicator"); } diff --git a/src/imports/controls/universal/universal.pri b/src/imports/controls/universal/universal.pri index 3697a2a6..833bf2b6 100644 --- a/src/imports/controls/universal/universal.pri +++ b/src/imports/controls/universal/universal.pri @@ -47,15 +47,15 @@ QML_FILES += \ $$PWD/Tumbler.qml HEADERS += \ + $$PWD/qquickuniversalbusyindicator_p.h \ $$PWD/qquickuniversalfocusrectangle_p.h \ - $$PWD/qquickuniversalprogressring_p.h \ - $$PWD/qquickuniversalprogressstrip_p.h \ + $$PWD/qquickuniversalprogressbar_p.h \ $$PWD/qquickuniversalstyle_p.h \ $$PWD/qquickuniversaltheme_p.h SOURCES += \ + $$PWD/qquickuniversalbusyindicator.cpp \ $$PWD/qquickuniversalfocusrectangle.cpp \ - $$PWD/qquickuniversalprogressring.cpp \ - $$PWD/qquickuniversalprogressstrip.cpp \ + $$PWD/qquickuniversalprogressbar.cpp \ $$PWD/qquickuniversalstyle.cpp \ $$PWD/qquickuniversaltheme.cpp |