diff --git a/app/js-video-player/buffer.py b/app/js-video-player/buffer.py index 6d05559..309860c 100644 --- a/app/js-video-player/buffer.py +++ b/app/js-video-player/buffer.py @@ -39,7 +39,25 @@ class AppBuffer(BrowserBuffer): index_file = "file://" + (os.path.join(os.path.dirname(__file__), "index.html")) self.buffer_widget.setUrl(QUrl(index_file)) + for method_name in ["toggle_play", "toggle_fullscreen"]: + self.build_js_method(method_name) + QTimer.singleShot(500, self.play_video) + def save_session_data(self): + return str(self.buffer_widget.execute_js("get_current_time();")) + + def restore_session_data(self, session_data): + self.position = session_data + QTimer.singleShot(600, self.restore_seek_position) + + def restore_seek_position(self): + self.buffer_widget.eval_js("set_current_time('{}');".format(self.position)) + def play_video(self): self.buffer_widget.eval_js("play('{}');".format("file://" + self.url)) + + def build_js_method(self, method_name): + def _do (): + self.buffer_widget.eval_js("{}();".format(method_name)) + setattr(self, method_name, _do) diff --git a/app/js-video-player/index.html b/app/js-video-player/index.html index 34ab455..f5c28c2 100644 --- a/app/js-video-player/index.html +++ b/app/js-video-player/index.html @@ -19,5 +19,21 @@ var video = document.getElementById('player'); video.setAttribute('src', file); } + + function toggle_play() { + player.togglePlay(); + } + + function toggle_fullscreen() { + player.fullscreen.toggle(); + } + + function get_current_time() { + return player.currentTime; + } + + function set_current_time(time) { + player.currentTime = parseFloat(time); + } diff --git a/core/browser.py b/core/browser.py index 4cbc553..76fd3cf 100644 --- a/core/browser.py +++ b/core/browser.py @@ -405,6 +405,7 @@ class BrowserBuffer(Buffer): settings.setAttribute(QWebEngineSettings.JavascriptEnabled, self.emacs_var_dict["eaf-browser-enable-javascript"] == "true") settings.setAttribute(QWebEngineSettings.FullScreenSupportEnabled, True) settings.setAttribute(QWebEngineSettings.PlaybackRequiresUserGesture, False) + settings.setAttribute(QWebEngineSettings.DnsPrefetchEnabled, True) except Exception: pass diff --git a/eaf.el b/eaf.el index 0c141f8..83d2ef2 100644 --- a/eaf.el +++ b/eaf.el @@ -367,6 +367,18 @@ Try not to modify this alist directly. Use `eaf-setq' to modify instead." "The keybinding of EAF Video Player." :type 'cons) +(defcustom eaf-js-video-player-keybinding + '(("SPC" . "toggle_play") + ("f" . "toggle_fullscreen") + ("M-g" . "exit_fullscreen") + ("" . "open_dev_tool_page") + ("C--" . "zoom_out") + ("C-=" . "zoom_in") + ("C-0" . "zoom_reset") + ) + "The keybinding of EAF JS Video Player." + :type 'cons) + (defcustom eaf-image-viewer-keybinding '(("n" . "load_next_image") ("p" . "load_prev_image") @@ -555,6 +567,7 @@ Then EAF will start by gdb, please send new issue with `*eaf*' buffer content wh '(("browser" . eaf-browser-keybinding) ("pdf-viewer" . eaf-pdf-viewer-keybinding) ("video-player" . eaf-video-player-keybinding) + ("js-video-player" . eaf-js-video-player-keybinding) ("image-viewer" . eaf-image-viewer-keybinding) ("camera" . eaf-camera-keybinding) ("terminal" . eaf-terminal-keybinding)