Commit 5ad2b7f8 authored by DoinLakeFlyer's avatar DoinLakeFlyer

parent fb5fc249
......@@ -142,6 +142,8 @@
<file alias="QGroundControl/Controls/QGCMenuSeparator.qml">src/QmlControls/QGCMenuSeparator.qml</file>
<file alias="QGroundControl/Controls/QGCMouseArea.qml">src/QmlControls/QGCMouseArea.qml</file>
<file alias="QGroundControl/Controls/QGCMovableItem.qml">src/QmlControls/QGCMovableItem.qml</file>
<file alias="QGroundControl/Controls/QGCPopupDialog.qml">src/QmlControls/QGCPopupDialog.qml</file>
<file alias="QGroundControl/Controls/QGCPopupDialogContainer.qml">src/QmlControls/QGCPopupDialogContainer.qml</file>
<file alias="QGroundControl/Controls/QGCPipable.qml">src/QmlControls/QGCPipable.qml</file>
<file alias="QGroundControl/Controls/QGCRadioButton.qml">src/QmlControls/QGCRadioButton.qml</file>
<file alias="QGroundControl/Controls/QGCSlider.qml">src/QmlControls/QGCSlider.qml</file>
......
/****************************************************************************
*
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import QtQuick 2.12
Item {
width: childrenRect.width
height: childrenRect.height
signal hideDialog
Keys.onReleased: {
if (event.key === Qt.Key_Escape) {
reject()
event.accepted = true
} else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
accept()
event.accepted = true
}
}
function accept() {
if (acceptAllowed) {
Qt.inputMethod.hide()
hideDialog()
}
}
function reject() {
if (rejectAllowed) {
Qt.inputMethod.hide()
hideDialog()
}
}
}
/****************************************************************************
*
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import QtQuick 2.12
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.12
import QtQuick.Dialogs 1.3
import QGroundControl 1.0
import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0
import QGroundControl.ScreenTools 1.0
Popup {
anchors.centerIn: parent
width: mainFlickable.width
height: mainFlickable.height
padding: 0
modal: true
focus: true
background: Rectangle {
color: QGroundControl.globalPalette.window
}
property string title
property var buttons
property var dialogComponent
property real _contentMargin: ScreenTools.defaultFontPixelHeight / 2
property real _popupDoubleInset: ScreenTools.defaultFontPixelHeight * 2
property real _maxAvailableWidth: parent.width - _popupDoubleInset
property real _maxAvailableHeight: parent.height - _popupDoubleInset
Component.onCompleted: setupDialogButtons()
QGCPalette { id: qgcPal; colorGroupEnabled: parent.enabled }
function setupDialogButtons() {
acceptButton.visible = false
rejectButton.visible = false
// Accept role buttons
if (buttons & StandardButton.Ok) {
acceptButton.text = qsTr("Ok")
acceptButton.visible = true
} else if (buttons & StandardButton.Open) {
acceptButton.text = qsTr("Open")
acceptButton.visible = true
} else if (buttons & StandardButton.Save) {
acceptButton.text = qsTr("Save")
acceptButton.visible = true
} else if (buttons & StandardButton.Apply) {
acceptButton.text = qsTr("Apply")
acceptButton.visible = true
} else if (buttons & StandardButton.Open) {
acceptButton.text = qsTr("Open")
acceptButton.visible = true
} else if (buttons & StandardButton.SaveAll) {
acceptButton.text = qsTr("Save All")
acceptButton.visible = true
} else if (buttons & StandardButton.Yes) {
acceptButton.text = qsTr("Yes")
acceptButton.visible = true
} else if (buttons & StandardButton.YesToAll) {
acceptButton.text = qsTr("Yes to All")
acceptButton.visible = true
} else if (buttons & StandardButton.Retry) {
acceptButton.text = qsTr("Retry")
acceptButton.visible = true
} else if (buttons & StandardButton.Reset) {
acceptButton.text = qsTr("Reset")
acceptButton.visible = true
} else if (buttons & StandardButton.RestoreToDefaults) {
acceptButton.text = qsTr("Restore to Defaults")
acceptButton.visible = true
} else if (buttons & StandardButton.Ignore) {
acceptButton.text = qsTr("Ignore")
acceptButton.visible = true
}
// Reject role buttons
if (buttons & StandardButton.Cancel) {
rejectButton.text = qsTr("Cancel")
rejectButton.visible = true
} else if (buttons & StandardButton.Close) {
rejectButton.text = qsTr("Close")
rejectButton.visible = true
} else if (buttons & StandardButton.No) {
rejectButton.text = qsTr("No")
rejectButton.visible = true
} else if (buttons & StandardButton.NoToAll) {
rejectButton.text = qsTr("No to All")
rejectButton.visible = true
} else if (buttons & StandardButton.Abort) {
rejectButton.text = qsTr("Abort")
rejectButton.visible = true
}
if (rejectButton.visible) {
closePolicy = Popup.NoAutoClose | Popup.CloseOnEscape
} else {
closePolicy = Popup.NoAutoClose
}
}
Connections {
target: dialogComponentLoader.item
onHideDialog: close()
}
QGCFlickable {
id: mainFlickable
width: Math.min(mainColumnLayout.width, _maxAvailableWidth)
height: Math.min(mainColumnLayout.height, _maxAvailableHeight)
contentWidth: mainColumnLayout.width
contentHeight: mainColumnLayout.height
Rectangle {
width: titleRowLayout.width
height: titleRowLayout.height
color: qgcPal.windowShade
}
ColumnLayout {
id: mainColumnLayout
spacing: _contentMargin
RowLayout {
id: titleRowLayout
Layout.fillWidth: true
QGCLabel {
Layout.leftMargin: ScreenTools.defaultFontPixelWidth
Layout.fillWidth: true
text: title
height: parent.height
verticalAlignment: Text.AlignVCenter
}
QGCButton {
id: rejectButton
onClicked: dialogComponentLoader.item.reject()
}
QGCButton {
id: acceptButton
primary: true
onClicked: dialogComponentLoader.item.accept()
}
}
Item {
id: item
width: dialogComponentLoader.width + (_contentMargin * 2)
height: dialogComponentLoader.height + _contentMargin
Loader {
id: dialogComponentLoader
x: _contentMargin
sourceComponent: dialogComponent
focus: true
property bool acceptAllowed: acceptButton.visible
property bool rejectAllowed: rejectButton.visible
}
}
}
}
}
......@@ -64,6 +64,8 @@ QGCMouseArea 1.0 QGCMouseArea.qml
QGCMovableItem 1.0 QGCMovableItem.qml
QGCOptionsComboBox 1.0 QGCOptionsComboBox.qml
QGCPipable 1.0 QGCPipable.qml
QGCPopupDialog 1.0 QGCPopupDialog.qml
QGCPopupDialogContainer 1.0 QGCPopupDialogContainer.qml
QGCRadioButton 1.0 QGCRadioButton.qml
QGCSlider 1.0 QGCSlider.qml
QGCSwitch 1.0 QGCSwitch.qml
......
......@@ -223,6 +223,16 @@ ApplicationWindow {
}
}
function showPopupDialog(component, title, buttons) {
var popup = popupDialogContainterComponent.createObject(mainWindow, { "title": title, "buttons": buttons, "dialogComponent": component})
popup.open()
}
Component {
id: popupDialogContainterComponent
QGCPopupDialogContainer { }
}
property bool _forceClose: false
function finishCloseProcess() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment