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/outbox.htm

175 lines
5.1 KiB
HTML

<html window-icon="themepicsingle:outbox">
<head>
<include src="common.htm" />
<style src="outbox.css" />
<script>
var content = $("#content"),
empty = $("#empty"),
info = $("#info"),
chars = $("#chars"),
delmsg = $("#delete"),
savemsg = $("#save"),
messages = $("#messages"),
msgtext = $("#msgtext"),
msgmenu = $("#msgmenu"),
msgs = [];
view.minSize = [400, 300];
translateWindow("span, checkbox");
function win2unix(text) {
return text.replace(/\r?\n/g, "\n");
}
function unix2win(text) {
return text.replace(/\r?\n/g, "\r\n");
}
function updateList(selectLast = false) {
delmsg.state.disabled = true;
savemsg.state.disabled = true;
msgs = CommonNative.GetOutboxMessages();
if (!msgs) msgs = [];
messages.clear();
messages.value = null;
for (let msg of msgs) {
var children = [];
if (msg.pic) children.push(<div auto pic={msg.pic}></div>);
children.push(<div>{msg.name}</div>);
messages.append(<option value={msg.index}>{children}</option>);
}
empty.$("span").text = _(msgs.length == 0 ? "No outgoing messages" : "Select outgoing message")
if (selectLast && msgs.length > 0) messages.value = msgs.length - 1;
}
function showEmpty() {
content.state.expanded = false;
empty.state.expanded = false;
}
function getCurrentEvent() {
if (typeof messages.value !== "number") return null;
return msgs.find((msg) => msg.index == messages.value);
}
function updateText() {
var msg = getCurrentEvent();
if (!msg) return showEmpty();
msgtext.text = win2unix(msg.text);
msgtext.state.disabled = msg.kind != 1;
info.text = msg.info;
updateChars();
savemsg.state.disabled = true;
delmsg.state.disabled = false;
empty.state.expanded = true;
content.state.expanded = true;
}
function updateChars() {
chars.text = _("Chars:") + " " + unix2win(msgtext.value).length;
}
function deleteCurrent() {
delmsg.state.disabled = true;
var index = messages.value;
if (index === undefined || index === null) return;
CommonNative.DeleteOutboxEvent(index);
updateList();
while (index >= msgs.length) index--;
if (index >= 0) messages.value = index;
updateText();
}
function openCurrentChat() {
var msg = getCurrentEvent();
if (msg) View.share.MainNative.OpenChatWith(msg.UID);
}
updateList();
messages.on("change", () => updateText())
.on("keydown", (e) => {
if (e.keyCode == Event.VK_DELETE) deleteCurrent();
else if (e.keyCode == Event.VK_RETURN) openCurrentChat();
}).on("dblclick", () => openCurrentChat())
.on("contextmenu", (e) => {
if (typeof messages.value != "number") return false;
$("#msendnow").state.disabled = !CommonNative.IsOnline();
var [x, y] = view.box("position", "cursor");
document.popup(msgmenu, { x: x, y: y });
return true;
}).hasContextMenu = true;
msgtext.on("change", () => {
savemsg.state.disabled = false;
updateChars();
});
savemsg.on("click", () => {
savemsg.state.disabled = true;
var index = messages.value;
CommonNative.UpdateOutboxText(index, unix2win(msgtext.value));
updateList();
messages.value = index;
updateText();
});
delmsg.on("click", deleteCurrent);
$("#autoprocess").value = CommonNative.GetOutboxProcess();
$("#autoprocess").on("change", () => CommonNative.SetOutboxProcess(this.value));
$("#close").on("click", () => view.close());
setMenuListener(msgmenu, function() {
switch (this.id) {
case "msendnow":
if (typeof messages.value == "number")
CommonNative.SendOutboxEvent(messages.value);
break;
case "mopenchat": {
var msg = getCurrentEvent();
if (msg) View.share.MainNative.OpenChatWith(msg.UID);
break;
}
case "mviewinfo": {
var msg = getCurrentEvent();
if (msg) openViewInfo(msg.UID, msg.name);
break;
}
}
});
document.on("keydown", (e) => {
if (e.keyCode == Event.VK_ESCAPE || (e.ctrlKey && e.keyCode == Event.VK_W)) view.close();
});
</script>
</head>
<body>
<frameset cols="200dip, *">
<select type="list" as="integer" id="messages" />
<splitter/>
<div class="main">
<div id="content">
<h3><span>Information</span></h3>
<div id="info"></div>
<h3><span>Message contents</span></h3>
<div id="chars"></div>
<textarea uwp disabled id="msgtext" spellcheck="false"></textarea>
</div>
<div id="empty"><span></span></div>
</div>
</frameset>
<checkbox uwp id="autoprocess">Process messages when possible</checkbox>
<div class="buttonpane">
<button uwp withpic disabled id="delete"><div auto pic="delete"></div><span>Delete</span></button>
<button uwp withpic disabled id="save"><div auto pic="save"></div><span>Save</span></button>
<button uwp right id="close"><span>Close</span></button>
</div>
<menu id="msgmenu" class="context custom">
<li id="msendnow"><div auto pic="outbox"></div><span>Send now</span></li>
<li id="mopenchat"><div auto pic="msg"></div><span>Open chat</span></li>
<li id="mviewinfo"><div auto pic="info"></div><span>View info</span></li>
</menu>
</body>
</html>