Files
tubestation/browser/components/preferences/containers.js
Iulian Moraru d067b329de Backed out 5 changesets (bug 1864896) for causing newtab failures related to bundles. CLOSED TREE
Backed out changeset 2cd1cc279f99 (bug 1864896)
Backed out changeset e48d6928bdcb (bug 1864896)
Backed out changeset 1abbcaf91693 (bug 1864896)
Backed out changeset 06a05e5257d5 (bug 1864896)
Backed out changeset b1955ae3e9e2 (bug 1864896)
2024-03-01 12:58:03 +02:00

152 lines
4.7 KiB
JavaScript

/* 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/. */
/* import-globals-from preferences.js */
const defaultContainerIcon = "fingerprint";
const defaultContainerColor = "blue";
let gContainersPane = {
init() {
this._list = document.getElementById("containersView");
document
.getElementById("backContainersButton")
.addEventListener("command", function () {
gotoPref("general");
});
document
.getElementById("containersAdd")
.addEventListener("command", function () {
gContainersPane.onAddButtonCommand();
});
this._rebuildView();
},
_rebuildView() {
const containers = ContextualIdentityService.getPublicIdentities();
while (this._list.firstChild) {
this._list.firstChild.remove();
}
for (let container of containers) {
let item = document.createXULElement("richlistitem");
let outer = document.createXULElement("hbox");
outer.setAttribute("flex", 1);
outer.setAttribute("align", "center");
item.appendChild(outer);
let userContextIcon = document.createXULElement("hbox");
userContextIcon.className = "userContext-icon";
userContextIcon.classList.add("userContext-icon-inprefs");
userContextIcon.classList.add("identity-icon-" + container.icon);
userContextIcon.classList.add("identity-color-" + container.color);
outer.appendChild(userContextIcon);
let label = document.createXULElement("label");
label.className = "userContext-label-inprefs";
label.setAttribute("flex", 1);
let containerName = ContextualIdentityService.getUserContextLabel(
container.userContextId
);
label.textContent = containerName;
label.setAttribute("tooltiptext", containerName);
outer.appendChild(label);
let containerButtons = document.createXULElement("hbox");
containerButtons.className = "container-buttons";
item.appendChild(containerButtons);
let prefsButton = document.createXULElement("button");
prefsButton.addEventListener("command", function (event) {
gContainersPane.onPreferenceCommand(event.originalTarget);
});
prefsButton.setAttribute("value", container.userContextId);
document.l10n.setAttributes(prefsButton, "containers-settings-button");
containerButtons.appendChild(prefsButton);
let removeButton = document.createXULElement("button");
removeButton.addEventListener("command", function (event) {
gContainersPane.onRemoveCommand(event.originalTarget);
});
removeButton.setAttribute("value", container.userContextId);
document.l10n.setAttributes(removeButton, "containers-remove-button");
containerButtons.appendChild(removeButton);
this._list.appendChild(item);
}
},
async onRemoveCommand(button) {
let userContextId = parseInt(button.getAttribute("value"), 10);
let count = ContextualIdentityService.countContainerTabs(userContextId);
if (count > 0) {
let [title, message, okButton, cancelButton] =
await document.l10n.formatValues([
{ id: "containers-remove-alert-title" },
{ id: "containers-remove-alert-msg", args: { count } },
{ id: "containers-remove-ok-button" },
{ id: "containers-remove-cancel-button" },
]);
let buttonFlags =
Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_0 +
Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_1;
let rv = Services.prompt.confirmEx(
window,
title,
message,
buttonFlags,
okButton,
cancelButton,
null,
null,
{}
);
if (rv != 0) {
return;
}
await ContextualIdentityService.closeContainerTabs(userContextId);
}
ContextualIdentityService.remove(userContextId);
this._rebuildView();
},
onPreferenceCommand(button) {
this.openPreferenceDialog(button.getAttribute("value"));
},
onAddButtonCommand(button) {
this.openPreferenceDialog(null);
},
openPreferenceDialog(userContextId) {
let identity = {
name: "",
icon: defaultContainerIcon,
color: defaultContainerColor,
};
if (userContextId) {
identity =
ContextualIdentityService.getPublicIdentityFromId(userContextId);
identity.name = ContextualIdentityService.getUserContextLabel(
identity.userContextId
);
}
const params = { userContextId, identity };
gSubDialog.open(
"chrome://browser/content/preferences/dialogs/containers.xhtml",
undefined,
params
);
},
};