mirror of
https://github.com/SuperBFG7/ympd
synced 2025-01-14 19:25:49 +00:00
Fixed actions and http stream update
This commit is contained in:
parent
afe9054b58
commit
332855bcf4
@ -23,6 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
var socket;
|
var socket;
|
||||||
|
var last_song = '';
|
||||||
var last_state;
|
var last_state;
|
||||||
var last_outputs;
|
var last_outputs;
|
||||||
var current_song = new Object();
|
var current_song = new Object();
|
||||||
@ -119,7 +120,7 @@ app.route=function() {
|
|||||||
app.prepare();
|
app.prepare();
|
||||||
|
|
||||||
if (app.current.app == 'Playback') {
|
if (app.current.app == 'Playback') {
|
||||||
//Do nothing
|
socket.send('MPD_API_GET_CURRENT_SONG');
|
||||||
}
|
}
|
||||||
else if (app.current.app == 'Queue' ) {
|
else if (app.current.app == 'Queue' ) {
|
||||||
if (app.last.app != app.current.app) {
|
if (app.last.app != app.current.app) {
|
||||||
@ -346,21 +347,21 @@ function webSocketConnect() {
|
|||||||
if ( isTouch ) {
|
if ( isTouch ) {
|
||||||
$('#QueueList > tbody > tr > td:last-child').append(
|
$('#QueueList > tbody > tr > td:last-child').append(
|
||||||
'<a class="pull-right btn-group-hover color-darkgrey" href="#/Queue!' + app.current.page + '/'+app.current.filter+'/'+app.current.search + '" '+
|
'<a class="pull-right btn-group-hover color-darkgrey" href="#/Queue!' + app.current.page + '/'+app.current.filter+'/'+app.current.search + '" '+
|
||||||
'onclick="delQueueSong($(this).parents(\'tr\'));">' +
|
'onclick="delQueueSong($(this).parents(\'tr\'),event);">' +
|
||||||
'<span class="material-icons">delete</span></a>');
|
'<span class="material-icons">delete</span></a>');
|
||||||
} else {
|
} else {
|
||||||
$('#QueueList > tbody > tr').on({
|
$('#QueueList > tbody > tr').on({
|
||||||
mouseover: function(){
|
mouseover: function(){
|
||||||
var doomed = $(this);
|
var doomed = $(this);
|
||||||
if ( $('#btntrashmodeup').hasClass('btn-success') )
|
if ( $('#btntrashmodeup').hasClass('btn-success') )
|
||||||
doomed = $('#queueList > tbody > tr:lt(' + ($(this).index() + 1) + ')');
|
doomed = $('#QueueList > tbody > tr:lt(' + ($(this).index() + 1) + ')');
|
||||||
if ( $('#btntrashmodedown').hasClass('btn-success') )
|
if ( $('#btntrashmodedown').hasClass('btn-success') )
|
||||||
doomed = $('#queueList > tbody > tr:gt(' + ($(this).index() - 1) + ')');
|
doomed = $('#QueueList > tbody > tr:gt(' + ($(this).index() - 1) + ')');
|
||||||
$.each(doomed, function(){
|
$.each(doomed, function(){
|
||||||
if($(this).children().last().has('a').length == 0)
|
if($(this).children().last().has('a').length == 0)
|
||||||
$(this).children().last().append(
|
$(this).children().last().append(
|
||||||
'<a class="pull-right btn-group-hover color-darkgrey" href="#/Queue!'+ app.current.page + '/' + '/'+app.current.filter+'/'+app.current.search + '" ' +
|
'<a class="pull-right btn-group-hover color-darkgrey" href="#/Queue!'+ app.current.page + '/' +app.current.filter+'/'+app.current.search + '" ' +
|
||||||
'onclick="delQueueSong($(this).parents(\'tr\'));">' +
|
'onclick="delQueueSong($(this).parents(\'tr\'),event);">' +
|
||||||
'<span class="material-icons">delete</span></a>')
|
'<span class="material-icons">delete</span></a>')
|
||||||
.find('a').fadeTo('fast',1);
|
.find('a').fadeTo('fast',1);
|
||||||
});
|
});
|
||||||
@ -368,15 +369,15 @@ function webSocketConnect() {
|
|||||||
mouseleave: function(){
|
mouseleave: function(){
|
||||||
var doomed = $(this);
|
var doomed = $(this);
|
||||||
if ( $('#btntrashmodeup').hasClass('btn-success') )
|
if ( $('#btntrashmodeup').hasClass('btn-success') )
|
||||||
doomed = $("#queueList > tbody > tr:lt(" + ($(this).index() + 1) + ")");
|
doomed = $("#QueueList > tbody > tr:lt(" + ($(this).index() + 1) + ")");
|
||||||
if ( $('#btntrashmodedown').hasClass('btn-success') )
|
if ( $('#btntrashmodedown').hasClass('btn-success') )
|
||||||
doomed = $("#queueList > tbody > tr:gt(" + ($(this).index() - 1) + ")");
|
doomed = $("#QueueList > tbody > tr:gt(" + ($(this).index() - 1) + ")");
|
||||||
$.each(doomed, function(){$(this).children().last().find("a").stop().remove();});
|
$.each(doomed, function(){$(this).children().last().find("a").stop().remove();});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$('#queueList > tbody > tr').on({
|
$('#QueueList > tbody > tr').on({
|
||||||
click: function() {
|
click: function() {
|
||||||
$('#queueList > tbody > tr').removeClass('active');
|
$('#queueList > tbody > tr').removeClass('active');
|
||||||
socket.send('MPD_API_PLAY_TRACK,'+$(this).attr('trackid'));
|
socket.send('MPD_API_PLAY_TRACK,'+$(this).attr('trackid'));
|
||||||
@ -591,10 +592,10 @@ function webSocketConnect() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( isTouch ) {
|
if ( isTouch ) {
|
||||||
appendClickableIcon($('#'+app.current.app+app.current.tab+'List > tbody > tr.dir > td:last-child'), 'MPD_API_ADD_TRACK', 'playlist_add');
|
appendClickableIcon($('#'+app.current.app+(app.current.tab == undefined ? '' : app.current.tab )+'List > tbody > tr.dir > td:last-child'), 'MPD_API_ADD_TRACK', 'playlist_add');
|
||||||
appendClickableIcon($('#'+app.current.app+app.current.tab+'List > tbody > tr.song > td:last-child'), 'MPD_API_ADD_TRACK', 'playlist_add');
|
appendClickableIcon($('#'+app.current.app+(app.current.tab == undefined ? '' : app.current.tab )+'List > tbody > tr.song > td:last-child'), 'MPD_API_ADD_TRACK', 'playlist_add');
|
||||||
} else {
|
} else {
|
||||||
$('#'+app.current.app+app.current.tab+'List > tbody > tr').on({
|
$('#'+app.current.app+(app.current.tab == undefined ? '' : app.current.tab )+'List > tbody > tr').on({
|
||||||
mouseenter: function() {
|
mouseenter: function() {
|
||||||
if($(this).is(".dir"))
|
if($(this).is(".dir"))
|
||||||
appendClickableIcon($(this).children().last(), 'MPD_API_ADD_TRACK', 'playlist_add');
|
appendClickableIcon($(this).children().last(), 'MPD_API_ADD_TRACK', 'playlist_add');
|
||||||
@ -606,7 +607,7 @@ function webSocketConnect() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
$('#'+app.current.app+app.current.tab+'List > tbody > tr').on({
|
$('#'+app.current.app+(app.current.tab == undefined ? '' : app.current.tab )+'List > tbody > tr').on({
|
||||||
click: function() {
|
click: function() {
|
||||||
switch($(this).attr('class')) {
|
switch($(this).attr('class')) {
|
||||||
case 'dir':
|
case 'dir':
|
||||||
@ -671,7 +672,10 @@ function webSocketConnect() {
|
|||||||
$('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+'] > td').eq(4).text(counterText);
|
$('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+'] > td').eq(4).text(counterText);
|
||||||
$('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+'] > td').eq(0).addClass('material-icons').text('play_arrow');
|
$('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+'] > td').eq(0).addClass('material-icons').text('play_arrow');
|
||||||
$('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+']').addClass('active').addClass("font-weight-bold");
|
$('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+']').addClass('active').addClass("font-weight-bold");
|
||||||
|
if ($('#currenttrack').text() != $('#QueueList > tbody > tr[trackid='+obj.data.currentsongid+'] > td').eq(1).text()) {
|
||||||
|
//Get current song on queue change for http streams
|
||||||
|
socket.send('MPD_API_GET_CURRENT_SONG');
|
||||||
|
}
|
||||||
|
|
||||||
last_state = obj;
|
last_state = obj;
|
||||||
break;
|
break;
|
||||||
@ -704,11 +708,11 @@ function webSocketConnect() {
|
|||||||
showNotification('myMPD lost connection to MPD','','','danger');
|
showNotification('myMPD lost connection to MPD','','','danger');
|
||||||
break;
|
break;
|
||||||
case 'update_queue':
|
case 'update_queue':
|
||||||
if(app.current.app === 'queue')
|
if(app.current.app === 'Queue')
|
||||||
socket.send('MPD_API_GET_QUEUE,'+app.current.page);
|
socket.send('MPD_API_GET_QUEUE,'+app.current.page);
|
||||||
break;
|
break;
|
||||||
case "song_change":
|
case "song_change":
|
||||||
songChange(obj.data.title, obj.data.artist, obj.data.album, obj.data.uri);
|
songChange(obj.data.title, obj.data.artist, obj.data.album, obj.data.uri, obj.data.currentsongid);
|
||||||
break;
|
break;
|
||||||
case 'settings':
|
case 'settings':
|
||||||
if (!isNaN(obj.data.max_elements_per_page))
|
if (!isNaN(obj.data.max_elements_per_page))
|
||||||
@ -876,7 +880,6 @@ function updateVolumeIcon(volume) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updatePlayIcon(obj) {
|
function updatePlayIcon(obj) {
|
||||||
|
|
||||||
if(obj.data.state == 1) { // stop
|
if(obj.data.state == 1) { // stop
|
||||||
$('#btnPlay > span').text('play_arrow');
|
$('#btnPlay > span').text('play_arrow');
|
||||||
playstate = 'stop';
|
playstate = 'stop';
|
||||||
@ -934,16 +937,14 @@ function setLocalStream(mpdhost,streamport) {
|
|||||||
Cookies.set('mpdstream', mpdstream, { expires: 424242 });
|
Cookies.set('mpdstream', mpdstream, { expires: 424242 });
|
||||||
}
|
}
|
||||||
|
|
||||||
function delQueueSong(tr) {
|
function delQueueSong(tr,event) {
|
||||||
|
event.stopPropagation();
|
||||||
if ( $('#btntrashmodeup').hasClass('btn-success') ) {
|
if ( $('#btntrashmodeup').hasClass('btn-success') ) {
|
||||||
socket.send('MPD_API_RM_RANGE,0,' + (tr.index() + 1));
|
socket.send('MPD_API_RM_RANGE,0,' + (tr.index() + 1));
|
||||||
tr.remove();
|
|
||||||
} else if ( $('#btntrashmodesingle').hasClass('btn-success') ) {
|
} else if ( $('#btntrashmodesingle').hasClass('btn-success') ) {
|
||||||
socket.send('MPD_API_RM_TRACK,' + tr.attr('trackid'));
|
socket.send('MPD_API_RM_TRACK,' + tr.attr('trackid'));
|
||||||
tr.remove();
|
|
||||||
} else if ( $('#btntrashmodedown').hasClass('btn-success') ) {
|
} else if ( $('#btntrashmodedown').hasClass('btn-success') ) {
|
||||||
socket.send('MPD_API_RM_RANGE,' + tr.index() + ',-1');
|
socket.send('MPD_API_RM_RANGE,' + tr.index() + ',-1');
|
||||||
tr.remove();
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1232,7 +1233,10 @@ function notificationsSupported() {
|
|||||||
return "Notification" in window;
|
return "Notification" in window;
|
||||||
}
|
}
|
||||||
|
|
||||||
function songChange(title, artist, album, uri) {
|
function songChange(title, artist, album, uri, songId) {
|
||||||
|
if (last_song == title+artist+album+uri+songId)
|
||||||
|
return;
|
||||||
|
|
||||||
var textNotification = '';
|
var textNotification = '';
|
||||||
var htmlNotification = '';
|
var htmlNotification = '';
|
||||||
var pageTitle = 'myMPD: ';
|
var pageTitle = 'myMPD: ';
|
||||||
@ -1272,6 +1276,7 @@ function songChange(title, artist, album, uri) {
|
|||||||
}
|
}
|
||||||
document.title = pageTitle;
|
document.title = pageTitle;
|
||||||
showNotification(title,textNotification,htmlNotification,'success');
|
showNotification(title,textNotification,htmlNotification,'success');
|
||||||
|
last_song = title+artist+album+uri+songId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -171,6 +171,10 @@ int callback_mpd(struct mg_connection *c)
|
|||||||
if(sscanf(c->content, "MPD_API_GET_QUEUE,%u", &uint_buf))
|
if(sscanf(c->content, "MPD_API_GET_QUEUE,%u", &uint_buf))
|
||||||
n = mpd_put_queue(mpd.buf, uint_buf);
|
n = mpd_put_queue(mpd.buf, uint_buf);
|
||||||
break;
|
break;
|
||||||
|
case MPD_API_GET_CURRENT_SONG:
|
||||||
|
n = mpd_put_current_song(mpd.buf);
|
||||||
|
break;
|
||||||
|
|
||||||
case MPD_API_GET_ARTISTS:
|
case MPD_API_GET_ARTISTS:
|
||||||
p_charbuf = strdup(c->content);
|
p_charbuf = strdup(c->content);
|
||||||
if(strcmp(strtok(p_charbuf, ","), "MPD_API_GET_ARTISTS"))
|
if(strcmp(strtok(p_charbuf, ","), "MPD_API_GET_ARTISTS"))
|
||||||
@ -516,20 +520,19 @@ static int mpd_notify_callback(struct mg_connection *c, enum mg_event ev) {
|
|||||||
{
|
{
|
||||||
mg_websocket_write(c, 1, mpd.buf, mpd.buf_size);
|
mg_websocket_write(c, 1, mpd.buf, mpd.buf_size);
|
||||||
|
|
||||||
|
if(s->song_id != mpd.song_id)// || s->queue_version != mpd.queue_version)
|
||||||
|
{
|
||||||
|
n = mpd_put_current_song(mpd.buf);
|
||||||
|
mg_websocket_write(c, 1, mpd.buf, n);
|
||||||
|
s->song_id = mpd.song_id;
|
||||||
|
}
|
||||||
|
|
||||||
if(s->queue_version != mpd.queue_version)
|
if(s->queue_version != mpd.queue_version)
|
||||||
{
|
{
|
||||||
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\":\"update_queue\"}");
|
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\":\"update_queue\"}");
|
||||||
mg_websocket_write(c, 1, mpd.buf, n);
|
mg_websocket_write(c, 1, mpd.buf, n);
|
||||||
s->queue_version = mpd.queue_version;
|
s->queue_version = mpd.queue_version;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(s->song_id != mpd.song_id || s->queue_version != mpd.queue_version)
|
|
||||||
{
|
|
||||||
n = mpd_put_current_song(mpd.buf);
|
|
||||||
mg_websocket_write(c, 1, mpd.buf, n);
|
|
||||||
s->song_id = mpd.song_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -827,6 +830,8 @@ int mpd_put_current_song(char *buffer)
|
|||||||
cur += json_emit_quoted_str(cur, end - cur, mpd_get_album(song));
|
cur += json_emit_quoted_str(cur, end - cur, mpd_get_album(song));
|
||||||
cur += json_emit_raw_str(cur, end - cur, ",\"uri\":");
|
cur += json_emit_raw_str(cur, end - cur, ",\"uri\":");
|
||||||
cur += json_emit_quoted_str(cur, end - cur, mpd_song_get_uri(song));
|
cur += json_emit_quoted_str(cur, end - cur, mpd_song_get_uri(song));
|
||||||
|
cur += json_emit_raw_str(cur, end - cur, ",\"currentsongid\":");
|
||||||
|
cur += json_emit_int(cur, end - cur, mpd.song_id);
|
||||||
cur += json_emit_raw_str(cur, end - cur, "}}");
|
cur += json_emit_raw_str(cur, end - cur, "}}");
|
||||||
|
|
||||||
mpd_song_free(song);
|
mpd_song_free(song);
|
||||||
|
@ -83,7 +83,8 @@
|
|||||||
X(MPD_API_SET_REPLAYGAIN) \
|
X(MPD_API_SET_REPLAYGAIN) \
|
||||||
X(MPD_API_GET_ARTISTALBUMS) \
|
X(MPD_API_GET_ARTISTALBUMS) \
|
||||||
X(MPD_API_GET_ARTISTALBUMTITLES) \
|
X(MPD_API_GET_ARTISTALBUMTITLES) \
|
||||||
X(MPD_API_GET_ARTISTS)
|
X(MPD_API_GET_ARTISTS) \
|
||||||
|
X(MPD_API_GET_CURRENT_SONG)
|
||||||
|
|
||||||
enum mpd_cmd_ids {
|
enum mpd_cmd_ids {
|
||||||
MPD_CMDS(GEN_ENUM)
|
MPD_CMDS(GEN_ENUM)
|
||||||
|
Loading…
Reference in New Issue
Block a user