From 2fed332cd224d0bf20b061eac6050516de58952d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Wed, 4 Jan 2012 02:02:55 +0100 Subject: [PATCH] Asynchronous download for online resource widget (still some bugs) --- src/utils/openclipart.cpp | 4 +--- src/utils/resourcewidget.cpp | 23 ++++++++++++++++++----- src/utils/resourcewidget.h | 2 ++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/utils/openclipart.cpp b/src/utils/openclipart.cpp index f0cf579c..0ba51fa4 100644 --- a/src/utils/openclipart.cpp +++ b/src/utils/openclipart.cpp @@ -54,9 +54,7 @@ void OpenClipArt::slotStartSearch(const QString searchText, int page) void OpenClipArt::slotShowResults(KJob* job) { if (job->error() != 0 ) return; - m_listWidget->blockSignals(true); - - + m_listWidget->blockSignals(true); KIO::StoredTransferJob* storedQueryJob = static_cast( job ); QDomDocument doc; diff --git a/src/utils/resourcewidget.cpp b/src/utils/resourcewidget.cpp index 60b210ec..cce38583 100644 --- a/src/utils/resourcewidget.cpp +++ b/src/utils/resourcewidget.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #endif #endif @@ -211,9 +212,22 @@ void ResourceWidget::slotSaveItem(const QString originalUrl) ext = m_currentService->getExtension(search_results->currentItem()); } QString saveUrl = KFileDialog::getSaveFileName(KUrl(path), ext); - if (saveUrl.isEmpty()) return; - if (KIO::NetAccess::download(KUrl(m_currentInfo.itemDownload), saveUrl, this)) { - const KUrl filePath = KUrl(saveUrl); + KIO::UDSEntry entry; + KUrl srcUrl(m_currentInfo.itemDownload); + if (saveUrl.isEmpty() || !KIO::NetAccess::stat(srcUrl, entry, this)) return; + KIO::FileCopyJob * getJob = KIO::file_copy(srcUrl, KUrl(saveUrl), -1, KIO::Overwrite); + + KFileItem info(entry, srcUrl); + getJob->setSourceSize(info.size()); + connect(getJob, SIGNAL(result(KJob*)), this, SLOT(slotGotFile(KJob*))); + getJob->start(); +} + +void ResourceWidget::slotGotFile(KJob *job) +{ + if (job->error() != 0 ) return; + KIO::FileCopyJob* copyJob = static_cast( job ); + const KUrl filePath = copyJob->destUrl(); #ifdef USE_NEPOMUK #if KDE_IS_VERSION(4,6,0) Nepomuk::Resource res( filePath ); @@ -224,8 +238,7 @@ void ResourceWidget::slotSaveItem(const QString originalUrl) //res.setProperty( Soprano::Vocabulary::NAO::description(), #endif #endif - emit addClip(KUrl(saveUrl), QString());//, sound_name->url()); - } + emit addClip(filePath, QString());//, sound_name->url()); } void ResourceWidget::slotOpenUrl(const QString &url) diff --git a/src/utils/resourcewidget.h b/src/utils/resourcewidget.h index f4a19c15..575f4610 100644 --- a/src/utils/resourcewidget.h +++ b/src/utils/resourcewidget.h @@ -57,6 +57,8 @@ private slots: void slotGotMetaInfo(const QString info); void slotOpenLink(const QUrl &url); void slotLoadThumb(const QString url); + /** @brief A file download is finished */ + void slotGotFile(KJob *job); private: QString m_folder; -- 2.39.2