]> source.dussan.org Git - nextcloud-server.git/commitdiff
playlist working
authorCôme BERNIGAUD <come.bernigaud@laposte.net>
Thu, 25 Aug 2011 18:37:51 +0000 (20:37 +0200)
committerCôme BERNIGAUD <come.bernigaud@laposte.net>
Thu, 25 Aug 2011 18:37:51 +0000 (20:37 +0200)
apps/media/js/player.js

index b3beed8c3b9e000af6feec9603ed23717872f229..7581c27393f3489329bebf4904507047d9db12a3 100644 (file)
@@ -5,10 +5,8 @@ var PlayList={
        player:null,
        volume:0.8,
        active:false,
-       tempPlaylist:[],
-       isTemp:true,
        next:function(){
-               var items=(PlayList.isTemp)?PlayList.tempPlaylist:PlayList.items;
+               var items=PlayList.items;
                var next=PlayList.current+1;
                if(next>=items.length){
                        next=0;
@@ -17,7 +15,7 @@ var PlayList={
                PlayList.render();
        },
        previous:function(){
-               var items=(PlayList.isTemp)?PlayList.tempPlaylist:PlayList.items;
+               var items=PlayList.items;
                var next=PlayList.current-1;
                if(next<0){
                        next=items.length-1;
@@ -26,7 +24,7 @@ var PlayList={
                PlayList.render();
        },
        play:function(index,time,ready){
-               var items=(PlayList.isTemp)?PlayList.tempPlaylist:PlayList.items;
+               var items=PlayList.items;
                if(index==null){
                        index=PlayList.current;
                }
@@ -34,8 +32,11 @@ var PlayList={
                        PlayList.current=index;
                        if(PlayList.player){
                                if(PlayList.player.data('jPlayer').options.supplied!=items[index].type){//the the audio type changes we need to reinitialize jplayer
+                                       PlayList.player.jPlayer("play",time);
+                    localStorage.setItem(oc_current_user+'oc_playlist_time',time);
                                        PlayList.player.jPlayer("destroy");
-                                       PlayList.init(items[index].type,function(){PlayList.play(null,time,ready)});
+                    PlayList.save(); // so that the init don't lose the playlist
+                                       PlayList.init(items[index].type,null); // init calls load that calls play
                                }else{
                                        PlayList.player.jPlayer("setMedia", items[PlayList.current]);
                                        items[index].playcount++;
@@ -60,7 +61,10 @@ var PlayList={
                                        }
                                }
                        }else{
-                               PlayList.init(items[index].type,PlayList.play);
+                               localStorage.setItem(oc_current_user+'oc_playlist_time',time);
+                               localStorage.setItem(oc_current_user+'oc_playlist_playing','true');
+                PlayList.save(); // so that the init don't lose the playlist
+                               PlayList.init(items[index].type,null); // init calls load that calls play
                        }
                }
        },
@@ -100,37 +104,30 @@ var PlayList={
                        swfPath:OC.linkTo('media','js'),
                });
        },
-       add:function(song,temp,dontReset){
+       add:function(song,dontReset){
                if(!dontReset){
-                       PlayList.tempPlaylist=[];//clear the temp playlist
+                       PlayList.items=[];//clear the playlist
                }
-               PlayList.isTemp=temp;
-               PlayList.isTemp=true;
                if(!song){
                        return;
                }
                if(song.substr){//we are passed a string, asume it's a url to a song
-                       PlayList.addFile(song,temp,true);
+                       PlayList.addFile(song,true);
                }
                if(song.albums){//a artist object was passed, add all albums inside it
                        $.each(song.albums,function(index,album){
-                               PlayList.add(album,temp,true);
+                               PlayList.add(album,true);
                        });
-               }
-               if(song.songs){//a album object was passed, add all songs inside it
+               } else if(song.songs){//a album object was passed, add all songs inside it
                        $.each(song.songs,function(index,song){
-                               PlayList.add(song,temp,true);
+                               PlayList.add(song,true);
                        });
                }
                if(song.path){
                        var type=musicTypeFromFile(song.path);
                        var item={name:song.name,type:type,artist:song.artist,album:song.album,length:song.length,playcount:song.playCount};
                        item[type]=PlayList.urlBase+encodeURIComponent(song.path);
-                       if(PlayList.isTemp){
-                               PlayList.tempPlaylist.push(item);
-                       }else{
-                               PlayList.items.push(item);
-                       }
+            PlayList.items.push(item);
                }
        },
        addFile:function(path){
@@ -145,6 +142,7 @@ var PlayList={
                PlayList.items.push(item);
        },
        remove:function(index){
+        alert('remove');
                PlayList.items.splice(index,1);
                PlayList.render();
        },
@@ -160,10 +158,14 @@ var PlayList={
                if(typeof localStorage !== 'undefined' && localStorage){
                        localStorage.setItem(oc_current_user+'oc_playlist_items',JSON.stringify(PlayList.items));
                        localStorage.setItem(oc_current_user+'oc_playlist_current',PlayList.current);
-                       var time=Math.round(PlayList.player.data('jPlayer').status.currentTime);
-                       localStorage.setItem(oc_current_user+'oc_playlist_time',time);
-                       var volume=PlayList.player.data('jPlayer').options.volume*100;
-                       localStorage.setItem(oc_current_user+'oc_playlist_volume',volume);
+            if(PlayList.player) {
+                if(PlayList.player.data('jPlayer')) {
+                    var time=Math.round(PlayList.player.data('jPlayer').status.currentTime);
+                    localStorage.setItem(oc_current_user+'oc_playlist_time',time);
+                    var volume=PlayList.player.data('jPlayer').options.volume*100;
+                    localStorage.setItem(oc_current_user+'oc_playlist_volume',volume);
+                }
+            }
                        if(PlayList.active){
                                localStorage.setItem(oc_current_user+'oc_playlist_active','false');
                        }