KNewStuff
qasyncimage.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "qasyncimage_p.h"
00020
00021 #include <kio/job.h>
00022 #include <kio/scheduler.h>
00023 #include <kstandarddirs.h>
00024 #include <kapplication.h>
00025 #include <krandom.h>
00026 #include <kdebug.h>
00027
00028 #include <QtCore/QFile>
00029
00030 QAsyncImage::QAsyncImage(const QString& url, QObject* parent)
00031 : QObject(parent), QImage(), m_url(url)
00032 {
00033 if (!m_url.isEmpty()) {
00034 KIO::TransferJob *job = KIO::get(m_url, KIO::NoReload, KIO::HideProgressInfo);
00035 KIO::Scheduler::scheduleJob(job);
00036 connect(job, SIGNAL(result(KJob*)), SLOT(slotDownload(KJob*)));
00037 connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)), SLOT(slotData(KIO::Job*, const QByteArray&)));
00038 }
00039 }
00040
00041 void QAsyncImage::slotData(KIO::Job *job, const QByteArray& buf)
00042 {
00043 Q_UNUSED(job);
00044 m_buffer.append(buf);
00045 }
00046
00047 void QAsyncImage::slotDownload(KJob *job)
00048 {
00049
00050 if (job->error()) {
00051
00052 m_buffer.clear();
00053 return;
00054 }
00055 loadFromData(m_buffer);
00056 m_buffer.clear();
00057 emit signalLoaded(m_url, *this);
00058 }
00059
00060 #include "qasyncimage_p.moc"