diff options
Diffstat (limited to 'src/ui_act.c')
| -rw-r--r-- | src/ui_act.c | 224 | 
1 files changed, 143 insertions, 81 deletions
| diff --git a/src/ui_act.c b/src/ui_act.c index 23b0f34..bb0769b 100644 --- a/src/ui_act.c +++ b/src/ui_act.c @@ -52,12 +52,16 @@ static inline void BarUiDoSkipSong (struct audioPlayer *player) {   *	@param transform this station   *	@return 0 = error, 1 = everything went well   */ -static int BarTransformIfShared (PianoHandle_t *ph, PianoStation_t *station) { +static int BarTransformIfShared (PianoHandle_t *ph, WaitressHandle_t *waith, +		PianoStation_t *station) { +	PianoReturn_t pRet; +	WaitressReturn_t wRet; +  	/* shared stations must be transformed */  	if (!station->isCreator) {  		BarUiMsg (MSG_INFO, "Transforming station... "); -		if (BarUiPrintPianoStatus (PianoTransformShared (ph, station)) != -				PIANO_RET_OK) { +		if (!BarUiPianoCall (ph, PIANO_REQUEST_TRANSFORM_STATION, waith, +				station, &pRet, &wRet)) {  			return 0;  		}  	} @@ -104,81 +108,100 @@ void BarUiActHelp (BAR_KS_ARGS) {  /*	add more music to current station   */  void BarUiActAddMusic (BAR_KS_ARGS) { -	char *musicId; -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet; +	PianoRequestDataAddSeed_t reqData;  	RETURN_IF_NO_STATION; -	musicId = BarUiSelectMusicId (ph, curFd, (*curSong)->musicId); -	if (musicId != NULL) { -		if (!BarTransformIfShared (ph, *curStation)) { +	reqData.musicId = BarUiSelectMusicId (ph, waith, curFd, (*curSong)->musicId); +	if (reqData.musicId != NULL) { +		if (!BarTransformIfShared (ph, waith, *curStation)) {  			return;  		} +		reqData.station = *curStation; +  		BarUiMsg (MSG_INFO, "Adding music to station... "); -		pRet = BarUiPrintPianoStatus (PianoStationAddMusic (ph, *curStation, musicId)); -		free (musicId); +		BarUiPianoCall (ph, PIANO_REQUEST_ADD_SEED, waith, &reqData, &pRet, +				&wRet); + +		free (reqData.musicId);  		BarUiStartEventCmd (settings, "stationaddmusic", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	}  }  /*	ban song   */  void BarUiActBanSong (BAR_KS_ARGS) { -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	RETURN_IF_NO_SONG; -	if (!BarTransformIfShared (ph, *curStation)) { +	if (!BarTransformIfShared (ph, waith, *curStation)) {  		return;  	} + +	PianoRequestDataRateSong_t reqData; +	reqData.song = *curSong; +	reqData.rating = PIANO_RATE_BAN; +  	BarUiMsg (MSG_INFO, "Banning song... "); -	if ((pRet = BarUiPrintPianoStatus (PianoRateTrack (ph, *curSong, -			PIANO_RATE_BAN))) == PIANO_RET_OK) { +	if (BarUiPianoCall (ph, PIANO_REQUEST_RATE_SONG, waith, &reqData, &pRet, +			&wRet)) {  		BarUiDoSkipSong (player);  	}  	BarUiStartEventCmd (settings, "songban", *curStation, *curSong, player, -			pRet); +			pRet, wRet);  }  /*	create new station   */  void BarUiActCreateStation (BAR_KS_ARGS) { -	char *musicId; -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet; +	PianoRequestDataCreateStation_t reqData; -	musicId = BarUiSelectMusicId (ph, curFd, NULL); -	if (musicId != NULL) { +	reqData.id = BarUiSelectMusicId (ph, waith, curFd, NULL); +	if (reqData.id != NULL) { +		reqData.type = "mi";  		BarUiMsg (MSG_INFO, "Creating station... "); -		pRet = BarUiPrintPianoStatus (PianoCreateStation (ph, "mi", musicId)); -		free (musicId); +		BarUiPianoCall (ph, PIANO_REQUEST_CREATE_STATION, waith, &reqData, +				&pRet, &wRet); +		free (reqData.id);  		BarUiStartEventCmd (settings, "stationcreate", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	}  }  /*	add shared station by id   */  void BarUiActAddSharedStation (BAR_KS_ARGS) { +	PianoReturn_t pRet; +	WaitressReturn_t wRet; +	PianoRequestDataCreateStation_t reqData;  	char stationId[50]; -	PianoReturn_t pRet = PIANO_RET_ERR;  	BarUiMsg (MSG_QUESTION, "Station id: ");  	if (BarReadline (stationId, sizeof (stationId), "0123456789", 0, 0,  			curFd) > 0) { +		reqData.id = stationId; +		reqData.type = "sh";  		BarUiMsg (MSG_INFO, "Adding shared station... "); -		pRet = BarUiPrintPianoStatus (PianoCreateStation (ph, "sh", -				(char *) stationId)); +		BarUiPianoCall (ph, PIANO_REQUEST_CREATE_STATION, waith, &reqData, +				&pRet, &wRet);  		BarUiStartEventCmd (settings, "stationaddshared", *curStation, -				*curSong, player, pRet); +				*curSong, player, pRet, wRet);  	}  }  /*	delete current station   */  void BarUiActDeleteStation (BAR_KS_ARGS) { -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	RETURN_IF_NO_STATION; @@ -186,41 +209,44 @@ void BarUiActDeleteStation (BAR_KS_ARGS) {  			(*curStation)->name);  	if (BarReadlineYesNo (0, curFd)) {  		BarUiMsg (MSG_INFO, "Deleting station... "); -		if ((pRet = BarUiPrintPianoStatus (PianoDeleteStation (ph, -				*curStation))) == PIANO_RET_OK) { +		if (BarUiPianoCall (ph, PIANO_REQUEST_DELETE_STATION, waith, +				*curStation, &pRet, &wRet)) {  			BarUiDoSkipSong (player);  			PianoDestroyPlaylist (*curSong);  			*curSong = NULL;  			*curStation = NULL;  		}  		BarUiStartEventCmd (settings, "stationdelete", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	}  }  /*	explain pandora's song choice   */  void BarUiActExplain (BAR_KS_ARGS) { -	char *explanation; -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet; +	PianoRequestDataExplain_t reqData;  	RETURN_IF_NO_STATION; +	reqData.song = *curSong; +  	BarUiMsg (MSG_INFO, "Receiving explanation... "); -	if ((pRet = BarUiPrintPianoStatus (PianoExplain (ph, *curSong, -			&explanation))) == PIANO_RET_OK) { -		BarUiMsg (MSG_INFO, "%s\n", explanation); -		free (explanation); +	if (BarUiPianoCall (ph, PIANO_REQUEST_EXPLAIN, waith, &reqData, &pRet, +			&wRet)) { +		BarUiMsg (MSG_INFO, "%s\n", reqData.retExplain); +		free (reqData.retExplain);  	}  	BarUiStartEventCmd (settings, "songexplain", *curStation, *curSong, player, -			pRet); +			pRet, wRet);  }  /*	choose genre station and add it as shared station   */  void BarUiActStationFromGenre (BAR_KS_ARGS) {  	/* use genre station */ -	BarStationFromGenre (ph, curFd); +	BarStationFromGenre (ph, waith, curFd);  }  /*	print verbose song information @@ -264,17 +290,24 @@ void BarUiActDebug (BAR_KS_ARGS) {  /*	rate current song   */  void BarUiActLoveSong (BAR_KS_ARGS) { -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	RETURN_IF_NO_SONG; -	if (!BarTransformIfShared (ph, *curStation)) { +	if (!BarTransformIfShared (ph, waith, *curStation)) {  		return;  	} + +	PianoRequestDataRateSong_t reqData; +	reqData.song = *curSong; +	reqData.rating = PIANO_RATE_LOVE; +  	BarUiMsg (MSG_INFO, "Loving song... "); -	pRet = BarUiPrintPianoStatus (PianoRateTrack (ph, *curSong, PIANO_RATE_LOVE)); +	BarUiPianoCall (ph, PIANO_REQUEST_RATE_SONG, waith, &reqData, &pRet, +			&wRet);  	BarUiStartEventCmd (settings, "songlove", *curStation, *curSong, player, -			pRet); +			pRet, wRet);  }  /*	skip song @@ -286,29 +319,36 @@ void BarUiActSkipSong (BAR_KS_ARGS) {  /*	move song to different station   */  void BarUiActMoveSong (BAR_KS_ARGS) { -	PianoStation_t *moveStation, *fromStation; -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet; +	PianoRequestDataMoveSong_t reqData; + +	reqData.step = 0;  	RETURN_IF_NO_SONG; -	moveStation = BarUiSelectStation (ph, "Move song to station: ", curFd); -	if (moveStation != NULL) { -		if (!BarTransformIfShared (ph, *curStation) || -				!BarTransformIfShared (ph, moveStation)) { +	reqData.to = BarUiSelectStation (ph, "Move song to station: ", curFd); +	if (reqData.to != NULL) { +		/* find original station (just is case we're playing a quickmix +		 * station) */ +		reqData.from = PianoFindStationById (ph->stations, (*curSong)->stationId); +		if (reqData.from == NULL) { +			BarUiMsg (MSG_ERR, "Station not found\n");  			return;  		} -		BarUiMsg (MSG_INFO, "Moving song to \"%s\"... ", moveStation->name); -		fromStation = PianoFindStationById (ph->stations, (*curSong)->stationId); -		if (fromStation == NULL) { -			BarUiMsg (MSG_ERR, "Station not found\n"); + +		if (!BarTransformIfShared (ph, waith, reqData.from) || +				!BarTransformIfShared (ph, waith, reqData.to)) {  			return;  		} -		if ((pRet = BarUiPrintPianoStatus (PianoMoveSong (ph, fromStation, -				moveStation, *curSong))) == PIANO_RET_OK) { +		BarUiMsg (MSG_INFO, "Moving song to \"%s\"... ", reqData.to->name); +		reqData.song = *curSong; +		if (BarUiPianoCall (ph, PIANO_REQUEST_MOVE_SONG, waith, &reqData, +				&pRet, &wRet)) {  			BarUiDoSkipSong (player);  		}  		BarUiStartEventCmd (settings, "songmove", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	}  } @@ -324,21 +364,27 @@ void BarUiActPause (BAR_KS_ARGS) {  /*	rename current station   */  void BarUiActRenameStation (BAR_KS_ARGS) { +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	char lineBuf[100]; -	PianoReturn_t pRet = PIANO_RET_ERR;  	RETURN_IF_NO_STATION;  	BarUiMsg (MSG_QUESTION, "New name: ");  	if (BarReadlineStr (lineBuf, sizeof (lineBuf), 0, curFd) > 0) { -		if (!BarTransformIfShared (ph, *curStation)) { +		PianoRequestDataRenameStation_t reqData; +		if (!BarTransformIfShared (ph, waith, *curStation)) {  			return;  		} + +		reqData.station = *curStation; +		reqData.newName = lineBuf; +  		BarUiMsg (MSG_INFO, "Renaming station... "); -		pRet = BarUiPrintPianoStatus (PianoRenameStation (ph, *curStation, -				(char *) lineBuf)); +		BarUiPianoCall (ph, PIANO_REQUEST_RENAME_STATION, waith, &reqData, +				&pRet, &wRet);  		BarUiStartEventCmd (settings, "stationrename", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	}  } @@ -357,17 +403,18 @@ void BarUiActSelectStation (BAR_KS_ARGS) {  /*	ban song for 1 month   */  void BarUiActTempBanSong (BAR_KS_ARGS) { -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	RETURN_IF_NO_SONG;  	BarUiMsg (MSG_INFO, "Putting song on shelf... "); -	if ((pRet = BarUiPrintPianoStatus (PianoSongTired (ph, *curSong))) == -			PIANO_RET_OK) { +	if (BarUiPianoCall (ph, PIANO_REQUEST_ADD_TIRED_SONG, waith, *curSong, +			&pRet, &wRet)) {  		BarUiDoSkipSong (player);  	}  	BarUiStartEventCmd (settings, "songshelf", *curStation, *curSong, player, -			pRet); +			pRet, wRet);  }  /*	print upcoming songs @@ -393,7 +440,8 @@ void BarUiActPrintUpcoming (BAR_KS_ARGS) {   *	quickmix   */  void BarUiActSelectQuickMix (BAR_KS_ARGS) { -	PianoReturn_t pRet = PIANO_RET_ERR; +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	RETURN_IF_NO_STATION; @@ -404,9 +452,10 @@ void BarUiActSelectQuickMix (BAR_KS_ARGS) {  			selStation->useQuickMix = !selStation->useQuickMix;  		}  		BarUiMsg (MSG_INFO, "Setting quickmix stations... "); -		pRet = BarUiPrintPianoStatus (PianoSetQuickmix (ph)); +		BarUiPianoCall (ph, PIANO_REQUEST_SET_QUICKMIX, waith, NULL, &pRet, +				&wRet);  		BarUiStartEventCmd (settings, "stationquickmixtoggle", *curStation, -				*curSong, player, pRet); +				*curSong, player, pRet, wRet);  	} else {  		BarUiMsg (MSG_ERR, "Not a QuickMix station.\n");  	} @@ -422,6 +471,8 @@ void BarUiActQuit (BAR_KS_ARGS) {  /*	song history   */  void BarUiActHistory (BAR_KS_ARGS) { +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	char selectBuf[2], allowedBuf[3];  	PianoSong_t *selectedSong; @@ -440,7 +491,6 @@ void BarUiActHistory (BAR_KS_ARGS) {  			if (selectBuf[0] == settings->keys[BAR_KS_LOVE] ||  					selectBuf[0] == settings->keys[BAR_KS_BAN]) { -				PianoReturn_t pRet = PIANO_RET_ERR;  				/* make sure we're transforming the _original_ station (not  				 * curStation) */  				PianoStation_t *songStation = @@ -452,23 +502,32 @@ void BarUiActHistory (BAR_KS_ARGS) {  					return;  				} -				if (!BarTransformIfShared (ph, songStation)) { +				if (!BarTransformIfShared (ph, waith, songStation)) {  					return;  				}  				if (selectBuf[0] == settings->keys[BAR_KS_LOVE]) {  					/* FIXME: copy&waste */ +					PianoRequestDataRateSong_t reqData; +					reqData.song = selectedSong; +					reqData.rating = PIANO_RATE_LOVE; +  					BarUiMsg (MSG_INFO, "Loving song... "); -					pRet = BarUiPrintPianoStatus (PianoRateTrack (ph, -							selectedSong, PIANO_RATE_LOVE)); +					BarUiPianoCall (ph, PIANO_REQUEST_RATE_SONG, waith, +							&reqData, &pRet, &wRet); +  					BarUiStartEventCmd (settings, "songlove", songStation, -							selectedSong, player, pRet); +							selectedSong, player, pRet, wRet);  				} else if (selectBuf[0] == settings->keys[BAR_KS_BAN]) { +					PianoRequestDataRateSong_t reqData; +					reqData.song = selectedSong; +					reqData.rating = PIANO_RATE_BAN; +  					BarUiMsg (MSG_INFO, "Banning song... "); -					pRet = BarUiPrintPianoStatus (PianoRateTrack (ph, -							selectedSong, PIANO_RATE_BAN)); +					BarUiPianoCall (ph, PIANO_REQUEST_RATE_SONG, waith, +							&reqData, &pRet, &wRet);  					BarUiStartEventCmd (settings, "songban", songStation, -							selectedSong, player, pRet); +							selectedSong, player, pRet, wRet);  				} /* end if */  			} /* end if selectBuf[0] */  		} /* end if selectedSong != NULL */ @@ -481,8 +540,9 @@ void BarUiActHistory (BAR_KS_ARGS) {  /*	create song bookmark   */  void BarUiActBookmark (BAR_KS_ARGS) { +	PianoReturn_t pRet; +	WaitressReturn_t wRet;  	char selectBuf[2]; -	PianoReturn_t pRet = PIANO_RET_ERR;  	RETURN_IF_NO_SONG; @@ -490,14 +550,16 @@ void BarUiActBookmark (BAR_KS_ARGS) {  	BarReadline (selectBuf, sizeof (selectBuf), "sa", 1, 0, curFd);  	if (selectBuf[0] == 's') {  		BarUiMsg (MSG_INFO, "Bookmarking song... "); -		pRet = BarUiPrintPianoStatus (PianoBookmarkSong (ph, *curSong)); +		BarUiPianoCall (ph, PIANO_REQUEST_BOOKMARK_SONG, waith, *curSong, +				&pRet, &wRet);  		BarUiStartEventCmd (settings, "songbookmark", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	} else if (selectBuf[0] == 'a') {  		BarUiMsg (MSG_INFO, "Bookmarking artist... "); -		pRet = BarUiPrintPianoStatus (PianoBookmarkArtist (ph, *curSong)); +		BarUiPianoCall (ph, PIANO_REQUEST_BOOKMARK_ARTIST, waith, *curSong, +				&pRet, &wRet);  		BarUiStartEventCmd (settings, "artistbookmark", *curStation, *curSong, -				player, pRet); +				player, pRet, wRet);  	}  } | 
