Make js-video-player support save/restore session data.

master
Andy Stewart 6 years ago
parent a7915c1a3d
commit fa1b15f0c4
  1. 18
      app/js-video-player/buffer.py
  2. 16
      app/js-video-player/index.html
  3. 1
      core/browser.py
  4. 13
      eaf.el

@ -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)

@ -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);
}
</script>
</body>

@ -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

@ -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")
("<f12>" . "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)

Loading…
Cancel
Save