diff --git a/htdocs/index.html b/htdocs/index.html
index 92fa2a3..9e0757e 100644
--- a/htdocs/index.html
+++ b/htdocs/index.html
@@ -169,6 +169,21 @@
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/htdocs/js/mpd.js b/htdocs/js/mpd.js
index ccde921..90340d5 100644
--- a/htdocs/js/mpd.js
+++ b/htdocs/js/mpd.js
@@ -236,20 +236,32 @@ function webSocketConnect() {
if ( isTouch ) {
$('#salamisandwich > tbody > tr > td:last-child').append(
"" +
+ "onclick=\"trash($(this).parents('tr'));\">" +
"");
} else {
$('#salamisandwich > tbody > tr').on({
mouseover: function(){
+ var doomed = $(this);
+ if ( $('#btntrashmodeup').hasClass('active') )
+ doomed = $("#salamisandwich > tbody > tr:lt(" + ($(this).index() + 1) + ")");
+ if ( $('#btntrashmodedown').hasClass('active') )
+ doomed = $("#salamisandwich > tbody > tr:gt(" + ($(this).index() - 1) + ")");
+ $.each(doomed, function(){
if($(this).children().last().has("a").length == 0)
$(this).children().last().append(
"" +
+ "onclick=\"trash($(this).parents('tr'));\">" +
"")
.find('a').fadeTo('fast',1);
+ });
},
mouseleave: function(){
- $(this).children().last().find("a").stop().remove();
+ var doomed = $(this);
+ if ( $('#btntrashmodeup').hasClass('active') )
+ doomed = $("#salamisandwich > tbody > tr:lt(" + ($(this).index() + 1) + ")");
+ if ( $('#btntrashmodedown').hasClass('active') )
+ doomed = $("#salamisandwich > tbody > tr:gt(" + ($(this).index() - 1) + ")");
+ $.each(doomed, function(){$(this).children().last().find("a").stop().remove();});
}
});
};
@@ -621,6 +633,19 @@ function clickPlay() {
socket.send('MPD_API_SET_PAUSE');
}
+function trash(tr) {
+ if ( $('#btntrashmodeup').hasClass('active') ) {
+ socket.send('MPD_API_RM_RANGE,0,' + (tr.index() + 1));
+ tr.remove();
+ } else if ( $('#btntrashmodesingle').hasClass('active') ) {
+ socket.send('MPD_API_RM_TRACK,' + tr.attr('trackid'));
+ tr.remove();
+ } else if ( $('#btntrashmodedown').hasClass('active') ) {
+ socket.send('MPD_API_RM_RANGE,' + tr.index() + ',-1');
+ tr.remove();
+ };
+}
+
function basename(path) {
return path.split('/').reverse()[0];
}
@@ -647,6 +672,11 @@ function toggleoutput(button, id) {
socket.send("MPD_API_TOGGLE_OUTPUT,"+id+"," + ($(button).hasClass('active') ? 0 : 1));
}
+$('#trashmode').children("button").on('click', function(e) {
+ $('#trashmode').children("button").removeClass("active");
+ $(this).addClass("active");
+});
+
$('#btnnotify').on('click', function (e) {
if($.cookie("notification") === "true") {
$.cookie("notification", false);
@@ -721,7 +751,7 @@ $('.page-btn').on('click', function (e) {
function addStream() {
if($('#streamurl').val().length > 0) {
- socket.send('MPD_API_ADD_TRACK,'+$('#streamurl').val());
+ socket.send('MPD_API_ADD_TRACK,'+$('#streamurl').val());
}
$('#streamurl').val("");
$('#addstream').modal('hide');
@@ -729,7 +759,7 @@ function addStream() {
function saveQueue() {
if($('#playlistname').val().length > 0) {
- socket.send('MPD_API_SAVE_QUEUE,'+$('#playlistname').val());
+ socket.send('MPD_API_SAVE_QUEUE,'+$('#playlistname').val());
}
$('#savequeue').modal('hide');
}
@@ -781,7 +811,7 @@ function songNotify(title, artist, album) {
if(typeof album != 'undefined' && album.length > 0)
textNotification += "\n " + album;
- var notification = new Notification(title, {icon: 'assets/favicon.ico', body: textNotification});
+ var notification = new Notification(title, {icon: 'assets/favicon.ico', body: textNotification});
setTimeout(function(notification) {
notification.close();
}, 3000, notification);
diff --git a/src/mpd_client.c b/src/mpd_client.c
index 7271984..5dc55d9 100644
--- a/src/mpd_client.c
+++ b/src/mpd_client.c
@@ -93,6 +93,10 @@ int callback_mpd(struct mg_connection *c)
if(sscanf(c->content, "MPD_API_RM_TRACK,%u", &uint_buf))
mpd_run_delete_id(mpd.conn, uint_buf);
break;
+ case MPD_API_RM_RANGE:
+ if(sscanf(c->content, "MPD_API_RM_RANGE,%u,%u", &uint_buf, &uint_buf_2))
+ mpd_run_delete_range(mpd.conn, uint_buf, uint_buf_2);
+ break;
case MPD_API_PLAY_TRACK:
if(sscanf(c->content, "MPD_API_PLAY_TRACK,%u", &uint_buf))
mpd_run_play_id(mpd.conn, uint_buf);
diff --git a/src/mpd_client.h b/src/mpd_client.h
index dd78af9..914851f 100644
--- a/src/mpd_client.h
+++ b/src/mpd_client.h
@@ -46,6 +46,7 @@
X(MPD_API_PLAY_TRACK) \
X(MPD_API_SAVE_QUEUE) \
X(MPD_API_RM_TRACK) \
+ X(MPD_API_RM_RANGE) \
X(MPD_API_RM_ALL) \
X(MPD_API_SEARCH) \
X(MPD_API_SET_VOLUME) \