void ArchiveOrg::slotParseResults(KJob* job) { KIO::StoredTransferJob* storedQueryJob = static_cast<KIO::StoredTransferJob*>( job ); QDomDocument doc; doc.setContent(QString::fromUtf8(storedQueryJob->data())); QDomNodeList links = doc.elementsByTagName(QStringLiteral("a")); QString html = QStringLiteral("<style type=\"text/css\">tr.cellone {background-color: %1;}").arg(qApp->palette().alternateBase().color().name()); html += QLatin1String("</style><table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">"); QString link; int ct = 0; m_thumbsPath.clear(); for (int i = 0; i < links.count(); ++i) { QString href = links.at(i).toElement().attribute(QStringLiteral("href")); if (href.endsWith(QLatin1String(".thumbs/"))) { // sub folder contains image thumbs, display one. m_thumbsPath = m_metaInfo.value(QStringLiteral("url")) + '/' + href; KJob* thumbJob = KIO::storedGet( QUrl(m_thumbsPath), KIO::NoReload, KIO::HideProgressInfo ); thumbJob->setProperty("id", m_metaInfo.value(QStringLiteral("id"))); connect(thumbJob, &KJob::result, this, &ArchiveOrg::slotParseThumbs); } else if (!href.contains('/') && !href.endsWith(QLatin1String(".xml"))) { link = m_metaInfo.value(QStringLiteral("url")) + '/' + href; ct++; if (ct %2 == 0) { html += QLatin1String("<tr class=\"cellone\">"); } else html += QLatin1String("<tr>"); html += "<td>" + QUrl(link).fileName() + QStringLiteral("</td><td><a href=\"%1\">%2</a></td><td><a href=\"%3\">%4</a></td></tr>").arg(link).arg(i18n("Preview")).arg(link + "_import").arg(i18n("Import")); } } html += QLatin1String("</table>"); if (m_metaInfo.value(QStringLiteral("id")) == job->property("id").toString()) emit gotMetaInfo(html); }
OnlineItemInfo ArchiveOrg::displayItemDetails(QListWidgetItem *item) { OnlineItemInfo info; m_metaInfo.clear(); if (!item) { return info; } info.itemPreview = item->data(previewRole).toString(); info.itemDownload = item->data(downloadRole).toString(); info.itemId = item->data(idRole).toInt(); info.itemName = item->text(); info.infoUrl = item->data(infoUrl).toString(); info.author = item->data(authorRole).toString(); info.authorUrl = item->data(authorUrl).toString(); info.license = item->data(licenseRole).toString(); info.description = item->data(descriptionRole).toString(); m_metaInfo.insert(QStringLiteral("url"), info.itemDownload); m_metaInfo.insert(QStringLiteral("id"), info.itemId); QString extraInfoUrl = item->data(downloadRole).toString(); if (!extraInfoUrl.isEmpty()) { KJob* resolveJob = KIO::storedGet( QUrl(extraInfoUrl), KIO::NoReload, KIO::HideProgressInfo ); resolveJob->setProperty("id", info.itemId); connect(resolveJob, &KJob::result, this, &ArchiveOrg::slotParseResults); } return info; }