diff options
author | Michal Klocek <michal.klocek@theqtcompany.com> | 2016-06-13 12:38:51 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2016-08-18 09:23:03 +0000 |
commit | baeb20b2e720f5c683cf3810116d827e1561c4b2 (patch) | |
tree | abaf7c153e369c2043b46621ab78fbe42ce74421 /src/webengine/ui2/ConfirmDialog.qml | |
parent | 6534b09073791398bad99863821740e986915bff (diff) |
Add Qt Quick Controls 2 support for dialogs
QtQuickControls1 does not handle embedded
platforms too well. In case of eglfs platform
we crash badly - only one window is supported.
QtQuickControls2 on the other hand lacks the native
look on desktop. Therefore on desktop platforms
keep using QtQuickControls1, and on eglfs use
QtQuickControls2.
QtQuick.Dialogs are not implemented for QtQuickControls2,
moreover required authentication dialog and prompt
dialog are neither implemented in QtQuickControls1.
As a workaround make new dialogs to give
consistent look and feel.
Replace close() with reject() signal in java script
prompt dialog to unify handling between qqc1 and qqc2
[ChangeLog][QtWebEngine][General] Qt WebEngine (QML)
now optionally uses Qt Quick 2 Controls to show standard dialogs.
Task-number: QTBUG-53467
Task-number: QTBUG-51177
Change-Id: I42f9506357bbb82d4f04465f30a18c8013439e25
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src/webengine/ui2/ConfirmDialog.qml')
-rw-r--r-- | src/webengine/ui2/ConfirmDialog.qml | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/webengine/ui2/ConfirmDialog.qml b/src/webengine/ui2/ConfirmDialog.qml new file mode 100644 index 000000000..0649d3654 --- /dev/null +++ b/src/webengine/ui2/ConfirmDialog.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.0 + +Dialog { + property alias text: message.text + property bool handled: false + signal accepted() + signal rejected() + title: qsTr("Alert Dialog") + modality: Qt.NonModal + + //handle the case where users simply closes the dialog + onVisibilityChanged: { + if (visible == false && handled == false) { + handled = true; + rejected(); + } else { + handled = false; + } + } + + function acceptDialog() { + accepted(); + handled = true; + close(); + } + + function rejectDialog() { + rejected(); + handled = true; + close(); + } + + contentItem: ColumnLayout { + id: rootLayout + anchors.fill: parent + anchors.margins: 4 + property int minimumWidth: rootLayout.implicitWidth + rootLayout.doubleMargins + property int minimumHeight: rootLayout.implicitHeight + rootLayout.doubleMargins + property int doubleMargins: anchors.margins * 2 + SystemPalette { id: palette; colorGroup: SystemPalette.Active } + RowLayout { + Layout.alignment: Qt.AlignRight + spacing: 8 + Image { + source: "question.png" + } + Text { + id: message + Layout.fillWidth: true + color: palette.windowText + } + } + Item { + Layout.fillHeight: true + } + RowLayout { + Layout.alignment: Qt.AlignRight + spacing: 8 + Controls.Button { + text: qsTr("OK") + onClicked: acceptDialog() + } + Controls.Button { + text: qsTr("Cancel") + onClicked: rejectDialog() + } + } + } +} |