parent
08b5a8e62a
commit
d7243f5b3b
@ -0,0 +1,81 @@
|
|||||||
|
/*jslint laxbreak:true */
|
||||||
|
/*jslint laxcomma:true */
|
||||||
|
/*jslint loopfunc:true */
|
||||||
|
/*jslint strict:true */
|
||||||
|
/*jslint browser:true */
|
||||||
|
/*jslint devel:true */
|
||||||
|
/**
|
||||||
|
* TODO: If the user agrees, set the username/passs in a cookie
|
||||||
|
**/
|
||||||
|
define([
|
||||||
|
], function (
|
||||||
|
) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var MIMESClass = function() {};
|
||||||
|
|
||||||
|
MIMESClass.prototype.get = function (file) {
|
||||||
|
var fileExtension = '';
|
||||||
|
var dotPos = 0;
|
||||||
|
var audioType = undefined;
|
||||||
|
|
||||||
|
if ((dotPos = file.indexOf('.')) >= 0) {
|
||||||
|
fileExtension = file.substring(dotPos + 1);
|
||||||
|
} else {
|
||||||
|
fileExtension = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (fileExtension) {
|
||||||
|
// TODO: Add ogg/flac (video?)
|
||||||
|
case "mp3":
|
||||||
|
audioType = "audio/mpeg";
|
||||||
|
break;
|
||||||
|
case "au":
|
||||||
|
case "snd":
|
||||||
|
audioType = "audio/basic";
|
||||||
|
break;
|
||||||
|
case "wav":
|
||||||
|
audioType = "audio/x-wav";
|
||||||
|
break;
|
||||||
|
case "aif":
|
||||||
|
case "aifc":
|
||||||
|
audioType = "audio/aiff";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "m4a":
|
||||||
|
case "mp4":
|
||||||
|
case "mp4a":
|
||||||
|
audioType = "audio/mp4";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ogg":
|
||||||
|
case "oga":
|
||||||
|
audioType = "audio/ogg";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "flac":
|
||||||
|
audioType = "audio/flac";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "axa":
|
||||||
|
audioType = "audio/annodex";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "vorb":
|
||||||
|
audioType = "audio/vorbis";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "spx":
|
||||||
|
audioType = "audio/speex";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
console.info('Unknown type: ' + fileExtension);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return audioType;
|
||||||
|
};
|
||||||
|
|
||||||
|
return new MIMESClass();
|
||||||
|
});
|
@ -0,0 +1,18 @@
|
|||||||
|
define(["underscore","jquery","backbone","modules/webaudio","libs/mimes","text!../../templates/player/layout.html","text!../../templates/player/player-status.html"],function(e,g,h,d,a,f,b){if(!e.isFunction(Array.prototype.shuffle)){Array.prototype.shuffle=function(){var j=this.length,l=j;
|
||||||
|
if(j===0){return false;}while(l--){var m=parseInt(Math.random()*j,10);var k=this[l];this[l]=this[m];this[m]=k;}};}var c=h.View.extend({elViewport:null,$elViewport:null,$elVolumeInput:null,playIndex:[],playCursor:0,webAudio:null,_stateRandom:null,_stateRepeat:null,_stateMute:null,_stateVolume:null,_stateAudio:null,_state:null,_states:{stopped:0,loading:1,playing:2,paused:3},events:{"click div:first-child > a.buttonPrev":"__buttonPrevious","click div:first-child > a.buttonNext":"__buttonNext","click div:first-child > a.buttonPlay":"__buttonPlayPause","click div:first-child > .playerVolumeWrapper > a:first-child":"__buttonVolumeDown","click div:first-child > .playerVolumeWrapper > a:last-child":"__buttonVolumeUp","click div:first-child > .playerVolumeWrapper > input":"__buttonVolumeClick","click div:last-child > .playerProgressWrapper > progress":"__buttonSeek"},initialize:function(i){var j=this;
|
||||||
|
e.bindAll(this,"init","setPlayIndex","sortPlayIndex","setRandomState","setRepeatState","playItem","__buttonPlayPause","__buttonNext","__buttonPrevious","__buttonVolumeUp","__buttonVolumeDown","__buttonVolumeClick","__buttonSeek","_waCreate","_waBindEvents","__waStateChanged","_playerEnded","_playerLoading","_playNext","_playPrevious","_playerPause","_playerStop","_playerStart","_setVolume","_getItemData","_getItemMediaUrl","_setViewport","_updateViewportProgress");
|
||||||
|
c.__super__.initialize.apply(j);j.$el.html(f);j.elViewport=document.createElement("div");j.$elViewport=g(j.elViewport);j.$elViewport.html(e.template(b)({}));
|
||||||
|
j.$elVolumeInput=j.$el.find(".playerVolumeWrapper > input");j.$el.append(j.elViewport);j._waCreate();return j;},init:function(){var i=this;i.$el.find(".disabled").removeClass("disabled");
|
||||||
|
i.$el.find("[disabled]").removeAttr("disabled");i.$elVolumeInput.val(i.webAudio.obj.volume);},setPlayIndex:function(i,k){var j=this;j._playIndex=i;j._playCursor=k||0;
|
||||||
|
if(j._stateRandom){j.setRandomState(j._stateRandom);}return j._playIndex;},sortPlayIndex:function(i){var j=this;},setRandomState:function(j){var i=this;
|
||||||
|
if(j===true){i._playIndex.shuffle();}return i._stateRandom=j;},setRepeatState:function(j){var i=this;return i._stateRepeat=j;},playItem:function(j){var i=this;
|
||||||
|
i.webAudio.loadMedia(i._getItemMediaUrl(j),a.get(j.type));},__buttonPlayPause:function(j){var i=this;},__buttonNext:function(j){var i=this;},__buttonPrevious:function(j){var i=this;
|
||||||
|
},__buttonVolumeUp:function(k){var j=this,i=j._getVolume();if(i<1){if((i+0.1)>1){i=1;}else{i+=0.1;}}j._setVolume(i);},__buttonVolumeDown:function(k){var j=this,i=j._getVolume();
|
||||||
|
if(i>0){if((i-0.1)<0){i=0;}else{i-=0.1;}}j._setVolume(i);},__buttonVolumeClick:function(m){var l=this,k=m.clientX,n=m.target.offsetLeft,i=k-n,j=i/m.target.offsetWidth;
|
||||||
|
l._setVolume(j);},__buttonSeek:function(n){var m=this,l=m._getItem(),k=n.clientX,o=n.target.offsetLeft,i=k-o,j=i/n.target.offsetWidth,p=(j*(l.daap_songtime/1000));
|
||||||
|
m._seek(p);},_waCreate:function(){var i=this;i.webAudio=new d();i._waBindEvents();return i.webAudio;},_waBindEvents:function(){},__waStateChanged:function(){var i=this;
|
||||||
|
},_playerEnded:function(){var i=this;},_playerLoading:function(){var i=this;},_playNext:function(){var i=this;},_playPrevious:function(){var i=this;},_playerPause:function(){var i=this;
|
||||||
|
},_playerStop:function(){var i=this;},_playerStart:function(){var i=this;},_getVolume:function(){var i=this;return i.webAudio.obj.volume;},_setVolume:function(j){var i=this;
|
||||||
|
i.$elVolumeInput.val(j);return i.webAudio.obj.volume=j;},_seek:function(i){var j=this;console.debug("Seeking player to "+i);j.webAudio.obj.pause();j.webAudio.obj.currentTime=i;
|
||||||
|
j.webAudio.obj.play();},_getItemData:function(j){var i=this;},_getItemMediaUrl:function(j){var i=this;return i.options.servers.get(j.hostname).client.urlMedia(j.id,j.type,j.dbId);
|
||||||
|
},_setViewport:function(j){var i=this;},_updateViewportProgress:function(i,k){var j=this;}});return c;});
|
Loading…
Reference in new issue