You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RnQ/Distro/Template/dialog.htm

98 lines
2.8 KiB
HTML

<html window-resizable="false">
<head>
<include src="common.htm" />
<style src="dialog.css" />
<script>
var msg = $("#msg"),
buttons = $("#buttons"),
countdown,
timeLeft = 0;
view.uniqueid = "msgdlg";
view.isDialog = true;
if (view.parameters.icon != "")
view.loadIcon("themepicsingle:" + view.parameters.icon);
CommonNative.ShowTaskbarButton(document);
setupWindow(false, false, false);
animateWindow();
function countToClose() {
timeLeft--;
if (timeLeft == 0) {
view.close(view.parameters.default);
return false;
} else {
countdown.text = "(" + timeLeft + ")";
return true;
}
}
var texts = {
mbOK: "Ok",
mbCancel: "Cancel",
mbAbort: "Abort",
mbRetry: "Retry",
mbIgnore: "Ignore",
mbYes: "Yes",
mbNo: "No",
mbAll: "All",
mbNoToAll: "No to all",
mbYesToAll: "Yes to all",
mbHelp: "Help",
mbClose: "Close"
};
var ttexts = CommonNative.GetTranslations(texts);
var btns = [];
if (!view.parameters.buttons) view.parameters.buttons = ["mbOK"];
if (!view.parameters.default) view.parameters.default = "mbOK";
for (let btn of view.parameters.buttons) {
var cd;
var custom = typeof btn !== "string";
if ((!custom && btn == view.parameters.default) || (custom && btn[0] == view.parameters.default))
cd = <span id="countdown"></span>;
var value = custom ? btn[0] : btn;
var caption = custom ? btn[1] : ttexts[btn];
btns.push(<button uwp modal={value}><div><span>{caption}</span>{cd}</div></button>);
if (custom && btn.length > 2) btns.push(<br/>);
}
buttons.append(btns);
countdown = $("#countdown");
msg.text = view.parameters.message;
if (view.parameters.left) msg.classList.add("leftalign");
var def = $(`button[modal="${view.parameters.default}"]`);
if (def) def.state.focus = true;
if (view.parameters.timeout > 0) {
countdown.setVisible(true);
timeLeft = view.parameters.timeout;
document.timer(1s, countToClose);
countToClose();
} else countdown.setVisible(false);
document.on("click", "button", (e, el) => {
view.close(el.attr["modal"]);
}).on("keydown", (e) => {
if (e.keyCode == Event.VK_ESCAPE) view.close(view.parameters.cancel);
else if (e.ctrlKey && e.keyCode == Event.VK_C) Clipboard.writeText(view.parameters.message);
else if (e.keyCode == Event.VK_RIGHT) {
if (view.focus && view.focus.next) view.focus.next.state.focus = true;
} else if (e.keyCode == Event.VK_LEFT) {
if (view.focus && view.focus.prior) view.focus.prior.state.focus = true;
}
}).on("closerequest", (e) => {
if (e.reason == Event.REASON_BY_CHROME) {
e.preventDefault();
view.close(view.parameters.cancel);
}
});
</script>
</head>
<body>
<div class="row">
<div id="msg"></div>
<div id="buttons"></div>
</div>
</body>
</html>