void SoundCloudService::UserTracksRetrieved(QNetworkReply* reply) { reply->deleteLater(); SongList songs = ExtractSongs(ExtractResult(reply)); // Fill results list for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); user_tracks_->appendRow(child); } }
void SoundCloudService::PlaylistRetrieved(QNetworkReply* reply, int request_id) { if (!pending_playlists_requests_.contains(request_id)) return; PlaylistInfo playlist_info = pending_playlists_requests_.take(request_id); QVariant res = ExtractResult(reply); SongList songs = ExtractSongs(res.toMap()["tracks"]); for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); playlist_info.item_->appendRow(child); } }
void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { reply->deleteLater(); SongList songs = ExtractSongs(ExtractResult(reply)); // Fill results list for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); search_->appendRow(child); } QModelIndex index = model()->merged_model()->mapFromSource(search_->index()); ScrollToIndex(index); }
void SpotifyService::FillPlaylist( QStandardItem* item, const google::protobuf::RepeatedPtrField<pb::spotify::Track>& tracks) { if (item->hasChildren()) item->removeRows(0, item->rowCount()); for (int i = 0; i < tracks.size(); ++i) { Song song; SongFromProtobuf(tracks.Get(i), &song); QStandardItem* child = CreateSongItem(song); item->appendRow(child); } }
void SoundCloudService::UserPlaylistsRetrieved(QNetworkReply* reply) { reply->deleteLater(); QList<QVariant> playlists = ExtractResult(reply).toList(); for (const QVariant& playlist : playlists) { QMap<QString, QVariant> playlist_map = playlist.toMap(); QStandardItem* playlist_item = CreatePlaylistItem(playlist_map["title"].toString()); SongList songs = ExtractSongs(playlist_map["tracks"]); for (const Song& song : songs) { playlist_item->appendRow(CreateSongItem(song)); } user_playlists_->appendRow(playlist_item); } }
QList<QStandardItem*> SoundCloudService::ExtractActivities(const QVariant& result) { QList<QStandardItem*> activities; QVariantList q_variant_list = result.toMap()["collection"].toList(); for (const QVariant& q : q_variant_list) { QMap<QString, QVariant> activity = q.toMap(); const QString type = activity["type"].toString(); if (type == "track") { Song song = ExtractSong(activity["origin"].toMap()); if (song.is_valid()) { activities << CreateSongItem(song); } } else if (type == "playlist") { // TODO } } return activities; }
QList<QStandardItem*> SoundCloudService::ExtractActivities(const QVariant& result) { QList<QStandardItem*> activities; QVariantList q_variant_list = result.toMap()["collection"].toList(); for (const QVariant& q : q_variant_list) { QMap<QString, QVariant> activity = q.toMap(); const QString type = activity["type"].toString(); if (type == "track") { Song song = ExtractSong(activity["origin"].toMap()); if (song.is_valid()) { activities << CreateSongItem(song); } } else if (type == "playlist") { QMap<QString, QVariant> origin_map = activity["origin"].toMap(); QStandardItem* playlist_item = CreatePlaylistItem(origin_map["title"].toString()); activities << playlist_item; RetrievePlaylist(origin_map["id"].toInt(), playlist_item); } } return activities; }
void SpotifyService::SearchResults( const pb::spotify::SearchResponse& response) { if (QStringFromStdString(response.request().query()) != pending_search_) { qLog(Debug) << "Old search result for" << QStringFromStdString(response.request().query()) << "expecting" << pending_search_; return; } pending_search_.clear(); SongList songs; for (int i = 0; i < response.result_size(); ++i) { Song song; SongFromProtobuf(response.result(i), &song); songs << song; } qLog(Debug) << "Got" << songs.count() << "results"; ClearSearchResults(); // Fill results list for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); search_->appendRow(child); } const QString did_you_mean_suggestion = QStringFromStdString(response.did_you_mean()); qLog(Debug) << "Did you mean suggestion: " << did_you_mean_suggestion; if (!did_you_mean_suggestion.isEmpty()) { search_box_->did_you_mean()->Show(did_you_mean_suggestion); } else { // In case something else was previously displayed search_box_->did_you_mean()->hide(); } QModelIndex index = model()->merged_model()->mapFromSource(search_->index()); ScrollToIndex(index); }