aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2023-01-26 11:26:19 +0100
committerDoris Verria <doris.verria@qt.io>2023-02-09 00:00:16 +0100
commit75bb351462b23f4c2aa729f3aa18e02bb97962fe (patch)
treed9df678e60b6029469316a403b9c7efdc55c3249
parent4a9be82a382b58155949ad4ec75e8ce4e12c47e6 (diff)
iOS Style: Add Dialog and DialogButtonBox
Pick-to: 6.5 Change-Id: I6899b1438af43a822f3f212a6fd928200c893ee3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/quickcontrols/ios/CMakeLists.txt2
-rw-r--r--src/quickcontrols/ios/Dialog.qml74
-rw-r--r--src/quickcontrols/ios/DialogButtonBox.qml75
-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/impl/CMakeLists.txt1
-rw-r--r--src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml68
47 files changed, 220 insertions, 0 deletions
diff --git a/src/quickcontrols/ios/CMakeLists.txt b/src/quickcontrols/ios/CMakeLists.txt
index d20090b601..b87be9a280 100644
--- a/src/quickcontrols/ios/CMakeLists.txt
+++ b/src/quickcontrols/ios/CMakeLists.txt
@@ -45,6 +45,8 @@ set(qml_files
"ComboBox.qml"
"HorizontalHeaderView.qml"
"VerticalHeaderView.qml"
+ "Dialog.qml"
+ "DialogButtonBox.qml"
)
set_source_files_properties(Slider.qml PROPERTIES
diff --git a/src/quickcontrols/ios/Dialog.qml b/src/quickcontrols/ios/Dialog.qml
new file mode 100644
index 0000000000..8f762842b8
--- /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.appearance === Qt.Light},
+ {"dark": Qt.styleHints.appearance === 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..761ce98887
--- /dev/null
+++ b/src/quickcontrols/ios/DialogButtonBox.qml
@@ -0,0 +1,75 @@
+// 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.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.appearance === Qt.Light},
+ {"dark": Qt.styleHints.appearance === 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.appearance === Qt.Light},
+ {"dark": Qt.styleHints.appearance === Qt.Dark}
+ ]
+ }
+ }
+ }
+}
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/impl/CMakeLists.txt b/src/quickcontrols/ios/impl/CMakeLists.txt
index e298335bb1..48727e8dcb 100644
--- a/src/quickcontrols/ios/impl/CMakeLists.txt
+++ b/src/quickcontrols/ios/impl/CMakeLists.txt
@@ -7,6 +7,7 @@
set(qml_files
"CursorDelegate.qml"
+ "DialogButtonBoxDelegate.qml"
)
qt_internal_add_qml_module(qtquickcontrols2iosstyleimplplugin
diff --git a/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml b/src/quickcontrols/ios/impl/DialogButtonBoxDelegate.qml
new file mode 100644
index 0000000000..77ecd9997b
--- /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.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.appearance === Qt.Light ? "#ff3b30" : "#ff453a"
+ text: delegate.text
+ font: delegate.font
+ spacing: delegate.spacing
+ color: delegate.DialogButtonBox.buttonRole === DialogButtonBox.DestructiveRole
+ ? redColor
+ : delegate.enabled ? (delegate.down ? delegate.palette.highlight : delegate.palette.button)
+ : delegate.palette.mid
+ }
+
+ 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.appearance === Qt.Light},
+ {"dark": Qt.styleHints.appearance === Qt.Dark},
+ ]
+ }
+ }
+
+
+ }
+}