diff options
author | siikamiika <siikamiika@users.noreply.github.com> | 2019-10-26 19:12:13 +0300 |
---|---|---|
committer | siikamiika <siikamiika@users.noreply.github.com> | 2019-10-26 19:12:13 +0300 |
commit | bbbd23c842fae4a6f21afcf91fb797dd6f5709f7 (patch) | |
tree | 455db64482c47be2fe8fa0a00e6d495f8ac50d3c /ext | |
parent | 303205dc124a1dde981db5b6401961f797e3a6d4 (diff) |
add button to enable/disable wanakana IME
Diffstat (limited to 'ext')
-rw-r--r-- | ext/bg/js/search.js | 40 | ||||
-rw-r--r-- | ext/bg/search.html | 8 |
2 files changed, 37 insertions, 11 deletions
diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index 8d2e7bf2..11d1d871 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -29,7 +29,8 @@ class DisplaySearch extends Display { this.search = document.querySelector('#search'); this.query = document.querySelector('#query'); this.intro = document.querySelector('#intro'); - this.clipboardMonitorCheck = document.querySelector('#clipboard-monitor'); + this.clipboardMonitorEnable = document.querySelector('#clipboard-monitor-enable'); + this.wanakanaEnable = document.querySelector('#wanakana-enable'); this.introVisible = true; this.introAnimationTimer = null; @@ -54,17 +55,31 @@ class DisplaySearch extends Display { if (this.query !== null) { this.query.addEventListener('input', () => this.onSearchInput(), false); - const query = DisplaySearch.getSearchQueryFromLocation(window.location.href); + if (this.wanakanaEnable !== null) { + if (this.wanakanaEnable.checked) { + window.wanakana.bind(this.query); + } + this.wanakanaEnable.addEventListener('change', (e) => { + if (e.target.checked) { + window.wanakana.bind(this.query); + } else { + window.wanakana.unbind(this.query); + } + }); + } + + let query = DisplaySearch.getSearchQueryFromLocation(window.location.href); if (query !== null) { - this.query.value = window.wanakana.toKana(query); + if (this.wanakanaEnable !== null && this.wanakanaEnable.checked) { + query = window.wanakana.toKana(query); + } + this.query.value = query; window.history.replaceState({query}, ''); this.onSearchQueryUpdated(query, false); } - - window.wanakana.bind(this.query); } - if (this.clipboardMonitorCheck !== null) { - this.clipboardMonitorCheck.addEventListener('change', (e) => { + if (this.clipboardMonitorEnable !== null) { + this.clipboardMonitorEnable.addEventListener('change', (e) => { if (e.target.checked) { this.startClipboardMonitor(); } else { @@ -203,13 +218,20 @@ class DisplaySearch extends Display { initClipboardMonitor() { // ignore copy from search page window.addEventListener('copy', (e) => { - this.clipboardPrevText = document.getSelection().toString().trim(); + let prevText = document.getSelection().toString().trim(); + if (this.wanakanaEnable !== null && this.wanakanaEnable.checked) { + prevText = window.wanakana.toKana(prevText); + } + this.clipboardPrevText = prevText; }); } startClipboardMonitor() { this.clipboardMonitorIntervalId = setInterval(async () => { - const curText = (await navigator.clipboard.readText()).trim(); + let curText = (await navigator.clipboard.readText()).trim(); + if (this.wanakanaEnable !== null && this.wanakanaEnable.checked) { + curText = window.wanakana.toKana(curText); + } if (curText && (curText !== this.clipboardPrevText)) { this.query.value = curText; this.onSearch(); diff --git a/ext/bg/search.html b/ext/bg/search.html index 1e650be0..11dca5a2 100644 --- a/ext/bg/search.html +++ b/ext/bg/search.html @@ -20,9 +20,13 @@ </div> <div class="input-group" style="padding-top: 10px; font-size: 20px;"> + <span title="Enable kana input method" class="input-group-text"> + <label for="wanakana-enable">あ</label> + <input type="checkbox" id="wanakana-enable" checked /> + </span> <span title="Enable clipboard monitor" class="input-group-text"> - <label for="clipboard-monitor"><span class="glyphicon glyphicon-paste"></span></label> - <input type="checkbox" id="clipboard-monitor" /> + <label for="clipboard-monitor-enable"><span class="glyphicon glyphicon-paste"></span></label> + <input type="checkbox" id="clipboard-monitor-enable" /> </span> </div> |