diff options
Diffstat (limited to 'comm/mail/components/preferences/attachmentReminder.js')
-rw-r--r-- | comm/mail/components/preferences/attachmentReminder.js | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/comm/mail/components/preferences/attachmentReminder.js b/comm/mail/components/preferences/attachmentReminder.js new file mode 100644 index 0000000000..da01364b4e --- /dev/null +++ b/comm/mail/components/preferences/attachmentReminder.js @@ -0,0 +1,100 @@ +/* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * 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 http://mozilla.org/MPL/2.0/. */ + +var gAttachmentReminderOptionsDialog = { + keywordListBox: null, + + init() { + this.keywordListBox = document.getElementById("keywordList"); + this.buildKeywordList(); + }, + + buildKeywordList() { + var keywordsInCsv = Services.prefs.getComplexValue( + "mail.compose.attachment_reminder_keywords", + Ci.nsIPrefLocalizedString + ); + if (!keywordsInCsv) { + return; + } + keywordsInCsv = keywordsInCsv.data; + var keywordsInArr = keywordsInCsv.split(","); + for (let i = 0; i < keywordsInArr.length; i++) { + if (keywordsInArr[i]) { + this.keywordListBox.appendItem(keywordsInArr[i], keywordsInArr[i]); + } + } + if (keywordsInArr.length) { + this.keywordListBox.selectedIndex = 0; + } + }, + + async addKeyword() { + var input = { value: "" }; // Default to empty. + + let [title, message] = await document.l10n.formatValues([ + { id: "new-keyword-title" }, + { id: "new-keyword-label" }, + ]); + + var ok = Services.prompt.prompt(window, title, message, input, null, { + value: 0, + }); + if (ok && input.value) { + let newKey = this.keywordListBox.appendItem(input.value, input.value); + this.keywordListBox.ensureElementIsVisible(newKey); + this.keywordListBox.selectItem(newKey); + } + }, + + async editKeyword() { + if (this.keywordListBox.selectedIndex < 0) { + return; + } + var keywordToEdit = this.keywordListBox.selectedItem; + var input = { value: keywordToEdit.getAttribute("value") }; + + let [title, message] = await document.l10n.formatValues([ + { id: "edit-keyword-title" }, + { id: "edit-keyword-label" }, + ]); + + var ok = Services.prompt.prompt(window, title, message, input, null, { + value: 0, + }); + if (ok && input.value) { + this.keywordListBox.selectedItem.value = input.value; + this.keywordListBox.selectedItem.label = input.value; + } + }, + + removeKeyword() { + if (this.keywordListBox.selectedIndex < 0) { + return; + } + this.keywordListBox.selectedItem.remove(); + }, + + saveKeywords() { + var keywordList = ""; + for (var i = 0; i < this.keywordListBox.getRowCount(); i++) { + keywordList += this.keywordListBox + .getItemAtIndex(i) + .getAttribute("value"); + if (i != this.keywordListBox.getRowCount() - 1) { + keywordList += ","; + } + } + + Services.prefs.setStringPref( + "mail.compose.attachment_reminder_keywords", + keywordList + ); + }, +}; + +document.addEventListener("dialogaccept", () => + gAttachmentReminderOptionsDialog.saveKeywords() +); |