Add "Use Hotkeys" to settings to enable/disable them

This commit is contained in:
Robbie Antenesse 2019-05-10 13:18:38 -06:00
parent 15bba03e1d
commit 5d38aa4e17
3 changed files with 21 additions and 5 deletions

View File

@ -150,6 +150,11 @@
<small>Check this to use character combinations to input International Phonetic Alphabet characters into <small>Check this to use character combinations to input International Phonetic Alphabet characters into
Pronunciation fields.</small> Pronunciation fields.</small>
</label> </label>
<label>Use Hotkeys
<input id="settingsUseHotkeys" type="checkbox" checked><br />
<small>Check this to enable keyboard combinations to perform different helpful actions.</small>
</label>
<label>Theme <label>Theme
<select disabled> <select disabled>

View File

@ -36,9 +36,9 @@ export function hotKeyActions(event) {
} }
} break; } break;
} }
case 'd': if (event.ctrlKey) {event.preventDefault(); toggleDetailsDisplay()} break; case 'd': if (event.ctrlKey) {event.preventDefault(); toggleDetailsDisplay();} break;
case 'e': if (event.ctrlKey) {event.preventDefault(); openEditModal()} break; case 'e': if (event.ctrlKey) {event.preventDefault(); hideAllModals(); openEditModal();} break;
case 'h': if (event.ctrlKey) {event.preventDefault(); showHelpModal();} break; case 'h': if (event.ctrlKey) {event.preventDefault(); hideAllModals(); showHelpModal();} break;
case 'm': if (event.ctrlKey) {event.preventDefault(); maximizeTextarea();} break; case 'm': if (event.ctrlKey) {event.preventDefault(); maximizeTextarea();} break;
case 's': { case 's': {
if (event.ctrlKey) { if (event.ctrlKey) {
@ -52,7 +52,7 @@ export function hotKeyActions(event) {
} }
break; break;
} }
case 'S': if (event.ctrlKey) { event.preventDefault(); hideAllModals(); openSettingsModal(); } break; case 'S': if (event.ctrlKey) {event.preventDefault(); hideAllModals(); openSettingsModal();} break;
case 'x': if (event.ctrlKey) {event.preventDefault(); clearSearchText();} break; case 'x': if (event.ctrlKey) {event.preventDefault(); clearSearchText();} break;
} }
} }

View File

@ -3,6 +3,7 @@ import { cloneObject } from "../helpers";
import { usePhondueDigraphs } from "./KeyboardFire/phondue/ipaField"; import { usePhondueDigraphs } from "./KeyboardFire/phondue/ipaField";
import { renderWords } from "./render"; import { renderWords } from "./render";
import { addMessage } from "./utilities"; import { addMessage } from "./utilities";
import { enableHotKeys, disableHotKeys } from "./hotkeys";
export function loadSettings() { export function loadSettings() {
const storedSettings = window.localStorage.getItem(SETTINGS_KEY); const storedSettings = window.localStorage.getItem(SETTINGS_KEY);
@ -16,17 +17,20 @@ export function saveSettings() {
} }
export function openSettingsModal() { export function openSettingsModal() {
const { useIPAPronunciationField } = window.settings; const { useIPAPronunciationField, useHotkeys } = window.settings;
document.getElementById('settingsUseIPA').checked = useIPAPronunciationField; document.getElementById('settingsUseIPA').checked = useIPAPronunciationField;
document.getElementById('settingsUseHotkeys').checked = useHotkeys;
document.getElementById('settingsModal').style.display = ''; document.getElementById('settingsModal').style.display = '';
} }
export function saveSettingsModal() { export function saveSettingsModal() {
window.settings.useIPAPronunciationField = document.getElementById('settingsUseIPA').checked; window.settings.useIPAPronunciationField = document.getElementById('settingsUseIPA').checked;
window.settings.useHotkeys = document.getElementById('settingsUseHotkeys').checked;
saveSettings(); saveSettings();
toggleHotkeysEnabled();
toggleIPAPronunciationFields(); toggleIPAPronunciationFields();
} }
@ -35,6 +39,13 @@ export function saveAndCloseSettingsModal() {
document.getElementById('settingsModal').style.display = 'none'; document.getElementById('settingsModal').style.display = 'none';
} }
export function toggleHotkeysEnabled() {
disableHotKeys();
if (window.settings.useHotkeys) {
enableHotKeys();
}
}
export function toggleIPAPronunciationFields() { export function toggleIPAPronunciationFields() {
const ipaButtons = document.querySelectorAll('.ipa-table-button, .ipa-field-help-button'), const ipaButtons = document.querySelectorAll('.ipa-table-button, .ipa-field-help-button'),
ipaFields = document.querySelectorAll('.ipa-field'); ipaFields = document.querySelectorAll('.ipa-field');