|
|
|
|
import QtQuick 2.10
|
|
|
|
|
import QtQuick.Controls 2.3
|
|
|
|
|
import de.skycoder42.QtMvvm.Core 1.0
|
|
|
|
|
|
|
|
|
|
QtObject {
|
|
|
|
|
id: _dialogPresenter
|
|
|
|
|
|
|
|
|
|
property Item rootItem: null
|
|
|
|
|
|
|
|
|
|
function showDialog(config, result) {
|
|
|
|
|
if(config.type == "msgbox") {
|
|
|
|
|
createMsgBox(config, result)
|
|
|
|
|
return true;
|
|
|
|
|
} else if(config.type == "input") {
|
|
|
|
|
createInput(config, result)
|
|
|
|
|
return true;
|
|
|
|
|
} else
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function closeAction() {
|
|
|
|
|
if(_popups.length > 0) {
|
|
|
|
|
_popups[_popups.length - 1].reject();
|
|
|
|
|
return true;
|
|
|
|
|
} else
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
property var _popups: []
|
|
|
|
|
property Component _msgBoxComponent: Component {
|
|
|
|
|
MsgBox {
|
|
|
|
|
id: __msgBox
|
|
|
|
|
|
|
|
|
|
onClosed: {
|
|
|
|
|
var index = _popups.indexOf(__msgBox);
|
|
|
|
|
if(index > -1) {
|
|
|
|
|
__msgBox.destroy();
|
|
|
|
|
_dialogPresenter._popups.splice(index, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
|
_popups.push(__msgBox)
|
|
|
|
|
__msgBox.open()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
property Component _inputComponent: Component {
|
|
|
|
|
InputDialog {
|
|
|
|
|
id: __input
|
|
|
|
|
|
|
|
|
|
onClosed: {
|
|
|
|
|
var index = _popups.indexOf(__input);
|
|
|
|
|
if(index > -1) {
|
|
|
|
|
__input.destroy();
|
|
|
|
|
_dialogPresenter._popups.splice(index, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
|
_popups.push(__input)
|
|
|
|
|
__input.open()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createMsgBox(config, result) {
|
|
|
|
|
var props = config.viewProperties;
|
|
|
|
|
props["msgConfig"] = config;
|
|
|
|
|
props["msgResult"] = result;
|
|
|
|
|
var incubator = _msgBoxComponent.incubateObject(rootItem, props);
|
|
|
|
|
return incubator.status !== Component.Error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createInput(config, result) {
|
|
|
|
|
var props = config.viewProperties;
|
|
|
|
|
props["msgConfig"] = config;
|
|
|
|
|
props["msgResult"] = result;
|
|
|
|
|
var incubator = _inputComponent.incubateObject(rootItem, props);
|
|
|
|
|
return incubator.status !== Component.Error;
|
|
|
|
|
}
|
|
|
|
|
}
|