-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathsettings.js
More file actions
111 lines (95 loc) · 4.24 KB
/
settings.js
File metadata and controls
111 lines (95 loc) · 4.24 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
var dependencies = [
//<depended upon>, <value for enabled>, <dependency1>, [<dependency2>,] ...
["indentedtree", "true", "maxtreelevel", "indentamount"],
["openselectedlinks", "true", "openselectedlinks-showall"],
["shiftdraggroups", "true", "shiftdragsubtrees"],
["autogroupnewtabs", "true", "lastactivegrouping"],
["newtabposition", "2", "lastactivesort"]
];
function Listener(dep) {
this.handleEvent = function handleEvent(event) {
var el = document.getElementById(dep[0]);
var disabled = (("value" in el ? el.value : String(el.checked)) != dep[1]);
for (var i = 2; i < dep.length; i++) {
setDisabled(dep[i], disabled);
}
};
}
function onLoad() {
for each (var dep in dependencies) {
var listener = new Listener(dep);
listener.handleEvent(null);
document.getElementById(dep[0] + "-pref").addEventListener("change", listener, false);
}
var multipleRows = document.getElementById("multiplerows");
if (document.getElementById("tabrows").value == "1")
setDisabled("tabrows", true);
else
multipleRows.checked = true;
multipleRows.addEventListener("command", toggleMultipleRows, false);
switchTabbarOrient();
document.getElementById("tabbarposition-pref").addEventListener("change", switchTabbarOrient, false);
}
function toggleMultipleRows() {
var pref = document.getElementById("tabrows-pref");
if (document.getElementById("multiplerows").checked) {
setDisabled("tabrows", false);
if (pref.value == 1) // N.B. Assumes multiple rows is default
pref.value = (pref.valueFromPreferences == 1 ? pref.defaultValue : pref.valueFromPreferences);
}
else {
setDisabled("tabrows", true);
pref.value = 1;
}
}
function switchTabbarOrient() {
var pos = document.getElementById("tabbarposition-pref").value;
var horiz = (pos == 0 || pos == 3);
//document.getElementById("horizontaltabbar").collapsed = !horiz;
var notMultipleRows = !document.getElementById("multiplerows").checked;
setDisabled("multiplerows", !horiz);
setDisabled("tabrows", !horiz || notMultipleRows);
//document.getElementById("verticaltabbar").collapsed = horiz;
var notIndentedTree = !document.getElementById("indentedtree").checked;
setDisabled("indentedtree", horiz);
setDisabled("maxtreelevel", horiz || notIndentedTree);
setDisabled("indentamount", horiz || notIndentedTree);
}
function setDisabled(elid, disabled) {
document.getElementById(elid).disabled = disabled;
var labels = document.getElementsByAttribute("control", elid);
for (var i = 0; i < labels.length; i++)
labels[i].disabled = disabled;
}
function resetAll() {
var prefs = document.getElementsByTagName("preference");
for (var i = 0; i < prefs.length; i++) {
var pref = prefs[i];
// Bug 390616 - <preference>'s defaultValue is wrong for string or unichar prefs - https://bugzilla.mozilla.org/show_bug.cgi?id=390616
var def = pref.type == "string" ? pref.preferences.defaultBranch.getCharPref(pref.name) : pref.defaultValue;
if (pref.value != def)
pref.value = def;
}
document.getElementById("multiplerows").checked = true; // N.B. Assumes multiple rows is default
toggleMultipleRows();
}
function disableAll() {
resetAll();
document.getElementById("multiplerows").checked = false;
toggleMultipleRows();
document.getElementById("tabbarposition-pref").value = 0;
document.getElementById("forcethemecompatibility-pref").value = 0;
document.getElementById("disablesearchbar-pref").value = false;
document.getElementById("disabletabgroupcolor-pref").value = false;
document.getElementById("doubleclickcollapseexpand-pref").value = false;
document.getElementById("shiftdraggroups-pref").value = false;
document.getElementById("scrollbarsnotarrows-pref").value = false;
document.getElementById("scrolloneextra-pref").value = false;
document.getElementById("openselectedlinks-pref").value = false;
document.getElementById("autogroupnewtabs-pref").value = false;
document.getElementById("newtabposition-pref").value = 0;
document.getElementById("lastactivesort-pref").value = "creation";
document.getElementById("customcloseorder-pref").value = 4;
document.getElementById("closebeforeafternotother-pref").value = false;
document.getElementById("tabsidebarcollapseonfullscreen-pref").value = true;
}