22 #include <kmimetype.h>
23 #include <kprotocolinfo.h>
25 #include <tqapplication.h>
26 #include <tqeventloop.h>
28 #include "forwardingslavebase.h"
33 class ForwardingSlaveBasePrivate
37 ForwardingSlaveBase::ForwardingSlaveBase(
const TQCString &protocol,
38 const TQCString &poolSocket,
39 const TQCString &appSocket)
40 : TQObject(), SlaveBase(protocol, poolSocket, appSocket)
44 ForwardingSlaveBase::~ForwardingSlaveBase()
48 bool ForwardingSlaveBase::internalRewriteURL(
const KURL &url, KURL &newURL)
61 m_processedURL = newURL;
69 kdDebug() <<
"ForwardingSlaveBase::prepareUDSEntry: listing=="
72 bool url_found =
false;
76 KIO::UDSEntry::iterator it = entry.begin();
77 KIO::UDSEntry::iterator end = entry.end();
81 KURL new_url = m_requestedURL;
87 kdDebug() <<
"Name = " << name << endl;
94 new_url.addPath(url.fileName());
96 (*it).m_str = new_url.url();
97 kdDebug() <<
"URL = " << url << endl;
98 kdDebug() <<
"New URL = " << (*it).m_str << endl;
103 if ( m_processedURL.isLocalFile() )
105 KURL new_url = m_processedURL;
108 new_url.addPath( name );
114 atom.m_str = new_url.path();
121 kdDebug() <<
"ForwardingSlaveBase::get: " << url << endl;
124 if ( internalRewriteURL(url, new_url) )
127 connectTransferJob(job);
129 tqApp->eventLoop()->enterLoop();
134 bool overwrite,
bool resume )
136 kdDebug() <<
"ForwardingSlaveBase::put: " << url << endl;
139 if ( internalRewriteURL(url, new_url) )
143 connectTransferJob(job);
145 tqApp->eventLoop()->enterLoop();
151 kdDebug() <<
"ForwardingSlaveBase::stat: " << url << endl;
154 if ( internalRewriteURL(url, new_url) )
157 connectSimpleJob(job);
159 tqApp->eventLoop()->enterLoop();
165 kdDebug() <<
"ForwardingSlaveBase::mimetype: " << url << endl;
168 if ( internalRewriteURL(url, new_url) )
171 connectTransferJob(job);
173 tqApp->eventLoop()->enterLoop();
179 kdDebug() <<
"ForwardingSlaveBase::listDir: " << url << endl;
182 if ( internalRewriteURL(url, new_url) )
187 tqApp->eventLoop()->enterLoop();
193 kdDebug() <<
"ForwardingSlaveBase::mkdir: " << url << endl;
196 if ( internalRewriteURL(url, new_url) )
199 connectSimpleJob(job);
201 tqApp->eventLoop()->enterLoop();
208 kdDebug() <<
"ForwardingSlaveBase::rename: " << src <<
", " << dest << endl;
210 KURL new_src, new_dest;
211 if ( internalRewriteURL(src, new_src) && internalRewriteURL(dest, new_dest) )
216 tqApp->eventLoop()->enterLoop();
223 kdDebug() <<
"ForwardingSlaveBase::symlink: " << target <<
", " << dest << endl;
226 if ( internalRewriteURL(dest, new_dest) )
229 connectSimpleJob(job);
231 tqApp->eventLoop()->enterLoop();
237 kdDebug() <<
"ForwardingSlaveBase::chmod: " << url << endl;
240 if ( internalRewriteURL(url, new_url) )
243 connectSimpleJob(job);
245 tqApp->eventLoop()->enterLoop();
250 int permissions,
bool overwrite)
252 kdDebug() <<
"ForwardingSlaveBase::copy: " << src <<
", " << dest << endl;
254 KURL new_src, new_dest;
255 if ( internalRewriteURL(src, new_src) && internalRewriteURL(dest, new_dest) )
261 tqApp->eventLoop()->enterLoop();
267 kdDebug() <<
"ForwardingSlaveBase::del: " << url << endl;
270 if ( internalRewriteURL(url, new_url) )
280 connectSimpleJob(job);
283 tqApp->eventLoop()->enterLoop();
290 void ForwardingSlaveBase::connectJob(
KIO::Job *job)
299 kdDebug() << k_funcinfo <<
"transferring metadata:" << endl;
301 for ( MetaData::const_iterator it = md.begin(); it != md.end(); ++it )
302 kdDebug() << it.key() <<
" = " << it.data() << endl;
305 connect( job, TQT_SIGNAL( result(
KIO::Job *) ),
306 this, TQT_SLOT( slotResult(
KIO::Job *) ) );
308 this, TQT_SLOT( slotWarning(
KIO::Job *,
const TQString &) ) );
310 this, TQT_SLOT( slotInfoMessage(
KIO::Job *,
const TQString &) ) );
315 connect( job, TQT_SIGNAL(
speed(
KIO::Job *,
unsigned long) ),
316 this, TQT_SLOT( slotSpeed(
KIO::Job *,
unsigned long) ) );
323 this, TQT_SLOT( slotRedirection(
KIO::Job *,
const KURL &) ) );
326 void ForwardingSlaveBase::connectListJob(
KIO::ListJob *job)
328 connectSimpleJob(job);
329 connect( job, TQT_SIGNAL( entries(
KIO::Job *,
const KIO::UDSEntryList &) ),
330 this, TQT_SLOT( slotEntries(
KIO::Job *,
const KIO::UDSEntryList &) ) );
335 connectSimpleJob(job);
336 connect( job, TQT_SIGNAL(
data(
KIO::Job *,
const TQByteArray &) ),
337 this, TQT_SLOT( slotData(
KIO::Job *,
const TQByteArray &) ) );
339 this, TQT_SLOT( slotDataReq(
KIO::Job *, TQByteArray &) ) );
341 this, TQT_SLOT( slotMimetype(
KIO::Job *,
const TQString &) ) );
348 void ForwardingSlaveBase::slotResult(
KIO::Job *job)
350 if ( job->
error() != 0)
366 tqApp->eventLoop()->exitLoop();
369 void ForwardingSlaveBase::slotWarning(
KIO::Job* ,
const TQString &msg)
374 void ForwardingSlaveBase::slotInfoMessage(
KIO::Job* ,
const TQString &msg)
389 void ForwardingSlaveBase::slotSpeed(
KIO::Job* ,
unsigned long bytesPerSecond)
391 speed(bytesPerSecond);
394 void ForwardingSlaveBase::slotRedirection(
KIO::Job *job,
const KURL &url)
402 tqApp->eventLoop()->exitLoop();
405 void ForwardingSlaveBase::slotEntries(
KIO::Job* ,
406 const KIO::UDSEntryList &entries)
408 KIO::UDSEntryList final_entries = entries;
410 KIO::UDSEntryList::iterator it = final_entries.begin();
411 KIO::UDSEntryList::iterator end = final_entries.end();
421 void ForwardingSlaveBase::slotData(
KIO::Job* ,
const TQByteArray &d)
426 void ForwardingSlaveBase::slotDataReq(
KIO::Job* , TQByteArray &data)
432 void ForwardingSlaveBase::slotMimetype (
KIO::Job* ,
const TQString &type)
444 #include "forwardingslavebase.moc"