aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols/ios
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickcontrols/ios')
-rw-r--r--src/quickcontrols/ios/BusyIndicator.qml4
-rw-r--r--src/quickcontrols/ios/Button.qml6
-rw-r--r--src/quickcontrols/ios/CMakeLists.txt13
-rw-r--r--src/quickcontrols/ios/CheckBox.qml6
-rw-r--r--src/quickcontrols/ios/CheckDelegate.qml14
-rw-r--r--src/quickcontrols/ios/ComboBox.qml25
-rw-r--r--src/quickcontrols/ios/DelayButton.qml56
-rw-r--r--src/quickcontrols/ios/Dial.qml8
-rw-r--r--src/quickcontrols/ios/Dialog.qml74
-rw-r--r--src/quickcontrols/ios/DialogButtonBox.qml76
-rw-r--r--src/quickcontrols/ios/Drawer.qml4
-rw-r--r--src/quickcontrols/ios/Frame.qml2
-rw-r--r--src/quickcontrols/ios/GroupBox.qml2
-rw-r--r--src/quickcontrols/ios/HorizontalHeaderView.qml14
-rw-r--r--src/quickcontrols/ios/ItemDelegate.qml10
-rw-r--r--src/quickcontrols/ios/Menu.qml8
-rw-r--r--src/quickcontrols/ios/MenuBar.qml2
-rw-r--r--src/quickcontrols/ios/MenuBarItem.qml6
-rw-r--r--src/quickcontrols/ios/MenuItem.qml12
-rw-r--r--src/quickcontrols/ios/MenuSeparator.qml4
-rw-r--r--src/quickcontrols/ios/PageIndicator.qml4
-rw-r--r--src/quickcontrols/ios/Popup.qml4
-rw-r--r--src/quickcontrols/ios/ProgressBar.qml31
-rw-r--r--src/quickcontrols/ios/RadioButton.qml6
-rw-r--r--src/quickcontrols/ios/RadioDelegate.qml14
-rw-r--r--src/quickcontrols/ios/RangeSlider.qml22
-rw-r--r--src/quickcontrols/ios/ScrollBar.qml4
-rw-r--r--src/quickcontrols/ios/ScrollIndicator.qml4
-rw-r--r--src/quickcontrols/ios/SelectionRectangle.qml30
-rw-r--r--src/quickcontrols/ios/Slider.qml16
-rw-r--r--src/quickcontrols/ios/SpinBox.qml12
-rw-r--r--src/quickcontrols/ios/SwipeDelegate.qml10
-rw-r--r--src/quickcontrols/ios/Switch.qml10
-rw-r--r--src/quickcontrols/ios/SwitchDelegate.qml18
-rw-r--r--src/quickcontrols/ios/TabBar.qml2
-rw-r--r--src/quickcontrols/ios/ToolBar.qml2
-rw-r--r--src/quickcontrols/ios/ToolButton.qml6
-rw-r--r--src/quickcontrols/ios/ToolSeparator.qml24
-rw-r--r--src/quickcontrols/ios/ToolTip.qml53
-rw-r--r--src/quickcontrols/ios/TreeViewDelegate.qml16
-rw-r--r--src/quickcontrols/ios/VerticalHeaderView.qml14
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark.9.pngbin0 -> 241 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@2x.9.pngbin0 -> 318 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@3x.9.pngbin0 -> 404 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light.9.pngbin0 -> 241 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@2x.9.pngbin0 -> 326 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@3x.9.pngbin0 -> 420 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark.9.pngbin0 -> 245 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@2x.9.pngbin0 -> 321 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@3x.9.pngbin0 -> 420 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light.9.pngbin0 -> 245 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@2x.9.pngbin0 -> 321 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@3x.9.pngbin0 -> 420 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark.9.pngbin0 -> 108 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@2x.9.pngbin0 -> 111 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@3x.9.pngbin0 -> 118 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark.9.pngbin0 -> 288 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@2x.9.pngbin0 -> 406 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@3x.9.pngbin0 -> 553 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light.9.pngbin0 -> 299 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@2x.9.pngbin0 -> 427 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@3x.9.pngbin0 -> 573 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark.9.pngbin0 -> 291 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@2x.9.pngbin0 -> 418 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@3x.9.pngbin0 -> 558 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light.9.pngbin0 -> 292 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@2x.9.pngbin0 -> 423 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@3x.9.pngbin0 -> 554 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light.9.pngbin0 -> 112 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@2x.9.pngbin0 -> 115 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@3x.9.pngbin0 -> 122 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark.9.pngbin0 -> 100 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@2x.9.pngbin0 -> 102 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@3x.9.pngbin0 -> 109 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light.9.pngbin0 -> 100 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@2x.9.pngbin0 -> 102 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@3x.9.pngbin0 -> 112 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-separator-dark.9.pngbin0 -> 78 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@2x.9.pngbin0 -> 80 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@3x.9.pngbin0 -> 83 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-separator-light.9.pngbin0 -> 78 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-separator-light@2x.9.pngbin0 -> 81 bytes
-rw-r--r--src/quickcontrols/ios/images/dialogbuttonbox-separator-light@3x.9.pngbin0 -> 84 bytes
-rw-r--r--src/quickcontrols/ios/images/selectionrectangle-handle-dark.pngbin0 -> 448 bytes
-rw-r--r--src/quickcontrols/ios/images/selectionrectangle-handle-dark@2x.pngbin0 -> 1208 bytes
-rw-r--r--src/quickcontrols/ios/images/selectionrectangle-handle-dark@3x.pngbin0 -> 1513 bytes
-rw-r--r--src/quickcontrols/ios/images/selectionrectangle-handle-light.pngbin0 -> 445 bytes
-rw-r--r--src/quickcontrols/ios/images/selectionrectangle-handle-light@2x.pngbin0 -> 1201 bytes
-rw-r--r--src/quickcontrols/ios/images/selectionrectangle-handle-light@3x.pngbin0 -> 1456 bytes
-rw-r--r--src/quickcontrols/ios/images/tooltip-background-dark.9.pngbin0 -> 1968 bytes
-rw-r--r--src/quickcontrols/ios/images/tooltip-background-dark@2x.9.pngbin0 -> 5161 bytes
-rw-r--r--src/quickcontrols/ios/images/tooltip-background-dark@3x.9.pngbin0 -> 9861 bytes
-rw-r--r--src/quickcontrols/ios/images/tooltip-background-light.9.pngbin0 -> 1984 bytes
-rw-r--r--src/quickcontrols/ios/images/tooltip-background-light@2x.9.pngbin0 -> 5256 bytes
-rw-r--r--src/quickcontrols/ios/images/tooltip-background-light@3x.9.pngbin0 -> 9877 bytes
-rw-r--r--src/quickcontrols/ios/impl/CMakeLists.txt4
-rw-r--r--src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml68
-rw-r--r--src/quickcontrols/ios/impl/qquickiosstyle_p.h2
-rw-r--r--src/quickcontrols/ios/qquickiostheme.mm40
99 files changed, 589 insertions, 173 deletions
diff --git a/src/quickcontrols/ios/BusyIndicator.qml b/src/quickcontrols/ios/BusyIndicator.qml
index e9c874d904..3fb08070df 100644
--- a/src/quickcontrols/ios/BusyIndicator.qml
+++ b/src/quickcontrols/ios/BusyIndicator.qml
@@ -27,10 +27,10 @@ T.BusyIndicator {
contentItem: Image {
property int currentImage: 8
source: IOS.url + "busyindicator-frame-0" + currentImage +
- (Qt.styleHints.appearance === Qt.Light ? "-light.png" : "-dark.png")
+ (Qt.styleHints.colorScheme === Qt.Light ? "-light.png" : "-dark.png")
fillMode: Image.PreserveAspectFit
NumberAnimation on currentImage {
- running: control.running
+ running: control.visible && control.running
loops: -1
from: 8
to: 1
diff --git a/src/quickcontrols/ios/Button.qml b/src/quickcontrols/ios/Button.qml
index 6d8a6f8e09..2156b3beda 100644
--- a/src/quickcontrols/ios/Button.qml
+++ b/src/quickcontrols/ios/Button.qml
@@ -20,8 +20,7 @@ T.Button {
icon.width: 17
icon.height: 17
- icon.color: control.flat ? (control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid)
+ icon.color: control.flat ? (control.down ? control.palette.highlight : control.palette.button)
: control.palette.buttonText
contentItem: IconLabel {
@@ -32,8 +31,7 @@ T.Button {
icon: control.icon
text: control.text
font: control.font
- color: control.flat ? (control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid)
+ color: control.flat ? (control.down ? control.palette.highlight : control.palette.button)
: control.palette.buttonText
}
diff --git a/src/quickcontrols/ios/CMakeLists.txt b/src/quickcontrols/ios/CMakeLists.txt
index d20090b601..f3be4038a3 100644
--- a/src/quickcontrols/ios/CMakeLists.txt
+++ b/src/quickcontrols/ios/CMakeLists.txt
@@ -5,6 +5,8 @@
## qtquickcontrols2iosstyleplugin Plugin:
#####################################################################
+add_subdirectory(impl)
+
set(qml_files
"Slider.qml"
"RangeSlider.qml"
@@ -45,6 +47,12 @@ set(qml_files
"ComboBox.qml"
"HorizontalHeaderView.qml"
"VerticalHeaderView.qml"
+ "Dialog.qml"
+ "DialogButtonBox.qml"
+ "DelayButton.qml"
+ "SelectionRectangle.qml"
+ "ToolTip.qml"
+ "ToolSeparator.qml"
)
set_source_files_properties(Slider.qml PROPERTIES
@@ -73,10 +81,11 @@ qt_internal_add_qml_module(qtquickcontrols2iosstyleplugin
Qt::CorePrivate
Qt::GuiPrivate
Qt::QmlPrivate
+ Qt::QuickControls2IOSStyleImpl
+ Qt::QuickControls2ImplPrivate
Qt::QuickControls2Private
Qt::QuickPrivate
Qt::QuickTemplates2Private
- Qt::QuickControls2ImplPrivate
)
qt_internal_extend_target(qtquickcontrols2iosstyleplugin CONDITION APPLE AND IOS
@@ -101,8 +110,6 @@ qt_internal_add_resource(qtquickcontrols2iosstyleplugin "qmake_qtquickcontrols2i
${qmake_qtquickcontrols2iosstyleplugin_resource_files}
)
-add_subdirectory(impl)
-
_qt_internal_add_qml_static_plugin_dependency(qtquickcontrols2iosstyleplugin
qtquickcontrols2iosstyleimplplugin)
diff --git a/src/quickcontrols/ios/CheckBox.qml b/src/quickcontrols/ios/CheckBox.qml
index 2ef8f83114..59f1c8bce4 100644
--- a/src/quickcontrols/ios/CheckBox.qml
+++ b/src/quickcontrols/ios/CheckBox.qml
@@ -27,8 +27,8 @@ T.CheckBox {
states: [
{"checked": control.checkState === Qt.Checked},
{"partially-checked": control.checkState === Qt.PartiallyChecked},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -39,7 +39,7 @@ T.CheckBox {
text: control.text
font: control.font
- color: control.palette.windowText
+ color: control.palette.text
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/quickcontrols/ios/CheckDelegate.qml b/src/quickcontrols/ios/CheckDelegate.qml
index fbd2a4ce35..b421430311 100644
--- a/src/quickcontrols/ios/CheckDelegate.qml
+++ b/src/quickcontrols/ios/CheckDelegate.qml
@@ -20,7 +20,7 @@ T.CheckDelegate {
icon.width: 29
icon.height: 29
- icon.color: control.enabled ? control.palette.text : control.palette.mid
+ icon.color: control.palette.text
indicator: Image {
x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
@@ -32,8 +32,8 @@ T.CheckDelegate {
states: [
{"checked": control.checkState === Qt.Checked},
{"partially-checked": control.checkState === Qt.PartiallyChecked},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -50,12 +50,12 @@ T.CheckDelegate {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? control.palette.text : control.palette.mid
+ color: control.palette.text
}
background: Rectangle {
implicitHeight: 44
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
NinePatchImage {
property real offset: control.icon.source.toString() !== "" ? control.icon.width + control.spacing : 0
x: control.down ? 0 : control.leftPadding + offset
@@ -65,8 +65,8 @@ T.CheckDelegate {
source: IOS.url + "itemdelegate-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": control.down}
]
}
diff --git a/src/quickcontrols/ios/ComboBox.qml b/src/quickcontrols/ios/ComboBox.qml
index 491325258d..7c1299db74 100644
--- a/src/quickcontrols/ios/ComboBox.qml
+++ b/src/quickcontrols/ios/ComboBox.qml
@@ -1,6 +1,8 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+pragma ComponentBehavior: Bound
+
import QtQuick
import QtQuick.Templates as T
import QtQuick.Controls.impl
@@ -26,12 +28,15 @@ T.ComboBox {
delegate: MenuItem {
width: ListView.view.width
- text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData
+ text: model[control.textRole]
palette.text: control.palette.text
palette.highlightedText: control.palette.highlightedText
hoverEnabled: control.hoverEnabled
checked: control.currentIndex === index
+ required property var model
+ required property int index
+
readonly property bool isSingleItem: control.count === 1
readonly property bool isFirstItem: !isSingleItem && index === 0
readonly property bool isLastItem: !isSingleItem && index === control.count - 1
@@ -49,8 +54,8 @@ T.ComboBox {
states: [
{"edge": isFirstItem || isLastItem },
{"single": isSingleItem},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": down}
]
}
@@ -65,13 +70,12 @@ T.ComboBox {
opacity: (control.enabled || control.popupButtonStyle) ? 1 : 0.5
source: IOS.url + (control.popupButtonStyle ? "arrow-updown-indicator" : "arrow-indicator")
- color: control.popupButtonStyle ? (control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid)
- : defaultColor
+ color: control.popupButtonStyle ? (control.down ? control.palette.highlight : control.palette.button)
+ : defaultColor
ImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": control.down}
]
}
@@ -91,9 +95,8 @@ T.ComboBox {
validator: control.validator
selectByMouse: control.selectTextByMouse
- color: control.popupButtonStyle ? (control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid)
- : control.palette.text
+ color: control.popupButtonStyle ? (control.down ? control.palette.highlight : control.palette.button)
+ : control.palette.text
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
verticalAlignment: Text.AlignVCenter
diff --git a/src/quickcontrols/ios/DelayButton.qml b/src/quickcontrols/ios/DelayButton.qml
new file mode 100644
index 0000000000..dddeefbedd
--- /dev/null
+++ b/src/quickcontrols/ios/DelayButton.qml
@@ -0,0 +1,56 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Templates as T
+import QtQuick.Controls.impl
+
+T.DelayButton {
+ id: control
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ bottomPadding: 4
+ topPadding: 4
+ rightPadding: 4
+ leftPadding: 4
+
+ icon.width: 17
+ icon.height: 17
+ icon.color: control.down ? control.palette.highlight : control.palette.button
+
+ transition: Transition {
+ NumberAnimation {
+ duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress)
+ }
+ }
+
+ contentItem: IconLabel {
+ spacing: control.spacing
+ mirrored: control.mirrored
+ display: control.display
+
+ icon: control.icon
+ text: control.text
+ font: control.font
+ color: control.palette.buttonText
+ }
+
+ background: Rectangle {
+ implicitWidth: 17
+ implicitHeight: 10
+ radius: 4
+
+ color: control.down && control.progress === 1 ? "transparent" : control.palette.disabled.button
+
+ Rectangle {
+ width: control.progress * parent.width
+ height: parent.height
+ radius: 4
+ color: control.down ? control.palette.highlight : control.palette.button
+ }
+ }
+}
diff --git a/src/quickcontrols/ios/Dial.qml b/src/quickcontrols/ios/Dial.qml
index 2a4c9666bc..3fc77035b8 100644
--- a/src/quickcontrols/ios/Dial.qml
+++ b/src/quickcontrols/ios/Dial.qml
@@ -64,8 +64,8 @@ T.Dial {
centerY: control.background.children[0].height / 2
radiusX: control.background.children[0].width / 2 - 2
radiusY: radiusX
- startAngle: -230
- sweepAngle: 140 + control.angle
+ startAngle: control.startAngle - 90
+ sweepAngle: control.angle - control.startAngle
}
}
}
@@ -92,8 +92,8 @@ T.Dial {
source: IOS.url + "slider-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"disabled": !control.enabled}
]
}
diff --git a/src/quickcontrols/ios/Dialog.qml b/src/quickcontrols/ios/Dialog.qml
new file mode 100644
index 0000000000..f8f400daf1
--- /dev/null
+++ b/src/quickcontrols/ios/Dialog.qml
@@ -0,0 +1,74 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Templates as T
+import QtQuick.Controls.impl
+import QtQuick.Controls.iOS.impl
+
+T.Dialog {
+ id: control
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ contentWidth + leftPadding + rightPadding,
+ implicitHeaderWidth,
+ implicitFooterWidth)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ contentHeight + topPadding + bottomPadding
+ + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0)
+ + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0))
+ leftPadding: 16
+ rightPadding: 16
+ bottomPadding: 23
+
+ dim: true
+
+ enter: Transition {
+ NumberAnimation { property: "scale"; from: 1.5; to: 1.0; easing.type: Easing.OutQuint; duration: 220 }
+ NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 }
+ }
+
+ exit: Transition {
+ NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 }
+ }
+
+ background: Item {
+ NinePatchImage {
+ width: parent.width
+ height: parent.height
+ source: IOS.url + "popup-background"
+ NinePatchImageSelector on source {
+ states: [
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
+ ]
+ }
+ }
+ }
+
+ header: Label {
+ text: control.title
+ visible: control.title
+ horizontalAlignment: Text.AlignHCenter
+ topPadding: 23
+ bottomPadding: 7
+ verticalAlignment: Text.AlignVCenter
+ elide: Label.ElideRight
+ font.weight: Font.Medium
+ font.pointSize: 17
+ }
+
+ footer: DialogButtonBox {
+ visible: count > 0
+ }
+
+ T.Overlay.modal: Rectangle {
+ color: Color.transparent("black", 0.5)
+ Behavior on opacity { NumberAnimation { duration: 150 } }
+ }
+
+ T.Overlay.modeless: Rectangle {
+ color: Color.transparent("black", 0.5)
+ Behavior on opacity { NumberAnimation { duration: 150 } }
+ }
+}
diff --git a/src/quickcontrols/ios/DialogButtonBox.qml b/src/quickcontrols/ios/DialogButtonBox.qml
new file mode 100644
index 0000000000..f04088a9d1
--- /dev/null
+++ b/src/quickcontrols/ios/DialogButtonBox.qml
@@ -0,0 +1,76 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Templates as T
+import QtQuick.Controls.impl
+import QtQuick.Controls.iOS.impl
+
+T.DialogButtonBox {
+ id: control
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ contentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ contentHeight + topPadding + bottomPadding)
+
+ readonly property var orientation: (count === 2 || alignment !== 0)
+ ? ListView.Horizontal : ListView.Vertical
+ readonly property bool delegatePressed: count === 2 && (itemAt(0).down || itemAt(1).down)
+
+ spacing: orientation === ListView.Horizontal
+ ? (background && background.separatorLine ? background.separatorLine.width : 0)
+ : 0
+
+ delegate: DialogButtonBoxDelegate {
+ width: control.orientation === ListView.Vertical
+ ? control.width : undefined
+ }
+
+ contentItem: ListView {
+ clip: true
+ implicitWidth: contentWidth
+ implicitHeight: contentHeight
+ model: control.contentModel
+ spacing: control.spacing
+ orientation: control.orientation
+ boundsBehavior: Flickable.StopAtBounds
+ snapMode: ListView.SnapToItem
+ }
+
+ background: Item {
+ implicitHeight: control.orientation === ListView.Horizontal ? 44 : Math.max(contentItem.implicitHeight, 44)
+ implicitWidth: 270
+
+ readonly property NinePatchImage backgroundImage : NinePatchImage {
+ parent: control.background
+ width: parent.width
+ height: parent.height
+ rotation: control.position === DialogButtonBox.Header ? 180 : 0
+ source: IOS.url + "dialogbuttonbox-delegate-vertical-last"
+ NinePatchImageSelector on source {
+ states: [
+ {"pressed": delegate.down},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
+ ]
+ }
+ }
+
+ readonly property NinePatchImage separatorLine : NinePatchImage {
+ parent: control.background.backgroundImage
+ x: control.itemAt(0) ? control.itemAt(0).width : 0
+ height: parent.height
+ rotation: control.position === DialogButtonBox.Header ? 180 : 0
+ visible: control.alignment === 0 && (control.count === 2 && !control.delegatePressed)
+
+ source: IOS.url + "dialogbuttonbox-separator"
+ NinePatchImageSelector on source {
+ states: [
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
+ ]
+ }
+ }
+ }
+}
diff --git a/src/quickcontrols/ios/Drawer.qml b/src/quickcontrols/ios/Drawer.qml
index 52cdb8b372..2ee955e7bc 100644
--- a/src/quickcontrols/ios/Drawer.qml
+++ b/src/quickcontrols/ios/Drawer.qml
@@ -32,8 +32,8 @@ T.Drawer {
source: IOS.url + "drawer-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"modal": control.modal}
]
}
diff --git a/src/quickcontrols/ios/Frame.qml b/src/quickcontrols/ios/Frame.qml
index 5c52269a3c..9179366808 100644
--- a/src/quickcontrols/ios/Frame.qml
+++ b/src/quickcontrols/ios/Frame.qml
@@ -19,6 +19,6 @@ T.Frame {
background: Rectangle {
radius: 9
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
}
}
diff --git a/src/quickcontrols/ios/GroupBox.qml b/src/quickcontrols/ios/GroupBox.qml
index 3adc599ddf..d3d14e7df8 100644
--- a/src/quickcontrols/ios/GroupBox.qml
+++ b/src/quickcontrols/ios/GroupBox.qml
@@ -36,6 +36,6 @@ T.GroupBox {
width: parent.width
height: parent.height - control.topPadding + control.bottomPadding
radius: 9
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
}
}
diff --git a/src/quickcontrols/ios/HorizontalHeaderView.qml b/src/quickcontrols/ios/HorizontalHeaderView.qml
index b6abd9e1d9..1a02ff8f05 100644
--- a/src/quickcontrols/ios/HorizontalHeaderView.qml
+++ b/src/quickcontrols/ios/HorizontalHeaderView.qml
@@ -1,6 +1,8 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+pragma ComponentBehavior: Bound
+
import QtQuick
import QtQuick.Templates as T
@@ -16,6 +18,10 @@ T.HorizontalHeaderView {
implicitHeight: Math.max(1, contentHeight)
delegate: Rectangle {
+ id: delegate
+
+ required property var model
+
readonly property real cellPadding: 8
implicitWidth: text.implicitWidth + (cellPadding * 2)
@@ -24,11 +30,9 @@ T.HorizontalHeaderView {
Label {
id: text
- text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole]
- : model[control.textRole])
- : modelData
- width: parent.width
- height: parent.height
+ text: delegate.model[control.textRole]
+ width: delegate.width
+ height: delegate.height
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/quickcontrols/ios/ItemDelegate.qml b/src/quickcontrols/ios/ItemDelegate.qml
index 28146e51fd..2b27c86b26 100644
--- a/src/quickcontrols/ios/ItemDelegate.qml
+++ b/src/quickcontrols/ios/ItemDelegate.qml
@@ -21,7 +21,7 @@ T.ItemDelegate {
icon.width: 29
icon.height: 29
- icon.color: control.enabled ? control.palette.text : control.palette.mid
+ icon.color: control.palette.text
contentItem: IconLabel {
spacing: control.spacing
@@ -31,12 +31,12 @@ T.ItemDelegate {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? control.palette.text : control.palette.mid
+ color: control.palette.text
}
background: Rectangle {
implicitHeight: 44
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
NinePatchImage {
property real offset: control.icon.source.toString() !== "" ? control.icon.width + control.spacing : 0
x: control.down ? 0 : control.leftPadding + offset
@@ -46,8 +46,8 @@ T.ItemDelegate {
source: IOS.url + "itemdelegate-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": control.down}
]
}
diff --git a/src/quickcontrols/ios/Menu.qml b/src/quickcontrols/ios/Menu.qml
index 437731c19e..752737f69b 100644
--- a/src/quickcontrols/ios/Menu.qml
+++ b/src/quickcontrols/ios/Menu.qml
@@ -35,8 +35,8 @@ T.Menu {
implicitHeight: contentHeight
model: control.contentModel
interactive: Window.window
- ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height
- : false
+ ? contentHeight + control.topPadding + control.bottomPadding > control.height
+ : false
clip: true
currentIndex: control.currentIndex
@@ -52,8 +52,8 @@ T.Menu {
source: IOS.url + "menu-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
diff --git a/src/quickcontrols/ios/MenuBar.qml b/src/quickcontrols/ios/MenuBar.qml
index 06f549e82a..b38fa12fcb 100644
--- a/src/quickcontrols/ios/MenuBar.qml
+++ b/src/quickcontrols/ios/MenuBar.qml
@@ -24,7 +24,7 @@ T.MenuBar {
background: Rectangle {
opacity: 0.98
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
Rectangle {
height: 1
width: parent.width
diff --git a/src/quickcontrols/ios/MenuBarItem.qml b/src/quickcontrols/ios/MenuBarItem.qml
index 5fe36693e4..93febfa29e 100644
--- a/src/quickcontrols/ios/MenuBarItem.qml
+++ b/src/quickcontrols/ios/MenuBarItem.qml
@@ -19,8 +19,7 @@ T.MenuBarItem {
icon.width: 25
icon.height: 25
- icon.color: control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid
+ icon.color: control.down ? control.palette.highlight : control.palette.button
contentItem: IconLabel {
spacing: control.spacing
@@ -31,8 +30,7 @@ T.MenuBarItem {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid
+ color: control.down ? control.palette.highlight : control.palette.button
}
background: Item {
diff --git a/src/quickcontrols/ios/MenuItem.qml b/src/quickcontrols/ios/MenuItem.qml
index 91fa865e06..29c2562ca0 100644
--- a/src/quickcontrols/ios/MenuItem.qml
+++ b/src/quickcontrols/ios/MenuItem.qml
@@ -23,7 +23,7 @@ T.MenuItem {
icon.width: 19
icon.height: 19
- icon.color: control.palette.windowText
+ icon.color: control.palette.text
readonly property bool isSingleItem: control.menu && control.menu.count === 1
readonly property bool isFirstItem: !isSingleItem && control.menu && control.menu.itemAt(0) === control ? true : false
@@ -43,7 +43,7 @@ T.MenuItem {
icon: control.icon
text: control.text
font: control.font
- color: control.palette.windowText
+ color: control.palette.text
}
arrow: ColorImage {
@@ -56,7 +56,7 @@ T.MenuItem {
visible: control.subMenu
opacity: control.enabled ? 1 : 0.5
mirror: control.mirrored
- color: control.palette.windowText
+ color: control.palette.text
source: control.subMenu ? IOS.url + "arrow-indicator-light.png" : ""
Behavior on rotation { RotationAnimation { duration: 100 } }
@@ -69,7 +69,7 @@ T.MenuItem {
visible: control.checked
source: control.checked ? IOS.url + "radiodelegate-indicator-light.png" : ""
- color: control.palette.windowText
+ color: control.palette.text
}
background: Item {
@@ -86,8 +86,8 @@ T.MenuItem {
states: [
{"edge": control.isFirstItem || control.isLastItem},
{"single": control.isSingleItem},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": control.down}
]
}
diff --git a/src/quickcontrols/ios/MenuSeparator.qml b/src/quickcontrols/ios/MenuSeparator.qml
index ba69005611..790d8f0302 100644
--- a/src/quickcontrols/ios/MenuSeparator.qml
+++ b/src/quickcontrols/ios/MenuSeparator.qml
@@ -18,8 +18,8 @@ T.MenuSeparator {
source: IOS.url + "menuseparator-separator"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
diff --git a/src/quickcontrols/ios/PageIndicator.qml b/src/quickcontrols/ios/PageIndicator.qml
index 036f952ea8..9a059b5df2 100644
--- a/src/quickcontrols/ios/PageIndicator.qml
+++ b/src/quickcontrols/ios/PageIndicator.qml
@@ -18,8 +18,8 @@ T.PageIndicator {
source: IOS.url + "pageindicator-delegate"
ImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"current": index === control.currentIndex},
]
}
diff --git a/src/quickcontrols/ios/Popup.qml b/src/quickcontrols/ios/Popup.qml
index 47a6157f71..ec76a90267 100644
--- a/src/quickcontrols/ios/Popup.qml
+++ b/src/quickcontrols/ios/Popup.qml
@@ -35,8 +35,8 @@ T.Popup {
source: IOS.url + "popup-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
diff --git a/src/quickcontrols/ios/ProgressBar.qml b/src/quickcontrols/ios/ProgressBar.qml
index c280d5f94f..20cf4dc265 100644
--- a/src/quickcontrols/ios/ProgressBar.qml
+++ b/src/quickcontrols/ios/ProgressBar.qml
@@ -18,21 +18,36 @@ T.ProgressBar {
contentItem: Item {
parent: control.background
- implicitWidth: progress.width
- implicitHeight: progress.implicitHeight
+ implicitWidth: control.indeterminate ? animatedProgress.implicitWidth : progress.implicitWidth
+ implicitHeight: control.indeterminate ? animatedProgress.implicitHeight : progress.implicitHeight
scale: control.mirrored ? -1 : 1
readonly property NinePatchImage progress: NinePatchImage {
parent: control.contentItem
- visible: control.indeterminate || control.value
+ visible: !control.indeterminate && control.value
y: (parent.height - height) / 2
- width: control.indeterminate ? control.width * 0.4 : control.position * parent.width
+ width: control.position * parent.width
source: IOS.url + "slider-progress"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
+ ]
+ }
+ }
+
+ readonly property NinePatchImage animatedProgress: NinePatchImage {
+ parent: control.contentItem
+ visible: control.indeterminate
+ y: (parent.height - height) / 2
+ width: control.width * 0.4
+
+ source: IOS.url + "slider-progress"
+ NinePatchImageSelector on source {
+ states: [
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
@@ -57,8 +72,8 @@ T.ProgressBar {
width: control.background.width
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
diff --git a/src/quickcontrols/ios/RadioButton.qml b/src/quickcontrols/ios/RadioButton.qml
index 37cf71e1f5..d107d9b490 100644
--- a/src/quickcontrols/ios/RadioButton.qml
+++ b/src/quickcontrols/ios/RadioButton.qml
@@ -26,8 +26,8 @@ T.RadioButton {
ImageSelector on source {
states: [
{"checked": control.checked},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -38,7 +38,7 @@ T.RadioButton {
text: control.text
font: control.font
- color: control.palette.windowText
+ color: control.palette.text
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/quickcontrols/ios/RadioDelegate.qml b/src/quickcontrols/ios/RadioDelegate.qml
index 6de6dbb622..91f74b9b4f 100644
--- a/src/quickcontrols/ios/RadioDelegate.qml
+++ b/src/quickcontrols/ios/RadioDelegate.qml
@@ -21,7 +21,7 @@ T.RadioDelegate {
icon.width: 29
icon.height: 29
- icon.color: control.enabled ? control.palette.text : control.palette.mid
+ icon.color: control.palette.text
indicator: Image {
x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
@@ -32,8 +32,8 @@ T.RadioDelegate {
source: IOS.url + "radiodelegate-indicator"
ImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -50,12 +50,12 @@ T.RadioDelegate {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? control.palette.text : control.palette.mid
+ color: control.palette.text
}
background: Rectangle {
implicitHeight: 44
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
NinePatchImage {
property real offset: control.icon.source.toString() !== "" ? control.icon.width + control.spacing : 0
x: control.down ? 0 : control.leftPadding + offset
@@ -65,8 +65,8 @@ T.RadioDelegate {
source: IOS.url + "itemdelegate-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": control.down}
]
}
diff --git a/src/quickcontrols/ios/RangeSlider.qml b/src/quickcontrols/ios/RangeSlider.qml
index 966f612ba8..aab3b0a598 100644
--- a/src/quickcontrols/ios/RangeSlider.qml
+++ b/src/quickcontrols/ios/RangeSlider.qml
@@ -28,8 +28,8 @@ T.RangeSlider {
source: IOS.url + "slider-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
}
@@ -47,8 +47,8 @@ T.RangeSlider {
source: IOS.url + "slider-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
}
@@ -67,22 +67,24 @@ T.RangeSlider {
width: control.horizontal ? control.background.width : control.background.height
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
NinePatchImage {
- x: control.first.handle.width / 2 + control.first.position * (parent.width - control.first.handle.width)
+ readonly property real handleWidth: control.first.handle ? control.first.handle.width : 0
+
+ x: handleWidth / 2 + control.first.position * (parent.width - handleWidth)
y: (parent.height - height) / 2
- width: control.second.position * (parent.width - control.first.handle.width) - control.first.position * (parent.width - control.first.handle.width)
+ width: control.second.position * (parent.width - handleWidth) - control.first.position * (parent.width - handleWidth)
height: parent.height
source: IOS.url + "slider-progress"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
}
diff --git a/src/quickcontrols/ios/ScrollBar.qml b/src/quickcontrols/ios/ScrollBar.qml
index 3bdabe4f08..afd2e737b3 100644
--- a/src/quickcontrols/ios/ScrollBar.qml
+++ b/src/quickcontrols/ios/ScrollBar.qml
@@ -24,8 +24,8 @@ T.ScrollBar {
source: IOS.url + "scrollindicator-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"horizontal": control.horizontal},
{"vertical": control.vertical}
]
diff --git a/src/quickcontrols/ios/ScrollIndicator.qml b/src/quickcontrols/ios/ScrollIndicator.qml
index d6d842196a..5af880ca36 100644
--- a/src/quickcontrols/ios/ScrollIndicator.qml
+++ b/src/quickcontrols/ios/ScrollIndicator.qml
@@ -18,8 +18,8 @@ T.ScrollIndicator {
source: IOS.url + "scrollindicator-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"horizontal": control.horizontal},
{"vertical": control.vertical}
]
diff --git a/src/quickcontrols/ios/SelectionRectangle.qml b/src/quickcontrols/ios/SelectionRectangle.qml
new file mode 100644
index 0000000000..06e540b411
--- /dev/null
+++ b/src/quickcontrols/ios/SelectionRectangle.qml
@@ -0,0 +1,30 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Templates as T
+import QtQuick.Controls.impl
+import QtQuick.Controls.iOS
+import QtQuick.Controls.iOS.impl
+
+T.SelectionRectangle {
+ id: control
+
+ topLeftHandle: handle
+ bottomRightHandle: handle
+
+ Component {
+ id: handle
+ Image {
+ id: image
+ source: IOS.url + "selectionrectangle-handle"
+ visible: SelectionRectangle.control.active
+ ImageSelector on source {
+ states: [
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
+ ]
+ }
+ }
+ }
+}
diff --git a/src/quickcontrols/ios/Slider.qml b/src/quickcontrols/ios/Slider.qml
index 1f6ca9f242..efa196bc72 100644
--- a/src/quickcontrols/ios/Slider.qml
+++ b/src/quickcontrols/ios/Slider.qml
@@ -26,8 +26,8 @@ T.Slider {
source: IOS.url + "slider-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"disabled": !control.enabled}
]
}
@@ -47,20 +47,22 @@ T.Slider {
width: control.horizontal ? background.width : background.height
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
NinePatchImage {
- width: control.handle.width / 2 + control.position * (parent.width - control.handle.width)
+ readonly property real handleWidth: control.handle ? control.handle.width : 0
+
+ width: handleWidth / 2 + control.position * (parent.width - handleWidth)
height: parent.height
source: IOS.url + "slider-progress"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
}
diff --git a/src/quickcontrols/ios/SpinBox.qml b/src/quickcontrols/ios/SpinBox.qml
index 11131a0db1..4168f6b43e 100644
--- a/src/quickcontrols/ios/SpinBox.qml
+++ b/src/quickcontrols/ios/SpinBox.qml
@@ -53,8 +53,8 @@ T.SpinBox {
states: [
{"up": true},
{"pressed": control.up.pressed},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -69,8 +69,8 @@ T.SpinBox {
states: [
{"down": true},
{"pressed": control.down.pressed},
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -87,8 +87,8 @@ T.SpinBox {
y: (parent.height - height) / 2
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
diff --git a/src/quickcontrols/ios/SwipeDelegate.qml b/src/quickcontrols/ios/SwipeDelegate.qml
index ccabfc0cb4..9c6a4c3703 100644
--- a/src/quickcontrols/ios/SwipeDelegate.qml
+++ b/src/quickcontrols/ios/SwipeDelegate.qml
@@ -21,7 +21,7 @@ T.SwipeDelegate {
icon.width: 29
icon.height: 29
- icon.color: control.enabled ? control.palette.text : control.palette.mid
+ icon.color: control.palette.text
swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } }
@@ -34,12 +34,12 @@ T.SwipeDelegate {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? control.palette.text : control.palette.mid
+ color: control.palette.text
}
background: Rectangle {
implicitHeight: 44
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
NinePatchImage {
property real offset: control.icon.source.toString() !== "" ? control.icon.width + control.spacing : 0
x: control.down ? 0 : control.leftPadding + offset
@@ -49,8 +49,8 @@ T.SwipeDelegate {
source: IOS.url + "itemdelegate-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"pressed": control.down}
]
}
diff --git a/src/quickcontrols/ios/Switch.qml b/src/quickcontrols/ios/Switch.qml
index 7a600afc5f..1b219cddf4 100644
--- a/src/quickcontrols/ios/Switch.qml
+++ b/src/quickcontrols/ios/Switch.qml
@@ -32,8 +32,8 @@ T.Switch {
source: IOS.url + "switch-indicator"
ImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"checked": control.checked}
]
}
@@ -53,8 +53,8 @@ T.Switch {
source: IOS.url + "switch-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"disabled": !control.enabled}
]
}
@@ -72,7 +72,7 @@ T.Switch {
text: control.text
font: control.font
- color: control.palette.windowText
+ color: control.palette.text
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/quickcontrols/ios/SwitchDelegate.qml b/src/quickcontrols/ios/SwitchDelegate.qml
index 4cba6dcabf..4b7d8bdccf 100644
--- a/src/quickcontrols/ios/SwitchDelegate.qml
+++ b/src/quickcontrols/ios/SwitchDelegate.qml
@@ -21,7 +21,7 @@ T.SwitchDelegate {
icon.width: 29
icon.height: 29
- icon.color: control.enabled ? control.palette.text : control.palette.mid
+ icon.color: control.palette.text
indicator: Image {
x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2
@@ -33,8 +33,8 @@ T.SwitchDelegate {
source: IOS.url + "switch-indicator"
ImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"checked": control.checked}
]
}
@@ -54,8 +54,8 @@ T.SwitchDelegate {
source: IOS.url + "switch-handle"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
{"disabled": !control.enabled}
]
}
@@ -79,12 +79,12 @@ T.SwitchDelegate {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? control.palette.text : control.palette.mid
+ color: control.palette.text
}
background: Rectangle {
implicitHeight: 44
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
NinePatchImage {
property real offset: control.icon.source.toString() !== "" ? control.icon.width + control.spacing : 0
x: control.leftPadding + offset
@@ -93,8 +93,8 @@ T.SwitchDelegate {
source: IOS.url + "itemdelegate-background"
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
]
}
}
diff --git a/src/quickcontrols/ios/TabBar.qml b/src/quickcontrols/ios/TabBar.qml
index 1d289c71af..0f42ea14e5 100644
--- a/src/quickcontrols/ios/TabBar.qml
+++ b/src/quickcontrols/ios/TabBar.qml
@@ -32,7 +32,7 @@ T.TabBar {
background: Rectangle {
implicitHeight: 49
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
Rectangle {
height: 1
width: parent.width
diff --git a/src/quickcontrols/ios/ToolBar.qml b/src/quickcontrols/ios/ToolBar.qml
index 77b3d8ac0b..28b0029018 100644
--- a/src/quickcontrols/ios/ToolBar.qml
+++ b/src/quickcontrols/ios/ToolBar.qml
@@ -15,7 +15,7 @@ T.ToolBar {
background: Rectangle {
implicitHeight: 49
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.light : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.light : control.palette.base
Rectangle {
height: 1
width: parent.width
diff --git a/src/quickcontrols/ios/ToolButton.qml b/src/quickcontrols/ios/ToolButton.qml
index b18073dc81..863226fdd2 100644
--- a/src/quickcontrols/ios/ToolButton.qml
+++ b/src/quickcontrols/ios/ToolButton.qml
@@ -18,8 +18,7 @@ T.ToolButton {
icon.width: 25
icon.height: 25
- icon.color: control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid
+ icon.color: control.down ? control.palette.highlight : control.palette.button
contentItem: IconLabel {
spacing: control.spacing
@@ -29,8 +28,7 @@ T.ToolButton {
icon: control.icon
text: control.text
font: control.font
- color: control.enabled ? (control.down ? control.palette.highlight : control.palette.button)
- : control.palette.mid
+ color: control.down ? control.palette.highlight : control.palette.button
}
background: Item {
diff --git a/src/quickcontrols/ios/ToolSeparator.qml b/src/quickcontrols/ios/ToolSeparator.qml
new file mode 100644
index 0000000000..10d94f204a
--- /dev/null
+++ b/src/quickcontrols/ios/ToolSeparator.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Templates as T
+import QtQuick.Controls.impl
+
+T.ToolSeparator {
+ id: control
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ horizontalPadding: vertical ? 13 : 7
+ verticalPadding: vertical ? 7 : 13
+
+ contentItem: Rectangle {
+ implicitHeight: control.vertical ? 23 : 1
+ implicitWidth: control.vertical ? 1 : 23
+ color: control.palette.mid
+ }
+}
diff --git a/src/quickcontrols/ios/ToolTip.qml b/src/quickcontrols/ios/ToolTip.qml
new file mode 100644
index 0000000000..973e819503
--- /dev/null
+++ b/src/quickcontrols/ios/ToolTip.qml
@@ -0,0 +1,53 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Templates as T
+import QtQuick.Controls.impl
+import QtQuick.Controls.iOS.impl
+
+T.ToolTip {
+ id: control
+
+ x: parent ? (parent.width - implicitWidth) / 2 : 0 - (background ? background.leftInset : 0)
+ y: -implicitHeight - (background ? background.topInset : 0)
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ contentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ contentHeight + topPadding + bottomPadding)
+
+ topMargin: background ? background.topInset : 0
+ leftMargin: background ? background.leftInset : 0
+ rightMargin: background ? background.rightInset : 0
+ bottomMargin: background ? background.bottomInset : 0
+
+ topPadding: background ? background.topPadding : 0
+ leftPadding: background ? background.leftPadding : 0
+ rightPadding: background ? background.rightPadding : 0
+ bottomPadding: background ? background.bottomPadding : 0
+
+ topInset: background ? -background.topInset || 0 : 0
+ leftInset: background ? -background.leftInset || 0 : 0
+ rightInset: background ? -background.rightInset || 0 : 0
+ bottomInset: background ? -background.bottomInset || 0 : 0
+
+ closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent
+
+ contentItem: Text {
+ text: control.text
+ wrapMode: Text.Wrap
+ font: control.font
+ color: control.palette.toolTipText
+ }
+
+ background: NinePatchImage {
+ source: IOS.url + "tooltip-background"
+ NinePatchImageSelector on source {
+ states: [
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
+ ]
+ }
+ }
+}
diff --git a/src/quickcontrols/ios/TreeViewDelegate.qml b/src/quickcontrols/ios/TreeViewDelegate.qml
index 89577e297b..5fc16bee07 100644
--- a/src/quickcontrols/ios/TreeViewDelegate.qml
+++ b/src/quickcontrols/ios/TreeViewDelegate.qml
@@ -46,8 +46,8 @@ T.TreeViewDelegate {
source: IOS.url + "arrow-indicator"
ImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -55,15 +55,15 @@ T.TreeViewDelegate {
background: Rectangle {
implicitHeight: 44
- color: Qt.styleHints.appearance === Qt.Dark ? control.palette.dark : control.palette.base
+ color: Qt.styleHints.colorScheme === Qt.Dark ? control.palette.dark : control.palette.base
NinePatchImage {
height: parent.height
width: parent.width
source: IOS.url + (control.highlighted ? "itemdelegate-background-pressed" : "itemdelegate-background")
NinePatchImageSelector on source {
states: [
- {"light": Qt.styleHints.appearance === Qt.Light},
- {"dark": Qt.styleHints.appearance === Qt.Dark}
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark}
]
}
}
@@ -86,7 +86,7 @@ T.TreeViewDelegate {
readonly property int __role: {
let model = control.treeView.model
- let index = control.treeView.modelIndex(column, row)
+ let index = control.treeView.index(row, column)
let editText = model.data(index, Qt.EditRole)
return editText !== undefined ? Qt.EditRole : Qt.DisplayRole
}
@@ -96,12 +96,12 @@ T.TreeViewDelegate {
x: control.contentItem.x
y: (parent.height - height) / 2
width: control.contentItem.width
- text: control.treeView.model.data(control.treeView.modelIndex(column, row), __role)
+ text: control.treeView.model.data(control.treeView.index(row, column), __role)
focus: true
}
TableView.onCommit: {
- let index = TableView.view.modelIndex(column, row)
+ let index = TableView.view.index(row, column)
TableView.view.model.setData(index, textField.text, __role)
}
diff --git a/src/quickcontrols/ios/VerticalHeaderView.qml b/src/quickcontrols/ios/VerticalHeaderView.qml
index 6015a800b1..179bc35b23 100644
--- a/src/quickcontrols/ios/VerticalHeaderView.qml
+++ b/src/quickcontrols/ios/VerticalHeaderView.qml
@@ -1,6 +1,8 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+pragma ComponentBehavior: Bound
+
import QtQuick
import QtQuick.Templates as T
@@ -16,6 +18,10 @@ T.VerticalHeaderView {
implicitHeight: syncView ? syncView.height : 0
delegate: Rectangle {
+ id: delegate
+
+ required property var model
+
readonly property real cellPadding: 8
implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2))
@@ -24,11 +30,9 @@ T.VerticalHeaderView {
Label {
id: text
- text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole]
- : model[control.textRole])
- : modelData
- width: parent.width
- height: parent.height
+ text: delegate.model[control.textRole]
+ width: delegate.width
+ height: delegate.height
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark.9.png
new file mode 100644
index 0000000000..4c752634f2
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@2x.9.png
new file mode 100644
index 0000000000..a0e7be1fb7
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@3x.9.png
new file mode 100644
index 0000000000..01ca2e7b19
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light.9.png
new file mode 100644
index 0000000000..31f979f17a
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@2x.9.png
new file mode 100644
index 0000000000..ad45b8c100
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@3x.9.png
new file mode 100644
index 0000000000..c9414f36be
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark.9.png
new file mode 100644
index 0000000000..e08c253e2a
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@2x.9.png
new file mode 100644
index 0000000000..c203f8f6d7
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@3x.9.png
new file mode 100644
index 0000000000..b651b14bf0
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light.9.png
new file mode 100644
index 0000000000..e86f90a095
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@2x.9.png
new file mode 100644
index 0000000000..a2553b828e
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@3x.9.png
new file mode 100644
index 0000000000..d832ded229
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-horizontal-pressed-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark.9.png
new file mode 100644
index 0000000000..8c966a7f87
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@2x.9.png
new file mode 100644
index 0000000000..2f65e40b76
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@3x.9.png
new file mode 100644
index 0000000000..311e1c15bf
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark.9.png
new file mode 100644
index 0000000000..bfb6d3a6bf
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@2x.9.png
new file mode 100644
index 0000000000..50345d347c
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@3x.9.png
new file mode 100644
index 0000000000..2afa7013bb
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light.9.png
new file mode 100644
index 0000000000..f80b82367e
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@2x.9.png
new file mode 100644
index 0000000000..dcba4c6220
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@3x.9.png
new file mode 100644
index 0000000000..5adde16f54
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark.9.png
new file mode 100644
index 0000000000..898cdf1173
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@2x.9.png
new file mode 100644
index 0000000000..492d319559
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@3x.9.png
new file mode 100644
index 0000000000..d670e53d32
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light.9.png
new file mode 100644
index 0000000000..c3f9486440
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@2x.9.png
new file mode 100644
index 0000000000..fb63659ceb
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@3x.9.png
new file mode 100644
index 0000000000..4b2c1f8a21
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-last-pressed-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light.9.png
new file mode 100644
index 0000000000..67a28cead3
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@2x.9.png
new file mode 100644
index 0000000000..d4348cb61a
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@3x.9.png
new file mode 100644
index 0000000000..c00560ae56
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark.9.png
new file mode 100644
index 0000000000..0d99bbd993
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@2x.9.png
new file mode 100644
index 0000000000..7e7e00bfce
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@3x.9.png
new file mode 100644
index 0000000000..64bd4860a0
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light.9.png
new file mode 100644
index 0000000000..094a28ef2f
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@2x.9.png
new file mode 100644
index 0000000000..bafcb6f623
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@3x.9.png
new file mode 100644
index 0000000000..8b17a33b57
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-delegate-vertical-pressed-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark.9.png
new file mode 100644
index 0000000000..5f00cd512d
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@2x.9.png
new file mode 100644
index 0000000000..72365ea12b
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@3x.9.png
new file mode 100644
index 0000000000..3c6b87a691
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-separator-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-separator-light.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-separator-light.9.png
new file mode 100644
index 0000000000..e701f3e7d5
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-separator-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-separator-light@2x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-separator-light@2x.9.png
new file mode 100644
index 0000000000..1e151c1bab
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-separator-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/dialogbuttonbox-separator-light@3x.9.png b/src/quickcontrols/ios/images/dialogbuttonbox-separator-light@3x.9.png
new file mode 100644
index 0000000000..f9391caa00
--- /dev/null
+++ b/src/quickcontrols/ios/images/dialogbuttonbox-separator-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/selectionrectangle-handle-dark.png b/src/quickcontrols/ios/images/selectionrectangle-handle-dark.png
new file mode 100644
index 0000000000..e6581ea767
--- /dev/null
+++ b/src/quickcontrols/ios/images/selectionrectangle-handle-dark.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/selectionrectangle-handle-dark@2x.png b/src/quickcontrols/ios/images/selectionrectangle-handle-dark@2x.png
new file mode 100644
index 0000000000..42f2ef1a1a
--- /dev/null
+++ b/src/quickcontrols/ios/images/selectionrectangle-handle-dark@2x.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/selectionrectangle-handle-dark@3x.png b/src/quickcontrols/ios/images/selectionrectangle-handle-dark@3x.png
new file mode 100644
index 0000000000..01feffb4cf
--- /dev/null
+++ b/src/quickcontrols/ios/images/selectionrectangle-handle-dark@3x.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/selectionrectangle-handle-light.png b/src/quickcontrols/ios/images/selectionrectangle-handle-light.png
new file mode 100644
index 0000000000..f16b0ee6e8
--- /dev/null
+++ b/src/quickcontrols/ios/images/selectionrectangle-handle-light.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/selectionrectangle-handle-light@2x.png b/src/quickcontrols/ios/images/selectionrectangle-handle-light@2x.png
new file mode 100644
index 0000000000..87907decba
--- /dev/null
+++ b/src/quickcontrols/ios/images/selectionrectangle-handle-light@2x.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/selectionrectangle-handle-light@3x.png b/src/quickcontrols/ios/images/selectionrectangle-handle-light@3x.png
new file mode 100644
index 0000000000..4379e4841a
--- /dev/null
+++ b/src/quickcontrols/ios/images/selectionrectangle-handle-light@3x.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/tooltip-background-dark.9.png b/src/quickcontrols/ios/images/tooltip-background-dark.9.png
new file mode 100644
index 0000000000..271a03eae6
--- /dev/null
+++ b/src/quickcontrols/ios/images/tooltip-background-dark.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/tooltip-background-dark@2x.9.png b/src/quickcontrols/ios/images/tooltip-background-dark@2x.9.png
new file mode 100644
index 0000000000..a45eac9cd8
--- /dev/null
+++ b/src/quickcontrols/ios/images/tooltip-background-dark@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/tooltip-background-dark@3x.9.png b/src/quickcontrols/ios/images/tooltip-background-dark@3x.9.png
new file mode 100644
index 0000000000..4d0cd6a7f7
--- /dev/null
+++ b/src/quickcontrols/ios/images/tooltip-background-dark@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/tooltip-background-light.9.png b/src/quickcontrols/ios/images/tooltip-background-light.9.png
new file mode 100644
index 0000000000..76e2f9a4ea
--- /dev/null
+++ b/src/quickcontrols/ios/images/tooltip-background-light.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/tooltip-background-light@2x.9.png b/src/quickcontrols/ios/images/tooltip-background-light@2x.9.png
new file mode 100644
index 0000000000..2be7602f84
--- /dev/null
+++ b/src/quickcontrols/ios/images/tooltip-background-light@2x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/images/tooltip-background-light@3x.9.png b/src/quickcontrols/ios/images/tooltip-background-light@3x.9.png
new file mode 100644
index 0000000000..0563a85195
--- /dev/null
+++ b/src/quickcontrols/ios/images/tooltip-background-light@3x.9.png
Binary files differ
diff --git a/src/quickcontrols/ios/impl/CMakeLists.txt b/src/quickcontrols/ios/impl/CMakeLists.txt
index e298335bb1..a19704ad11 100644
--- a/src/quickcontrols/ios/impl/CMakeLists.txt
+++ b/src/quickcontrols/ios/impl/CMakeLists.txt
@@ -7,13 +7,13 @@
set(qml_files
"CursorDelegate.qml"
+ "DialogButtonBoxDelegate.qml"
)
-qt_internal_add_qml_module(qtquickcontrols2iosstyleimplplugin
+qt_internal_add_qml_module(QuickControls2IOSStyleImpl
URI "QtQuick.Controls.iOS.impl"
VERSION "${PROJECT_VERSION}"
PLUGIN_TARGET qtquickcontrols2iosstyleimplplugin
- NO_PLUGIN_OPTIONAL
SOURCES
qquickiosstyle.cpp qquickiosstyle_p.h
qquickioscursorflashtimer_p.h qquickioscursorflashtimer.cpp
diff --git a/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml b/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml
new file mode 100644
index 0000000000..2be1f9535e
--- /dev/null
+++ b/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml
@@ -0,0 +1,68 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Controls.impl
+import QtQuick.Controls.iOS.impl
+
+Button {
+ id: delegate
+
+ implicitHeight: 44
+
+ readonly property var dialogButtonBox: DialogButtonBox.buttonBox
+ readonly property bool hasVerticalLayout: dialogButtonBox && (dialogButtonBox.count !== 2)
+ readonly property bool isLastItem: dialogButtonBox
+ && (dialogButtonBox.contentChildren)
+ && (dialogButtonBox.itemAt(count - 1) == delegate)
+ readonly property int count: dialogButtonBox ? dialogButtonBox.count : 0
+
+ flat: true
+
+ contentItem: IconLabel {
+ readonly property var redColor: Qt.styleHints.colorScheme === Qt.Light ? "#ff3b30" : "#ff453a"
+ text: delegate.text
+ font: delegate.font
+ spacing: delegate.spacing
+ color: delegate.DialogButtonBox.buttonRole === DialogButtonBox.DestructiveRole
+ ? redColor
+ : (delegate.down ? delegate.palette.highlight : delegate.palette.button)
+ }
+
+ background: Item {
+ // The assets below only support the typical iOS Dialog look with buttons
+ // positioned at the bottom and that fill the entire width of the parent.
+ // Don't draw a background if these conditions are not met
+ visible: delegate.dialogButtonBox
+ && delegate.dialogButtonBox.position === DialogButtonBox.Footer
+ && delegate.dialogButtonBox.alignment === 0
+ implicitHeight: 44
+ readonly property bool leftItem: !delegate.hasVerticalLayout && !delegate.isLastItem
+ readonly property bool rightItem: !delegate.hasVerticalLayout && !leftItem
+ readonly property bool flip: delegate.mirrored ? leftItem : rightItem
+
+ NinePatchImage {
+ transform: [
+ // flip
+ Translate { x: (!delegate.background.flip ? 0 : -width) },
+ Scale { xScale: (!delegate.background.flip ? 1 : -1) }
+ ]
+ width: parent.width
+ height: parent.height
+ source: IOS.url + "dialogbuttonbox-delegate"
+ NinePatchImageSelector on source {
+ states: [
+ {"horizontal": !delegate.hasVerticalLayout},
+ {"vertical": delegate.hasVerticalLayout},
+ {"last": delegate.hasVerticalLayout && delegate.isLastItem},
+ {"pressed": delegate.down},
+ {"light": Qt.styleHints.colorScheme === Qt.Light},
+ {"dark": Qt.styleHints.colorScheme === Qt.Dark},
+ ]
+ }
+ }
+
+
+ }
+}
diff --git a/src/quickcontrols/ios/impl/qquickiosstyle_p.h b/src/quickcontrols/ios/impl/qquickiosstyle_p.h
index 03144751ad..4df7c2ac72 100644
--- a/src/quickcontrols/ios/impl/qquickiosstyle_p.h
+++ b/src/quickcontrols/ios/impl/qquickiosstyle_p.h
@@ -23,7 +23,7 @@ QT_BEGIN_NAMESPACE
class QQuickIOSStyle : public QObject
{
Q_OBJECT
- Q_PROPERTY(QUrl url READ url CONSTANT)
+ Q_PROPERTY(QUrl url READ url CONSTANT FINAL)
QML_NAMED_ELEMENT(IOS)
QML_SINGLETON
QML_ADDED_IN_VERSION(6, 5)
diff --git a/src/quickcontrols/ios/qquickiostheme.mm b/src/quickcontrols/ios/qquickiostheme.mm
index 2ee9a63d3d..2f7c84ae7e 100644
--- a/src/quickcontrols/ios/qquickiostheme.mm
+++ b/src/quickcontrols/ios/qquickiostheme.mm
@@ -3,7 +3,9 @@
#include "qquickiostheme_p.h"
+#if defined(Q_OS_APPLE)
#include <QtGui/private/qcoregraphics_p.h>
+#endif
#ifdef Q_OS_IOS
#include <UIKit/UIInterface.h>
@@ -19,8 +21,9 @@ void QQuickIOSTheme::initialize(QQuickTheme *theme)
QPalette systemPalette;
QColor window;
- QColor windowText;
- QColor background;
+ QColor base;
+ QColor text;
+ QColor disabledText;
QColor placeholderText;
QColor button;
QColor disabledButton;
@@ -30,8 +33,9 @@ void QQuickIOSTheme::initialize(QQuickTheme *theme)
QColor darkGray;
#ifdef Q_OS_IOS
window = qt_mac_toQColor(UIColor.systemGroupedBackgroundColor.CGColor);
- windowText = qt_mac_toQColor(UIColor.labelColor.CGColor);
- background = qt_mac_toQColor(UIColor.secondarySystemGroupedBackgroundColor.CGColor);
+ base = qt_mac_toQColor(UIColor.secondarySystemGroupedBackgroundColor.CGColor);
+ text = qt_mac_toQColor(UIColor.labelColor.CGColor);
+ disabledText = qt_mac_toQColor(UIColor.tertiaryLabelColor.CGColor);
placeholderText = qt_mac_toQColor(UIColor.placeholderTextColor.CGColor);
button = qt_mac_toQColor(UIColor.systemBlueColor.CGColor);
disabledButton = qt_mac_toQColor(UIColor.tertiarySystemFillColor.CGColor);
@@ -42,9 +46,10 @@ void QQuickIOSTheme::initialize(QQuickTheme *theme)
#else
bool isDarkSystemTheme = QQuickStylePrivate::isDarkSystemTheme();
window = isDarkSystemTheme ? QColor(qRgba(0, 0, 0, 255)) : QColor(qRgba(242, 242, 247, 255));
- windowText = isDarkSystemTheme ? QColor(Qt::white) : QColor(Qt::black);
- background = isDarkSystemTheme ? QColor(qRgba(28, 28, 30, 255)) : QColor(Qt::white);
- placeholderText = isDarkSystemTheme ? QColor(qRgba(235, 235, 245, 77)) : QColor(qRgba(60, 60, 67, 77));
+ base = isDarkSystemTheme ? QColor(qRgba(28, 28, 30, 255)) : QColor(Qt::white);
+ text = isDarkSystemTheme ? QColor(Qt::white) : QColor(Qt::black);
+ disabledText = isDarkSystemTheme ? QColor(qRgba(60, 60, 67, 76)) : QColor(qRgba(235, 235, 245, 76));
+ placeholderText = isDarkSystemTheme ? QColor(qRgba(235, 235, 245, 76)) : QColor(qRgba(60, 60, 67, 77));
button = isDarkSystemTheme ? QColor(qRgba(10, 132, 255, 255)) : QColor(qRgba(0, 122, 255, 255));
disabledButton = isDarkSystemTheme ? QColor(qRgba(118, 118, 128, 61)) : QColor(qRgba(118, 118, 128, 31));
white = QColor(Qt::white);
@@ -53,23 +58,23 @@ void QQuickIOSTheme::initialize(QQuickTheme *theme)
darkGray = QColor(qRgba(142, 142, 147, 255));
#endif
systemPalette.setColor(QPalette::Window, window);
+ systemPalette.setColor(QPalette::Base, base);
- systemPalette.setColor(QPalette::Active, QPalette::WindowText, windowText);
- systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, darkGray);
-
- systemPalette.setColor(QPalette::Base, background);
-
+ systemPalette.setColor(QPalette::WindowText, text);
+ systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, disabledText);
+ systemPalette.setColor(QPalette::Text, text);
+ systemPalette.setColor(QPalette::Disabled, QPalette::Text, disabledText);
systemPalette.setColor(QPalette::PlaceholderText, placeholderText);
systemPalette.setColor(QPalette::Button, button);
systemPalette.setColor(QPalette::Disabled, QPalette::Button, disabledButton);
-
systemPalette.setColor(QPalette::ButtonText, white);
- white.setAlphaF(0.5);
- systemPalette.setColor(QPalette::Disabled, QPalette::ButtonText, white);
+ systemPalette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledText);
+
+ systemPalette.setColor(QPalette::ToolTipText, text);
+ systemPalette.setColor(QPalette::Disabled, QPalette::ToolTipText, disabledText);
- button.setAlphaF(0.8);
- systemPalette.setColor(QPalette::Highlight, button);
+ systemPalette.setColor(QPalette::Highlight, button.lighter(115));
systemPalette.setColor(QPalette::Light, lightGray);
systemPalette.setColor(QPalette::Mid, gray);
@@ -79,4 +84,3 @@ void QQuickIOSTheme::initialize(QQuickTheme *theme)
}
QT_END_NAMESPACE
-