Migration of QtMvvm from github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.4 KiB

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
import de.skycoder42.QtMvvm.Core 1.1
import de.skycoder42.QtMvvm.Quick 1.1
AlertDialog {
id: _msgBoxBase
property var msgConfig
property MessageResult msgResult
property alias iconVisible: _icon.visible
property alias iconSource: _icon.source
property bool autoHandleBtns: true
signal buttonClicked(int button)
7 years ago
header: Pane {
id: _headerPane
background: Item {}
bottomPadding: 0
7 years ago
RowLayout {
anchors.fill: parent
spacing: _headerPane.padding
7 years ago
TintIcon {
id: _icon
visible: false
Layout.preferredWidth: implicitWidth
Layout.preferredHeight: implicitHeight
7 years ago
Layout.alignment: Qt.AlignVCenter
}
7 years ago
Label {
id: _title
text: msgConfig.title
visible: msgConfig.title
elide: Label.ElideRight
font.bold: true
Layout.fillWidth: true
}
}
}
footer: Item {
visible: msgConfig.buttons !== MessageConfig.NoButton
implicitWidth: _btnBox.implicitWidth
implicitHeight: _btnBox.implicitHeight
DialogButtonBox {
id: _btnBox
anchors.fill: parent
readonly property var _allBtns: [
DialogButtonBox.NoButton,
DialogButtonBox.Ok,
DialogButtonBox.Save,
DialogButtonBox.SaveAll,
DialogButtonBox.Open,
DialogButtonBox.Yes,
DialogButtonBox.YesToAll,
DialogButtonBox.No,
DialogButtonBox.NoToAll,
DialogButtonBox.Abort,
DialogButtonBox.Retry,
DialogButtonBox.Ignore,
DialogButtonBox.Close,
DialogButtonBox.Cancel,
DialogButtonBox.Discard,
DialogButtonBox.Help,
DialogButtonBox.Apply,
DialogButtonBox.Reset,
DialogButtonBox.RestoreDefaults,
]
standardButtons: msgConfig.buttons
onStandardButtonsChanged: {
Object.keys(msgConfig.buttonTexts).forEach(function(key) {
standardButton(key).text = msgConfig.buttonTexts[key]
});
}
onClicked: {
_msgBoxBase.buttonClicked(button);
if(msgResult && autoHandleBtns) {
_allBtns.forEach(function(sBtn) {
if(button === standardButton(sBtn)) {
msgResult.complete(sBtn);
msgResult = null;
_msgBoxBase.done(sBtn);
}
});
}
}
}
}
onClosed: {
if(msgResult && autoHandleBtns) {
msgResult.complete(MessageConfig.NoButton);
msgResult = null;
}
}
Component.onCompleted: {
if(msgResult && autoHandleBtns)
msgResult.setCloseTarget(_msgBoxBase, "reject()");
}
}