Moving emitTrackSkipped from Next to PlayAt, to handle cases where user doesn't use Next button to skip a track. Also emit TrackSkipped in Stop if track was not ended

This commit is contained in:
Arnaud Bienner 2010-12-10 00:11:38 +00:00
parent 49f46bced8
commit 6b35eea469

View File

@ -176,10 +176,6 @@ void Player::Next() {
} }
void Player::NextInternal(Engine::TrackChangeType change) { void Player::NextInternal(Engine::TrackChangeType change) {
if (change == Engine::Manual) {
emit TrackSkipped(current_item_);
}
if (playlists_->active()->stop_after_current()) { if (playlists_->active()->stop_after_current()) {
playlists_->active()->StopAfter(-1); playlists_->active()->StopAfter(-1);
Stop(); Stop();
@ -257,6 +253,9 @@ void Player::PlayPause() {
} }
void Player::Stop() { void Player::Stop() {
if (engine_->position() != engine_->length()) {
emit TrackSkipped(current_item_);
}
engine_->Stop(); engine_->Stop();
playlists_->active()->set_current_index(-1); playlists_->active()->set_current_index(-1);
current_item_.reset(); current_item_.reset();
@ -304,6 +303,10 @@ Engine::State Player::GetState() const {
} }
void Player::PlayAt(int index, Engine::TrackChangeType change, bool reshuffle) { void Player::PlayAt(int index, Engine::TrackChangeType change, bool reshuffle) {
if (change == Engine::Manual && engine_->position() != engine_->length()) {
emit TrackSkipped(current_item_);
}
if (reshuffle) if (reshuffle)
playlists_->active()->set_current_index(-1); playlists_->active()->set_current_index(-1);
playlists_->active()->set_current_index(index); playlists_->active()->set_current_index(index);