mirror of https://github.com/KDE/kasts.git
Final(?) step of cleaning up MPRIS2 implementation
This commit is contained in:
parent
3e79321c90
commit
2afc8803f8
|
@ -25,10 +25,11 @@ MediaPlayer2Player::MediaPlayer2Player(AudioManager *audioPlayer, bool showProgr
|
||||||
QStringLiteral("Update"))),
|
QStringLiteral("Update"))),
|
||||||
mShowProgressOnTaskBar(showProgressOnTaskBar)
|
mShowProgressOnTaskBar(showProgressOnTaskBar)
|
||||||
{
|
{
|
||||||
// Signals from AudioManager which are directly forwarded
|
// This will signal when the track is changed
|
||||||
connect(m_audioPlayer, &AudioManager::sourceChanged,
|
connect(m_audioPlayer, &AudioManager::entryChanged,
|
||||||
this, &MediaPlayer2Player::playerSourceChanged, Qt::QueuedConnection);
|
this, &MediaPlayer2Player::setEntry);
|
||||||
|
|
||||||
|
// Signals from AudioManager which are directly forwarded
|
||||||
connect(m_audioPlayer, &AudioManager::playbackRateChanged,
|
connect(m_audioPlayer, &AudioManager::playbackRateChanged,
|
||||||
this, &MediaPlayer2Player::rateChanged);
|
this, &MediaPlayer2Player::rateChanged);
|
||||||
// TODO: implement this in AudioManager, such that it can be forwarded
|
// TODO: implement this in AudioManager, such that it can be forwarded
|
||||||
|
@ -53,20 +54,20 @@ MediaPlayer2Player::MediaPlayer2Player(AudioManager *audioPlayer, bool showProgr
|
||||||
connect(m_audioPlayer, &AudioManager::volumeChanged,
|
connect(m_audioPlayer, &AudioManager::volumeChanged,
|
||||||
this, &MediaPlayer2Player::playerVolumeChanged);
|
this, &MediaPlayer2Player::playerVolumeChanged);
|
||||||
connect(m_audioPlayer, &AudioManager::positionChanged,
|
connect(m_audioPlayer, &AudioManager::positionChanged,
|
||||||
this, &MediaPlayer2Player::audioPositionChanged); // for progress indicator on taskbar
|
this, &MediaPlayer2Player::playerSeeked); // Implement Seeked signal
|
||||||
connect(m_audioPlayer, &AudioManager::positionChanged,
|
|
||||||
this, &MediaPlayer2Player::playerSeeked); // Seeked signal
|
|
||||||
|
|
||||||
// Custom signals not directly connected to AudioManager
|
// signals needed for progress indicator on taskbar
|
||||||
connect(m_audioPlayer, &AudioManager::durationChanged,
|
connect(m_audioPlayer, &AudioManager::durationChanged,
|
||||||
this, &MediaPlayer2Player::audioDurationChanged); // for progress indicator on taskbar and to indicate a change of track
|
this, &MediaPlayer2Player::audioDurationChanged);
|
||||||
|
connect(m_audioPlayer, &AudioManager::positionChanged,
|
||||||
|
this, &MediaPlayer2Player::audioPositionChanged);
|
||||||
|
|
||||||
if (m_audioPlayer) {
|
if (m_audioPlayer) {
|
||||||
m_volume = m_audioPlayer->volume() / 100;
|
m_volume = m_audioPlayer->volume() / 100;
|
||||||
signalPropertiesChange(QStringLiteral("Volume"), Volume());
|
signalPropertiesChange(QStringLiteral("Volume"), Volume());
|
||||||
|
|
||||||
if (m_audioPlayer->entry()) {
|
if (m_audioPlayer->entry()) {
|
||||||
setCurrentTrack(DataManager::instance().getQueue().indexOf(m_audioPlayer->entry()->id()));
|
setEntry(m_audioPlayer->entry());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,17 +258,6 @@ void MediaPlayer2Player::OpenUri(const QString &uri)
|
||||||
Q_UNUSED(uri);
|
Q_UNUSED(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaPlayer2Player::playerSourceChanged()
|
|
||||||
{
|
|
||||||
// TODO: refactor setCurrentTrack; too complicated for this player
|
|
||||||
if (m_audioPlayer) {
|
|
||||||
if (m_audioPlayer->entry()) {
|
|
||||||
setCurrentTrack(DataManager::instance().getQueue().indexOf(m_audioPlayer->entry()->id()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MediaPlayer2Player::playerPlaybackStateChanged()
|
void MediaPlayer2Player::playerPlaybackStateChanged()
|
||||||
{
|
{
|
||||||
signalPropertiesChange(QStringLiteral("PlaybackStatus"), PlaybackStatus());
|
signalPropertiesChange(QStringLiteral("PlaybackStatus"), PlaybackStatus());
|
||||||
|
@ -289,9 +279,6 @@ void MediaPlayer2Player::audioPositionChanged()
|
||||||
void MediaPlayer2Player::audioDurationChanged()
|
void MediaPlayer2Player::audioDurationChanged()
|
||||||
{
|
{
|
||||||
if (m_audioPlayer) {
|
if (m_audioPlayer) {
|
||||||
m_metadata = getMetadataOfCurrentTrack();
|
|
||||||
signalPropertiesChange(QStringLiteral("Metadata"), Metadata());
|
|
||||||
|
|
||||||
setPropertyPosition(static_cast<int>(m_audioPlayer->position()));
|
setPropertyPosition(static_cast<int>(m_audioPlayer->position()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,30 +289,18 @@ void MediaPlayer2Player::playerVolumeChanged()
|
||||||
setVolume(m_audioPlayer->volume() / 100.0);
|
setVolume(m_audioPlayer->volume() / 100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int MediaPlayer2Player::currentTrack() const
|
void MediaPlayer2Player::setEntry(Entry* entry)
|
||||||
{
|
{
|
||||||
if (m_audioPlayer) {
|
if (m_audioPlayer) {
|
||||||
if (m_audioPlayer->entry()) {
|
if (m_audioPlayer->entry()) {
|
||||||
return DataManager::instance().getQueue().indexOf(m_audioPlayer->entry()->id());
|
if (m_audioPlayer->entry() == entry) {
|
||||||
} else {
|
int queuenr = DataManager::instance().getQueue().indexOf(m_audioPlayer->entry()->id());
|
||||||
return -1;
|
qDebug() << "MPRIS2: Setting entry" << entry->title();
|
||||||
}
|
m_currentTrackId = QDBusObjectPath(QLatin1String("/org/kde/alligator/playlist/") + QString::number(queuenr)).path();
|
||||||
} else {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MediaPlayer2Player::setCurrentTrack(int newTrackPosition)
|
m_metadata = getMetadataOfCurrentTrack();
|
||||||
{
|
signalPropertiesChange(QStringLiteral("Metadata"), Metadata());
|
||||||
if (m_audioPlayer) {
|
}
|
||||||
if (m_audioPlayer->entry()) {
|
|
||||||
m_currentTrack = m_audioPlayer->entry()->title();
|
|
||||||
m_currentTrackId = QDBusObjectPath(QLatin1String("/org/kde/alligator/playlist/") + QString::number(newTrackPosition)).path();
|
|
||||||
|
|
||||||
emit currentTrackChanged();
|
|
||||||
|
|
||||||
m_metadata = getMetadataOfCurrentTrack();
|
|
||||||
signalPropertiesChange(QStringLiteral("Metadata"), Metadata());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <QDBusMessage>
|
#include <QDBusMessage>
|
||||||
|
|
||||||
class AudioManager;
|
class AudioManager;
|
||||||
|
class Entry;
|
||||||
|
|
||||||
class MediaPlayer2Player : public QDBusAbstractAdaptor
|
class MediaPlayer2Player : public QDBusAbstractAdaptor
|
||||||
{
|
{
|
||||||
|
@ -33,8 +34,6 @@ class MediaPlayer2Player : public QDBusAbstractAdaptor
|
||||||
Q_PROPERTY(bool CanControl READ CanControl NOTIFY canControlChanged)
|
Q_PROPERTY(bool CanControl READ CanControl NOTIFY canControlChanged)
|
||||||
Q_PROPERTY(bool CanSeek READ CanSeek NOTIFY canSeekChanged)
|
Q_PROPERTY(bool CanSeek READ CanSeek NOTIFY canSeekChanged)
|
||||||
|
|
||||||
Q_PROPERTY(int currentTrack READ currentTrack WRITE setCurrentTrack NOTIFY currentTrackChanged)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MediaPlayer2Player(AudioManager *audioPlayer,
|
explicit MediaPlayer2Player(AudioManager *audioPlayer,
|
||||||
bool showProgressOnTaskBar,
|
bool showProgressOnTaskBar,
|
||||||
|
@ -54,7 +53,6 @@ public:
|
||||||
bool CanPause() const;
|
bool CanPause() const;
|
||||||
bool CanSeek() const;
|
bool CanSeek() const;
|
||||||
bool CanControl() const;
|
bool CanControl() const;
|
||||||
int currentTrack() const;
|
|
||||||
bool showProgressOnTaskBar() const;
|
bool showProgressOnTaskBar() const;
|
||||||
void setShowProgressOnTaskBar(bool value);
|
void setShowProgressOnTaskBar(bool value);
|
||||||
|
|
||||||
|
@ -70,7 +68,6 @@ Q_SIGNALS:
|
||||||
void canPauseChanged();
|
void canPauseChanged();
|
||||||
void canControlChanged();
|
void canControlChanged();
|
||||||
void canSeekChanged();
|
void canSeekChanged();
|
||||||
void currentTrackChanged();
|
|
||||||
void next();
|
void next();
|
||||||
void previous();
|
void previous();
|
||||||
void playPause();
|
void playPause();
|
||||||
|
@ -78,6 +75,8 @@ Q_SIGNALS:
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
|
|
||||||
|
void setRate(double newRate);
|
||||||
|
void setVolume(double volume);
|
||||||
void Next();
|
void Next();
|
||||||
void Previous();
|
void Previous();
|
||||||
void Pause();
|
void Pause();
|
||||||
|
@ -90,30 +89,32 @@ public Q_SLOTS:
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
|
|
||||||
void playerSourceChanged();
|
|
||||||
void playerPlaybackStateChanged();
|
void playerPlaybackStateChanged();
|
||||||
void audioPositionChanged();
|
|
||||||
void playerSeeked(qint64 position);
|
void playerSeeked(qint64 position);
|
||||||
void audioDurationChanged();
|
|
||||||
void playerVolumeChanged();
|
void playerVolumeChanged();
|
||||||
|
|
||||||
|
// progress on taskbar
|
||||||
|
void audioPositionChanged();
|
||||||
|
void audioDurationChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void signalPropertiesChange(const QString &property, const QVariant &value);
|
void signalPropertiesChange(const QString &property, const QVariant &value);
|
||||||
|
|
||||||
void setRate(double newRate);
|
void setEntry(Entry* entry);
|
||||||
void setVolume(double volume);
|
|
||||||
void setPropertyPosition(int newPositionInMs);
|
|
||||||
void setCurrentTrack(int newTrackPosition);
|
|
||||||
|
|
||||||
QVariantMap getMetadataOfCurrentTrack();
|
QVariantMap getMetadataOfCurrentTrack();
|
||||||
|
|
||||||
|
AudioManager *m_audioPlayer = nullptr;
|
||||||
QVariantMap m_metadata;
|
QVariantMap m_metadata;
|
||||||
QString m_currentTrack;
|
|
||||||
QString m_currentTrackId;
|
QString m_currentTrackId;
|
||||||
double m_volume = 0.0;
|
double m_volume = 0.0;
|
||||||
qlonglong m_position = 0;
|
|
||||||
AudioManager *m_audioPlayer = nullptr;
|
|
||||||
|
// progress on taskbar
|
||||||
|
void setPropertyPosition(int newPositionInMs);
|
||||||
|
|
||||||
mutable QDBusMessage mProgressIndicatorSignal;
|
mutable QDBusMessage mProgressIndicatorSignal;
|
||||||
int mPreviousProgressPosition = 0;
|
int mPreviousProgressPosition = 0;
|
||||||
bool mShowProgressOnTaskBar = true;
|
bool mShowProgressOnTaskBar = true;
|
||||||
|
qlonglong m_position = 0;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue