]>
Commit | Line | Data |
---|---|---|
70c1267e MF |
1 | |
2 | document.addEventListener('DOMContentLoaded', function () { | |
3 | restoreOptions(); | |
4 | document.querySelector('#saveBtn').addEventListener('click', saveOptions); | |
5 | document.querySelector('#restoreDefaultBtn').addEventListener('click', restoreToDefault); | |
6 | ||
68553004 MF |
7 | ['light', 'system', 'dark'].forEach((theme) => { |
8 | document.getElementById(`theme-${theme}`).addEventListener('click', setThemeClick); | |
9 | }); | |
10 | ||
70c1267e MF |
11 | //document.querySelector('body').addEventListener('click', restoreOptions); |
12 | }); | |
13 | ||
14 | function getSelectValue (selectId) { | |
15 | var select = document.getElementById(selectId); | |
16 | var value = select.children[select.selectedIndex].value; | |
17 | ||
18 | return value; | |
19 | } | |
20 | ||
21 | function setSelectValue (selectId, value) { | |
22 | var select = document.getElementById(selectId); | |
23 | for (var i = 0; i < select.children.length; i++) { | |
24 | var child = select.children[i]; | |
25 | if (child.value == value) { | |
26 | child.selected = "true"; | |
27 | break; | |
28 | } | |
29 | } | |
30 | } | |
31 | ||
68553004 MF |
32 | function setThemeClick() { |
33 | const theme = this.textContent.toLowerCase(); | |
34 | setThemeValue(theme); | |
35 | switchTheme(theme); | |
36 | } | |
37 | ||
38 | function setThemeValue(value) { | |
39 | const element = document.getElementById('prefsTheme'); | |
40 | switch (value) { | |
41 | case 'light': | |
42 | case 'dark': | |
43 | break; | |
44 | default: | |
45 | value = 'system'; | |
46 | break; | |
47 | } | |
48 | element.value = value; | |
49 | ||
50 | ['light', 'system', 'dark'].forEach((theme) => { | |
51 | document.getElementById(`theme-${theme}`).className = | |
52 | value == theme ? 'selected' : ''; | |
53 | }); | |
54 | } | |
55 | ||
70c1267e | 56 | function saveOptions () { |
d9e77fbf | 57 | chrome.storage.local.set({ |
ff7fee5b MF |
58 | prefs_backup_timer: parseInt(getSelectValue("prefsSelectBackupPeriod")), |
59 | prefs_max_backup_items: parseInt(getSelectValue("prefsSelectMaxBackups")), | |
d9e77fbf MF |
60 | prefs_theme: document.getElementById('prefsTheme').value, |
61 | }); | |
68553004 | 62 | |
70c1267e | 63 | // Re-initialize the backup alarm |
eda98b5f | 64 | chrome.runtime.sendMessage({action: 'initAlarm'}); |
70c1267e MF |
65 | |
66 | // Update status to let user know options were saved. | |
67 | var status = document.getElementById("statusDiv"); | |
68 | status.innerHTML = "Options Saved"; | |
69 | setTimeout(function() { | |
70 | status.innerHTML = ""; | |
71 | }, 3000); | |
72 | } | |
73 | ||
74 | function restoreToDefault() { | |
75 | // those values are also set in background.js.. | |
76 | setSelectValue ("prefsSelectBackupPeriod", "5"); | |
77 | setSelectValue ("prefsSelectMaxBackups", "30"); | |
68553004 | 78 | setThemeValue("system"); |
70c1267e MF |
79 | |
80 | saveOptions(); | |
81 | } | |
82 | ||
83 | function restoreOptions() { | |
d9e77fbf MF |
84 | chrome.storage.local.get(function(items) { |
85 | setSelectValue("prefsSelectBackupPeriod", items.prefs_backup_timer); | |
86 | setSelectValue("prefsSelectMaxBackups", items.prefs_max_backup_items); | |
87 | setThemeValue(items.prefs_theme); | |
88 | }); | |
70c1267e | 89 | } |