void BrowseWidget::parseBrowserData(const QString &t_id, QNetworkReply *t_reply) { if (t_id != m_request_id) return; auto title_language = User::sharedUser()->titleLanguage(); QByteArray data = t_reply->readAll(); QJsonArray browse_results = QJsonDocument::fromJson(data).array(); for (int i = 0; i <= browse_results.size(); i++) { QJsonObject anime = browse_results.at(i).toObject(); auto title = anime.value(title_language).toString(); if (title.isEmpty()) { qDebug() << "Unknown title for: " << QJsonDocument(anime).toJson(); continue; } AnimePtr a = User::sharedUser()->getAnimeByTitle(title); if (a == AnimePtr(nullptr)) { a = Anime::makeAnime(); a->setId(QString::number(anime.value("id").toInt())); a->setTitle(title); a->setImageUrl(anime.value("image_url_lge").toString()); a->setTitleRomaji(anime.value("title_romaji").toString()); a->setTitleJapanese(anime.value("title_japanese").toString()); a->setTitleEnglish(anime.value("title_english").toString()); a->setType(anime.value("type").toString()); a->setAiringStatus(anime.value("airing_status").toString()); a->setAverageScore(anime.value("average_score").toString().toDouble()); a->setTotalEpisodes(anime.value("total_episodes").toInt()); a->setAdult(anime.value("adult").toBool()); if (a->id() == "0") { continue; } User::sharedUser()->addKnownAnime(a); } if (a->adult() && !User::sharedUser()->adultContent()) { continue; } BrowseAnime *s = new BrowseAnime(this, User::sharedUser()->scoreType()); if (!a->hasLoaded()) { connect(a.get(), SIGNAL(imageLoaded()), s, SLOT(repaint())); emit loadAnime(a); } s->setAnime(a); m_browse_layout->addWidget(s); m_browse_layout->setGeometry(m_ui->result_area->geometry()); int width = m_browse_layout->geometry().width(); int cwidth = m_browse_layout->contentsWidth(); if (m_browse_layout->heightForWidth(width) > this->geometry().height()) { width -= qApp->style()->pixelMetric(QStyle::PM_ScrollBarExtent); } m_browse_layout->setContentsMargins((width - cwidth) / 2, 0, 0, 0); } m_ui->browse_button->setEnabled(true); }