MediaPlayer will now remember where the user was on restart. Also able to reconnect...
[profile/ivi/MediaPlayer.git] / js / main.js
index 0fd3eb6..cb947db 100644 (file)
@@ -25,6 +25,8 @@ var currentPlayerType = "AUDIO";
 var currentMediaList = $("#audioMediaList");
 var currentMediaListItems = $("#audioMediaListItems");
 var currentPlayerControls;
+var audioPlayerControls;
+var videoPlayerControls;
 var audioMediaListLoaded = false;
 var videoMediaListLoaded = false;
 var imageMediaListLoaded = false;
@@ -41,6 +43,9 @@ var mediaListItemW;
 var mediaListItemH;
 var imageControls;
 var loadAndPlay = false;
+var loadPrevAudio = false;
+var loadPrevVideo = false;
+var playOnConnect = false;
 var currentFileLoaded = false;
 var mediaNameCanvas;
 var mediaNameCTX;
@@ -48,6 +53,7 @@ var speechObj;
 var nightMode = false;
 var waitingToResumeVideo = false;              //Media has been paused by exterior forces.  If set to true, resume previous media when given the signal.
 var stopServerSearch;
+var clearAudioTimeInterval, clearVideoTimeInterval;
 
 var mainMenuTitleTemplateLandscape = {"font" : "oblique bolder 30pt arial", "lineWidth" : 9.5, "fillStyle" : "black", "strokeStyle" : "white", "textAlign" : "left",
                "largeShadow" : 8, "shadowOffsetX" : 0, "shadowOffsetY" : 0, "shadowBlur" : 45, "shadowColor" : "rgba(255, 187, 0, 0.4)"};
@@ -234,8 +240,28 @@ function onContentItemArraySuccess(content)
                                {
                                        audioContent = audioContent.concat(content);
 
-                                       $("#audioSrc").attr("src", audioContent[0].contentURI);
-                                       audioPlayer.load();
+                                       if (localStorage.prevAudioTrack)
+                                       {
+                                               for (var i = 0; i < audioContent.length; i++)
+                                               {
+
+                                                       if (audioContent[i].contentURI === localStorage.prevAudioTrack)
+                                                       {
+
+                                                               audioIndex = i;
+                                                       loadPrevAudio = true;
+                                                       $("#audioSrc").attr("src", audioContent[audioIndex].contentURI);
+                                                       audioPlayer.load();
+                                                       break;
+                                                       }
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $("#audioSrc").attr("src", audioContent[0].contentURI);
+                                               localStorage.prevAudioTrack = audioContent[0].contentURI;
+                                               audioPlayer.load();
+                                       }
 
                                        var imgSources = [];
                                        for (var i = 0; i < audioContent.length; i++)
@@ -264,7 +290,28 @@ function onContentItemArraySuccess(content)
                if (!emptyContent)
                {
                        videoContent = videoContent.concat(content);
-                       $("#videoSrc").attr("src", videoContent[0].contentURI);
+
+                       if (localStorage.prevVideo)
+                       {
+                               for (var i = 0; i < videoContent.length; i++)
+                               {
+                                       if (videoContent[i].contentURI === localStorage.prevVideo)
+                                       {
+                                               videoIndex = i;
+                                               loadPrevVideo = true;
+                                               $("#videoSrc").attr("src", videoContent[videoIndex].contentURI);
+                                               videoPlayer.load();
+
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               $("#videoSrc").attr("src", videoContent[0].contentURI);
+                               localStorage.prevVideo = videoContent[0].contentURI;
+                               videoPlayer.load();
+                       }
+
                }
                contentType = "IMAGE";
                break;
@@ -281,7 +328,7 @@ function onContentItemArraySuccess(content)
 
        default:
                console.log("Undefined content search type");
-       nextContentType = undefined;
+               nextContentType = undefined;
        break;
        }
 
@@ -418,8 +465,6 @@ function changeMenu(menuButtonId)
                        if (!videoMediaListLoaded)
                                fillMediaList(currentContent);
 
-                        $("#videoPlayer").load();
-
                        showMediaMenu();
                break;
 
@@ -448,6 +493,12 @@ function showMainMenu()
 {
        console.log("MediaPlayer in showMainMenu");
        currentMenu = "main";
+
+       if (!currentPlayerControls.paused && currentPlayerType === "AUDIO")
+               clearInterval(clearAudioTimeInterval);
+       else if (!currentPlayerControls.paused && currentPlayerType === "VIDEO")
+               clearInterval(clearVideoTimeInterval);
+
        currentPlayerControls.pause();
 
        //If the media list is showing, hide it.  Remove the mediaListAudioList class if it exists so that it will resize properly
@@ -554,8 +605,42 @@ function playLoadedMedia()
        if (loadAndPlay)
        {
                currentPlayerControls.play();
+               clearAudioTimeInterval = setInterval(
+                       function(){
+                               if (localStorage.prevAudioTime === audioPlayerControls.currentTime)
+                               {
+                                       stallCounter++;
+
+                                       if (stallCounter > 10)
+                                       {
+                                               //Remote media has stalled, attempt to reconnect
+                                               playOnConnect = true;
+                                               tizen.mediaserver.scanNetwork(reconnectServer);
+                                       }
+                               }
+
+                               localStorage.prevAudioTime = audioPlayerControls.currentTime;
+                               },500);
+
+               if (audioContent[audioIndex].remoteFile)
+                       stallCounter = 0;
+
                loadAndPlay = false;
        }
+       else if (loadPrevAudio)
+       {
+               audioPlayerControls.currentTime = localStorage.prevAudioTime;
+               loadPrevAudio = false;
+       }
+}
+
+function videoLoaded()
+{
+        if (loadPrevVideo)
+        {
+               videoPlayerControls.currentTime = localStorage.prevVideoTime;
+               loadPrevVideo = false;
+        }
 }
 
 function playButtonClick()
@@ -565,11 +650,28 @@ function playButtonClick()
        {
                if (currentPlayerControls.paused)
                {
+
+                       if (loadAndPlay)
+                               currentPlayerControls.currentTime = localStorage.prevAudioTime;
+
+                       loadAndPlay = false;
                        currentPlayerControls.play();
+
+                       //Start tracking the current time of the media.  This is used to play from previous position on restart.
+                       if (currentPlayerType === "AUDIO")
+                               clearAudioTimeInterval = setInterval(function(){localStorage.prevAudioTime = currentPlayerControls.currentTime},500);
+                       else if (currentPlayerType === "VIDEO")
+                               clearVideoTimeInterval = setInterval(function(){localStorage.prevVideoTime = currentPlayerControls.currentTime},500);
+
                }
                else
                {
                        currentPlayerControls.pause();
+
+                       if (currentPlayerType === "AUDIO")
+                               clearInterval(clearAudioTimeInterval);
+                       else if (currentPlayerType === "VIDEO")
+                               clearInterval(clearVideoTimeInterval);
                }
        }
        else
@@ -603,6 +705,8 @@ function backButtonClick()
 
                        $("#audioSrc").attr("src", audioContent[audioIndex].contentURI);
                        updateMediaName(audioContent[audioIndex].artists[0], audioContent[audioIndex].title, audioContent[audioIndex].coverArt);
+
+                       localStorage.prevAudioTrack = audioContent[audioIndex].contentURI;
                        audioPlayer.load();
                }
                break;
@@ -658,6 +762,8 @@ function nextButtonClick()
                        audioPlayer.pause();
 
                        $("#audioSrc").attr("src", audioContent[audioIndex].contentURI);
+
+                       localStorage.prevAudioTrack = audioContent[audioIndex].contentURI;
                        updateMediaName(audioContent[audioIndex].artists[0], audioContent[audioIndex].title, audioContent[audioIndex].coverArt);
                        audioPlayer.load();
                }
@@ -850,6 +956,9 @@ function init()
        imgIcon.src = "images/imageIcon.png";
        imageControls = new ImageControls();
 
+       audioPlayerControls = document.getElementById("audioPlayer");
+       videoPlayerControls = document.getElementById("videoPlayer");
+
        mediaNameCanvas = document.getElementById("mediaName");
        mediaNameCTX = mediaNameCanvas.getContext("2d");