1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
var composeStateListener = {
NotifyComposeBodyReady: function() {
}
};
// From addressingWidgetOverlay.js; we use this to call the function to update
// the status of the encryption keys for the various "To" fields. This is for
// the case where the user presses "Return" or "Tab" and Thunderbird inserts a
// new "To" row, and we then update the encryption key status for each row.
function awRecipientKeyPress(event, element)
{
switch(event.keyCode) {
case KeyEvent.DOM_VK_RETURN:
case KeyEvent.DOM_VK_TAB:
// if the user text contains a comma or a line return, ignore
if (element.value.includes(','))
{
var addresses = element.value;
element.value = ""; // clear out the current line so we don't try to autocomplete it..
parseAndAddAddresses(addresses, awGetPopupElement(awGetRowByInputElement(element)).value);
}
else if (event.keyCode == KeyEvent.DOM_VK_TAB)
awTabFromRecipient(element, event);
// Bitmask: update the encryption status.
checkToField.updateEncryptionStatus();
break;
}
}
var checkToField = {
// It is possible to enter all "To" addresses in a single field but since we
// are displaying the encryption key per field (per row), we need to split a
// single field into multiple fields if it contains a "," and then check
// the encryption status for each field.
splitInput: function(event) {
let id = event.target.id;
id = id.slice(id.lastIndexOf('#')+1);
let toFieldInput = document.getElementById("addressCol2#" + id);
if (toFieldInput.value.includes(",")) {
let addresses = toFieldInput.value;
toFieldInput.value = "";
parseAndAddAddresses(addresses, awGetPopupElement(awGetRowByInputElement(toFieldInput)).value);
checkToField.updateEncryptionStatus();
}
},
updateEncryptionStatus: function() {
for (let i = 1; i <= awGetNumberOfRecipients(); i++) {
// Get the "To" field which has the email address.
let toField = document.getElementById("addressCol2#" + i);
// gCurrentIdentity.email returns the current identity.
let promise = bitmask.keys.exprt(gCurrentIdentity.email, toField.value);
if (toField.value) {
let image = document.createElement("image");
toField.appendChild(image);
promise.then(function(data) {
toField.getElementsByTagName("image")[0].setAttribute("src",
"chrome://bitmask/skin/lock.png");
}).catch(function(error) {
toField.getElementsByTagName("image")[0].setAttribute("src",
"chrome://bitmask/skin/unlock.png");
});
}
else {
toField.getElementsByTagName("image")[0].setAttribute("src", "");
}
}
}
};
window.addEventListener("compose-window-init", function(event) {
gMsgCompose.RegisterStateListener(composeStateListener);
}, true);
|