cspot duration

This commit is contained in:
Philippe G
2021-12-26 15:48:25 -08:00
parent 676acbdbc2
commit e85733fc32
6 changed files with 33 additions and 27 deletions

View File

@@ -38,7 +38,7 @@ void SpircController::subscribe() {
}
void SpircController::setPause(bool isPaused, bool notifyPlayer) {
sendEvent(CSpotEventType::PLAY_PAUSE, isPaused);
sendEvent(CSpotEventType::PLAY_PAUSE, isPaused);
if (isPaused) {
CSPOT_LOG(debug, "External pause command");
if (notifyPlayer) player->pause();
@@ -55,29 +55,29 @@ void SpircController::disconnect(void) {
player->cancelCurrentTrack();
state->setActive(false);
notify();
// Send the event at the end at it might be a last gasp
sendEvent(CSpotEventType::DISC);
// Send the event at the end at it might be a last gasp
sendEvent(CSpotEventType::DISC);
}
void SpircController::playToggle() {
if (state->innerFrame.state->status.value() == PlayStatus::kPlayStatusPause) {
setPause(false);
} else {
setPause(true);
}
if (state->innerFrame.state->status.value() == PlayStatus::kPlayStatusPause) {
setPause(false);
} else {
setPause(true);
}
}
void SpircController::adjustVolume(int by) {
if (state->innerFrame.device_state->volume.has_value()) {
int volume = state->innerFrame.device_state->volume.value() + by;
if (volume < 0) volume = 0;
else if (volume > MAX_VOLUME) volume = MAX_VOLUME;
setVolume(volume);
}
if (state->innerFrame.device_state->volume.has_value()) {
int volume = state->innerFrame.device_state->volume.value() + by;
if (volume < 0) volume = 0;
else if (volume > MAX_VOLUME) volume = MAX_VOLUME;
setVolume(volume);
}
}
void SpircController::setVolume(int volume) {
setRemoteVolume(volume);
setRemoteVolume(volume);
player->setVolume(volume);
configMan->save();
}
@@ -111,21 +111,21 @@ void SpircController::handleFrame(std::vector<uint8_t> &data) {
// Pause the playback if another player took control
if (state->isActive() &&
state->remoteFrame.device_state->is_active.value()) {
disconnect();
disconnect();
}
break;
}
case MessageType::kMessageTypeSeek: {
CSPOT_LOG(debug, "Seek command");
sendEvent(CSpotEventType::SEEK, (int) state->remoteFrame.position.value());
sendEvent(CSpotEventType::SEEK, (int) state->remoteFrame.position.value());
state->updatePositionMs(state->remoteFrame.position.value());
this->player->seekMs(state->remoteFrame.position.value());
notify();
break;
}
case MessageType::kMessageTypeVolume:
sendEvent(CSpotEventType::VOLUME, (int) state->remoteFrame.volume.value());
setVolume(state->remoteFrame.volume.value());
sendEvent(CSpotEventType::VOLUME, (int) state->remoteFrame.volume.value());
setVolume(state->remoteFrame.volume.value());
break;
case MessageType::kMessageTypePause:
setPause(true);
@@ -134,11 +134,11 @@ void SpircController::handleFrame(std::vector<uint8_t> &data) {
setPause(false);
break;
case MessageType::kMessageTypeNext:
sendEvent(CSpotEventType::NEXT);
sendEvent(CSpotEventType::NEXT);
nextSong();
break;
case MessageType::kMessageTypePrev:
sendEvent(CSpotEventType::PREV);
sendEvent(CSpotEventType::PREV);
prevSong();
break;
case MessageType::kMessageTypeLoad: {
@@ -182,7 +182,7 @@ void SpircController::handleFrame(std::vector<uint8_t> &data) {
}
void SpircController::loadTrack(uint32_t position_ms, bool isPaused) {
sendEvent(CSpotEventType::LOAD, (int) position_ms);
sendEvent(CSpotEventType::LOAD, (int) position_ms);
state->setPlaybackState(PlaybackState::Loading);
std::function<void()> loadedLambda = [=]() {
// Loading finished, notify that playback started
@@ -201,7 +201,7 @@ void SpircController::sendEvent(CSpotEventType eventType, std::variant<TrackInfo
if (eventHandler != nullptr) {
CSpotEvent event = {
.eventType = eventType,
.data = data,
.data = data,
};
eventHandler(event);
@@ -217,9 +217,9 @@ void SpircController::setEventHandler(cspotEventHandler callback) {
info.artist = track.artist;
info.imageUrl = track.imageUrl;
info.name = track.name;
info.duration = track.duration;
info.duration = track.duration;
this->sendEvent(CSpotEventType::TRACK_INFO, info);
this->sendEvent(CSpotEventType::TRACK_INFO, info);
});
}