Make shortcuts consistent

This commit is contained in:
Timothy Lim
2019-10-18 19:32:49 +08:00
parent 823a24475c
commit 29788ba82a
3 changed files with 36 additions and 36 deletions

View File

@@ -6,7 +6,6 @@
speeds: {}, // empty object to hold speed for each source speeds: {}, // empty object to hold speed for each source
displayKeyCode: 86, // default: V displayKeyCode: 86, // default: V
displayForce: false,
rememberSpeed: false, // default: false rememberSpeed: false, // default: false
audioBoolean: false, // default: false audioBoolean: false, // default: false
startHidden: false, // default: false startHidden: false, // default: false
@@ -75,7 +74,6 @@
keyBindings: tc.settings.keyBindings, keyBindings: tc.settings.keyBindings,
version: tc.settings.version, version: tc.settings.version,
displayKeyCode: tc.settings.displayKeyCode, displayKeyCode: tc.settings.displayKeyCode,
displayForce: tc.settings.displayForce,
rememberSpeed: tc.settings.rememberSpeed, rememberSpeed: tc.settings.rememberSpeed,
audioBoolean: tc.settings.audioBoolean, audioBoolean: tc.settings.audioBoolean,
startHidden: tc.settings.startHidden, startHidden: tc.settings.startHidden,
@@ -85,13 +83,23 @@
} }
tc.settings.lastSpeed = Number(storage.lastSpeed); tc.settings.lastSpeed = Number(storage.lastSpeed);
tc.settings.displayKeyCode = Number(storage.displayKeyCode); tc.settings.displayKeyCode = Number(storage.displayKeyCode);
tc.settings.displayForce = String(storage.displayForce);
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed); tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
tc.settings.audioBoolean = Boolean(storage.audioBoolean); tc.settings.audioBoolean = Boolean(storage.audioBoolean);
tc.settings.startHidden = Boolean(storage.startHidden); tc.settings.startHidden = Boolean(storage.startHidden);
tc.settings.controllerOpacity = Number(storage.controllerOpacity); tc.settings.controllerOpacity = Number(storage.controllerOpacity);
tc.settings.blacklist = String(storage.blacklist); tc.settings.blacklist = String(storage.blacklist);
// ensure that there is a "display" binding (for upgrades from versions that had it as a separate binding)
if (tc.settings.keyBindings.filter(x => x.action == "display").length == 0) {
tc.settings.keyBindings.push({
action: "display",
key: Number(storage.displayKeyCode) || 86,
value: 0,
force: false,
predefined: true
}); // default V
}
initializeWhenReady(document); initializeWhenReady(document);
}); });
@@ -361,13 +369,6 @@
return false; return false;
} }
if (keyCode == tc.settings.displayKeyCode) {
runAction('display', document, true)
if (tc.settings.displayForce === "true") {// disable websites key bindings
event.preventDefault();
event.stopPropagation();
}
}
var item = tc.settings.keyBindings.find(item => item.key === keyCode); var item = tc.settings.keyBindings.find(item => item.key === keyCode);
if (item) { if (item) {
runAction(item.action, document, item.value); runAction(item.action, document, item.value);

View File

@@ -12,14 +12,16 @@
<section id="customs"> <section id="customs">
<h3>Shortcuts</h3> <h3>Shortcuts</h3>
<div class="row"> <div class="row customs" id="display">
<label for="displayKeyInput">Show/hide controller</label> <select class="customDo">
<input id="displayKeyInput" placeholder="press a key" type="text" value=""/> <option value="display">Show/hide controller</option>
<select class="customForce" id="displayForce"> </select>
<option value="false">Do not disable website key bindings</option> <input class="customKey" type="text" value="" placeholder="press a key">
<option value="true">Disable websites key bindings</option> <input class="customValue" type="text" placeholder="value (0.10)">
</select> <select class="customForce">
</div> <option value="false">Do not disable website key bindings</option>
<option value="true">Disable websites key bindings</option>
</select></div>
<div class="row customs" id="slower"> <div class="row customs" id="slower">
<select class="customDo"> <select class="customDo">
<option value="slower">Decrease speed</option> <option value="slower">Decrease speed</option>

View File

@@ -3,12 +3,12 @@ var regStrip=/^[\r\t\f\v ]+|[\r\t\f\v ]+$/gm;
var tcDefaults = { var tcDefaults = {
speed: 1.0, // default: speed: 1.0, // default:
displayKeyCode: 86, // default: V displayKeyCode: 86, // default: V
displayForce: false,
rememberSpeed: false, // default: false rememberSpeed: false, // default: false
audioBoolean: false, // default: false audioBoolean: false, // default: false
startHidden: false, // default: false startHidden: false, // default: false
controllerOpacity: 0.3, // default: 0.3 controllerOpacity: 0.3, // default: 0.3
keyBindings: [ keyBindings: [
{action: "display", key: 86, value: 0, force: false, predefined: true }, // V
{action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S {action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S
{action: "faster", key: 68, value: 0.1, force: false, predefined: true}, // D {action: "faster", key: 68, value: 0.1, force: false, predefined: true}, // D
{action: "rewind", key: 90, value: 10, force: false, predefined: true}, // Z {action: "rewind", key: 90, value: 10, force: false, predefined: true}, // Z
@@ -106,7 +106,7 @@ function updateCustomShortcutInputText(inputItem, keyCode) {
} }
// List of custom actions for which customValue should be disabled // List of custom actions for which customValue should be disabled
var customActionsNoValues=["pause","muted","mark","jump"]; var customActionsNoValues=["pause","muted","mark","jump","display"];
function add_shortcut() { function add_shortcut() {
var html = `<select class="customDo"> var html = `<select class="customDo">
@@ -120,6 +120,7 @@ function add_shortcut() {
<option value="pause">Pause</option> <option value="pause">Pause</option>
<option value="mark">Set marker</option> <option value="mark">Set marker</option>
<option value="jump">Jump to marker</option> <option value="jump">Jump to marker</option>
<option value="display">Show/hide controller</option>
</select> </select>
<input class="customKey" type="text" placeholder="press a key"/> <input class="customKey" type="text" placeholder="press a key"/>
<input class="customValue" type="text" placeholder="value (0.10)"/> <input class="customValue" type="text" placeholder="value (0.10)"/>
@@ -150,20 +151,14 @@ function save_options() {
keyBindings = []; keyBindings = [];
Array.from(document.querySelectorAll(".customs")).forEach(item => createKeyBindings(item)); // Remove added shortcuts Array.from(document.querySelectorAll(".customs")).forEach(item => createKeyBindings(item)); // Remove added shortcuts
var displayKeyCode = document.getElementById('displayKeyInput').keyCode;
var displayForce = document.getElementById('displayForce').value;
var rememberSpeed = document.getElementById('rememberSpeed').checked; var rememberSpeed = document.getElementById('rememberSpeed').checked;
var audioBoolean = document.getElementById('audioBoolean').checked; var audioBoolean = document.getElementById('audioBoolean').checked;
var startHidden = document.getElementById('startHidden').checked; var startHidden = document.getElementById('startHidden').checked;
var controllerOpacity = document.getElementById('controllerOpacity').value; var controllerOpacity = document.getElementById('controllerOpacity').value;
var blacklist = document.getElementById('blacklist').value; var blacklist = document.getElementById('blacklist').value;
displayKeyCode = isNaN(displayKeyCode) ? tcDefaults.displayKeyCode : displayKeyCode;
chrome.storage.sync.remove(["resetSpeed", "speedStep", "fastSpeed", "rewindTime", "advanceTime", "resetKeyCode", "slowerKeyCode", "fasterKeyCode", "rewindKeyCode", "advanceKeyCode", "fastKeyCode"]); chrome.storage.sync.remove(["resetSpeed", "speedStep", "fastSpeed", "rewindTime", "advanceTime", "resetKeyCode", "slowerKeyCode", "fasterKeyCode", "rewindKeyCode", "advanceKeyCode", "fastKeyCode"]);
chrome.storage.sync.set({ chrome.storage.sync.set({
displayKeyCode: displayKeyCode,
displayForce: displayForce,
rememberSpeed: rememberSpeed, rememberSpeed: rememberSpeed,
audioBoolean: audioBoolean, audioBoolean: audioBoolean,
startHidden: startHidden, startHidden: startHidden,
@@ -183,19 +178,29 @@ function save_options() {
// Restores options from chrome.storage // Restores options from chrome.storage
function restore_options() { function restore_options() {
chrome.storage.sync.get(tcDefaults, function(storage) { chrome.storage.sync.get(tcDefaults, function(storage) {
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
document.getElementById('displayForce').value = storage.displayForce;
document.getElementById('rememberSpeed').checked = storage.rememberSpeed; document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
document.getElementById('audioBoolean').checked = storage.audioBoolean; document.getElementById('audioBoolean').checked = storage.audioBoolean;
document.getElementById('startHidden').checked = storage.startHidden; document.getElementById('startHidden').checked = storage.startHidden;
document.getElementById('controllerOpacity').value = storage.controllerOpacity; document.getElementById('controllerOpacity').value = storage.controllerOpacity;
document.getElementById('blacklist').value = storage.blacklist; document.getElementById('blacklist').value = storage.blacklist;
// ensure that there is a "display" binding for upgrades from versions that had it as a separate binding
if(storage.keyBindings.filter(x => x.action == "display").length == 0){
storage.keyBindings.push({ action: "display", value: 0, force: false, predefined: true });
}
for (let i in storage.keyBindings) { for (let i in storage.keyBindings) {
var item = storage.keyBindings[i]; var item = storage.keyBindings[i];
if (item.predefined) { if (item.predefined) {
//do predefined ones because their value needed for overlay //do predefined ones because their value needed for overlay
// document.querySelector("#" + item["action"] + " .customDo").value = item["action"]; // document.querySelector("#" + item["action"] + " .customDo").value = item["action"];
if (item["action"] == "display" && typeof (item["key"]) === "undefined"){
item["key"] = storage.displayKeyCode || tcDefaults.displayKeyCode; // V
}
if (customActionsNoValues.includes(item["action"]))
document.querySelector("#" + item["action"] + " .customValue").disabled = true;
updateCustomShortcutInputText(document.querySelector("#" + item["action"] + " .customKey"), item["key"]); updateCustomShortcutInputText(document.querySelector("#" + item["action"] + " .customKey"), item["key"]);
document.querySelector("#" + item["action"] + " .customValue").value = item["value"]; document.querySelector("#" + item["action"] + " .customValue").value = item["value"];
document.querySelector("#" + item["action"] + " .customForce").value = item["force"]; document.querySelector("#" + item["action"] + " .customForce").value = item["force"];
@@ -234,12 +239,6 @@ function show_experimental() {
document.querySelectorAll(".customForce").forEach(item => item.style.display = 'inline-block'); document.querySelectorAll(".customForce").forEach(item => item.style.display = 'inline-block');
} }
function initShortcutInput(inputId) {
document.getElementById(inputId).addEventListener('focus', inputFocus);
document.getElementById(inputId).addEventListener('blur', inputBlur);
document.getElementById(inputId).addEventListener('keydown', recordKeyPress);
}
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
restore_options(); restore_options();
@@ -248,8 +247,6 @@ document.addEventListener('DOMContentLoaded', function () {
document.getElementById('restore').addEventListener('click', restore_defaults); document.getElementById('restore').addEventListener('click', restore_defaults);
document.getElementById('experimental').addEventListener('click', show_experimental); document.getElementById('experimental').addEventListener('click', show_experimental);
initShortcutInput('displayKeyInput');
function eventCaller(event, className, funcName) { function eventCaller(event, className, funcName) {
if (!event.target.classList.contains(className)) { if (!event.target.classList.contains(className)) {
return return