refactoring

This commit is contained in:
Devaev Maxim 2018-08-27 13:33:15 +03:00
parent a8773eab1e
commit 9a243eaa04
5 changed files with 59 additions and 63 deletions

View File

@ -12,6 +12,35 @@ function Hid() {
var __mouse = new Mouse(); var __mouse = new Mouse();
var __init__ = function() { var __init__ = function() {
var __hidden_attr = null;
var __visibility_change_attr = null;
if (typeof document.hidden !== "undefined") {
__hidden_attr = "hidden";
__visibility_change_attr = "visibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
__hidden_attr = "webkitHidden";
__visibility_change_attr = "webkitvisibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
__hidden_attr = "mozHidden";
__visibility_change_attr = "mozvisibilitychange";
}
if (__visibility_change_attr) {
document.addEventListener(
__visibility_change_attr,
function() {
if (document[__hidden_attr]) {
__releaseAll();
}
},
false
);
}
window.onpagehide = __releaseAll;
window.onblur = __releaseAll;
if (window.navigator.clipboard && window.navigator.clipboard.readText) { if (window.navigator.clipboard && window.navigator.clipboard.readText) {
__chars_to_codes = __buildCharsToCodes(); __chars_to_codes = __buildCharsToCodes();
$("pak-button").onclick = __pasteAsKeys; $("pak-button").onclick = __pasteAsKeys;
@ -33,12 +62,7 @@ function Hid() {
$("pak-button").disabled = !(window.navigator.clipboard && window.navigator.clipboard.readText && ws); $("pak-button").disabled = !(window.navigator.clipboard && window.navigator.clipboard.readText && ws);
}; };
self.updateLeds = function() { var __releaseAll = function() {
__keyboard.updateLeds();
__mouse.updateLeds();
};
self.releaseAll = function() {
__keyboard.releaseAll(); __keyboard.releaseAll();
}; };

View File

@ -20,9 +20,13 @@ function Keyboard() {
$("keyboard-window").onkeydown = (event) => __keyboardHandler(event, true); $("keyboard-window").onkeydown = (event) => __keyboardHandler(event, true);
$("keyboard-window").onkeyup = (event) => __keyboardHandler(event, false); $("keyboard-window").onkeyup = (event) => __keyboardHandler(event, false);
$("keyboard-window").onfocus = __updateLeds;
$("keyboard-window").onblur = __updateLeds;
$("stream-window").onkeydown = (event) => __keyboardHandler(event, true); $("stream-window").onkeydown = (event) => __keyboardHandler(event, true);
$("stream-window").onkeyup = (event) => __keyboardHandler(event, false); $("stream-window").onkeyup = (event) => __keyboardHandler(event, false);
$("stream-window").onfocus = __updateLeds;
$("stream-window").onblur = __updateLeds;
Array.prototype.forEach.call($$("key"), function(el_key) { Array.prototype.forEach.call($$("key"), function(el_key) {
el_key.onmousedown = () => __clickHandler(el_key, true); el_key.onmousedown = () => __clickHandler(el_key, true);
@ -54,17 +58,7 @@ function Keyboard() {
self.releaseAll(); self.releaseAll();
__ws = ws; __ws = ws;
} }
self.updateLeds(); __updateLeds();
};
self.updateLeds = function() {
if (__ws && (document.activeElement === $("stream-window") || document.activeElement === $("keyboard-window"))) {
$("hid-keyboard-led").className = "led-on";
$("hid-keyboard-led").title = "Keyboard captured";
} else {
$("hid-keyboard-led").className = "led-off";
$("hid-keyboard-led").title = "Keyboard free";
}
}; };
self.releaseAll = function() { self.releaseAll = function() {
@ -82,6 +76,16 @@ function Keyboard() {
)); ));
}; };
var __updateLeds = function() {
if (__ws && (document.activeElement === $("stream-window") || document.activeElement === $("keyboard-window"))) {
$("hid-keyboard-led").className = "led-on";
$("hid-keyboard-led").title = "Keyboard captured";
} else {
$("hid-keyboard-led").className = "led-off";
$("hid-keyboard-led").title = "Keyboard free";
}
};
var __keyboardHandler = function(event, state) { var __keyboardHandler = function(event, state) {
event.preventDefault(); event.preventDefault();
var el_key = $(event.code); var el_key = $(event.code);

View File

@ -7,9 +7,8 @@ function main() {
) { ) {
$("bad-browser-modal").style.visibility = "visible"; $("bad-browser-modal").style.visibility = "visible";
} else { } else {
var hid = new Hid(); var ui = new Ui();
var ui = new Ui(hid); new Session(new Atx(), new Hid(), new Msd());
new Session(new Atx(), hid, new Msd());
new Stream(ui); new Stream(ui);
} }
} }

View File

@ -38,7 +38,17 @@ function Mouse() {
} }
}; };
self.updateLeds = function() { var __hoverStream = function() {
__stream_hovered = true;
__updateLeds();
};
var __leaveStream = function() {
__stream_hovered = false;
__updateLeds();
};
var __updateLeds = function() {
if (__ws && __stream_hovered) { if (__ws && __stream_hovered) {
$("hid-mouse-led").className = "led-on"; $("hid-mouse-led").className = "led-on";
$("hid-mouse-led").title = "Mouse tracked"; $("hid-mouse-led").title = "Mouse tracked";
@ -48,16 +58,6 @@ function Mouse() {
} }
}; };
var __hoverStream = function() {
__stream_hovered = true;
self.updateLeds();
};
var __leaveStream = function() {
__stream_hovered = false;
self.updateLeds();
};
var __touchHandler = function(event, state) { var __touchHandler = function(event, state) {
if (state) { if (state) {
var rect = event.touches[0].target.getBoundingClientRect(); var rect = event.touches[0].target.getBoundingClientRect();

View File

@ -1,4 +1,4 @@
function Ui(hid) { function Ui() {
var self = this; var self = this;
/********************************************************************************/ /********************************************************************************/
@ -26,35 +26,6 @@ function Ui(hid) {
} }
}); });
var __hidden_attr = null;
var __visibility_change_attr = null;
if (typeof document.hidden !== "undefined") {
__hidden_attr = "hidden";
__visibility_change_attr = "visibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
__hidden_attr = "webkitHidden";
__visibility_change_attr = "webkitvisibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
__hidden_attr = "mozHidden";
__visibility_change_attr = "mozvisibilitychange";
}
if (__visibility_change_attr) {
document.addEventListener(
__visibility_change_attr,
function() {
if (document[__hidden_attr]) {
hid.releaseAll();
}
},
false
);
}
window.onpagehide = hid.releaseAll;
window.onblur = hid.releaseAll;
window.onmouseup = __globalMouseButtonHandler; window.onmouseup = __globalMouseButtonHandler;
// window.oncontextmenu = __globalMouseButtonHandler; // window.oncontextmenu = __globalMouseButtonHandler;
@ -144,7 +115,6 @@ function Ui(hid) {
}; };
var __globalMouseButtonHandler = function(event) { var __globalMouseButtonHandler = function(event) {
hid.updateLeds();
if (!event.target.matches(".ctl-item")) { if (!event.target.matches(".ctl-item")) {
for (var el_item = event.target; el_item && el_item !== document; el_item = el_item.parentNode) { for (var el_item = event.target; el_item && el_item !== document; el_item = el_item.parentNode) {
if (el_item.hasAttribute("data-force-hide-menu")) { if (el_item.hasAttribute("data-force-hide-menu")) {
@ -251,7 +221,6 @@ function Ui(hid) {
var __raiseWindow = function(el_window) { var __raiseWindow = function(el_window) {
el_window.focus(); el_window.focus();
hid.updateLeds();
if (parseInt(el_window.style.zIndex) !== __top_z_index) { if (parseInt(el_window.style.zIndex) !== __top_z_index) {
var z_index = __top_z_index + 1; var z_index = __top_z_index + 1;
el_window.style.zIndex = z_index; el_window.style.zIndex = z_index;