Exemplo n.º 1
0
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);
  }
}
Exemplo n.º 2
0
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);
  }
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
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);
  }
}
Exemplo n.º 5
0
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);
  }
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
0
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);
}