add global clipboard monitor that spawns popups

TODO: refactor the search page clipboard monitor and popup clipboard
monitor to use a common ClipboardMonitor class
This commit is contained in:
siikamiika 2020-01-25 19:00:36 +02:00
parent f29abfc511
commit 939ad42dac
5 changed files with 28 additions and 0 deletions

View File

@ -79,6 +79,7 @@
"type": "object",
"required": [
"enable",
"enableClipboardPopups",
"resultOutputMode",
"debugInfo",
"maxResults",
@ -111,6 +112,10 @@
"type": "boolean",
"default": true
},
"enableClipboardPopups": {
"type": "boolean",
"default": false
},
"resultOutputMode": {
"type": "string",
"enum": ["group", "merge", "split"],

View File

@ -34,6 +34,9 @@ class Backend {
this.clipboardPasteTarget = document.querySelector('#clipboard-paste-target');
this.popupWindow = null;
this.clipboardPopupTimerId = null;
this.clipboardInterval = 250;
this.clipboardPreviousText = null;
this.apiForwarder = new BackendApiForwarder();
}
@ -122,6 +125,20 @@ class Backend {
} else {
this.mecab.stopListener();
}
window.clearInterval(this.clipboardPopupTimerId);
if (options.general.enableClipboardPopups) {
this.clipboardPopupTimerId = setInterval(() => {
this._onApiClipboardGet()
.then((result) => {
if (this.clipboardPreviousText === result) {
return;
}
this._onCommandSearch({mode: 'popup', query: result});
this.clipboardPreviousText = result;
});
}, this.clipboardInterval);
}
}
async getOptionsSchema() {

View File

@ -266,6 +266,7 @@ function profileOptionsCreateDefaults() {
return {
general: {
enable: true,
enableClipboardPopups: false,
resultOutputMode: 'group',
debugInfo: false,
maxResults: 32,

View File

@ -28,6 +28,7 @@ function getOptionsFullMutable() {
async function formRead(options) {
options.general.enable = $('#enable').prop('checked');
options.general.enableClipboardPopups = $('#enable-clipboard-popups').prop('checked');
options.general.showGuide = $('#show-usage-guide').prop('checked');
options.general.compactTags = $('#compact-tags').prop('checked');
options.general.compactGlossaries = $('#compact-glossaries').prop('checked');

View File

@ -134,6 +134,10 @@
<label><input type="checkbox" id="enable"> Enable content scanning</label>
</div>
<div class="checkbox">
<label><input type="checkbox" id="enable-clipboard-popups"> Enable native popups when copying Japanese text</label>
</div>
<div class="checkbox">
<label><input type="checkbox" id="show-usage-guide"> Show usage guide on startup</label>
</div>