diff --git a/htdocs/js/mpd.js b/htdocs/js/mpd.js
index c8e1c86..3680ea5 100644
--- a/htdocs/js/mpd.js
+++ b/htdocs/js/mpd.js
@@ -83,7 +83,8 @@ var modalSavequeue = new Modal(document.getElementById('modalSaveQueue'));
var modalSongDetails = new Modal(document.getElementById('modalSongDetails'));
var modalAddToPlaylist = new Modal(document.getElementById('modalAddToPlaylist'));
var modalRenamePlaylist = new Modal(document.getElementById('modalRenamePlaylist'));
-var mainMenu = new Dropdown(document.getElementById('mainMenu'));
+//var mainMenu = new Dropdown(document.getElementById('mainMenu'));
+//var volumeMenu = new Dropdown(document.getElementById('volumeIcon'));
function appPrepare(scrollPos) {
if (app.current.app != app.last.app || app.current.tab != app.last.tab || app.current.view != app.last.view) {
@@ -287,7 +288,7 @@ function appRoute() {
function appInit() {
getSettings();
- sendAPI({"cmd":"MPD_API_GET_OUTPUTNAMES"}, parseOutputnames);
+// sendAPI({"cmd":"MPD_API_GET_OUTPUTS"}, parseOutputnames);
webSocketConnect();
@@ -303,6 +304,10 @@ function appInit() {
sendAPI({"cmd": "MPD_API_SET_SEEK", "data": {"songid": current_song.currentSongId, "seek": seekVal}});
}
}, false);
+
+ document.getElementById('volumeIcon').parentNode.addEventListener('show.bs.dropdown', function () {
+ sendAPI({"cmd":"MPD_API_GET_OUTPUTS"}, parseOutputnames);
+ });
document.getElementById('modalAbout').addEventListener('shown.bs.modal', function () {
sendAPI({"cmd": "MPD_API_GET_STATS"}, parseStats);
@@ -640,7 +645,6 @@ function webSocketConnect() {
showNotification('Connected to myMPD', '', '', 'success');
modalConnectionError.hide();
appRoute();
- sendAPI({"cmd":"MPD_API_GET_OUTPUTNAMES"}, parseOutputnames);
}
socket.onmessage = function got_packet(msg) {
@@ -807,8 +811,10 @@ function parseOutputnames(obj) {
var btns = '';
var outputsLen = obj.data.outputs.length;
for (var i = 0; i < outputsLen; i++) {
- btns += '';
+ btns += '';
}
domCache.outputs.innerHTML = btns;
}
@@ -899,11 +905,7 @@ function parseState(obj) {
if (last_state == undefined || obj.data.queue_version != last_state.data.queue_version)
sendAPI({"cmd": "MPD_API_GET_CURRENT_SONG"}, songChange);
- // Set outputs state
- var outputsLen = obj.data.outputs.length;
- for (var i = 0; i < outputsLen; i++) {
- toggleBtn('btnoutput' + obj.data.outputs[i].id, obj.data.outputs[i].state);
- }
+
//clear playback card if not playing
if (obj.data.songpos == '-1') {
diff --git a/src/mpd_client.c b/src/mpd_client.c
index 5242df7..5e803f2 100644
--- a/src/mpd_client.c
+++ b/src/mpd_client.c
@@ -214,8 +214,8 @@ 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_GET_OUTPUTNAMES:
- n = mympd_put_outputnames(mpd.buf);
+ case MPD_API_GET_OUTPUTS:
+ n = mympd_put_outputs(mpd.buf);
break;
case MPD_API_TOGGLE_OUTPUT:
je = json_scanf(msg.p, msg.len, "{ data: { output:%u, state:%u } }", &uint_buf1, &uint_buf2);
@@ -619,9 +619,7 @@ char* mympd_get_tag(struct mpd_song const *song, enum mpd_tag_type tag) {
int mympd_put_state(char *buffer, int *current_song_id, int *next_song_id, unsigned *queue_version) {
struct mpd_status *status;
const struct mpd_audio_format *audioformat;
- struct mpd_output *output;
int len;
- int nr;
struct json_out out = JSON_OUT_BUF(buffer, MAX_SIZE);
status = mpd_run_status(mpd.conn);
@@ -656,24 +654,7 @@ int mympd_put_state(char *buffer, int *current_song_id, int *next_song_id, unsi
mpd_status_get_queue_version(status)
);
- len += json_printf(&out, ",outputs: [");
-
- mpd_send_outputs(mpd.conn);
- nr=0;
- while ((output = mpd_recv_output(mpd.conn)) != NULL) {
- if (nr++) len += json_printf(&out, ",");
- len += json_printf(&out, "{id: %d, state: %d}",
- mpd_output_get_id(output),
- mpd_output_get_enabled(output)
- );
- mpd_output_free(output);
- }
- if (!mpd_response_finish(mpd.conn)) {
- fprintf(stderr, "MPD outputs: %s\n", mpd_connection_get_error_message(mpd.conn));
- mpd_connection_clear_error(mpd.conn);
- }
-
- len += json_printf(&out, "]}}");
+ len += json_printf(&out, "}}");
*current_song_id = mpd_status_get_song_id(status);
*next_song_id = mpd_status_get_next_song_id(status);
@@ -756,21 +737,22 @@ int mympd_put_settings(char *buffer) {
}
-int mympd_put_outputnames(char *buffer) {
+int mympd_put_outputs(char *buffer) {
struct mpd_output *output;
int len;
int nr;
struct json_out out = JSON_OUT_BUF(buffer, MAX_SIZE);
- len = json_printf(&out,"{type: outputnames, data: { outputs: [");
+ len = json_printf(&out,"{type: outputs, data: { outputs: [");
mpd_send_outputs(mpd.conn);
nr=0;
while ((output = mpd_recv_output(mpd.conn)) != NULL) {
if (nr++) len += json_printf(&out, ",");
- len += json_printf(&out,"{id: %d, name: %Q}",
+ len += json_printf(&out,"{id: %d, name: %Q, state: %d}",
mpd_output_get_id(output),
- mpd_output_get_name(output)
+ mpd_output_get_name(output),
+ mpd_output_get_enabled(output)
);
mpd_output_free(output);
}
diff --git a/src/mpd_client.h b/src/mpd_client.h
index 1d09893..a474b27 100644
--- a/src/mpd_client.h
+++ b/src/mpd_client.h
@@ -77,7 +77,7 @@
X(MPD_API_SET_NEXT) \
X(MPD_API_SET_PREV) \
X(MPD_API_UPDATE_DB) \
- X(MPD_API_GET_OUTPUTNAMES) \
+ X(MPD_API_GET_OUTPUTS) \
X(MPD_API_TOGGLE_OUTPUT) \
X(MPD_API_SEND_SHUFFLE) \
X(MPD_API_GET_STATS) \
@@ -141,7 +141,7 @@ void mympd_poll(struct mg_mgr *s);
void callback_mympd(struct mg_connection *nc, const struct mg_str msg);
int mympd_close_handler(struct mg_connection *c);
int mympd_put_state(char *buffer, int *current_song_id, int *next_song_id, unsigned *queue_version);
-int mympd_put_outputnames(char *buffer);
+int mympd_put_outputs(char *buffer);
int mympd_put_current_song(char *buffer);
int mympd_put_queue(char *buffer, unsigned int offset);
int mympd_put_browse(char *buffer, char *path, unsigned int offset, char *filter);