123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.av.widget.Status"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.av.widget.Status"] = true;
- dojo.provide("dojox.av.widget.Status");
- dojo.require("dijit._Widget");
- dojo.require("dijit._Templated");
- dojo.declare("dojox.av.widget.Status", [dijit._Widget, dijit._Templated], {
- // summary:
- // A Status widget to use with dojox.av.widget.Player
- //
- // description:
- // Displays the name of the media file, and it's current status
- // (playing, paused, buffering, etc.) in the middle. Displays
- // the playhead time on the left and the duration on the right.
- //
- templateString: dojo.cache("dojox.av.widget", "resources/Status.html", "<table class=\"Status\">\n <tr>\n <td class=\"Time\"><span dojoAttachPoint=\"timeNode\">0.00</span></td>\n <td class=\"Status\"><div dojoAttachPoint=\"titleNode\">Loading...</div></td>\n <td class=\"Duration\"><span dojoAttachPoint=\"durNode\">0.00</span></td>\n </tr>\n</table>\n"),
-
- setMedia: function(/* Object */med){
- // summary:
- // A common method to set the media in all Player widgets.
- // May do connections and initializations.
- //
- this.media = med;
- dojo.connect(this.media, "onMetaData", this, function(data){
- this.duration = data.duration;
- this.durNode.innerHTML = this.toSeconds(this.duration);
- });
- dojo.connect(this.media, "onPosition", this, function(time){
- this.timeNode.innerHTML = this.toSeconds(time);
- });
-
- var cons = ["onMetaData", "onPosition", "onStart", "onBuffer", "onPlay", "onPaused", "onStop", "onEnd", "onError", "onLoad"];
- dojo.forEach(cons, function(c){
- dojo.connect(this.media, c, this, c);
- }, this);
-
- },
- onMetaData: function(data){
- this.duration = data.duration;
- this.durNode.innerHTML = this.toSeconds(this.duration);
- if(this.media.title){
- this.title = this.media.title;
- }else{
- var a = this.media.mediaUrl.split("/");
- var b = a[a.length-1].split(".")[0];
- this.title = b;
- }
- },
- onBuffer: function(isBuffering){
- this.isBuffering = isBuffering;
- console.warn("status onBuffer", this.isBuffering);
- if(this.isBuffering){
- this.setStatus("buffering...");
- }else{
- this.setStatus("Playing");
- }
- },
- onPosition:function(time){
- //console.log("onPosition:", time)
- // this.timeNode.innerHTML = this.toSeconds(time);
- },
- onStart: function(){
- this.setStatus("Starting");
- },
- onPlay: function(){
- this.setStatus("Playing");
- },
- onPaused: function(){
- this.setStatus("Paused");
- },
- onStop: function(){
- this.setStatus("Stopped");
- },
- onEnd: function(){
- this.setStatus("Stopped");
- },
- onError: function(evt){
- console.log("status error:", evt)
- var msg = evt.info.code;
- if(msg == "NetStream.Play.StreamNotFound"){
- msg = "Stream Not Found"
- }
- this.setStatus("ERROR: "+ msg, true);
- },
- onLoad: function(){
- this.setStatus("Loading...");
- },
-
- setStatus: function(str, isError){
- if(isError){
- dojo.addClass(this.titleNode, "statusError");
- }else{
- dojo.removeClass(this.titleNode, "statusError");
- if(this.isBuffering){
- str = "buffering...";
- }
- }
- //console.log(this.titleNode, "title:",this.title, "str:",str)
- this.titleNode.innerHTML = '<span class="statusTitle">'+this.title+'</span> <span class="statusInfo">'+str+'</span>';
- },
-
- toSeconds: function(time){
- var ts = time.toString()
- if(ts.indexOf(".")<0){
- ts += ".00"
- }else if(ts.length - ts.indexOf(".")==2){
- ts+="0"
- }else if(ts.length - ts.indexOf(".")>2){
- ts = ts.substring(0, ts.indexOf(".")+3)
- }
- return ts;
- }
-
- });
- }
|