X-Git-Url: https://git.wh0rd.org/?p=chrome-ext%2Fwake-on-lan.git;a=blobdiff_plain;f=js%2Ftheme.js;fp=js%2Ftheme.js;h=78e585cc776047e3b254321cf7c7307ddb572e24;hp=0000000000000000000000000000000000000000;hb=6293bf85123c57c4ead5dee7cdce7a07a4290a22;hpb=dbe21571384c2d2a22c9c0ed48b5848267ab4975 diff --git a/js/theme.js b/js/theme.js new file mode 100644 index 0000000..78e585c --- /dev/null +++ b/js/theme.js @@ -0,0 +1,53 @@ +// Written by Mike Frysinger . +// Released into the public domain. + +/* + * This code is all very simple/dumb. If we want to ever support more + * complicated theme logic, then it should be thrown away entirely. + */ + +var curr_theme; + +function _set_theme(txt, fg, bg, a) { + var b = $$('body'); + b.style.color = fg; + b.style.backgroundColor = bg; + + // This gets a bit tricky as we want to update the style sheet + // to quickly apply to all tags. + var s, sheet, sheets, r, rule, rules; + sheets = document.styleSheets; + for (s = 0; s < sheets.length; ++s) { + sheet = sheets[s]; + rules = sheet.cssRules; + for (r = 0; r < rules.length; ++r) { + rule = rules[r]; + if (rule.selectorText == 'a') { + rule.style.color = a; + break; + } + } + } + + // We can't set UTF8 text, or set HTML entities directly. Ugh. + var span = document.createElement('span'); + span.innerHTML = txt; + $$('input[name=theme]').value = span.innerText; +} + +function set_theme(name) { + var themes = { + 'light': ['☀', 'black', 'white', 'black'], + 'dark': ['☼', 'white', 'black', 'grey'] + }; + curr_theme = name; + _set_theme.apply(this, themes[name]); + chrome.storage.local.set({'theme': curr_theme}); +} + +function toggle_theme() { + if (curr_theme == 'light') + set_theme('dark'); + else + set_theme('light'); +}