Add the ability to remove mulitple GS songs at once. Fixes issue 2933
This commit is contained in:
parent
efbe30a618
commit
3356fd9b58
|
@ -1352,27 +1352,39 @@ void GroovesharkService::UserFavoriteSongAdded(QNetworkReply* reply, int task_id
|
|||
}
|
||||
|
||||
void GroovesharkService::RemoveCurrentFromPlaylist() {
|
||||
const QModelIndex& index(model()->current_index());
|
||||
const QModelIndexList& indexes(model()->selected_indexes());
|
||||
QMap<int, QList<int> > playlists_songs_ids;
|
||||
foreach (const QModelIndex& index, indexes) {
|
||||
|
||||
if (index.parent().data(InternetModel::Role_Type).toInt() !=
|
||||
InternetModel::Type_UserPlaylist) {
|
||||
return;
|
||||
if (index.parent().data(InternetModel::Role_Type).toInt() !=
|
||||
InternetModel::Type_UserPlaylist) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int playlist_id = index.data(Role_UserPlaylistId).toInt();
|
||||
int song_id = ExtractSongId(index.data(InternetModel::Role_Url).toUrl());
|
||||
if (song_id) {
|
||||
playlists_songs_ids[playlist_id] << song_id;
|
||||
}
|
||||
}
|
||||
|
||||
int playlist_id = index.data(Role_UserPlaylistId).toInt();
|
||||
int song_id = ExtractSongId(index.data(InternetModel::Role_Url).toUrl());
|
||||
if (song_id) {
|
||||
RemoveFromPlaylist(playlist_id, song_id);
|
||||
for (QMap<int, QList<int> >::const_iterator it = playlists_songs_ids.constBegin();
|
||||
it != playlists_songs_ids.constEnd();
|
||||
++it) {
|
||||
RemoveFromPlaylist(it.key(), it.value());
|
||||
}
|
||||
}
|
||||
|
||||
void GroovesharkService::RemoveFromPlaylist(int playlist_id, int song_id) {
|
||||
void GroovesharkService::RemoveFromPlaylist(int playlist_id,
|
||||
const QList<int>& songs_ids_to_remove) {
|
||||
if (!playlists_.contains(playlist_id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
QList<int> songs_ids = playlists_[playlist_id].songs_ids_;
|
||||
songs_ids.removeOne(song_id);
|
||||
foreach (const int song_id, songs_ids_to_remove) {
|
||||
songs_ids.removeOne(song_id);
|
||||
}
|
||||
|
||||
SetPlaylistSongs(playlist_id, songs_ids);
|
||||
}
|
||||
|
|
|
@ -90,7 +90,7 @@ class GroovesharkService : public InternetService {
|
|||
void RetrieveSubscribedPlaylists();
|
||||
void RetrieveAutoplayTags();
|
||||
void SetPlaylistSongs(int playlist_id, const QList<int>& songs_ids);
|
||||
void RemoveFromPlaylist(int playlist_id, int song_id);
|
||||
void RemoveFromPlaylist(int playlist_id, const QList<int>& songs_ids_to_remove);
|
||||
// Refresh playlist_id playlist , or create it if it doesn't exist
|
||||
void RefreshPlaylist(int playlist_id);
|
||||
void DeletePlaylist(int playlist_id);
|
||||
|
|
Loading…
Reference in New Issue