summaryrefslogtreecommitdiffstats
path: root/comm/mail/components/preferences/attachmentReminder.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/components/preferences/attachmentReminder.js')
-rw-r--r--comm/mail/components/preferences/attachmentReminder.js100
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()
+);