Files
qyouvideo/player.cpp

72 lines
1.7 KiB
C++
Raw Normal View History

2025-10-16 19:21:35 +02:00
#include "player.h"
2025-10-16 23:20:10 +02:00
// Public
Player::Player(QObject *parent) : QObject(parent),
player(this),
output(this)
2025-10-16 19:21:35 +02:00
{
2025-10-16 23:20:10 +02:00
QObject::connect(&this->player, &QMediaPlayer::playbackStateChanged, this, [this] () {
qDebug("Player::Player()->Lambda: Playing got changed!");
emit this->playingChanged();
});
QObject::connect(&this->output, &QAudioOutput::volumeChanged, this, [this] () {
qDebug("Player::Player()->Lambda: Volume got changed!");
emit this->volumeChanged();
});
this->output.setVolume(0.3);
this->player.setAudioOutput(&this->output);
2025-10-16 19:21:35 +02:00
qDebug("Player::Player(): Constructed");
}
Player::~Player()
{
qDebug("Player::~Player(): Destructed");
}
2025-10-16 23:20:10 +02:00
bool Player::playing() const
{
return this->player.playbackState() == QMediaPlayer::PlayingState;
}
float Player::volume() const
{
return this->output.volume();
}
void Player::setVolume(float newVolume)
{
this->output.setVolume(newVolume);
}
// Public slots
void Player::startPlaying(u_int8_t index)
2025-10-16 19:21:35 +02:00
{
2025-10-16 23:20:10 +02:00
if (index < 0 || index >= maxStations)
{
qWarning("Player::startPlaying(): Tried accessing out of bounds.");
return;
}
if (this->playing()) {
this->stopPlaying();
}
this->player.setSource(QUrl(streamPrefix + stations[index].slug));
this->player.play();
qDebug("Player::startPlaying(): Starting playing");
2025-10-16 19:21:35 +02:00
}
void Player::stopPlaying()
{
2025-10-16 23:20:10 +02:00
if (this->playing())
{
qWarning("Player::stopPlaying(): Prevented redundant stopPlaying() call.");
return;
}
this->player.stop();
this->player.setSource(QUrl(""));
qDebug("Player::stopPlaying(): Stopping playback...");
2025-10-16 19:21:35 +02:00
}