diff options
372 files changed, 3500 insertions, 2201 deletions
diff --git a/.qmake.conf b/.qmake.conf index e264502c..54e0cdc8 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -4,4 +4,4 @@ DEFINES += QT_NO_FOREACH QQC2_SOURCE_TREE = $$PWD -MODULE_VERSION = 5.11.0 +MODULE_VERSION = 5.12.0 diff --git a/src/imports/controls/AbstractButton.qml b/src/imports/controls/AbstractButton.qml index 2ff1b82c..58a1a102 100644 --- a/src/imports/controls/AbstractButton.qml +++ b/src/imports/controls/AbstractButton.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.AbstractButton { id: control diff --git a/src/imports/controls/Action.qml b/src/imports/controls/Action.qml index 0ba5822f..fe86213a 100644 --- a/src/imports/controls/Action.qml +++ b/src/imports/controls/Action.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.Action { } diff --git a/src/imports/controls/ActionGroup.qml b/src/imports/controls/ActionGroup.qml index a8c49d8b..ae8772d6 100644 --- a/src/imports/controls/ActionGroup.qml +++ b/src/imports/controls/ActionGroup.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.ActionGroup { } diff --git a/src/imports/controls/ApplicationWindow.qml b/src/imports/controls/ApplicationWindow.qml index 84b618e1..4ad97082 100644 --- a/src/imports/controls/ApplicationWindow.qml +++ b/src/imports/controls/ApplicationWindow.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ApplicationWindow { id: window diff --git a/src/imports/controls/BusyIndicator.qml b/src/imports/controls/BusyIndicator.qml index bde5fa7c..13fd52c4 100644 --- a/src/imports/controls/BusyIndicator.qml +++ b/src/imports/controls/BusyIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.BusyIndicator { id: control diff --git a/src/imports/controls/Button.qml b/src/imports/controls/Button.qml index 7039dfc9..c0f96af3 100644 --- a/src/imports/controls/Button.qml +++ b/src/imports/controls/Button.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Button { id: control @@ -49,8 +49,7 @@ T.Button { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 6 - leftPadding: padding + 2 - rightPadding: padding + 2 + horizontalPadding: padding + 2 spacing: 6 icon.width: 24 diff --git a/src/imports/controls/ButtonGroup.qml b/src/imports/controls/ButtonGroup.qml index 4e8ae893..50d3b840 100644 --- a/src/imports/controls/ButtonGroup.qml +++ b/src/imports/controls/ButtonGroup.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.ButtonGroup { } diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml index 136c9b36..140ce8a1 100644 --- a/src/imports/controls/CheckBox.qml +++ b/src/imports/controls/CheckBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.CheckBox { id: control diff --git a/src/imports/controls/CheckDelegate.qml b/src/imports/controls/CheckDelegate.qml index 087c9d75..af3a72d7 100644 --- a/src/imports/controls/CheckDelegate.qml +++ b/src/imports/controls/CheckDelegate.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.CheckDelegate { id: control diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml index 2bb26967..73ffb89e 100644 --- a/src/imports/controls/ComboBox.qml +++ b/src/imports/controls/ComboBox.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ComboBox { id: control diff --git a/src/imports/controls/Container.qml b/src/imports/controls/Container.qml index e7cf8a2a..896091d8 100644 --- a/src/imports/controls/Container.qml +++ b/src/imports/controls/Container.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.Container { id: control diff --git a/src/imports/controls/Control.qml b/src/imports/controls/Control.qml index 5728da0a..4c673283 100644 --- a/src/imports/controls/Control.qml +++ b/src/imports/controls/Control.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.Control { id: control diff --git a/src/imports/controls/DelayButton.qml b/src/imports/controls/DelayButton.qml index b34caed6..ee4b227a 100644 --- a/src/imports/controls/DelayButton.qml +++ b/src/imports/controls/DelayButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.DelayButton { id: control @@ -49,8 +49,7 @@ T.DelayButton { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 6 - leftPadding: padding + 2 - rightPadding: padding + 2 + horizontalPadding: padding + 2 transition: Transition { NumberAnimation { diff --git a/src/imports/controls/Dial.qml b/src/imports/controls/Dial.qml index f4132611..be029c37 100644 --- a/src/imports/controls/Dial.qml +++ b/src/imports/controls/Dial.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Dial { id: control diff --git a/src/imports/controls/Dialog.qml b/src/imports/controls/Dialog.qml index 913e23f1..768d3ff1 100644 --- a/src/imports/controls/Dialog.qml +++ b/src/imports/controls/Dialog.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.Dialog { id: control diff --git a/src/imports/controls/DialogButtonBox.qml b/src/imports/controls/DialogButtonBox.qml index 3189967d..feff1492 100644 --- a/src/imports/controls/DialogButtonBox.qml +++ b/src/imports/controls/DialogButtonBox.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.DialogButtonBox { id: control diff --git a/src/imports/controls/Drawer.qml b/src/imports/controls/Drawer.qml index dbafbd92..78199695 100644 --- a/src/imports/controls/Drawer.qml +++ b/src/imports/controls/Drawer.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Drawer { id: control diff --git a/src/imports/controls/Frame.qml b/src/imports/controls/Frame.qml index 7c8a4db7..2f647b64 100644 --- a/src/imports/controls/Frame.qml +++ b/src/imports/controls/Frame.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Frame { id: control @@ -45,9 +45,6 @@ T.Frame { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 12 background: Rectangle { diff --git a/src/imports/controls/GroupBox.qml b/src/imports/controls/GroupBox.qml index 2985c02e..165c5fff 100644 --- a/src/imports/controls/GroupBox.qml +++ b/src/imports/controls/GroupBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.GroupBox { id: control @@ -47,9 +47,6 @@ T.GroupBox { contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - spacing: 6 padding: 12 topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) diff --git a/src/imports/controls/ItemDelegate.qml b/src/imports/controls/ItemDelegate.qml index 6367bc86..f5f03bca 100644 --- a/src/imports/controls/ItemDelegate.qml +++ b/src/imports/controls/ItemDelegate.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ItemDelegate { id: control diff --git a/src/imports/controls/Label.qml b/src/imports/controls/Label.qml index aa02918f..6c3c05d4 100644 --- a/src/imports/controls/Label.qml +++ b/src/imports/controls/Label.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Label { id: control diff --git a/src/imports/controls/Menu.qml b/src/imports/controls/Menu.qml index deadc274..770db8eb 100644 --- a/src/imports/controls/Menu.qml +++ b/src/imports/controls/Menu.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Menu { id: control diff --git a/src/imports/controls/MenuBar.qml b/src/imports/controls/MenuBar.qml index 058c8736..677396ab 100644 --- a/src/imports/controls/MenuBar.qml +++ b/src/imports/controls/MenuBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.MenuBar { id: control diff --git a/src/imports/controls/MenuBarItem.qml b/src/imports/controls/MenuBarItem.qml index 02e3ac43..ee307532 100644 --- a/src/imports/controls/MenuBarItem.qml +++ b/src/imports/controls/MenuBarItem.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.MenuBarItem { id: control diff --git a/src/imports/controls/MenuItem.qml b/src/imports/controls/MenuItem.qml index 90a19f57..4c4ce005 100644 --- a/src/imports/controls/MenuItem.qml +++ b/src/imports/controls/MenuItem.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.MenuItem { id: control diff --git a/src/imports/controls/MenuSeparator.qml b/src/imports/controls/MenuSeparator.qml index ac47e32c..845bbdaa 100644 --- a/src/imports/controls/MenuSeparator.qml +++ b/src/imports/controls/MenuSeparator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.MenuSeparator { id: control @@ -46,8 +46,7 @@ T.MenuSeparator { implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) padding: 2 - topPadding: padding + 4 - bottomPadding: padding + 4 + verticalPadding: padding + 4 contentItem: Rectangle { implicitWidth: 188 diff --git a/src/imports/controls/Page.qml b/src/imports/controls/Page.qml index df56dcbe..3950d702 100644 --- a/src/imports/controls/Page.qml +++ b/src/imports/controls/Page.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Page { id: control @@ -51,9 +51,6 @@ T.Page { + (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0)) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - background: Rectangle { color: control.palette.window } diff --git a/src/imports/controls/PageIndicator.qml b/src/imports/controls/PageIndicator.qml index 9d048002..77958d19 100644 --- a/src/imports/controls/PageIndicator.qml +++ b/src/imports/controls/PageIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.PageIndicator { id: control diff --git a/src/imports/controls/Pane.qml b/src/imports/controls/Pane.qml index 7517e2f2..3bfad75d 100644 --- a/src/imports/controls/Pane.qml +++ b/src/imports/controls/Pane.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Pane { id: control @@ -45,9 +45,6 @@ T.Pane { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 12 background: Rectangle { diff --git a/src/imports/controls/Popup.qml b/src/imports/controls/Popup.qml index 7ea706ed..f7966be4 100644 --- a/src/imports/controls/Popup.qml +++ b/src/imports/controls/Popup.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Popup { id: control diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml index d91bcd57..17cf9560 100644 --- a/src/imports/controls/ProgressBar.qml +++ b/src/imports/controls/ProgressBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.ProgressBar { id: control diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml index d95d2a7b..751f505a 100644 --- a/src/imports/controls/RadioButton.qml +++ b/src/imports/controls/RadioButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.RadioButton { id: control diff --git a/src/imports/controls/RadioDelegate.qml b/src/imports/controls/RadioDelegate.qml index 556d678f..71544108 100644 --- a/src/imports/controls/RadioDelegate.qml +++ b/src/imports/controls/RadioDelegate.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.RadioDelegate { id: control diff --git a/src/imports/controls/RangeSlider.qml b/src/imports/controls/RangeSlider.qml index f2c9266e..c096608e 100644 --- a/src/imports/controls/RangeSlider.qml +++ b/src/imports/controls/RangeSlider.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.RangeSlider { id: control diff --git a/src/imports/controls/RoundButton.qml b/src/imports/controls/RoundButton.qml index 9692b9de..934bbf1c 100644 --- a/src/imports/controls/RoundButton.qml +++ b/src/imports/controls/RoundButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.RoundButton { id: control diff --git a/src/imports/controls/ScrollBar.qml b/src/imports/controls/ScrollBar.qml index 2f8826bf..c62c1544 100644 --- a/src/imports/controls/ScrollBar.qml +++ b/src/imports/controls/ScrollBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ScrollBar { id: control diff --git a/src/imports/controls/ScrollIndicator.qml b/src/imports/controls/ScrollIndicator.qml index 6616d6c6..d65a609f 100644 --- a/src/imports/controls/ScrollIndicator.qml +++ b/src/imports/controls/ScrollIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ScrollIndicator { id: control diff --git a/src/imports/controls/ScrollView.qml b/src/imports/controls/ScrollView.qml index 725a50a9..338e755e 100644 --- a/src/imports/controls/ScrollView.qml +++ b/src/imports/controls/ScrollView.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ScrollView { id: control diff --git a/src/imports/controls/Slider.qml b/src/imports/controls/Slider.qml index 9d4942c9..94f1ecb3 100644 --- a/src/imports/controls/Slider.qml +++ b/src/imports/controls/Slider.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Slider { id: control diff --git a/src/imports/controls/SpinBox.qml b/src/imports/controls/SpinBox.qml index 51d635a6..43543656 100644 --- a/src/imports/controls/SpinBox.qml +++ b/src/imports/controls/SpinBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.SpinBox { id: control diff --git a/src/imports/controls/StackView.qml b/src/imports/controls/StackView.qml index cc4e1472..5da0c541 100644 --- a/src/imports/controls/StackView.qml +++ b/src/imports/controls/StackView.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Templates 2.5 as T T.StackView { id: control diff --git a/src/imports/controls/SwipeDelegate.qml b/src/imports/controls/SwipeDelegate.qml index 4f2c9ee1..22162131 100644 --- a/src/imports/controls/SwipeDelegate.qml +++ b/src/imports/controls/SwipeDelegate.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.SwipeDelegate { id: control diff --git a/src/imports/controls/SwipeView.qml b/src/imports/controls/SwipeView.qml index 827c9cd6..e46c080e 100644 --- a/src/imports/controls/SwipeView.qml +++ b/src/imports/controls/SwipeView.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Templates 2.5 as T T.SwipeView { id: control diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml index 30da70f4..b59675ea 100644 --- a/src/imports/controls/Switch.qml +++ b/src/imports/controls/Switch.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.Switch { id: control diff --git a/src/imports/controls/SwitchDelegate.qml b/src/imports/controls/SwitchDelegate.qml index 21a11491..7ef1dc3c 100644 --- a/src/imports/controls/SwitchDelegate.qml +++ b/src/imports/controls/SwitchDelegate.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.SwitchDelegate { id: control diff --git a/src/imports/controls/TabBar.qml b/src/imports/controls/TabBar.qml index d95d7f39..edde8cc7 100644 --- a/src/imports/controls/TabBar.qml +++ b/src/imports/controls/TabBar.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T T.TabBar { id: control diff --git a/src/imports/controls/TabButton.qml b/src/imports/controls/TabButton.qml index 964f4e1f..3c24caf0 100644 --- a/src/imports/controls/TabButton.qml +++ b/src/imports/controls/TabButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.TabButton { id: control diff --git a/src/imports/controls/TextArea.qml b/src/imports/controls/TextArea.qml index 04a44eae..6a30b799 100644 --- a/src/imports/controls/TextArea.qml +++ b/src/imports/controls/TextArea.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.TextArea { id: control @@ -53,6 +53,7 @@ T.TextArea { leftPadding: padding + 4 color: control.palette.text + placeholderTextColor: Color.transparent(control.color, 0.5) selectionColor: control.palette.highlight selectedTextColor: control.palette.highlightedText @@ -65,8 +66,7 @@ T.TextArea { text: control.placeholderText font: control.font - opacity: 0.5 - color: control.color + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) elide: Text.ElideRight diff --git a/src/imports/controls/TextField.qml b/src/imports/controls/TextField.qml index 4b80d8be..0264f25e 100644 --- a/src/imports/controls/TextField.qml +++ b/src/imports/controls/TextField.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.TextField { id: control @@ -55,6 +55,7 @@ T.TextField { color: control.palette.text selectionColor: control.palette.highlight selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) verticalAlignment: TextInput.AlignVCenter PlaceholderText { @@ -66,8 +67,7 @@ T.TextField { text: control.placeholderText font: control.font - opacity: 0.5 - color: control.color + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) elide: Text.ElideRight diff --git a/src/imports/controls/ToolBar.qml b/src/imports/controls/ToolBar.qml index ba6684b9..27a7f580 100644 --- a/src/imports/controls/ToolBar.qml +++ b/src/imports/controls/ToolBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ToolBar { id: control @@ -45,9 +45,6 @@ T.ToolBar { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - background: Rectangle { implicitHeight: 40 color: control.palette.button diff --git a/src/imports/controls/ToolButton.qml b/src/imports/controls/ToolButton.qml index 371d1546..72983c94 100644 --- a/src/imports/controls/ToolButton.qml +++ b/src/imports/controls/ToolButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ToolButton { id: control diff --git a/src/imports/controls/ToolSeparator.qml b/src/imports/controls/ToolSeparator.qml index 306ca575..db156762 100644 --- a/src/imports/controls/ToolSeparator.qml +++ b/src/imports/controls/ToolSeparator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ToolSeparator { id: control @@ -46,8 +46,7 @@ T.ToolSeparator { implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) padding: vertical ? 6 : 2 - topPadding: vertical ? 2 : 6 - bottomPadding: vertical ? 2 : 6 + verticalPadding: vertical ? 2 : 6 contentItem: Rectangle { implicitWidth: vertical ? 1 : 30 diff --git a/src/imports/controls/ToolTip.qml b/src/imports/controls/ToolTip.qml index 46f7f577..57d28c53 100644 --- a/src/imports/controls/ToolTip.qml +++ b/src/imports/controls/ToolTip.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.ToolTip { id: control diff --git a/src/imports/controls/Tumbler.qml b/src/imports/controls/Tumbler.qml index b9cb51a1..24576b43 100644 --- a/src/imports/controls/Tumbler.qml +++ b/src/imports/controls/Tumbler.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T T.Tumbler { id: control diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro index 6bbbe0d4..8624e243 100644 --- a/src/imports/controls/controls.pro +++ b/src/imports/controls/controls.pro @@ -1,6 +1,6 @@ TARGET = qtquickcontrols2plugin TARGETPATH = QtQuick/Controls.2 -IMPORT_VERSION = 2.4 +IMPORT_VERSION = 2.5 QT += qml quick QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.png b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.png Binary files differnew file mode 100644 index 00000000..02f39b78 --- /dev/null +++ b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.png diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.png b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.png Binary files differnew file mode 100644 index 00000000..c1e366c5 --- /dev/null +++ b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.png diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml new file mode 100644 index 00000000..fc2be179 --- /dev/null +++ b/src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import QtQuick.Controls.Material 2.4 +import QtQuick.Layouts 1.3 + +Pane { + implicitWidth: 400 + implicitHeight: 600 + padding: 10 + + readonly property color measurementColor: "darkorange" + readonly property int barLeftMargin: 10 + readonly property int textTopMargin: 12 + + Component { + id: measurementComponent + + Rectangle { + color: measurementColor + width: 1 + height: parent.height + + Rectangle { + width: 5 + height: 1 + color: measurementColor + anchors.horizontalCenter: parent.horizontalCenter + } + + Rectangle { + width: 5 + height: 1 + color: measurementColor + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + } + + Text { + x: 8 + text: parent.height + height: parent.height + color: measurementColor + verticalAlignment: Text.AlignVCenter + } + } + } + + ColumnLayout { + anchors.fill: parent + spacing: 20 + + ColumnLayout { + spacing: textTopMargin + + Button { + id: button + text: qsTr("Button") + + Loader { + sourceComponent: measurementComponent + height: parent.height + anchors.left: parent.right + anchors.leftMargin: barLeftMargin + } + + } + Text { + text: "Roboto " + button.font.pixelSize + color: measurementColor + } + } + + ColumnLayout { + spacing: textTopMargin + + ItemDelegate { + id: itemDelegate + text: qsTr("ItemDelegate") + + Loader { + sourceComponent: measurementComponent + height: parent.height + anchors.left: parent.right + anchors.leftMargin: barLeftMargin + } + + } + Text { + text: "Roboto " + itemDelegate.font.pixelSize + color: measurementColor + } + } + + ColumnLayout { + spacing: textTopMargin + + CheckDelegate { + id: checkDelegate + text: qsTr("CheckDelegate") + + Loader { + sourceComponent: measurementComponent + height: parent.height + anchors.left: parent.right + anchors.leftMargin: barLeftMargin + } + + } + Text { + text: "Roboto " + checkDelegate.font.pixelSize + color: measurementColor + } + } + + ColumnLayout { + spacing: textTopMargin + + RadioDelegate { + id: radioDelegate + text: qsTr("RadioDelegate") + + Loader { + sourceComponent: measurementComponent + height: parent.height + anchors.left: parent.right + anchors.leftMargin: barLeftMargin + } + + } + Text { + text: "Roboto " + radioDelegate.font.pixelSize + color: measurementColor + } + } + + ColumnLayout { + spacing: textTopMargin + + ComboBox { + id: comboBox + model: [ qsTr("ComboBox") ] + + Loader { + sourceComponent: measurementComponent + height: parent.height + anchors.left: parent.right + anchors.leftMargin: barLeftMargin + } + + } + Text { + text: "Roboto " + comboBox.font.pixelSize + color: measurementColor + } + } + + ColumnLayout { + spacing: textTopMargin + + Item { + implicitWidth: groupBox.implicitWidth + implicitHeight: groupBox.implicitHeight + + GroupBox { + id: groupBox + title: qsTr("GroupBox") + } + Loader { + sourceComponent: measurementComponent + height: parent.height + anchors.left: parent.right + anchors.leftMargin: barLeftMargin + } + } + Text { + text: "Roboto " + groupBox.font.pixelSize + color: measurementColor + } + } + + Item { + Layout.fillHeight: true + } + } +} diff --git a/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc b/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc index c5d94279..72c97bb6 100644 --- a/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc +++ b/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc @@ -8,6 +8,14 @@ \li Specifies the default \l {material-theme-attached-prop}{Material theme}. The value can be one of the available themes, for example \c "Dark". \row + \li \c Variant + \li Specifies the Material variant. The Material Design has two + variants: a normal variant designed for touch devices, and a dense + variant for desktop. The dense variant uses smaller sizes for + controls and their fonts. + + The value can be \c "Normal" or \c "Dense". + \row \li \c Accent \li Specifies the default \l {material-accent-attached-prop}{Material accent color}. The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use @@ -40,6 +48,14 @@ \li Specifies the default \l {material-theme-attached-prop}{Material theme}. The value can be one of the available themes, for example \c "Dark". \row + \li \c QT_QUICK_CONTROLS_MATERIAL_VARIANT + \li Specifies the Material variant. The Material Design has two + variants: a normal variant designed for touch devices, and a dense + variant for desktop. The dense variant uses smaller sizes for + controls and their fonts. + + The value can be \c "Normal" or \c "Dense". + \row \li \c QT_QUICK_CONTROLS_MATERIAL_ACCENT \li Specifies the default \l {material-accent-attached-prop}{Material accent color}. The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use diff --git a/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc index 9061097b..75dec936 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc @@ -31,7 +31,7 @@ The Imagine Style is based on configurable image assets. \l{detailed-desc-imagine}{More...} - \styleimport {QtQuick.Controls.Imagine 2.4} {Qt 5.10} + \styleimport {QtQuick.Controls.Imagine 2.5} {Qt 5.10} \section1 Attached Properties diff --git a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc index 9b737939..ba8d7527 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc @@ -46,7 +46,7 @@ application using the following import statement in your \c {.qml} file: \code - import QtQuick.Controls 2.4 + import QtQuick.Controls 2.5 \endcode The \l{Qt Quick Controls 2 C++ Classes}{C++ classes} can be included into @@ -107,6 +107,11 @@ \li 2.4 \li 1.0 \row + \li 5.12 + \li 2.12 + \li 2.5 + \li 1.0 + \row \li ... \li ... \li ... diff --git a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc index d0bcf63a..fa7874e5 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc @@ -32,7 +32,7 @@ The Material Style is based on the Google Material Design Guidelines. \l{detailed-desc-material}{More...} - \styleimport {QtQuick.Controls.Material 2.4} {Qt 5.7} + \styleimport {QtQuick.Controls.Material 2.5} {Qt 5.7} \section1 Attached Properties @@ -222,6 +222,33 @@ \b {See also} \l {Default Style}, \l {Universal Style} + \section2 Variants + + The Material style also supports a dense variant, where controls like + buttons and delegates are smaller in height and use smaller font sizes. + It is recommended to use the dense variant on desktop platforms, where + a mouse and keyboard allow more precise and flexible user interaction. + + To use the dense variant, either set the + \c QT_QUICK_CONTROLS_MATERIAL_VARIANT environment variable to \c Dense, + or specify \c Variant=Dense in the + \l {Qt Quick Controls 2 Configuration File}{qtquickcontrols2.conf} file. + The default value in both cases is \c Normal. + + The following images illustrate the differences between some of the + controls when using the normal and dense variants: + + \table + \row + \li + \image qtquickcontrols2-material-variant-normal.png + \li + \image qtquickcontrols2-material-variant-dense.png + \endtable + + Note that the heights shown above may vary based on differences in fonts + across platforms. + \section1 Attached Property Documentation \styleproperty {Material.accent} {color} {material-accent-attached-prop} diff --git a/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc index d4576617..6ebe2fe9 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \qmlmodule QtQuick.Controls 2.4 + \qmlmodule QtQuick.Controls 2.5 \title Qt Quick Controls 2 QML Types \ingroup qmlmodules \brief Provides QML types for user interfaces (Qt Quick Controls 2). @@ -39,7 +39,7 @@ using the following import statement in your .qml file: \badcode - import QtQuick.Controls 2.4 + import QtQuick.Controls 2.5 \endcode \section1 QML Types diff --git a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc index abd027e4..80bf9ef7 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc @@ -32,7 +32,7 @@ The Universal Style is based on the Microsoft Universal Design Guidelines. \l {detailed-desc-universal}{More...} - \styleimport {QtQuick.Controls.Universal 2.4} {Qt 5.7} + \styleimport {QtQuick.Controls.Universal 2.5} {Qt 5.7} \section1 Attached Properties diff --git a/src/imports/controls/fusion/ApplicationWindow.qml b/src/imports/controls/fusion/ApplicationWindow.qml index 570d84b4..6abe832f 100644 --- a/src/imports/controls/fusion/ApplicationWindow.qml +++ b/src/imports/controls/fusion/ApplicationWindow.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.2 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ApplicationWindow { id: window diff --git a/src/imports/controls/fusion/BusyIndicator.qml b/src/imports/controls/fusion/BusyIndicator.qml index cba5fc2e..2658f477 100644 --- a/src/imports/controls/fusion/BusyIndicator.qml +++ b/src/imports/controls/fusion/BusyIndicator.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.BusyIndicator { id: control diff --git a/src/imports/controls/fusion/Button.qml b/src/imports/controls/fusion/Button.qml index d33544ae..492fe1e2 100644 --- a/src/imports/controls/fusion/Button.qml +++ b/src/imports/controls/fusion/Button.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Button { id: control diff --git a/src/imports/controls/fusion/ButtonPanel.qml b/src/imports/controls/fusion/ButtonPanel.qml index b1672bf0..fc1af2de 100644 --- a/src/imports/controls/fusion/ButtonPanel.qml +++ b/src/imports/controls/fusion/ButtonPanel.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 Rectangle { id: panel diff --git a/src/imports/controls/fusion/CheckBox.qml b/src/imports/controls/fusion/CheckBox.qml index 4a10238d..41cf1808 100644 --- a/src/imports/controls/fusion/CheckBox.qml +++ b/src/imports/controls/fusion/CheckBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.CheckBox { id: control diff --git a/src/imports/controls/fusion/CheckDelegate.qml b/src/imports/controls/fusion/CheckDelegate.qml index 9c6b97ff..99dbf794 100644 --- a/src/imports/controls/fusion/CheckDelegate.qml +++ b/src/imports/controls/fusion/CheckDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.CheckDelegate { id: control diff --git a/src/imports/controls/fusion/CheckIndicator.qml b/src/imports/controls/fusion/CheckIndicator.qml index 5a5837ae..8c49e6b2 100644 --- a/src/imports/controls/fusion/CheckIndicator.qml +++ b/src/imports/controls/fusion/CheckIndicator.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 Rectangle { id: indicator diff --git a/src/imports/controls/fusion/ComboBox.qml b/src/imports/controls/fusion/ComboBox.qml index bc232759..a7bacc66 100644 --- a/src/imports/controls/fusion/ComboBox.qml +++ b/src/imports/controls/fusion/ComboBox.qml @@ -34,13 +34,13 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ComboBox { id: control diff --git a/src/imports/controls/fusion/DelayButton.qml b/src/imports/controls/fusion/DelayButton.qml index 261db320..d515602a 100644 --- a/src/imports/controls/fusion/DelayButton.qml +++ b/src/imports/controls/fusion/DelayButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.DelayButton { id: control diff --git a/src/imports/controls/fusion/Dial.qml b/src/imports/controls/fusion/Dial.qml index c9ed0c68..3f353275 100644 --- a/src/imports/controls/fusion/Dial.qml +++ b/src/imports/controls/fusion/Dial.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Dial { id: control diff --git a/src/imports/controls/fusion/Dialog.qml b/src/imports/controls/fusion/Dialog.qml index 4e43b038..a2366170 100644 --- a/src/imports/controls/fusion/Dialog.qml +++ b/src/imports/controls/fusion/Dialog.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Dialog { id: control diff --git a/src/imports/controls/fusion/DialogButtonBox.qml b/src/imports/controls/fusion/DialogButtonBox.qml index 5d30c329..cfd4be3e 100644 --- a/src/imports/controls/fusion/DialogButtonBox.qml +++ b/src/imports/controls/fusion/DialogButtonBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.DialogButtonBox { id: control diff --git a/src/imports/controls/fusion/Drawer.qml b/src/imports/controls/fusion/Drawer.qml index 711040a2..2ee18a9b 100644 --- a/src/imports/controls/fusion/Drawer.qml +++ b/src/imports/controls/fusion/Drawer.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Drawer { id: control diff --git a/src/imports/controls/fusion/Frame.qml b/src/imports/controls/fusion/Frame.qml index 4acce74a..bd4bb6f2 100644 --- a/src/imports/controls/fusion/Frame.qml +++ b/src/imports/controls/fusion/Frame.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Frame { id: control @@ -47,9 +47,6 @@ T.Frame { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 9 background: Rectangle { diff --git a/src/imports/controls/fusion/GroupBox.qml b/src/imports/controls/fusion/GroupBox.qml index 439783ac..5196f8b2 100644 --- a/src/imports/controls/fusion/GroupBox.qml +++ b/src/imports/controls/fusion/GroupBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.GroupBox { id: control @@ -49,9 +49,6 @@ T.GroupBox { contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - spacing: 6 padding: 9 topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) diff --git a/src/imports/controls/fusion/ItemDelegate.qml b/src/imports/controls/fusion/ItemDelegate.qml index 0936c7c2..7cdc8890 100644 --- a/src/imports/controls/fusion/ItemDelegate.qml +++ b/src/imports/controls/fusion/ItemDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ItemDelegate { id: control diff --git a/src/imports/controls/fusion/Label.qml b/src/imports/controls/fusion/Label.qml index 1c6951c2..23e337e2 100644 --- a/src/imports/controls/fusion/Label.qml +++ b/src/imports/controls/fusion/Label.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Label { id: control diff --git a/src/imports/controls/fusion/Menu.qml b/src/imports/controls/fusion/Menu.qml index dc8e2eb2..2b38119e 100644 --- a/src/imports/controls/fusion/Menu.qml +++ b/src/imports/controls/fusion/Menu.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Menu { id: control diff --git a/src/imports/controls/fusion/MenuBar.qml b/src/imports/controls/fusion/MenuBar.qml index d1530d75..d9776496 100644 --- a/src/imports/controls/fusion/MenuBar.qml +++ b/src/imports/controls/fusion/MenuBar.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.MenuBar { id: control diff --git a/src/imports/controls/fusion/MenuBarItem.qml b/src/imports/controls/fusion/MenuBarItem.qml index 2b4425a9..639c6ccb 100644 --- a/src/imports/controls/fusion/MenuBarItem.qml +++ b/src/imports/controls/fusion/MenuBarItem.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.MenuBarItem { id: control diff --git a/src/imports/controls/fusion/MenuItem.qml b/src/imports/controls/fusion/MenuItem.qml index 35d7248f..984f66f8 100644 --- a/src/imports/controls/fusion/MenuItem.qml +++ b/src/imports/controls/fusion/MenuItem.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.MenuItem { id: control diff --git a/src/imports/controls/fusion/MenuSeparator.qml b/src/imports/controls/fusion/MenuSeparator.qml index a426c0fe..95ad44a4 100644 --- a/src/imports/controls/fusion/MenuSeparator.qml +++ b/src/imports/controls/fusion/MenuSeparator.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.MenuSeparator { id: control @@ -48,8 +48,7 @@ T.MenuSeparator { implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) padding: 5 - topPadding: 1 - bottomPadding: 1 + verticalPadding: 1 contentItem: Rectangle { implicitWidth: 188 diff --git a/src/imports/controls/fusion/Page.qml b/src/imports/controls/fusion/Page.qml index 20febd6a..cdc473e5 100644 --- a/src/imports/controls/fusion/Page.qml +++ b/src/imports/controls/fusion/Page.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Page { id: control @@ -53,9 +53,6 @@ T.Page { + (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0)) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - background: Rectangle { color: palette.window } diff --git a/src/imports/controls/fusion/PageIndicator.qml b/src/imports/controls/fusion/PageIndicator.qml index 39d28ca2..7958c03a 100644 --- a/src/imports/controls/fusion/PageIndicator.qml +++ b/src/imports/controls/fusion/PageIndicator.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.PageIndicator { id: control diff --git a/src/imports/controls/fusion/Pane.qml b/src/imports/controls/fusion/Pane.qml index 59c65cd9..24ed94a1 100644 --- a/src/imports/controls/fusion/Pane.qml +++ b/src/imports/controls/fusion/Pane.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Pane { id: control @@ -47,9 +47,6 @@ T.Pane { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 9 background: Rectangle { diff --git a/src/imports/controls/fusion/Popup.qml b/src/imports/controls/fusion/Popup.qml index 319e5b8a..1ac87a25 100644 --- a/src/imports/controls/fusion/Popup.qml +++ b/src/imports/controls/fusion/Popup.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Popup { id: control diff --git a/src/imports/controls/fusion/ProgressBar.qml b/src/imports/controls/fusion/ProgressBar.qml index 547d5f7c..97b11a3f 100644 --- a/src/imports/controls/fusion/ProgressBar.qml +++ b/src/imports/controls/fusion/ProgressBar.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ProgressBar { id: control diff --git a/src/imports/controls/fusion/RadioButton.qml b/src/imports/controls/fusion/RadioButton.qml index 612319b4..3ddd02b4 100644 --- a/src/imports/controls/fusion/RadioButton.qml +++ b/src/imports/controls/fusion/RadioButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.RadioButton { id: control diff --git a/src/imports/controls/fusion/RadioDelegate.qml b/src/imports/controls/fusion/RadioDelegate.qml index f5f57071..53bbe3e0 100644 --- a/src/imports/controls/fusion/RadioDelegate.qml +++ b/src/imports/controls/fusion/RadioDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.RadioDelegate { id: control diff --git a/src/imports/controls/fusion/RadioIndicator.qml b/src/imports/controls/fusion/RadioIndicator.qml index d3d40c11..790a5e24 100644 --- a/src/imports/controls/fusion/RadioIndicator.qml +++ b/src/imports/controls/fusion/RadioIndicator.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 Rectangle { id: indicator diff --git a/src/imports/controls/fusion/RangeSlider.qml b/src/imports/controls/fusion/RangeSlider.qml index 260c21cf..72ac9252 100644 --- a/src/imports/controls/fusion/RangeSlider.qml +++ b/src/imports/controls/fusion/RangeSlider.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.RangeSlider { id: control diff --git a/src/imports/controls/fusion/RoundButton.qml b/src/imports/controls/fusion/RoundButton.qml index 5d28b52c..121d9df5 100644 --- a/src/imports/controls/fusion/RoundButton.qml +++ b/src/imports/controls/fusion/RoundButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.RoundButton { id: control diff --git a/src/imports/controls/fusion/ScrollBar.qml b/src/imports/controls/fusion/ScrollBar.qml index 25881d2d..0e61f7cd 100644 --- a/src/imports/controls/fusion/ScrollBar.qml +++ b/src/imports/controls/fusion/ScrollBar.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ScrollBar { id: control diff --git a/src/imports/controls/fusion/ScrollIndicator.qml b/src/imports/controls/fusion/ScrollIndicator.qml index 7d6372a3..c3e8d575 100644 --- a/src/imports/controls/fusion/ScrollIndicator.qml +++ b/src/imports/controls/fusion/ScrollIndicator.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ScrollIndicator { id: control diff --git a/src/imports/controls/fusion/ScrollView.qml b/src/imports/controls/fusion/ScrollView.qml index 5cbd170a..728888c3 100644 --- a/src/imports/controls/fusion/ScrollView.qml +++ b/src/imports/controls/fusion/ScrollView.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ScrollView { id: control diff --git a/src/imports/controls/fusion/Slider.qml b/src/imports/controls/fusion/Slider.qml index a4d28fe5..7cfe68e4 100644 --- a/src/imports/controls/fusion/Slider.qml +++ b/src/imports/controls/fusion/Slider.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Slider { id: control diff --git a/src/imports/controls/fusion/SliderGroove.qml b/src/imports/controls/fusion/SliderGroove.qml index cd90bd54..678ac8c2 100644 --- a/src/imports/controls/fusion/SliderGroove.qml +++ b/src/imports/controls/fusion/SliderGroove.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 Rectangle { id: groove diff --git a/src/imports/controls/fusion/SliderHandle.qml b/src/imports/controls/fusion/SliderHandle.qml index 5ea2dd03..9bfa45a1 100644 --- a/src/imports/controls/fusion/SliderHandle.qml +++ b/src/imports/controls/fusion/SliderHandle.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 Rectangle { id: handle diff --git a/src/imports/controls/fusion/SpinBox.qml b/src/imports/controls/fusion/SpinBox.qml index 9d975fa8..c773ebf8 100644 --- a/src/imports/controls/fusion/SpinBox.qml +++ b/src/imports/controls/fusion/SpinBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.SpinBox { id: control diff --git a/src/imports/controls/fusion/SwipeDelegate.qml b/src/imports/controls/fusion/SwipeDelegate.qml index 0704f5b3..047cf976 100644 --- a/src/imports/controls/fusion/SwipeDelegate.qml +++ b/src/imports/controls/fusion/SwipeDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.SwipeDelegate { id: control diff --git a/src/imports/controls/fusion/Switch.qml b/src/imports/controls/fusion/Switch.qml index 0f5d484b..0d104604 100644 --- a/src/imports/controls/fusion/Switch.qml +++ b/src/imports/controls/fusion/Switch.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Switch { id: control diff --git a/src/imports/controls/fusion/SwitchDelegate.qml b/src/imports/controls/fusion/SwitchDelegate.qml index 4a09ba25..23b64147 100644 --- a/src/imports/controls/fusion/SwitchDelegate.qml +++ b/src/imports/controls/fusion/SwitchDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.SwitchDelegate { id: control diff --git a/src/imports/controls/fusion/SwitchIndicator.qml b/src/imports/controls/fusion/SwitchIndicator.qml index 22430dc3..7948a794 100644 --- a/src/imports/controls/fusion/SwitchIndicator.qml +++ b/src/imports/controls/fusion/SwitchIndicator.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 Rectangle { id: indicator diff --git a/src/imports/controls/fusion/TabBar.qml b/src/imports/controls/fusion/TabBar.qml index d6f3194b..fa21fb66 100644 --- a/src/imports/controls/fusion/TabBar.qml +++ b/src/imports/controls/fusion/TabBar.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.TabBar { id: control diff --git a/src/imports/controls/fusion/TabButton.qml b/src/imports/controls/fusion/TabButton.qml index bdcee759..7f378d14 100644 --- a/src/imports/controls/fusion/TabButton.qml +++ b/src/imports/controls/fusion/TabButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.TabButton { id: control @@ -51,8 +51,7 @@ T.TabButton { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 2 - leftPadding: 4 - rightPadding: 4 + horizontalPadding: 4 spacing: 6 icon.width: 16 diff --git a/src/imports/controls/fusion/TextArea.qml b/src/imports/controls/fusion/TextArea.qml index 36d9db04..573353dc 100644 --- a/src/imports/controls/fusion/TextArea.qml +++ b/src/imports/controls/fusion/TextArea.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.TextArea { id: control @@ -57,6 +57,7 @@ T.TextArea { color: control.palette.text selectionColor: control.palette.highlight selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) PlaceholderText { id: placeholder @@ -65,10 +66,9 @@ T.TextArea { width: control.width - (control.leftPadding + control.rightPadding) height: control.height - (control.topPadding + control.bottomPadding) - opacity: 0.5 text: control.placeholderText font: control.font - color: control.color + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) elide: Text.ElideRight diff --git a/src/imports/controls/fusion/TextField.qml b/src/imports/controls/fusion/TextField.qml index 2ea5c967..8c5fa634 100644 --- a/src/imports/controls/fusion/TextField.qml +++ b/src/imports/controls/fusion/TextField.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.TextField { id: control @@ -56,6 +56,7 @@ T.TextField { color: control.palette.text selectionColor: control.palette.highlight selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) verticalAlignment: TextInput.AlignVCenter PlaceholderText { @@ -65,10 +66,9 @@ T.TextField { width: control.width - (control.leftPadding + control.rightPadding) height: control.height - (control.topPadding + control.bottomPadding) - opacity: 0.5 text: control.placeholderText font: control.font - color: control.color + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) elide: Text.ElideRight diff --git a/src/imports/controls/fusion/ToolBar.qml b/src/imports/controls/fusion/ToolBar.qml index ab272517..b7f685ad 100644 --- a/src/imports/controls/fusion/ToolBar.qml +++ b/src/imports/controls/fusion/ToolBar.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ToolBar { id: control @@ -47,11 +47,7 @@ T.ToolBar { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - - leftPadding: 6 - rightPadding: 6 + horizontalPadding: 6 topPadding: control.position === T.ToolBar.Footer ? 1 : 0 bottomPadding: control.position === T.ToolBar.Header ? 1 : 0 diff --git a/src/imports/controls/fusion/ToolButton.qml b/src/imports/controls/fusion/ToolButton.qml index dc3c9663..20b4e642 100644 --- a/src/imports/controls/fusion/ToolButton.qml +++ b/src/imports/controls/fusion/ToolButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ToolButton { id: control diff --git a/src/imports/controls/fusion/ToolSeparator.qml b/src/imports/controls/fusion/ToolSeparator.qml index fd10dd72..b218604f 100644 --- a/src/imports/controls/fusion/ToolSeparator.qml +++ b/src/imports/controls/fusion/ToolSeparator.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ToolSeparator { id: control @@ -48,8 +48,7 @@ T.ToolSeparator { implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) padding: vertical ? 6 : 2 - topPadding: vertical ? 2 : 6 - bottomPadding: vertical ? 2 : 6 + verticalPadding: vertical ? 2 : 6 contentItem: Rectangle { implicitWidth: vertical ? 2 : 8 diff --git a/src/imports/controls/fusion/ToolTip.qml b/src/imports/controls/fusion/ToolTip.qml index 2b404a5e..59f64899 100644 --- a/src/imports/controls/fusion/ToolTip.qml +++ b/src/imports/controls/fusion/ToolTip.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.ToolTip { id: control diff --git a/src/imports/controls/fusion/Tumbler.qml b/src/imports/controls/fusion/Tumbler.qml index b66e4f2d..e6f2381f 100644 --- a/src/imports/controls/fusion/Tumbler.qml +++ b/src/imports/controls/fusion/Tumbler.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Fusion 2.4 -import QtQuick.Controls.Fusion.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Fusion 2.5 +import QtQuick.Controls.Fusion.impl 2.5 T.Tumbler { id: control diff --git a/src/imports/controls/fusion/fusion.pro b/src/imports/controls/fusion/fusion.pro index 2934778b..705157b7 100644 --- a/src/imports/controls/fusion/fusion.pro +++ b/src/imports/controls/fusion/fusion.pro @@ -1,6 +1,6 @@ TARGET = qtquickcontrols2fusionstyleplugin TARGETPATH = QtQuick/Controls.2/Fusion -IMPORT_VERSION = 2.4 +IMPORT_VERSION = 2.5 QT += qml quick QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private diff --git a/src/imports/controls/fusion/qmldir b/src/imports/controls/fusion/qmldir index 6857b398..b584adc8 100644 --- a/src/imports/controls/fusion/qmldir +++ b/src/imports/controls/fusion/qmldir @@ -1,4 +1,4 @@ module QtQuick.Controls.Fusion plugin qtquickcontrols2fusionstyleplugin classname QtQuickControls2FusionStylePlugin -depends QtQuick.Controls 2.4 +depends QtQuick.Controls 2.5 diff --git a/src/imports/controls/fusion/qquickfusiontheme.cpp b/src/imports/controls/fusion/qquickfusiontheme.cpp index 31494efb..78465b6b 100644 --- a/src/imports/controls/fusion/qquickfusiontheme.cpp +++ b/src/imports/controls/fusion/qquickfusiontheme.cpp @@ -39,7 +39,6 @@ QT_BEGIN_NAMESPACE QQuickFusionTheme::QQuickFusionTheme() - : QQuickTheme(QStringLiteral("Fusion")) { } diff --git a/src/imports/controls/fusion/qquickfusiontheme_p.h b/src/imports/controls/fusion/qquickfusiontheme_p.h index 5dcfcf61..0cd77f77 100644 --- a/src/imports/controls/fusion/qquickfusiontheme_p.h +++ b/src/imports/controls/fusion/qquickfusiontheme_p.h @@ -50,7 +50,7 @@ #include <QtCore/qvariant.h> #include <QtGui/qpalette.h> -#include <QtQuickControls2/private/qquicktheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE diff --git a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp index 542f088c..5bb1d062 100644 --- a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp +++ b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp @@ -71,7 +71,7 @@ public: void registerTypes(const char *uri) override; QString name() const override; - QQuickProxyTheme *createTheme() const override; + QQuickTheme *createTheme() const override; }; QtQuickControls2FusionStylePlugin::QtQuickControls2FusionStylePlugin(QObject *parent) : QQuickStylePlugin(parent) @@ -103,10 +103,10 @@ void QtQuickControls2FusionStylePlugin::registerTypes(const char *uri) QString QtQuickControls2FusionStylePlugin::name() const { - return QStringLiteral("fusion"); + return QStringLiteral("Fusion"); } -QQuickProxyTheme *QtQuickControls2FusionStylePlugin::createTheme() const +QQuickTheme *QtQuickControls2FusionStylePlugin::createTheme() const { return new QQuickFusionTheme; } diff --git a/src/imports/controls/imagine/ApplicationWindow.qml b/src/imports/controls/imagine/ApplicationWindow.qml index 8600e8d6..00922f63 100644 --- a/src/imports/controls/imagine/ApplicationWindow.qml +++ b/src/imports/controls/imagine/ApplicationWindow.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.2 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ApplicationWindow { id: window diff --git a/src/imports/controls/imagine/BusyIndicator.qml b/src/imports/controls/imagine/BusyIndicator.qml index a9a5ac40..e532bb18 100644 --- a/src/imports/controls/imagine/BusyIndicator.qml +++ b/src/imports/controls/imagine/BusyIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.BusyIndicator { id: control diff --git a/src/imports/controls/imagine/Button.qml b/src/imports/controls/imagine/Button.qml index 7c8ab584..a1c0c15f 100644 --- a/src/imports/controls/imagine/Button.qml +++ b/src/imports/controls/imagine/Button.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Button { id: control diff --git a/src/imports/controls/imagine/CheckBox.qml b/src/imports/controls/imagine/CheckBox.qml index 8c5cd918..f8a1841b 100644 --- a/src/imports/controls/imagine/CheckBox.qml +++ b/src/imports/controls/imagine/CheckBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.CheckBox { id: control diff --git a/src/imports/controls/imagine/CheckDelegate.qml b/src/imports/controls/imagine/CheckDelegate.qml index 76cd89c4..28782013 100644 --- a/src/imports/controls/imagine/CheckDelegate.qml +++ b/src/imports/controls/imagine/CheckDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.CheckDelegate { id: control diff --git a/src/imports/controls/imagine/ComboBox.qml b/src/imports/controls/imagine/ComboBox.qml index fa22ab90..604be993 100644 --- a/src/imports/controls/imagine/ComboBox.qml +++ b/src/imports/controls/imagine/ComboBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ComboBox { id: control diff --git a/src/imports/controls/imagine/DelayButton.qml b/src/imports/controls/imagine/DelayButton.qml index f0a2c568..fc604c5b 100644 --- a/src/imports/controls/imagine/DelayButton.qml +++ b/src/imports/controls/imagine/DelayButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 import QtGraphicalEffects 1.0 T.DelayButton { diff --git a/src/imports/controls/imagine/Dial.qml b/src/imports/controls/imagine/Dial.qml index e9652249..726fbef2 100644 --- a/src/imports/controls/imagine/Dial.qml +++ b/src/imports/controls/imagine/Dial.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Dial { id: control diff --git a/src/imports/controls/imagine/Dialog.qml b/src/imports/controls/imagine/Dialog.qml index 67215ec5..241d426f 100644 --- a/src/imports/controls/imagine/Dialog.qml +++ b/src/imports/controls/imagine/Dialog.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Dialog { id: control diff --git a/src/imports/controls/imagine/DialogButtonBox.qml b/src/imports/controls/imagine/DialogButtonBox.qml index 69211ed9..eb756548 100644 --- a/src/imports/controls/imagine/DialogButtonBox.qml +++ b/src/imports/controls/imagine/DialogButtonBox.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.DialogButtonBox { id: control diff --git a/src/imports/controls/imagine/Drawer.qml b/src/imports/controls/imagine/Drawer.qml index d4bf5a7c..f653375b 100644 --- a/src/imports/controls/imagine/Drawer.qml +++ b/src/imports/controls/imagine/Drawer.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Drawer { id: control diff --git a/src/imports/controls/imagine/Frame.qml b/src/imports/controls/imagine/Frame.qml index 4c9b87d3..a149ae24 100644 --- a/src/imports/controls/imagine/Frame.qml +++ b/src/imports/controls/imagine/Frame.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Frame { id: control @@ -45,9 +45,6 @@ T.Frame { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - topPadding: background ? background.topPadding : 0 leftPadding: background ? background.leftPadding : 0 rightPadding: background ? background.rightPadding : 0 diff --git a/src/imports/controls/imagine/GroupBox.qml b/src/imports/controls/imagine/GroupBox.qml index b2868cec..c16f90e1 100644 --- a/src/imports/controls/imagine/GroupBox.qml +++ b/src/imports/controls/imagine/GroupBox.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.GroupBox { id: control @@ -48,9 +48,6 @@ T.GroupBox { contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - topPadding: (background ? background.topPadding : 0) + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) leftPadding: background ? background.leftPadding : 0 rightPadding: background ? background.rightPadding : 0 diff --git a/src/imports/controls/imagine/ItemDelegate.qml b/src/imports/controls/imagine/ItemDelegate.qml index 6d1d7bbe..759a68db 100644 --- a/src/imports/controls/imagine/ItemDelegate.qml +++ b/src/imports/controls/imagine/ItemDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ItemDelegate { id: control diff --git a/src/imports/controls/imagine/Label.qml b/src/imports/controls/imagine/Label.qml index c73954b2..84e2a914 100644 --- a/src/imports/controls/imagine/Label.qml +++ b/src/imports/controls/imagine/Label.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Label { id: control diff --git a/src/imports/controls/imagine/Menu.qml b/src/imports/controls/imagine/Menu.qml index 83953d05..1846fe90 100644 --- a/src/imports/controls/imagine/Menu.qml +++ b/src/imports/controls/imagine/Menu.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Menu { id: control diff --git a/src/imports/controls/imagine/MenuItem.qml b/src/imports/controls/imagine/MenuItem.qml index 80d6f2cd..d55497a3 100644 --- a/src/imports/controls/imagine/MenuItem.qml +++ b/src/imports/controls/imagine/MenuItem.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.MenuItem { id: control diff --git a/src/imports/controls/imagine/MenuSeparator.qml b/src/imports/controls/imagine/MenuSeparator.qml index a14fe9a6..42577af4 100644 --- a/src/imports/controls/imagine/MenuSeparator.qml +++ b/src/imports/controls/imagine/MenuSeparator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.MenuSeparator { id: control diff --git a/src/imports/controls/imagine/Page.qml b/src/imports/controls/imagine/Page.qml index 72f54830..8dcd6dfc 100644 --- a/src/imports/controls/imagine/Page.qml +++ b/src/imports/controls/imagine/Page.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Page { id: control @@ -51,9 +51,6 @@ T.Page { + (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0)) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - topPadding: background ? background.topPadding : 0 leftPadding: background ? background.leftPadding : 0 rightPadding: background ? background.rightPadding : 0 diff --git a/src/imports/controls/imagine/PageIndicator.qml b/src/imports/controls/imagine/PageIndicator.qml index 156033e2..2234e18c 100644 --- a/src/imports/controls/imagine/PageIndicator.qml +++ b/src/imports/controls/imagine/PageIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.PageIndicator { id: control diff --git a/src/imports/controls/imagine/Pane.qml b/src/imports/controls/imagine/Pane.qml index a1899149..4061bd78 100644 --- a/src/imports/controls/imagine/Pane.qml +++ b/src/imports/controls/imagine/Pane.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Pane { id: control @@ -45,9 +45,6 @@ T.Pane { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - topPadding: background ? background.topPadding : 0 leftPadding: background ? background.leftPadding : 0 rightPadding: background ? background.rightPadding : 0 diff --git a/src/imports/controls/imagine/Popup.qml b/src/imports/controls/imagine/Popup.qml index a111df3a..089bc158 100644 --- a/src/imports/controls/imagine/Popup.qml +++ b/src/imports/controls/imagine/Popup.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Popup { id: control diff --git a/src/imports/controls/imagine/ProgressBar.qml b/src/imports/controls/imagine/ProgressBar.qml index 7fd0ce1b..2d207efb 100644 --- a/src/imports/controls/imagine/ProgressBar.qml +++ b/src/imports/controls/imagine/ProgressBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 import QtGraphicalEffects 1.0 T.ProgressBar { diff --git a/src/imports/controls/imagine/RadioButton.qml b/src/imports/controls/imagine/RadioButton.qml index 57bdedaa..59e2729a 100644 --- a/src/imports/controls/imagine/RadioButton.qml +++ b/src/imports/controls/imagine/RadioButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.RadioButton { id: control diff --git a/src/imports/controls/imagine/RadioDelegate.qml b/src/imports/controls/imagine/RadioDelegate.qml index e7e37b0b..42b08b81 100644 --- a/src/imports/controls/imagine/RadioDelegate.qml +++ b/src/imports/controls/imagine/RadioDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.RadioDelegate { id: control diff --git a/src/imports/controls/imagine/RangeSlider.qml b/src/imports/controls/imagine/RangeSlider.qml index 5c7ee70e..45390595 100644 --- a/src/imports/controls/imagine/RangeSlider.qml +++ b/src/imports/controls/imagine/RangeSlider.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.RangeSlider { id: control diff --git a/src/imports/controls/imagine/RoundButton.qml b/src/imports/controls/imagine/RoundButton.qml index b9f4ae06..8ae96620 100644 --- a/src/imports/controls/imagine/RoundButton.qml +++ b/src/imports/controls/imagine/RoundButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.RoundButton { id: control diff --git a/src/imports/controls/imagine/ScrollBar.qml b/src/imports/controls/imagine/ScrollBar.qml index 49c8d1f0..2581654c 100644 --- a/src/imports/controls/imagine/ScrollBar.qml +++ b/src/imports/controls/imagine/ScrollBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ScrollBar { id: control diff --git a/src/imports/controls/imagine/ScrollIndicator.qml b/src/imports/controls/imagine/ScrollIndicator.qml index a2d0e94f..45eb139b 100644 --- a/src/imports/controls/imagine/ScrollIndicator.qml +++ b/src/imports/controls/imagine/ScrollIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ScrollIndicator { id: control diff --git a/src/imports/controls/imagine/ScrollView.qml b/src/imports/controls/imagine/ScrollView.qml index 9ab64881..f7b30b6b 100644 --- a/src/imports/controls/imagine/ScrollView.qml +++ b/src/imports/controls/imagine/ScrollView.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ScrollView { id: control diff --git a/src/imports/controls/imagine/Slider.qml b/src/imports/controls/imagine/Slider.qml index a206c03b..8a82ec3e 100644 --- a/src/imports/controls/imagine/Slider.qml +++ b/src/imports/controls/imagine/Slider.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Slider { id: control diff --git a/src/imports/controls/imagine/SpinBox.qml b/src/imports/controls/imagine/SpinBox.qml index 1ef862f5..4978402a 100644 --- a/src/imports/controls/imagine/SpinBox.qml +++ b/src/imports/controls/imagine/SpinBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.SpinBox { id: control diff --git a/src/imports/controls/imagine/StackView.qml b/src/imports/controls/imagine/StackView.qml index 8d749519..ffdf4f23 100644 --- a/src/imports/controls/imagine/StackView.qml +++ b/src/imports/controls/imagine/StackView.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.StackView { id: control diff --git a/src/imports/controls/imagine/SwipeDelegate.qml b/src/imports/controls/imagine/SwipeDelegate.qml index 23edfc58..cabd9f2e 100644 --- a/src/imports/controls/imagine/SwipeDelegate.qml +++ b/src/imports/controls/imagine/SwipeDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.SwipeDelegate { id: control diff --git a/src/imports/controls/imagine/SwipeView.qml b/src/imports/controls/imagine/SwipeView.qml index f997be0d..6f7f2ada 100644 --- a/src/imports/controls/imagine/SwipeView.qml +++ b/src/imports/controls/imagine/SwipeView.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.SwipeView { id: control diff --git a/src/imports/controls/imagine/Switch.qml b/src/imports/controls/imagine/Switch.qml index 085d6879..38e49117 100644 --- a/src/imports/controls/imagine/Switch.qml +++ b/src/imports/controls/imagine/Switch.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Switch { id: control diff --git a/src/imports/controls/imagine/SwitchDelegate.qml b/src/imports/controls/imagine/SwitchDelegate.qml index b53cf321..4b6f6319 100644 --- a/src/imports/controls/imagine/SwitchDelegate.qml +++ b/src/imports/controls/imagine/SwitchDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.SwitchDelegate { id: control diff --git a/src/imports/controls/imagine/TabBar.qml b/src/imports/controls/imagine/TabBar.qml index be143bf1..1e7a2e58 100644 --- a/src/imports/controls/imagine/TabBar.qml +++ b/src/imports/controls/imagine/TabBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.TabBar { id: control diff --git a/src/imports/controls/imagine/TabButton.qml b/src/imports/controls/imagine/TabButton.qml index d4098c9e..0076bd83 100644 --- a/src/imports/controls/imagine/TabButton.qml +++ b/src/imports/controls/imagine/TabButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.TabButton { id: control diff --git a/src/imports/controls/imagine/TextArea.qml b/src/imports/controls/imagine/TextArea.qml index 9867a0bd..d61565b8 100644 --- a/src/imports/controls/imagine/TextArea.qml +++ b/src/imports/controls/imagine/TextArea.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.TextArea { id: control @@ -60,6 +60,7 @@ T.TextArea { selectionColor: control.palette.highlight selectedTextColor: control.palette.highlightedText verticalAlignment: Qt.AlignVCenter + placeholderTextColor: Color.transparent(control.color, 0.5) PlaceholderText { id: placeholder @@ -70,11 +71,10 @@ T.TextArea { text: control.placeholderText font: control.font - color: control.color + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) elide: Text.ElideRight - opacity: 0.5 } background: NinePatchImage { diff --git a/src/imports/controls/imagine/TextField.qml b/src/imports/controls/imagine/TextField.qml index 17827b95..5c8347ad 100644 --- a/src/imports/controls/imagine/TextField.qml +++ b/src/imports/controls/imagine/TextField.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.TextField { id: control @@ -59,6 +59,7 @@ T.TextField { color: control.palette.text selectionColor: control.palette.highlight selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) verticalAlignment: Qt.AlignVCenter PlaceholderText { @@ -70,11 +71,10 @@ T.TextField { text: control.placeholderText font: control.font - color: control.color + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) elide: Text.ElideRight - opacity: 0.5 } background: NinePatchImage { diff --git a/src/imports/controls/imagine/ToolBar.qml b/src/imports/controls/imagine/ToolBar.qml index 289566ec..a391bc9b 100644 --- a/src/imports/controls/imagine/ToolBar.qml +++ b/src/imports/controls/imagine/ToolBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ToolBar { id: control @@ -45,9 +45,6 @@ T.ToolBar { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - topPadding: background ? background.topPadding : 0 leftPadding: background ? background.leftPadding : 0 rightPadding: background ? background.rightPadding : 0 diff --git a/src/imports/controls/imagine/ToolButton.qml b/src/imports/controls/imagine/ToolButton.qml index 63260ff5..0bbd523c 100644 --- a/src/imports/controls/imagine/ToolButton.qml +++ b/src/imports/controls/imagine/ToolButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ToolButton { id: control diff --git a/src/imports/controls/imagine/ToolSeparator.qml b/src/imports/controls/imagine/ToolSeparator.qml index 88b645cb..f61b0e49 100644 --- a/src/imports/controls/imagine/ToolSeparator.qml +++ b/src/imports/controls/imagine/ToolSeparator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ToolSeparator { id: control diff --git a/src/imports/controls/imagine/ToolTip.qml b/src/imports/controls/imagine/ToolTip.qml index 81a5e8aa..bd82b5a7 100644 --- a/src/imports/controls/imagine/ToolTip.qml +++ b/src/imports/controls/imagine/ToolTip.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.ToolTip { id: control diff --git a/src/imports/controls/imagine/Tumbler.qml b/src/imports/controls/imagine/Tumbler.qml index 7beb39c5..8c1ebec2 100644 --- a/src/imports/controls/imagine/Tumbler.qml +++ b/src/imports/controls/imagine/Tumbler.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Imagine 2.4 -import QtQuick.Controls.Imagine.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Imagine 2.5 +import QtQuick.Controls.Imagine.impl 2.5 T.Tumbler { id: control diff --git a/src/imports/controls/imagine/imagine.pro b/src/imports/controls/imagine/imagine.pro index 8e84c115..7322e27a 100644 --- a/src/imports/controls/imagine/imagine.pro +++ b/src/imports/controls/imagine/imagine.pro @@ -1,6 +1,6 @@ TARGET = qtquickcontrols2imaginestyleplugin TARGETPATH = QtQuick/Controls.2/Imagine -IMPORT_VERSION = 2.4 +IMPORT_VERSION = 2.5 QT += qml quick QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private diff --git a/src/imports/controls/imagine/qmldir b/src/imports/controls/imagine/qmldir index 48fd3bdb..7b4b3ea0 100644 --- a/src/imports/controls/imagine/qmldir +++ b/src/imports/controls/imagine/qmldir @@ -1,5 +1,5 @@ module QtQuick.Controls.Imagine plugin qtquickcontrols2imaginestyleplugin classname QtQuickControls2ImagineStylePlugin -depends QtQuick.Controls 2.4 +depends QtQuick.Controls 2.5 depends QtGraphicalEffects 1.0 diff --git a/src/imports/controls/imagine/qquickimaginetheme.cpp b/src/imports/controls/imagine/qquickimaginetheme.cpp index 5505e7ce..57646326 100644 --- a/src/imports/controls/imagine/qquickimaginetheme.cpp +++ b/src/imports/controls/imagine/qquickimaginetheme.cpp @@ -41,11 +41,17 @@ QT_BEGIN_NAMESPACE QQuickImagineTheme::QQuickImagineTheme() - : QQuickTheme(QStringLiteral("Imagine")) +{ +} + +void QQuickImagineTheme::resolveFonts(const QFont &defaultFont) { systemFont.setFamily(QLatin1String("Open Sans")); - systemFont = resolveFont(systemFont); + systemFont = defaultFont.resolve(systemFont); +} +void QQuickImagineTheme::resolvePalettes(const QPalette &defaultPalette) +{ const QColor accentColor = QColor::fromRgb(0x4fc1e9); const QColor windowTextColor = QColor::fromRgb(0x434a54); const QColor disabledWindowTextColor = QColor::fromRgb(0xccd1d9); @@ -59,16 +65,16 @@ QQuickImagineTheme::QQuickImagineTheme() systemPalette.setColor(QPalette::WindowText, windowTextColor); systemPalette.setColor(QPalette::Disabled, QPalette::Text, disabledWindowTextColor); systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, disabledWindowTextColor); - systemPalette = resolvePalette(systemPalette); + systemPalette = defaultPalette.resolve(systemPalette); } -const QFont *QQuickImagineTheme::font(QPlatformTheme::Font type) const +const QFont *QQuickImagineTheme::font(Font type) const { Q_UNUSED(type); return &systemFont; } -const QPalette *QQuickImagineTheme::palette(QPlatformTheme::Palette type) const +const QPalette *QQuickImagineTheme::palette(Palette type) const { Q_UNUSED(type); return &systemPalette; diff --git a/src/imports/controls/imagine/qquickimaginetheme_p.h b/src/imports/controls/imagine/qquickimaginetheme_p.h index ea3a1cbd..3a388a86 100644 --- a/src/imports/controls/imagine/qquickimaginetheme_p.h +++ b/src/imports/controls/imagine/qquickimaginetheme_p.h @@ -48,7 +48,7 @@ // We mean it. // -#include <QtQuickControls2/private/qquicktheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE @@ -60,6 +60,10 @@ public: const QFont *font(Font type = SystemFont) const override; const QPalette *palette(Palette type = SystemPalette) const override; +protected: + void resolveFonts(const QFont &defaultFont) override; + void resolvePalettes(const QPalette &defaultPalette) override; + private: QFont systemFont; QPalette systemPalette; diff --git a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp index 2a613f1c..292b8719 100644 --- a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp +++ b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp @@ -66,7 +66,7 @@ public: void registerTypes(const char *uri) override; QString name() const override; - QQuickProxyTheme *createTheme() const override; + QQuickTheme *createTheme() const override; }; QtQuickControls2ImagineStylePlugin::QtQuickControls2ImagineStylePlugin(QObject *parent) : QQuickStylePlugin(parent) @@ -90,10 +90,10 @@ void QtQuickControls2ImagineStylePlugin::registerTypes(const char *uri) QString QtQuickControls2ImagineStylePlugin::name() const { - return QStringLiteral("imagine"); + return QStringLiteral("Imagine"); } -QQuickProxyTheme *QtQuickControls2ImagineStylePlugin::createTheme() const +QQuickTheme *QtQuickControls2ImagineStylePlugin::createTheme() const { return new QQuickImagineTheme; } diff --git a/src/imports/controls/material/ApplicationWindow.qml b/src/imports/controls/material/ApplicationWindow.qml index c3d866ce..94aaeff3 100644 --- a/src/imports/controls/material/ApplicationWindow.qml +++ b/src/imports/controls/material/ApplicationWindow.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.ApplicationWindow { id: window diff --git a/src/imports/controls/material/BoxShadow.qml b/src/imports/controls/material/BoxShadow.qml index 3d352195..5004c7f6 100644 --- a/src/imports/controls/material/BoxShadow.qml +++ b/src/imports/controls/material/BoxShadow.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 /* A implementation of CSS's box-shadow, used by ElevationEffect for a Material Design diff --git a/src/imports/controls/material/BusyIndicator.qml b/src/imports/controls/material/BusyIndicator.qml index 5e53bdb9..349b3cb5 100644 --- a/src/imports/controls/material/BusyIndicator.qml +++ b/src/imports/controls/material/BusyIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.BusyIndicator { id: control @@ -48,8 +48,8 @@ T.BusyIndicator { padding: 6 contentItem: BusyIndicatorImpl { - implicitWidth: 48 - implicitHeight: 48 + implicitWidth: control.Material.buttonHeight + implicitHeight: control.Material.buttonHeight color: control.Material.accentColor running: control.running diff --git a/src/imports/controls/material/Button.qml b/src/imports/controls/material/Button.qml index 6401b2ad..2157a3a8 100644 --- a/src/imports/controls/material/Button.qml +++ b/src/imports/controls/material/Button.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Button { id: control @@ -52,8 +52,7 @@ T.Button { // external vertical padding is 6 (to increase touch area) padding: 12 - leftPadding: padding - 4 - rightPadding: padding - 4 + horizontalPadding: padding - 4 spacing: 6 icon.width: 24 @@ -82,7 +81,7 @@ T.Button { // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state background: Rectangle { implicitWidth: 64 - implicitHeight: 48 + implicitHeight: control.Material.buttonHeight // external vertical padding is 6 (to increase touch area) y: 6 diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml index 1f818e6e..56f2f221 100644 --- a/src/imports/controls/material/CheckBox.qml +++ b/src/imports/controls/material/CheckBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.CheckBox { id: control @@ -51,8 +51,7 @@ T.CheckBox { spacing: 8 padding: 8 - topPadding: padding + 7 - bottomPadding: padding + 7 + verticalPadding: padding + 7 indicator: CheckIndicator { x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 diff --git a/src/imports/controls/material/CheckDelegate.qml b/src/imports/controls/material/CheckDelegate.qml index 1d3ff61d..f349dfbc 100644 --- a/src/imports/controls/material/CheckDelegate.qml +++ b/src/imports/controls/material/CheckDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.CheckDelegate { id: control @@ -52,8 +52,7 @@ T.CheckDelegate { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 8 - bottomPadding: 8 + verticalPadding: 8 spacing: 16 icon.width: 24 @@ -82,7 +81,7 @@ T.CheckDelegate { } background: Rectangle { - implicitHeight: 48 + implicitHeight: control.Material.delegateHeight color: control.highlighted ? control.Material.listHighlightColor : "transparent" diff --git a/src/imports/controls/material/CheckIndicator.qml b/src/imports/controls/material/CheckIndicator.qml index 078b1637..bfeda537 100644 --- a/src/imports/controls/material/CheckIndicator.qml +++ b/src/imports/controls/material/CheckIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 Rectangle { id: indicatorItem diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml index 3dd3cf30..55a503d0 100644 --- a/src/imports/controls/material/ComboBox.qml +++ b/src/imports/controls/material/ComboBox.qml @@ -34,13 +34,13 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.ComboBox { id: control @@ -99,7 +99,7 @@ T.ComboBox { background: Rectangle { implicitWidth: 120 - implicitHeight: 48 + implicitHeight: control.Material.buttonHeight // external vertical padding is 6 (to increase touch area) y: 6 diff --git a/src/imports/controls/material/CursorDelegate.qml b/src/imports/controls/material/CursorDelegate.qml index 5b2140a7..ffb3b3dd 100644 --- a/src/imports/controls/material/CursorDelegate.qml +++ b/src/imports/controls/material/CursorDelegate.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 Rectangle { id: cursor diff --git a/src/imports/controls/material/DelayButton.qml b/src/imports/controls/material/DelayButton.qml index 4043949c..3fd97301 100644 --- a/src/imports/controls/material/DelayButton.qml +++ b/src/imports/controls/material/DelayButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.DelayButton { id: control @@ -52,8 +52,7 @@ T.DelayButton { // external vertical padding is 6 (to increase touch area) padding: 12 - leftPadding: padding - 4 - rightPadding: padding - 4 + verticalPadding: padding - 4 Material.elevation: control.down ? 8 : 2 @@ -75,7 +74,7 @@ T.DelayButton { // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state background: Rectangle { implicitWidth: 64 - implicitHeight: 48 + implicitHeight: control.Material.buttonHeight // external vertical padding is 6 (to increase touch area) y: 6 diff --git a/src/imports/controls/material/Dial.qml b/src/imports/controls/material/Dial.qml index 54469c92..f4d49175 100644 --- a/src/imports/controls/material/Dial.qml +++ b/src/imports/controls/material/Dial.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Dial { id: control diff --git a/src/imports/controls/material/Dialog.qml b/src/imports/controls/material/Dialog.qml index 5bbafc68..51d2c654 100644 --- a/src/imports/controls/material/Dialog.qml +++ b/src/imports/controls/material/Dialog.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Dialog { id: control diff --git a/src/imports/controls/material/DialogButtonBox.qml b/src/imports/controls/material/DialogButtonBox.qml index 35df6362..7c217f59 100644 --- a/src/imports/controls/material/DialogButtonBox.qml +++ b/src/imports/controls/material/DialogButtonBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.DialogButtonBox { id: control @@ -51,9 +51,9 @@ T.DialogButtonBox { spacing: 8 padding: 8 - topPadding: 2 - bottomPadding: 2 + verticalPadding: 2 alignment: Qt.AlignRight + buttonLayout: DialogButtonBox.AndroidLayout Material.foreground: Material.accent @@ -61,7 +61,7 @@ T.DialogButtonBox { contentItem: ListView { implicitWidth: contentWidth - implicitHeight: 48 + implicitHeight: control.Material.buttonHeight model: control.contentModel spacing: control.spacing @@ -71,7 +71,7 @@ T.DialogButtonBox { } background: PaddedRectangle { - implicitHeight: 52 + implicitHeight: control.Material.dialogButtonBoxHeight radius: 2 color: control.Material.dialogColor // Rounded corners should be only at the top or at the bottom diff --git a/src/imports/controls/material/Drawer.qml b/src/imports/controls/material/Drawer.qml index 827e0b21..1d9314b8 100644 --- a/src/imports/controls/material/Drawer.qml +++ b/src/imports/controls/material/Drawer.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Drawer { id: control diff --git a/src/imports/controls/material/ElevationEffect.qml b/src/imports/controls/material/ElevationEffect.qml index 71eccf4e..7e5d79aa 100644 --- a/src/imports/controls/material/ElevationEffect.qml +++ b/src/imports/controls/material/ElevationEffect.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 /* An effect for standard Material Design elevation shadows. Useful for using as \c layer.effect. diff --git a/src/imports/controls/material/Frame.qml b/src/imports/controls/material/Frame.qml index 51721c2c..95ea7c84 100644 --- a/src/imports/controls/material/Frame.qml +++ b/src/imports/controls/material/Frame.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Frame { id: control @@ -45,10 +45,8 @@ T.Frame { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 12 + verticalPadding: Material.frameVerticalPadding background: Rectangle { radius: 2 diff --git a/src/imports/controls/material/GroupBox.qml b/src/imports/controls/material/GroupBox.qml index 7ac30ec6..552bbb17 100644 --- a/src/imports/controls/material/GroupBox.qml +++ b/src/imports/controls/material/GroupBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.GroupBox { id: control @@ -47,12 +47,10 @@ T.GroupBox { contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - spacing: 6 padding: 12 - topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + topPadding: Material.frameVerticalPadding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + bottomPadding: Material.frameVerticalPadding label: Text { x: control.leftPadding diff --git a/src/imports/controls/material/ItemDelegate.qml b/src/imports/controls/material/ItemDelegate.qml index 3230ff26..d4425844 100644 --- a/src/imports/controls/material/ItemDelegate.qml +++ b/src/imports/controls/material/ItemDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.ItemDelegate { id: control @@ -52,8 +52,7 @@ T.ItemDelegate { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 8 - bottomPadding: 8 + verticalPadding: 8 spacing: 16 icon.width: 24 @@ -73,7 +72,7 @@ T.ItemDelegate { } background: Rectangle { - implicitHeight: 48 + implicitHeight: control.Material.delegateHeight color: control.highlighted ? control.Material.listHighlightColor : "transparent" diff --git a/src/imports/controls/material/Label.qml b/src/imports/controls/material/Label.qml index 26998a9e..49333e86 100644 --- a/src/imports/controls/material/Label.qml +++ b/src/imports/controls/material/Label.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.Label { id: control diff --git a/src/imports/controls/material/Menu.qml b/src/imports/controls/material/Menu.qml index 0f40380c..14006a91 100644 --- a/src/imports/controls/material/Menu.qml +++ b/src/imports/controls/material/Menu.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Menu { id: control @@ -51,8 +51,7 @@ T.Menu { contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding margins: 0 - topPadding: 8 - bottomPadding: 8 + verticalPadding: 8 transformOrigin: !cascade ? Item.Top : (mirrored ? Item.TopRight : Item.TopLeft) @@ -84,7 +83,7 @@ T.Menu { background: Rectangle { implicitWidth: 200 - implicitHeight: 48 + implicitHeight: control.Material.menuItemHeight radius: 3 color: control.Material.dialogColor diff --git a/src/imports/controls/material/MenuBar.qml b/src/imports/controls/material/MenuBar.qml index da12c9e9..c1ab9d1e 100644 --- a/src/imports/controls/material/MenuBar.qml +++ b/src/imports/controls/material/MenuBar.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.MenuBar { id: control diff --git a/src/imports/controls/material/MenuBarItem.qml b/src/imports/controls/material/MenuBarItem.qml index 3c99cc15..9cbbb2e9 100644 --- a/src/imports/controls/material/MenuBarItem.qml +++ b/src/imports/controls/material/MenuBarItem.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.MenuBarItem { id: control @@ -51,8 +51,7 @@ T.MenuBarItem { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 12 - bottomPadding: 12 + verticalPadding: 12 spacing: 16 icon.width: 24 diff --git a/src/imports/controls/material/MenuItem.qml b/src/imports/controls/material/MenuItem.qml index 13d4694c..4a26fa47 100644 --- a/src/imports/controls/material/MenuItem.qml +++ b/src/imports/controls/material/MenuItem.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.MenuItem { id: control @@ -52,8 +52,7 @@ T.MenuItem { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 12 - bottomPadding: 12 + verticalPadding: Material.menuItemVerticalPadding spacing: 16 icon.width: 24 @@ -96,7 +95,7 @@ T.MenuItem { background: Rectangle { implicitWidth: 200 - implicitHeight: 48 + implicitHeight: control.Material.menuItemHeight color: control.highlighted ? control.Material.listHighlightColor : "transparent" Ripple { diff --git a/src/imports/controls/material/MenuSeparator.qml b/src/imports/controls/material/MenuSeparator.qml index d2059d3a..c9ef35db 100644 --- a/src/imports/controls/material/MenuSeparator.qml +++ b/src/imports/controls/material/MenuSeparator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.MenuSeparator { id: control @@ -44,8 +44,7 @@ T.MenuSeparator { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) - topPadding: 8 - bottomPadding: 8 + verticalPadding: 8 contentItem: Rectangle { implicitWidth: 200 diff --git a/src/imports/controls/material/Page.qml b/src/imports/controls/material/Page.qml index 9993aa0f..71420ed1 100644 --- a/src/imports/controls/material/Page.qml +++ b/src/imports/controls/material/Page.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.Page { id: control @@ -50,9 +50,6 @@ T.Page { + (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0)) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - background: Rectangle { color: control.Material.backgroundColor } diff --git a/src/imports/controls/material/PageIndicator.qml b/src/imports/controls/material/PageIndicator.qml index 2ab9cd33..62444e1e 100644 --- a/src/imports/controls/material/PageIndicator.qml +++ b/src/imports/controls/material/PageIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.PageIndicator { id: control diff --git a/src/imports/controls/material/Pane.qml b/src/imports/controls/material/Pane.qml index 0e232a9d..6dfa13fb 100644 --- a/src/imports/controls/material/Pane.qml +++ b/src/imports/controls/material/Pane.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Pane { id: control @@ -45,9 +45,6 @@ T.Pane { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 12 background: Rectangle { diff --git a/src/imports/controls/material/Popup.qml b/src/imports/controls/material/Popup.qml index 0d255f7d..adc070a4 100644 --- a/src/imports/controls/material/Popup.qml +++ b/src/imports/controls/material/Popup.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Popup { id: control diff --git a/src/imports/controls/material/ProgressBar.qml b/src/imports/controls/material/ProgressBar.qml index 0f08c732..68b99111 100644 --- a/src/imports/controls/material/ProgressBar.qml +++ b/src/imports/controls/material/ProgressBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.ProgressBar { id: control diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml index 2a95f989..9cd48a2d 100644 --- a/src/imports/controls/material/RadioButton.qml +++ b/src/imports/controls/material/RadioButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.RadioButton { id: control @@ -51,8 +51,7 @@ T.RadioButton { spacing: 8 padding: 8 - topPadding: padding + 6 - bottomPadding: padding + 6 + verticalPadding: padding + 6 indicator: RadioIndicator { x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 diff --git a/src/imports/controls/material/RadioDelegate.qml b/src/imports/controls/material/RadioDelegate.qml index d498ee80..5aaa142e 100644 --- a/src/imports/controls/material/RadioDelegate.qml +++ b/src/imports/controls/material/RadioDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.RadioDelegate { id: control @@ -52,8 +52,7 @@ T.RadioDelegate { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 8 - bottomPadding: 8 + verticalPadding: 8 spacing: 16 icon.width: 24 @@ -82,7 +81,7 @@ T.RadioDelegate { } background: Rectangle { - implicitHeight: 48 + implicitHeight: control.Material.delegateHeight color: control.highlighted ? control.Material.listHighlightColor : "transparent" diff --git a/src/imports/controls/material/RadioIndicator.qml b/src/imports/controls/material/RadioIndicator.qml index 47505903..0ed632a6 100644 --- a/src/imports/controls/material/RadioIndicator.qml +++ b/src/imports/controls/material/RadioIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 Rectangle { implicitWidth: 20 diff --git a/src/imports/controls/material/RangeSlider.qml b/src/imports/controls/material/RangeSlider.qml index cbe21400..3bbf9807 100644 --- a/src/imports/controls/material/RangeSlider.qml +++ b/src/imports/controls/material/RangeSlider.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.RangeSlider { id: control diff --git a/src/imports/controls/material/RectangularGlow.qml b/src/imports/controls/material/RectangularGlow.qml index 35ca8b46..58e11b9f 100644 --- a/src/imports/controls/material/RectangularGlow.qml +++ b/src/imports/controls/material/RectangularGlow.qml @@ -34,7 +34,7 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 /* A cross-graphics API implementation of QtGraphicalEffects' RectangularGlow. diff --git a/src/imports/controls/material/RoundButton.qml b/src/imports/controls/material/RoundButton.qml index 92e6bc84..31ad6e5a 100644 --- a/src/imports/controls/material/RoundButton.qml +++ b/src/imports/controls/material/RoundButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.RoundButton { id: control @@ -79,8 +79,8 @@ T.RoundButton { // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state background: Rectangle { - implicitWidth: 48 - implicitHeight: 48 + implicitWidth: control.Material.buttonHeight + implicitHeight: control.Material.buttonHeight // external vertical padding is 6 (to increase touch area) x: 6 diff --git a/src/imports/controls/material/ScrollBar.qml b/src/imports/controls/material/ScrollBar.qml index 2ff925af..8abb622c 100644 --- a/src/imports/controls/material/ScrollBar.qml +++ b/src/imports/controls/material/ScrollBar.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.ScrollBar { id: control diff --git a/src/imports/controls/material/ScrollIndicator.qml b/src/imports/controls/material/ScrollIndicator.qml index 92727822..ecd264a0 100644 --- a/src/imports/controls/material/ScrollIndicator.qml +++ b/src/imports/controls/material/ScrollIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.ScrollIndicator { id: control diff --git a/src/imports/controls/material/Slider.qml b/src/imports/controls/material/Slider.qml index 1044354a..0a957102 100644 --- a/src/imports/controls/material/Slider.qml +++ b/src/imports/controls/material/Slider.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.Slider { id: control diff --git a/src/imports/controls/material/SliderHandle.qml b/src/imports/controls/material/SliderHandle.qml index 64879a46..2ebbcccd 100644 --- a/src/imports/controls/material/SliderHandle.qml +++ b/src/imports/controls/material/SliderHandle.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 Item { id: root diff --git a/src/imports/controls/material/SpinBox.qml b/src/imports/controls/material/SpinBox.qml index cf9196ac..9100f0b8 100644 --- a/src/imports/controls/material/SpinBox.qml +++ b/src/imports/controls/material/SpinBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.SpinBox { id: control @@ -83,8 +83,8 @@ T.SpinBox { up.indicator: Item { x: control.mirrored ? 0 : parent.width - width - implicitWidth: 48 - implicitHeight: 48 + implicitWidth: control.Material.buttonHeight + implicitHeight: control.Material.buttonHeight height: parent.height width: height @@ -117,8 +117,8 @@ T.SpinBox { down.indicator: Item { x: control.mirrored ? parent.width - width : 0 - implicitWidth: 48 - implicitHeight: 48 + implicitWidth: control.Material.buttonHeight + implicitHeight: control.Material.buttonHeight height: parent.height width: height @@ -144,7 +144,7 @@ T.SpinBox { background: Item { implicitWidth: 192 - implicitHeight: 48 + implicitHeight: control.Material.buttonHeight Rectangle { x: parent.width / 2 - width / 2 diff --git a/src/imports/controls/material/StackView.qml b/src/imports/controls/material/StackView.qml index 8b69121b..6f76e2e3 100644 --- a/src/imports/controls/material/StackView.qml +++ b/src/imports/controls/material/StackView.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.StackView { id: control diff --git a/src/imports/controls/material/SwipeDelegate.qml b/src/imports/controls/material/SwipeDelegate.qml index 1095ac68..dce336d0 100644 --- a/src/imports/controls/material/SwipeDelegate.qml +++ b/src/imports/controls/material/SwipeDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.SwipeDelegate { id: control @@ -52,8 +52,7 @@ T.SwipeDelegate { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 8 - bottomPadding: 8 + verticalPadding: 8 spacing: 16 icon.width: 24 @@ -75,7 +74,7 @@ T.SwipeDelegate { } background: Rectangle { - implicitHeight: 48 + implicitHeight: control.Material.delegateHeight color: control.Material.backgroundColor diff --git a/src/imports/controls/material/SwipeView.qml b/src/imports/controls/material/SwipeView.qml index eb753579..eedb36e3 100644 --- a/src/imports/controls/material/SwipeView.qml +++ b/src/imports/controls/material/SwipeView.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.SwipeView { id: control diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml index d44a9f2c..92b2cbf7 100644 --- a/src/imports/controls/material/Switch.qml +++ b/src/imports/controls/material/Switch.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 -import QtQuick.Templates 2.4 as T +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 +import QtQuick.Templates 2.5 as T T.Switch { id: control diff --git a/src/imports/controls/material/SwitchDelegate.qml b/src/imports/controls/material/SwitchDelegate.qml index 308e9772..a5483146 100644 --- a/src/imports/controls/material/SwitchDelegate.qml +++ b/src/imports/controls/material/SwitchDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.SwitchDelegate { id: control @@ -52,8 +52,7 @@ T.SwitchDelegate { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 16 - topPadding: 8 - bottomPadding: 8 + verticalPadding: Material.switchDelegateVerticalPadding spacing: 16 icon.width: 24 @@ -82,7 +81,7 @@ T.SwitchDelegate { } background: Rectangle { - implicitHeight: 48 + implicitHeight: control.Material.delegateHeight color: control.highlighted ? control.Material.listHighlightColor : "transparent" diff --git a/src/imports/controls/material/SwitchIndicator.qml b/src/imports/controls/material/SwitchIndicator.qml index 2c5fc33d..f7567059 100644 --- a/src/imports/controls/material/SwitchIndicator.qml +++ b/src/imports/controls/material/SwitchIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 Item { id: indicator diff --git a/src/imports/controls/material/TabBar.qml b/src/imports/controls/material/TabBar.qml index c9410dfc..bd9b8491 100644 --- a/src/imports/controls/material/TabBar.qml +++ b/src/imports/controls/material/TabBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.TabBar { id: control diff --git a/src/imports/controls/material/TabButton.qml b/src/imports/controls/material/TabButton.qml index 3134cca9..00fad423 100644 --- a/src/imports/controls/material/TabButton.qml +++ b/src/imports/controls/material/TabButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.TabButton { id: control @@ -69,7 +69,7 @@ T.TabButton { } background: Ripple { - implicitHeight: 48 + implicitHeight: control.Material.buttonHeight clip: true pressed: control.pressed diff --git a/src/imports/controls/material/TextArea.qml b/src/imports/controls/material/TextArea.qml index 2dc64570..7ba68017 100644 --- a/src/imports/controls/material/TextArea.qml +++ b/src/imports/controls/material/TextArea.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.TextArea { id: control @@ -57,7 +57,7 @@ T.TextArea { color: enabled ? Material.foreground : Material.hintTextColor selectionColor: Material.accentColor selectedTextColor: Material.primaryHighlightedTextColor - + placeholderTextColor: Material.hintTextColor cursorDelegate: CursorDelegate { } PlaceholderText { @@ -68,7 +68,7 @@ T.TextArea { height: control.height - (control.topPadding + control.bottomPadding) text: control.placeholderText font: control.font - color: control.Material.hintTextColor + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment elide: Text.ElideRight visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) diff --git a/src/imports/controls/material/TextField.qml b/src/imports/controls/material/TextField.qml index 6ce905af..62843774 100644 --- a/src/imports/controls/material/TextField.qml +++ b/src/imports/controls/material/TextField.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.TextField { id: control @@ -57,6 +57,7 @@ T.TextField { color: enabled ? Material.foreground : Material.hintTextColor selectionColor: Material.accentColor selectedTextColor: Material.primaryHighlightedTextColor + placeholderTextColor: Material.hintTextColor verticalAlignment: TextInput.AlignVCenter cursorDelegate: CursorDelegate { } @@ -69,7 +70,7 @@ T.TextField { height: control.height - (control.topPadding + control.bottomPadding) text: control.placeholderText font: control.font - color: control.Material.hintTextColor + color: control.placeholderTextColor verticalAlignment: control.verticalAlignment elide: Text.ElideRight visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) diff --git a/src/imports/controls/material/ToolBar.qml b/src/imports/controls/material/ToolBar.qml index 766856d0..be0d8dc7 100644 --- a/src/imports/controls/material/ToolBar.qml +++ b/src/imports/controls/material/ToolBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.ToolBar { id: control @@ -47,9 +47,6 @@ T.ToolBar { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - Material.foreground: Material.toolTextColor spacing: 16 diff --git a/src/imports/controls/material/ToolButton.qml b/src/imports/controls/material/ToolButton.qml index 86a9f5c0..f4b03fa5 100644 --- a/src/imports/controls/material/ToolButton.qml +++ b/src/imports/controls/material/ToolButton.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Material 2.4 -import QtQuick.Controls.Material.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Material 2.5 +import QtQuick.Controls.Material.impl 2.5 T.ToolButton { id: control @@ -70,8 +70,8 @@ T.ToolButton { } background: Ripple { - implicitWidth: 48 - implicitHeight: 48 + implicitWidth: control.Material.buttonHeight + implicitHeight: control.Material.buttonHeight readonly property bool square: control.contentItem.width <= control.contentItem.height diff --git a/src/imports/controls/material/ToolSeparator.qml b/src/imports/controls/material/ToolSeparator.qml index d6feeb85..a3837e71 100644 --- a/src/imports/controls/material/ToolSeparator.qml +++ b/src/imports/controls/material/ToolSeparator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.ToolSeparator { id: control @@ -44,10 +44,8 @@ T.ToolSeparator { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding) - leftPadding: vertical ? 12 : 5 - rightPadding: vertical ? 12 : 5 - topPadding: vertical ? 5 : 12 - bottomPadding: vertical ? 5 : 12 + horizontalPadding: vertical ? 12 : 5 + verticalPadding: vertical ? 5 : 12 contentItem: Rectangle { implicitWidth: vertical ? 1 : 38 diff --git a/src/imports/controls/material/ToolTip.qml b/src/imports/controls/material/ToolTip.qml index bb7a9d7c..098dc8e6 100644 --- a/src/imports/controls/material/ToolTip.qml +++ b/src/imports/controls/material/ToolTip.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.ToolTip { id: control @@ -51,8 +51,7 @@ T.ToolTip { margins: 12 padding: 8 - leftPadding: padding + 8 - rightPadding: padding + 8 + horizontalPadding: padding + 8 closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent @@ -76,7 +75,7 @@ T.ToolTip { } background: Rectangle { - implicitHeight: 32 + implicitHeight: control.Material.tooltipHeight color: control.Material.tooltipColor opacity: 0.9 radius: 2 diff --git a/src/imports/controls/material/Tumbler.qml b/src/imports/controls/material/Tumbler.qml index d5c42422..836d9456 100644 --- a/src/imports/controls/material/Tumbler.qml +++ b/src/imports/controls/material/Tumbler.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Material 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Material 2.5 T.Tumbler { id: control diff --git a/src/imports/controls/material/material.pro b/src/imports/controls/material/material.pro index 9e04a23d..c66cdb92 100644 --- a/src/imports/controls/material/material.pro +++ b/src/imports/controls/material/material.pro @@ -1,6 +1,6 @@ TARGET = qtquickcontrols2materialstyleplugin TARGETPATH = QtQuick/Controls.2/Material -IMPORT_VERSION = 2.4 +IMPORT_VERSION = 2.5 QT += qml quick QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private diff --git a/src/imports/controls/material/qmldir b/src/imports/controls/material/qmldir index d6ab0177..870a0382 100644 --- a/src/imports/controls/material/qmldir +++ b/src/imports/controls/material/qmldir @@ -1,4 +1,4 @@ module QtQuick.Controls.Material plugin qtquickcontrols2materialstyleplugin classname QtQuickControls2MaterialStylePlugin -depends QtQuick.Controls 2.4 +depends QtQuick.Controls 2.5 diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp index 08d88ec7..8d348026 100644 --- a/src/imports/controls/material/qquickmaterialstyle.cpp +++ b/src/imports/controls/material/qquickmaterialstyle.cpp @@ -387,6 +387,10 @@ static bool globalPrimaryCustom = false; static bool globalAccentCustom = false; static bool globalForegroundCustom = true; static bool globalBackgroundCustom = true; +// This is global because: +// 1) The theme needs access to it to determine font sizes. +// 2) There can only be one variant used for the whole application. +static QQuickMaterialStyle::Variant globalVariant = QQuickMaterialStyle::Normal; static const QRgb backgroundColorLight = 0xFFFAFAFA; static const QRgb backgroundColorDark = 0xFF303030; @@ -445,7 +449,7 @@ QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickAttachedObject m_background(globalBackground), m_elevation(0) { - init(); + QQuickAttachedObject::init(); } QQuickMaterialStyle *QQuickMaterialStyle::qmlAttachedProperties(QObject *object) @@ -1135,17 +1139,55 @@ QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const } } -void QQuickMaterialStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) +int QQuickMaterialStyle::buttonHeight() const { - Q_UNUSED(oldParent); - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent); - if (material) { - inheritPrimary(material->m_primary, material->m_customPrimary); - inheritAccent(material->m_accent, material->m_customAccent); - inheritForeground(material->m_foreground, material->m_customForeground, material->m_hasForeground); - inheritBackground(material->m_background, material->m_customBackground, material->m_hasBackground); - inheritTheme(material->theme()); - } + // https://material.io/guidelines/components/buttons.html#buttons-style + return globalVariant == Dense ? 44 : 48; +} + +int QQuickMaterialStyle::delegateHeight() const +{ + // https://material.io/guidelines/components/lists.html#lists-specs + return globalVariant == Dense ? 40 : 48; +} + +int QQuickMaterialStyle::dialogButtonBoxHeight() const +{ + return globalVariant == Dense ? 48 : 52; +} + +int QQuickMaterialStyle::frameVerticalPadding() const +{ + return globalVariant == Dense ? 8 : 12; +} + +int QQuickMaterialStyle::menuItemHeight() const +{ + // https://material.io/guidelines/components/menus.html#menus-simple-menus + return globalVariant == Dense ? 32 : 48; +} + +int QQuickMaterialStyle::menuItemVerticalPadding() const +{ + return globalVariant == Dense ? 8 : 12; +} + +int QQuickMaterialStyle::switchDelegateVerticalPadding() const +{ + // SwitchDelegate's indicator is much larger than the others due to the shadow, + // so we must reduce its padding to ensure its implicitHeight is 40 when dense. + return globalVariant == Dense ? 4 : 8; +} + +int QQuickMaterialStyle::tooltipHeight() const +{ + // https://material.io/guidelines/components/tooltips.html + return globalVariant == Dense ? 22 : 32; +} + +QQuickMaterialStyle::Variant QQuickMaterialStyle::variant() +{ + return globalVariant; } template <typename Enum> @@ -1165,88 +1207,101 @@ static QByteArray resolveSetting(const QByteArray &env, const QSharedPointer<QSe return value; } -void QQuickMaterialStyle::init() +void QQuickMaterialStyle::initGlobals() { - static bool globalsInitialized = false; - if (!globalsInitialized) { - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Material")); + QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Material")); - bool ok = false; - QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_THEME", settings, QStringLiteral("Theme")); - Theme themeEnum = toEnumValue<Theme>(themeValue, &ok); - if (ok) - globalTheme = m_theme = effectiveTheme(themeEnum); - else if (!themeValue.isEmpty()) - qWarning().nospace().noquote() << "Material: unknown theme value: " << themeValue; + bool ok = false; + QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_THEME", settings, QStringLiteral("Theme")); + Theme themeEnum = toEnumValue<Theme>(themeValue, &ok); + if (ok) + globalTheme = effectiveTheme(themeEnum); + else if (!themeValue.isEmpty()) + qWarning().nospace().noquote() << "Material: unknown theme value: " << themeValue; - QByteArray primaryValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_PRIMARY", settings, QStringLiteral("Primary")); - Color primaryEnum = toEnumValue<Color>(primaryValue, &ok); - if (ok) { - globalPrimaryCustom = m_customPrimary = false; - globalPrimary = m_primary = primaryEnum; - } else { - QColor color(primaryValue.constData()); - if (color.isValid()) { - globalPrimaryCustom = m_customPrimary = true; - globalPrimary = m_primary = color.rgba(); - } else if (!primaryValue.isEmpty()) { - qWarning().nospace().noquote() << "Material: unknown primary value: " << primaryValue; - } - } + QByteArray variantValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_VARIANT", settings, QStringLiteral("Variant")); + Variant variantEnum = toEnumValue<Variant>(variantValue, &ok); + if (ok) + globalVariant = variantEnum; + else if (!variantValue.isEmpty()) + qWarning().nospace().noquote() << "Material: unknown variant value: " << variantValue; - QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_ACCENT", settings, QStringLiteral("Accent")); - Color accentEnum = toEnumValue<Color>(accentValue, &ok); - if (ok) { - globalAccentCustom = m_customAccent = false; - globalAccent = m_accent = accentEnum; - } else if (!accentValue.isEmpty()) { - QColor color(accentValue.constData()); - if (color.isValid()) { - globalAccentCustom = m_customAccent = true; - globalAccent = m_accent = color.rgba(); - } else { - qWarning().nospace().noquote() << "Material: unknown accent value: " << accentValue; - } + QByteArray primaryValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_PRIMARY", settings, QStringLiteral("Primary")); + Color primaryEnum = toEnumValue<Color>(primaryValue, &ok); + if (ok) { + globalPrimaryCustom = false; + globalPrimary = primaryEnum; + } else { + QColor color(primaryValue.constData()); + if (color.isValid()) { + globalPrimaryCustom = true; + globalPrimary = color.rgba(); + } else if (!primaryValue.isEmpty()) { + qWarning().nospace().noquote() << "Material: unknown primary value: " << primaryValue; } + } - QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_FOREGROUND", settings, QStringLiteral("Foreground")); - Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok); - if (ok) { - globalForegroundCustom = m_customForeground = false; - globalForeground = m_foreground = foregroundEnum; - hasGlobalForeground = m_hasForeground = true; - } else if (!foregroundValue.isEmpty()) { - QColor color(foregroundValue.constData()); - if (color.isValid()) { - globalForegroundCustom = m_customForeground = true; - globalForeground = m_foreground = color.rgba(); - hasGlobalForeground = m_hasForeground = true; - } else { - qWarning().nospace().noquote() << "Material: unknown foreground value: " << foregroundValue; - } + QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_ACCENT", settings, QStringLiteral("Accent")); + Color accentEnum = toEnumValue<Color>(accentValue, &ok); + if (ok) { + globalAccentCustom = false; + globalAccent = accentEnum; + } else if (!accentValue.isEmpty()) { + QColor color(accentValue.constData()); + if (color.isValid()) { + globalAccentCustom = true; + globalAccent = color.rgba(); + } else { + qWarning().nospace().noquote() << "Material: unknown accent value: " << accentValue; } + } - QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_BACKGROUND", settings, QStringLiteral("Background")); - Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok); - if (ok) { - globalBackgroundCustom = m_customBackground = false; - globalBackground = m_background = backgroundEnum; - hasGlobalBackground = m_hasBackground = true; - } else if (!backgroundValue.isEmpty()) { - QColor color(backgroundValue.constData()); - if (color.isValid()) { - globalBackgroundCustom = m_customBackground = true; - globalBackground = m_background = color.rgba(); - hasGlobalBackground = m_hasBackground = true; - } else { - qWarning().nospace().noquote() << "Material: unknown background value: " << backgroundValue; - } + QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_FOREGROUND", settings, QStringLiteral("Foreground")); + Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok); + if (ok) { + globalForegroundCustom = false; + globalForeground = foregroundEnum; + hasGlobalForeground = true; + } else if (!foregroundValue.isEmpty()) { + QColor color(foregroundValue.constData()); + if (color.isValid()) { + globalForegroundCustom = true; + globalForeground = color.rgba(); + hasGlobalForeground = true; + } else { + qWarning().nospace().noquote() << "Material: unknown foreground value: " << foregroundValue; } + } - globalsInitialized = true; + QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_BACKGROUND", settings, QStringLiteral("Background")); + Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok); + if (ok) { + globalBackgroundCustom = false; + globalBackground = backgroundEnum; + hasGlobalBackground = true; + } else if (!backgroundValue.isEmpty()) { + QColor color(backgroundValue.constData()); + if (color.isValid()) { + globalBackgroundCustom = true; + globalBackground = color.rgba(); + hasGlobalBackground = true; + } else { + qWarning().nospace().noquote() << "Material: unknown background value: " << backgroundValue; + } } +} - QQuickAttachedObject::init(); // TODO: lazy init? +void QQuickMaterialStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) +{ + Q_UNUSED(oldParent); + QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent); + if (material) { + inheritPrimary(material->m_primary, material->m_customPrimary); + inheritAccent(material->m_accent, material->m_customAccent); + inheritForeground(material->m_foreground, material->m_customForeground, material->m_hasForeground); + inheritBackground(material->m_background, material->m_customBackground, material->m_hasBackground); + inheritTheme(material->theme()); + } } bool QQuickMaterialStyle::variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const diff --git a/src/imports/controls/material/qquickmaterialstyle_p.h b/src/imports/controls/material/qquickmaterialstyle_p.h index 2374eefb..0cb168a9 100644 --- a/src/imports/controls/material/qquickmaterialstyle_p.h +++ b/src/imports/controls/material/qquickmaterialstyle_p.h @@ -98,6 +98,15 @@ class QQuickMaterialStyle : public QQuickAttachedObject Q_PROPERTY(QColor toolTextColor READ toolTextColor NOTIFY paletteChanged FINAL) Q_PROPERTY(QColor spinBoxDisabledIconColor READ spinBoxDisabledIconColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(int buttonHeight READ buttonHeight CONSTANT FINAL) + Q_PROPERTY(int delegateHeight READ delegateHeight CONSTANT FINAL) + Q_PROPERTY(int dialogButtonBoxHeight READ dialogButtonBoxHeight CONSTANT FINAL) + Q_PROPERTY(int frameVerticalPadding READ frameVerticalPadding CONSTANT FINAL) + Q_PROPERTY(int menuItemHeight READ menuItemHeight CONSTANT FINAL) + Q_PROPERTY(int menuItemVerticalPadding READ menuItemVerticalPadding CONSTANT FINAL) + Q_PROPERTY(int switchDelegateVerticalPadding READ switchDelegateVerticalPadding CONSTANT FINAL) + Q_PROPERTY(int tooltipHeight READ tooltipHeight CONSTANT FINAL) + public: enum Theme { Light, @@ -105,6 +114,11 @@ public: System }; + enum Variant { + Normal, + Dense + }; + enum Color { Red, Pink, @@ -145,6 +159,7 @@ public: }; Q_ENUM(Theme) + Q_ENUM(Variant) Q_ENUM(Color) Q_ENUM(Shade) @@ -225,6 +240,19 @@ public: Q_INVOKABLE QColor color(Color color, Shade shade = Shade500) const; Q_INVOKABLE QColor shade(const QColor &color, Shade shade) const; + int buttonHeight() const; + int delegateHeight() const; + int dialogButtonBoxHeight() const; + int frameVerticalPadding() const; + int menuItemHeight() const; + int menuItemVerticalPadding() const; + int switchDelegateVerticalPadding() const; + int tooltipHeight() const; + + static void initGlobals(); + + static Variant variant(); + Q_SIGNALS: void themeChanged(); void primaryChanged(); diff --git a/src/imports/controls/material/qquickmaterialtheme.cpp b/src/imports/controls/material/qquickmaterialtheme.cpp index c697b2a5..471f5143 100644 --- a/src/imports/controls/material/qquickmaterialtheme.cpp +++ b/src/imports/controls/material/qquickmaterialtheme.cpp @@ -35,6 +35,7 @@ ****************************************************************************/ #include "qquickmaterialtheme_p.h" +#include "qquickmaterialstyle_p.h" #include <QtGui/qpa/qplatformdialoghelper.h> #include <QtGui/qfont.h> @@ -43,7 +44,10 @@ QT_BEGIN_NAMESPACE QQuickMaterialTheme::QQuickMaterialTheme() - : QQuickTheme(QStringLiteral("Material")) +{ +} + +void QQuickMaterialTheme::resolveFonts(const QFont &defaultFont) { QFont font; font.setFamily(QLatin1String("Roboto")); @@ -64,64 +68,58 @@ QQuickMaterialTheme::QQuickMaterialTheme() editorFont.setFamily(family); } - systemFont.setPixelSize(14); - systemFont = resolveFont(systemFont); + const bool dense = QQuickMaterialStyle::variant() == QQuickMaterialStyle::Dense; + systemFont.setPixelSize(dense ? 13 : 14); + systemFont = defaultFont.resolve(systemFont); - buttonFont.setPixelSize(14); + // https://material.io/guidelines/components/buttons.html#buttons-style + buttonFont.setPixelSize(dense ? 13 : 14); buttonFont.setCapitalization(QFont::AllUppercase); buttonFont.setWeight(QFont::Medium); - buttonFont = resolveFont(buttonFont); + buttonFont = defaultFont.resolve(buttonFont); - toolTipFont.setPixelSize(14); + // https://material.io/guidelines/components/tooltips.html + toolTipFont.setPixelSize(dense ? 10 : 14); toolTipFont.setWeight(QFont::Medium); - toolTipFont = resolveFont(toolTipFont); + toolTipFont = defaultFont.resolve(toolTipFont); - itemViewFont.setPixelSize(14); + itemViewFont.setPixelSize(dense ? 13 : 14); itemViewFont.setWeight(QFont::Medium); - itemViewFont = resolveFont(itemViewFont); + itemViewFont = defaultFont.resolve(itemViewFont); - listViewFont.setPixelSize(16); - listViewFont = resolveFont(listViewFont); + // https://material.io/guidelines/components/lists.html#lists-specs + listViewFont.setPixelSize(dense ? 13 : 16); + listViewFont = defaultFont.resolve(listViewFont); - menuItemFont.setPixelSize(16); - menuItemFont = resolveFont(menuItemFont); + menuItemFont.setPixelSize(dense ? 13 : 16); + menuItemFont = defaultFont.resolve(menuItemFont); - editorFont.setPixelSize(16); - editorFont = resolveFont(editorFont); + editorFont.setPixelSize(dense ? 13 : 16); + editorFont = defaultFont.resolve(editorFont); } -const QFont *QQuickMaterialTheme::font(QPlatformTheme::Font type) const +const QFont *QQuickMaterialTheme::font(Font type) const { switch (type) { - case QPlatformTheme::TabButtonFont: - case QPlatformTheme::PushButtonFont: - case QPlatformTheme::ToolButtonFont: + case TabButtonFont: + case PushButtonFont: + case ToolButtonFont: return &buttonFont; - case QPlatformTheme::TipLabelFont: + case TipLabelFont: return &toolTipFont; - case QPlatformTheme::ItemViewFont: + case ItemViewFont: return &itemViewFont; - case QPlatformTheme::ListViewFont: + case ListViewFont: return &listViewFont; - case QPlatformTheme::MenuBarFont: - case QPlatformTheme::MenuItemFont: - case QPlatformTheme::ComboMenuItemFont: + case MenuBarFont: + case MenuItemFont: + case ComboMenuItemFont: return &menuItemFont; - case QPlatformTheme::EditorFont: + case EditorFont: return &editorFont; default: return &systemFont; } } -QVariant QQuickMaterialTheme::themeHint(ThemeHint hint) const -{ - switch (hint) { - case QPlatformTheme::DialogButtonBoxLayout: - return QVariant(QPlatformDialogHelper::AndroidLayout); - default: - return QQuickProxyTheme::themeHint(hint); - } -} - QT_END_NAMESPACE diff --git a/src/imports/controls/material/qquickmaterialtheme_p.h b/src/imports/controls/material/qquickmaterialtheme_p.h index 0e791386..8df1f962 100644 --- a/src/imports/controls/material/qquickmaterialtheme_p.h +++ b/src/imports/controls/material/qquickmaterialtheme_p.h @@ -50,7 +50,7 @@ #include <QtCore/qvariant.h> #include <QtGui/qfont.h> -#include <QtQuickControls2/private/qquicktheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE @@ -61,7 +61,8 @@ public: const QFont *font(Font type = SystemFont) const override; - QVariant themeHint(ThemeHint hint) const override; +protected: + void resolveFonts(const QFont &defaultFont) override; private: QFont systemFont; diff --git a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp index 33c14d04..f0cf8f3f 100644 --- a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp +++ b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp @@ -66,12 +66,13 @@ public: void registerTypes(const char *uri) override; QString name() const override; - QQuickProxyTheme *createTheme() const override; + QQuickTheme *createTheme() const override; }; QtQuickControls2MaterialStylePlugin::QtQuickControls2MaterialStylePlugin(QObject *parent) : QQuickStylePlugin(parent) { initResources(); + QQuickMaterialStyle::initGlobals(); } void QtQuickControls2MaterialStylePlugin::registerTypes(const char *uri) @@ -97,10 +98,10 @@ void QtQuickControls2MaterialStylePlugin::registerTypes(const char *uri) QString QtQuickControls2MaterialStylePlugin::name() const { - return QStringLiteral("material"); + return QStringLiteral("Material"); } -QQuickProxyTheme *QtQuickControls2MaterialStylePlugin::createTheme() const +QQuickTheme *QtQuickControls2MaterialStylePlugin::createTheme() const { return new QQuickMaterialTheme; } diff --git a/src/imports/controls/qmldir b/src/imports/controls/qmldir index de40013f..c9ccb8f9 100644 --- a/src/imports/controls/qmldir +++ b/src/imports/controls/qmldir @@ -1,5 +1,5 @@ module QtQuick.Controls plugin qtquickcontrols2plugin classname QtQuickControls2Plugin -depends QtQuick.Templates 2.4 +depends QtQuick.Templates 2.5 designersupported diff --git a/src/imports/controls/qquickdefaulttheme.cpp b/src/imports/controls/qquickdefaulttheme.cpp index f4b6f5d7..c53d4c57 100644 --- a/src/imports/controls/qquickdefaulttheme.cpp +++ b/src/imports/controls/qquickdefaulttheme.cpp @@ -39,7 +39,10 @@ QT_BEGIN_NAMESPACE QQuickDefaultTheme::QQuickDefaultTheme() - : QQuickTheme(QStringLiteral("Default")) +{ +} + +void QQuickDefaultTheme::resolvePalettes(const QPalette &defaultPalette) { systemPalette.setColor(QPalette::Base, QColor::fromRgba(0xFFFFFFFF)); systemPalette.setColor(QPalette::Disabled, QPalette::Base, QColor::fromRgba(0xFFD6D6D6)); @@ -80,10 +83,10 @@ QQuickDefaultTheme::QQuickDefaultTheme() systemPalette.setColor(QPalette::WindowText, QColor::fromRgba(0xFF26282A)); systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor::fromRgba(0xFFBDBEBF)); - systemPalette = resolvePalette(systemPalette); + systemPalette = defaultPalette.resolve(systemPalette); } -const QPalette *QQuickDefaultTheme::palette(QPlatformTheme::Palette type) const +const QPalette *QQuickDefaultTheme::palette(Palette type) const { Q_UNUSED(type); return &systemPalette; diff --git a/src/imports/controls/qquickdefaulttheme_p.h b/src/imports/controls/qquickdefaulttheme_p.h index 16e4d061..05c1c344 100644 --- a/src/imports/controls/qquickdefaulttheme_p.h +++ b/src/imports/controls/qquickdefaulttheme_p.h @@ -48,7 +48,7 @@ // We mean it. // -#include <QtQuickControls2/private/qquicktheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE @@ -59,6 +59,9 @@ public: const QPalette *palette(Palette type) const override; +protected: + void resolvePalettes(const QPalette &defaultPalette) override; + private: QPalette systemPalette; }; diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp index 76086376..c495b6b2 100644 --- a/src/imports/controls/qtquickcontrols2plugin.cpp +++ b/src/imports/controls/qtquickcontrols2plugin.cpp @@ -82,7 +82,7 @@ public: void registerTypes(const char *uri) override; QString name() const override; - QQuickProxyTheme *createTheme() const override; + QQuickTheme *createTheme() const override; }; QtQuickControls2Plugin::QtQuickControls2Plugin(QObject *parent) : QQuickStylePlugin(parent) @@ -212,10 +212,10 @@ void QtQuickControls2Plugin::registerTypes(const char *uri) QString QtQuickControls2Plugin::name() const { - return QStringLiteral("default"); + return QStringLiteral("Default"); } -QQuickProxyTheme *QtQuickControls2Plugin::createTheme() const +QQuickTheme *QtQuickControls2Plugin::createTheme() const { return new QQuickDefaultTheme; } diff --git a/src/imports/controls/universal/ApplicationWindow.qml b/src/imports/controls/universal/ApplicationWindow.qml index 0b119693..313b980e 100644 --- a/src/imports/controls/universal/ApplicationWindow.qml +++ b/src/imports/controls/universal/ApplicationWindow.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.ApplicationWindow { id: window diff --git a/src/imports/controls/universal/BusyIndicator.qml b/src/imports/controls/universal/BusyIndicator.qml index cc9e6b85..80f8ae1c 100644 --- a/src/imports/controls/universal/BusyIndicator.qml +++ b/src/imports/controls/universal/BusyIndicator.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.BusyIndicator { id: control diff --git a/src/imports/controls/universal/Button.qml b/src/imports/controls/universal/Button.qml index d8b6836d..b1742fa8 100644 --- a/src/imports/controls/universal/Button.qml +++ b/src/imports/controls/universal/Button.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.Button { id: control @@ -50,8 +50,7 @@ T.Button { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 8 - topPadding: padding - 4 - bottomPadding: padding - 4 + verticalPadding: padding - 4 spacing: 8 icon.width: 20 diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml index 7566c33a..008733b1 100644 --- a/src/imports/controls/universal/CheckBox.qml +++ b/src/imports/controls/universal/CheckBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.CheckBox { id: control diff --git a/src/imports/controls/universal/CheckDelegate.qml b/src/imports/controls/universal/CheckDelegate.qml index 8419ac1e..d4f441e4 100644 --- a/src/imports/controls/universal/CheckDelegate.qml +++ b/src/imports/controls/universal/CheckDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.CheckDelegate { id: control diff --git a/src/imports/controls/universal/CheckIndicator.qml b/src/imports/controls/universal/CheckIndicator.qml index 63bbc3d0..cf8ce3c6 100644 --- a/src/imports/controls/universal/CheckIndicator.qml +++ b/src/imports/controls/universal/CheckIndicator.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 Rectangle { implicitWidth: 20 diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml index f8ea2874..38d9c445 100644 --- a/src/imports/controls/universal/ComboBox.qml +++ b/src/imports/controls/universal/ComboBox.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 +import QtQuick 2.12 import QtQuick.Window 2.3 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.ComboBox { id: control diff --git a/src/imports/controls/universal/DelayButton.qml b/src/imports/controls/universal/DelayButton.qml index be0cccad..bc18d3e3 100644 --- a/src/imports/controls/universal/DelayButton.qml +++ b/src/imports/controls/universal/DelayButton.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.DelayButton { id: control @@ -48,8 +48,7 @@ T.DelayButton { baselineOffset: contentItem.y + contentItem.baselineOffset padding: 8 - topPadding: padding - 4 - bottomPadding: padding - 4 + verticalPadding: padding - 4 property bool useSystemFocusVisuals: true diff --git a/src/imports/controls/universal/Dial.qml b/src/imports/controls/universal/Dial.qml index d2634713..ffeee7c1 100644 --- a/src/imports/controls/universal/Dial.qml +++ b/src/imports/controls/universal/Dial.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Dial { id: control diff --git a/src/imports/controls/universal/Dialog.qml b/src/imports/controls/universal/Dialog.qml index 08cc441a..3d17e77b 100644 --- a/src/imports/controls/universal/Dialog.qml +++ b/src/imports/controls/universal/Dialog.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Universal 2.5 T.Dialog { id: control @@ -55,8 +55,7 @@ T.Dialog { contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) padding: 24 - topPadding: 18 - bottomPadding: 18 + verticalPadding: 18 background: Rectangle { color: control.Universal.chromeMediumLowColor diff --git a/src/imports/controls/universal/DialogButtonBox.qml b/src/imports/controls/universal/DialogButtonBox.qml index 17a9156d..6dff51d1 100644 --- a/src/imports/controls/universal/DialogButtonBox.qml +++ b/src/imports/controls/universal/DialogButtonBox.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.Universal 2.5 T.DialogButtonBox { id: control diff --git a/src/imports/controls/universal/Drawer.qml b/src/imports/controls/universal/Drawer.qml index 8fbd57c6..dbb3f2a9 100644 --- a/src/imports/controls/universal/Drawer.qml +++ b/src/imports/controls/universal/Drawer.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Drawer { id: control diff --git a/src/imports/controls/universal/Frame.qml b/src/imports/controls/universal/Frame.qml index 4f11bc18..fa4efc19 100644 --- a/src/imports/controls/universal/Frame.qml +++ b/src/imports/controls/universal/Frame.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Frame { id: control @@ -44,9 +44,6 @@ T.Frame { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 12 background: Rectangle { diff --git a/src/imports/controls/universal/GroupBox.qml b/src/imports/controls/universal/GroupBox.qml index 8fb68e29..aaae298b 100644 --- a/src/imports/controls/universal/GroupBox.qml +++ b/src/imports/controls/universal/GroupBox.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.GroupBox { id: control @@ -46,9 +46,6 @@ T.GroupBox { contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - spacing: 12 padding: 12 topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) diff --git a/src/imports/controls/universal/ItemDelegate.qml b/src/imports/controls/universal/ItemDelegate.qml index 65d52729..28a97837 100644 --- a/src/imports/controls/universal/ItemDelegate.qml +++ b/src/imports/controls/universal/ItemDelegate.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.ItemDelegate { id: control diff --git a/src/imports/controls/universal/Label.qml b/src/imports/controls/universal/Label.qml index bad9ac04..2e6bb1c3 100644 --- a/src/imports/controls/universal/Label.qml +++ b/src/imports/controls/universal/Label.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Label { id: control diff --git a/src/imports/controls/universal/Menu.qml b/src/imports/controls/universal/Menu.qml index 36241f3a..803bb96f 100644 --- a/src/imports/controls/universal/Menu.qml +++ b/src/imports/controls/universal/Menu.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Controls 2.5 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Menu { id: control diff --git a/src/imports/controls/universal/MenuBar.qml b/src/imports/controls/universal/MenuBar.qml index a1d7e88a..add049e9 100644 --- a/src/imports/controls/universal/MenuBar.qml +++ b/src/imports/controls/universal/MenuBar.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.MenuBar { id: control diff --git a/src/imports/controls/universal/MenuBarItem.qml b/src/imports/controls/universal/MenuBarItem.qml index e88a3ced..a04835a6 100644 --- a/src/imports/controls/universal/MenuBarItem.qml +++ b/src/imports/controls/universal/MenuBarItem.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.MenuBarItem { id: control diff --git a/src/imports/controls/universal/MenuItem.qml b/src/imports/controls/universal/MenuItem.qml index c9c38cb5..c7546fa9 100644 --- a/src/imports/controls/universal/MenuItem.qml +++ b/src/imports/controls/universal/MenuItem.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.MenuItem { id: control diff --git a/src/imports/controls/universal/MenuSeparator.qml b/src/imports/controls/universal/MenuSeparator.qml index 6d0d9dd5..186a50d5 100644 --- a/src/imports/controls/universal/MenuSeparator.qml +++ b/src/imports/controls/universal/MenuSeparator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.MenuSeparator { id: control diff --git a/src/imports/controls/universal/Page.qml b/src/imports/controls/universal/Page.qml index de8482d8..7eda011e 100644 --- a/src/imports/controls/universal/Page.qml +++ b/src/imports/controls/universal/Page.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Page { id: control @@ -50,9 +50,6 @@ T.Page { + (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0)) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - background: Rectangle { color: control.Universal.background } diff --git a/src/imports/controls/universal/PageIndicator.qml b/src/imports/controls/universal/PageIndicator.qml index c14a3365..ed6c6a7d 100644 --- a/src/imports/controls/universal/PageIndicator.qml +++ b/src/imports/controls/universal/PageIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.PageIndicator { id: control diff --git a/src/imports/controls/universal/Pane.qml b/src/imports/controls/universal/Pane.qml index 340653ea..adb4b9f2 100644 --- a/src/imports/controls/universal/Pane.qml +++ b/src/imports/controls/universal/Pane.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Pane { id: control @@ -44,9 +44,6 @@ T.Pane { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - padding: 12 background: Rectangle { diff --git a/src/imports/controls/universal/Popup.qml b/src/imports/controls/universal/Popup.qml index 567fa7d2..9d250782 100644 --- a/src/imports/controls/universal/Popup.qml +++ b/src/imports/controls/universal/Popup.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Popup { id: control diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml index e7aa6bbe..a4ed1e42 100644 --- a/src/imports/controls/universal/ProgressBar.qml +++ b/src/imports/controls/universal/ProgressBar.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.ProgressBar { id: control diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml index 763725b6..ed098fa9 100644 --- a/src/imports/controls/universal/RadioButton.qml +++ b/src/imports/controls/universal/RadioButton.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.RadioButton { id: control diff --git a/src/imports/controls/universal/RadioDelegate.qml b/src/imports/controls/universal/RadioDelegate.qml index 90d023b3..e88f8de3 100644 --- a/src/imports/controls/universal/RadioDelegate.qml +++ b/src/imports/controls/universal/RadioDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.RadioDelegate { id: control diff --git a/src/imports/controls/universal/RadioIndicator.qml b/src/imports/controls/universal/RadioIndicator.qml index 11f388c2..71cb7098 100644 --- a/src/imports/controls/universal/RadioIndicator.qml +++ b/src/imports/controls/universal/RadioIndicator.qml @@ -34,8 +34,8 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Controls.Universal 2.5 Rectangle { implicitWidth: 20 diff --git a/src/imports/controls/universal/RangeSlider.qml b/src/imports/controls/universal/RangeSlider.qml index 6ee923e1..90e33d3b 100644 --- a/src/imports/controls/universal/RangeSlider.qml +++ b/src/imports/controls/universal/RangeSlider.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.RangeSlider { id: control diff --git a/src/imports/controls/universal/RoundButton.qml b/src/imports/controls/universal/RoundButton.qml index 34983ac9..dde60a3b 100644 --- a/src/imports/controls/universal/RoundButton.qml +++ b/src/imports/controls/universal/RoundButton.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.RoundButton { id: control diff --git a/src/imports/controls/universal/ScrollBar.qml b/src/imports/controls/universal/ScrollBar.qml index 91b77366..8de9eb5b 100644 --- a/src/imports/controls/universal/ScrollBar.qml +++ b/src/imports/controls/universal/ScrollBar.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.ScrollBar { id: control diff --git a/src/imports/controls/universal/ScrollIndicator.qml b/src/imports/controls/universal/ScrollIndicator.qml index f09124db..edcb9920 100644 --- a/src/imports/controls/universal/ScrollIndicator.qml +++ b/src/imports/controls/universal/ScrollIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.ScrollIndicator { id: control diff --git a/src/imports/controls/universal/Slider.qml b/src/imports/controls/universal/Slider.qml index 49b6d371..768b752d 100644 --- a/src/imports/controls/universal/Slider.qml +++ b/src/imports/controls/universal/Slider.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.Slider { id: control diff --git a/src/imports/controls/universal/SpinBox.qml b/src/imports/controls/universal/SpinBox.qml index d9ceed78..8dec9d1b 100644 --- a/src/imports/controls/universal/SpinBox.qml +++ b/src/imports/controls/universal/SpinBox.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.SpinBox { id: control diff --git a/src/imports/controls/universal/StackView.qml b/src/imports/controls/universal/StackView.qml index 77d70255..c4cf70e7 100644 --- a/src/imports/controls/universal/StackView.qml +++ b/src/imports/controls/universal/StackView.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.StackView { id: control diff --git a/src/imports/controls/universal/SwipeDelegate.qml b/src/imports/controls/universal/SwipeDelegate.qml index ffcdf0a9..7070372c 100644 --- a/src/imports/controls/universal/SwipeDelegate.qml +++ b/src/imports/controls/universal/SwipeDelegate.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.SwipeDelegate { id: control diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml index b0d1923b..4ace9809 100644 --- a/src/imports/controls/universal/Switch.qml +++ b/src/imports/controls/universal/Switch.qml @@ -34,10 +34,10 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.Switch { id: control diff --git a/src/imports/controls/universal/SwitchDelegate.qml b/src/imports/controls/universal/SwitchDelegate.qml index 48248193..8e5384d7 100644 --- a/src/imports/controls/universal/SwitchDelegate.qml +++ b/src/imports/controls/universal/SwitchDelegate.qml @@ -34,12 +34,12 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls.Universal.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls.Universal.impl 2.5 T.SwitchDelegate { id: control diff --git a/src/imports/controls/universal/SwitchIndicator.qml b/src/imports/controls/universal/SwitchIndicator.qml index b1072b88..12a71f16 100644 --- a/src/imports/controls/universal/SwitchIndicator.qml +++ b/src/imports/controls/universal/SwitchIndicator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 Item { implicitWidth: 44 diff --git a/src/imports/controls/universal/TabBar.qml b/src/imports/controls/universal/TabBar.qml index 81003b48..70cf38f2 100644 --- a/src/imports/controls/universal/TabBar.qml +++ b/src/imports/controls/universal/TabBar.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.TabBar { id: control diff --git a/src/imports/controls/universal/TabButton.qml b/src/imports/controls/universal/TabButton.qml index 3a9e6d45..bec6951b 100644 --- a/src/imports/controls/universal/TabButton.qml +++ b/src/imports/controls/universal/TabButton.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.TabButton { id: control diff --git a/src/imports/controls/universal/TextArea.qml b/src/imports/controls/universal/TextArea.qml index 5dc78c80..82421c78 100644 --- a/src/imports/controls/universal/TextArea.qml +++ b/src/imports/controls/universal/TextArea.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.TextArea { id: control @@ -61,6 +61,9 @@ T.TextArea { color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground selectionColor: Universal.accent selectedTextColor: Universal.chromeWhiteColor + placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackMediumLowColor : + Universal.baseMediumColor PlaceholderText { id: placeholder @@ -71,8 +74,7 @@ T.TextArea { text: control.placeholderText font: control.font - color: !control.enabled ? control.Universal.chromeDisabledLowColor : - control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor + color: control.placeholderTextColor visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) verticalAlignment: control.verticalAlignment elide: Text.ElideRight diff --git a/src/imports/controls/universal/TextField.qml b/src/imports/controls/universal/TextField.qml index f4164fed..96736fe0 100644 --- a/src/imports/controls/universal/TextField.qml +++ b/src/imports/controls/universal/TextField.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.TextField { id: control @@ -61,6 +61,9 @@ T.TextField { color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground selectionColor: Universal.accent selectedTextColor: Universal.chromeWhiteColor + placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackMediumLowColor : + Universal.baseMediumColor verticalAlignment: TextInput.AlignVCenter PlaceholderText { @@ -72,8 +75,7 @@ T.TextField { text: control.placeholderText font: control.font - color: !control.enabled ? control.Universal.chromeDisabledLowColor : - control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor + color: control.placeholderTextColor visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) verticalAlignment: control.verticalAlignment elide: Text.ElideRight diff --git a/src/imports/controls/universal/ToolBar.qml b/src/imports/controls/universal/ToolBar.qml index 65dca3bb..6a11a1ce 100644 --- a/src/imports/controls/universal/ToolBar.qml +++ b/src/imports/controls/universal/ToolBar.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.ToolBar { id: control @@ -44,9 +44,6 @@ T.ToolBar { implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) - contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) - contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) - background: Rectangle { implicitHeight: 48 // AppBarThemeCompactHeight color: control.Universal.chromeMediumColor diff --git a/src/imports/controls/universal/ToolButton.qml b/src/imports/controls/universal/ToolButton.qml index 118d4baa..c69de89a 100644 --- a/src/imports/controls/universal/ToolButton.qml +++ b/src/imports/controls/universal/ToolButton.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 +import QtQuick.Controls.Universal 2.5 T.ToolButton { id: control diff --git a/src/imports/controls/universal/ToolSeparator.qml b/src/imports/controls/universal/ToolSeparator.qml index 2e7b6a01..5ce24d7e 100644 --- a/src/imports/controls/universal/ToolSeparator.qml +++ b/src/imports/controls/universal/ToolSeparator.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.ToolSeparator { id: control diff --git a/src/imports/controls/universal/ToolTip.qml b/src/imports/controls/universal/ToolTip.qml index 1c7c7b69..961c38a3 100644 --- a/src/imports/controls/universal/ToolTip.qml +++ b/src/imports/controls/universal/ToolTip.qml @@ -34,9 +34,9 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 T.ToolTip { id: control diff --git a/src/imports/controls/universal/Tumbler.qml b/src/imports/controls/universal/Tumbler.qml index f0dbc163..93f9f678 100644 --- a/src/imports/controls/universal/Tumbler.qml +++ b/src/imports/controls/universal/Tumbler.qml @@ -34,11 +34,11 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Templates 2.4 as T -import QtQuick.Controls.Universal 2.4 -import QtQuick.Controls 2.4 -import QtQuick.Controls.impl 2.4 +import QtQuick 2.12 +import QtQuick.Templates 2.5 as T +import QtQuick.Controls.Universal 2.5 +import QtQuick.Controls 2.5 +import QtQuick.Controls.impl 2.5 T.Tumbler { id: control diff --git a/src/imports/controls/universal/qmldir b/src/imports/controls/universal/qmldir index 6555626f..6870a4e1 100644 --- a/src/imports/controls/universal/qmldir +++ b/src/imports/controls/universal/qmldir @@ -1,4 +1,4 @@ module QtQuick.Controls.Universal plugin qtquickcontrols2universalstyleplugin classname QtQuickControls2UniversalStylePlugin -depends QtQuick.Controls 2.4 +depends QtQuick.Controls 2.5 diff --git a/src/imports/controls/universal/qquickuniversaltheme.cpp b/src/imports/controls/universal/qquickuniversaltheme.cpp index 549840b6..e5ee88b7 100644 --- a/src/imports/controls/universal/qquickuniversaltheme.cpp +++ b/src/imports/controls/universal/qquickuniversaltheme.cpp @@ -42,7 +42,10 @@ QT_BEGIN_NAMESPACE QQuickUniversalTheme::QQuickUniversalTheme() - : QQuickTheme(QStringLiteral("Universal")) +{ +} + +void QQuickUniversalTheme::resolveFonts(const QFont &defaultFont) { const QFont font(QLatin1String("Segoe UI")); if (QFontInfo(font).family() == QLatin1String("Segoe UI")) { @@ -53,23 +56,23 @@ QQuickUniversalTheme::QQuickUniversalTheme() } systemFont.setPixelSize(15); - systemFont = resolveFont(systemFont); + systemFont = defaultFont.resolve(systemFont); groupBoxTitleFont.setPixelSize(15); groupBoxTitleFont.setWeight(QFont::DemiBold); - groupBoxTitleFont = resolveFont(groupBoxTitleFont); + groupBoxTitleFont = defaultFont.resolve(groupBoxTitleFont); tabButtonFont.setPixelSize(24); tabButtonFont.setWeight(QFont::Light); - tabButtonFont = resolveFont(tabButtonFont); + tabButtonFont = defaultFont.resolve(tabButtonFont); } -const QFont *QQuickUniversalTheme::font(QPlatformTheme::Font type) const +const QFont *QQuickUniversalTheme::font(Font type) const { switch (type) { - case QPlatformTheme::GroupBoxTitleFont: + case GroupBoxTitleFont: return &groupBoxTitleFont; - case QPlatformTheme::TabButtonFont: + case TabButtonFont: return &tabButtonFont; default: return &systemFont; diff --git a/src/imports/controls/universal/qquickuniversaltheme_p.h b/src/imports/controls/universal/qquickuniversaltheme_p.h index f15dee3e..3a4cc792 100644 --- a/src/imports/controls/universal/qquickuniversaltheme_p.h +++ b/src/imports/controls/universal/qquickuniversaltheme_p.h @@ -49,7 +49,7 @@ // #include <QtGui/qfont.h> -#include <QtQuickControls2/private/qquicktheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE @@ -60,6 +60,9 @@ public: const QFont *font(Font type = SystemFont) const override; +protected: + void resolveFonts(const QFont &defaultFont) override; + private: QFont systemFont; QFont groupBoxTitleFont; diff --git a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp index 139acab9..fa55e18a 100644 --- a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp +++ b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp @@ -63,7 +63,7 @@ public: void registerTypes(const char *uri) override; QString name() const override; - QQuickProxyTheme *createTheme() const override; + QQuickTheme *createTheme() const override; }; QtQuickControls2UniversalStylePlugin::QtQuickControls2UniversalStylePlugin(QObject *parent) : QQuickStylePlugin(parent) @@ -91,10 +91,10 @@ void QtQuickControls2UniversalStylePlugin::registerTypes(const char *uri) QString QtQuickControls2UniversalStylePlugin::name() const { - return QStringLiteral("universal"); + return QStringLiteral("Universal"); } -QQuickProxyTheme *QtQuickControls2UniversalStylePlugin::createTheme() const +QQuickTheme *QtQuickControls2UniversalStylePlugin::createTheme() const { return new QQuickUniversalTheme; } diff --git a/src/imports/controls/universal/universal.pro b/src/imports/controls/universal/universal.pro index c437328c..bce86bac 100644 --- a/src/imports/controls/universal/universal.pro +++ b/src/imports/controls/universal/universal.pro @@ -1,6 +1,6 @@ TARGET = qtquickcontrols2universalstyleplugin TARGETPATH = QtQuick/Controls.2/Universal -IMPORT_VERSION = 2.4 +IMPORT_VERSION = 2.5 QT += qml quick QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private diff --git a/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc b/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc index 695156b4..01e70bb2 100644 --- a/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc +++ b/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \qmlmodule QtQuick.Templates 2.4 + \qmlmodule QtQuick.Templates 2.5 \title Qt Quick Templates 2 QML Types \ingroup qmlmodules \brief Provides QML types for templates (Qt Quick Templates). @@ -38,7 +38,7 @@ \c .qml file: \badcode - import QtQuick.Templates 2.4 as T + import QtQuick.Templates 2.5 as T \endcode For the sake of clarity, there is a one-to-one mapping between the types diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp index 72e84c3a..09bd2d87 100644 --- a/src/imports/templates/qtquicktemplates2plugin.cpp +++ b/src/imports/templates/qtquicktemplates2plugin.cpp @@ -328,6 +328,15 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) qmlRegisterType<QQuickScrollBar, 4>(uri, 2, 4, "ScrollBar"); qmlRegisterType<QQuickScrollIndicator, 4>(uri, 2, 4, "ScrollIndicator"); qmlRegisterType<QQuickSpinBox, 4>(uri, 2, 4, "SpinBox"); + + // QtQuick.Templates 2.5 (new types and revisions in Qt 5.12) + qmlRegisterType<QQuickDialogButtonBox, 5>(uri, 2, 5, "DialogButtonBox"); + qmlRegisterType<QQuickControl, 5>(uri, 2, 5, "Control"); + qmlRegisterType<QQuickPopup, 5>(uri, 2, 5, "Popup"); + qmlRegisterType<QQuickTextArea, 5>(uri, 2, 5, "TextArea"); + qmlRegisterType<QQuickTextField, 5>(uri, 2, 5, "TextField"); + qmlRegisterType<QQuickToolTip, 5>(uri, 2, 5, "ToolTip"); + } QT_END_NAMESPACE diff --git a/src/imports/templates/templates.pro b/src/imports/templates/templates.pro index b505dceb..b132f47d 100644 --- a/src/imports/templates/templates.pro +++ b/src/imports/templates/templates.pro @@ -1,6 +1,6 @@ TARGET = qtquicktemplates2plugin TARGETPATH = QtQuick/Templates.2 -IMPORT_VERSION = 2.4 +IMPORT_VERSION = 2.5 QT += qml quick QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp index fa8e9785..61f845cb 100644 --- a/src/quickcontrols2/qquickstyleplugin.cpp +++ b/src/quickcontrols2/qquickstyleplugin.cpp @@ -35,19 +35,102 @@ ****************************************************************************/ #include "qquickstyleplugin_p.h" -#include "qquickproxytheme_p.h" #include "qquickstyle.h" +#include "qquickstyle_p.h" +#include <QtCore/qmetaobject.h> +#include <QtCore/qsettings.h> #include <QtGui/private/qguiapplication_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> + +#include <functional> QT_BEGIN_NAMESPACE +#if QT_CONFIG(settings) +static void readValue(const QSharedPointer<QSettings> &settings, const QString &name, std::function<void(const QVariant &)> setValue) +{ + const QVariant var = settings->value(name); + if (var.isValid()) + setValue(var); +} + +template <typename Enum> +static Enum toEnumValue(const QVariant &var) +{ + // ### TODO: expose QFont enums to the meta object system using Q_ENUM + //QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); + //bool ok = false; + //int value = enumeration.keyToValue(var.toByteArray(), &ok); + //if (!ok) + // value = var.toInt(); + //return static_cast<Enum>(value); + + return static_cast<Enum>(var.toInt()); +} + +static const QFont *readFont(const QSharedPointer<QSettings> &settings) +{ + const QVariant var = settings->value(QStringLiteral("Font")); + if (var.isValid()) + return new QFont(var.value<QFont>()); + + QFont f; + settings->beginGroup(QStringLiteral("Font")); + readValue(settings, QStringLiteral("Family"), [&f](const QVariant &var) { f.setFamily(var.toString()); }); + readValue(settings, QStringLiteral("PointSize"), [&f](const QVariant &var) { f.setPointSizeF(var.toReal()); }); + readValue(settings, QStringLiteral("PixelSize"), [&f](const QVariant &var) { f.setPixelSize(var.toInt()); }); + readValue(settings, QStringLiteral("StyleHint"), [&f](const QVariant &var) { f.setStyleHint(toEnumValue<QFont::StyleHint>(var.toInt())); }); + readValue(settings, QStringLiteral("Weight"), [&f](const QVariant &var) { f.setWeight(toEnumValue<QFont::Weight>(var)); }); + readValue(settings, QStringLiteral("Style"), [&f](const QVariant &var) { f.setStyle(toEnumValue<QFont::Style>(var.toInt())); }); + settings->endGroup(); + return new QFont(f); +} + +static void readColorGroup(const QSharedPointer<QSettings> &settings, QPalette::ColorGroup group, QPalette *palette) +{ + const QStringList keys = settings->childKeys(); + if (keys.isEmpty()) + return; + + static const int index = QPalette::staticMetaObject.indexOfEnumerator("ColorRole"); + Q_ASSERT(index != -1); + QMetaEnum metaEnum = QPalette::staticMetaObject.enumerator(index); + + for (const QString &key : keys) { + bool ok = false; + int role = metaEnum.keyToValue(key.toUtf8(), &ok); + if (ok) + palette->setColor(group, static_cast<QPalette::ColorRole>(role), settings->value(key).value<QColor>()); + } +} + +static const QPalette *readPalette(const QSharedPointer<QSettings> &settings) +{ + QPalette p; + settings->beginGroup(QStringLiteral("Palette")); + readColorGroup(settings, QPalette::All, &p); + + settings->beginGroup(QStringLiteral("Normal")); + readColorGroup(settings, QPalette::Normal, &p); + settings->endGroup(); + + settings->beginGroup(QStringLiteral("Disabled")); + readColorGroup(settings, QPalette::Disabled, &p); + settings->endGroup(); + return new QPalette(p); +} + +#endif // QT_CONFIG(settings) + QQuickStylePlugin::QQuickStylePlugin(QObject *parent) : QQmlExtensionPlugin(parent) { } QQuickStylePlugin::~QQuickStylePlugin() { + if (QQuickTheme::current() == m_theme) + QQuickTheme::setCurrent(nullptr); } void QQuickStylePlugin::registerTypes(const char *uri) @@ -60,15 +143,27 @@ void QQuickStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri) Q_UNUSED(engine); Q_UNUSED(uri); - // make sure not to re-create the proxy theme if initializeEngine() + // make sure not to re-create the theme if initializeEngine() // is called multiple times, like in case of qml2puppet (QTBUG-54995) - if (!m_theme.isNull()) + if (m_theme) return; if (isCurrent()) { - m_theme.reset(createTheme()); - if (m_theme) - QGuiApplicationPrivate::platform_theme = m_theme.data(); + m_theme = createTheme(); + if (m_theme) { + const QFont *font = nullptr; + const QPalette *palette = nullptr; +#if QT_CONFIG(settings) + QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(name()); + if (settings) { + font = readFont(settings); + palette = readPalette(settings); + } +#endif + m_theme->setDefaultFont(font); + m_theme->setDefaultPalette(palette); + QQuickTheme::setCurrent(m_theme); + } } } @@ -87,7 +182,7 @@ QString QQuickStylePlugin::name() const return QString(); } -QQuickProxyTheme *QQuickStylePlugin::createTheme() const +QQuickTheme *QQuickStylePlugin::createTheme() const { return nullptr; } diff --git a/src/quickcontrols2/qquickstyleplugin_p.h b/src/quickcontrols2/qquickstyleplugin_p.h index 9457b472..771a07e2 100644 --- a/src/quickcontrols2/qquickstyleplugin_p.h +++ b/src/quickcontrols2/qquickstyleplugin_p.h @@ -48,13 +48,12 @@ // We mean it. // -#include <QtCore/qscopedpointer.h> #include <QtQml/qqmlextensionplugin.h> #include <QtQuickControls2/private/qtquickcontrols2global_p.h> QT_BEGIN_NAMESPACE -class QQuickProxyTheme; +class QQuickTheme; class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickStylePlugin : public QQmlExtensionPlugin { @@ -69,12 +68,12 @@ public: bool isCurrent() const; virtual QString name() const; - virtual QQuickProxyTheme *createTheme() const; + virtual QQuickTheme *createTheme() const; QUrl typeUrl(const QString &name = QString()) const; private: - QScopedPointer<QQuickProxyTheme> m_theme; + QQuickTheme *m_theme = nullptr; }; QT_END_NAMESPACE diff --git a/src/quickcontrols2/qquicktheme.cpp b/src/quickcontrols2/qquicktheme.cpp deleted file mode 100644 index 3643e975..00000000 --- a/src/quickcontrols2/qquicktheme.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktheme_p.h" -#include "qquickstyle_p.h" - -#include <QtCore/qmetaobject.h> -#include <QtCore/qsettings.h> - -#include <functional> - -QT_BEGIN_NAMESPACE - -#if QT_CONFIG(settings) -static void readValue(const QSharedPointer<QSettings> &settings, const QString &name, std::function<void(const QVariant &)> setValue) -{ - const QVariant var = settings->value(name); - if (var.isValid()) - setValue(var); -} - -template <typename Enum> -static Enum toEnumValue(const QVariant &var) -{ - // ### TODO: expose QFont enums to the meta object system using Q_ENUM - //QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - //bool ok = false; - //int value = enumeration.keyToValue(var.toByteArray(), &ok); - //if (!ok) - // value = var.toInt(); - //return static_cast<Enum>(value); - - return static_cast<Enum>(var.toInt()); -} - -QFont *readFont(const QSharedPointer<QSettings> &settings) -{ - const QVariant var = settings->value(QStringLiteral("Font")); - if (var.isValid()) - return new QFont(var.value<QFont>()); - - QFont f; - settings->beginGroup(QStringLiteral("Font")); - readValue(settings, QStringLiteral("Family"), [&f](const QVariant &var) { f.setFamily(var.toString()); }); - readValue(settings, QStringLiteral("PointSize"), [&f](const QVariant &var) { f.setPointSizeF(var.toReal()); }); - readValue(settings, QStringLiteral("PixelSize"), [&f](const QVariant &var) { f.setPixelSize(var.toInt()); }); - readValue(settings, QStringLiteral("StyleHint"), [&f](const QVariant &var) { f.setStyleHint(toEnumValue<QFont::StyleHint>(var.toInt())); }); - readValue(settings, QStringLiteral("Weight"), [&f](const QVariant &var) { f.setWeight(toEnumValue<QFont::Weight>(var)); }); - readValue(settings, QStringLiteral("Style"), [&f](const QVariant &var) { f.setStyle(toEnumValue<QFont::Style>(var.toInt())); }); - settings->endGroup(); - return new QFont(f); -} - -static void readColorGroup(const QSharedPointer<QSettings> &settings, QPalette::ColorGroup group, QPalette *palette) -{ - const QStringList keys = settings->childKeys(); - if (keys.isEmpty()) - return; - - static const int index = QPalette::staticMetaObject.indexOfEnumerator("ColorRole"); - Q_ASSERT(index != -1); - QMetaEnum metaEnum = QPalette::staticMetaObject.enumerator(index); - - for (const QString &key : keys) { - bool ok = false; - int role = metaEnum.keyToValue(key.toUtf8(), &ok); - if (ok) - palette->setColor(group, static_cast<QPalette::ColorRole>(role), settings->value(key).value<QColor>()); - } -} - -static QPalette *readPalette(const QSharedPointer<QSettings> &settings) -{ - QPalette p; - settings->beginGroup(QStringLiteral("Palette")); - readColorGroup(settings, QPalette::All, &p); - - settings->beginGroup(QStringLiteral("Normal")); - readColorGroup(settings, QPalette::Normal, &p); - settings->endGroup(); - - settings->beginGroup(QStringLiteral("Disabled")); - readColorGroup(settings, QPalette::Disabled, &p); - settings->endGroup(); - return new QPalette(p); -} - -#endif // QT_CONFIG(settings) - -QQuickTheme::QQuickTheme(const QString &style) - : QQuickProxyTheme() -{ -#if QT_CONFIG(settings) - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(style); - if (settings) { - m_styleFont.reset(readFont(settings)); - m_stylePalette.reset(readPalette(settings)); - } -#endif -} - -const QFont *QQuickTheme::font(Font type) const -{ - if (m_styleFont) - return m_styleFont.data(); - return QQuickProxyTheme::font(type); -} - -const QPalette *QQuickTheme::palette(Palette type) const -{ - if (m_stylePalette) - return m_stylePalette.data(); - return QQuickProxyTheme::palette(type); -} - -QFont QQuickTheme::resolveFont(const QFont &font) const -{ - if (!m_styleFont) - return font; - - return m_styleFont->resolve(font); -} - -QPalette QQuickTheme::resolvePalette(const QPalette &palette) const -{ - if (!m_stylePalette) - return palette; - - return m_stylePalette->resolve(palette); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/quickcontrols2.pri b/src/quickcontrols2/quickcontrols2.pri index ac20b78d..781658ef 100644 --- a/src/quickcontrols2/quickcontrols2.pri +++ b/src/quickcontrols2/quickcontrols2.pri @@ -13,13 +13,11 @@ HEADERS += \ $$PWD/qquickmnemoniclabel_p.h \ $$PWD/qquickpaddedrectangle_p.h \ $$PWD/qquickplaceholdertext_p.h \ - $$PWD/qquickproxytheme_p.h \ $$PWD/qquickstyle.h \ $$PWD/qquickstyle_p.h \ $$PWD/qquickstyleplugin_p.h \ $$PWD/qquickstyleselector_p.h \ - $$PWD/qquickstyleselector_p_p.h \ - $$PWD/qquicktheme_p.h + $$PWD/qquickstyleselector_p_p.h SOURCES += \ $$PWD/qquickanimatednode.cpp \ @@ -34,11 +32,9 @@ SOURCES += \ $$PWD/qquickmnemoniclabel.cpp \ $$PWD/qquickpaddedrectangle.cpp \ $$PWD/qquickplaceholdertext.cpp \ - $$PWD/qquickproxytheme.cpp \ $$PWD/qquickstyle.cpp \ $$PWD/qquickstyleplugin.cpp \ - $$PWD/qquickstyleselector.cpp \ - $$PWD/qquicktheme.cpp + $$PWD/qquickstyleselector.cpp qtConfig(quick-listview):qtConfig(quick-pathview) { HEADERS += \ diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp index 77cf5465..370f47bb 100644 --- a/src/quicktemplates2/qquickapplicationwindow.cpp +++ b/src/quicktemplates2/qquickapplicationwindow.cpp @@ -274,7 +274,7 @@ void QQuickApplicationWindowPrivate::updateFont(const QFont &f) void QQuickApplicationWindowPrivate::resolveFont() { - QFont resolvedFont = font.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont)); + QFont resolvedFont = font.resolve(QQuickTheme::themeFont(QQuickTheme::SystemFont)); setFont_helper(resolvedFont); } @@ -296,7 +296,7 @@ void QQuickApplicationWindowPrivate::updatePalette(const QPalette &p) void QQuickApplicationWindowPrivate::resolvePalette() { - QPalette resolvedPalette = palette.resolve(QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette)); + QPalette resolvedPalette = palette.resolve(QQuickTheme::themePalette(QQuickTheme::SystemPalette)); setPalette_helper(resolvedPalette); } @@ -691,7 +691,7 @@ void QQuickApplicationWindow::setFont(const QFont &font) if (d->font.resolve() == font.resolve() && d->font == font) return; - QFont resolvedFont = font.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont)); + QFont resolvedFont = font.resolve(QQuickTheme::themeFont(QQuickTheme::SystemFont)); d->setFont_helper(resolvedFont); } @@ -770,7 +770,7 @@ void QQuickApplicationWindow::setPalette(const QPalette &palette) if (d->palette.resolve() == palette.resolve() && d->palette == palette) return; - QPalette resolvedPalette = palette.resolve(QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette)); + QPalette resolvedPalette = palette.resolve(QQuickTheme::themePalette(QQuickTheme::SystemPalette)); d->setPalette_helper(resolvedPalette); } diff --git a/src/quicktemplates2/qquickbutton.cpp b/src/quicktemplates2/qquickbutton.cpp index a1bea792..f50736f1 100644 --- a/src/quicktemplates2/qquickbutton.cpp +++ b/src/quicktemplates2/qquickbutton.cpp @@ -102,12 +102,12 @@ QQuickButton::QQuickButton(QQuickButtonPrivate &dd, QQuickItem *parent) QFont QQuickButton::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::PushButtonFont); + return QQuickTheme::themeFont(QQuickTheme::PushButtonFont); } QPalette QQuickButton::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ButtonPalette); + return QQuickTheme::themePalette(QQuickTheme::ButtonPalette); } /*! diff --git a/src/quicktemplates2/qquickcheckbox.cpp b/src/quicktemplates2/qquickcheckbox.cpp index c6519338..e1ca675e 100644 --- a/src/quicktemplates2/qquickcheckbox.cpp +++ b/src/quicktemplates2/qquickcheckbox.cpp @@ -189,12 +189,12 @@ void QQuickCheckBox::setCheckState(Qt::CheckState state) QFont QQuickCheckBox::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::CheckBoxFont); + return QQuickTheme::themeFont(QQuickTheme::CheckBoxFont); } QPalette QQuickCheckBox::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::CheckBoxPalette); + return QQuickTheme::themePalette(QQuickTheme::CheckBoxPalette); } void QQuickCheckBox::buttonChange(ButtonChange change) diff --git a/src/quicktemplates2/qquickcheckdelegate.cpp b/src/quicktemplates2/qquickcheckdelegate.cpp index b53877df..9d892154 100644 --- a/src/quicktemplates2/qquickcheckdelegate.cpp +++ b/src/quicktemplates2/qquickcheckdelegate.cpp @@ -176,7 +176,7 @@ void QQuickCheckDelegate::setCheckState(Qt::CheckState state) QFont QQuickCheckDelegate::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont); + return QQuickTheme::themeFont(QQuickTheme::ListViewFont); } void QQuickCheckDelegate::buttonChange(ButtonChange change) diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index 74efb6bb..6aef6391 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -1700,12 +1700,12 @@ void QQuickComboBox::localeChange(const QLocale &newLocale, const QLocale &oldLo QFont QQuickComboBox::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ComboMenuItemFont); + return QQuickTheme::themeFont(QQuickTheme::ComboMenuItemFont); } QPalette QQuickComboBox::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ComboBoxPalette); + return QQuickTheme::themePalette(QQuickTheme::ComboBoxPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 9f796a70..03a92b00 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -50,9 +50,6 @@ #include "qquickapplicationwindow_p.h" #include "qquickdeferredexecute_p_p.h" -#include <QtGui/private/qguiapplication_p.h> -#include <QtGui/qpa/qplatformtheme.h> - #if QT_CONFIG(accessibility) #include <QtQuick/private/qquickaccessibleattached_p.h> #endif @@ -106,14 +103,20 @@ static bool isKeyFocusReason(Qt::FocusReason reason) } QQuickControlPrivate::ExtraData::ExtraData() -{ -} - -QQuickControlPrivate::QQuickControlPrivate() : hasTopPadding(false), hasLeftPadding(false), hasRightPadding(false), hasBottomPadding(false), + topPadding(0), + leftPadding(0), + rightPadding(0), + bottomPadding(0) +{ +} + +QQuickControlPrivate::QQuickControlPrivate() + : hasHorizontalPadding(false), + hasVerticalPadding(false), hasLocale(false), wheelEnabled(false), #if QT_CONFIG(quicktemplates2_hover) @@ -122,10 +125,8 @@ QQuickControlPrivate::QQuickControlPrivate() #endif touchId(-1), padding(0), - topPadding(0), - leftPadding(0), - rightPadding(0), - bottomPadding(0), + horizontalPadding(0), + verticalPadding(0), spacing(0), focusPolicy(Qt::NoFocus), focusReason(Qt::OtherFocusReason), @@ -207,56 +208,90 @@ void QQuickControlPrivate::mirrorChange() void QQuickControlPrivate::setTopPadding(qreal value, bool reset) { Q_Q(QQuickControl); - qreal oldPadding = q->topPadding(); - topPadding = value; - hasTopPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { + const QMarginsF oldPadding = getPadding(); + extra.value().topPadding = value; + extra.value().hasTopPadding = !reset; + if ((!reset && !qFuzzyCompare(oldPadding.top(), value)) || (reset && !qFuzzyCompare(oldPadding.top(), getVerticalPadding()))) { emit q->topPaddingChanged(); emit q->availableHeightChanged(); - q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), - QMarginsF(leftPadding, oldPadding, rightPadding, bottomPadding)); + q->paddingChange(getPadding(), oldPadding); } } void QQuickControlPrivate::setLeftPadding(qreal value, bool reset) { Q_Q(QQuickControl); - qreal oldPadding = q->leftPadding(); - leftPadding = value; - hasLeftPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { + const QMarginsF oldPadding = getPadding(); + extra.value().leftPadding = value; + extra.value().hasLeftPadding = !reset; + if ((!reset && !qFuzzyCompare(oldPadding.left(), value)) || (reset && !qFuzzyCompare(oldPadding.left(), getHorizontalPadding()))) { emit q->leftPaddingChanged(); emit q->availableWidthChanged(); - q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), - QMarginsF(oldPadding, topPadding, rightPadding, bottomPadding)); + q->paddingChange(getPadding(), oldPadding); } } void QQuickControlPrivate::setRightPadding(qreal value, bool reset) { Q_Q(QQuickControl); - qreal oldPadding = q->rightPadding(); - rightPadding = value; - hasRightPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { + const QMarginsF oldPadding = getPadding(); + extra.value().rightPadding = value; + extra.value().hasRightPadding = !reset; + if ((!reset && !qFuzzyCompare(oldPadding.right(), value)) || (reset && !qFuzzyCompare(oldPadding.right(), getHorizontalPadding()))) { emit q->rightPaddingChanged(); emit q->availableWidthChanged(); - q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), - QMarginsF(leftPadding, topPadding, oldPadding, bottomPadding)); + q->paddingChange(getPadding(), oldPadding); } } void QQuickControlPrivate::setBottomPadding(qreal value, bool reset) { Q_Q(QQuickControl); - qreal oldPadding = q->bottomPadding(); - bottomPadding = value; - hasBottomPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { + const QMarginsF oldPadding = getPadding(); + extra.value().bottomPadding = value; + extra.value().hasBottomPadding = !reset; + if ((!reset && !qFuzzyCompare(oldPadding.bottom(), value)) || (reset && !qFuzzyCompare(oldPadding.bottom(), getVerticalPadding()))) { emit q->bottomPaddingChanged(); emit q->availableHeightChanged(); - q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), - QMarginsF(leftPadding, topPadding, rightPadding, oldPadding)); + q->paddingChange(getPadding(), oldPadding); + } +} + +void QQuickControlPrivate::setHorizontalPadding(qreal value, bool reset) +{ + Q_Q(QQuickControl); + const QMarginsF oldPadding = getPadding(); + const qreal oldHorizontalPadding = getHorizontalPadding(); + horizontalPadding = value; + hasHorizontalPadding = !reset; + if ((!reset && !qFuzzyCompare(oldHorizontalPadding, value)) || (reset && !qFuzzyCompare(oldHorizontalPadding, padding))) { + const QMarginsF newPadding = getPadding(); + if (!qFuzzyCompare(newPadding.left(), oldPadding.left())) + emit q->leftPaddingChanged(); + if (!qFuzzyCompare(newPadding.right(), oldPadding.right())) + emit q->rightPaddingChanged(); + emit q->horizontalPaddingChanged(); + emit q->availableWidthChanged(); + q->paddingChange(newPadding, oldPadding); + } +} + +void QQuickControlPrivate::setVerticalPadding(qreal value, bool reset) +{ + Q_Q(QQuickControl); + const QMarginsF oldPadding = getPadding(); + const qreal oldVerticalPadding = getVerticalPadding(); + verticalPadding = value; + hasVerticalPadding = !reset; + if ((!reset && !qFuzzyCompare(oldVerticalPadding, value)) || (reset && !qFuzzyCompare(oldVerticalPadding, padding))) { + const QMarginsF newPadding = getPadding(); + if (!qFuzzyCompare(newPadding.top(), oldPadding.top())) + emit q->topPaddingChanged(); + if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) + emit q->bottomPaddingChanged(); + emit q->verticalPaddingChanged(); + emit q->availableHeightChanged(); + q->paddingChange(newPadding, oldPadding); } } @@ -362,21 +397,7 @@ QFont QQuickControlPrivate::parentFont(const QQuickItem *item) if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window())) return window->font(); - return themeFont(QPlatformTheme::SystemFont); -} - -QFont QQuickControlPrivate::themeFont(QPlatformTheme::Font type) -{ - if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - if (const QFont *font = theme->font(type)) { - QFont f = *font; - if (type == QPlatformTheme::SystemFont) - f.resolve(0); - return f; - } - } - - return QFont(); + return QQuickTheme::themeFont(QQuickTheme::SystemFont); } /*! @@ -467,21 +488,7 @@ QPalette QQuickControlPrivate::parentPalette(const QQuickItem *item) if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window())) return window->palette(); - return themePalette(QPlatformTheme::SystemPalette); -} - -QPalette QQuickControlPrivate::themePalette(QPlatformTheme::Palette type) -{ - if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - if (const QPalette *palette = theme->palette(type)) { - QPalette p = *palette; - if (type == QPlatformTheme::SystemPalette) - p.resolve(0); - return p; - } - } - - return QPalette(); + return QQuickTheme::themePalette(QQuickTheme::SystemPalette); } /*! @@ -866,10 +873,18 @@ void QQuickControl::setPadding(qreal padding) Q_D(QQuickControl); if (qFuzzyCompare(d->padding, padding)) return; - QMarginsF oldPadding(leftPadding(), topPadding(), rightPadding(), bottomPadding()); + + const QMarginsF oldPadding = d->getPadding(); + const qreal oldVerticalPadding = d->getVerticalPadding(); + const qreal oldHorizontalPadding = d->getHorizontalPadding(); + d->padding = padding; emit paddingChanged(); - QMarginsF newPadding(leftPadding(), topPadding(), rightPadding(), bottomPadding()); + + const QMarginsF newPadding = d->getPadding(); + const qreal newVerticalPadding = d->getVerticalPadding(); + const qreal newHorizontalPadding = d->getHorizontalPadding(); + if (!qFuzzyCompare(newPadding.top(), oldPadding.top())) emit topPaddingChanged(); if (!qFuzzyCompare(newPadding.left(), oldPadding.left())) @@ -878,10 +893,15 @@ void QQuickControl::setPadding(qreal padding) emit rightPaddingChanged(); if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) emit bottomPaddingChanged(); + if (!qFuzzyCompare(newVerticalPadding, oldVerticalPadding)) + emit verticalPaddingChanged(); + if (!qFuzzyCompare(newHorizontalPadding, oldHorizontalPadding)) + emit horizontalPaddingChanged(); if (!qFuzzyCompare(newPadding.top(), oldPadding.top()) || !qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) emit availableHeightChanged(); if (!qFuzzyCompare(newPadding.left(), oldPadding.left()) || !qFuzzyCompare(newPadding.right(), oldPadding.right())) emit availableWidthChanged(); + paddingChange(newPadding, oldPadding); } @@ -893,16 +913,15 @@ void QQuickControl::resetPadding() /*! \qmlproperty real QtQuick.Controls::Control::topPadding - This property holds the top padding. + This property holds the top padding. Unless explicitly set, the value + is equal to \c verticalPadding. - \sa {Control Layout}, padding, bottomPadding, availableHeight + \sa {Control Layout}, padding, bottomPadding, verticalPadding, availableHeight */ qreal QQuickControl::topPadding() const { Q_D(const QQuickControl); - if (d->hasTopPadding) - return d->topPadding; - return d->padding; + return d->getTopPadding(); } void QQuickControl::setTopPadding(qreal padding) @@ -920,16 +939,15 @@ void QQuickControl::resetTopPadding() /*! \qmlproperty real QtQuick.Controls::Control::leftPadding - This property holds the left padding. + This property holds the left padding. Unless explicitly set, the value + is equal to \c horizontalPadding. - \sa {Control Layout}, padding, rightPadding, availableWidth + \sa {Control Layout}, padding, rightPadding, horizontalPadding, availableWidth */ qreal QQuickControl::leftPadding() const { Q_D(const QQuickControl); - if (d->hasLeftPadding) - return d->leftPadding; - return d->padding; + return d->getLeftPadding(); } void QQuickControl::setLeftPadding(qreal padding) @@ -947,16 +965,15 @@ void QQuickControl::resetLeftPadding() /*! \qmlproperty real QtQuick.Controls::Control::rightPadding - This property holds the right padding. + This property holds the right padding. Unless explicitly set, the value + is equal to \c horizontalPadding. - \sa {Control Layout}, padding, leftPadding, availableWidth + \sa {Control Layout}, padding, leftPadding, horizontalPadding, availableWidth */ qreal QQuickControl::rightPadding() const { Q_D(const QQuickControl); - if (d->hasRightPadding) - return d->rightPadding; - return d->padding; + return d->getRightPadding(); } void QQuickControl::setRightPadding(qreal padding) @@ -974,16 +991,15 @@ void QQuickControl::resetRightPadding() /*! \qmlproperty real QtQuick.Controls::Control::bottomPadding - This property holds the bottom padding. + This property holds the bottom padding. Unless explicitly set, the value + is equal to \c verticalPadding. - \sa {Control Layout}, padding, topPadding, availableHeight + \sa {Control Layout}, padding, topPadding, verticalPadding, availableHeight */ qreal QQuickControl::bottomPadding() const { Q_D(const QQuickControl); - if (d->hasBottomPadding) - return d->bottomPadding; - return d->padding; + return d->getBottomPadding(); } void QQuickControl::setBottomPadding(qreal padding) @@ -1440,6 +1456,60 @@ void QQuickControl::resetPalette() setPalette(QPalette()); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Control::horizontalPadding + + This property holds the horizontal padding. Unless explicitly set, the value + is equal to \c padding. + + \sa {Control Layout}, padding, leftPadding, rightPadding, verticalPadding +*/ +qreal QQuickControl::horizontalPadding() const +{ + Q_D(const QQuickControl); + return d->getHorizontalPadding(); +} + +void QQuickControl::setHorizontalPadding(qreal padding) +{ + Q_D(QQuickControl); + d->setHorizontalPadding(padding); +} + +void QQuickControl::resetHorizontalPadding() +{ + Q_D(QQuickControl); + d->setHorizontalPadding(0, true); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Control::verticalPadding + + This property holds the vertical padding. Unless explicitly set, the value + is equal to \c padding. + + \sa {Control Layout}, padding, topPadding, bottomPadding, horizontalPadding +*/ +qreal QQuickControl::verticalPadding() const +{ + Q_D(const QQuickControl); + return d->getVerticalPadding(); +} + +void QQuickControl::setVerticalPadding(qreal padding) +{ + Q_D(QQuickControl); + d->setVerticalPadding(padding); +} + +void QQuickControl::resetVerticalPadding() +{ + Q_D(QQuickControl); + d->setVerticalPadding(0, true); +} + void QQuickControl::classBegin() { Q_D(QQuickControl); @@ -1470,12 +1540,12 @@ void QQuickControl::componentComplete() QFont QQuickControl::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont); + return QQuickTheme::themeFont(QQuickTheme::SystemFont); } QPalette QQuickControl::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette); + return QQuickTheme::themePalette(QQuickTheme::SystemPalette); } void QQuickControl::focusInEvent(QFocusEvent *event) diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h index 6b2d48d6..cd317850 100644 --- a/src/quicktemplates2/qquickcontrol_p.h +++ b/src/quicktemplates2/qquickcontrol_p.h @@ -81,6 +81,9 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControl : public QQuickItem Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL) // 2.3 (Qt 5.10) Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) + // 2.5 (Qt 5.12) + Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL REVISION 5) + Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL REVISION 5) Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") public: @@ -152,6 +155,15 @@ public: void setPalette(const QPalette &palette); void resetPalette(); + // 2.5 (Qt 5.12) + qreal horizontalPadding() const; + void setHorizontalPadding(qreal padding); + void resetHorizontalPadding(); + + qreal verticalPadding() const; + void setVerticalPadding(qreal padding); + void resetVerticalPadding(); + Q_SIGNALS: void fontChanged(); void availableWidthChanged(); @@ -174,6 +186,9 @@ Q_SIGNALS: void contentItemChanged(); // 2.3 (Qt 5.10) Q_REVISION(3) void paletteChanged(); + // 2.5 (Qt 5.12) + Q_REVISION(5) void horizontalPaddingChanged(); + Q_REVISION(5) void verticalPaddingChanged(); protected: virtual QFont defaultFont() const; diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h index 7d040ded..250c383b 100644 --- a/src/quicktemplates2/qquickcontrol_p_p.h +++ b/src/quicktemplates2/qquickcontrol_p_p.h @@ -50,10 +50,10 @@ #include <QtQuickTemplates2/private/qquickcontrol_p.h> #include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> #include <QtQuick/private/qquickitem_p.h> #include <QtQml/private/qlazilyallocated_p.h> -#include <qpa/qplatformtheme.h> #if QT_CONFIG(accessibility) #include <QtGui/qaccessible.h> @@ -89,10 +89,20 @@ public: void mirrorChange() override; + inline QMarginsF getPadding() const { return QMarginsF(getLeftPadding(), getTopPadding(), getRightPadding(), getBottomPadding()); } + inline qreal getTopPadding() const { return extra.isAllocated() && extra->hasTopPadding ? extra->topPadding : getVerticalPadding(); } + inline qreal getLeftPadding() const { return extra.isAllocated() && extra->hasLeftPadding ? extra->leftPadding : getHorizontalPadding(); } + inline qreal getRightPadding() const { return extra.isAllocated() && extra->hasRightPadding ? extra->rightPadding : getHorizontalPadding(); } + inline qreal getBottomPadding() const { return extra.isAllocated() && extra->hasBottomPadding ? extra->bottomPadding : getVerticalPadding(); } + inline qreal getHorizontalPadding() const { return hasHorizontalPadding ? horizontalPadding : padding; } + inline qreal getVerticalPadding() const { return hasVerticalPadding ? verticalPadding : padding; } + void setTopPadding(qreal value, bool reset = false); void setLeftPadding(qreal value, bool reset = false); void setRightPadding(qreal value, bool reset = false); void setBottomPadding(qreal value, bool reset = false); + void setHorizontalPadding(qreal value, bool reset = false); + void setVerticalPadding(qreal value, bool reset = false); void resizeBackground(); virtual void resizeContent(); @@ -116,7 +126,6 @@ public: updateFont(font); } static QFont parentFont(const QQuickItem *item); - static QFont themeFont(QPlatformTheme::Font type); virtual void resolvePalette(); void inheritPalette(const QPalette &palette); @@ -128,7 +137,6 @@ public: updatePalette(palette); } static QPalette parentPalette(const QQuickItem *item); - static QPalette themePalette(QPlatformTheme::Palette type); void updateLocale(const QLocale &l, bool e); static void updateLocaleRecur(QQuickItem *item, const QLocale &l); @@ -148,15 +156,21 @@ public: struct ExtraData { ExtraData(); + bool hasTopPadding; + bool hasLeftPadding; + bool hasRightPadding; + bool hasBottomPadding; + qreal topPadding; + qreal leftPadding; + qreal rightPadding; + qreal bottomPadding; QFont requestedFont; QPalette requestedPalette; }; QLazilyAllocated<ExtraData> extra; - bool hasTopPadding; - bool hasLeftPadding; - bool hasRightPadding; - bool hasBottomPadding; + bool hasHorizontalPadding; + bool hasVerticalPadding; bool hasLocale; bool wheelEnabled; #if QT_CONFIG(quicktemplates2_hover) @@ -165,10 +179,8 @@ public: #endif int touchId; qreal padding; - qreal topPadding; - qreal leftPadding; - qreal rightPadding; - qreal bottomPadding; + qreal horizontalPadding; + qreal verticalPadding; qreal spacing; QLocale locale; QFont resolvedFont; diff --git a/src/quicktemplates2/qquickdelaybutton.cpp b/src/quicktemplates2/qquickdelaybutton.cpp index 128f0c78..79bd738f 100644 --- a/src/quicktemplates2/qquickdelaybutton.cpp +++ b/src/quicktemplates2/qquickdelaybutton.cpp @@ -265,12 +265,12 @@ void QQuickDelayButton::nextCheckState() QFont QQuickDelayButton::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::PushButtonFont); + return QQuickTheme::themeFont(QQuickTheme::PushButtonFont); } QPalette QQuickDelayButton::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ButtonPalette); + return QQuickTheme::themePalette(QQuickTheme::ButtonPalette); } QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp index f16f1b74..a69b006f 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -168,10 +168,16 @@ QT_BEGIN_NAMESPACE \sa accepted(), rejected(), helpRequested() */ +static QQuickDialogButtonBox::ButtonLayout platformButtonLayout() +{ + return QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::DialogButtonBoxLayout).value<QQuickDialogButtonBox::ButtonLayout>(); +} + QQuickDialogButtonBoxPrivate::QQuickDialogButtonBoxPrivate() : alignment(0), position(QQuickDialogButtonBox::Footer), standardButtons(QPlatformDialogHelper::NoButton), + buttonLayout(platformButtonLayout()), delegate(nullptr) { } @@ -258,6 +264,11 @@ void QQuickDialogButtonBoxPrivate::updateLayout() } struct ButtonLayout { + ButtonLayout(QPlatformDialogHelper::ButtonLayout layout) + : m_layout(QPlatformDialogHelper::buttonLayout(Qt::Horizontal, layout)) + { + } + bool operator()(QQuickAbstractButton *first, QQuickAbstractButton *second) { const QPlatformDialogHelper::ButtonRole firstRole = QQuickDialogPrivate::buttonRole(first); @@ -280,15 +291,10 @@ void QQuickDialogButtonBoxPrivate::updateLayout() return firstRole != QPlatformDialogHelper::InvalidRole; } - static const int *themeButtonLayout() - { - const int hint = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); - return QPlatformDialogHelper::buttonLayout(Qt::Horizontal, static_cast<QPlatformDialogHelper::ButtonLayout>(hint)); - } - const int *m_layout = themeButtonLayout(); + const int *m_layout; }; - std::sort(buttons.begin(), buttons.end(), ButtonLayout()); + std::sort(buttons.begin(), buttons.end(), ButtonLayout(static_cast<QPlatformDialogHelper::ButtonLayout>(buttonLayout))); for (int i = 0; i < buttons.count() - 1; ++i) q->insertItem(i, buttons.at(i)); @@ -580,6 +586,43 @@ QQuickDialogButtonBoxAttached *QQuickDialogButtonBox::qmlAttachedProperties(QObj return new QQuickDialogButtonBoxAttached(object); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty enumeration QtQuick.Controls::DialogButtonBox::buttonLayout + + This property holds the button layout policy to be used when arranging the buttons contained in the button box. + The default value is platform-specific. + + Available values: + \value DialogButtonBox.WinLayout Use a policy appropriate for applications on Windows. + \value DialogButtonBox.MacLayout Use a policy appropriate for applications on macOS. + \value DialogButtonBox.KdeLayout Use a policy appropriate for applications on KDE. + \value DialogButtonBox.GnomeLayout Use a policy appropriate for applications on GNOME. + \value DialogButtonBox.AndroidLayout Use a policy appropriate for applications on Android. +*/ +QQuickDialogButtonBox::ButtonLayout QQuickDialogButtonBox::buttonLayout() const +{ + Q_D(const QQuickDialogButtonBox); + return d->buttonLayout; +} + +void QQuickDialogButtonBox::setButtonLayout(ButtonLayout layout) +{ + Q_D(QQuickDialogButtonBox); + if (d->buttonLayout == layout) + return; + + d->buttonLayout = layout; + if (isComponentComplete()) + d->updateLayout(); + emit buttonLayoutChanged(); +} + +void QQuickDialogButtonBox::resetButtonLayout() +{ + setButtonLayout(platformButtonLayout()); +} + void QQuickDialogButtonBox::updatePolish() { Q_D(QQuickDialogButtonBox); diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p.h index 1e3cdeef..df302e54 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox_p.h +++ b/src/quicktemplates2/qquickdialogbuttonbox_p.h @@ -66,6 +66,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogButtonBox : public QQuickCont Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment RESET resetAlignment NOTIFY alignmentChanged FINAL) Q_PROPERTY(QPlatformDialogHelper::StandardButtons standardButtons READ standardButtons WRITE setStandardButtons NOTIFY standardButtonsChanged FINAL) Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL) + // 2.5 (Qt 5.12) + Q_PROPERTY(ButtonLayout buttonLayout READ buttonLayout WRITE setButtonLayout RESET resetButtonLayout NOTIFY buttonLayoutChanged FINAL REVISION 5) Q_FLAGS(QPlatformDialogHelper::StandardButtons) public: @@ -94,6 +96,24 @@ public: static QQuickDialogButtonBoxAttached *qmlAttachedProperties(QObject *object); + // 2.5 (Qt 5.12) + + // ### TODO: use Q_ENUMS(QPlatformDialogHelper::ButtonLayout) + enum ButtonLayout { + UnknownLayout = -1, + WinLayout, + MacLayout, + KdeLayout, + GnomeLayout, + MacModelessLayout, + AndroidLayout + }; + Q_ENUM(ButtonLayout) + + ButtonLayout buttonLayout() const; + void setButtonLayout(ButtonLayout layout); + void resetButtonLayout(); + Q_SIGNALS: void accepted(); void rejected(); @@ -107,6 +127,8 @@ Q_SIGNALS: Q_REVISION(3) void applied(); Q_REVISION(3) void reset(); Q_REVISION(3) void discarded(); + // 2.5 (Qt 5.12) + Q_REVISION(5) void buttonLayoutChanged(); protected: void updatePolish() override; diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h index 7247d591..3c761d6b 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h +++ b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h @@ -78,6 +78,7 @@ public: Qt::Alignment alignment; QQuickDialogButtonBox::Position position; QPlatformDialogHelper::StandardButtons standardButtons; + QQuickDialogButtonBox::ButtonLayout buttonLayout; QQmlComponent *delegate; }; diff --git a/src/quicktemplates2/qquickgroupbox.cpp b/src/quicktemplates2/qquickgroupbox.cpp index 4f4c5eed..4a8420b2 100644 --- a/src/quicktemplates2/qquickgroupbox.cpp +++ b/src/quicktemplates2/qquickgroupbox.cpp @@ -189,12 +189,12 @@ void QQuickGroupBox::componentComplete() QFont QQuickGroupBox::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::GroupBoxTitleFont); + return QQuickTheme::themeFont(QQuickTheme::GroupBoxTitleFont); } QPalette QQuickGroupBox::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::GroupBoxPalette); + return QQuickTheme::themePalette(QQuickTheme::GroupBoxPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickitemdelegate.cpp b/src/quicktemplates2/qquickitemdelegate.cpp index 044141f2..ac29936c 100644 --- a/src/quicktemplates2/qquickitemdelegate.cpp +++ b/src/quicktemplates2/qquickitemdelegate.cpp @@ -122,12 +122,12 @@ void QQuickItemDelegate::setHighlighted(bool highlighted) QFont QQuickItemDelegate::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ItemViewFont); + return QQuickTheme::themeFont(QQuickTheme::ItemViewFont); } QPalette QQuickItemDelegate::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ItemViewPalette); + return QQuickTheme::themePalette(QQuickTheme::ItemViewPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquicklabel.cpp b/src/quicktemplates2/qquicklabel.cpp index 41b2d93a..7a4ea8df 100644 --- a/src/quicktemplates2/qquicklabel.cpp +++ b/src/quicktemplates2/qquicklabel.cpp @@ -113,7 +113,7 @@ void QQuickLabelPrivate::inheritFont(const QFont &font) QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); - const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::LabelFont); + const QFont defaultFont = QQuickTheme::themeFont(QQuickTheme::LabelFont); const QFont resolvedFont = parentFont.resolve(defaultFont); setFont_helper(resolvedFont); @@ -155,7 +155,7 @@ void QQuickLabelPrivate::inheritPalette(const QPalette &palette) QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - const QPalette defaultPalette = QQuickControlPrivate::themePalette(QPlatformTheme::LabelPalette); + const QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::LabelPalette); const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); setPalette_helper(resolvedPalette); diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp index 5dbfe3d9..cd3b9db6 100644 --- a/src/quicktemplates2/qquickmenu.cpp +++ b/src/quicktemplates2/qquickmenu.cpp @@ -1432,12 +1432,12 @@ void QQuickMenu::timerEvent(QTimerEvent *event) QFont QQuickMenu::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::MenuFont); + return QQuickTheme::themeFont(QQuickTheme::MenuFont); } QPalette QQuickMenu::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette); + return QQuickTheme::themePalette(QQuickTheme::MenuPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickmenubar.cpp b/src/quicktemplates2/qquickmenubar.cpp index 8398633c..ee3d49f3 100644 --- a/src/quicktemplates2/qquickmenubar.cpp +++ b/src/quicktemplates2/qquickmenubar.cpp @@ -643,12 +643,12 @@ void QQuickMenuBar::itemRemoved(int index, QQuickItem *item) QFont QQuickMenuBar::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::MenuBarFont); + return QQuickTheme::themeFont(QQuickTheme::MenuBarFont); } QPalette QQuickMenuBar::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::MenuBarPalette); + return QQuickTheme::themePalette(QQuickTheme::MenuBarPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickmenubaritem.cpp b/src/quicktemplates2/qquickmenubaritem.cpp index cbf490b8..aa4f869a 100644 --- a/src/quicktemplates2/qquickmenubaritem.cpp +++ b/src/quicktemplates2/qquickmenubaritem.cpp @@ -167,12 +167,12 @@ void QQuickMenuBarItem::geometryChanged(const QRectF &newGeometry, const QRectF QFont QQuickMenuBarItem::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::MenuBarFont); + return QQuickTheme::themeFont(QQuickTheme::MenuBarFont); } QPalette QQuickMenuBarItem::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::MenuBarPalette); + return QQuickTheme::themePalette(QQuickTheme::MenuBarPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickmenuitem.cpp b/src/quicktemplates2/qquickmenuitem.cpp index 6693d4f8..318416ce 100644 --- a/src/quicktemplates2/qquickmenuitem.cpp +++ b/src/quicktemplates2/qquickmenuitem.cpp @@ -264,12 +264,12 @@ void QQuickMenuItem::componentComplete() QFont QQuickMenuItem::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::MenuItemFont); + return QQuickTheme::themeFont(QQuickTheme::MenuItemFont); } QPalette QQuickMenuItem::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette); + return QQuickTheme::themePalette(QQuickTheme::MenuPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickmenuseparator.cpp b/src/quicktemplates2/qquickmenuseparator.cpp index dee5287a..7b30c009 100644 --- a/src/quicktemplates2/qquickmenuseparator.cpp +++ b/src/quicktemplates2/qquickmenuseparator.cpp @@ -73,7 +73,7 @@ QQuickMenuSeparator::QQuickMenuSeparator(QQuickItem *parent) QPalette QQuickMenuSeparator::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette); + return QQuickTheme::themePalette(QQuickTheme::MenuPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp index 8f34dca9..b8838f20 100644 --- a/src/quicktemplates2/qquickpage.cpp +++ b/src/quicktemplates2/qquickpage.cpp @@ -35,14 +35,14 @@ ****************************************************************************/ #include "qquickpage_p.h" -#include "qquickcontrol_p_p.h" +#include "qquickpane_p_p.h" #include "qquickpagelayout_p_p.h" QT_BEGIN_NAMESPACE /*! \qmltype Page - \inherits Control + \inherits Pane \instantiates QQuickPage \inqmlmodule QtQuick.Controls \since 5.7 @@ -84,44 +84,19 @@ QT_BEGIN_NAMESPACE {Focus Management in Qt Quick Controls 2} */ -class QQuickPagePrivate : public QQuickControlPrivate +class QQuickPagePrivate : public QQuickPanePrivate { Q_DECLARE_PUBLIC(QQuickPage) public: - QQuickPagePrivate(); - - QQuickItem *getContentItem() override; - - qreal contentWidth; - qreal contentHeight; QString title; QScopedPointer<QQuickPageLayout> layout; }; -QQuickPagePrivate::QQuickPagePrivate() - : contentWidth(0), - contentHeight(0) -{ -} - -QQuickItem *QQuickPagePrivate::getContentItem() -{ - Q_Q(QQuickPage); - if (QQuickItem *item = QQuickControlPrivate::getContentItem()) - return item; - return new QQuickItem(q); -} - QQuickPage::QQuickPage(QQuickItem *parent) - : QQuickControl(*(new QQuickPagePrivate), parent) + : QQuickPane(*(new QQuickPagePrivate), parent) { Q_D(QQuickPage); - setFlag(ItemIsFocusScope); - setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif d->layout.reset(new QQuickPageLayout(this)); } @@ -234,136 +209,31 @@ void QQuickPage::setFooter(QQuickItem *footer) emit footerChanged(); } -/*! - \qmlproperty list<Object> QtQuick.Controls::Page::contentData - \default - - This property holds the list of content data. - - The list contains all objects that have been declared in QML as children - of the container. - - \note Unlike \c contentChildren, \c contentData does include non-visual QML - objects. - - \sa Item::data, contentChildren -*/ -QQmlListProperty<QObject> QQuickPage::contentData() -{ - return QQmlListProperty<QObject>(contentItem(), nullptr, - QQuickItemPrivate::data_append, - QQuickItemPrivate::data_count, - QQuickItemPrivate::data_at, - QQuickItemPrivate::data_clear); -} - -/*! - \qmlproperty list<Item> QtQuick.Controls::Page::contentChildren - - This property holds the list of content children. - - The list contains all items that have been declared in QML as children - of the page. - - \note Unlike \c contentData, \c contentChildren does not include non-visual - QML objects. - - \sa Item::children, contentData -*/ -QQmlListProperty<QQuickItem> QQuickPage::contentChildren() -{ - return QQmlListProperty<QQuickItem>(contentItem(), nullptr, - QQuickItemPrivate::children_append, - QQuickItemPrivate::children_count, - QQuickItemPrivate::children_at, - QQuickItemPrivate::children_clear); -} - -/*! - \qmlproperty real QtQuick.Controls::Page::contentWidth - \since QtQuick.Controls 2.1 (Qt 5.8) - - This property holds the content width. It is used for calculating the total - implicit width of the page. - - \sa contentHeight -*/ -qreal QQuickPage::contentWidth() const -{ - Q_D(const QQuickPage); - return d->contentWidth; -} - -void QQuickPage::setContentWidth(qreal width) -{ - Q_D(QQuickPage); - if (qFuzzyCompare(d->contentWidth, width)) - return; - - d->contentWidth = width; - emit contentWidthChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Page::contentHeight - \since QtQuick.Controls 2.1 (Qt 5.8) - - This property holds the content height. It is used for calculating the total - implicit height of the page. - - \sa contentWidth -*/ -qreal QQuickPage::contentHeight() const -{ - Q_D(const QQuickPage); - return d->contentHeight; -} - -void QQuickPage::setContentHeight(qreal height) -{ - Q_D(QQuickPage); - if (qFuzzyCompare(d->contentHeight, height)) - return; - - d->contentHeight = height; - emit contentHeightChanged(); -} - void QQuickPage::componentComplete() { Q_D(QQuickPage); - QQuickControl::componentComplete(); + QQuickPane::componentComplete(); d->layout->update(); } -void QQuickPage::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - QQuickControl::contentItemChange(newItem, oldItem); - if (oldItem) - disconnect(oldItem, &QQuickItem::childrenChanged, this, &QQuickPage::contentChildrenChanged); - if (newItem) - connect(newItem, &QQuickItem::childrenChanged, this, &QQuickPage::contentChildrenChanged); - emit contentChildrenChanged(); -} - void QQuickPage::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QQuickPage); - QQuickControl::geometryChanged(newGeometry, oldGeometry); + QQuickPane::geometryChanged(newGeometry, oldGeometry); d->layout->update(); } void QQuickPage::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) { Q_D(QQuickPage); - QQuickControl::paddingChange(newPadding, oldPadding); + QQuickPane::paddingChange(newPadding, oldPadding); d->layout->update(); } void QQuickPage::spacingChange(qreal newSpacing, qreal oldSpacing) { Q_D(QQuickPage); - QQuickControl::spacingChange(newSpacing, oldSpacing); + QQuickPane::spacingChange(newSpacing, oldSpacing); d->layout->update(); } @@ -376,7 +246,7 @@ QAccessible::Role QQuickPage::accessibleRole() const void QQuickPage::accessibilityActiveChanged(bool active) { Q_D(QQuickPage); - QQuickControl::accessibilityActiveChanged(active); + QQuickPane::accessibilityActiveChanged(active); if (active) setAccessibleName(d->title); diff --git a/src/quicktemplates2/qquickpage_p.h b/src/quicktemplates2/qquickpage_p.h index 0789e996..49f9f85f 100644 --- a/src/quicktemplates2/qquickpage_p.h +++ b/src/quicktemplates2/qquickpage_p.h @@ -48,25 +48,22 @@ // We mean it. // -#include <QtQuickTemplates2/private/qquickcontrol_p.h> +#include <QtQuickTemplates2/private/qquickpane_p.h> #include <QtQml/qqmllist.h> QT_BEGIN_NAMESPACE class QQuickPagePrivate; -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPage : public QQuickControl +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPage : public QQuickPane { Q_OBJECT Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL) Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL) - Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL) - Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL) // 2.1 (Qt 5.8) Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged FINAL REVISION 1) Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged FINAL REVISION 1) - Q_CLASSINFO("DefaultProperty", "contentData") public: explicit QQuickPage(QQuickItem *parent = nullptr); @@ -80,29 +77,14 @@ public: QQuickItem *footer() const; void setFooter(QQuickItem *footer); - QQmlListProperty<QObject> contentData(); - QQmlListProperty<QQuickItem> contentChildren(); - - // 2.1 (Qt 5.8) - qreal contentWidth() const; - void setContentWidth(qreal width); - - qreal contentHeight() const; - void setContentHeight(qreal height); - Q_SIGNALS: void titleChanged(); void headerChanged(); void footerChanged(); - void contentChildrenChanged(); - // 2.1 (Qt 5.8) - Q_REVISION(1) void contentWidthChanged(); - Q_REVISION(1) void contentHeightChanged(); protected: void componentComplete() override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override; void spacingChange(qreal newSpacing, qreal oldSpacing) override; diff --git a/src/quicktemplates2/qquickpane.cpp b/src/quicktemplates2/qquickpane.cpp index 8038f1b1..98c4d1f3 100644 --- a/src/quicktemplates2/qquickpane.cpp +++ b/src/quicktemplates2/qquickpane.cpp @@ -106,8 +106,12 @@ QT_BEGIN_NAMESPACE {Focus Management in Qt Quick Controls 2} */ +static const QQuickItemPrivate::ChangeTypes ImplicitSizeChanges = QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight | QQuickItemPrivate::Destroyed; + QQuickPanePrivate::QQuickPanePrivate() - : contentWidth(0), + : hasContentWidth(false), + hasContentHeight(false), + contentWidth(0), contentHeight(0) { } @@ -120,6 +124,112 @@ QQuickItem *QQuickPanePrivate::getContentItem() return new QQuickItem(q); } +void QQuickPanePrivate::addImplicitSizeListener(QQuickItem *item) +{ + if (!item) + return; + + QQuickItemPrivate::get(item)->addItemChangeListener(this, ImplicitSizeChanges); +} + +void QQuickPanePrivate::removeImplicitSizeListener(QQuickItem *item) +{ + if (!item) + return; + + QQuickItemPrivate::get(item)->removeItemChangeListener(this, ImplicitSizeChanges); +} + +void QQuickPanePrivate::itemImplicitWidthChanged(QQuickItem *item) +{ + Q_Q(QQuickPane); + if (item == contentItem && updateContentWidth(item)) + emit q->contentWidthChanged(); +} + +void QQuickPanePrivate::itemImplicitHeightChanged(QQuickItem *item) +{ + Q_Q(QQuickPane); + if (item == contentItem && updateContentHeight(item)) + emit q->contentHeightChanged(); +} + +void QQuickPanePrivate::itemDestroyed(QQuickItem *item) +{ + if (item == contentItem) + updateContentSize(nullptr); +} + +void QQuickPanePrivate::contentChildrenChange() +{ + Q_Q(QQuickPane); + updateContentSize(contentItem); + emit q->contentChildrenChanged(); +} + +static qreal getContentWidth(QQuickItem *item) +{ + if (!item) + return 0; + + const qreal cw = item->implicitWidth(); + if (!qFuzzyIsNull(cw)) + return cw; + + const auto contentChildren = item->childItems(); + if (contentChildren.count() == 1) + return contentChildren.first()->implicitWidth(); + + return 0; +} + +static qreal getContentHeight(QQuickItem *item) +{ + if (!item) + return 0; + + const qreal ch = item->implicitHeight(); + if (!qFuzzyIsNull(ch)) + return ch; + + const auto contentChildren = item->childItems(); + if (contentChildren.count() == 1) + return contentChildren.first()->implicitHeight(); + + return 0; +} + +bool QQuickPanePrivate::updateContentWidth(QQuickItem *item) +{ + if (hasContentWidth) + return false; + + qreal oldContentWidth = contentWidth; + contentWidth = getContentWidth(item); + return !qFuzzyCompare(contentWidth, oldContentWidth); +} + +bool QQuickPanePrivate::updateContentHeight(QQuickItem *item) +{ + if (hasContentHeight) + return false; + + qreal oldContentHeight = contentHeight; + contentHeight = getContentHeight(item); + return !qFuzzyCompare(contentHeight, oldContentHeight); +} + +void QQuickPanePrivate::updateContentSize(QQuickItem *item) +{ + Q_Q(QQuickPane); + bool widthChanged = updateContentWidth(item); + bool heightChanged = updateContentHeight(item); + if (widthChanged) + emit q->contentWidthChanged(); + if (heightChanged) + emit q->contentHeightChanged(); +} + QQuickPane::QQuickPane(QQuickItem *parent) : QQuickControl(*(new QQuickPanePrivate), parent) { @@ -130,6 +240,12 @@ QQuickPane::QQuickPane(QQuickItem *parent) #endif } +QQuickPane::~QQuickPane() +{ + Q_D(QQuickPane); + d->removeImplicitSizeListener(d->contentItem); +} + QQuickPane::QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent) : QQuickControl(dd, parent) { @@ -159,6 +275,7 @@ qreal QQuickPane::contentWidth() const void QQuickPane::setContentWidth(qreal width) { Q_D(QQuickPane); + d->hasContentWidth = true; if (qFuzzyCompare(d->contentWidth, width)) return; @@ -166,6 +283,17 @@ void QQuickPane::setContentWidth(qreal width) emit contentWidthChanged(); } +void QQuickPane::resetContentWidth() +{ + Q_D(QQuickPane); + if (!d->hasContentWidth) + return; + + d->hasContentHeight = false; + if (d->updateContentWidth(d->contentItem)) + emit contentWidthChanged(); +} + /*! \qmlproperty real QtQuick.Controls::Pane::contentHeight @@ -185,6 +313,7 @@ qreal QQuickPane::contentHeight() const void QQuickPane::setContentHeight(qreal height) { Q_D(QQuickPane); + d->hasContentHeight = true; if (qFuzzyCompare(d->contentHeight, height)) return; @@ -192,6 +321,17 @@ void QQuickPane::setContentHeight(qreal height) emit contentHeightChanged(); } +void QQuickPane::resetContentHeight() +{ + Q_D(QQuickPane); + if (!d->hasContentHeight) + return; + + d->hasContentHeight = false; + if (d->updateContentHeight(d->contentItem)) + emit contentHeightChanged(); +} + /*! \qmlproperty list<Object> QtQuick.Controls::Pane::contentData \default @@ -239,11 +379,17 @@ QQmlListProperty<QQuickItem> QQuickPane::contentChildren() void QQuickPane::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) { + Q_D(QQuickPane); QQuickControl::contentItemChange(newItem, oldItem); - if (oldItem) - disconnect(oldItem, &QQuickItem::childrenChanged, this, &QQuickPane::contentChildrenChanged); - if (newItem) - connect(newItem, &QQuickItem::childrenChanged, this, &QQuickPane::contentChildrenChanged); + if (oldItem) { + d->removeImplicitSizeListener(oldItem); + QObjectPrivate::disconnect(oldItem, &QQuickItem::childrenChanged, d, &QQuickPanePrivate::contentChildrenChange); + } + if (newItem) { + d->addImplicitSizeListener(newItem); + QObjectPrivate::connect(newItem, &QQuickItem::childrenChanged, d, &QQuickPanePrivate::contentChildrenChange); + } + d->updateContentSize(newItem); emit contentChildrenChanged(); } diff --git a/src/quicktemplates2/qquickpane_p.h b/src/quicktemplates2/qquickpane_p.h index 759c59d8..53bf7067 100644 --- a/src/quicktemplates2/qquickpane_p.h +++ b/src/quicktemplates2/qquickpane_p.h @@ -58,20 +58,23 @@ class QQuickPanePrivate; class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPane : public QQuickControl { Q_OBJECT - Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged FINAL) - Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged FINAL) + Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth RESET resetContentWidth NOTIFY contentWidthChanged FINAL) + Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight RESET resetContentHeight NOTIFY contentHeightChanged FINAL) Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL) Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL) Q_CLASSINFO("DefaultProperty", "contentData") public: explicit QQuickPane(QQuickItem *parent = nullptr); + ~QQuickPane(); qreal contentWidth() const; void setContentWidth(qreal width); + void resetContentWidth(); qreal contentHeight() const; void setContentHeight(qreal height); + void resetContentHeight(); QQmlListProperty<QObject> contentData(); QQmlListProperty<QQuickItem> contentChildren(); diff --git a/src/quicktemplates2/qquickpane_p_p.h b/src/quicktemplates2/qquickpane_p_p.h index 16a07f08..4d9a1747 100644 --- a/src/quicktemplates2/qquickpane_p_p.h +++ b/src/quicktemplates2/qquickpane_p_p.h @@ -49,12 +49,13 @@ // #include <QtQuickTemplates2/private/qquickcontrol_p_p.h> +#include <QtQuick/private/qquickitemchangelistener_p.h> QT_BEGIN_NAMESPACE class QQuickPane; -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPanePrivate : public QQuickControlPrivate +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPanePrivate : public QQuickControlPrivate, public QQuickItemChangeListener { Q_DECLARE_PUBLIC(QQuickPane) @@ -63,6 +64,21 @@ public: QQuickItem *getContentItem() override; + void addImplicitSizeListener(QQuickItem *item); + void removeImplicitSizeListener(QQuickItem *item); + + void itemImplicitWidthChanged(QQuickItem *item) override; + void itemImplicitHeightChanged(QQuickItem *item) override; + void itemDestroyed(QQuickItem *item) override; + + void contentChildrenChange(); + + bool updateContentWidth(QQuickItem *item); + bool updateContentHeight(QQuickItem *item); + void updateContentSize(QQuickItem *item); + + bool hasContentWidth; + bool hasContentHeight; qreal contentWidth; qreal contentHeight; }; diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index e3ab952d..c21b8b68 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -1294,11 +1294,12 @@ void QQuickPopup::resetPadding() /*! \qmlproperty real QtQuick.Controls::Popup::topPadding - This property holds the top padding. + This property holds the top padding. Unless explicitly set, the value + is equal to \c verticalPadding. \include qquickpopup-padding.qdocinc - \sa padding, bottomPadding, availableHeight + \sa padding, bottomPadding, verticalPadding, availableHeight */ qreal QQuickPopup::topPadding() const { @@ -1321,11 +1322,12 @@ void QQuickPopup::resetTopPadding() /*! \qmlproperty real QtQuick.Controls::Popup::leftPadding - This property holds the left padding. + This property holds the left padding. Unless explicitly set, the value + is equal to \c horizontalPadding. \include qquickpopup-padding.qdocinc - \sa padding, rightPadding, availableWidth + \sa padding, rightPadding, horizontalPadding, availableWidth */ qreal QQuickPopup::leftPadding() const { @@ -1348,11 +1350,12 @@ void QQuickPopup::resetLeftPadding() /*! \qmlproperty real QtQuick.Controls::Popup::rightPadding - This property holds the right padding. + This property holds the right padding. Unless explicitly set, the value + is equal to \c horizontalPadding. \include qquickpopup-padding.qdocinc - \sa padding, leftPadding, availableWidth + \sa padding, leftPadding, horizontalPadding, availableWidth */ qreal QQuickPopup::rightPadding() const { @@ -1375,11 +1378,12 @@ void QQuickPopup::resetRightPadding() /*! \qmlproperty real QtQuick.Controls::Popup::bottomPadding - This property holds the bottom padding. + This property holds the bottom padding. Unless explicitly set, the value + is equal to \c verticalPadding. \include qquickpopup-padding.qdocinc - \sa padding, topPadding, availableHeight + \sa padding, topPadding, verticalPadding, availableHeight */ qreal QQuickPopup::bottomPadding() const { @@ -2087,6 +2091,64 @@ void QQuickPopup::setExit(QQuickTransition *transition) emit exitChanged(); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Popup::horizontalPadding + + This property holds the horizontal padding. Unless explicitly set, the value + is equal to \c padding. + + \include qquickpopup-padding.qdocinc + + \sa padding, leftPadding, rightPadding, verticalPadding +*/ +qreal QQuickPopup::horizontalPadding() const +{ + Q_D(const QQuickPopup); + return d->popupItem->horizontalPadding(); +} + +void QQuickPopup::setHorizontalPadding(qreal padding) +{ + Q_D(QQuickPopup); + d->popupItem->setHorizontalPadding(padding); +} + +void QQuickPopup::resetHorizontalPadding() +{ + Q_D(QQuickPopup); + d->popupItem->resetHorizontalPadding(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Popup::verticalPadding + + This property holds the vertical padding. Unless explicitly set, the value + is equal to \c padding. + + \include qquickpopup-padding.qdocinc + + \sa padding, topPadding, bottomPadding, horizontalPadding +*/ +qreal QQuickPopup::verticalPadding() const +{ + Q_D(const QQuickPopup); + return d->popupItem->verticalPadding(); +} + +void QQuickPopup::setVerticalPadding(qreal padding) +{ + Q_D(QQuickPopup); + d->popupItem->setVerticalPadding(padding); +} + +void QQuickPopup::resetVerticalPadding() +{ + Q_D(QQuickPopup); + d->popupItem->resetVerticalPadding(); +} + bool QQuickPopup::filtersChildMouseEvents() const { Q_D(const QQuickPopup); @@ -2337,10 +2399,14 @@ void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &ol if (bp) emit bottomPaddingChanged(); - if (lp || rp) + if (lp || rp) { + emit horizontalPaddingChanged(); emit availableWidthChanged(); - if (tp || bp) + } + if (tp || bp) { + emit verticalPaddingChanged(); emit availableHeightChanged(); + } } void QQuickPopup::paletteChange(const QPalette &newPalette, const QPalette &oldPalette) @@ -2359,12 +2425,12 @@ void QQuickPopup::spacingChange(qreal newSpacing, qreal oldSpacing) QFont QQuickPopup::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont); + return QQuickTheme::themeFont(QQuickTheme::SystemFont); } QPalette QQuickPopup::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette); + return QQuickTheme::themePalette(QQuickTheme::SystemPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h index 2a42ff27..9e2f3649 100644 --- a/src/quicktemplates2/qquickpopup_p.h +++ b/src/quicktemplates2/qquickpopup_p.h @@ -121,6 +121,9 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopup : public QObject, public QQml Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL REVISION 3) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL REVISION 3) Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) + // 2.5 (Qt 5.12) + Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL) + Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL) Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") Q_CLASSINFO("DefaultProperty", "contentData") @@ -304,6 +307,15 @@ public: void setPalette(const QPalette &palette); void resetPalette(); + // 2.5 (Qt 5.12) + qreal horizontalPadding() const; + void setHorizontalPadding(qreal padding); + void resetHorizontalPadding(); + + qreal verticalPadding() const; + void setVerticalPadding(qreal padding); + void resetVerticalPadding(); + public Q_SLOTS: void open(); void close(); @@ -359,6 +371,9 @@ Q_SIGNALS: Q_REVISION(3) void mirroredChanged(); Q_REVISION(3) void enabledChanged(); Q_REVISION(3) void paletteChanged(); + // 2.5 (Qt 5.12) + Q_REVISION(5) void horizontalPaddingChanged(); + Q_REVISION(5) void verticalPaddingChanged(); protected: QQuickPopup(QQuickPopupPrivate &dd, QObject *parent); diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp index 566a5245..5c906312 100644 --- a/src/quicktemplates2/qquickpopupitem.cpp +++ b/src/quicktemplates2/qquickpopupitem.cpp @@ -97,7 +97,7 @@ void QQuickPopupItemPrivate::resolveFont() if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window())) inheritFont(window->font()); else - inheritFont(themeFont(QPlatformTheme::SystemFont)); + inheritFont(QQuickTheme::themeFont(QQuickTheme::SystemFont)); } void QQuickPopupItemPrivate::resolvePalette() @@ -105,7 +105,7 @@ void QQuickPopupItemPrivate::resolvePalette() if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window())) inheritPalette(window->palette()); else - inheritPalette(themePalette(QPlatformTheme::SystemPalette)); + inheritPalette(QQuickTheme::themePalette(QQuickTheme::SystemPalette)); } QQuickItem *QQuickPopupItemPrivate::getContentItem() diff --git a/src/quickcontrols2/qquickproxytheme.cpp b/src/quicktemplates2/qquickproxytheme.cpp index 9b395b28..f6e8f773 100644 --- a/src/quickcontrols2/qquickproxytheme.cpp +++ b/src/quicktemplates2/qquickproxytheme.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2017 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL3$ ** Commercial License Usage diff --git a/src/quickcontrols2/qquickproxytheme_p.h b/src/quicktemplates2/qquickproxytheme_p.h index 2d271e8c..f580f6c5 100644 --- a/src/quickcontrols2/qquickproxytheme_p.h +++ b/src/quicktemplates2/qquickproxytheme_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2017 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL3$ ** Commercial License Usage @@ -49,11 +49,11 @@ // #include <QtGui/qpa/qplatformtheme.h> -#include <QtQuickControls2/private/qtquickcontrols2global_p.h> +#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> QT_BEGIN_NAMESPACE -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickProxyTheme : public QPlatformTheme +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickProxyTheme : public QPlatformTheme { public: explicit QQuickProxyTheme(QPlatformTheme *theme = nullptr); diff --git a/src/quicktemplates2/qquickradiobutton.cpp b/src/quicktemplates2/qquickradiobutton.cpp index 86be3ed6..1d6f6771 100644 --- a/src/quicktemplates2/qquickradiobutton.cpp +++ b/src/quicktemplates2/qquickradiobutton.cpp @@ -99,12 +99,12 @@ QQuickRadioButton::QQuickRadioButton(QQuickItem *parent) QFont QQuickRadioButton::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::RadioButtonFont); + return QQuickTheme::themeFont(QQuickTheme::RadioButtonFont); } QPalette QQuickRadioButton::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::RadioButtonPalette); + return QQuickTheme::themePalette(QQuickTheme::RadioButtonPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickradiodelegate.cpp b/src/quicktemplates2/qquickradiodelegate.cpp index fe603d36..fb55ba7c 100644 --- a/src/quicktemplates2/qquickradiodelegate.cpp +++ b/src/quicktemplates2/qquickradiodelegate.cpp @@ -100,7 +100,7 @@ QQuickRadioDelegate::QQuickRadioDelegate(QQuickItem *parent) QFont QQuickRadioDelegate::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont); + return QQuickTheme::themeFont(QQuickTheme::ListViewFont); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp index 04bdec43..8aa8ed5f 100644 --- a/src/quicktemplates2/qquickspinbox.cpp +++ b/src/quicktemplates2/qquickspinbox.cpp @@ -1024,12 +1024,12 @@ void QQuickSpinBox::localeChange(const QLocale &newLocale, const QLocale &oldLoc QFont QQuickSpinBox::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont); + return QQuickTheme::themeFont(QQuickTheme::EditorFont); } QPalette QQuickSpinBox::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::TextLineEditPalette); + return QQuickTheme::themePalette(QQuickTheme::TextLineEditPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickswipedelegate.cpp b/src/quicktemplates2/qquickswipedelegate.cpp index dcf93437..6c3d804b 100644 --- a/src/quicktemplates2/qquickswipedelegate.cpp +++ b/src/quicktemplates2/qquickswipedelegate.cpp @@ -1230,7 +1230,7 @@ void QQuickSwipeDelegate::geometryChanged(const QRectF &newGeometry, const QRect QFont QQuickSwipeDelegate::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont); + return QQuickTheme::themeFont(QQuickTheme::ListViewFont); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquickswitch.cpp b/src/quicktemplates2/qquickswitch.cpp index da1f0408..db71e423 100644 --- a/src/quicktemplates2/qquickswitch.cpp +++ b/src/quicktemplates2/qquickswitch.cpp @@ -234,7 +234,7 @@ void QQuickSwitch::buttonChange(ButtonChange change) QPalette QQuickSwitch::defaultPalette() const { // ### TODO: add QPlatformTheme::SwitchPalette - return QQuickControlPrivate::themePalette(QPlatformTheme::CheckBoxPalette); + return QQuickTheme::themePalette(QQuickTheme::CheckBoxPalette); } QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickswitchdelegate.cpp b/src/quicktemplates2/qquickswitchdelegate.cpp index d8ce8096..8b673662 100644 --- a/src/quicktemplates2/qquickswitchdelegate.cpp +++ b/src/quicktemplates2/qquickswitchdelegate.cpp @@ -202,7 +202,7 @@ void QQuickSwitchDelegate::touchEvent(QTouchEvent *event) QFont QQuickSwitchDelegate::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont); + return QQuickTheme::themeFont(QQuickTheme::ListViewFont); } void QQuickSwitchDelegate::mirrorChange() diff --git a/src/quicktemplates2/qquicktabbar.cpp b/src/quicktemplates2/qquicktabbar.cpp index cd0c5c45..e2cd06fc 100644 --- a/src/quicktemplates2/qquicktabbar.cpp +++ b/src/quicktemplates2/qquicktabbar.cpp @@ -443,7 +443,7 @@ void QQuickTabBar::itemRemoved(int index, QQuickItem *item) QPalette QQuickTabBar::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::TabBarPalette); + return QQuickTheme::themePalette(QQuickTheme::TabBarPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquicktabbutton.cpp b/src/quicktemplates2/qquicktabbutton.cpp index 617d4aea..59905a63 100644 --- a/src/quicktemplates2/qquicktabbutton.cpp +++ b/src/quicktemplates2/qquicktabbutton.cpp @@ -72,12 +72,12 @@ QQuickTabButton::QQuickTabButton(QQuickItem *parent) QFont QQuickTabButton::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::TabButtonFont); + return QQuickTheme::themeFont(QQuickTheme::TabButtonFont); } QPalette QQuickTabButton::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::TabBarPalette); + return QQuickTheme::themePalette(QQuickTheme::TabBarPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp index 319f7bbe..fb724225 100644 --- a/src/quicktemplates2/qquicktextarea.cpp +++ b/src/quicktemplates2/qquicktextarea.cpp @@ -194,7 +194,7 @@ void QQuickTextAreaPrivate::inheritFont(const QFont &font) QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); - const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont); + const QFont defaultFont = QQuickTheme::themeFont(QQuickTheme::EditorFont); const QFont resolvedFont = parentFont.resolve(defaultFont); setFont_helper(resolvedFont); @@ -236,7 +236,7 @@ void QQuickTextAreaPrivate::inheritPalette(const QPalette &palette) QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - const QPalette defaultPalette = QQuickControlPrivate::themePalette(QPlatformTheme::TextEditPalette); + const QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::TextEditPalette); const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); setPalette_helper(resolvedPalette); @@ -566,6 +566,30 @@ void QQuickTextArea::setPlaceholderText(const QString &text) } /*! + \qmlproperty color QtQuick.Controls::TextArea::placeholderTextColor + \since QtQuick.Controls 2.5 (Qt 5.12) + + This property holds the color of placeholderText. + + \sa placeholderText +*/ +QColor QQuickTextArea::placeholderTextColor() const +{ + Q_D(const QQuickTextArea); + return d->placeholderColor; +} + +void QQuickTextArea::setPlaceholderTextColor(const QColor &color) +{ + Q_D(QQuickTextArea); + if (d->placeholderColor == color) + return; + + d->placeholderColor = color; + emit placeholderTextColorChanged(); +} + +/*! \qmlproperty enumeration QtQuick.Controls::TextArea::focusReason \include qquickcontrol-focusreason.qdocinc diff --git a/src/quicktemplates2/qquicktextarea_p.h b/src/quicktemplates2/qquicktextarea_p.h index 5482ceae..346438ea 100644 --- a/src/quicktemplates2/qquicktextarea_p.h +++ b/src/quicktemplates2/qquicktextarea_p.h @@ -74,6 +74,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextArea : public QQuickTextEdit // 2.3 (Qt 5.10) Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) Q_CLASSINFO("DeferredPropertyNames", "background") + // 2.5 (Qt 5.12) + Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION 5) public: explicit QQuickTextArea(QQuickItem *parent = nullptr); @@ -108,6 +110,10 @@ public: void setPalette(const QPalette &palette); void resetPalette(); + // 2.5 (Qt 5.12) + QColor placeholderTextColor() const; + void setPlaceholderTextColor(const QColor &color); + Q_SIGNALS: void fontChanged(); void implicitWidthChanged3(); @@ -123,6 +129,8 @@ Q_SIGNALS: Q_REVISION(1) void hoverEnabledChanged(); // 2.3 (Qt 5.10) Q_REVISION(3) void paletteChanged(); + // 2.5 (Qt 5.12) + Q_REVISION(5) void placeholderTextColorChanged(); protected: void classBegin() override; diff --git a/src/quicktemplates2/qquicktextarea_p_p.h b/src/quicktemplates2/qquicktextarea_p_p.h index 8621c61c..c271660a 100644 --- a/src/quicktemplates2/qquicktextarea_p_p.h +++ b/src/quicktemplates2/qquicktextarea_p_p.h @@ -142,6 +142,7 @@ public: QPalette resolvedPalette; QQuickDeferredPointer<QQuickItem> background; QString placeholder; + QColor placeholderColor; Qt::FocusReason focusReason; QQuickPressHandler pressHandler; QQuickFlickable *flickable; diff --git a/src/quicktemplates2/qquicktextfield.cpp b/src/quicktemplates2/qquicktextfield.cpp index 49f9b4c8..385ea48e 100644 --- a/src/quicktemplates2/qquicktextfield.cpp +++ b/src/quicktemplates2/qquicktextfield.cpp @@ -168,7 +168,7 @@ void QQuickTextFieldPrivate::inheritFont(const QFont &font) QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); - const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont); + const QFont defaultFont = QQuickTheme::themeFont(QQuickTheme::EditorFont); const QFont resolvedFont = parentFont.resolve(defaultFont); setFont_helper(resolvedFont); @@ -210,7 +210,7 @@ void QQuickTextFieldPrivate::inheritPalette(const QPalette &palette) QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - const QPalette defaultPalette = QQuickControlPrivate::themePalette(QPlatformTheme::TextLineEditPalette); + const QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::TextLineEditPalette); const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); setPalette_helper(resolvedPalette); @@ -428,6 +428,30 @@ void QQuickTextField::setPlaceholderText(const QString &text) } /*! + \qmlproperty color QtQuick.Controls::TextField::placeholderTextColor + \since QtQuick.Controls 2.5 (Qt 5.12) + + This property holds the color of placeholderText. + + \sa placeholderText +*/ +QColor QQuickTextField::placeholderTextColor() const +{ + Q_D(const QQuickTextField); + return d->placeholderColor; +} + +void QQuickTextField::setPlaceholderTextColor(const QColor &color) +{ + Q_D(QQuickTextField); + if (d->placeholderColor == color) + return; + + d->placeholderColor = color; + emit placeholderTextColorChanged(); +} + +/*! \qmlproperty enumeration QtQuick.Controls::TextField::focusReason \include qquickcontrol-focusreason.qdocinc diff --git a/src/quicktemplates2/qquicktextfield_p.h b/src/quicktemplates2/qquicktextfield_p.h index 4757bd2d..b2e77342 100644 --- a/src/quicktemplates2/qquicktextfield_p.h +++ b/src/quicktemplates2/qquicktextfield_p.h @@ -73,6 +73,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextField : public QQuickTextInput // 2.3 (Qt 5.10) Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) Q_CLASSINFO("DeferredPropertyNames", "background") + // 2.5 (Qt 5.12) + Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION 5) public: explicit QQuickTextField(QQuickItem *parent = nullptr); @@ -101,6 +103,9 @@ public: QPalette palette() const; void setPalette(const QPalette &palette); void resetPalette(); + // 2.5 (Qt 5.12) + QColor placeholderTextColor() const; + void setPlaceholderTextColor(const QColor &color); Q_SIGNALS: void fontChanged(); @@ -117,6 +122,8 @@ Q_SIGNALS: Q_REVISION(1) void hoverEnabledChanged(); // 2.3 (Qt 5.10) Q_REVISION(3) void paletteChanged(); + // 2.5 (Qt 5.12) + Q_REVISION(5) void placeholderTextColorChanged(); protected: void classBegin() override; diff --git a/src/quicktemplates2/qquicktextfield_p_p.h b/src/quicktemplates2/qquicktextfield_p_p.h index 41843370..13a20e32 100644 --- a/src/quicktemplates2/qquicktextfield_p_p.h +++ b/src/quicktemplates2/qquicktextfield_p_p.h @@ -130,6 +130,7 @@ public: QPalette resolvedPalette; QQuickDeferredPointer<QQuickItem> background; QString placeholder; + QColor placeholderColor; Qt::FocusReason focusReason; QQuickPressHandler pressHandler; }; diff --git a/src/quicktemplates2/qquicktheme.cpp b/src/quicktemplates2/qquicktheme.cpp new file mode 100644 index 00000000..02389ed0 --- /dev/null +++ b/src/quicktemplates2/qquicktheme.cpp @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquicktheme_p.h" +#include "qquicktheme_p_p.h" + +#include <QtGui/qpa/qplatformtheme.h> +#include <QtGui/private/qguiapplication_p.h> + +QT_BEGIN_NAMESPACE + +QScopedPointer<QQuickTheme> QQuickThemePrivate::current; + +QQuickTheme::QQuickTheme() + : d_ptr(new QQuickThemePrivate) +{ +} + +QQuickTheme::~QQuickTheme() +{ +} + +QQuickTheme *QQuickTheme::current() +{ + return QQuickThemePrivate::current.data(); +} + +void QQuickTheme::setCurrent(QQuickTheme *theme) +{ + QQuickThemePrivate::current.reset(theme); +} + +QFont QQuickTheme::themeFont(Font type) +{ + const QFont *font = nullptr; + if (QQuickTheme *theme = current()) + font = theme->font(type); + else if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) + font = theme->font(static_cast<QPlatformTheme::Font>(type)); + + if (font) { + QFont f = *font; + if (type == SystemFont) + f.resolve(0); + return f; + } + + return QFont(); +} + +QPalette QQuickTheme::themePalette(Palette type) +{ + const QPalette *palette = nullptr; + if (QQuickTheme *theme = current()) + palette = theme->palette(type); + else if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) + palette = theme->palette(static_cast<QPlatformTheme::Palette>(type)); + + if (palette) { + QPalette f = *palette; + if (type == SystemPalette) + f.resolve(0); + return f; + } + + return QPalette(); +} + +const QFont *QQuickTheme::font(Font type) const +{ + Q_D(const QQuickTheme); + Q_UNUSED(type) + return d->defaultFont.data(); +} + +const QPalette *QQuickTheme::palette(Palette type) const +{ + Q_D(const QQuickTheme); + Q_UNUSED(type) + return d->defaultPalette.data(); +} + +void QQuickTheme::setDefaultFont(const QFont *defaultFont) +{ + Q_D(QQuickTheme); + d->defaultFont.reset(defaultFont); + resolveFonts(defaultFont ? *defaultFont : QFont()); +} + +void QQuickTheme::setDefaultPalette(const QPalette *defaultPalette) +{ + Q_D(QQuickTheme); + d->defaultPalette.reset(defaultPalette); + resolvePalettes(defaultPalette ? *defaultPalette : QPalette()); +} + +void QQuickTheme::resolveFonts(const QFont &defaultFont) +{ + Q_UNUSED(defaultFont) +} + +void QQuickTheme::resolvePalettes(const QPalette &defaultPalette) +{ + Q_UNUSED(defaultPalette) +} + +QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktheme_p.h b/src/quicktemplates2/qquicktheme_p.h new file mode 100644 index 00000000..f4efd359 --- /dev/null +++ b/src/quicktemplates2/qquicktheme_p.h @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKTHEME_P_H +#define QQUICKTHEME_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> +#include <QtCore/qscopedpointer.h> +#include <QtGui/qfont.h> +#include <QtGui/qpalette.h> + +QT_BEGIN_NAMESPACE + +class QQuickThemePrivate; + +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTheme +{ +public: + QQuickTheme(); + virtual ~QQuickTheme(); + + static QQuickTheme *current(); + static void setCurrent(QQuickTheme *theme); + + enum Font { + SystemFont, + MenuFont, + MenuBarFont, + MenuItemFont, + MessageBoxFont, + LabelFont, + TipLabelFont, + StatusBarFont, + TitleBarFont, + MdiSubWindowTitleFont, + DockWidgetTitleFont, + PushButtonFont, + CheckBoxFont, + RadioButtonFont, + ToolButtonFont, + ItemViewFont, + ListViewFont, + HeaderViewFont, + ListBoxFont, + ComboMenuItemFont, + ComboLineEditFont, + SmallFont, + MiniFont, + FixedFont, + GroupBoxTitleFont, + TabButtonFont, + EditorFont, + NFonts + }; + + enum Palette { + SystemPalette, + ToolTipPalette, + ToolButtonPalette, + ButtonPalette, + CheckBoxPalette, + RadioButtonPalette, + HeaderPalette, + ComboBoxPalette, + ItemViewPalette, + MessageBoxLabelPelette, + MessageBoxLabelPalette = MessageBoxLabelPelette, + TabBarPalette, + LabelPalette, + GroupBoxPalette, + MenuPalette, + MenuBarPalette, + TextEditPalette, + TextLineEditPalette, + NPalettes + }; + + static QFont themeFont(Font type); + static QPalette themePalette(Palette type); + + virtual const QFont *font(Font type = SystemFont) const; + virtual const QPalette *palette(Palette type = SystemPalette) const; + + void setDefaultFont(const QFont *defaultFont); + void setDefaultPalette(const QPalette *defaultPalette); + +protected: + virtual void resolveFonts(const QFont &defaultFont); + virtual void resolvePalettes(const QPalette &defaultPalette); + +private: + Q_DISABLE_COPY(QQuickTheme) + Q_DECLARE_PRIVATE(QQuickTheme) + QScopedPointer<QQuickThemePrivate> d_ptr; +}; + +QT_END_NAMESPACE + +#endif // QQUICKTHEME_P_H diff --git a/src/quickcontrols2/qquicktheme_p.h b/src/quicktemplates2/qquicktheme_p_p.h index 098ac7f1..b8cdc4aa 100644 --- a/src/quickcontrols2/qquicktheme_p.h +++ b/src/quicktemplates2/qquicktheme_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2017 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL3$ ** Commercial License Usage @@ -34,8 +34,8 @@ ** ****************************************************************************/ -#ifndef QQUICKTHEME_P_H -#define QQUICKTHEME_P_H +#ifndef QQUICKTHEME_P_P_H +#define QQUICKTHEME_P_P_H // // W A R N I N G @@ -48,30 +48,23 @@ // We mean it. // -#include <QtQuickControls2/private/qquickproxytheme_p.h> -#include <QtCore/qscopedpointer.h> -#include <QtGui/qfont.h> -#include <QtGui/qpalette.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickTheme : public QQuickProxyTheme +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickThemePrivate { public: - QQuickTheme(const QString &name); + static QQuickThemePrivate *get(QQuickTheme *theme) + { + return theme->d_func(); + } - const QFont *font(Font type = SystemFont) const override; - const QPalette *palette(Palette type = SystemPalette) const override; - -protected: - QFont resolveFont(const QFont &font) const; - QPalette resolvePalette(const QPalette &palette) const; - -private: - QScopedPointer<QFont> m_styleFont; - QScopedPointer<QPalette> m_stylePalette; + static QScopedPointer<QQuickTheme> current; + QScopedPointer<const QFont> defaultFont; + QScopedPointer<const QPalette> defaultPalette; }; QT_END_NAMESPACE -#endif // QQUICKTHEME_P_H +#endif // QQUICKTHEME_P_P_H diff --git a/src/quicktemplates2/qquicktoolbar.cpp b/src/quicktemplates2/qquicktoolbar.cpp index 99775c6a..77288547 100644 --- a/src/quicktemplates2/qquicktoolbar.cpp +++ b/src/quicktemplates2/qquicktoolbar.cpp @@ -143,7 +143,7 @@ void QQuickToolBar::setPosition(Position position) QPalette QQuickToolBar::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ToolButtonPalette); + return QQuickTheme::themePalette(QQuickTheme::ToolButtonPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquicktoolbutton.cpp b/src/quicktemplates2/qquicktoolbutton.cpp index f87a58b2..7a44792b 100644 --- a/src/quicktemplates2/qquicktoolbutton.cpp +++ b/src/quicktemplates2/qquicktoolbutton.cpp @@ -71,12 +71,12 @@ QQuickToolButton::QQuickToolButton(QQuickItem *parent) QFont QQuickToolButton::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ToolButtonFont); + return QQuickTheme::themeFont(QQuickTheme::ToolButtonFont); } QPalette QQuickToolButton::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ToolButtonPalette); + return QQuickTheme::themePalette(QQuickTheme::ToolButtonPalette); } QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktoolseparator.cpp b/src/quicktemplates2/qquicktoolseparator.cpp index 2ec7799f..80d5fc86 100644 --- a/src/quicktemplates2/qquicktoolseparator.cpp +++ b/src/quicktemplates2/qquicktoolseparator.cpp @@ -135,7 +135,7 @@ bool QQuickToolSeparator::isVertical() const QPalette QQuickToolSeparator::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ToolButtonPalette); + return QQuickTheme::themePalette(QQuickTheme::ToolButtonPalette); } #if QT_CONFIG(accessibility) diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp index 1bf6ca55..b186d2b0 100644 --- a/src/quicktemplates2/qquicktooltip.cpp +++ b/src/quicktemplates2/qquicktooltip.cpp @@ -276,14 +276,39 @@ QQuickToolTipAttached *QQuickToolTip::qmlAttachedProperties(QObject *object) return new QQuickToolTipAttached(object); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlmethod void QtQuick.Controls::ToolTip::show(string text, int timeout = -1) + + This method shows the tooltip with \a text and \a timeout (milliseconds). +*/ +void QQuickToolTip::show(const QString &text, int ms) +{ + if (ms >= 0) + setTimeout(ms); + setText(text); + open(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlmethod void QtQuick.Controls::ToolTip::hide() + + This method hides the tooltip. +*/ +void QQuickToolTip::hide() +{ + close(); +} + QFont QQuickToolTip::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::TipLabelFont); + return QQuickTheme::themeFont(QQuickTheme::TipLabelFont); } QPalette QQuickToolTip::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ToolTipPalette); + return QQuickTheme::themePalette(QQuickTheme::ToolTipPalette); } void QQuickToolTip::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) @@ -520,10 +545,8 @@ void QQuickToolTipAttached::show(const QString &text, int ms) tip->resetWidth(); tip->resetHeight(); tip->setParentItem(qobject_cast<QQuickItem *>(parent())); - tip->setTimeout(ms >= 0 ? ms : d->timeout); tip->setDelay(d->delay); - tip->setText(text); - tip->open(); + tip->show(text, ms >= 0 ? ms : d->timeout); } /*! diff --git a/src/quicktemplates2/qquicktooltip_p.h b/src/quicktemplates2/qquicktooltip_p.h index 60b02502..432bdd8e 100644 --- a/src/quicktemplates2/qquicktooltip_p.h +++ b/src/quicktemplates2/qquicktooltip_p.h @@ -84,6 +84,10 @@ Q_SIGNALS: void delayChanged(); void timeoutChanged(); +public Q_SLOTS: + Q_REVISION(5) void show(const QString &text, int ms = -1); + Q_REVISION(5) void hide(); + protected: QFont defaultFont() const override; QPalette defaultPalette() const override; diff --git a/src/quicktemplates2/qquicktumbler.cpp b/src/quicktemplates2/qquicktumbler.cpp index efa61dad..fa3a5ce4 100644 --- a/src/quicktemplates2/qquicktumbler.cpp +++ b/src/quicktemplates2/qquicktumbler.cpp @@ -70,7 +70,8 @@ QT_BEGIN_NAMESPACE The API is similar to that of views like \l ListView and \l PathView; a \l model and \l delegate can be set, and the \l count and \l currentItem - properties provide read-only access to information about the view. + properties provide read-only access to information about the view. To + position the view at a certain index, use \l positionViewAtIndex(). Unlike views like \l PathView and \l ListView, however, there is always a current item (when the model isn't empty). This means that when \l count is @@ -350,6 +351,8 @@ int QQuickTumbler::count() const The value of this property is \c -1 when \l count is equal to \c 0. In all other cases, it will be greater than or equal to \c 0. + + \sa currentItem, positionViewAtIndex() */ int QQuickTumbler::currentIndex() const { @@ -410,6 +413,8 @@ void QQuickTumbler::setCurrentIndex(int currentIndex) \readonly This property holds the item at the current index. + + \sa currentIndex, positionViewAtIndex() */ QQuickItem *QQuickTumbler::currentItem() const { @@ -511,6 +516,41 @@ bool QQuickTumbler::isMoving() const return d->view && d->view->property("moving").toBool(); } +/*! + \qmlmethod void QtQuick.Controls::Tumbler::positionViewAtIndex(int index, PositionMode mode) + \since QtQuick.Controls 2.5 (Qt 5.12) + + Positions the view so that the \a index is at the position specified by \a mode. + + For example: + + \code + positionViewAtIndex(10, Tumbler.Center) + \endcode + + If \l wrap is true (the default), the modes available to \l {PathView}'s + \l {PathView::}{positionViewAtIndex()} function + are available, otherwise the modes available to \l {ListView}'s + \l {ListView::}{positionViewAtIndex()} function + are available. + + \note There is a known limitation that using \c Tumbler.Beginning when \l + wrap is \c true will result in the wrong item being positioned at the top + of view. As a workaround, pass \c {index - 1}. + + \sa currentIndex +*/ +void QQuickTumbler::positionViewAtIndex(int index, QQuickTumbler::PositionMode mode) +{ + Q_D(QQuickTumbler); + if (!d->view) { + d->warnAboutIncorrectContentItem(); + return; + } + + QMetaObject::invokeMethod(d->view, "positionViewAtIndex", Q_ARG(int, index), Q_ARG(int, mode)); +} + void QQuickTumbler::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QQuickTumbler); @@ -609,7 +649,7 @@ void QQuickTumblerPrivate::setupViewData(QQuickItem *newControlContentItem) return; if (viewContentItemType == QQuickTumblerPrivate::UnsupportedContentItemType) { - qWarning() << "Tumbler: contentItem must contain either a PathView or a ListView"; + warnAboutIncorrectContentItem(); return; } @@ -636,6 +676,12 @@ void QQuickTumblerPrivate::setupViewData(QQuickItem *newControlContentItem) calculateDisplacements(); } +void QQuickTumblerPrivate::warnAboutIncorrectContentItem() +{ + Q_Q(QQuickTumbler); + qmlWarning(q) << "Tumbler: contentItem must contain either a PathView or a ListView"; +} + void QQuickTumblerPrivate::syncCurrentIndex() { const int actualViewIndex = view->property("currentIndex").toInt(); @@ -784,12 +830,12 @@ void QQuickTumbler::updatePolish() QFont QQuickTumbler::defaultFont() const { - return QQuickControlPrivate::themeFont(QPlatformTheme::ItemViewFont); + return QQuickTheme::themeFont(QQuickTheme::ItemViewFont); } QPalette QQuickTumbler::defaultPalette() const { - return QQuickControlPrivate::themePalette(QPlatformTheme::ItemViewPalette); + return QQuickTheme::themePalette(QQuickTheme::ItemViewPalette); } QQuickTumblerAttachedPrivate::QQuickTumblerAttachedPrivate() diff --git a/src/quicktemplates2/qquicktumbler_p.h b/src/quicktemplates2/qquicktumbler_p.h index 5d4df4a7..3f7c06db 100644 --- a/src/quicktemplates2/qquicktumbler_p.h +++ b/src/quicktemplates2/qquicktumbler_p.h @@ -100,6 +100,19 @@ public: // 2.2 (Qt 5.9) bool isMoving() const; + enum PositionMode { + Beginning, + Center, + End, + Visible, // ListView-only + Contain, + SnapPosition + }; + Q_ENUM(PositionMode) + + // 2.5 (Qt 5.12) + Q_REVISION(5) Q_INVOKABLE void positionViewAtIndex(int index, PositionMode mode); + Q_SIGNALS: void modelChanged(); void countChanged(); diff --git a/src/quicktemplates2/qquicktumbler_p_p.h b/src/quicktemplates2/qquicktumbler_p_p.h index 75b1a396..6f0879b3 100644 --- a/src/quicktemplates2/qquicktumbler_p_p.h +++ b/src/quicktemplates2/qquicktumbler_p_p.h @@ -105,6 +105,7 @@ public: void disconnectFromView(); void setupViewData(QQuickItem *newControlContentItem); + void warnAboutIncorrectContentItem(); void syncCurrentIndex(); void setCount(int newCount); diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri index b2193ec0..c9ccc420 100644 --- a/src/quicktemplates2/quicktemplates2.pri +++ b/src/quicktemplates2/quicktemplates2.pri @@ -59,6 +59,7 @@ HEADERS += \ $$PWD/qquickpopuppositioner_p_p.h \ $$PWD/qquickpresshandler_p_p.h \ $$PWD/qquickprogressbar_p.h \ + $$PWD/qquickproxytheme_p.h \ $$PWD/qquickradiobutton_p.h \ $$PWD/qquickradiodelegate_p.h \ $$PWD/qquickrangeslider_p.h \ @@ -86,6 +87,8 @@ HEADERS += \ $$PWD/qquicktextarea_p_p.h \ $$PWD/qquicktextfield_p.h \ $$PWD/qquicktextfield_p_p.h \ + $$PWD/qquicktheme_p.h \ + $$PWD/qquicktheme_p_p.h \ $$PWD/qquicktoolbar_p.h \ $$PWD/qquicktoolbutton_p.h \ $$PWD/qquicktoolseparator_p.h \ @@ -133,6 +136,7 @@ SOURCES += \ $$PWD/qquickpopuppositioner.cpp \ $$PWD/qquickpresshandler.cpp \ $$PWD/qquickprogressbar.cpp \ + $$PWD/qquickproxytheme.cpp \ $$PWD/qquickradiobutton.cpp \ $$PWD/qquickradiodelegate.cpp \ $$PWD/qquickrangeslider.cpp \ @@ -155,6 +159,7 @@ SOURCES += \ $$PWD/qquicktabbutton.cpp \ $$PWD/qquicktextarea.cpp \ $$PWD/qquicktextfield.cpp \ + $$PWD/qquicktheme.cpp \ $$PWD/qquicktoolbar.cpp \ $$PWD/qquicktoolbutton.cpp \ $$PWD/qquicktoolseparator.cpp \ diff --git a/tests/auto/controls/data/tst_control.qml b/tests/auto/controls/data/tst_control.qml index a4d06fc1..30feb4be 100644 --- a/tests/auto/controls/data/tst_control.qml +++ b/tests/auto/controls/data/tst_control.qml @@ -85,11 +85,42 @@ TestCase { var control = createTemporaryObject(component, testCase) verify(control) + var paddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "paddingChanged"}) + verify(paddingSpy.valid) + + var topPaddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "topPaddingChanged"}) + verify(topPaddingSpy.valid) + + var leftPaddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "leftPaddingChanged"}) + verify(leftPaddingSpy.valid) + + var rightPaddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "rightPaddingChanged"}) + verify(rightPaddingSpy.valid) + + var bottomPaddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "bottomPaddingChanged"}) + verify(bottomPaddingSpy.valid) + + var horizontalPaddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "horizontalPaddingChanged"}) + verify(horizontalPaddingSpy.valid) + + var verticalPaddingSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "verticalPaddingChanged"}) + verify(verticalPaddingSpy.valid) + + var paddingChanges = 0 + var topPaddingChanges = 0 + var leftPaddingChanges = 0 + var rightPaddingChanges = 0 + var bottomPaddingChanges = 0 + var horizontalPaddingChanges = 0 + var verticalPaddingChanges = 0 + compare(control.padding, 0) compare(control.topPadding, 0) compare(control.leftPadding, 0) compare(control.rightPadding, 0) compare(control.bottomPadding, 0) + compare(control.horizontalPadding, 0) + compare(control.verticalPadding, 0) compare(control.availableWidth, 0) compare(control.availableHeight, 0) @@ -102,6 +133,15 @@ TestCase { compare(control.leftPadding, 10) compare(control.rightPadding, 10) compare(control.bottomPadding, 10) + compare(control.horizontalPadding, 10) + compare(control.verticalPadding, 10) + compare(paddingSpy.count, ++paddingChanges) + compare(topPaddingSpy.count, ++topPaddingChanges) + compare(leftPaddingSpy.count, ++leftPaddingChanges) + compare(rightPaddingSpy.count, ++rightPaddingChanges) + compare(bottomPaddingSpy.count, ++bottomPaddingChanges) + compare(horizontalPaddingSpy.count, ++horizontalPaddingChanges) + compare(verticalPaddingSpy.count, ++verticalPaddingChanges) control.topPadding = 20 compare(control.padding, 10) @@ -109,6 +149,15 @@ TestCase { compare(control.leftPadding, 10) compare(control.rightPadding, 10) compare(control.bottomPadding, 10) + compare(control.horizontalPadding, 10) + compare(control.verticalPadding, 10) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, ++topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) control.leftPadding = 30 compare(control.padding, 10) @@ -116,6 +165,15 @@ TestCase { compare(control.leftPadding, 30) compare(control.rightPadding, 10) compare(control.bottomPadding, 10) + compare(control.horizontalPadding, 10) + compare(control.verticalPadding, 10) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, ++leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) control.rightPadding = 40 compare(control.padding, 10) @@ -123,6 +181,15 @@ TestCase { compare(control.leftPadding, 30) compare(control.rightPadding, 40) compare(control.bottomPadding, 10) + compare(control.horizontalPadding, 10) + compare(control.verticalPadding, 10) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, ++rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) control.bottomPadding = 50 compare(control.padding, 10) @@ -130,6 +197,15 @@ TestCase { compare(control.leftPadding, 30) compare(control.rightPadding, 40) compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 10) + compare(control.verticalPadding, 10) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, ++bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) control.padding = 60 compare(control.padding, 60) @@ -137,6 +213,143 @@ TestCase { compare(control.leftPadding, 30) compare(control.rightPadding, 40) compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 60) + compare(control.verticalPadding, 60) + compare(paddingSpy.count, ++paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, ++horizontalPaddingChanges) + compare(verticalPaddingSpy.count, ++verticalPaddingChanges) + + control.horizontalPadding = 80 + compare(control.padding, 60) + compare(control.topPadding, 20) + compare(control.leftPadding, 30) + compare(control.rightPadding, 40) + compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 80) + compare(control.verticalPadding, 60) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, ++horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) + + control.verticalPadding = 90 + compare(control.padding, 60) + compare(control.topPadding, 20) + compare(control.leftPadding, 30) + compare(control.rightPadding, 40) + compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 80) + compare(control.verticalPadding, 90) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, ++verticalPaddingChanges) + + control.leftPadding = undefined + compare(control.padding, 60) + compare(control.topPadding, 20) + compare(control.leftPadding, 80) + compare(control.rightPadding, 40) + compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 80) + compare(control.verticalPadding, 90) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, ++leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) + + control.rightPadding = undefined + compare(control.padding, 60) + compare(control.topPadding, 20) + compare(control.leftPadding, 80) + compare(control.rightPadding, 80) + compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 80) + compare(control.verticalPadding, 90) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, ++rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) + + control.topPadding = undefined + compare(control.padding, 60) + compare(control.topPadding, 90) + compare(control.leftPadding, 80) + compare(control.rightPadding, 80) + compare(control.bottomPadding, 50) + compare(control.horizontalPadding, 80) + compare(control.verticalPadding, 90) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, ++topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) + + control.bottomPadding = undefined + compare(control.padding, 60) + compare(control.topPadding, 90) + compare(control.leftPadding, 80) + compare(control.rightPadding, 80) + compare(control.bottomPadding, 90) + compare(control.horizontalPadding, 80) + compare(control.verticalPadding, 90) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, ++bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) + + control.horizontalPadding = undefined + compare(control.padding, 60) + compare(control.topPadding, 90) + compare(control.leftPadding, 60) + compare(control.rightPadding, 60) + compare(control.bottomPadding, 90) + compare(control.horizontalPadding, 60) + compare(control.verticalPadding, 90) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, topPaddingChanges) + compare(leftPaddingSpy.count, ++leftPaddingChanges) + compare(rightPaddingSpy.count, ++rightPaddingChanges) + compare(bottomPaddingSpy.count, bottomPaddingChanges) + compare(horizontalPaddingSpy.count, ++horizontalPaddingChanges) + compare(verticalPaddingSpy.count, verticalPaddingChanges) + + control.verticalPadding = undefined + compare(control.padding, 60) + compare(control.topPadding, 60) + compare(control.leftPadding, 60) + compare(control.rightPadding, 60) + compare(control.bottomPadding, 60) + compare(control.horizontalPadding, 60) + compare(control.verticalPadding, 60) + compare(paddingSpy.count, paddingChanges) + compare(topPaddingSpy.count, ++topPaddingChanges) + compare(leftPaddingSpy.count, leftPaddingChanges) + compare(rightPaddingSpy.count, rightPaddingChanges) + compare(bottomPaddingSpy.count, ++bottomPaddingChanges) + compare(horizontalPaddingSpy.count, horizontalPaddingChanges) + compare(verticalPaddingSpy.count, ++verticalPaddingChanges) } function test_availableSize() { diff --git a/tests/auto/controls/data/tst_dialogbuttonbox.qml b/tests/auto/controls/data/tst_dialogbuttonbox.qml index 6faf0db4..27989703 100644 --- a/tests/auto/controls/data/tst_dialogbuttonbox.qml +++ b/tests/auto/controls/data/tst_dialogbuttonbox.qml @@ -196,6 +196,31 @@ TestCase { compare(roleSpy.count, 1) } + function test_buttonLayout_data() { + return [ + { tag: "WinLayout", buttonLayout: DialogButtonBox.WinLayout, button1Role: DialogButtonBox.AcceptRole, button2Role: DialogButtonBox.RejectRole }, + { tag: "MacLayout", buttonLayout: DialogButtonBox.MacLayout, button1Role: DialogButtonBox.RejectRole, button2Role: DialogButtonBox.AcceptRole }, + { tag: "KdeLayout", buttonLayout: DialogButtonBox.KdeLayout, button1Role: DialogButtonBox.AcceptRole, button2Role: DialogButtonBox.RejectRole }, + { tag: "GnomeLayout", buttonLayout: DialogButtonBox.GnomeLayout, button1Role: DialogButtonBox.RejectRole, button2Role: DialogButtonBox.AcceptRole }, + { tag: "AndroidLayout", buttonLayout: DialogButtonBox.AndroidLayout, button1Role: DialogButtonBox.RejectRole, button2Role: DialogButtonBox.AcceptRole } + ] + } + + function test_buttonLayout(data) { + var control = createTemporaryObject(buttonBox, testCase, {buttonLayout: data.buttonLayout, standardButtons: DialogButtonBox.Ok|DialogButtonBox.Cancel}) + verify(control) + + compare(control.count, 2) + + var button1 = control.itemAt(0) + verify(button1) + compare(button1.DialogButtonBox.buttonRole, data.button1Role) + + var button2 = control.itemAt(1) + verify(button2) + compare(button2.DialogButtonBox.buttonRole, data.button2Role) + } + function test_implicitSize_data() { return [ { tag: "Ok", standardButtons: DialogButtonBox.Ok }, diff --git a/tests/auto/controls/data/tst_textarea.qml b/tests/auto/controls/data/tst_textarea.qml index 7c47aa25..ea30c8d6 100644 --- a/tests/auto/controls/data/tst_textarea.qml +++ b/tests/auto/controls/data/tst_textarea.qml @@ -465,4 +465,20 @@ TestCase { control.destroy() wait(0) } + + function test_placeholderTextColor() { + var control = createTemporaryObject(textArea, testCase) + verify(control) + + // usually default value should not be pure opacue black + verify(control.placeholderTextColor !== "#ff000000") + control.placeholderTextColor = "#12345678" + compare(control.placeholderTextColor, "#12345678") + + for (var i = 0; i < control.children.length; ++i) { + if (control.children[i].hasOwnProperty("text")) + compare(control.children[i].color, control.placeholderTextColor) // placeholder.color + } + } + } diff --git a/tests/auto/controls/data/tst_textfield.qml b/tests/auto/controls/data/tst_textfield.qml index 0fee7363..1bdf5151 100644 --- a/tests/auto/controls/data/tst_textfield.qml +++ b/tests/auto/controls/data/tst_textfield.qml @@ -435,4 +435,21 @@ TestCase { mouseClick(control, control.width / 2, control.height / 2, Qt.LeftButton | Qt.RightButton) compare(control.selectedText, "") } + + // QTBUG-66260 + function test_placeholderTextColor() { + var control = createTemporaryObject(textField, testCase) + verify(control) + + // usually default value should not be pure opacue black + verify(control.placeholderTextColor !== "#ff000000") + control.placeholderTextColor = "#12345678" + compare(control.placeholderTextColor, "#12345678") + + for (var i = 0; i < control.children.length; ++i) { + if (control.children[i].hasOwnProperty("text")) + compare(control.children[i].color, control.placeholderTextColor) // placeholder.color + } + + } } diff --git a/tests/auto/controls/data/tst_tooltip.qml b/tests/auto/controls/data/tst_tooltip.qml index e7cc6787..99b6ee14 100644 --- a/tests/auto/controls/data/tst_tooltip.qml +++ b/tests/auto/controls/data/tst_tooltip.qml @@ -329,4 +329,22 @@ TestCase { verify(tooltip.visible) } } + + Component { + id: nonAttachedToolTipComponent + ToolTip { } + } + + function test_nonAttachedToolTipShowAndHide() { + var tip = createTemporaryObject(nonAttachedToolTipComponent, testCase) + verify(tip) + tip.show("hello"); + verify(tip.visible) + verify(tip.text === "hello") + tip.hide() + tryCompare(tip, "visible", false) + tip.show("delay", 200) + verify(tip.visible) + tryCompare(tip, "visible", false) + } } diff --git a/tests/auto/controls/data/tst_tumbler.qml b/tests/auto/controls/data/tst_tumbler.qml index 058cbeca..d64f7c9c 100644 --- a/tests/auto/controls/data/tst_tumbler.qml +++ b/tests/auto/controls/data/tst_tumbler.qml @@ -107,6 +107,10 @@ TestCase { return Qt.point(tumblerXCenter(), yCenter); } + function itemTopLeftPos(visualItemIndex) { + return Qt.point(tumbler.leftPadding, tumbler.topPadding + (tumblerDelegateHeight * visualItemIndex)); + } + function checkItemSizes() { var contentChildren = tumbler.wrap ? tumblerView.children : tumblerView.contentItem.children; verify(contentChildren.length >= tumbler.count); @@ -131,6 +135,21 @@ TestCase { return null; } + function findDelegateWithText(parent, text) { + for (var i = 0; i < parent.children.length; ++i) { + var child = parent.children[i]; + if (child.hasOwnProperty("text") && child.text === text) { + return child; + } + + var grandChild = findDelegateWithText(child, text); + if (grandChild) + return grandChild; + } + + return null; + } + property Component noAttachedPropertiesDelegate: Text { text: modelData } @@ -1112,4 +1131,49 @@ TestCase { var label = row.label; compare(label.text, "2"); } + + function test_positionViewAtIndex_data() { + return [ + // Should be 20, 21, ... but there is a documented limitation for this in positionViewAtIndex()'s docs. + { tag: "wrap=true, mode=Beginning", wrap: true, mode: Tumbler.Beginning, expectedVisibleIndices: [21, 22, 23, 24, 25] }, + { tag: "wrap=true, mode=Center", wrap: true, mode: Tumbler.Center, expectedVisibleIndices: [18, 19, 20, 21, 22] }, + { tag: "wrap=true, mode=End", wrap: true, mode: Tumbler.End, expectedVisibleIndices: [16, 17, 18, 19, 20] }, + // Same as Beginning; should start at 20. + { tag: "wrap=true, mode=Contain", wrap: true, mode: Tumbler.Contain, expectedVisibleIndices: [21, 22, 23, 24, 25] }, + { tag: "wrap=true, mode=SnapPosition", wrap: true, mode: Tumbler.SnapPosition, expectedVisibleIndices: [18, 19, 20, 21, 22] }, + { tag: "wrap=false, mode=Beginning", wrap: false, mode: Tumbler.Beginning, expectedVisibleIndices: [20, 21, 22, 23, 24] }, + { tag: "wrap=false, mode=Center", wrap: false, mode: Tumbler.Center, expectedVisibleIndices: [18, 19, 20, 21, 22] }, + { tag: "wrap=false, mode=End", wrap: false, mode: Tumbler.End, expectedVisibleIndices: [16, 17, 18, 19, 20] }, + { tag: "wrap=false, mode=Visible", wrap: false, mode: Tumbler.Visible, expectedVisibleIndices: [16, 17, 18, 19, 20] }, + { tag: "wrap=false, mode=Contain", wrap: false, mode: Tumbler.Contain, expectedVisibleIndices: [16, 17, 18, 19, 20] }, + { tag: "wrap=false, mode=SnapPosition", wrap: false, mode: Tumbler.SnapPosition, expectedVisibleIndices: [18, 19, 20, 21, 22] } + ] + } + + function test_positionViewAtIndex(data) { + createTumbler({ wrap: data.wrap, model: 40, visibleItemCount: 5 }) + compare(tumbler.wrap, data.wrap) + + waitForRendering(tumbler) + + tumbler.positionViewAtIndex(20, data.mode) + tryCompare(tumbler, "moving", false) + + compare(tumbler.visibleItemCount, 5) + for (var i = 0; i < 5; ++i) { + // Find the item through its text, as that's easier than child/itemAt(). + var text = data.expectedVisibleIndices[i].toString() + var item = findDelegateWithText(tumblerView, text) + verify(item, "found no item with text \"" + text + "\"") + compare(item.text, data.expectedVisibleIndices[i].toString()) + + // Ensure that it's at the position we expect. + var expectedPos = itemTopLeftPos(i) + var actualPos = testCase.mapFromItem(item, 0, 0) + compare(actualPos.x, expectedPos.x, "expected delegate with text " + item.text + + " to have an x pos of " + expectedPos.x + " but it was " + actualPos.x) + compare(actualPos.y, expectedPos.y, "expected delegate with text " + item.text + + " to have an y pos of " + expectedPos.y + " but it was " + actualPos.y) + } + } } diff --git a/tests/auto/font/tst_font.cpp b/tests/auto/font/tst_font.cpp index 75942286..65dd4971 100644 --- a/tests/auto/font/tst_font.cpp +++ b/tests/auto/font/tst_font.cpp @@ -45,7 +45,7 @@ #include <QtQuickTemplates2/private/qquickapplicationwindow_p.h> #include <QtQuickTemplates2/private/qquickcontrol_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> -#include <QtQuickControls2/private/qquickproxytheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> using namespace QQuickVisualTestUtil; @@ -217,20 +217,18 @@ void tst_font::inheritance() QCOMPARE(grandChild->property("font").value<QFont>(), windowFont); } -class TestFontTheme : public QQuickProxyTheme +class TestFontTheme : public QQuickTheme { public: - TestFontTheme(QPlatformTheme *theme) : QQuickProxyTheme(theme) + TestFontTheme() { - std::fill(fonts, fonts + QPlatformTheme::NFonts, static_cast<QFont *>(0)); + std::fill(fonts, fonts + QQuickTheme::NFonts, static_cast<QFont *>(0)); - for (int i = QPlatformTheme::SystemFont; i < QPlatformTheme::NFonts; ++i) { + for (int i = QQuickTheme::SystemFont; i < QQuickTheme::NFonts; ++i) { QFont font = QFont(); font.setPixelSize(i + 10); fonts[i] = new QFont(font); } - - QGuiApplicationPrivate::platform_theme = this; } const QFont *font(Font type = SystemFont) const override @@ -239,73 +237,73 @@ public: } private: - QFont *fonts[QPlatformTheme::NFonts]; + QFont *fonts[QQuickTheme::NFonts]; }; -Q_DECLARE_METATYPE(QPlatformTheme::Font) +Q_DECLARE_METATYPE(QQuickTheme::Font) void tst_font::defaultFont_data() { QTest::addColumn<QString>("control"); - QTest::addColumn<QPlatformTheme::Font>("fontType"); - - QTest::newRow("AbstractButton") << "AbstractButton" << QPlatformTheme::SystemFont; - QTest::newRow("ApplicationWindow") << "ApplicationWindow" << QPlatformTheme::SystemFont; - QTest::newRow("Button") << "Button" << QPlatformTheme::PushButtonFont; - QTest::newRow("CheckBox") << "CheckBox" << QPlatformTheme::CheckBoxFont; - QTest::newRow("CheckDelegate") << "CheckDelegate" << QPlatformTheme::ListViewFont; - QTest::newRow("ComboBox") << "ComboBox" << QPlatformTheme::ComboMenuItemFont; - QTest::newRow("Container") << "Container" << QPlatformTheme::SystemFont; - QTest::newRow("Control") << "Control" << QPlatformTheme::SystemFont; - QTest::newRow("Dial") << "Dial" << QPlatformTheme::SystemFont; - QTest::newRow("Dialog") << "Dialog" << QPlatformTheme::SystemFont; - QTest::newRow("DialogButtonBox") << "DialogButtonBox" << QPlatformTheme::SystemFont; - QTest::newRow("Drawer") << "Drawer" << QPlatformTheme::SystemFont; - QTest::newRow("Frame") << "Frame" << QPlatformTheme::SystemFont; - QTest::newRow("GroupBox") << "GroupBox" << QPlatformTheme::GroupBoxTitleFont; - QTest::newRow("ItemDelegate") << "ItemDelegate" << QPlatformTheme::ItemViewFont; - QTest::newRow("Label") << "Label" << QPlatformTheme::LabelFont; - QTest::newRow("Menu") << "Menu" << QPlatformTheme::MenuFont; - QTest::newRow("MenuItem") << "MenuItem" << QPlatformTheme::MenuItemFont; - QTest::newRow("MenuSeparator") << "MenuSeparator" << QPlatformTheme::SystemFont; - QTest::newRow("Page") << "Page" << QPlatformTheme::SystemFont; - QTest::newRow("Pane") << "Pane" << QPlatformTheme::SystemFont; - QTest::newRow("Popup") << "Popup" << QPlatformTheme::SystemFont; - QTest::newRow("ProgressBar") << "ProgressBar" << QPlatformTheme::SystemFont; - QTest::newRow("RadioButton") << "RadioButton" << QPlatformTheme::RadioButtonFont; - QTest::newRow("RadioDelegate") << "RadioDelegate" << QPlatformTheme::ListViewFont; - QTest::newRow("RangeSlider") << "RangeSlider" << QPlatformTheme::SystemFont; - QTest::newRow("RoundButton") << "RoundButton" << QPlatformTheme::PushButtonFont; - QTest::newRow("ScrollBar") << "ScrollBar" << QPlatformTheme::SystemFont; - QTest::newRow("ScrollIndicator") << "ScrollIndicator" << QPlatformTheme::SystemFont; - QTest::newRow("Slider") << "Slider" << QPlatformTheme::SystemFont; - QTest::newRow("SpinBox") << "SpinBox" << QPlatformTheme::EditorFont; - QTest::newRow("SwipeDelegate") << "SwipeDelegate" << QPlatformTheme::ListViewFont; - QTest::newRow("Switch") << "Switch" << QPlatformTheme::SystemFont; // ### TODO: add QPlatformTheme::SwitchFont - QTest::newRow("SwitchDelegate") << "SwitchDelegate" << QPlatformTheme::ListViewFont; - QTest::newRow("TabBar") << "TabBar" << QPlatformTheme::SystemFont; - QTest::newRow("TabButton") << "TabButton" << QPlatformTheme::TabButtonFont; - QTest::newRow("TextArea") << "TextArea" << QPlatformTheme::EditorFont; - QTest::newRow("TextField") << "TextField" << QPlatformTheme::EditorFont; - QTest::newRow("ToolBar") << "ToolBar" << QPlatformTheme::SystemFont; - QTest::newRow("ToolButton") << "ToolButton" << QPlatformTheme::ToolButtonFont; - QTest::newRow("ToolSeparator") << "ToolSeparator" << QPlatformTheme::SystemFont; - QTest::newRow("ToolTip") << "ToolTip" << QPlatformTheme::TipLabelFont; - QTest::newRow("Tumbler") << "Tumbler" << QPlatformTheme::ItemViewFont; + QTest::addColumn<QQuickTheme::Font>("fontType"); + + QTest::newRow("AbstractButton") << "AbstractButton" << QQuickTheme::SystemFont; + QTest::newRow("ApplicationWindow") << "ApplicationWindow" << QQuickTheme::SystemFont; + QTest::newRow("Button") << "Button" << QQuickTheme::PushButtonFont; + QTest::newRow("CheckBox") << "CheckBox" << QQuickTheme::CheckBoxFont; + QTest::newRow("CheckDelegate") << "CheckDelegate" << QQuickTheme::ListViewFont; + QTest::newRow("ComboBox") << "ComboBox" << QQuickTheme::ComboMenuItemFont; + QTest::newRow("Container") << "Container" << QQuickTheme::SystemFont; + QTest::newRow("Control") << "Control" << QQuickTheme::SystemFont; + QTest::newRow("Dial") << "Dial" << QQuickTheme::SystemFont; + QTest::newRow("Dialog") << "Dialog" << QQuickTheme::SystemFont; + QTest::newRow("DialogButtonBox") << "DialogButtonBox" << QQuickTheme::SystemFont; + QTest::newRow("Drawer") << "Drawer" << QQuickTheme::SystemFont; + QTest::newRow("Frame") << "Frame" << QQuickTheme::SystemFont; + QTest::newRow("GroupBox") << "GroupBox" << QQuickTheme::GroupBoxTitleFont; + QTest::newRow("ItemDelegate") << "ItemDelegate" << QQuickTheme::ItemViewFont; + QTest::newRow("Label") << "Label" << QQuickTheme::LabelFont; + QTest::newRow("Menu") << "Menu" << QQuickTheme::MenuFont; + QTest::newRow("MenuItem") << "MenuItem" << QQuickTheme::MenuItemFont; + QTest::newRow("MenuSeparator") << "MenuSeparator" << QQuickTheme::SystemFont; + QTest::newRow("Page") << "Page" << QQuickTheme::SystemFont; + QTest::newRow("Pane") << "Pane" << QQuickTheme::SystemFont; + QTest::newRow("Popup") << "Popup" << QQuickTheme::SystemFont; + QTest::newRow("ProgressBar") << "ProgressBar" << QQuickTheme::SystemFont; + QTest::newRow("RadioButton") << "RadioButton" << QQuickTheme::RadioButtonFont; + QTest::newRow("RadioDelegate") << "RadioDelegate" << QQuickTheme::ListViewFont; + QTest::newRow("RangeSlider") << "RangeSlider" << QQuickTheme::SystemFont; + QTest::newRow("RoundButton") << "RoundButton" << QQuickTheme::PushButtonFont; + QTest::newRow("ScrollBar") << "ScrollBar" << QQuickTheme::SystemFont; + QTest::newRow("ScrollIndicator") << "ScrollIndicator" << QQuickTheme::SystemFont; + QTest::newRow("Slider") << "Slider" << QQuickTheme::SystemFont; + QTest::newRow("SpinBox") << "SpinBox" << QQuickTheme::EditorFont; + QTest::newRow("SwipeDelegate") << "SwipeDelegate" << QQuickTheme::ListViewFont; + QTest::newRow("Switch") << "Switch" << QQuickTheme::SystemFont; // ### TODO: add QQuickTheme::SwitchFont + QTest::newRow("SwitchDelegate") << "SwitchDelegate" << QQuickTheme::ListViewFont; + QTest::newRow("TabBar") << "TabBar" << QQuickTheme::SystemFont; + QTest::newRow("TabButton") << "TabButton" << QQuickTheme::TabButtonFont; + QTest::newRow("TextArea") << "TextArea" << QQuickTheme::EditorFont; + QTest::newRow("TextField") << "TextField" << QQuickTheme::EditorFont; + QTest::newRow("ToolBar") << "ToolBar" << QQuickTheme::SystemFont; + QTest::newRow("ToolButton") << "ToolButton" << QQuickTheme::ToolButtonFont; + QTest::newRow("ToolSeparator") << "ToolSeparator" << QQuickTheme::SystemFont; + QTest::newRow("ToolTip") << "ToolTip" << QQuickTheme::TipLabelFont; + QTest::newRow("Tumbler") << "Tumbler" << QQuickTheme::ItemViewFont; } void tst_font::defaultFont() { QFETCH(QString, control); - QFETCH(QPlatformTheme::Font, fontType); + QFETCH(QQuickTheme::Font, fontType); QQmlEngine engine; QQmlComponent component(&engine); component.setData(QString("import QtQuick.Controls 2.2; %1 { }").arg(control).toUtf8(), QUrl()); - // The call to setData() above causes QQuickDefaultTheme to be set as the platform theme, + // The call to setData() above causes QQuickDefaultTheme to be set as the current theme, // so we must make sure we only set our theme afterwards. - TestFontTheme theme(QGuiApplicationPrivate::platform_theme); + QQuickTheme::setCurrent(new TestFontTheme); QScopedPointer<QObject> object(component.create()); QVERIFY2(!object.isNull(), qPrintable(component.errorString())); @@ -313,16 +311,9 @@ void tst_font::defaultFont() QVariant var = object->property("font"); QVERIFY(var.isValid()); - const QFont *expectedFont = theme.font(fontType); - QVERIFY(expectedFont); - + QFont expectedFont = QQuickTheme::themeFont(fontType); QFont actualFont = var.value<QFont>(); - - if (actualFont != *expectedFont) { - qDebug() << QTest::currentDataTag() << actualFont << *expectedFont; - } - - QCOMPARE(actualFont, *expectedFont); + QCOMPARE(actualFont, expectedFont); } void tst_font::listView_data() diff --git a/tests/auto/palette/tst_palette.cpp b/tests/auto/palette/tst_palette.cpp index f74e358a..f0ce77f0 100644 --- a/tests/auto/palette/tst_palette.cpp +++ b/tests/auto/palette/tst_palette.cpp @@ -38,7 +38,6 @@ #include "../shared/visualtestutil.h" #include <QtGui/qpalette.h> -#include <QtGui/qpa/qplatformtheme.h> #include <QtGui/private/qguiapplication_p.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcomponent.h> @@ -46,7 +45,7 @@ #include <QtQuickTemplates2/private/qquickcontrol_p.h> #include <QtQuickTemplates2/private/qquickcontrol_p_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> -#include <QtQuickControls2/private/qquickproxytheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> using namespace QQuickVisualTestUtil; @@ -88,7 +87,7 @@ void tst_palette::palette_data() QTest::addColumn<QString>("testFile"); QTest::addColumn<QPalette>("expectedPalette"); - QPalette defaultPalette = QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette); + QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::SystemPalette); defaultPalette.setColor(QPalette::Base, QColor("#efefef")); defaultPalette.setColor(QPalette::Text, QColor("#101010")); @@ -172,7 +171,7 @@ void tst_palette::inheritance() QObject *grandChild = window->property("grandChild").value<QObject *>(); QVERIFY(control && child && grandChild); - QPalette defaultPalette = QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette); + QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::SystemPalette); defaultPalette.setColor(QPalette::Base, QColor("#efefef")); defaultPalette.setColor(QPalette::Text, QColor("#101010")); @@ -217,63 +216,61 @@ void tst_palette::inheritance() QCOMPARE(grandChild->property("palette").value<QPalette>(), windowPalette); } -class TestTheme : public QQuickProxyTheme +class TestTheme : public QQuickTheme { public: - TestTheme(QPlatformTheme *theme) : QQuickProxyTheme(theme) + TestTheme() { - std::fill(palettes, palettes + QPlatformTheme::NPalettes, static_cast<QPalette *>(0)); + std::fill(palettes, palettes + QQuickTheme::NPalettes, static_cast<QPalette *>(0)); QPalette palette = QPalette(); palette.setColor(QPalette::Window, Qt::gray); - palettes[QPlatformTheme::SystemPalette] = new QPalette(palette); + palettes[QQuickTheme::SystemPalette] = new QPalette(palette); palette.setColor(QPalette::ToolTipBase, Qt::yellow); - palettes[QPlatformTheme::ToolTipPalette] = new QPalette(palette); + palettes[QQuickTheme::ToolTipPalette] = new QPalette(palette); palette.setColor(QPalette::ButtonText, Qt::blue); - palettes[QPlatformTheme::ToolButtonPalette] = new QPalette(palette); + palettes[QQuickTheme::ToolButtonPalette] = new QPalette(palette); palette.setColor(QPalette::Button, Qt::red); - palettes[QPlatformTheme::ButtonPalette] = new QPalette(palette); + palettes[QQuickTheme::ButtonPalette] = new QPalette(palette); palette.setColor(QPalette::Text, Qt::green); - palettes[QPlatformTheme::CheckBoxPalette] = new QPalette(palette); + palettes[QQuickTheme::CheckBoxPalette] = new QPalette(palette); palette.setColor(QPalette::Text, Qt::blue); - palettes[QPlatformTheme::RadioButtonPalette] = new QPalette(palette); + palettes[QQuickTheme::RadioButtonPalette] = new QPalette(palette); // HeaderPalette unused palette.setColor(QPalette::Base, Qt::darkGray); - palettes[QPlatformTheme::ComboBoxPalette] = new QPalette(palette); + palettes[QQuickTheme::ComboBoxPalette] = new QPalette(palette); palette.setColor(QPalette::Base, Qt::lightGray); - palettes[QPlatformTheme::ItemViewPalette] = new QPalette(palette); + palettes[QQuickTheme::ItemViewPalette] = new QPalette(palette); // MessageBoxLabelPalette unused palette.setColor(QPalette::ButtonText, Qt::white); - palettes[QPlatformTheme::TabBarPalette] = new QPalette(palette); + palettes[QQuickTheme::TabBarPalette] = new QPalette(palette); palette.setColor(QPalette::WindowText, Qt::darkGray); - palettes[QPlatformTheme::LabelPalette] = new QPalette(palette); + palettes[QQuickTheme::LabelPalette] = new QPalette(palette); palette.setColor(QPalette::Mid, Qt::gray); - palettes[QPlatformTheme::GroupBoxPalette] = new QPalette(palette); + palettes[QQuickTheme::GroupBoxPalette] = new QPalette(palette); palette.setColor(QPalette::Shadow, Qt::darkYellow); - palettes[QPlatformTheme::MenuPalette] = new QPalette(palette); + palettes[QQuickTheme::MenuPalette] = new QPalette(palette); // MenuBarPalette unused palette.setColor(QPalette::Base, Qt::cyan); - palettes[QPlatformTheme::TextEditPalette] = new QPalette(palette); + palettes[QQuickTheme::TextEditPalette] = new QPalette(palette); palette.setColor(QPalette::Base, Qt::magenta); - palettes[QPlatformTheme::TextLineEditPalette] = new QPalette(palette); - - QGuiApplicationPrivate::platform_theme = this; + palettes[QQuickTheme::TextLineEditPalette] = new QPalette(palette); } const QPalette *palette(Palette type = SystemPalette) const override @@ -282,67 +279,67 @@ public: } private: - QPalette *palettes[QPlatformTheme::NPalettes]; + QPalette *palettes[QQuickTheme::NPalettes]; }; -Q_DECLARE_METATYPE(QPlatformTheme::Palette) +Q_DECLARE_METATYPE(QQuickTheme::Palette) void tst_palette::defaultPalette_data() { QTest::addColumn<QString>("control"); - QTest::addColumn<QPlatformTheme::Palette>("paletteType"); - - QTest::newRow("AbstractButton") << "AbstractButton" << QPlatformTheme::SystemPalette; - QTest::newRow("ApplicationWindow") << "ApplicationWindow" << QPlatformTheme::SystemPalette; - QTest::newRow("Button") << "Button" << QPlatformTheme::ButtonPalette; - QTest::newRow("CheckBox") << "CheckBox" << QPlatformTheme::CheckBoxPalette; - QTest::newRow("CheckDelegate") << "CheckDelegate" << QPlatformTheme::ItemViewPalette; - QTest::newRow("ComboBox") << "ComboBox" << QPlatformTheme::ComboBoxPalette; - QTest::newRow("Container") << "Container" << QPlatformTheme::SystemPalette; - QTest::newRow("Control") << "Control" << QPlatformTheme::SystemPalette; - QTest::newRow("Dial") << "Dial" << QPlatformTheme::SystemPalette; - QTest::newRow("Dialog") << "Dialog" << QPlatformTheme::SystemPalette; - QTest::newRow("DialogButtonBox") << "DialogButtonBox" << QPlatformTheme::SystemPalette; - QTest::newRow("Drawer") << "Drawer" << QPlatformTheme::SystemPalette; - QTest::newRow("Frame") << "Frame" << QPlatformTheme::SystemPalette; - QTest::newRow("GroupBox") << "GroupBox" << QPlatformTheme::GroupBoxPalette; - QTest::newRow("ItemDelegate") << "ItemDelegate" << QPlatformTheme::ItemViewPalette; - QTest::newRow("Label") << "Label" << QPlatformTheme::LabelPalette; - QTest::newRow("Menu") << "Menu" << QPlatformTheme::MenuPalette; - QTest::newRow("MenuItem") << "MenuItem" << QPlatformTheme::MenuPalette; - QTest::newRow("MenuSeparator") << "MenuSeparator" << QPlatformTheme::MenuPalette; - QTest::newRow("Page") << "Page" << QPlatformTheme::SystemPalette; - QTest::newRow("Pane") << "Pane" << QPlatformTheme::SystemPalette; - QTest::newRow("Popup") << "Popup" << QPlatformTheme::SystemPalette; - QTest::newRow("ProgressBar") << "ProgressBar" << QPlatformTheme::SystemPalette; - QTest::newRow("RadioButton") << "RadioButton" << QPlatformTheme::RadioButtonPalette; - QTest::newRow("RadioDelegate") << "RadioDelegate" << QPlatformTheme::ItemViewPalette; - QTest::newRow("RangeSlider") << "RangeSlider" << QPlatformTheme::SystemPalette; - QTest::newRow("RoundButton") << "RoundButton" << QPlatformTheme::ButtonPalette; - QTest::newRow("ScrollBar") << "ScrollBar" << QPlatformTheme::SystemPalette; - QTest::newRow("ScrollIndicator") << "ScrollIndicator" << QPlatformTheme::SystemPalette; - QTest::newRow("Slider") << "Slider" << QPlatformTheme::SystemPalette; - QTest::newRow("SpinBox") << "SpinBox" << QPlatformTheme::TextLineEditPalette; - QTest::newRow("SwipeDelegate") << "SwipeDelegate" << QPlatformTheme::ItemViewPalette; - QTest::newRow("Switch") << "Switch" << QPlatformTheme::CheckBoxPalette; // ### TODO: add QPlatformTheme::SwitchPalette - QTest::newRow("SwitchDelegate") << "SwitchDelegate" << QPlatformTheme::ItemViewPalette; - QTest::newRow("TabBar") << "TabBar" << QPlatformTheme::TabBarPalette; - QTest::newRow("TabButton") << "TabButton" << QPlatformTheme::TabBarPalette; - QTest::newRow("TextArea") << "TextArea" << QPlatformTheme::TextEditPalette; - QTest::newRow("TextField") << "TextField" << QPlatformTheme::TextLineEditPalette; - QTest::newRow("ToolBar") << "ToolBar" << QPlatformTheme::ToolButtonPalette; - QTest::newRow("ToolButton") << "ToolButton" << QPlatformTheme::ToolButtonPalette; - QTest::newRow("ToolSeparator") << "ToolSeparator" << QPlatformTheme::ToolButtonPalette; - QTest::newRow("ToolTip") << "ToolTip" << QPlatformTheme::ToolTipPalette; - QTest::newRow("Tumbler") << "Tumbler" << QPlatformTheme::ItemViewPalette; + QTest::addColumn<QQuickTheme::Palette>("paletteType"); + + QTest::newRow("AbstractButton") << "AbstractButton" << QQuickTheme::SystemPalette; + QTest::newRow("ApplicationWindow") << "ApplicationWindow" << QQuickTheme::SystemPalette; + QTest::newRow("Button") << "Button" << QQuickTheme::ButtonPalette; + QTest::newRow("CheckBox") << "CheckBox" << QQuickTheme::CheckBoxPalette; + QTest::newRow("CheckDelegate") << "CheckDelegate" << QQuickTheme::ItemViewPalette; + QTest::newRow("ComboBox") << "ComboBox" << QQuickTheme::ComboBoxPalette; + QTest::newRow("Container") << "Container" << QQuickTheme::SystemPalette; + QTest::newRow("Control") << "Control" << QQuickTheme::SystemPalette; + QTest::newRow("Dial") << "Dial" << QQuickTheme::SystemPalette; + QTest::newRow("Dialog") << "Dialog" << QQuickTheme::SystemPalette; + QTest::newRow("DialogButtonBox") << "DialogButtonBox" << QQuickTheme::SystemPalette; + QTest::newRow("Drawer") << "Drawer" << QQuickTheme::SystemPalette; + QTest::newRow("Frame") << "Frame" << QQuickTheme::SystemPalette; + QTest::newRow("GroupBox") << "GroupBox" << QQuickTheme::GroupBoxPalette; + QTest::newRow("ItemDelegate") << "ItemDelegate" << QQuickTheme::ItemViewPalette; + QTest::newRow("Label") << "Label" << QQuickTheme::LabelPalette; + QTest::newRow("Menu") << "Menu" << QQuickTheme::MenuPalette; + QTest::newRow("MenuItem") << "MenuItem" << QQuickTheme::MenuPalette; + QTest::newRow("MenuSeparator") << "MenuSeparator" << QQuickTheme::MenuPalette; + QTest::newRow("Page") << "Page" << QQuickTheme::SystemPalette; + QTest::newRow("Pane") << "Pane" << QQuickTheme::SystemPalette; + QTest::newRow("Popup") << "Popup" << QQuickTheme::SystemPalette; + QTest::newRow("ProgressBar") << "ProgressBar" << QQuickTheme::SystemPalette; + QTest::newRow("RadioButton") << "RadioButton" << QQuickTheme::RadioButtonPalette; + QTest::newRow("RadioDelegate") << "RadioDelegate" << QQuickTheme::ItemViewPalette; + QTest::newRow("RangeSlider") << "RangeSlider" << QQuickTheme::SystemPalette; + QTest::newRow("RoundButton") << "RoundButton" << QQuickTheme::ButtonPalette; + QTest::newRow("ScrollBar") << "ScrollBar" << QQuickTheme::SystemPalette; + QTest::newRow("ScrollIndicator") << "ScrollIndicator" << QQuickTheme::SystemPalette; + QTest::newRow("Slider") << "Slider" << QQuickTheme::SystemPalette; + QTest::newRow("SpinBox") << "SpinBox" << QQuickTheme::TextLineEditPalette; + QTest::newRow("SwipeDelegate") << "SwipeDelegate" << QQuickTheme::ItemViewPalette; + QTest::newRow("Switch") << "Switch" << QQuickTheme::CheckBoxPalette; // ### TODO: add QQuickTheme::SwitchPalette + QTest::newRow("SwitchDelegate") << "SwitchDelegate" << QQuickTheme::ItemViewPalette; + QTest::newRow("TabBar") << "TabBar" << QQuickTheme::TabBarPalette; + QTest::newRow("TabButton") << "TabButton" << QQuickTheme::TabBarPalette; + QTest::newRow("TextArea") << "TextArea" << QQuickTheme::TextEditPalette; + QTest::newRow("TextField") << "TextField" << QQuickTheme::TextLineEditPalette; + QTest::newRow("ToolBar") << "ToolBar" << QQuickTheme::ToolButtonPalette; + QTest::newRow("ToolButton") << "ToolButton" << QQuickTheme::ToolButtonPalette; + QTest::newRow("ToolSeparator") << "ToolSeparator" << QQuickTheme::ToolButtonPalette; + QTest::newRow("ToolTip") << "ToolTip" << QQuickTheme::ToolTipPalette; + QTest::newRow("Tumbler") << "Tumbler" << QQuickTheme::ItemViewPalette; } void tst_palette::defaultPalette() { QFETCH(QString, control); - QFETCH(QPlatformTheme::Palette, paletteType); + QFETCH(QQuickTheme::Palette, paletteType); - TestTheme theme(QGuiApplicationPrivate::platform_theme); + QQuickTheme::setCurrent(new TestTheme); QQmlEngine engine; QQmlComponent component(&engine); @@ -354,11 +351,9 @@ void tst_palette::defaultPalette() QVariant var = object->property("palette"); QVERIFY(var.isValid()); - const QPalette *expectedPalette = theme.palette(paletteType); - QVERIFY(expectedPalette); - + QPalette expectedPalette = QQuickTheme::themePalette(paletteType); QPalette actualPalette = var.value<QPalette>(); - QCOMPARE(actualPalette, *expectedPalette); + QCOMPARE(actualPalette, expectedPalette); } void tst_palette::listView_data() diff --git a/tests/auto/qquickapplicationwindow/tst_qquickapplicationwindow.cpp b/tests/auto/qquickapplicationwindow/tst_qquickapplicationwindow.cpp index aeeddb10..6228a15d 100644 --- a/tests/auto/qquickapplicationwindow/tst_qquickapplicationwindow.cpp +++ b/tests/auto/qquickapplicationwindow/tst_qquickapplicationwindow.cpp @@ -50,7 +50,7 @@ #include <QtQuickTemplates2/private/qquickpopup_p.h> #include <QtQuickTemplates2/private/qquicktextarea_p.h> #include <QtQuickTemplates2/private/qquicktextfield_p.h> -#include <QtQuickControls2/private/qquickproxytheme_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> #include "../shared/util.h" #include "../shared/visualtestutil.h" @@ -555,11 +555,10 @@ void tst_QQuickApplicationWindow::font() QCOMPARE(item6->font(), font); } -class TestTheme : public QQuickProxyTheme +class TestTheme : public QQuickTheme { public: - TestTheme(QPlatformTheme *theme) : QQuickProxyTheme(theme), m_font("Courier") - { QGuiApplicationPrivate::platform_theme = this; } + TestTheme() : m_font("Courier") { } const QFont *font(Font type = SystemFont) const override { @@ -572,7 +571,7 @@ public: void tst_QQuickApplicationWindow::defaultFont() { - TestTheme theme(QGuiApplicationPrivate::platform_theme); + QQuickTheme::setCurrent(new TestTheme); QQmlEngine engine; QQmlComponent component(&engine); @@ -581,7 +580,7 @@ void tst_QQuickApplicationWindow::defaultFont() QScopedPointer<QQuickApplicationWindow> window; window.reset(static_cast<QQuickApplicationWindow *>(component.create())); QVERIFY(!window.isNull()); - QCOMPARE(window->font(), *theme.font()); + QCOMPARE(window->font(), QQuickTheme::themeFont(QQuickTheme::SystemFont)); } void tst_QQuickApplicationWindow::locale() diff --git a/tests/auto/qquickmaterialstyleconf/data/applicationwindow.qml b/tests/auto/qquickmaterialstyleconf/data/applicationwindow.qml index 65196393..9a31966f 100644 --- a/tests/auto/qquickmaterialstyleconf/data/applicationwindow.qml +++ b/tests/auto/qquickmaterialstyleconf/data/applicationwindow.qml @@ -57,8 +57,13 @@ ApplicationWindow { height: 400 property alias label: label + property alias button: button Label { id: label } + + Button { + id: button + } } diff --git a/tests/auto/qquickmaterialstyleconf/qquickmaterialstyleconf.qrc b/tests/auto/qquickmaterialstyleconf/qquickmaterialstyleconf.qrc index 53ba6450..49219139 100644 --- a/tests/auto/qquickmaterialstyleconf/qquickmaterialstyleconf.qrc +++ b/tests/auto/qquickmaterialstyleconf/qquickmaterialstyleconf.qrc @@ -1,5 +1,7 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource> - <file>qtquickcontrols2.conf</file> -</qresource> +<RCC> + <qresource prefix="/"> + <file>qtquickcontrols2.conf</file> + <file>variant-dense.conf</file> + <file>variant-normal.conf</file> + </qresource> </RCC> diff --git a/tests/auto/qquickmaterialstyleconf/tst_qquickmaterialstyleconf.cpp b/tests/auto/qquickmaterialstyleconf/tst_qquickmaterialstyleconf.cpp index 17d1ea6d..72136445 100644 --- a/tests/auto/qquickmaterialstyleconf/tst_qquickmaterialstyleconf.cpp +++ b/tests/auto/qquickmaterialstyleconf/tst_qquickmaterialstyleconf.cpp @@ -36,6 +36,7 @@ #include <qtest.h> #include <QtQuick/private/qquickitem_p.h> +#include <QtQuickControls2/private/qquickstyle_p.h> #include "../shared/util.h" #include "../shared/visualtestutil.h" @@ -49,6 +50,8 @@ public: private slots: void conf(); + void variants_data(); + void variants(); }; void tst_qquickmaterialstyleconf::conf() @@ -73,6 +76,45 @@ void tst_qquickmaterialstyleconf::conf() QCOMPARE(label->property("font").value<QFont>(), customFont); } +void tst_qquickmaterialstyleconf::variants_data() +{ + QTest::addColumn<QByteArray>("confPath"); + QTest::addColumn<int>("expectedButtonHeight"); + // Just to ensure that the correct conf is loaded. + QTest::addColumn<QColor>("expectedColor"); + + // (36 button height + 12 touchable area) + QTest::newRow("normal") << QByteArray(":/variant-normal.conf") << 48 << QColor::fromRgb(0x123456); + // We specified a custom variant (dense), so the button should be small. + // (32 button height + 12 touchable area) + QTest::newRow("dense") << QByteArray(":/variant-dense.conf") << 44 << QColor::fromRgb(0x789abc); +} + +void tst_qquickmaterialstyleconf::variants() +{ + QFETCH(QByteArray, confPath); + QFETCH(int, expectedButtonHeight); + QFETCH(QColor, expectedColor); + + qmlClearTypeRegistrations(); + QQuickStylePrivate::reset(); + qputenv("QT_QUICK_CONTROLS_CONF", confPath); + + QQuickApplicationHelper helper(this, QLatin1String("applicationwindow.qml")); + + QQuickApplicationWindow *window = helper.appWindow; + window->show(); + QVERIFY(QTest::qWaitForWindowExposed(window)); + + QQuickItem *label = window->property("label").value<QQuickItem*>(); + QVERIFY(label); + QCOMPARE(label->property("color").value<QColor>(), expectedColor); + + QQuickItem *button = window->property("button").value<QQuickItem*>(); + QVERIFY(button); + QCOMPARE(button->height(), expectedButtonHeight); +} + QTEST_MAIN(tst_qquickmaterialstyleconf) #include "tst_qquickmaterialstyleconf.moc" diff --git a/tests/auto/qquickmaterialstyleconf/variant-dense.conf b/tests/auto/qquickmaterialstyleconf/variant-dense.conf new file mode 100644 index 00000000..6636894e --- /dev/null +++ b/tests/auto/qquickmaterialstyleconf/variant-dense.conf @@ -0,0 +1,6 @@ +[Controls] +Style=Material + +[Material] +Variant=Dense +Foreground=#789abc diff --git a/tests/auto/qquickmaterialstyleconf/variant-normal.conf b/tests/auto/qquickmaterialstyleconf/variant-normal.conf new file mode 100644 index 00000000..08778e92 --- /dev/null +++ b/tests/auto/qquickmaterialstyleconf/variant-normal.conf @@ -0,0 +1,6 @@ +[Controls] +Style=Material + +[Material] +Variant=Normal +Foreground=#123456 diff --git a/tests/manual/screenshots/qtquickcontrols2.conf b/tests/manual/screenshots/qtquickcontrols2.conf index b6c7c87e..d2081db1 100644 --- a/tests/manual/screenshots/qtquickcontrols2.conf +++ b/tests/manual/screenshots/qtquickcontrols2.conf @@ -1,2 +1,5 @@ [Controls] Style=Material + +[Material] +;Variant=Dense diff --git a/tests/manual/screenshots/screenshots.qml b/tests/manual/screenshots/screenshots.qml index 2b031dce..20275b17 100644 --- a/tests/manual/screenshots/screenshots.qml +++ b/tests/manual/screenshots/screenshots.qml @@ -58,7 +58,7 @@ ApplicationWindow { title: "Qt Quick Controls 2 - Screenshots" visible: true width: Math.max(600, loader.implicitWidth) - height: Math.max(600, loader.implicitHeight) + height: Math.max(600, loader.implicitHeight + header.implicitHeight + footer.implicitHeight) property string currentFilePath property url lastSaveUrl |