/******************************************************** * play an uri from a trackslist or the current playlist *********************************************************/ function playTrack(addtobottom) { showLoading(true); $('#popupTracks').popup('close'); $('#controlsmodal').popup('close'); //function playtrack(uri, playlisturi) { playlisturi = $('#popupTracks').data("list"); uri = $('#popupTracks').data("track"); var trackslist = new Array(); var track, tracksbefore, tracksafter; var tracks = getTracksFromUri(playlisturi); if (tracks) { if (!addtobottom) { mopidy.playback.stop(true); mopidy.tracklist.clear(); } $(CURRENT_PLAYLIST_TABLE).empty(); } else { tracks = currentplaylist; mopidy.playback.stop(true); for (var i = 0; i < tracks.length; i++) { if (tracks[i].uri == uri) { track = i + 1; break; } } for (var i = 0; i < track; i++) { mopidy.playback.next(); } mopidy.playback.play(); showLoading(false); return false; } if (addtobottom) { mopidy.tracklist.add(tracks); showLoading(false); return false; } // first add track to be played, then the other tracks for (var i = 0; i < tracks.length; i++) { if (tracks[i].uri == uri) { mopidy.tracklist.add(tracks.slice(i) ); mopidy.playback.play(); mopidy.tracklist.add(tracks.slice(0, i), 0); if (i songlength) { pos = songlength; pauseTimer(); } currentposition = pos; initgui = true; $("#trackslider").val(currentposition).slider('refresh'); initgui = oldval; $("#songelapsed").html(timeFromSeconds(currentposition / 1000)); } /******************** * Volume slider * Use a timer to prevent looping of commands */ function setVolume(value) { var oldval = initgui; initgui = true; $("#volumeslider").val(value).slider('refresh'); initgui = oldval; } function doVolume(value) { if (!initgui) { volumeChanging = true; clearInterval(volumeTimer); volumeTimer = setTimeout(triggerVolume, 2000); mopidy.playback.setVolume(parseInt(value)); } } function triggerVolume() { volumeChanging = false; } function doMute() { //only emit the event, not the status if (muteVolume == -1) { $("#mutebt").attr('src', 'images/icons/volume_mute_24x18.png'); muteVolume = currentVolume; mopidy.playback.setVolume(0).then(); } else { $("#mutebt").attr('src', 'images/icons/volume_24x18.png'); mopidy.playback.setVolume(muteVolume).then(); muteVolume = -1; } } /******* * Track timer */ //timer function to update interface function updateTimer() { currentposition += TRACK_TIMER; setPosition(currentposition); // $("#songelapsed").html(timeFromSeconds(currentposition / 1000)); } function resumeTimer() { pauseTimer(); posTimer = setInterval(updateTimer, TRACK_TIMER); } function initTimer() { pauseTimer(); // setPosition(0); resumeTimer(); } function pauseTimer() { clearInterval(posTimer); }