28 #include <QtGui/QApplication>
29 #include <QtCore/QEventLoop>
34 class ForwardingSlaveBasePrivate
37 ForwardingSlaveBasePrivate(
QObject * eventLoopParent) :
38 eventLoop(eventLoopParent)
40 ForwardingSlaveBase *q;
46 bool internalRewriteUrl(
const KUrl &url,
KUrl &newURL);
48 void connectJob(Job *job);
49 void connectSimpleJob(SimpleJob *job);
50 void connectListJob(ListJob *job);
51 void connectTransferJob(TransferJob *job);
53 void _k_slotResult(
KJob *job);
55 void _k_slotInfoMessage(
KJob *job,
const QString &msg);
56 void _k_slotTotalSize(
KJob *job, qulonglong size);
57 void _k_slotProcessedSize(
KJob *job, qulonglong size);
58 void _k_slotSpeed(
KJob *job,
unsigned long bytesPerSecond);
67 void _k_slotData(
KIO::Job *job,
const QByteArray &data);
68 void _k_slotDataReq(
KIO::Job *job, QByteArray &data);
74 const QByteArray &poolSocket,
75 const QByteArray &appSocket)
77 d( new ForwardingSlaveBasePrivate(this) )
87 bool ForwardingSlaveBasePrivate::internalRewriteUrl(
const KUrl &url,
KUrl &newURL)
91 if ( url.
protocol() == q->mProtocol )
93 result = q->rewriteUrl(url, newURL);
100 m_processedURL = newURL;
101 m_requestedURL = url;
114 const bool url_found = !urlStr.isEmpty();
118 KUrl new_url = d->m_requestedURL;
123 kDebug() <<
"URL =" << url;
124 kDebug() <<
"New URL =" << new_url;
127 if (mimetype.isEmpty())
129 KUrl new_url = d->m_processedURL;
130 if (url_found && listing)
139 mimetype = KMimeType::findByUrl(new_url)->name();
146 if ( d->m_processedURL.isLocalFile() )
148 KUrl new_url = d->m_processedURL;
160 return d->m_processedURL;
165 return d->m_requestedURL;
173 if ( d->internalRewriteUrl(url, new_url) )
176 d->connectTransferJob(job);
192 if ( d->internalRewriteUrl(url, new_url) )
196 d->connectTransferJob(job);
211 if ( d->internalRewriteUrl(url, new_url) )
214 d->connectSimpleJob(job);
229 if ( d->internalRewriteUrl(url, new_url) )
232 d->connectTransferJob(job);
247 if ( d->internalRewriteUrl(url, new_url) )
250 d->connectListJob(job);
265 if ( d->internalRewriteUrl(url, new_url) )
268 d->connectSimpleJob(job);
281 kDebug() << src <<
"," << dest;
283 KUrl new_src, new_dest;
284 if( !d->internalRewriteUrl(src, new_src) )
288 else if ( d->internalRewriteUrl(dest, new_dest) )
304 kDebug() << target <<
", " << dest;
307 if ( d->internalRewriteUrl(dest, new_dest) )
310 d->connectSimpleJob(job);
325 if ( d->internalRewriteUrl(url, new_url) )
328 d->connectSimpleJob(job);
343 if ( d->internalRewriteUrl(url, new_url) )
346 d->connectSimpleJob(job);
357 int permissions, JobFlags flags)
359 kDebug() << src <<
"," << dest;
361 KUrl new_src, new_dest;
362 if ( !d->internalRewriteUrl(src, new_src) )
366 else if( d->internalRewriteUrl(dest, new_dest) )
386 if ( d->internalRewriteUrl(url, new_url) )
396 d->connectSimpleJob(job);
410 void ForwardingSlaveBasePrivate::connectJob(
KIO::Job *job)
419 kDebug() <<
"transferring metadata:";
421 for ( MetaData::const_iterator it = md.begin(); it != md.end(); ++it )
422 kDebug() << it.key() <<
" = " << it.data();
425 q->connect( job, SIGNAL(result(
KJob*)),
426 SLOT(_k_slotResult(
KJob*)) );
431 q->connect( job, SIGNAL(totalSize(
KJob*,qulonglong)),
432 SLOT(_k_slotTotalSize(
KJob*,qulonglong)) );
433 q->connect( job, SIGNAL(processedSize(
KJob*,qulonglong)),
434 SLOT(_k_slotProcessedSize(
KJob*,qulonglong)) );
435 q->connect( job, SIGNAL(speed(
KJob*,ulong)),
436 SLOT(_k_slotSpeed(
KJob*,ulong)) );
439 void ForwardingSlaveBasePrivate::connectSimpleJob(
KIO::SimpleJob *job)
446 void ForwardingSlaveBasePrivate::connectListJob(
KIO::ListJob *job)
448 connectSimpleJob(job);
455 connectSimpleJob(job);
456 q->connect( job, SIGNAL(data(
KIO::Job*,QByteArray)),
457 SLOT(_k_slotData(
KIO::Job*,QByteArray)) );
458 q->connect( job, SIGNAL(dataReq(
KIO::Job*,QByteArray&)),
459 SLOT(_k_slotDataReq(
KIO::Job*,QByteArray&)) );
468 void ForwardingSlaveBasePrivate::_k_slotResult(
KJob *job)
470 if ( job->error() != 0)
472 q->error( job->error(), job->errorText() );
480 q->prepareUDSEntry(entry);
481 q->statEntry( entry );
489 void ForwardingSlaveBasePrivate::_k_slotWarning(
KJob* ,
const QString &msg)
494 void ForwardingSlaveBasePrivate::_k_slotInfoMessage(
KJob* ,
const QString &msg)
499 void ForwardingSlaveBasePrivate::_k_slotTotalSize(
KJob* , qulonglong size)
504 void ForwardingSlaveBasePrivate::_k_slotProcessedSize(
KJob* , qulonglong size)
506 q->processedSize(size);
509 void ForwardingSlaveBasePrivate::_k_slotSpeed(
KJob* ,
unsigned long bytesPerSecond)
511 q->speed(bytesPerSecond);
514 void ForwardingSlaveBasePrivate::_k_slotRedirection(
KIO::Job *job,
const KUrl &url)
519 job->
kill( KJob::Quietly );
525 void ForwardingSlaveBasePrivate::_k_slotEntries(
KIO::Job* ,
530 KIO::UDSEntryList::iterator it = final_entries.begin();
531 const KIO::UDSEntryList::iterator
end = final_entries.end();
535 q->prepareUDSEntry(*it,
true);
538 q->listEntries( final_entries );
541 void ForwardingSlaveBasePrivate::_k_slotData(
KIO::Job* ,
const QByteArray &_data)
546 void ForwardingSlaveBasePrivate::_k_slotDataReq(
KIO::Job* , QByteArray &data)
552 void ForwardingSlaveBasePrivate::_k_slotMimetype (
KIO::Job* ,
const QString &type)
559 q->canResume(offset);
564 #include "forwardingslavebase.moc"