diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/mailnews/addrbook/content/abAddressBookNameDialog.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/mailnews/addrbook/content/abAddressBookNameDialog.js')
-rw-r--r-- | comm/mailnews/addrbook/content/abAddressBookNameDialog.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/comm/mailnews/addrbook/content/abAddressBookNameDialog.js b/comm/mailnews/addrbook/content/abAddressBookNameDialog.js new file mode 100644 index 0000000000..6c921d9285 --- /dev/null +++ b/comm/mailnews/addrbook/content/abAddressBookNameDialog.js @@ -0,0 +1,103 @@ +/* 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 { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); + +var gOkButton; +var gNameInput; +var gDirectory = null; + +var kPersonalAddressbookURI = "jsaddrbook://abook.sqlite"; +var kCollectedAddressbookURI = "jsaddrbook://history.sqlite"; +var kAllDirectoryRoot = "moz-abdirectory://"; + +window.addEventListener("DOMContentLoaded", abNameOnLoad); + +function abNameOnLoad() { + // Get the document elements. + gOkButton = document.querySelector("dialog").getButton("accept"); + gNameInput = document.getElementById("name"); + + // look in arguments[0] for parameters to see if we have a directory or not + if ( + "arguments" in window && + window.arguments[0] && + "selectedDirectory" in window.arguments[0] + ) { + gDirectory = window.arguments[0].selectedDirectory; + gNameInput.value = gDirectory.dirName; + } + + // Work out the window title (if we have a directory specified, then it's a + // rename). + var bundle = document.getElementById("bundle_addressBook"); + + if (gDirectory) { + let oldListName = gDirectory.dirName; + document.title = bundle.getFormattedString("addressBookTitleEdit", [ + oldListName, + ]); + } else { + document.title = bundle.getString("addressBookTitleNew"); + } + + if ( + gDirectory && + (gDirectory.URI == kCollectedAddressbookURI || + gDirectory.URI == kPersonalAddressbookURI || + gDirectory.URI == kAllDirectoryRoot + "?") + ) { + // Address book name is not editable, therefore disable the field and + // only have an ok button that doesn't do anything. + gNameInput.readOnly = true; + document.querySelector("dialog").buttons = "accept"; + } else { + document.addEventListener("dialogaccept", abNameOKButton); + gNameInput.focus(); + abNameDoOkEnabling(); + } +} + +function abNameOKButton(event) { + let newDirName = gNameInput.value.trim(); + + // Do not allow an already existing name. + if ( + MailServices.ab.directoryNameExists(newDirName) && + (!gDirectory || newDirName != gDirectory.dirName) + ) { + const kAlertTitle = document + .getElementById("bundle_addressBook") + .getString("duplicateNameTitle"); + const kAlertText = document + .getElementById("bundle_addressBook") + .getFormattedString("duplicateNameText", [newDirName]); + Services.prompt.alert(window, kAlertTitle, kAlertText); + event.preventDefault(); + return; + } + + // Either create a new directory or update an existing one depending on what + // we were given when we started. + if (gDirectory) { + gDirectory.dirName = newDirName; + } else { + let dirPrefId = MailServices.ab.newAddressBook( + newDirName, + "", + Ci.nsIAbManager.JS_DIRECTORY_TYPE + ); + let directory = MailServices.ab.getDirectoryFromId(dirPrefId); + window.arguments[0].newDirectoryUID = directory.UID; + if ("onNewDirectory" in window.arguments[0]) { + window.arguments[0].onNewDirectory(directory); + } + } +} + +function abNameDoOkEnabling() { + gOkButton.disabled = gNameInput.value.trim() == ""; +} |