-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathoptions.js
92 lines (76 loc) · 2.82 KB
/
options.js
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
"use strict";
const numberShowNumber = document.getElementById("showNumber_inputbox");
const checkPage = document.getElementById("showPageMenu_checkbox");
const checkPageMenuitem = document.getElementById("showPageMenuitem_checkbox");
const checkTab = document.getElementById("showTabMenu_checkbox");
const checkOnlyCurrent = document.getElementById("onlyCurrent_checkbox");
const checkClearList = document.getElementById("showClearList_checkbox");
const checkRestoreGroup = document.getElementById("restoreGroup_checkbox");
const numberGroupTime = document.getElementById("groupTime_inputbox");
async function numberChanged(e) {
if (!e.target.id.match(/([a-zA-Z_]+)_inputbox/))
return;
const pref = RegExp.$1;
let showNumber = parseInt(e.target.value);
if (isNaN(showNumber) ||
showNumber > e.target.max ||
showNumber < e.target.min)
showNumber = e.target.getAttribute("value");
const params = {};
params[pref] = showNumber;
await Storage.set(params);
e.target.value = showNumber;
}
async function checkboxChanged(e) {
if (!e.target.id.match(/([a-zA-Z_]+)_checkbox/))
return;
const pref = RegExp.$1;
const params = {};
params[pref] = e.target.checked;
switch (e.target.id) {
case checkPage.id:
params["showPageMenuitem"] = false;
checkPageMenuitem.checked = false;
break;
case checkPageMenuitem.id:
params["showPageMenu"] = false;
checkPage.checked = false;
break;
case checkRestoreGroup.id:
numberGroupTime.disabled = !e.target.checked;
break;
}
await Storage.set(params);
}
function init() {
// Android handling. For now just hide the whole configuration UI.
if (browser.menus === undefined ||
browser.windows === undefined ||
browser.sessions === undefined) {
document.body.style.display = "none";
return;
}
numberShowNumber.title = browser.i18n.getMessage("numberText_title", browser.sessions.MAX_SESSION_RESULTS);
numberShowNumber.max = browser.sessions.MAX_SESSION_RESULTS;
numberShowNumber.setAttribute("value", numberShowNumber.max);
loadOptions();
numberShowNumber.addEventListener("change", numberChanged);
numberGroupTime.addEventListener("change", numberChanged);
document.querySelectorAll('input[type="checkbox"]').forEach((checkbox) => {
checkbox.addEventListener("change", checkboxChanged);
});
}
function loadOptions() {
Storage.get().then((result) => {
numberShowNumber.value = result.showNumber;
checkTab.checked = result.showTabMenu;
checkPage.checked = result.showPageMenu;
checkPageMenuitem.checked = result.showPageMenuitem;
checkOnlyCurrent.checked = result.onlyCurrent;
checkClearList.checked = result.showClearList;
checkRestoreGroup.checked = result.restoreGroup;
numberGroupTime.value = result.groupTime;
numberGroupTime.disabled = !result.restoreGroup;
});
}
init();