diff options
Diffstat (limited to 'src/ui_act.c')
-rw-r--r-- | src/ui_act.c | 75 |
1 files changed, 31 insertions, 44 deletions
diff --git a/src/ui_act.c b/src/ui_act.c index 307c8c6..41b1356 100644 --- a/src/ui_act.c +++ b/src/ui_act.c @@ -30,6 +30,14 @@ THE SOFTWARE. #include "ui.h" #include "ui_act.h" +#define RETURN_IF_NO_STATION if (*curStation == NULL) { \ + BarUiMsg ("No station selected.\n"); \ + return; } + +#define RETURN_IF_NO_SONG if (*curStation == NULL || *curSong == NULL) { \ + BarUiMsg ("No song playing.\n"); \ + return; } + /* print current shortcut configuration */ void BarUiActHelp (BAR_KS_ARGS) { @@ -48,10 +56,9 @@ void BarUiActHelp (BAR_KS_ARGS) { */ void BarUiActAddMusic (BAR_KS_ARGS) { char *musicId; - if (*curStation == NULL) { - BarUiMsg ("No station selected.\n"); - return; - } + + RETURN_IF_NO_STATION; + musicId = BarUiSelectMusicId (ph); if (musicId == NULL) { if (!BarTransformIfShared (ph, *curStation)) { @@ -67,10 +74,8 @@ void BarUiActAddMusic (BAR_KS_ARGS) { /* ban song */ void BarUiActBanSong (BAR_KS_ARGS) { - if (*curStation == NULL || *curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_SONG; + if (!BarTransformIfShared (ph, *curStation)) { return; } @@ -98,10 +103,8 @@ void BarUiActCreateStation (BAR_KS_ARGS) { void BarUiActDeleteStation (BAR_KS_ARGS) { char yesNoBuf; - if (*curStation == NULL) { - BarUiMsg ("No station selected.\n"); - return; - } + RETURN_IF_NO_STATION; + printf ("Really delete \"%s\"? [yn]\n", (*curStation)->name); read (fileno (stdin), &yesNoBuf, sizeof (yesNoBuf)); if (yesNoBuf == 'y') { @@ -121,10 +124,8 @@ void BarUiActDeleteStation (BAR_KS_ARGS) { void BarUiActExplain (BAR_KS_ARGS) { char *explanation; - if (*curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_STATION; + BarUiMsg ("Receiving explanation... "); if (BarUiPrintPianoStatus (PianoExplain (ph, *curSong, &explanation)) == PIANO_RET_OK) { @@ -143,10 +144,8 @@ void BarUiActStationFromGenre (BAR_KS_ARGS) { /* print verbose song information */ void BarUiActSongInfo (BAR_KS_ARGS) { - if (*curStation == NULL || *curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_SONG; + /* print debug-alike infos */ printf ("Song infos:\n" "album:\t%s\n" @@ -172,10 +171,8 @@ void BarUiActSongInfo (BAR_KS_ARGS) { /* rate current song */ void BarUiActLoveSong (BAR_KS_ARGS) { - if (*curStation == NULL || *curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_SONG; + if ((*curSong)->rating == PIANO_RATE_LOVE) { BarUiMsg ("Already loved. No need to do this twice.\n"); return; @@ -198,10 +195,8 @@ void BarUiActSkipSong (BAR_KS_ARGS) { void BarUiActMoveSong (BAR_KS_ARGS) { PianoStation_t *moveStation; - if (*curStation == NULL || *curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_SONG; + moveStation = BarUiSelectStation (ph, "Move song to station: "); if (moveStation != NULL) { if (!BarTransformIfShared (ph, *curStation) || @@ -228,10 +223,8 @@ void BarUiActPause (BAR_KS_ARGS) { void BarUiActRenameStation (BAR_KS_ARGS) { char *lineBuf; - if (*curStation == NULL) { - BarUiMsg ("No station selected.\n"); - return; - } + RETURN_IF_NO_STATION; + lineBuf = readline ("New name?\n"); if (lineBuf != NULL && strlen (lineBuf) > 0) { if (!BarTransformIfShared (ph, *curStation)) { @@ -260,10 +253,8 @@ void BarUiActSelectStation (BAR_KS_ARGS) { /* ban song for 1 month */ void BarUiActTempBanSong (BAR_KS_ARGS) { - if (*curStation == NULL || *curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_SONG; + if (!BarTransformIfShared (ph, *curStation)) { return; } @@ -277,10 +268,8 @@ void BarUiActTempBanSong (BAR_KS_ARGS) { /* print upcoming songs */ void BarUiActPrintUpcoming (BAR_KS_ARGS) { - if (*curStation == NULL || *curSong == NULL) { - BarUiMsg ("No song playing.\n"); - return; - } + RETURN_IF_NO_SONG; + PianoSong_t *nextSong = (*curSong)->next; if (nextSong != NULL) { int i = 0; @@ -300,10 +289,8 @@ void BarUiActPrintUpcoming (BAR_KS_ARGS) { * quickmix */ void BarUiActSelectQuickMix (BAR_KS_ARGS) { - if (*curStation == NULL) { - BarUiMsg ("No station selected.\n"); - return; - } + RETURN_IF_NO_STATION; + if ((*curStation)->isQuickMix) { PianoStation_t *selStation; while ((selStation = BarUiSelectStation (ph, |