From 24ed240c865837b8c9d7c9240f6ef3ba9065b162 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 5 Jul 2012 22:00:22 +0200 Subject: Add feature: Create new station from selected song MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New keybinding ā€˜vā€™, new setting act_createstationfromsong. --- src/libpiano/piano.h | 9 +++++++++ src/libpiano/request.c | 31 ++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) (limited to 'src/libpiano') diff --git a/src/libpiano/piano.h b/src/libpiano/piano.h index e881621..00bc744 100644 --- a/src/libpiano/piano.h +++ b/src/libpiano/piano.h @@ -207,6 +207,15 @@ typedef struct { PianoSearchResult_t searchResult; } PianoRequestDataSearch_t; +typedef struct { + char *token; + enum { + PIANO_MUSICTYPE_INVALID = 0, + PIANO_MUSICTYPE_SONG, + PIANO_MUSICTYPE_ARTIST, + } type; +} PianoRequestDataCreateStation_t; + typedef struct { PianoStation_t *station; char *musicId; diff --git a/src/libpiano/request.c b/src/libpiano/request.c index cb1b30a..85d6286 100644 --- a/src/libpiano/request.c +++ b/src/libpiano/request.c @@ -204,12 +204,33 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, case PIANO_REQUEST_CREATE_STATION: { /* create new station from specified musicToken or station number */ - char *token = req->data; + PianoRequestDataCreateStation_t *reqData = req->data; - assert (token != NULL); - - json_object_object_add (j, "musicToken", - json_object_new_string (token)); + assert (reqData != NULL); + assert (reqData->token != NULL); + + if (reqData->type == PIANO_MUSICTYPE_INVALID) { + json_object_object_add (j, "musicToken", + json_object_new_string (reqData->token)); + } else { + json_object_object_add (j, "trackToken", + json_object_new_string (reqData->token)); + switch (reqData->type) { + case PIANO_MUSICTYPE_SONG: + json_object_object_add (j, "musicType", + json_object_new_string ("song")); + break; + + case PIANO_MUSICTYPE_ARTIST: + json_object_object_add (j, "musicType", + json_object_new_string ("artist")); + break; + + default: + assert (0); + break; + } + } method = "station.createStation"; break; -- cgit v1.2.3