From cc26cdb5e522efd5004c3138121adbb950c83f6d Mon Sep 17 00:00:00 2001 From: thlo Date: Mon, 31 Dec 2012 14:06:22 +0100 Subject: Several small improvements and bug fixes. --- smarttv-client/Javascript/Main.js | 232 ++++++++++++++++++++++++------------ smarttv-client/Javascript/Player.js | 81 ++++++++++++- 2 files changed, 229 insertions(+), 84 deletions(-) (limited to 'smarttv-client/Javascript') diff --git a/smarttv-client/Javascript/Main.js b/smarttv-client/Javascript/Main.js index 7103068..7d71e4d 100755 --- a/smarttv-client/Javascript/Main.js +++ b/smarttv-client/Javascript/Main.js @@ -1,9 +1,11 @@ var widgetAPI = null; var tvKey = null; +var pluginObj = null; try { widgetAPI = new Common.API.Widget(); tvKey = new Common.API.TVKeyValue(); + pluginObj = new Common.API.Plugin(); } catch (e) { } @@ -64,9 +66,12 @@ var Main = { }; Main.onLoad = function() { + window.onShow = showHandler; + Network.init(); try { - widgetAPI.sendReadyEvent(); + widgetAPI.sendReadyEvent(); + } catch (e) { Config.deviceType = 1; @@ -77,7 +82,7 @@ Main.onLoad = function() { } Display.init(); - + this.defKeyHndl = new cDefaulKeyHndl; this.playStateKeyHndl = new cPlayStateKeyHndl(this.defKeyHndl); this.livePlayStateKeyHndl = new cLivePlayStateKeyHndl(this.defKeyHndl); @@ -89,11 +94,23 @@ Main.onLoad = function() { Config.init(); }; +showHandler = function() { + NNaviPlugin = document.getElementById("pluginObjectNNavi"); + NNaviPlugin.SetBannerState(2); + + pluginObj.unregistKey(tvKey.KEY_VOL_UP); + pluginObj.unregistKey(tvKey.KEY_VOL_DOWN); + pluginObj.unregistKey(tvKey.KEY_MUTE); + pluginObj.unregistKey(tvKey.KEY_PANEL_VOL_UP); + pluginObj.unregistKey(tvKey.KEY_PANEL_VOL_DOWN); +}; + + // Called by Config, when done // TODO: Send sendReadyEvent early and show a splash screen during startup Main.init = function () { Main.log("Main.init()"); - if ( Player.init() && Audio.init() && Server.init() ) { + if ( Player.init() && Server.init() && Audio.init()) { Display.setVolume( Audio.getVolume() ); // Start retrieving data from server @@ -116,7 +133,16 @@ Main.init = function () { else { Main.log("Failed to initialise"); } - + /* + * + * Fetch JS file + xhttp=new XMLHttpRequest(); + xhttp.open("GET","$MANAGER_WIDGET/Common/API/Plugin.js",false); + xhttp.send(""); + xmlDoc=xhttp.responseText; + Main.logToServer (xmlDoc); +*/ + }; Main.log = function (msg) { @@ -146,6 +172,7 @@ Main.onUnload = function() Player.deinit(); }; + Main.changeState = function (state) { Main.log("change state: new state= " + state); var old_state = this.state; @@ -698,6 +725,65 @@ Main.getKeyCode = function(code) { return res; }; +Main.tvKeys = { + KEY_UP :38, + KEY_DOWN :40, + KEY_LEFT :37, + KEY_RIGHT :39, + KEY_ENTER :13, + + KEY_STOP :27, // ESC +// KEY_MUTE :27, + + // Un-used keycodes + KEY_RETURN :88, + KEY_EXIT :45, + KEY_RED :108, + KEY_GREEN :20, + KEY_YELLOW :21, + KEY_BLUE :22, + KEY_RW :69, + KEY_PAUSE :74, + KEY_FF :72, + KEY_PLAY :71, + KEY_STOP :70, + KEY_1 :101, + KEY_2 :98, + KEY_3 :6, + KEY_4 :8, + KEY_5 :9, + KEY_6 :10, + KEY_7 :12, + KEY_8 :13, + KEY_9 :14, + KEY_0 :17, + + KEY_PANEL_CH_UP :104, + KEY_PANEL_CH_DOWN :106, + KEY_PANEL_VOL_UP :203, + KEY_PANEL_VOL_DOWN :204, + KEY_PANEL_ENTER :309, + KEY_PANEL_SOURCE :612, + KEY_PANEL_MENU :613, + KEY_PANEL_POWER :614, + + KEY_POWER :76, + KEY_VOL_UP :7, + KEY_VOL_DOWN :11, + KEY_CH_UP :68, + KEY_CH_DOWN :65, + KEY_MTS :655, + KEY_12 :1057, + KEY_AD :1039, + KEY_FF_ :1078, + KEY_REWIND_ :1080, + KEY_SLEEP :1097, + KEY_STEP :1023, + KEY_HOME :1118 + +}; + + //--------------------------------------------------- // PlayState Key Handler //--------------------------------------------------- @@ -768,20 +854,33 @@ cPlayStateKeyHndl.prototype.handleKeyDown = function () { Player.jumpToVideo(90); break; - case tvKey.KEY_RIGHT: case tvKey.KEY_FF: - Main.log("FF"); + case tvKey.KEY_RIGHT: + Main.log("Right: Skip Forward"); Display.showProgress(); Player.skipForwardVideo(); break; - case tvKey.KEY_LEFT: case tvKey.KEY_RW: - Main.log("RW"); + case tvKey.KEY_LEFT: + Main.log("Left: Skip Backward"); Display.showProgress(); Player.skipBackwardVideo(); break; +/* Works only for progressive streams, not Adaptive HTTP */ +/* case tvKey.KEY_FF: + Main.log("FF"); + Display.showProgress(); + Player.fastForwardVideo(); + + break; + case tvKey.KEY_RW: + Main.log("RW"); + Display.showProgress(); + Player.RewindVideo(); + break; +*/ case tvKey.KEY_ENTER: case tvKey.KEY_PLAY: case tvKey.KEY_PANEL_ENTER: @@ -789,6 +888,7 @@ cPlayStateKeyHndl.prototype.handleKeyDown = function () { if(Player.getState() == Player.PAUSED) { Player.resumeVideo(); } + Player.ResetTrickPlay(); Display.showProgress(); break; case tvKey.KEY_RETURN: @@ -797,13 +897,15 @@ cPlayStateKeyHndl.prototype.handleKeyDown = function () { Main.log("STOP"); // Player.setWindow(); Player.stopVideo(); + widgetAPI.blockNavigation(event); + break; case tvKey.KEY_PAUSE: Main.log("PAUSE"); Player.pauseVideo(); break; - case tvKey.KEY_UP: +/* case tvKey.KEY_UP: case tvKey.KEY_PANEL_VOL_UP: case tvKey.KEY_VOL_UP: Main.log("VOL_UP"); @@ -820,7 +922,7 @@ cPlayStateKeyHndl.prototype.handleKeyDown = function () { if(Main.mute == 0) Audio.setRelativeVolume(1); break; - +*/ default: Main.log("Calling Default Key Hanlder"); this.defaultKeyHandler.handleDefKeyDown(keyCode); @@ -828,64 +930,6 @@ cPlayStateKeyHndl.prototype.handleKeyDown = function () { } }; -Main.tvKeys = { - KEY_UP :38, - KEY_DOWN :40, - KEY_LEFT :37, - KEY_RIGHT :39, - KEY_ENTER :13, - - KEY_STOP :27, // ESC -// KEY_MUTE :27, - - // Un-used keycodes - KEY_RETURN :88, - KEY_EXIT :45, - KEY_RED :108, - KEY_GREEN :20, - KEY_YELLOW :21, - KEY_BLUE :22, - KEY_RW :69, - KEY_PAUSE :74, - KEY_FF :72, - KEY_PLAY :71, - KEY_STOP :70, - KEY_1 :101, - KEY_2 :98, - KEY_3 :6, - KEY_4 :8, - KEY_5 :9, - KEY_6 :10, - KEY_7 :12, - KEY_8 :13, - KEY_9 :14, - KEY_0 :17, - - KEY_PANEL_CH_UP :104, - KEY_PANEL_CH_DOWN :106, - KEY_PANEL_VOL_UP :203, - KEY_PANEL_VOL_DOWN :204, - KEY_PANEL_ENTER :309, - KEY_PANEL_SOURCE :612, - KEY_PANEL_MENU :613, - KEY_PANEL_POWER :614, - - KEY_POWER :76, - KEY_VOL_UP :7, - KEY_VOL_DOWN :11, - KEY_CH_UP :68, - KEY_CH_DOWN :65, - KEY_MTS :655, - KEY_12 :1057, - KEY_AD :1039, - KEY_FF_ :1078, - KEY_REWIND_ :1080, - KEY_SLEEP :1097, - KEY_STEP :1023, - KEY_HOME :1118 - -}; - //--------------------------------------------------- // Live Play State Key Handler @@ -945,12 +989,14 @@ cLivePlayStateKeyHndl.prototype.handleKeyDown = function () { Player.stopVideo(); Display.setVideoList(Main.selectedVideo); Display.show(); + widgetAPI.blockNavigation(event); + break; case tvKey.KEY_PAUSE: Main.log("PAUSE"); break; - case tvKey.KEY_UP: +/* case tvKey.KEY_UP: case tvKey.KEY_PANEL_VOL_UP: case tvKey.KEY_VOL_UP: Main.log("VOL_UP"); @@ -967,7 +1013,7 @@ cLivePlayStateKeyHndl.prototype.handleKeyDown = function () { if(Main.mute == 0) Audio.setRelativeVolume(1); break; - +*/ default: this.defaultKeyHandler.handleDefKeyDown(keyCode); break; @@ -1020,7 +1066,7 @@ cMenuKeyHndl.prototype.handleKeyDown = function () { } break; - case tvKey.KEY_EXIT: +// case tvKey.KEY_EXIT: case tvKey.KEY_RETURN: case tvKey.KEY_PANEL_RETURN: if (Data.isRootFolder() == true) { @@ -1032,9 +1078,9 @@ cMenuKeyHndl.prototype.handleKeyDown = function () { Main.log("folderUp selectedVideo= " + Main.selectedVideo); Display.setVideoList(Main.selectedVideo); } - break; - + widgetAPI.blockNavigation(event); + break; case tvKey.KEY_DOWN: Main.log("DOWN"); Main.selectNextVideo(Main.DOWN); @@ -1069,7 +1115,29 @@ cSelectMenuKeyHndl.prototype.handleKeyDown = function () { Main.log(this.handlerName+": Key pressed: " + Main.getKeyCode(keyCode)); switch(keyCode) { - + case tvKey.KEY_1: + Main.log("KEY_1 pressed"); + this.select = 1; + Main.changeState (this.select); + break; + case tvKey.KEY_2: + Main.log("KEY_2 pressed"); + this.select = 2; + Main.changeState (this.select); + + break; + case tvKey.KEY_3: + Main.log("KEY_3 pressed"); + this.select = 3; + Main.changeState (this.select); + + break; + case tvKey.KEY_4: + Main.log("KEY_4 pressed"); + this.select = 4; + Main.changeState (this.select); + break; + case tvKey.KEY_ENTER: case tvKey.KEY_PLAY: case tvKey.KEY_PANEL_ENTER: @@ -1116,12 +1184,19 @@ cDefaulKeyHndl.prototype.handleDefKeyDown = function (keyCode) { switch(keyCode) { case tvKey.KEY_EXIT: - Main.log(this.handlerName +"Exit"); - Player.stopVideo(); - widgetAPI.sendReturnEvent(); + Main.log(this.handlerName +"Exit"); + if (Main.state != 0) { + Player.stopVideo(); + Main.changeState(0); + widgetAPI.blockNavigation(event); + } + else { + widgetAPI.sendReturnEvent(); + + } break; - case tvKey.KEY_VOL_UP: +/* case tvKey.KEY_VOL_UP: Main.log(this.handlerName + "VOL_UP"); Display.showVolume(); if(Main.mute == 0) @@ -1138,6 +1213,7 @@ cDefaulKeyHndl.prototype.handleDefKeyDown = function (keyCode) { Main.log(this.handlerName + "MUTE"); Main.muteMode(); break; +*/ default: Main.log(this.handlerName + "Unhandled key"); break; diff --git a/smarttv-client/Javascript/Player.js b/smarttv-client/Javascript/Player.js index 77f124c..ffdbf03 100755 --- a/smarttv-client/Javascript/Player.js +++ b/smarttv-client/Javascript/Player.js @@ -24,6 +24,9 @@ var Player = bufferState : 0, // buffer state in % + trickPlaySpeed : 1, // Multiple of 2 only. + trickPlayDirection : 1, + STOPPED : 0, PLAYING : 1, PAUSED : 2, @@ -153,16 +156,17 @@ Player.playVideo = function() { Display.showProgress(); this.state = this.PLAYING; -// if (this.plugin.InitPlayer(this.url) == false) -// Display.showPopup("InitPlayer returns false"); + if (this.plugin.InitPlayer(this.url) == false) + Display.showPopup("InitPlayer returns false"); Player.setBuffer(15000000.0); - + Player.ResetTrickPlay(); + Main.log ("StartPlayback for " + this.url); -// if (this.plugin.StartPlayback() == false) -// Display.showPopup("StartPlayback returns false"); + if (this.plugin.StartPlayback() == false) + Display.showPopup("StartPlayback returns false"); - this.plugin.Play( this.url ); +// this.plugin.Play( this.url ); Audio.plugin.SetSystemMute(false); } }; @@ -243,6 +247,71 @@ Player.skipBackwardVideo = function() { Display.showPopup("Jump Backward ret= " + ((res == true) ? "True" : "False")); }; +Player.fastForwardVideo = function() { + if (this.trickPlayDirection == 1) + this.trickPlaySpeed = this.trickPlaySpeed * 2; + else { + this.trickPlaySpeed = this.trickPlaySpeed / 2; + + if (this.trickPlaySpeed < 1) { + this.trickPlaySpeed = 1; + this.trickPlayDirection = -1; + } + + } + + Main.log("FastForward: Direction= " + ((this.trickPlayDirection == 1) ? "Forward": "Backward") + "trickPlaySpeed= " + this.trickPlaySpeed); + Main.logToServer("FastForward: Direction= " + ((this.trickPlayDirection == 1) ? "Forward": "Backward") + "trickPlaySpeed= " + this.trickPlaySpeed); + if (this.plugin.SetPlaybackSpeed(this.trickPlaySpeed * this.trickPlayDirection) == false) { + Display.showPopup("trick play returns false. Reset Trick-Play" ); + this.trickPlaySpeed = 1; + this.trickPlayDirection = 1; + } + +}; + +Player.RewindVideo = function() { + if (this.trickPlayDirection == 1) { + this.trickPlaySpeed = this.trickPlaySpeed / 2; + if (this.trickPlaySpeed < 1) { + this.trickPlaySpeed = 1; + this.trickPlayDirection = 1; + } + + } + else + this.trickPlaySpeed = this.trickPlaySpeed * 2; + + if (this.plugin.SetPlaybackSpeed(this.trickPlaySpeed * this.trickPlayDirection) == false) { + Display.showPopup("trick play returns false. Reset Trick-Play" ); + this.trickPlaySpeed = 1; + this.trickPlayDirection = 1; + } + + Main.log("Rewind: Direction= " + ((this.trickPlayDirection == 1) ? "Forward": "Backward") + "trickPlaySpeed= " + this.trickPlaySpeed); + Main.logToServer("Rewind: Direction= " + ((this.trickPlayDirection == 1) ? "Forward": "Backward") + "trickPlaySpeed= " + this.trickPlaySpeed); + if (this.plugin.SetPlaybackSpeed(this.trickPlaySpeed * this.trickPlayDirection) == false) { + Display.showPopup("trick play returns false. Reset Trick-Play" ); + this.trickPlaySpeed = 1; + this.trickPlayDirection = 1; + } + +}; + +Player.ResetTrickPlay = function() { + if (this.trickPlaySpeed != 1) { + this.trickPlaySpeed = 1; + this.trickPlayDirection = 1; + Main.log("Reset Trickplay " ); + if (this.plugin.SetPlaybackSpeed(this.trickPlaySpeed * this.trickPlayDirection) == false) { + Display.showPopup("trick play returns false. Reset Trick-Play" ); + this.trickPlaySpeed = 1; + this.trickPlayDirection = 1; + } + + } +}; + Player.getState = function() { return this.state; }; -- cgit v1.2.3