diff options
-rwxr-xr-x | contrib/eventcmd.sh | 7 | ||||
-rw-r--r-- | src/main.c | 10 | ||||
-rw-r--r-- | src/ui.c | 17 | ||||
-rw-r--r-- | src/ui.h | 3 | ||||
-rw-r--r-- | src/ui_act.c | 61 |
5 files changed, 71 insertions, 27 deletions
diff --git a/contrib/eventcmd.sh b/contrib/eventcmd.sh index c414282..a857afd 100755 --- a/contrib/eventcmd.sh +++ b/contrib/eventcmd.sh @@ -5,7 +5,7 @@ while read L; do k="`echo "$L" | cut -d '=' -f 1`" v="`echo "$L" | cut -d '=' -f 2`" export "$k=$v" -done < <(grep -e '^\(title\|artist\)=' /dev/stdin) # don't overwrite $1... +done < <(grep -e '^\(title\|artist\|album\|stationName\|pRet\|pRetStr\)=' /dev/stdin) # don't overwrite $1... case "$1" in songstart) @@ -13,5 +13,10 @@ case "$1" in #echo "$title -- $artist" > $HOME/.config/pianobar/nowplaying # or whatever you like... ;; + *) + if [ $pRet -ne 0 ]; then + echo "naughty.notify({title = \"pianobar\", text = \"$1 failed: $pRetStr\"})" | awesome-client - + fi + ;; esac @@ -203,10 +203,12 @@ int main (int argc, char **argv) { curSong = curSong->next; } if (curSong == NULL) { + PianoReturn_t pRet = PIANO_RET_ERR; + BarUiMsg (MSG_INFO, "Receiving new playlist... "); PianoDestroyPlaylist (&ph); - if (BarUiPrintPianoStatus (PianoGetPlaylist (&ph, - curStation->id, settings.audioFormat)) != + if ((pRet = BarUiPrintPianoStatus (PianoGetPlaylist (&ph, + curStation->id, settings.audioFormat))) != PIANO_RET_OK) { curStation = NULL; } else { @@ -216,6 +218,8 @@ int main (int argc, char **argv) { curStation = NULL; } } + BarUiStartEventCmd (&settings, "stationfetchplaylist", + curStation, curSong, pRet); } /* song ready to play */ if (curSong != NULL) { @@ -238,7 +242,7 @@ int main (int argc, char **argv) { /* throw event */ BarUiStartEventCmd (&settings, "songstart", curStation, - curSong); + curSong, PIANO_RET_OK); /* start player */ pthread_create (&playerThread, NULL, BarPlayerThread, @@ -378,7 +378,8 @@ inline void BarUiPrintSong (PianoSong_t *song, PianoStation_t *station) { * @param piano error-code */ void BarUiStartEventCmd (const BarSettings_t *settings, const char *type, - const PianoStation_t *curStation, const PianoSong_t *curSong) { + const PianoStation_t *curStation, const PianoSong_t *curSong, + PianoReturn_t pRet) { pid_t chld; char pipeBuf[1024]; int pipeFd[2]; @@ -394,11 +395,15 @@ void BarUiStartEventCmd (const BarSettings_t *settings, const char *type, "artist=%s\n" "title=%s\n" "album=%s\n" - "stationName=%s\n", - curSong->artist, - curSong->title, - curSong->album, - curStation->name); + "stationName=%s\n" + "pRet=%i\n" + "pRetStr=%s\n", + curSong == NULL ? "" : curSong->artist, + curSong == NULL ? "" : curSong->title, + curSong == NULL ? "" : curSong->album, + curStation == NULL ? "" : curStation->name, + pRet, + PianoErrorToStr (pRet)); if (pipe (pipeFd) == -1) { BarUiMsg (MSG_ERR, "Cannot create eventcmd pipe. (%s)\n", strerror (errno)); @@ -42,6 +42,7 @@ void BarStationFromGenre (PianoHandle_t *ph, FILE *curFd); inline void BarUiPrintStation (PianoStation_t *); inline void BarUiPrintSong (PianoSong_t *, PianoStation_t *); void BarUiStartEventCmd (const BarSettings_t *settings, const char *type, - const PianoStation_t *curStation, const PianoSong_t *curSong); + const PianoStation_t *curStation, const PianoSong_t *curSong, + PianoReturn_t); #endif /* _UI_H */ diff --git a/src/ui_act.c b/src/ui_act.c index b897d93..60525ff 100644 --- a/src/ui_act.c +++ b/src/ui_act.c @@ -83,6 +83,7 @@ void BarUiActHelp (BAR_KS_ARGS) { */ void BarUiActAddMusic (BAR_KS_ARGS) { char *musicId; + PianoReturn_t pRet = PIANO_RET_ERR; RETURN_IF_NO_STATION; @@ -92,36 +93,43 @@ void BarUiActAddMusic (BAR_KS_ARGS) { return; } BarUiMsg (MSG_INFO, "Adding music to station... "); - BarUiPrintPianoStatus (PianoStationAddMusic (ph, - *curStation, musicId)); + pRet = BarUiPrintPianoStatus (PianoStationAddMusic (ph, *curStation, musicId)); free (musicId); + + BarUiStartEventCmd (settings, "stationaddmusic", *curStation, *curSong, pRet); } } /* ban song */ void BarUiActBanSong (BAR_KS_ARGS) { + PianoReturn_t pRet = PIANO_RET_ERR; + RETURN_IF_NO_SONG; if (!BarTransformIfShared (ph, *curStation)) { return; } BarUiMsg (MSG_INFO, "Banning song... "); - if (BarUiPrintPianoStatus (PianoRateTrack (ph, *curSong, - PIANO_RATE_BAN)) == PIANO_RET_OK) { + if ((pRet = BarUiPrintPianoStatus (PianoRateTrack (ph, *curSong, + PIANO_RATE_BAN))) == PIANO_RET_OK) { BarUiDoSkipSong (player); } + BarUiStartEventCmd (settings, "songban", *curStation, *curSong, pRet); } /* create new station */ void BarUiActCreateStation (BAR_KS_ARGS) { char *musicId; + PianoReturn_t pRet = PIANO_RET_ERR; + musicId = BarUiSelectMusicId (ph, curFd); if (musicId != NULL) { BarUiMsg (MSG_INFO, "Creating station... "); - BarUiPrintPianoStatus (PianoCreateStation (ph, "mi", musicId)); + pRet = BarUiPrintPianoStatus (PianoCreateStation (ph, "mi", musicId)); free (musicId); + BarUiStartEventCmd (settings, "stationcreate", *curStation, *curSong, pRet); } } @@ -129,32 +137,37 @@ void BarUiActCreateStation (BAR_KS_ARGS) { */ void BarUiActAddSharedStation (BAR_KS_ARGS) { char stationId[50]; + PianoReturn_t pRet = PIANO_RET_ERR; BarUiMsg (MSG_QUESTION, "Station id: "); if (BarReadline (stationId, sizeof (stationId), "0123456789", 0, 0, curFd) > 0) { BarUiMsg (MSG_INFO, "Adding shared station... "); - BarUiPrintPianoStatus (PianoCreateStation (ph, "sh", + pRet = BarUiPrintPianoStatus (PianoCreateStation (ph, "sh", (char *) stationId)); + BarUiStartEventCmd (settings, "stationaddshared", *curStation, *curSong, pRet); } } /* delete current station */ void BarUiActDeleteStation (BAR_KS_ARGS) { + PianoReturn_t pRet = PIANO_RET_ERR; + RETURN_IF_NO_STATION; BarUiMsg (MSG_QUESTION, "Really delete \"%s\"? [yN] ", (*curStation)->name); if (BarReadlineYesNo (0, curFd)) { BarUiMsg (MSG_INFO, "Deleting station... "); - if (BarUiPrintPianoStatus (PianoDeleteStation (ph, - *curStation)) == PIANO_RET_OK) { + if ((pRet = BarUiPrintPianoStatus (PianoDeleteStation (ph, + *curStation))) == PIANO_RET_OK) { BarUiDoSkipSong (player); PianoDestroyPlaylist (ph); *curSong = NULL; *curStation = NULL; } + BarUiStartEventCmd (settings, "stationdelete", *curStation, *curSong, pRet); } } @@ -162,15 +175,17 @@ void BarUiActDeleteStation (BAR_KS_ARGS) { */ void BarUiActExplain (BAR_KS_ARGS) { char *explanation; + PianoReturn_t pRet = PIANO_RET_ERR; RETURN_IF_NO_STATION; BarUiMsg (MSG_INFO, "Receiving explanation... "); - if (BarUiPrintPianoStatus (PianoExplain (ph, *curSong, - &explanation)) == PIANO_RET_OK) { + if ((pRet = BarUiPrintPianoStatus (PianoExplain (ph, *curSong, + &explanation))) == PIANO_RET_OK) { BarUiMsg (MSG_INFO, "%s\n", explanation); free (explanation); } + BarUiStartEventCmd (settings, "songexplain", *curStation, *curSong, pRet); } /* choose genre station and add it as shared station @@ -221,13 +236,16 @@ void BarUiActDebug (BAR_KS_ARGS) { /* rate current song */ void BarUiActLoveSong (BAR_KS_ARGS) { + PianoReturn_t pRet = PIANO_RET_ERR; + RETURN_IF_NO_SONG; if (!BarTransformIfShared (ph, *curStation)) { return; } BarUiMsg (MSG_INFO, "Loving song... "); - BarUiPrintPianoStatus (PianoRateTrack (ph, *curSong, PIANO_RATE_LOVE)); + pRet = BarUiPrintPianoStatus (PianoRateTrack (ph, *curSong, PIANO_RATE_LOVE)); + BarUiStartEventCmd (settings, "songlove", *curStation, *curSong, pRet); } /* skip song @@ -240,6 +258,7 @@ void BarUiActSkipSong (BAR_KS_ARGS) { */ void BarUiActMoveSong (BAR_KS_ARGS) { PianoStation_t *moveStation, *fromStation; + PianoReturn_t pRet = PIANO_RET_ERR; RETURN_IF_NO_SONG; @@ -255,10 +274,11 @@ void BarUiActMoveSong (BAR_KS_ARGS) { BarUiMsg (MSG_ERR, "Station not found\n"); return; } - if (BarUiPrintPianoStatus (PianoMoveSong (ph, fromStation, - moveStation, *curSong)) == PIANO_RET_OK) { + if ((pRet = BarUiPrintPianoStatus (PianoMoveSong (ph, fromStation, + moveStation, *curSong))) == PIANO_RET_OK) { BarUiDoSkipSong (player); } + BarUiStartEventCmd (settings, "songmove", *curStation, *curSong, pRet); } } @@ -275,6 +295,7 @@ void BarUiActPause (BAR_KS_ARGS) { */ void BarUiActRenameStation (BAR_KS_ARGS) { char lineBuf[100]; + PianoReturn_t pRet = PIANO_RET_ERR; RETURN_IF_NO_STATION; @@ -284,8 +305,9 @@ void BarUiActRenameStation (BAR_KS_ARGS) { return; } BarUiMsg (MSG_INFO, "Renaming station... "); - BarUiPrintPianoStatus (PianoRenameStation (ph, *curStation, + pRet = BarUiPrintPianoStatus (PianoRenameStation (ph, *curStation, (char *) lineBuf)); + BarUiStartEventCmd (settings, "stationrename", *curStation, *curSong, pRet); } } @@ -304,13 +326,16 @@ void BarUiActSelectStation (BAR_KS_ARGS) { /* ban song for 1 month */ void BarUiActTempBanSong (BAR_KS_ARGS) { + PianoReturn_t pRet = PIANO_RET_ERR; + RETURN_IF_NO_SONG; BarUiMsg (MSG_INFO, "Putting song on shelf... "); - if (BarUiPrintPianoStatus (PianoSongTired (ph, *curSong)) == + if ((pRet = BarUiPrintPianoStatus (PianoSongTired (ph, *curSong))) == PIANO_RET_OK) { BarUiDoSkipSong (player); } + BarUiStartEventCmd (settings, "songshelf", *curStation, *curSong, pRet); } /* print upcoming songs @@ -336,6 +361,8 @@ void BarUiActPrintUpcoming (BAR_KS_ARGS) { * quickmix */ void BarUiActSelectQuickMix (BAR_KS_ARGS) { + PianoReturn_t pRet = PIANO_RET_ERR; + RETURN_IF_NO_STATION; if ((*curStation)->isQuickMix) { @@ -345,7 +372,9 @@ void BarUiActSelectQuickMix (BAR_KS_ARGS) { selStation->useQuickMix = !selStation->useQuickMix; } BarUiMsg (MSG_INFO, "Setting quickmix stations... "); - BarUiPrintPianoStatus (PianoSetQuickmix (ph)); + pRet = BarUiPrintPianoStatus (PianoSetQuickmix (ph)); + BarUiStartEventCmd (settings, "stationquickmixtoggle", *curStation, + *curSong, pRet); } else { BarUiMsg (MSG_ERR, "Not a QuickMix station.\n"); } |