From 04bbf73cfff6f864c9c77c4fb7e255c2f7142dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bara?= Date: Wed, 8 Dec 2010 00:09:17 +0000 Subject: [PATCH] MPRIS' TracklistChanged event now contains the length of the playlist that has actually changed (Update issue #374) the PlaylistChanged event now shows which playlist has changed --- src/core/mpris.cpp | 6 +++--- src/core/mpris.h | 3 ++- src/playlist/playlistmanager.cpp | 6 +++++- src/playlist/playlistmanager.h | 3 ++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/core/mpris.cpp b/src/core/mpris.cpp index e73e6794f..66d00f021 100644 --- a/src/core/mpris.cpp +++ b/src/core/mpris.cpp @@ -74,11 +74,11 @@ Mpris1TrackList::Mpris1TrackList(Player* player, QObject* parent) new MprisTrackList(this); QDBusConnection::sessionBus().registerObject("/TrackList", this); - connect(player->playlists(), SIGNAL(PlaylistChanged()), SLOT(PlaylistChanged())); + connect(player->playlists(), SIGNAL(PlaylistChanged(Playlist*)), SLOT(PlaylistChanged(Playlist*))); } -void Mpris1TrackList::PlaylistChanged() { - emit TrackListChange(GetLength()); +void Mpris1TrackList::PlaylistChanged(Playlist* playlist) { + emit TrackListChange(playlist->rowCount()); } // we use the state from event and don't try to obtain it from Player diff --git a/src/core/mpris.h b/src/core/mpris.h index cc8c4bff6..9010935a3 100644 --- a/src/core/mpris.h +++ b/src/core/mpris.h @@ -25,6 +25,7 @@ #include class Player; +class Playlist; struct DBusStatus { // From Amarok. int play; // Playing = 0, Paused = 1, Stopped = 2 @@ -183,7 +184,7 @@ signals: void TrackListChange(int i); private slots: - void PlaylistChanged(); + void PlaylistChanged(Playlist* playlist); private: Player* player_; diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index 10f7689ea..f67b9b999 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -74,7 +74,7 @@ Playlist* PlaylistManager::AddPlaylist(int id, const QString& name) { ret->set_sequence(sequence_); connect(ret, SIGNAL(CurrentSongChanged(Song)), SIGNAL(CurrentSongChanged(Song))); - connect(ret, SIGNAL(PlaylistChanged()), SIGNAL(PlaylistChanged())); + connect(ret, SIGNAL(PlaylistChanged()), SLOT(OneOfPlaylistsChanged())); connect(ret, SIGNAL(PlaylistChanged()), SLOT(UpdateSummaryText())); connect(ret, SIGNAL(EditingFinished(QModelIndex)), SIGNAL(EditingFinished(QModelIndex))); connect(ret, SIGNAL(LoadTracksError(QString)), SIGNAL(Error(QString))); @@ -177,6 +177,10 @@ void PlaylistManager::Remove(int id) { emit PlaylistRemoved(id); } +void PlaylistManager::OneOfPlaylistsChanged() { + emit PlaylistChanged(qobject_cast(sender())); +} + void PlaylistManager::SetCurrentPlaylist(int id) { Q_ASSERT(playlists_.contains(id)); current_ = id; diff --git a/src/playlist/playlistmanager.h b/src/playlist/playlistmanager.h index b89b85cff..ab93a6f3a 100644 --- a/src/playlist/playlistmanager.h +++ b/src/playlist/playlistmanager.h @@ -102,11 +102,12 @@ signals: // Forwarded from individual playlists void CurrentSongChanged(const Song& song); - void PlaylistChanged(); + void PlaylistChanged(Playlist* playlist); void EditingFinished(const QModelIndex& index); void PlayRequested(const QModelIndex& index); private slots: + void OneOfPlaylistsChanged(); void UpdateSummaryText(); void SongsDiscovered(const SongList& songs); void LoadFinished(bool success);