aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/command.c10
-rw-r--r--src/playlist.c15
-rw-r--r--src/playlist.h2
3 files changed, 27 insertions, 0 deletions
diff --git a/src/command.c b/src/command.c
index a8a72b67..3b8ae956 100644
--- a/src/command.c
+++ b/src/command.c
@@ -62,6 +62,8 @@
#define COMMAND_STATUS_PLAYLIST_LENGTH "playlistlength"
#define COMMAND_STATUS_SONG "song"
#define COMMAND_STATUS_SONGID "songid"
+#define COMMAND_STATUS_NEXTSONG "nextsong"
+#define COMMAND_STATUS_NEXTSONGID "nextsongid"
#define COMMAND_STATUS_TIME "time"
#define COMMAND_STATUS_BITRATE "bitrate"
#define COMMAND_STATUS_ERROR "error"
@@ -508,6 +510,14 @@ handle_status(struct client *client,
getPlayerErrorStr());
}
+ song = getPlaylistNextSong(&g_playlist);
+ if (song >= 0) {
+ client_printf(client,
+ COMMAND_STATUS_NEXTSONG ": %i\n"
+ COMMAND_STATUS_NEXTSONGID ": %u\n",
+ song, getPlaylistSongId(&g_playlist, song));
+ }
+
return COMMAND_RETURN_OK;
}
diff --git a/src/playlist.c b/src/playlist.c
index 3b9c33ce..ed430bf6 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -334,6 +334,21 @@ int getPlaylistCurrentSong(const struct playlist *playlist)
return -1;
}
+int getPlaylistNextSong(const struct playlist *playlist)
+{
+ if (playlist->current >= 0)
+ {
+ if (queue_length(&playlist->queue) > 1)
+ return queue_order_to_position(&playlist->queue,
+ playlist->current + 1);
+ else if (playlist->queue.repeat == 1)
+ return queue_order_to_position(&playlist->queue,
+ playlist->current);
+ }
+
+ return -1;
+}
+
unsigned long
getPlaylistVersion(const struct playlist *playlist)
{
diff --git a/src/playlist.h b/src/playlist.h
index b0e296bc..7c3eb337 100644
--- a/src/playlist.h
+++ b/src/playlist.h
@@ -180,6 +180,8 @@ void setPlaylistRandomStatus(struct playlist *playlist, bool status);
int getPlaylistCurrentSong(const struct playlist *playlist);
+int getPlaylistNextSong(const struct playlist *playlist);
+
unsigned
getPlaylistSongId(const struct playlist *playlist, unsigned song);