]> git.sesse.net Git - kdenlive/blobdiff - src/utils/archiveorg.cpp
Use KLocalizedString (for i18n only, in kf5 it will necessary => use a script for...
[kdenlive] / src / utils / archiveorg.cpp
index de4bb332413001129859b29e1db2eb298e94f074..357b9b82a43e22021500813e608eb58e14f7f56e 100644 (file)
@@ -30,7 +30,7 @@
 #include <KDebug>
 #include "kdenlivesettings.h"
 #include <kio/job.h>
-#include <KLocale>
+#include <KLocalizedString>
 
 #ifdef USE_QJSON
 #include <qjson/parser.h>
@@ -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<KIO::StoredTransferJob*>( job );
     QDomDocument doc;
-    doc.setContent(storedQueryJob->data());
+    doc.setContent(QString::fromUtf8(storedQueryJob->data()));
     QDomNodeList links = doc.elementsByTagName("a");
     QString html = QString("<style type=\"text/css\">tr.cellone {background-color: %1;}").arg(qApp->palette().alternateBase().color().name());
     html += "</style><table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">";
     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 += "<tr class=\"cellone\">";
             }
             else html += "<tr>";
-            html += "<td>" + KUrl(link).fileName() + QString("</td><td><a href=\"%1\">preview</a></td><td><a href=\"%2\">download</a></td></tr>").arg(link + "_preview").arg(link);
+            html += "<td>" + KUrl(link).fileName() + QString("</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 += "</table>";
-    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<KIO::StoredTransferJob*>( 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"