diff --git a/htdocs/index.html b/htdocs/index.html
index 2be32ec..e03ca06 100644
--- a/htdocs/index.html
+++ b/htdocs/index.html
@@ -646,6 +646,29 @@
+
+
diff --git a/htdocs/js/mympd.js b/htdocs/js/mympd.js
index 1f4c104..095eb43 100644
--- a/htdocs/js/mympd.js
+++ b/htdocs/js/mympd.js
@@ -92,6 +92,7 @@ var modalAddToPlaylist = new Modal(document.getElementById('modalAddToPlaylist')
var modalRenamePlaylist = new Modal(document.getElementById('modalRenamePlaylist'));
var modalUpdateDB = new Modal(document.getElementById('modalUpdateDB'));
var modalSaveSmartPlaylist = new Modal(document.getElementById('modalSaveSmartPlaylist'));
+var modalDeletePlaylist = new Modal(document.getElementById('modalDeletePlaylist'));
function appPrepare(scrollPos) {
if (app.current.app != app.last.app || app.current.tab != app.last.tab || app.current.view != app.last.view) {
@@ -1958,7 +1959,7 @@ function showMenu(el, event) {
(type == 'smartpls' ? addMenuItem({"cmd": "showSmartPlaylist", "options": [uri]}, 'Edit smart playlist') : '') +
(uri.indexOf('myMPDsmart') != 0 ?
addMenuItem({"cmd": "showRenamePlaylist", "options": [uri]}, 'Rename playlist') +
- addMenuItem({"cmd": "delPlaylist", "options": [uri]}, 'Delete playlist') : '');
+ addMenuItem({"cmd": "showDelPlaylist", "options": [uri]}, 'Delete playlist') : '');
}
else if (app.current.app == 'Browse' && app.current.tab == 'Playlists' && app.current.view == 'Detail') {
var x = document.getElementById('BrowsePlaylistsDetailList');
@@ -2118,9 +2119,15 @@ function delQueueSong(mode, start, end) {
sendAPI({"cmd": "MPD_API_QUEUE_RM_TRACK", "data": { "track": start}});
}
-function delPlaylist(uri) {
- sendAPI({"cmd": "MPD_API_PLAYLIST_RM", "data": {"uri": uri}});
- sendAPI({"cmd": "MPD_API_PLAYLIST_LIST","data": {"offset": app.current.page, "filter": app.current.filter}}, parsePlaylists);
+function showDelPlaylist(uri) {
+ document.getElementById('deletePlaylist').value = uri;
+ modalDeletePlaylist.show();
+}
+
+function delPlaylist() {
+ var uri = document.getElementById('deletePlaylist').value;
+ sendAPI({"cmd": "MPD_API_PLAYLIST_RM_AND_LIST", "data": {"uri": uri, "offset": app.current.page, "filter": app.current.filter}}, parsePlaylists);
+ modalDeletePlaylist.hide();
}
function confirmSettings() {
diff --git a/src/mpd_client.c b/src/mpd_client.c
index e2d4914..38db1c9 100644
--- a/src/mpd_client.c
+++ b/src/mpd_client.c
@@ -546,6 +546,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg) {
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
break;
+ case MPD_API_PLAYLIST_RM_AND_LIST:
case MPD_API_PLAYLIST_RM:
je = json_scanf(msg.p, msg.len, "{data: {uri:%Q}}", &p_charbuf1);
if (je == 1) {
@@ -559,6 +560,12 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg) {
free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
+ //AND_LIST
+ je = json_scanf(msg.p, msg.len, "{data: {offset:%u, filter:%Q}}", &uint_buf1, &p_charbuf1);
+ if (je == 2) {
+ n = mympd_put_playlists(mpd.buf, uint_buf1, p_charbuf1);
+ free(p_charbuf1);
+ }
break;
case MPD_API_SETTINGS_GET:
n = mympd_put_settings(mpd.buf);
diff --git a/src/mpd_client.h b/src/mpd_client.h
index 244a759..263036d 100644
--- a/src/mpd_client.h
+++ b/src/mpd_client.h
@@ -65,6 +65,7 @@
X(MPD_API_QUEUE_ADD_PLAYLIST) \
X(MPD_API_QUEUE_REPLACE_PLAYLIST) \
X(MPD_API_QUEUE_SHUFFLE) \
+ X(MPD_API_PLAYLIST_RM_AND_LIST) \
X(MPD_API_PLAYLIST_RM) \
X(MPD_API_PLAYLIST_CLEAR) \
X(MPD_API_PLAYLIST_RENAME) \