X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Futils%2Farchiveorg.cpp;h=357b9b82a43e22021500813e608eb58e14f7f56e;hb=a7640ab08689fb80c17386868d9e161960a4ffd2;hp=de4bb332413001129859b29e1db2eb298e94f074;hpb=ed051c6ed3bf047538f279da0b6b7ad8bd380038;p=kdenlive diff --git a/src/utils/archiveorg.cpp b/src/utils/archiveorg.cpp index de4bb332..357b9b82 100644 --- a/src/utils/archiveorg.cpp +++ b/src/utils/archiveorg.cpp @@ -30,7 +30,7 @@ #include #include "kdenlivesettings.h" #include -#include +#include #ifdef USE_QJSON #include @@ -49,10 +49,10 @@ ArchiveOrg::ArchiveOrg(QListWidget *listWidget, QObject *parent) : ArchiveOrg::~ArchiveOrg() { - if (m_previewProcess) delete m_previewProcess; + delete m_previewProcess; } -void ArchiveOrg::slotStartSearch(const QString searchText, int page) +void ArchiveOrg::slotStartSearch(const QString &searchText, int page) { m_listWidget->clear(); QString uri = "http://www.archive.org/advancedsearch.php?q="; @@ -64,7 +64,7 @@ void ArchiveOrg::slotStartSearch(const QString searchText, int page) uri.append("&output=json"); //&callback=callback&save=yes#raw"); KJob* resolveJob = KIO::storedGet( KUrl(uri), KIO::NoReload, KIO::HideProgressInfo ); - connect( resolveJob, SIGNAL( result( KJob* ) ), this, SLOT( slotShowResults( KJob* ) ) ); + connect( resolveJob, SIGNAL(result(KJob*)), this, SLOT(slotShowResults(KJob*)) ); } @@ -117,6 +117,7 @@ void ArchiveOrg::slotShowResults(KJob* job) #endif m_listWidget->blockSignals(false); m_listWidget->setCurrentRow(0); + emit searchDone(); } @@ -138,11 +139,13 @@ OnlineItemInfo ArchiveOrg::displayItemDetails(QListWidgetItem *item) info.description = item->data(descriptionRole).toString(); m_metaInfo.insert("url", info.itemDownload); + m_metaInfo.insert("id", info.itemId); QString extraInfoUrl = item->data(downloadRole).toString(); if (!extraInfoUrl.isEmpty()) { KJob* resolveJob = KIO::storedGet( KUrl(extraInfoUrl), KIO::NoReload, KIO::HideProgressInfo ); - connect( resolveJob, SIGNAL( result( KJob* ) ), this, SLOT( slotParseResults( KJob* ) ) ); + resolveJob->setProperty("id", info.itemId); + connect( resolveJob, SIGNAL(result(KJob*)), this, SLOT(slotParseResults(KJob*)) ); } return info; } @@ -152,33 +155,34 @@ void ArchiveOrg::slotParseResults(KJob* job) { KIO::StoredTransferJob* storedQueryJob = static_cast( job ); QDomDocument doc; - doc.setContent(storedQueryJob->data()); + doc.setContent(QString::fromUtf8(storedQueryJob->data())); QDomNodeList links = doc.elementsByTagName("a"); QString html = QString(""; QString link; int ct = 0; m_thumbsPath.clear(); - for (int i = 0; i < links.count(); i++) { + for (int i = 0; i < links.count(); ++i) { QString href = links.at(i).toElement().attribute("href"); if (href.endsWith(".thumbs/")) { // sub folder contains image thumbs, display one. - m_thumbsPath = m_metaInfo.value("url") + "/" + href; + m_thumbsPath = m_metaInfo.value("url") + '/' + href; KJob* thumbJob = KIO::storedGet( KUrl(m_thumbsPath), KIO::NoReload, KIO::HideProgressInfo ); - connect( thumbJob, SIGNAL( result( KJob* ) ), this, SLOT( slotParseThumbs( KJob* ) ) ); + thumbJob->setProperty("id", m_metaInfo.value("id")); + connect( thumbJob, SIGNAL(result(KJob*)), this, SLOT(slotParseThumbs(KJob*)) ); } else if (!href.contains('/') && !href.endsWith(".xml")) { - link = m_metaInfo.value("url") + "/" + href; + link = m_metaInfo.value("url") + '/' + href; ct++; if (ct %2 == 0) { html += ""; } else html += ""; - html += "").arg(link + "_preview").arg(link); + html += "").arg(link).arg(i18n("Preview")).arg(link + "_import").arg(i18n("Import")); } } html += "
" + KUrl(link).fileName() + QString("previewdownload
" + KUrl(link).fileName() + QString("%2%4
"; - emit gotMetaInfo(html); + if (m_metaInfo.value("id") == job->property("id").toString()) emit gotMetaInfo(html); } @@ -190,12 +194,12 @@ bool ArchiveOrg::startItemPreview(QListWidgetItem *item) if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) { m_previewProcess->close(); } - m_previewProcess->start("ffplay", QStringList() << url << "-nodisp"); + m_previewProcess->start(KdenliveSettings::ffplaypath(), QStringList() << url << "-nodisp"); return true; } -void ArchiveOrg::stopItemPreview(QListWidgetItem *item) +void ArchiveOrg::stopItemPreview(QListWidgetItem */*item*/) { if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) { m_previewProcess->close(); @@ -219,15 +223,18 @@ void ArchiveOrg::slotParseThumbs(KJob* job) { KIO::StoredTransferJob* storedQueryJob = static_cast( job ); QDomDocument doc; - doc.setContent(storedQueryJob->data()); + doc.setContent(QString::fromUtf8(storedQueryJob->data())); QDomNodeList links = doc.elementsByTagName("a"); if (links.isEmpty()) return; - for (int i = 0; i < links.count(); i++) { + for (int i = 0; i < links.count(); ++i) { QString href = links.at(i).toElement().attribute("href"); if (!href.contains('/') && i >= links.count() / 2) { QString thumbUrl = m_thumbsPath + href; - emit gotThumb(thumbUrl); + if (m_metaInfo.value("id") == job->property("id").toString()) + emit gotThumb(thumbUrl); break; } } } + +#include "archiveorg.moc"