Add Favorites support to SoundCloud (#5345)

This commit is contained in:
Vavooon 2016-04-20 14:03:48 +02:00 committed by John Maguire
parent 1dfd71ea7f
commit 7ef095d0cb
2 changed files with 27 additions and 0 deletions

View File

@ -137,6 +137,10 @@ void SoundCloudService::EnsureItemsCreated() {
InternetModel::Role_PlayBehaviour);
root_->appendRow(user_tracks_);
user_favorites_ = new QStandardItem(tr("Favorites"));
root_->appendRow(user_favorites_);
RetrieveUserData(); // at least, try to (this will do nothing if user isn't
// logged)
}
@ -214,6 +218,7 @@ void SoundCloudService::RetrieveUserData() {
RetrieveUserActivities();
RetrieveUserTracks();
RetrieveUserPlaylists();
RetrieveUserFavorites();
}
void SoundCloudService::RetrieveUserTracks() {
@ -261,6 +266,14 @@ void SoundCloudService::RetrieveUserPlaylists() {
SLOT(UserPlaylistsRetrieved(QNetworkReply*)), reply);
}
void SoundCloudService::RetrieveUserFavorites() {
QList<Param> parameters;
parameters << Param("oauth_token", access_token_);
QNetworkReply* reply = CreateRequest("me/favorites", parameters);
NewClosure(reply, SIGNAL(finished()), this,
SLOT(UserFavoritesRetrieved(QNetworkReply*)), reply);
}
void SoundCloudService::UserPlaylistsRetrieved(QNetworkReply* reply) {
reply->deleteLater();
@ -277,6 +290,17 @@ void SoundCloudService::UserPlaylistsRetrieved(QNetworkReply* reply) {
}
}
void SoundCloudService::UserFavoritesRetrieved(QNetworkReply* reply) {
reply->deleteLater();
SongList songs = ExtractSongs(ExtractResult(reply));
// Fill results list
for (const Song& song : songs) {
QStandardItem* child = CreateSongItem(song);
user_favorites_->appendRow(child);
}
}
void SoundCloudService::Search(const QString& text, bool now) {
pending_search_ = text;

View File

@ -67,6 +67,7 @@ class SoundCloudService : public InternetService {
void UserTracksRetrieved(QNetworkReply* reply);
void UserActivitiesRetrieved(QNetworkReply* reply);
void UserPlaylistsRetrieved(QNetworkReply* reply);
void UserFavoritesRetrieved(QNetworkReply* reply);
void PlaylistRetrieved(QNetworkReply* reply, int request_id);
void Search(const QString& text, bool now = false);
void DoSearch();
@ -91,6 +92,7 @@ class SoundCloudService : public InternetService {
void RetrieveUserTracks();
void RetrieveUserActivities();
void RetrieveUserPlaylists();
void RetrieveUserFavorites();
void RetrievePlaylist(int playlist_id, QStandardItem* playlist_item);
void ClearSearchResults();
void EnsureItemsCreated();
@ -112,6 +114,7 @@ class SoundCloudService : public InternetService {
QStandardItem* user_tracks_;
QStandardItem* user_playlists_;
QStandardItem* user_activities_;
QStandardItem* user_favorites_;
NetworkAccessManager* network_;