From 8e662ba273cbc59eff94ad0815bb7136d8890065 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Wed, 27 Mar 2013 22:20:17 +0100 Subject: Add missing events to genre station selection Two new events: stationfetchgenre, stationaddgenre --- src/ui_act.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) (limited to 'src/ui_act.c') diff --git a/src/ui_act.c b/src/ui_act.c index 9af34bf..0f73018 100644 --- a/src/ui_act.c +++ b/src/ui_act.c @@ -263,8 +263,74 @@ BarUiActCallback(BarUiActExplain) { /* choose genre station and add it as shared station */ BarUiActCallback(BarUiActStationFromGenre) { - /* use genre station */ - BarStationFromGenre (app); + PianoReturn_t pRet; + WaitressReturn_t wRet; + const PianoGenreCategory_t *curCat; + const PianoGenre_t *curGenre; + int i; + + /* receive genre stations list if not yet available */ + if (app->ph.genreStations == NULL) { + BarUiMsg (&app->settings, MSG_INFO, "Receiving genre stations... "); + const bool ret = BarUiActDefaultPianoCall ( + PIANO_REQUEST_GET_GENRE_STATIONS, NULL); + BarUiActDefaultEventcmd ("stationfetchgenre"); + if (!ret) { + return; + } + } + + /* print all available categories */ + curCat = app->ph.genreStations; + i = 0; + while (curCat != NULL) { + BarUiMsg (&app->settings, MSG_LIST, "%2i) %s\n", i, curCat->name); + i++; + curCat = curCat->next; + } + + do { + /* select category or exit */ + BarUiMsg (&app->settings, MSG_QUESTION, "Select category: "); + if (BarReadlineInt (&i, &app->input) == 0) { + return; + } + curCat = app->ph.genreStations; + while (curCat != NULL && i > 0) { + curCat = curCat->next; + i--; + } + } while (curCat == NULL); + + /* print all available stations */ + curGenre = curCat->genres; + i = 0; + while (curGenre != NULL) { + BarUiMsg (&app->settings, MSG_LIST, "%2i) %s\n", i, curGenre->name); + i++; + curGenre = curGenre->next; + } + + do { + BarUiMsg (&app->settings, MSG_QUESTION, "Select genre: "); + if (BarReadlineInt (&i, &app->input) == 0) { + return; + } + curGenre = curCat->genres; + while (curGenre != NULL && i > 0) { + curGenre = curGenre->next; + i--; + } + } while (curGenre == NULL); + + /* create station */ + PianoRequestDataCreateStation_t reqData; + reqData.token = curGenre->musicId; + reqData.type = PIANO_MUSICTYPE_INVALID; + BarUiMsg (&app->settings, MSG_INFO, "Adding genre station \"%s\"... ", + curGenre->name); + BarUiActDefaultPianoCall (PIANO_REQUEST_CREATE_STATION, &reqData); + BarUiActDefaultEventcmd ("stationaddgenre"); } /* print verbose song information -- cgit v1.2.3