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"))),
|
||||
mShowProgressOnTaskBar(showProgressOnTaskBar)
|
||||
{
|
||||
// Signals from AudioManager which are directly forwarded
|
||||
connect(m_audioPlayer, &AudioManager::sourceChanged,
|
||||
this, &MediaPlayer2Player::playerSourceChanged, Qt::QueuedConnection);
|
||||
// This will signal when the track is changed
|
||||
connect(m_audioPlayer, &AudioManager::entryChanged,
|
||||
this, &MediaPlayer2Player::setEntry);
|
||||
|
||||
// Signals from AudioManager which are directly forwarded
|
||||
connect(m_audioPlayer, &AudioManager::playbackRateChanged,
|
||||
this, &MediaPlayer2Player::rateChanged);
|
||||
// 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,
|
||||
this, &MediaPlayer2Player::playerVolumeChanged);
|
||||
connect(m_audioPlayer, &AudioManager::positionChanged,
|
||||
this, &MediaPlayer2Player::audioPositionChanged); // for progress indicator on taskbar
|
||||
connect(m_audioPlayer, &AudioManager::positionChanged,
|
||||
this, &MediaPlayer2Player::playerSeeked); // Seeked signal
|
||||
this, &MediaPlayer2Player::playerSeeked); // Implement Seeked signal
|
||||
|
||||
// Custom signals not directly connected to AudioManager
|
||||
// signals needed for progress indicator on taskbar
|
||||
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) {
|
||||
m_volume = m_audioPlayer->volume() / 100;
|
||||
signalPropertiesChange(QStringLiteral("Volume"), Volume());
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
signalPropertiesChange(QStringLiteral("PlaybackStatus"), PlaybackStatus());
|
||||
|
@ -289,9 +279,6 @@ void MediaPlayer2Player::audioPositionChanged()
|
|||
void MediaPlayer2Player::audioDurationChanged()
|
||||
{
|
||||
if (m_audioPlayer) {
|
||||
m_metadata = getMetadataOfCurrentTrack();
|
||||
signalPropertiesChange(QStringLiteral("Metadata"), Metadata());
|
||||
|
||||
setPropertyPosition(static_cast<int>(m_audioPlayer->position()));
|
||||
}
|
||||
}
|
||||
|
@ -302,30 +289,18 @@ void MediaPlayer2Player::playerVolumeChanged()
|
|||
setVolume(m_audioPlayer->volume() / 100.0);
|
||||
}
|
||||
|
||||
int MediaPlayer2Player::currentTrack() const
|
||||
void MediaPlayer2Player::setEntry(Entry* entry)
|
||||
{
|
||||
if (m_audioPlayer) {
|
||||
if (m_audioPlayer->entry()) {
|
||||
return DataManager::instance().getQueue().indexOf(m_audioPlayer->entry()->id());
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (m_audioPlayer->entry() == entry) {
|
||||
int queuenr = DataManager::instance().getQueue().indexOf(m_audioPlayer->entry()->id());
|
||||
qDebug() << "MPRIS2: Setting entry" << entry->title();
|
||||
m_currentTrackId = QDBusObjectPath(QLatin1String("/org/kde/alligator/playlist/") + QString::number(queuenr)).path();
|
||||
|
||||
void MediaPlayer2Player::setCurrentTrack(int newTrackPosition)
|
||||
{
|
||||
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());
|
||||
m_metadata = getMetadataOfCurrentTrack();
|
||||
signalPropertiesChange(QStringLiteral("Metadata"), Metadata());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <QDBusMessage>
|
||||
|
||||
class AudioManager;
|
||||
class Entry;
|
||||
|
||||
class MediaPlayer2Player : public QDBusAbstractAdaptor
|
||||
{
|
||||
|
@ -33,8 +34,6 @@ class MediaPlayer2Player : public QDBusAbstractAdaptor
|
|||
Q_PROPERTY(bool CanControl READ CanControl NOTIFY canControlChanged)
|
||||
Q_PROPERTY(bool CanSeek READ CanSeek NOTIFY canSeekChanged)
|
||||
|
||||
Q_PROPERTY(int currentTrack READ currentTrack WRITE setCurrentTrack NOTIFY currentTrackChanged)
|
||||
|
||||
public:
|
||||
explicit MediaPlayer2Player(AudioManager *audioPlayer,
|
||||
bool showProgressOnTaskBar,
|
||||
|
@ -54,7 +53,6 @@ public:
|
|||
bool CanPause() const;
|
||||
bool CanSeek() const;
|
||||
bool CanControl() const;
|
||||
int currentTrack() const;
|
||||
bool showProgressOnTaskBar() const;
|
||||
void setShowProgressOnTaskBar(bool value);
|
||||
|
||||
|
@ -70,7 +68,6 @@ Q_SIGNALS:
|
|||
void canPauseChanged();
|
||||
void canControlChanged();
|
||||
void canSeekChanged();
|
||||
void currentTrackChanged();
|
||||
void next();
|
||||
void previous();
|
||||
void playPause();
|
||||
|
@ -78,6 +75,8 @@ Q_SIGNALS:
|
|||
|
||||
public Q_SLOTS:
|
||||
|
||||
void setRate(double newRate);
|
||||
void setVolume(double volume);
|
||||
void Next();
|
||||
void Previous();
|
||||
void Pause();
|
||||
|
@ -90,30 +89,32 @@ public Q_SLOTS:
|
|||
|
||||
private Q_SLOTS:
|
||||
|
||||
void playerSourceChanged();
|
||||
void playerPlaybackStateChanged();
|
||||
void audioPositionChanged();
|
||||
void playerSeeked(qint64 position);
|
||||
void audioDurationChanged();
|
||||
void playerVolumeChanged();
|
||||
|
||||
// progress on taskbar
|
||||
void audioPositionChanged();
|
||||
void audioDurationChanged();
|
||||
|
||||
private:
|
||||
void signalPropertiesChange(const QString &property, const QVariant &value);
|
||||
|
||||
void setRate(double newRate);
|
||||
void setVolume(double volume);
|
||||
void setPropertyPosition(int newPositionInMs);
|
||||
void setCurrentTrack(int newTrackPosition);
|
||||
void setEntry(Entry* entry);
|
||||
|
||||
QVariantMap getMetadataOfCurrentTrack();
|
||||
|
||||
AudioManager *m_audioPlayer = nullptr;
|
||||
QVariantMap m_metadata;
|
||||
QString m_currentTrack;
|
||||
QString m_currentTrackId;
|
||||
double m_volume = 0.0;
|
||||
qlonglong m_position = 0;
|
||||
AudioManager *m_audioPlayer = nullptr;
|
||||
|
||||
|
||||
// progress on taskbar
|
||||
void setPropertyPosition(int newPositionInMs);
|
||||
|
||||
mutable QDBusMessage mProgressIndicatorSignal;
|
||||
int mPreviousProgressPosition = 0;
|
||||
bool mShowProgressOnTaskBar = true;
|
||||
qlonglong m_position = 0;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue