A fix for TIVI-2514, blank items in the list index. Checks that the album image... 50/14250/1 accepted/tizen/ivi/release accepted/tizen/ivi/20131231.184056 accepted/tizen/ivi/release/20140108.213210 submit/tizen/20131230.234325 submit/tizen/20140108.022343 submit/tizen/20140108.023259 submit/tizen_ivi_release/20140108.025212 submit/tizen_ivi_release/20140108.025454
authorbrianjjones <brian.j.jones@intel.com>
Mon, 30 Dec 2013 23:36:08 +0000 (15:36 -0800)
committerbrianjjones <brian.j.jones@intel.com>
Mon, 30 Dec 2013 23:37:04 +0000 (15:37 -0800)
Change-Id: Iab43396216bd2d57706c19ca74adff792c106aab
Signed-off-by: brianjjones <brian.j.jones@intel.com>
LICENSE.Apache-2.0 [changed mode: 0755->0644]
js/audioPlayer.js
js/main.js
js/player.js
js/videoPlayer.js

old mode 100755 (executable)
new mode 100644 (file)
index 2397a49..5a5dafd 100644 (file)
@@ -385,6 +385,9 @@ AudioPlayer.prototype.makeListItem = function(j, k)
 
     for (var i = j; (i < (j+k) && i < this.content.length); i++)
     {
+               if (typeof this.content[i].title !== "string")
+                       this.content[i].title = "Unknown";
+
            //Check if album art is done loading, if not draw default until it is
             if (this.content[i].artists === undefined)
             {
@@ -392,10 +395,13 @@ AudioPlayer.prototype.makeListItem = function(j, k)
                this.content[i].artists[0] = "Unknown";
             }
 
-            var trackText = {"text" : this.content[i].title, "xLoc" : canvasH + 20, "yLoc" : canvasH / 2.5 , "zLoc" : 0};
-         var artistText = {"text" : this.content[i].artists[0], "xLoc" : canvasH + 20, "yLoc" : canvasH / 1.1 , "zLoc" : 0};
+            else if (typeof this.content[i].artists[0] !== "string")
+                       this.content[i].artists[0] = "Unknown";
+
+           var trackText = {"text" : this.content[i].title, "xLoc" : canvasH + 20, "yLoc" : canvasH / 2.5 , "zLoc" : 0};
+           var artistText = {"text" : this.content[i].artists[0], "xLoc" : canvasH + 20, "yLoc" : canvasH / 1.1 , "zLoc" : 0};
 
-           if (this.content[i].coverArt && this.content[i].coverArt.complete)
+           if (this.content[i].coverArt && this.content[i].coverArt.complete && (this.content[i].coverArt.naturalWidth !== 0 || this.content[i].coverArt.naturalHeight !== 0) )
                this.makeListBar(this.content[i].coverArt, i, artistText, trackText);
            else
                this.makeListBar(musicIcon, i, artistText, trackText);
index 243005a..3f27f62 100644 (file)
@@ -65,10 +65,10 @@ var mediaTextTemplate3 = {"font" : "bold 20pt Arial", "lineWidth" : 3.0, "fillSt
 
 var trackTextTemplate  = {"font" : "bold 16pt Arial", "lineWidth" : 3.0, "fillStyle" : "white", "strokeStyle" : "black", "textAlign" : "left"};
 
-var mediaTextTemplate2Landscape = {"font" : "bold 15pt Arial", "lineWidth" : 10.0, "fillStyle" : "white", "strokeStyle" : "rgba(0, 0, 0, 1.0)", "textAlign" : "left",
+var mediaTextTemplate2Landscape = {"font" : "bold 13pt Arial", "lineWidth" : 10.0, "fillStyle" : "white", "strokeStyle" : "rgba(0, 0, 0, 1.0)", "textAlign" : "left",
                "shadowOffsetX" : 0, "shadowOffsetY" : 0, "shadowBlur" : 0, "shadowColor" : "rgba(0, 0, 0, 1.0)"};
 
-var mediaTextTemplate3Landscape = {"font" : "bold 15pt Arial", "lineWidth" : 3.0, "fillStyle" : "white", "strokeStyle" : "rgba(100, 0, 0, 1.0)", "textAlign" : "left"};
+var mediaTextTemplate3Landscape = {"font" : "bold 13pt Arial", "lineWidth" : 3.0, "fillStyle" : "white", "strokeStyle" : "rgba(100, 0, 0, 1.0)", "textAlign" : "left"};
 
 var trackTextTemplateLandscape  = {"font" : "bold 11pt Arial", "lineWidth" : 3.0, "fillStyle" : "white", "strokeStyle" : "black", "textAlign" : "left"};
 
@@ -201,8 +201,13 @@ function getMedia(callback, filterType)
 {
        console.log("MediaPlayer in getMedia");
        var manager = tizen.content;
-       var filter = new tizen.AttributeFilter("type", "EXACTLY", filterType);
-       manager.find(callback, onError, null, filter);
+       if (manager)
+       {
+               var filter = new tizen.AttributeFilter("type", "EXACTLY", filterType);
+               manager.find(callback, onError, null, filter);
+       }
+       else
+               console.log("MediaPlayer failed to receive media, tizen.content is unavailable");
 }
 
 function showMediaMenu()
@@ -601,7 +606,7 @@ function init()
                console.log("MediaPlayer: Speech Recognition not running, voice control will be unavailable");
                 speechObj = {
                     vocalizeString: function(item) { console.log(item); }
-                }; 
+                };
         }
 
        audioPlayer = new MediaPlayer("audio");
index d6867b7..3675222 100644 (file)
@@ -107,56 +107,48 @@ MediaPlayer.prototype.emptyTimeouts = function()
 
 MediaPlayer.prototype.makeListBar = function(icon, i, artistTextObj, trackTextObj)
 {
-       var lightColor = "";
-       var canvasW = mediaListItemW;
-       var canvasH = mediaListItemH * 0.95 ;
+       var lightColor = (i+1)%2 !== 0 ? "lightColor " : "";
+       var nightColor = nightMode ? "night" : "";
+       var canvasW = Math.floor(mediaListItemW);
+       var canvasH = Math.floor(mediaListItemH * 0.95) ;
 
-       if ((i+1)%2 !== 0)
-       {
-               lightColor = "lightColor ";
-       }
-
-       if (nightMode)
-       {
-               this.mediaListItems.append("<li id=" + this.type + "ListItem" + i + " style='width:" + mediaListItemW + "px;" + " height:" +  mediaListItemH + "px;" +
-                       " margin-bottom: 10px' ><a href='#' class='" + lightColor + "night' >" +
-                       "<canvas id=" + this.type + "CanvasNum" + i + " width=" + canvasW + " height=" + canvasH + "> </canvas>" +
-                       "</a></li>"
-               );
-        }
-       else
-       {
-               this.mediaListItems.append("<li id=" + this.type + "ListItem" + i + " style='width:" + mediaListItemW + "px;" + " height:" +  mediaListItemH + "px;" +
-                       " margin-bottom: 10px' ><a href='#' class='" + lightColor + "night' >" +
-                       "<canvas id=" + this.type + "CanvasNum" + i + " width=" + canvasW + " height=" + canvasH + "> </canvas>" +
-                       "</a></li>"
-               );
-       }
+       this.mediaListItems.append("<li id=" + this.type + "ListItem" + i + " style='width:" + mediaListItemW + "px;" + " height:" +  mediaListItemH + "px;" +
+               " margin-bottom: 10px' ><a href='#' class='" + lightColor + nightColor + "' >" +
+               "<canvas id=" + this.type + "CanvasNum" + i + " width=" + canvasW + " height=" + canvasH + "> </canvas>" +
+               "</a></li>"
+       );
 
        try
        {
                var currentCanvas = document.getElementById(this.type + "CanvasNum" + i);
                var currentCTX = currentCanvas.getContext("2d");
 
-               this.content[i].ctx = currentCTX;
-
-               currentCTX.drawImage(icon, 0, 0, canvasH, canvasH );
-               var artistText = new TextObject(currentCTX,artistTextObj);
-               var trackText = new TextObject(currentCTX,trackTextObj);
-               var mediaTextTemp1 = screenOrientation === "portrait" ? mediaTextTemplate2 : mediaTextTemplate2Landscape;
-               var mediaTextTemp2 = screenOrientation === "portrait" ? mediaTextTemplate3 : mediaTextTemplate3Landscape;
-               var trackTextTemp = screenOrientation === "portrait" ? trackTextTemplate : trackTextTemplateLandscape;
-
-               trackText.applyTemplate(mediaTextTemp1);
-               trackText.drawObj();
-               trackText.applyTemplate(mediaTextTemp2);
-               trackText.drawObj();
-               artistText.applyTemplate(trackTextTemp);
-               artistText.drawObj();
+               if (currentCanvas && currentCTX)
+               {
+                       this.content[i].ctx = currentCTX;
+
+                       currentCTX.drawImage(icon, 0, 0, canvasH, canvasH );
+                       var artistText = new TextObject(currentCTX,artistTextObj);
+                       var trackText = new TextObject(currentCTX,trackTextObj);
+                       var trackTextTemp1 = screenOrientation === "portrait" ? mediaTextTemplate2 : mediaTextTemplate2Landscape;
+                       var trackTextTemp2 = screenOrientation === "portrait" ? mediaTextTemplate3 : mediaTextTemplate3Landscape;
+                       var artistTextTemp = screenOrientation === "portrait" ? trackTextTemplate : trackTextTemplateLandscape;
+
+                       trackText.applyTemplate(trackTextTemp1);
+                       trackText.drawObj();
+                       trackText.applyTemplate(trackTextTemp2);
+                       trackText.drawObj();
+                       artistText.applyTemplate(artistTextTemp);
+                       artistText.drawObj();
+               }
+               else
+                       console.log("MediaPlayer: Failed to draw media item for index " + i );
        }
        catch(err)
        {
            console.log("MediaPlayer: drawImage failed for " + this.type + " - reason -> " + err);
+           console.log("Source below");
+           console.log("Src = " + icon.src);
        }
 }
 
index fef2111..333aedc 100644 (file)
@@ -149,6 +149,16 @@ VideoPlayer.prototype.makeListItem = function(j, k)
 
        for (var i = j; (i < (j+k) && i < this.content.length); i++)
        {
+
+               if (this.content[i].artists === undefined)
+           {
+               this.content[i].artists = new Array();
+               this.content[i].artists[0] = "Unknown";
+           }
+
+           else if (typeof this.content[i].artists[0] !== "string")
+                       this.content[i].artists[0] = "Unknown";
+
                var artistText = {"text" : this.content[i].artists[0], "xLoc" : canvasH + 20, "yLoc" : canvasH / 2.5 , "zLoc" : 0};
                var trackText = {"text" : this.content[i].title, "xLoc" : canvasH + 20, "yLoc" : canvasH / 1.1 , "zLoc" : 0};