| 
									
										
										
										
											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
										 |  |  |   //
 | 
					
						
							| 
									
										
										
										
											2023-08-25 20:44:32 +02:00
										 |  |  |   //  Restore start app callbacks
 | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |   //
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //
 | 
					
						
							| 
									
										
										
										
											2023-08-25 20:44:32 +02:00
										 |  |  |   //  Restore start app args callbacks
 | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |   //
 | 
					
						
							| 
									
										
										
										
											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 20:44:32 +02:00
										 |  |  |     document.getElementById("startappselect").className = "active"; | 
					
						
							|  |  |  |     document.getElementById("closeappselect").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(); |