From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../openpgp/content/ui/enigmailMsgBox.js | 181 +++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 comm/mail/extensions/openpgp/content/ui/enigmailMsgBox.js (limited to 'comm/mail/extensions/openpgp/content/ui/enigmailMsgBox.js') diff --git a/comm/mail/extensions/openpgp/content/ui/enigmailMsgBox.js b/comm/mail/extensions/openpgp/content/ui/enigmailMsgBox.js new file mode 100644 index 0000000000..1ff4c2c27e --- /dev/null +++ b/comm/mail/extensions/openpgp/content/ui/enigmailMsgBox.js @@ -0,0 +1,181 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +"use strict"; + +var { AppConstants } = ChromeUtils.importESModule( + "resource://gre/modules/AppConstants.sys.mjs" +); + +function onLoad() { + document.documentElement.style.minHeight = "120px"; + var dlg = document.getElementById("enigmailMsgBox"); + dlg.getButton("cancel").setAttribute("hidden", "true"); + dlg.getButton("extra1").setAttribute("hidden", "true"); + dlg.getButton("extra2").setAttribute("hidden", "true"); + + document.getElementById("filler").style.maxWidth = + screen.availWidth - 50 + "px"; + + let args = window.arguments[0]; + let msgtext = args.msgtext; + let button1 = args.button1; + let button2 = args.button2; + let button3 = args.button3; + let buttonCancel = args.cancelButton; + let checkboxLabel = args.checkboxLabel; + + if (args.iconType) { + let icn = document.getElementById("infoImage"); + icn.removeAttribute("collapsed"); + let iconClass = ""; + + switch (args.iconType) { + case 2: + iconClass = "question-icon"; + break; + case 3: + iconClass = "alert-icon"; + break; + case 4: + iconClass = "error-icon"; + break; + default: + iconClass = "message-icon"; + } + icn.setAttribute("class", "spaced " + iconClass); + } + + if (args.dialogTitle) { + if (AppConstants.platform == "macosx") { + let t = document.getElementById("macosDialogTitle"); + t.setAttribute("value", args.dialogTitle); + t.removeAttribute("collapsed"); + } + + dlg.setAttribute("title", args.dialogTitle); + } else { + document.l10n.setAttributes(dlg, "enig-alert-title"); + } + + if (button1) { + setButton("accept", button1); + } + if (button2) { + setButton("extra1", button2); + } + if (button3) { + setButton("extra2", button3); + } + if (buttonCancel) { + setButton("cancel", buttonCancel); + } + + if (checkboxLabel) { + let checkboxElem = document.getElementById("theCheckBox"); + checkboxElem.setAttribute("label", checkboxLabel); + document.getElementById("checkboxContainer").removeAttribute("hidden"); + } + + dlg.getButton("accept").focus(); + let textbox = document.getElementById("msgtext"); + textbox.appendChild(textbox.ownerDocument.createTextNode(msgtext)); + + window.addEventListener("keypress", onKeyPress); + setTimeout(resizeDlg, 0); +} + +function resizeDlg() { + let availHeight = screen.availHeight; + if (window.outerHeight > availHeight - 100) { + let box = document.getElementById("msgContainer"); + let dlg = document.getElementById("enigmailMsgBox"); + let btnHeight = dlg.getButton("accept").parentNode.clientHeight + 20; + let boxHeight = box.clientHeight; + let dlgHeight = dlg.clientHeight; + + box.setAttribute("style", "overflow: auto;"); + box.setAttribute( + "height", + boxHeight - btnHeight - (dlgHeight - availHeight) + ); + window.resizeTo(window.outerWidth, availHeight); + } +} + +function setButton(buttonId, label) { + var labelType = buttonId; + + var dlg = document.getElementById("enigmailMsgBox"); + var elem = dlg.getButton(labelType); + + var i = label.indexOf(":"); + if (i === 0) { + elem = dlg.getButton(label.substr(1)); + elem.setAttribute("hidden", "false"); + elem.setAttribute("oncommand", "dlgClose('" + buttonId + "')"); + return; + } + if (i > 0) { + labelType = label.substr(0, i); + label = label.substr(i + 1); + elem = dlg.getButton(labelType); + } + i = label.indexOf("&"); + if (i >= 0) { + var c = label.substr(i + 1, 1); + if (c != "&") { + elem.setAttribute("accesskey", c); + } + label = label.substr(0, i) + label.substr(i + 1); + } + elem.setAttribute("label", label); + elem.setAttribute("oncommand", "dlgClose('" + buttonId + "')"); + elem.removeAttribute("hidden"); +} + +function dlgClose(buttonId) { + let buttonNumber = 99; + + switch (buttonId) { + case "accept": + buttonNumber = 0; + break; + case "extra1": + buttonNumber = 1; + break; + case "extra2": + buttonNumber = 2; + break; + case "cancel": + buttonNumber = -1; + } + + window.arguments[1].value = buttonNumber; + window.arguments[1].checked = + document.getElementById("theCheckBox").getAttribute("checked") == "true"; + window.close(); +} + +function checkboxCb() { + // do nothing +} + +async function copyToClipbrd() { + let s = window.getSelection().toString(); + return navigator.clipboard.writeText(s); +} + +function onKeyPress(event) { + if (event.key == "c" && event.getModifierState("Accel")) { + copyToClipbrd(); + event.stopPropagation(); + } +} + +document.addEventListener("dialogaccept", function (event) { + dlgClose("accept"); +}); -- cgit v1.2.3