2021-09-04 22:16:18 +02:00
|
|
|
//
|
|
|
|
|
// Get the prefered storage
|
|
|
|
|
//
|
2021-09-05 22:02:47 +02:00
|
|
|
function storage(store) {
|
2021-09-05 21:47:25 +02:00
|
|
|
if (SysTrayX.Info.browserInfo.majorVersion < 91 || store === "sync") {
|
2021-09-04 22:16:18 +02:00
|
|
|
console.log("Using sync storage");
|
|
|
|
|
return browser.storage.sync;
|
|
|
|
|
} else {
|
|
|
|
|
console.log("Using local storage");
|
|
|
|
|
return browser.storage.local;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-01-22 23:14:46 +01:00
|
|
|
|
|
|
|
|
SysTrayX.SaveOptions = {
|
2021-09-04 22:16:18 +02:00
|
|
|
start: async function (e) {
|
2020-01-22 23:14:46 +01:00
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Save accounts and filters
|
|
|
|
|
//
|
2020-01-23 23:28:52 +01:00
|
|
|
const treeBase = document.getElementById("accountsTree");
|
2020-05-03 23:39:02 +02:00
|
|
|
const accounts = treeBase.querySelectorAll(
|
|
|
|
|
'input[type="checkbox"][name*="account"]'
|
|
|
|
|
);
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-05-03 23:39:02 +02:00
|
|
|
let filters = [];
|
2021-09-04 22:16:18 +02:00
|
|
|
if (SysTrayX.Info.browserInfo.majorVersion < 91) {
|
|
|
|
|
let checkedFolders = [];
|
|
|
|
|
accounts.forEach((account) => {
|
|
|
|
|
if (account.checked || account.indeterminate) {
|
|
|
|
|
// Find all selected folders
|
|
|
|
|
const folders = Array.from(
|
|
|
|
|
account.parentNode.querySelectorAll(
|
|
|
|
|
'input[type="checkbox"]:not([name^="account"]):not([name^="parent-"])'
|
|
|
|
|
)
|
|
|
|
|
).filter((folder) => folder.checked);
|
|
|
|
|
|
|
|
|
|
checkedFolders = checkedFolders.concat(folders);
|
|
|
|
|
}
|
|
|
|
|
});
|
2020-05-09 17:10:54 +02:00
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
checkedFolders.forEach((folder) => {
|
|
|
|
|
const mailFolderExt = JSON.parse(folder.value);
|
|
|
|
|
|
|
|
|
|
filters.push({
|
|
|
|
|
unread: true,
|
|
|
|
|
folder: mailFolderExt,
|
|
|
|
|
});
|
2020-05-03 23:39:02 +02:00
|
|
|
});
|
2021-09-04 22:16:18 +02:00
|
|
|
} else {
|
|
|
|
|
accounts.forEach((account) => {
|
|
|
|
|
if (account.checked || account.indeterminate) {
|
|
|
|
|
// Find all selected folders
|
|
|
|
|
const folders = Array.from(
|
|
|
|
|
account.parentNode.querySelectorAll(
|
|
|
|
|
'input[type="checkbox"]:not([name^="account"]):not([name^="parent-"])'
|
|
|
|
|
)
|
|
|
|
|
).filter((folder) => folder.checked);
|
|
|
|
|
|
|
|
|
|
if (folders.length > 0) {
|
|
|
|
|
const mailFolderExt = JSON.parse(folders[0].value);
|
|
|
|
|
filters.push({
|
|
|
|
|
accountId: mailFolderExt.accountId,
|
|
|
|
|
version: mailFolderExt.version,
|
|
|
|
|
folders: [],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
folders.forEach((folder) => {
|
|
|
|
|
const mailFolderExt = JSON.parse(folder.value);
|
|
|
|
|
filters[filters.length - 1].folders.push(mailFolderExt.path);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-05-09 17:10:54 +02:00
|
|
|
// Store extended query filters
|
2021-09-04 22:16:18 +02:00
|
|
|
|
|
|
|
|
console.debug("Saving filters: " + JSON.stringify(filters));
|
|
|
|
|
|
|
|
|
|
await storage().set({
|
2020-05-09 17:10:54 +02:00
|
|
|
filters: filters,
|
2020-04-01 23:33:08 +02:00
|
|
|
});
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Save debug state
|
|
|
|
|
//
|
2020-05-09 17:10:54 +02:00
|
|
|
const debug = document.querySelector('input[name="debug"]').checked;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-04-04 18:02:35 +02:00
|
|
|
debug: `${debug}`,
|
2020-01-22 23:14:46 +01:00
|
|
|
});
|
|
|
|
|
|
2020-04-07 17:19:02 +02:00
|
|
|
//
|
|
|
|
|
// Save minimize preferences
|
|
|
|
|
//
|
2020-04-11 20:13:11 +02:00
|
|
|
const minimizeType = document.querySelector(
|
|
|
|
|
'input[name="minimizeType"]:checked'
|
|
|
|
|
).value;
|
2020-04-07 17:19:02 +02:00
|
|
|
|
|
|
|
|
// Store minimize preferences
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-04-07 17:19:02 +02:00
|
|
|
minimizeType: minimizeType,
|
|
|
|
|
});
|
|
|
|
|
|
2023-07-22 22:20:28 +02:00
|
|
|
//
|
|
|
|
|
// Save minimize icon preferences
|
|
|
|
|
//
|
|
|
|
|
const minimizeIconType = document.querySelector(
|
|
|
|
|
'input[name="minimizeIconType"]:checked'
|
|
|
|
|
).value;
|
|
|
|
|
|
|
|
|
|
// Store minimize icon preferences
|
|
|
|
|
await storage().set({
|
|
|
|
|
minimizeIconType: minimizeIconType,
|
|
|
|
|
});
|
|
|
|
|
|
2020-06-28 23:23:12 +02:00
|
|
|
//
|
|
|
|
|
// Save close preferences
|
|
|
|
|
//
|
2021-08-10 23:21:10 +02:00
|
|
|
const closeType = document.querySelector(
|
|
|
|
|
'input[name="closeType"]:checked'
|
|
|
|
|
).value;
|
2020-06-28 23:23:12 +02:00
|
|
|
|
2023-07-22 22:20:28 +02:00
|
|
|
// Store close preferences
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-06-28 23:23:12 +02:00
|
|
|
closeType: closeType,
|
|
|
|
|
});
|
|
|
|
|
|
2020-02-29 19:04:43 +01:00
|
|
|
//
|
|
|
|
|
// Save start minimized state
|
|
|
|
|
//
|
2020-05-10 21:47:41 +02:00
|
|
|
const startMinimized = document.querySelector(
|
|
|
|
|
'input[name="startMinimized"]'
|
|
|
|
|
).checked;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-04-04 18:02:35 +02:00
|
|
|
startMinimized: `${startMinimized}`,
|
2020-02-29 19:04:43 +01:00
|
|
|
});
|
2020-02-18 00:24:31 +01:00
|
|
|
|
2020-12-05 15:18:30 +01:00
|
|
|
//
|
|
|
|
|
// Save restore window positions state
|
|
|
|
|
//
|
|
|
|
|
const restorePositions = document.querySelector(
|
|
|
|
|
'input[name="restorePositions"]'
|
|
|
|
|
).checked;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-12-05 15:18:30 +01:00
|
|
|
restorePositions: `${restorePositions}`,
|
|
|
|
|
});
|
|
|
|
|
|
2020-05-22 22:54:10 +02:00
|
|
|
//
|
|
|
|
|
// Save default icon preferences
|
|
|
|
|
//
|
|
|
|
|
const defaultIconType = document.querySelector(
|
|
|
|
|
'input[name="defaultIconType"]:checked'
|
|
|
|
|
).value;
|
|
|
|
|
|
|
|
|
|
// Store default icon type
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-05-22 22:54:10 +02:00
|
|
|
defaultIconType: defaultIconType,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const defaultIconDiv = document.getElementById("defaultIcon");
|
|
|
|
|
const defaultIconBase64 = defaultIconDiv.getAttribute("data-default-icon");
|
|
|
|
|
const defaultIconMime = defaultIconDiv.getAttribute(
|
|
|
|
|
"data-default-icon-mime"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Store default icon (base64)
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-05-22 22:54:10 +02:00
|
|
|
defaultIconMime: defaultIconMime,
|
|
|
|
|
defaultIcon: defaultIconBase64,
|
|
|
|
|
});
|
|
|
|
|
|
2020-06-03 22:46:46 +02:00
|
|
|
//
|
|
|
|
|
// Save hide default icon state
|
|
|
|
|
//
|
|
|
|
|
let hideDefaultIcon = document.querySelector(
|
|
|
|
|
'input[name="hideDefaultIcon"]'
|
|
|
|
|
).checked;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-06-03 22:46:46 +02:00
|
|
|
hideDefaultIcon: `${hideDefaultIcon}`,
|
|
|
|
|
});
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Save icon preferences
|
|
|
|
|
//
|
2021-08-10 23:21:10 +02:00
|
|
|
const iconType = document.querySelector(
|
|
|
|
|
'input[name="iconType"]:checked'
|
|
|
|
|
).value;
|
2020-01-22 23:14:46 +01:00
|
|
|
|
|
|
|
|
// Store icon type
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-04-04 18:02:35 +02:00
|
|
|
iconType: iconType,
|
2020-01-22 23:14:46 +01:00
|
|
|
});
|
|
|
|
|
|
2020-05-09 17:10:54 +02:00
|
|
|
const iconDiv = document.getElementById("icon");
|
|
|
|
|
const iconBase64 = iconDiv.getAttribute("data-icon");
|
|
|
|
|
const iconMime = iconDiv.getAttribute("data-icon-mime");
|
2020-01-22 23:14:46 +01:00
|
|
|
|
|
|
|
|
// Store icon (base64)
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-01-22 23:14:46 +01:00
|
|
|
iconMime: iconMime,
|
2020-04-04 18:02:35 +02:00
|
|
|
icon: iconBase64,
|
2020-01-22 23:14:46 +01:00
|
|
|
});
|
|
|
|
|
|
2020-04-05 14:39:19 +02:00
|
|
|
//
|
|
|
|
|
// Save enable number state
|
|
|
|
|
//
|
2021-08-10 23:21:10 +02:00
|
|
|
const showNumber = document.querySelector(
|
|
|
|
|
'input[name="showNumber"]'
|
|
|
|
|
).checked;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-04-05 14:39:19 +02:00
|
|
|
showNumber: `${showNumber}`,
|
|
|
|
|
});
|
|
|
|
|
|
2020-12-06 00:36:31 +01:00
|
|
|
//
|
|
|
|
|
// Save theme preferences
|
|
|
|
|
//
|
|
|
|
|
const theme = document.querySelector('input[name="theme"]:checked').value;
|
|
|
|
|
|
2023-07-22 22:20:28 +02:00
|
|
|
// Store theme preferences
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-12-06 00:36:31 +01:00
|
|
|
theme: theme,
|
|
|
|
|
});
|
|
|
|
|
|
2020-04-05 14:39:19 +02:00
|
|
|
//
|
|
|
|
|
// Save number color
|
|
|
|
|
//
|
2020-12-11 20:57:30 +01:00
|
|
|
let numberColor = document.querySelector('input[name="numberColor"]').value;
|
2020-12-06 00:36:31 +01:00
|
|
|
|
|
|
|
|
// Force different color?
|
|
|
|
|
if (theme == "0" && numberColor == "#ffffff") {
|
|
|
|
|
numberColor = "#000000";
|
|
|
|
|
} else if (theme == "1" && numberColor == "#000000") {
|
|
|
|
|
numberColor = "#ffffff";
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-04-05 14:39:19 +02:00
|
|
|
numberColor: `${numberColor}`,
|
|
|
|
|
});
|
2020-05-09 17:10:54 +02:00
|
|
|
|
2020-05-26 22:39:25 +02:00
|
|
|
//
|
|
|
|
|
// Save number size
|
|
|
|
|
//
|
|
|
|
|
const numberSize = document.querySelector('input[name="numberSize"]').value;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-05-26 22:39:25 +02:00
|
|
|
numberSize: numberSize,
|
|
|
|
|
});
|
|
|
|
|
|
2020-12-11 20:57:30 +01:00
|
|
|
//
|
|
|
|
|
// Save number alignment
|
|
|
|
|
//
|
|
|
|
|
const numberAlignment = document.querySelector(
|
|
|
|
|
'select[name="numberAlignment"]'
|
|
|
|
|
).value;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-12-11 20:57:30 +01:00
|
|
|
numberAlignment: numberAlignment,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Save number margins
|
|
|
|
|
//
|
|
|
|
|
const numberMarginLeft = document.querySelector(
|
|
|
|
|
'input[name="numberMarginLeft"]'
|
|
|
|
|
).value;
|
|
|
|
|
const numberMarginTop = document.querySelector(
|
|
|
|
|
'input[name="numberMarginTop"]'
|
|
|
|
|
).value;
|
|
|
|
|
const numberMarginRight = document.querySelector(
|
|
|
|
|
'input[name="numberMarginRight"]'
|
|
|
|
|
).value;
|
|
|
|
|
const numberMarginBottom = document.querySelector(
|
|
|
|
|
'input[name="numberMarginBottom"]'
|
|
|
|
|
).value;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-12-11 20:57:30 +01:00
|
|
|
numberMargins: {
|
|
|
|
|
left: numberMarginLeft,
|
|
|
|
|
top: numberMarginTop,
|
|
|
|
|
right: numberMarginRight,
|
|
|
|
|
bottom: numberMarginBottom,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
2020-05-09 17:10:54 +02:00
|
|
|
//
|
|
|
|
|
// Save count type preferences
|
|
|
|
|
//
|
2021-08-10 23:21:10 +02:00
|
|
|
const countType = document.querySelector(
|
|
|
|
|
'input[name="countType"]:checked'
|
|
|
|
|
).value;
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-05-09 17:10:54 +02:00
|
|
|
countType: countType,
|
|
|
|
|
});
|
2020-05-22 22:54:10 +02:00
|
|
|
|
2021-09-05 17:04:13 +02:00
|
|
|
//
|
|
|
|
|
// Save startup delay
|
|
|
|
|
//
|
|
|
|
|
const startupDelay = document.querySelector(
|
|
|
|
|
'input[name="startupDelay"]'
|
|
|
|
|
).value;
|
|
|
|
|
await storage().set({
|
|
|
|
|
startupDelay: startupDelay,
|
|
|
|
|
});
|
|
|
|
|
|
2023-08-22 16:02:06 +02:00
|
|
|
//
|
|
|
|
|
// Save launch parameters
|
|
|
|
|
//
|
2023-08-25 18:18:20 +02:00
|
|
|
const startAppInput = document.getElementById("startAppInput");
|
|
|
|
|
const startApp = startAppInput.value;
|
|
|
|
|
const startAppArgsInput = document.getElementById("startAppArgsInput");
|
|
|
|
|
const startAppArgs = startAppArgsInput.value;
|
2023-08-22 16:02:06 +02:00
|
|
|
|
|
|
|
|
const closeAppInput = document.getElementById("closeAppInput");
|
|
|
|
|
const closeApp = closeAppInput.value;
|
|
|
|
|
const closeAppArgsInput = document.getElementById("closeAppArgsInput");
|
|
|
|
|
const closeAppArgs = closeAppArgsInput.value;
|
|
|
|
|
|
|
|
|
|
// Store launch parameters
|
|
|
|
|
await storage().set({
|
2023-08-25 18:18:20 +02:00
|
|
|
startApp: startApp,
|
|
|
|
|
startAppArgs: startAppArgs,
|
2023-08-22 16:02:06 +02:00
|
|
|
closeApp: closeApp,
|
|
|
|
|
closeAppArgs: closeAppArgs,
|
|
|
|
|
});
|
|
|
|
|
|
2020-05-22 22:54:10 +02:00
|
|
|
// Mark add-on preferences changed
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage().set({
|
2020-05-22 22:54:10 +02:00
|
|
|
addonprefchanged: true,
|
|
|
|
|
});
|
2021-09-04 22:16:18 +02:00
|
|
|
|
2021-09-05 14:10:04 +02:00
|
|
|
// const inUse = await browser.storage.sync.getBytesInUse();
|
|
|
|
|
// console.log("Storage in use: " + inUse);
|
2020-04-04 18:02:35 +02:00
|
|
|
},
|
2020-01-22 23:14:46 +01:00
|
|
|
};
|
2020-01-11 17:17:01 +01:00
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
SysTrayX.RestoreOptions = {
|
2021-09-04 22:16:18 +02:00
|
|
|
start: async function () {
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Restore debug state
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("debug")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setDebug,
|
|
|
|
|
SysTrayX.RestoreOptions.onDebugError
|
|
|
|
|
);
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-04-07 17:19:02 +02:00
|
|
|
//
|
|
|
|
|
// Restore minimize type
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("minimizeType")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setMinimizeType,
|
|
|
|
|
SysTrayX.RestoreOptions.onMinimizeTypeError
|
|
|
|
|
);
|
2020-04-07 17:19:02 +02:00
|
|
|
|
2023-07-22 22:20:28 +02:00
|
|
|
//
|
|
|
|
|
// Restore minimize icon type
|
|
|
|
|
//
|
|
|
|
|
await storage()
|
|
|
|
|
.get("minimizeIconType")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setMinimizeIconType,
|
|
|
|
|
SysTrayX.RestoreOptions.onMinimizeIconTypeError
|
|
|
|
|
);
|
|
|
|
|
|
2020-06-28 23:23:12 +02:00
|
|
|
//
|
|
|
|
|
// Restore close type
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("closeType")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setCloseType,
|
|
|
|
|
SysTrayX.RestoreOptions.onCloseTypeError
|
|
|
|
|
);
|
2020-06-28 23:23:12 +02:00
|
|
|
|
2020-02-29 19:04:43 +01:00
|
|
|
//
|
|
|
|
|
// Restore start minimized
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("startMinimized")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setStartMinimized,
|
|
|
|
|
SysTrayX.RestoreOptions.onStartMinimizedError
|
|
|
|
|
);
|
2020-02-18 00:24:31 +01:00
|
|
|
|
2020-12-05 15:18:30 +01:00
|
|
|
//
|
|
|
|
|
// Restore restore position state
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("restorePositions")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setRestorePositions,
|
|
|
|
|
SysTrayX.RestoreOptions.onRestorePositionsError
|
|
|
|
|
);
|
2020-12-05 15:18:30 +01:00
|
|
|
|
2020-05-22 22:54:10 +02:00
|
|
|
//
|
|
|
|
|
// Restore default icon type
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("defaultIconType")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setDefaultIconType,
|
|
|
|
|
SysTrayX.RestoreOptions.onDefaultIconTypeError
|
|
|
|
|
);
|
2020-05-22 22:54:10 +02:00
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore default icon
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get(["defaultIconMime", "defaultIcon"])
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setDefaultIcon,
|
|
|
|
|
SysTrayX.RestoreOptions.onDefaultIconError
|
|
|
|
|
);
|
2020-05-22 22:54:10 +02:00
|
|
|
|
2020-06-03 22:46:46 +02:00
|
|
|
//
|
|
|
|
|
// Restore hide default icon
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get(["kdeIntegration", "hideDefaultIcon"])
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setHideDefaultIcon,
|
|
|
|
|
SysTrayX.RestoreOptions.onHideDefaultIconError
|
|
|
|
|
);
|
2020-06-03 22:46:46 +02:00
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Restore icon type
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("iconType")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setIconType,
|
|
|
|
|
SysTrayX.RestoreOptions.onIconTypeError
|
|
|
|
|
);
|
2020-01-22 23:14:46 +01:00
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore icon
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get(["iconMime", "icon"])
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setIcon,
|
|
|
|
|
SysTrayX.RestoreOptions.onIconError
|
|
|
|
|
);
|
2020-04-01 23:33:08 +02:00
|
|
|
|
2020-05-03 23:39:02 +02:00
|
|
|
//
|
|
|
|
|
// Restore filters
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("filters")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setFilters,
|
|
|
|
|
SysTrayX.RestoreOptions.onFiltersError
|
|
|
|
|
);
|
2020-05-03 23:39:02 +02:00
|
|
|
|
2020-04-05 14:39:19 +02:00
|
|
|
//
|
|
|
|
|
// Restore enable number state
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("showNumber")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setShowNumber,
|
|
|
|
|
SysTrayX.RestoreOptions.onShowNumberError
|
|
|
|
|
);
|
2020-04-05 14:39:19 +02:00
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore number color
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("numberColor")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberColor,
|
|
|
|
|
SysTrayX.RestoreOptions.onNumberColorError
|
|
|
|
|
);
|
2020-05-09 17:10:54 +02:00
|
|
|
|
2020-05-26 22:39:25 +02:00
|
|
|
//
|
|
|
|
|
// Restore number size
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("numberSize")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberSize,
|
|
|
|
|
SysTrayX.RestoreOptions.onNumberSizeError
|
|
|
|
|
);
|
2020-05-26 22:39:25 +02:00
|
|
|
|
2020-12-11 20:57:30 +01:00
|
|
|
//
|
|
|
|
|
// Restore number alignment
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("numberAlignment")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberAlignment,
|
|
|
|
|
SysTrayX.RestoreOptions.onNumberAlignmentError
|
|
|
|
|
);
|
2020-12-11 20:57:30 +01:00
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore number margins
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("numberMargins")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberMargins,
|
|
|
|
|
SysTrayX.RestoreOptions.onNumberMarginsError
|
|
|
|
|
);
|
2020-12-11 20:57:30 +01:00
|
|
|
|
2020-05-09 17:10:54 +02:00
|
|
|
//
|
|
|
|
|
// Restore count type
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("countType")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setCountType,
|
|
|
|
|
SysTrayX.RestoreOptions.onCountTypeError
|
|
|
|
|
);
|
2020-12-06 00:36:31 +01:00
|
|
|
|
2021-09-05 17:04:13 +02:00
|
|
|
//
|
|
|
|
|
// Restore startup delay
|
|
|
|
|
//
|
|
|
|
|
await storage()
|
|
|
|
|
.get("startupDelay")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setStartupDelay,
|
|
|
|
|
SysTrayX.RestoreOptions.ontartupDelayError
|
|
|
|
|
);
|
|
|
|
|
|
2020-12-06 00:36:31 +01:00
|
|
|
//
|
|
|
|
|
// Restore theme
|
|
|
|
|
//
|
2021-09-04 22:16:18 +02:00
|
|
|
await storage()
|
|
|
|
|
.get("theme")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setTheme,
|
|
|
|
|
SysTrayX.RestoreOptions.onThemeError
|
|
|
|
|
);
|
2023-08-22 16:02:06 +02:00
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore launch parameters
|
|
|
|
|
//
|
|
|
|
|
await storage()
|
2023-08-25 18:18:20 +02:00
|
|
|
.get("startApp")
|
2023-08-22 16:02:06 +02:00
|
|
|
.then(
|
2023-08-25 18:18:20 +02:00
|
|
|
SysTrayX.RestoreOptions.setStartApp,
|
|
|
|
|
SysTrayX.RestoreOptions.onStartAppError
|
2023-08-22 16:02:06 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await storage()
|
2023-08-25 18:18:20 +02:00
|
|
|
.get("startAppArgs")
|
2023-08-22 16:02:06 +02:00
|
|
|
.then(
|
2023-08-25 18:18:20 +02:00
|
|
|
SysTrayX.RestoreOptions.setStartAppArgs,
|
|
|
|
|
SysTrayX.RestoreOptions.onStartAppArgsError
|
2023-08-22 16:02:06 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await storage()
|
|
|
|
|
.get("closeApp")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setCloseApp,
|
|
|
|
|
SysTrayX.RestoreOptions.onCloseAppError
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await storage()
|
|
|
|
|
.get("closeAppArgs")
|
|
|
|
|
.then(
|
|
|
|
|
SysTrayX.RestoreOptions.setCloseAppArgs,
|
|
|
|
|
SysTrayX.RestoreOptions.onCloseAppArgsError
|
|
|
|
|
);
|
2021-09-04 22:16:18 +02:00
|
|
|
},
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Restore debug state callbacks
|
|
|
|
|
//
|
2020-04-04 18:02:35 +02:00
|
|
|
setDebug: function (result) {
|
2020-01-23 23:28:52 +01:00
|
|
|
const debug = result.debug || "false";
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-01-23 23:28:52 +01:00
|
|
|
const checkbox = document.querySelector(`input[name="debug"]`);
|
|
|
|
|
checkbox.checked = debug === "true";
|
2020-01-22 23:14:46 +01:00
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
onDebugError: function (error) {
|
2020-01-22 23:14:46 +01:00
|
|
|
console.log(`Debug Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-04-07 17:19:02 +02:00
|
|
|
//
|
|
|
|
|
// Restore minimize type callbacks
|
|
|
|
|
//
|
|
|
|
|
setMinimizeType: function (result) {
|
2021-01-03 22:01:20 +01:00
|
|
|
const minimizeType = result.minimizeType || "1";
|
2020-04-11 23:31:22 +02:00
|
|
|
|
|
|
|
|
// Tweak option for platform
|
2021-09-04 22:16:18 +02:00
|
|
|
// if (SysTrayX.Info.platformInfo.os === "win") {
|
2020-11-09 11:21:02 +01:00
|
|
|
// document.getElementById("minimizemethod1label").innerHTML =
|
|
|
|
|
// "Minimize to tray";
|
|
|
|
|
// document
|
|
|
|
|
// .getElementById("minimizemethod2")
|
|
|
|
|
// .setAttribute("style", "display:none;");
|
2020-08-02 16:59:53 +02:00
|
|
|
|
|
|
|
|
if (minimizeType === "2") {
|
|
|
|
|
minimizeType = "1";
|
2020-04-11 23:31:22 +02:00
|
|
|
}
|
2020-08-02 16:59:53 +02:00
|
|
|
// }
|
2020-04-11 23:31:22 +02:00
|
|
|
|
2020-04-11 20:13:11 +02:00
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="minimizeType"][value="${minimizeType}"]`
|
|
|
|
|
);
|
2020-04-07 17:19:02 +02:00
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onMinimizeTypeError: function (error) {
|
|
|
|
|
console.log(`Minimize type Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2023-07-22 22:20:28 +02:00
|
|
|
//
|
|
|
|
|
// Restore minimize type callbacks
|
|
|
|
|
//
|
|
|
|
|
setMinimizeIconType: function (result) {
|
|
|
|
|
const minimizeIconType = result.minimizeIconType || "1";
|
|
|
|
|
|
|
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="minimizeIconType"][value="${minimizeIconType}"]`
|
|
|
|
|
);
|
|
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onMinimizeIconTypeError: function (error) {
|
|
|
|
|
console.log(`Minimize icon type Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-06-28 23:23:12 +02:00
|
|
|
//
|
|
|
|
|
// Restore close type callbacks
|
|
|
|
|
//
|
|
|
|
|
setCloseType: function (result) {
|
2020-08-02 16:59:53 +02:00
|
|
|
const closeType = result.closeType || "1";
|
2020-06-28 23:23:12 +02:00
|
|
|
|
|
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="closeType"][value="${closeType}"]`
|
|
|
|
|
);
|
|
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onCloseTypeError: function (error) {
|
|
|
|
|
console.log(`Close type Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-02-29 19:04:43 +01:00
|
|
|
//
|
2020-12-05 15:18:30 +01:00
|
|
|
// Restore start minimized callbacks
|
2020-02-29 19:04:43 +01:00
|
|
|
//
|
2020-04-04 18:02:35 +02:00
|
|
|
setStartMinimized: function (result) {
|
2020-03-01 21:15:41 +01:00
|
|
|
const startMinimized = result.startMinimized || "false";
|
2020-02-29 19:04:43 +01:00
|
|
|
|
|
|
|
|
const checkbox = document.querySelector(`input[name="startMinimized"]`);
|
|
|
|
|
checkbox.checked = startMinimized === "true";
|
|
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
onStartMinimizedError: function (error) {
|
2020-02-29 19:04:43 +01:00
|
|
|
console.log(`startMinimized Error: ${error}`);
|
2020-02-18 00:24:31 +01:00
|
|
|
},
|
|
|
|
|
|
2020-12-05 15:18:30 +01:00
|
|
|
//
|
|
|
|
|
// Restore restore position state callbacks
|
|
|
|
|
//
|
|
|
|
|
setRestorePositions: function (result) {
|
|
|
|
|
const restorePositions = result.restorePositions || "false";
|
|
|
|
|
|
|
|
|
|
// Tweak option for platform
|
2021-09-04 22:16:18 +02:00
|
|
|
if (SysTrayX.Info.platformInfo.os === "win") {
|
2020-12-05 15:18:30 +01:00
|
|
|
document
|
|
|
|
|
.getElementById("restorePos")
|
|
|
|
|
.setAttribute("style", "display:none;");
|
|
|
|
|
document
|
|
|
|
|
.getElementById("restorePositionsLabel")
|
|
|
|
|
.setAttribute("style", "display:none;");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const checkbox = document.querySelector(`input[name="restorePositions"]`);
|
|
|
|
|
checkbox.checked = restorePositions === "true";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onRestorePositionsError: function (error) {
|
|
|
|
|
console.log(`RestorePositions Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Restore icon type callbacks
|
|
|
|
|
//
|
2020-04-04 18:02:35 +02:00
|
|
|
setIconType: function (result) {
|
2020-01-23 23:28:52 +01:00
|
|
|
const iconType = result.iconType || "0";
|
2020-04-11 20:13:11 +02:00
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="iconType"][value="${iconType}"]`
|
|
|
|
|
);
|
2020-01-22 23:14:46 +01:00
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
onIconTypeError: function (error) {
|
2020-01-22 23:14:46 +01:00
|
|
|
console.log(`Icon type Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-05-22 22:54:10 +02:00
|
|
|
//
|
|
|
|
|
// Restore default icon type callbacks
|
|
|
|
|
//
|
|
|
|
|
setDefaultIconType: function (result) {
|
|
|
|
|
const defaultIconType = result.defaultIconType || "0";
|
|
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="defaultIconType"][value="${defaultIconType}"]`
|
|
|
|
|
);
|
|
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onDefaultIconTypeError: function (error) {
|
|
|
|
|
console.log(`Default icon type Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore default icon
|
|
|
|
|
//
|
|
|
|
|
setDefaultIconMime: function (result) {
|
|
|
|
|
const defaultIconMime = result.defaultIconMime || "";
|
|
|
|
|
|
|
|
|
|
const valid = defaultIconMime !== "";
|
|
|
|
|
if (valid) {
|
|
|
|
|
const defaultIconDiv = document.getElementById("defaultIcon");
|
|
|
|
|
defaultIconDiv.setAttribute("data-default-icon-mime", defaultIconMime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return valid;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
setDefaultIconData: function (result) {
|
|
|
|
|
const defaultIconBase64 = result.defaultIcon || "";
|
|
|
|
|
|
|
|
|
|
const valid = defaultIconBase64 !== "";
|
|
|
|
|
if (valid) {
|
|
|
|
|
const defaultIconDiv = document.getElementById("defaultIcon");
|
|
|
|
|
defaultIconDiv.setAttribute("data-default-icon", defaultIconBase64);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return valid;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
updateDefaultIconImage: function () {
|
|
|
|
|
const defaultIconDiv = document.getElementById("defaultIcon");
|
|
|
|
|
default_icon_mime = defaultIconDiv.getAttribute("data-default-icon-mime");
|
|
|
|
|
default_icon_data = defaultIconDiv.getAttribute("data-default-icon");
|
|
|
|
|
|
|
|
|
|
const image = document.getElementById("defaultCustomIconImage");
|
|
|
|
|
image.setAttribute(
|
|
|
|
|
"src",
|
|
|
|
|
`data:${default_icon_mime};base64,${default_icon_data}`
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
setDefaultIcon: function (result) {
|
|
|
|
|
const validMime = SysTrayX.RestoreOptions.setDefaultIconMime(result);
|
|
|
|
|
const validData = SysTrayX.RestoreOptions.setDefaultIconData(result);
|
|
|
|
|
|
|
|
|
|
if (validMime && validData) {
|
|
|
|
|
SysTrayX.RestoreOptions.updateDefaultIconImage();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onDefaultIconError: function (error) {
|
|
|
|
|
console.log(`Default icon Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-06-03 22:46:46 +02:00
|
|
|
//
|
|
|
|
|
// Restore hide default icon callbacks
|
|
|
|
|
//
|
|
|
|
|
setHideDefaultIcon: function (result) {
|
2020-06-07 16:19:39 +02:00
|
|
|
const kdeIntegration = result.kdeIntegration || "true";
|
2020-06-04 17:58:27 +02:00
|
|
|
const hideDefaultIcon = result.hideDefaultIcon || "false";
|
2020-06-03 22:46:46 +02:00
|
|
|
|
|
|
|
|
const checkbox = document.querySelector(`input[name="hideDefaultIcon"]`);
|
2020-06-07 16:19:39 +02:00
|
|
|
|
|
|
|
|
if (kdeIntegration === "false") {
|
|
|
|
|
checkbox.parentNode.setAttribute("style", "display: none;");
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-03 22:46:46 +02:00
|
|
|
checkbox.checked = hideDefaultIcon === "true";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onHideDefaultIconError: function (error) {
|
|
|
|
|
console.log(`hideDefaultIcon Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Restore icon
|
|
|
|
|
//
|
2020-04-04 18:02:35 +02:00
|
|
|
setIconMime: function (result) {
|
2020-01-23 23:28:52 +01:00
|
|
|
const iconMime = result.iconMime || "";
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-01-23 23:28:52 +01:00
|
|
|
const valid = iconMime !== "";
|
|
|
|
|
if (valid) {
|
|
|
|
|
const iconDiv = document.getElementById("icon");
|
|
|
|
|
iconDiv.setAttribute("data-icon-mime", iconMime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return valid;
|
2020-01-22 23:14:46 +01:00
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
setIconData: function (result) {
|
2020-01-23 23:28:52 +01:00
|
|
|
const iconBase64 = result.icon || "";
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-01-23 23:28:52 +01:00
|
|
|
const valid = iconBase64 !== "";
|
|
|
|
|
if (valid) {
|
|
|
|
|
const iconDiv = document.getElementById("icon");
|
|
|
|
|
iconDiv.setAttribute("data-icon", iconBase64);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return valid;
|
2020-01-22 23:14:46 +01:00
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
updateIconImage: function () {
|
2020-01-23 23:28:52 +01:00
|
|
|
const iconDiv = document.getElementById("icon");
|
2020-01-22 23:14:46 +01:00
|
|
|
icon_mime = iconDiv.getAttribute("data-icon-mime");
|
|
|
|
|
icon_data = iconDiv.getAttribute("data-icon");
|
|
|
|
|
|
2020-01-23 23:28:52 +01:00
|
|
|
const image = document.getElementById("customIconImage");
|
2020-01-22 23:14:46 +01:00
|
|
|
image.setAttribute("src", `data:${icon_mime};base64,${icon_data}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
setIcon: function (result) {
|
2020-01-23 23:28:52 +01:00
|
|
|
const validMime = SysTrayX.RestoreOptions.setIconMime(result);
|
|
|
|
|
const validData = SysTrayX.RestoreOptions.setIconData(result);
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2020-01-23 23:28:52 +01:00
|
|
|
if (validMime && validData) {
|
|
|
|
|
SysTrayX.RestoreOptions.updateIconImage();
|
|
|
|
|
}
|
2020-01-22 23:14:46 +01:00
|
|
|
},
|
|
|
|
|
|
2020-04-04 18:02:35 +02:00
|
|
|
onIconError: function (error) {
|
2020-01-22 23:14:46 +01:00
|
|
|
console.log(`Icon Error: ${error}`);
|
2020-04-01 23:33:08 +02:00
|
|
|
},
|
|
|
|
|
|
2020-04-05 14:39:19 +02:00
|
|
|
//
|
|
|
|
|
// Restore enable number state
|
|
|
|
|
//
|
|
|
|
|
setShowNumber: function (result) {
|
|
|
|
|
const showNumber = result.showNumber || "true";
|
|
|
|
|
|
|
|
|
|
const checkbox = document.querySelector(`input[name="showNumber"]`);
|
|
|
|
|
checkbox.checked = showNumber === "true";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onShowNumberError: function (error) {
|
|
|
|
|
console.log(`showNumber Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore number color
|
|
|
|
|
//
|
|
|
|
|
setNumberColor: function (result) {
|
|
|
|
|
const numberColor = result.numberColor || "#000000";
|
|
|
|
|
|
|
|
|
|
const input = document.querySelector(`input[name="numberColor"]`);
|
|
|
|
|
input.value = numberColor;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNumberColorError: function (error) {
|
|
|
|
|
console.log(`numberColor Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-05-26 22:39:25 +02:00
|
|
|
//
|
|
|
|
|
// Restore number size
|
|
|
|
|
//
|
|
|
|
|
setNumberSize: function (result) {
|
2020-06-13 21:31:28 +02:00
|
|
|
const numberSize = result.numberSize || "10";
|
2020-05-26 22:39:25 +02:00
|
|
|
|
|
|
|
|
const input = document.querySelector(`input[name="numberSize"]`);
|
|
|
|
|
input.value = numberSize;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNumberSizeError: function (error) {
|
|
|
|
|
console.log(`numberSize Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-12-11 20:57:30 +01:00
|
|
|
//
|
|
|
|
|
// Restore number alignment
|
|
|
|
|
//
|
|
|
|
|
setNumberAlignment: function (result) {
|
|
|
|
|
const numberAlignment = result.numberAlignment || "4";
|
|
|
|
|
|
|
|
|
|
const input = document.querySelector(`select[name="numberAlignment"]`);
|
|
|
|
|
input.value = numberAlignment;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNumberAlignmentError: function (error) {
|
|
|
|
|
console.log(`numberAlignment Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore number margins
|
|
|
|
|
//
|
|
|
|
|
setNumberMargins: function (result) {
|
|
|
|
|
const numberMargins = result.numberMargins || {
|
|
|
|
|
left: 0,
|
|
|
|
|
top: 0,
|
|
|
|
|
right: 0,
|
|
|
|
|
bottom: 0,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const inputLeft = document.querySelector(`input[name="numberMarginLeft"]`);
|
|
|
|
|
inputLeft.value = numberMargins.left;
|
|
|
|
|
|
|
|
|
|
const inputTop = document.querySelector(`input[name="numberMarginTop"]`);
|
|
|
|
|
inputTop.value = numberMargins.top;
|
|
|
|
|
|
2020-12-11 21:13:24 +01:00
|
|
|
const inputRight = document.querySelector(
|
|
|
|
|
`input[name="numberMarginRight"]`
|
|
|
|
|
);
|
2020-12-11 20:57:30 +01:00
|
|
|
inputRight.value = numberMargins.right;
|
|
|
|
|
|
2020-12-11 21:13:24 +01:00
|
|
|
const inputBottom = document.querySelector(
|
|
|
|
|
`input[name="numberMarginBottom"]`
|
|
|
|
|
);
|
2020-12-11 20:57:30 +01:00
|
|
|
inputBottom.value = numberMargins.bottom;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNumberMarginsError: function (error) {
|
|
|
|
|
console.log(`numberMargins Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-05-09 17:10:54 +02:00
|
|
|
//
|
|
|
|
|
// Restore count type
|
|
|
|
|
//
|
|
|
|
|
setCountType: function (result) {
|
|
|
|
|
const countType = result.countType || "0";
|
|
|
|
|
|
|
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="countType"][value="${countType}"]`
|
|
|
|
|
);
|
|
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onCountTypeError: function (error) {
|
|
|
|
|
console.log(`countType Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2021-09-05 17:04:13 +02:00
|
|
|
//
|
|
|
|
|
// Restore startup delay
|
|
|
|
|
//
|
|
|
|
|
setStartupDelay: function (result) {
|
|
|
|
|
const startupDelay = result.startupDelay || "5";
|
|
|
|
|
|
|
|
|
|
const input = document.querySelector(`input[name="startupDelay"]`);
|
|
|
|
|
input.value = startupDelay;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onStartupDelayError: function (error) {
|
|
|
|
|
console.log(`StartupDelay Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-12-06 00:36:31 +01:00
|
|
|
//
|
|
|
|
|
// Restore theme callbacks
|
|
|
|
|
//
|
|
|
|
|
setTheme: function (result) {
|
|
|
|
|
const theme = result.theme || "0";
|
|
|
|
|
|
|
|
|
|
const radioButton = document.querySelector(
|
|
|
|
|
`input[name="theme"][value="${theme}"]`
|
|
|
|
|
);
|
|
|
|
|
radioButton.checked = true;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onThemeError: function (error) {
|
|
|
|
|
console.log(`Theme Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2023-08-22 16:02:06 +02:00
|
|
|
//
|
|
|
|
|
// Restore startup app callbacks
|
|
|
|
|
//
|
2023-08-25 18:18:20 +02:00
|
|
|
setStartApp: function (result) {
|
|
|
|
|
const startApp = result.startApp || "";
|
2023-08-22 16:02:06 +02:00
|
|
|
|
2023-08-25 18:18:20 +02:00
|
|
|
const startAppInput = document.getElementById("startAppInput");
|
|
|
|
|
startAppInput.value = startApp;
|
2023-08-22 16:02:06 +02:00
|
|
|
},
|
|
|
|
|
|
2023-08-25 18:18:20 +02:00
|
|
|
onStartAppError: function (error) {
|
|
|
|
|
console.log(`StartApp Error: ${error}`);
|
2023-08-22 16:02:06 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore startup app args callbacks
|
|
|
|
|
//
|
2023-08-25 18:18:20 +02:00
|
|
|
setStartAppArgs: function (result) {
|
|
|
|
|
const startAppArgs = result.startAppArgs || "";
|
2023-08-22 16:02:06 +02:00
|
|
|
|
2023-08-25 18:18:20 +02:00
|
|
|
const startAppArgsInput = document.getElementById("startAppArgsInput");
|
|
|
|
|
startAppArgsInput.value = startAppArgs;
|
2023-08-22 16:02:06 +02:00
|
|
|
},
|
|
|
|
|
|
2023-08-25 18:18:20 +02:00
|
|
|
onStartAppArgsError: function (error) {
|
|
|
|
|
console.log(`StartAppArgs Error: ${error}`);
|
2023-08-22 16:02:06 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore close app callbacks
|
|
|
|
|
//
|
|
|
|
|
setCloseApp: function (result) {
|
|
|
|
|
const closeApp = result.closeApp || "";
|
|
|
|
|
|
|
|
|
|
const closeAppInput = document.getElementById("closeAppInput");
|
|
|
|
|
closeAppInput.value = closeApp;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onCloseAppError: function (error) {
|
|
|
|
|
console.log(`CloseApp Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Restore close app args callbacks
|
|
|
|
|
//
|
|
|
|
|
setCloseAppArgs: function (result) {
|
|
|
|
|
const closeAppArgs = result.closeAppArgs || "";
|
|
|
|
|
|
|
|
|
|
const closeAppArgsInput = document.getElementById("closeAppArgsInput");
|
|
|
|
|
closeAppArgsInput.value = closeAppArgs;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onCloseAppArgsError: function (error) {
|
|
|
|
|
console.log(`CloseAppArgs Error: ${error}`);
|
|
|
|
|
},
|
|
|
|
|
|
2020-05-03 23:39:02 +02:00
|
|
|
//
|
|
|
|
|
// Restore filters callbacks
|
|
|
|
|
//
|
|
|
|
|
setFilters: function (result) {
|
|
|
|
|
let filters = result.filters || undefined;
|
|
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
const accounts = document
|
|
|
|
|
.getElementById("accountsTree")
|
|
|
|
|
.querySelectorAll('input[type="checkbox"][name*="account"]');
|
|
|
|
|
|
2020-05-03 23:39:02 +02:00
|
|
|
// No filters stored?
|
2021-09-04 22:16:18 +02:00
|
|
|
if (filters === undefined || filters.length === 0) {
|
2020-05-03 23:39:02 +02:00
|
|
|
// Create default filters
|
|
|
|
|
|
|
|
|
|
const treeBase = document.getElementById("accountsTree");
|
|
|
|
|
const accountsBoxes = treeBase.querySelectorAll(
|
|
|
|
|
'input[type="checkbox"][name*="account"]'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let accounts = [];
|
2021-09-04 22:16:18 +02:00
|
|
|
accountsBoxes.forEach((accountbox) => {
|
|
|
|
|
const value = JSON.parse(accountbox.value);
|
2020-05-03 23:39:02 +02:00
|
|
|
accounts.push({ folders: value.folders });
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
filters = [];
|
|
|
|
|
accounts.forEach((account) => {
|
|
|
|
|
const inbox = account.folders.filter(
|
2021-09-04 22:16:18 +02:00
|
|
|
(folder) => folder.type === "inbox"
|
2020-05-03 23:39:02 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (inbox.length > 0) {
|
2021-09-04 22:16:18 +02:00
|
|
|
let folder = {};
|
|
|
|
|
if (SysTrayX.Info.browserInfo.majorVersion < 91) {
|
|
|
|
|
folder = {
|
|
|
|
|
...inbox[0],
|
|
|
|
|
accountName: account.name,
|
|
|
|
|
path: "/" + inbox[0].name,
|
|
|
|
|
};
|
|
|
|
|
delete folder.type;
|
|
|
|
|
delete folder.subFolders;
|
|
|
|
|
|
|
|
|
|
filters.push({
|
|
|
|
|
unread: true,
|
|
|
|
|
folder: folder,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
filters.push({
|
|
|
|
|
accountId: inbox[0].accountId,
|
|
|
|
|
folders: [inbox[0].path],
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-05-03 23:39:02 +02:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (filters) {
|
|
|
|
|
const treeBase = document.getElementById("accountsTree");
|
|
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
if (SysTrayX.Info.browserInfo.majorVersion < 91) {
|
|
|
|
|
filters.forEach((filter) => {
|
|
|
|
|
const folder = filter.folder;
|
|
|
|
|
|
|
|
|
|
const account = treeBase.querySelector(
|
|
|
|
|
`input[name=${folder.accountId}]`
|
|
|
|
|
);
|
|
|
|
|
const checkboxes = Array.from(
|
|
|
|
|
account.parentNode.querySelectorAll(
|
|
|
|
|
'input[type="checkbox"]:not([name^="account"]):not([name^="parent-"])'
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
checkboxes.forEach((checkbox) => {
|
|
|
|
|
const value = JSON.parse(checkbox.value);
|
|
|
|
|
if (value.path === folder.path) {
|
|
|
|
|
checkbox.checked = true;
|
|
|
|
|
|
|
|
|
|
const event = document.createEvent("HTMLEvents");
|
|
|
|
|
event.initEvent("change", false, true);
|
|
|
|
|
checkbox.dispatchEvent(event);
|
|
|
|
|
}
|
|
|
|
|
});
|
2020-05-03 23:39:02 +02:00
|
|
|
});
|
2021-09-04 22:16:18 +02:00
|
|
|
} else {
|
|
|
|
|
filters.forEach((filter) => {
|
|
|
|
|
const account = treeBase.querySelector(
|
|
|
|
|
`input[name=${filter.accountId}]`
|
|
|
|
|
);
|
|
|
|
|
const checkboxes = Array.from(
|
|
|
|
|
account.parentNode.querySelectorAll(
|
|
|
|
|
'input[type="checkbox"]:not([name^="account"]):not([name^="parent-"])'
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
filter.folders.forEach((path) => {
|
|
|
|
|
checkboxes.forEach((checkbox) => {
|
|
|
|
|
const value = JSON.parse(checkbox.value);
|
|
|
|
|
if (value.path === path) {
|
|
|
|
|
checkbox.checked = true;
|
|
|
|
|
|
|
|
|
|
const event = document.createEvent("HTMLEvents");
|
|
|
|
|
event.initEvent("change", false, true);
|
|
|
|
|
checkbox.dispatchEvent(event);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-05-03 23:39:02 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onFiltersError: function (error) {
|
|
|
|
|
console.log(`Filters Error: ${error}`);
|
|
|
|
|
},
|
2020-01-22 23:14:46 +01:00
|
|
|
};
|
|
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
SysTrayX.StorageReset = {
|
|
|
|
|
reset: async function () {
|
|
|
|
|
// Clear checkboxes
|
|
|
|
|
const checkboxes = document
|
|
|
|
|
.getElementById("accountsTree")
|
|
|
|
|
.querySelectorAll('input[type="checkbox"]');
|
|
|
|
|
checkboxes.forEach((checkbox) => {
|
|
|
|
|
checkbox.checked = false;
|
|
|
|
|
|
|
|
|
|
const event = document.createEvent("HTMLEvents");
|
|
|
|
|
event.initEvent("change", false, false);
|
|
|
|
|
checkbox.dispatchEvent(event);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await browser.storage.sync.clear();
|
|
|
|
|
await browser.storage.local.clear();
|
|
|
|
|
|
|
|
|
|
// Set new inbox checkboxes
|
|
|
|
|
SysTrayX.RestoreOptions.setFilters({
|
|
|
|
|
filters: undefined,
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
SysTrayX.StorageChanged = {
|
2020-04-04 18:02:35 +02:00
|
|
|
changed: function (changes, area) {
|
2020-01-22 23:14:46 +01:00
|
|
|
// Try to keep the preferences of the add-on and the app in sync
|
2020-01-23 23:28:52 +01:00
|
|
|
const changedItems = Object.keys(changes);
|
2020-01-22 23:14:46 +01:00
|
|
|
|
|
|
|
|
let changed_icon = false;
|
2020-05-22 22:54:10 +02:00
|
|
|
let changed_default_icon = false;
|
2020-01-22 23:14:46 +01:00
|
|
|
for (let item of changedItems) {
|
|
|
|
|
if (item === "iconMime") {
|
|
|
|
|
SysTrayX.RestoreOptions.setIconMime({
|
2020-04-04 18:02:35 +02:00
|
|
|
iconMime: changes[item].newValue,
|
2020-01-22 23:14:46 +01:00
|
|
|
});
|
2020-05-22 23:56:07 +02:00
|
|
|
changed_icon = true;
|
2020-01-22 23:14:46 +01:00
|
|
|
}
|
|
|
|
|
if (item === "icon") {
|
|
|
|
|
SysTrayX.RestoreOptions.setIcon({ icon: changes[item].newValue });
|
|
|
|
|
changed_icon = true;
|
|
|
|
|
}
|
|
|
|
|
if (item === "iconType") {
|
|
|
|
|
SysTrayX.RestoreOptions.setIconType({
|
2020-04-04 18:02:35 +02:00
|
|
|
iconType: changes[item].newValue,
|
2020-01-22 23:14:46 +01:00
|
|
|
});
|
2020-05-22 23:56:07 +02:00
|
|
|
}
|
|
|
|
|
if (item === "defaultIconMime") {
|
|
|
|
|
SysTrayX.RestoreOptions.setDefaultIconMime({
|
|
|
|
|
defaultIconMime: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
changed_default_icon = true;
|
2020-01-22 23:14:46 +01:00
|
|
|
}
|
2020-05-22 22:54:10 +02:00
|
|
|
if (item === "defaultIcon") {
|
|
|
|
|
SysTrayX.RestoreOptions.setDefaultIcon({
|
|
|
|
|
defaultIcon: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
changed_default_icon = true;
|
|
|
|
|
}
|
|
|
|
|
if (item === "defaultIconType") {
|
|
|
|
|
SysTrayX.RestoreOptions.setDefaultIconType({
|
|
|
|
|
defaultIconType: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-06-03 22:46:46 +02:00
|
|
|
if (item === "hideDefaultIcon") {
|
|
|
|
|
SysTrayX.RestoreOptions.setHideDefaultIcon({
|
|
|
|
|
hideDefaultIcon: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-04-05 14:39:19 +02:00
|
|
|
if (item === "showNumber") {
|
|
|
|
|
SysTrayX.RestoreOptions.setShowNumber({
|
|
|
|
|
showNumber: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (item === "numberColor") {
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberColor({
|
|
|
|
|
numberColor: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-05-26 22:39:25 +02:00
|
|
|
if (item === "numberSize") {
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberSize({
|
|
|
|
|
numberSize: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-12-11 20:57:30 +01:00
|
|
|
if (item === "numberAlignment") {
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberAlignment({
|
|
|
|
|
numberAlignment: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (item === "numberMargins") {
|
|
|
|
|
SysTrayX.RestoreOptions.setNumberMargins({
|
|
|
|
|
numberMargins: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-05-09 17:10:54 +02:00
|
|
|
if (item === "countType") {
|
|
|
|
|
SysTrayX.RestoreOptions.setCountType({
|
|
|
|
|
countType: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2021-09-05 17:04:13 +02:00
|
|
|
if (item === "startupDelay") {
|
|
|
|
|
SysTrayX.RestoreOptions.setStartupDelay({
|
|
|
|
|
startupDelay: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-04-07 17:19:02 +02:00
|
|
|
if (item === "minimizeType") {
|
|
|
|
|
SysTrayX.RestoreOptions.setMinimizeType({
|
|
|
|
|
minimizeType: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2023-07-22 22:20:28 +02:00
|
|
|
if (item === "minimizeIconType") {
|
|
|
|
|
SysTrayX.RestoreOptions.setMinimizeIconType({
|
|
|
|
|
minimizeIconType: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-06-28 23:23:12 +02:00
|
|
|
if (item === "closeType") {
|
|
|
|
|
SysTrayX.RestoreOptions.setCloseType({
|
|
|
|
|
closeType: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-02-29 19:04:43 +01:00
|
|
|
if (item === "startMinimized") {
|
|
|
|
|
SysTrayX.RestoreOptions.setStartMinimized({
|
2020-04-04 18:02:35 +02:00
|
|
|
startMinimized: changes[item].newValue,
|
2020-02-18 00:24:31 +01:00
|
|
|
});
|
|
|
|
|
}
|
2020-12-20 13:05:27 +01:00
|
|
|
if (item === "restorePositions") {
|
|
|
|
|
SysTrayX.RestoreOptions.setRestorePositions({
|
|
|
|
|
restorePositions: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-12-06 00:36:31 +01:00
|
|
|
if (item === "theme") {
|
|
|
|
|
SysTrayX.RestoreOptions.setTheme({
|
|
|
|
|
theme: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2023-08-25 18:18:20 +02:00
|
|
|
if (item === "startApp") {
|
|
|
|
|
SysTrayX.RestoreOptions.setStartApp({
|
|
|
|
|
startApp: changes[item].newValue,
|
2023-08-22 16:02:06 +02:00
|
|
|
});
|
|
|
|
|
}
|
2023-08-25 18:18:20 +02:00
|
|
|
if (item === "startAppArgs") {
|
|
|
|
|
SysTrayX.RestoreOptions.setStartAppArgs({
|
|
|
|
|
startAppArgs: changes[item].newValue,
|
2023-08-22 16:02:06 +02:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (item === "closeApp") {
|
|
|
|
|
SysTrayX.RestoreOptions.setCloseApp({
|
|
|
|
|
closeApp: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (item === "closeAppArgs") {
|
|
|
|
|
SysTrayX.RestoreOptions.setCloseAppArgs({
|
|
|
|
|
closeAppArgs: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-12-06 00:36:31 +01:00
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
if (item === "filters") {
|
|
|
|
|
SysTrayX.RestoreOptions.setFilters({
|
|
|
|
|
filters: changes[item].newValue,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
if (item === "debug") {
|
|
|
|
|
SysTrayX.RestoreOptions.setDebug({
|
2020-04-04 18:02:35 +02:00
|
|
|
debug: changes[item].newValue,
|
2020-01-22 23:14:46 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-01-05 00:54:40 +01:00
|
|
|
|
2020-05-22 23:56:07 +02:00
|
|
|
if (changed_icon) {
|
2020-01-22 23:14:46 +01:00
|
|
|
SysTrayX.RestoreOptions.updateIconImage();
|
|
|
|
|
}
|
2020-01-09 21:03:06 +01:00
|
|
|
|
2020-05-22 23:56:07 +02:00
|
|
|
if (changed_default_icon) {
|
2020-05-22 22:54:10 +02:00
|
|
|
SysTrayX.RestoreOptions.updateDefaultIconImage();
|
|
|
|
|
}
|
|
|
|
|
|
2020-01-22 23:14:46 +01:00
|
|
|
//
|
|
|
|
|
// Update element
|
|
|
|
|
//
|
|
|
|
|
document.getElementById("debugselect").className = "active";
|
2020-05-22 22:54:10 +02:00
|
|
|
document.getElementById("defaulticonselect").className = "active";
|
2020-01-22 23:14:46 +01:00
|
|
|
document.getElementById("iconselect").className = "active";
|
2020-04-07 17:19:02 +02:00
|
|
|
document.getElementById("minimizeselect").className = "active";
|
2023-07-22 22:20:28 +02:00
|
|
|
document.getElementById("minimizeiconselect").className = "active";
|
2020-06-28 23:23:12 +02:00
|
|
|
document.getElementById("closeselect").className = "active";
|
2020-12-06 00:36:31 +01:00
|
|
|
document.getElementById("themeselect").className = "active";
|
2023-08-25 18:18:20 +02:00
|
|
|
document.getElementById("startapplicationselect").className = "active";
|
2023-08-22 16:02:06 +02:00
|
|
|
document.getElementById("closeapplicationselect").className = "active";
|
2020-04-04 18:02:35 +02:00
|
|
|
},
|
2020-01-22 23:14:46 +01:00
|
|
|
};
|
2020-01-05 00:54:40 +01:00
|
|
|
|
2020-01-23 23:28:52 +01:00
|
|
|
//
|
|
|
|
|
// Main
|
|
|
|
|
//
|
2020-04-04 18:02:35 +02:00
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
async function start() {
|
|
|
|
|
// Set platform
|
|
|
|
|
SysTrayX.Info.platformInfo = await browser.runtime.getPlatformInfo();
|
2020-04-04 18:02:35 +02:00
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
// Set browser
|
|
|
|
|
SysTrayX.Info.browserInfo = await browser.runtime.getBrowserInfo();
|
2020-01-22 23:14:46 +01:00
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
const version = SysTrayX.Info.browserInfo.version.split(".");
|
|
|
|
|
SysTrayX.Info.browserInfo.majorVersion = version[0];
|
|
|
|
|
SysTrayX.Info.browserInfo.minorVersion = version[1];
|
|
|
|
|
|
|
|
|
|
// Get addon version
|
|
|
|
|
SysTrayX.Info.version = browser.runtime.getManifest().version;
|
|
|
|
|
|
|
|
|
|
SysTrayX.Info.displayInfo();
|
|
|
|
|
|
|
|
|
|
// Set link in options pageF
|
|
|
|
|
document.getElementById("VersioHomeLink").href =
|
|
|
|
|
"https://github.com/Ximi1970/systray-x/releases/tag/" +
|
|
|
|
|
SysTrayX.Info.version;
|
|
|
|
|
|
|
|
|
|
// Disable incompatible items
|
2022-06-19 22:01:58 +02:00
|
|
|
if (SysTrayX.Info.browserInfo.majorVersion > 89 && SysTrayX.Info.browserInfo.majorVersion < 91) {
|
2021-08-10 23:21:10 +02:00
|
|
|
document.getElementById("counttype").style.display = "none";
|
|
|
|
|
}
|
2021-09-04 22:16:18 +02:00
|
|
|
|
2023-07-16 20:23:32 +02:00
|
|
|
// Set the right default icon
|
|
|
|
|
if (SysTrayX.Info.browserInfo.majorVersion < 115) {
|
|
|
|
|
document.getElementById("defaultCustomIconImage").setAttribute("src","icons/Thunderbird.png");
|
|
|
|
|
} else {
|
|
|
|
|
document.getElementById("defaultCustomIconImage").setAttribute("src","icons/Thunderbird115.png");
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-13 20:54:46 +02:00
|
|
|
if (SysTrayX.Info.platformInfo.os !== "linux") {
|
|
|
|
|
document.getElementById("kdeintegration").style.display = "none";
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-04 22:16:18 +02:00
|
|
|
// Setup account tree
|
|
|
|
|
const accountsInitPromise = () =>
|
|
|
|
|
new Promise((res) => res(SysTrayX.Accounts.init()));
|
|
|
|
|
await accountsInitPromise();
|
|
|
|
|
|
|
|
|
|
// Set the options
|
|
|
|
|
//document.addEventListener("DOMContentLoaded", SysTrayX.RestoreOptions.start);
|
|
|
|
|
SysTrayX.RestoreOptions.start();
|
|
|
|
|
|
|
|
|
|
// Enable save button
|
|
|
|
|
document
|
|
|
|
|
.querySelector('[name="saveform"]')
|
|
|
|
|
.addEventListener("submit", SysTrayX.SaveOptions.start);
|
|
|
|
|
|
|
|
|
|
// Enable reset button
|
|
|
|
|
document
|
2021-09-05 21:47:25 +02:00
|
|
|
.querySelector('[name="resetbutton"]')
|
|
|
|
|
.addEventListener("click", SysTrayX.StorageReset.reset);
|
2021-09-04 22:16:18 +02:00
|
|
|
|
|
|
|
|
browser.storage.onChanged.addListener(SysTrayX.StorageChanged.changed);
|
2021-09-05 14:10:04 +02:00
|
|
|
|
|
|
|
|
document.addEventListener("visibilitychange", function () {
|
|
|
|
|
if (document.visibilityState === "hidden") {
|
|
|
|
|
browser.storage.onChanged.removeListener(SysTrayX.StorageChanged.changed);
|
|
|
|
|
}
|
|
|
|
|
});
|
2021-08-10 23:21:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
start();
|