From c3f44db1bfc8cb65253a034ee57a50bfb91f6341 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Sat, 19 Oct 2019 03:28:52 +0800 Subject: [PATCH] Add ability to enable/disable from toolbar (#528) * Add ability to enable/disable from toolbar --- icons/icon19_disabled.png | Bin 0 -> 3311 bytes icons/icon38_disabled.png | Bin 0 -> 4307 bytes icons/icon48_disabled.png | Bin 0 -> 4871 bytes inject.js | 4 ++++ options.html | 42 +++++++++++++++++++---------------- options.js | 4 ++++ popup.css | 4 ++++ popup.html | 4 ++++ popup.js | 45 ++++++++++++++++++++++++++++++++++++++ 9 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 icons/icon19_disabled.png create mode 100644 icons/icon38_disabled.png create mode 100644 icons/icon48_disabled.png diff --git a/icons/icon19_disabled.png b/icons/icon19_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..acafee2f9a959ec64a3991eec7b41861b004a6b1 GIT binary patch literal 3311 zcmdT{e@qj16hDkZ1vLtYW;3%EHK4oRwWTdR%PCM0j36R1bf{eKM>%cpYVUxe=y19@ zP@>K`Q8di?D{O)~r%stmCjOWcHPbkCZiUwJ86YZ6|F**c#uM&FgYm(%P=Q-;NU4%nJ0=43_%JD3sr?$74NhnYNOGJpc+J@ zfq?}q6mcTqf;l0=P2%M-(*o&a9U{wf3W=An@cCk_QYkrV|G486S*F7iCwS5V2_ljP zQL9kIAB=Xf-M}PGw=jxq&&rYSw8=S9BtqM0JI#p#z^VPZ18bX_+79g$ri*aM?(BBI zNI^_20I7SH(l1iTEOO9D1}*UUPLfV60Fgxa%NYdmVj_PaM;I1o^zGV3L@_;@~IoBo;=Ib=>?soUWJX7XVO791zPI7Sf#i1+K0G(MkS2g z!I;1^Vj`0*9hsQx-9?jtr z35>?Tn&?c87SpORR0E?13`Mj=F!%70QlfhhQwwR2ar^K^M9_W5ZvxkowW`M&H~X3xPpO5maP*<{== ze2OPQ+qZA*7-`g?F*=ljQxuEd_@#JO~uTd!WOE$W=GM5w91UVvfs<8GJT#{K`#n zVMlM&_sN=1tsQ3XUlG}FWVt@5fTOXI+mjFNtut3{e>mY?#g$171qZ7yWbZ7iIK`DE zmRllve@ic}6aua4krQ%}9P90d*d{z_$l*_zdqcBovPRhSm0vGBy2Li@eZ`A&DP`1kDjcYv!^Y5>4RSiT9yZI37j%9 zq;J%!n2@o?efLfhVCfQw;qTLT`;0Nsp|V>Up0;n z*l=dY*x##4#RTLST*;zdx*P#flZZavodu4QiNDj8{1(RGptu z`9;&l_*-eaE?UP7Y};5`65hb<&v-5TrGzYM^{I%8(pygBXy~Jmt$TlKX=(Xz{p20j zx1L>OTYqlVO-FXGr6t=hvbxpWp>d_=`1q}Bjy-w$W&aiR*KUn(Z7}P?FXad46jj6P zPA8jQeZ6LI{pI+ysZ)P$Y-}tDtEG?j^ z+iibbV@8EMo;dj6kwrre%p-!DkAA1vxn+1Ox$ny1(h z^zr$y+%t`{Ej#(Nv^4zLqdg0Xi~k%Hpw7JCTf1`Uy@b85z(?-S5;iwwzgdqo&Rx(p i;92yBBR|#E{S|N-iz<$94sVnGS)?SUnQP;7-})Ohf;t%h literal 0 HcmV?d00001 diff --git a/icons/icon38_disabled.png b/icons/icon38_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..7666e21cf86a9cf3a8251b45e5d7f61622d9daed GIT binary patch literal 4307 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 literal 0 HcmV?d00001 diff --git a/icons/icon48_disabled.png b/icons/icon48_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d54e8494ba4c38849576bad5ab6db9e965ebcc3e GIT binary patch literal 4871 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 eIbJn*qeRQP!P7WJfZ1dI!#QY1>fM6j2 literal 0 HcmV?d00001 diff --git a/inject.js b/inject.js index 46a9c14..7ee0a08 100644 --- a/inject.js +++ b/inject.js @@ -3,6 +3,7 @@ var tc = { settings: { lastSpeed: 1.0, // default 1x + enabled: true, // default enabled speeds: {}, // empty object to hold speed for each source displayKeyCode: 86, // default: V @@ -77,6 +78,7 @@ rememberSpeed: tc.settings.rememberSpeed, audioBoolean: tc.settings.audioBoolean, startHidden: tc.settings.startHidden, + enabled: tc.settings.enabled, controllerOpacity: tc.settings.controllerOpacity, blacklist: tc.settings.blacklist.replace(regStrip, '') }); @@ -85,6 +87,7 @@ tc.settings.displayKeyCode = Number(storage.displayKeyCode); tc.settings.rememberSpeed = Boolean(storage.rememberSpeed); tc.settings.audioBoolean = Boolean(storage.audioBoolean); + tc.settings.enabled = Boolean(storage.enabled); tc.settings.startHidden = Boolean(storage.startHidden); tc.settings.controllerOpacity = Number(storage.controllerOpacity); tc.settings.blacklist = String(storage.blacklist); @@ -309,6 +312,7 @@ } } function initializeNow(document) { + if (!tc.settings.enabled) return; // enforce init-once due to redundant callers if (!document.body || document.body.classList.contains('vsc-initialized')) { return; diff --git a/options.html b/options.html index 102906f..2f07c0c 100644 --- a/options.html +++ b/options.html @@ -1,14 +1,14 @@ - - Video Speed Controller: Options - - - - -
-

Video Speed Controller

-
+ + Video Speed Controller: Options + + + + +
+

Video Speed Controller

+

Shortcuts

@@ -81,26 +81,30 @@
-

Other

-
+

Other

+
+ + +
+
- - + +
- - + +
- - + +
- - + +
diff --git a/options.js b/options.js index 32bd02f..cf64c40 100644 --- a/options.js +++ b/options.js @@ -6,6 +6,7 @@ var tcDefaults = { rememberSpeed: false, // default: false audioBoolean: false, // default: false startHidden: false, // default: false + enabled: true, // default enabled controllerOpacity: 0.3, // default: 0.3 keyBindings: [ {action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S @@ -168,6 +169,7 @@ function save_options() { var displayKeyCode = document.getElementById('displayKeyInput').keyCode; var rememberSpeed = document.getElementById('rememberSpeed').checked; var audioBoolean = document.getElementById('audioBoolean').checked; + var enabled = document.getElementById('enabled').checked; var startHidden = document.getElementById('startHidden').checked; var controllerOpacity = document.getElementById('controllerOpacity').value; var blacklist = document.getElementById('blacklist').value; @@ -179,6 +181,7 @@ function save_options() { displayKeyCode: displayKeyCode, rememberSpeed: rememberSpeed, audioBoolean: audioBoolean, + enabled: enabled, startHidden: startHidden, controllerOpacity: controllerOpacity, keyBindings: keyBindings, @@ -199,6 +202,7 @@ function restore_options() { updateShortcutInputText('displayKeyInput', storage.displayKeyCode); document.getElementById('rememberSpeed').checked = storage.rememberSpeed; document.getElementById('audioBoolean').checked = storage.audioBoolean; + document.getElementById('enabled').checked = storage.enabled; document.getElementById('startHidden').checked = storage.startHidden; document.getElementById('controllerOpacity').value = storage.controllerOpacity; document.getElementById('blacklist').value = storage.blacklist; diff --git a/popup.css b/popup.css index 74bfe99..f8b9a92 100644 --- a/popup.css +++ b/popup.css @@ -27,3 +27,7 @@ button { font-size: 0.95em; margin: 0.15em 0; } + +.hide { + display: none; +} diff --git a/popup.html b/popup.html index 9fd9ae0..51536d5 100644 --- a/popup.html +++ b/popup.html @@ -6,6 +6,10 @@ + + + +

diff --git a/popup.js b/popup.js index a60b107..1a0dfb4 100644 --- a/popup.js +++ b/popup.js @@ -10,4 +10,49 @@ document.addEventListener('DOMContentLoaded', function () { document.querySelector('#feedback').addEventListener('click', function() { window.open("https://github.com/igrigorik/videospeed/issues"); }); + + document.querySelector('#enable').addEventListener('click', function() { + toggleEnabled(true, settingsSavedReloadMessage); + }); + + document.querySelector('#disable').addEventListener('click', function() { + toggleEnabled(false, settingsSavedReloadMessage); + }); + + chrome.storage.sync.get({enabled: true}, function(storage) { + toggleEnabledUI(storage.enabled); + }); + + function toggleEnabled(enabled, callback){ + chrome.storage.sync.set({ + enabled: enabled, + }, function() { + toggleEnabledUI(enabled); + if(callback) callback(enabled); + }); + } + + function toggleEnabledUI(enabled){ + document.querySelector('#enable').classList.toggle("hide", enabled); + document.querySelector('#disable').classList.toggle("hide", !enabled); + + const suffix = `${(enabled ? "" : "_disabled")}.png` + chrome.browserAction.setIcon({ + "path": { + "19": "icons/icon19" + suffix, + "38": "icons/icon38" + suffix, + "48": "icons/icon48" + suffix + } + }); + } + + function settingsSavedReloadMessage(enabled){ + setStatusMessage(`${enabled ? "Enabled" : "Disabled"}. Reload page to see changes`); + } + + function setStatusMessage(str){ + const status_element = document.querySelector('#status') + status_element.classList.toggle("hide", false); + status_element.innerText = str; + } });