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)
52 if ( url.protocol().ascii()==mProtocol )
54 result = rewriteURL(url, newURL);
61 m_processedURL = newURL;
69 kdDebug() <<
"ForwardingSlaveBase::prepareUDSEntry: listing=="
75 KIO::UDSEntry::iterator it = entry.begin();
76 KIO::UDSEntry::iterator end = entry.end();
80 KURL new_url = m_requestedURL;
86 kdDebug() <<
"Name = " << name << endl;
92 new_url.addPath(url.fileName());
94 (*it).m_str = new_url.url();
95 kdDebug() <<
"URL = " << url << endl;
96 kdDebug() <<
"New URL = " << (*it).m_str << endl;
101 if ( m_processedURL.isLocalFile() )
103 KURL new_url = m_processedURL;
106 new_url.addPath( name );
112 atom.m_str = new_url.path();
117 void ForwardingSlaveBase::get(
const KURL &url)
119 kdDebug() <<
"ForwardingSlaveBase::get: " << url << endl;
122 if ( internalRewriteURL(url, new_url) )
125 connectTransferJob(job);
127 tqApp->eventLoop()->enterLoop();
131 void ForwardingSlaveBase::put(
const KURL &url,
int permissions,
132 bool overwrite,
bool resume )
134 kdDebug() <<
"ForwardingSlaveBase::put: " << url << endl;
137 if ( internalRewriteURL(url, new_url) )
141 connectTransferJob(job);
143 tqApp->eventLoop()->enterLoop();
147 void ForwardingSlaveBase::stat(
const KURL &url)
149 kdDebug() <<
"ForwardingSlaveBase::stat: " << url << endl;
152 if ( internalRewriteURL(url, new_url) )
155 connectSimpleJob(job);
157 tqApp->eventLoop()->enterLoop();
161 void ForwardingSlaveBase::mimetype(
const KURL &url)
163 kdDebug() <<
"ForwardingSlaveBase::mimetype: " << url << endl;
166 if ( internalRewriteURL(url, new_url) )
169 connectTransferJob(job);
171 tqApp->eventLoop()->enterLoop();
175 void ForwardingSlaveBase::listDir(
const KURL &url)
177 kdDebug() <<
"ForwardingSlaveBase::listDir: " << url << endl;
180 if ( internalRewriteURL(url, new_url) )
185 tqApp->eventLoop()->enterLoop();
189 void ForwardingSlaveBase::mkdir(
const KURL &url,
int permissions)
191 kdDebug() <<
"ForwardingSlaveBase::mkdir: " << url << endl;
194 if ( internalRewriteURL(url, new_url) )
197 connectSimpleJob(job);
199 tqApp->eventLoop()->enterLoop();
203 void ForwardingSlaveBase::rename(
const KURL &src,
const KURL &dest,
206 kdDebug() <<
"ForwardingSlaveBase::rename: " << src <<
", " << dest << endl;
208 KURL new_src, new_dest;
209 if ( internalRewriteURL(src, new_src) && internalRewriteURL(dest, new_dest) )
214 tqApp->eventLoop()->enterLoop();
218 void ForwardingSlaveBase::symlink(
const TQString &target,
const KURL &dest,
221 kdDebug() <<
"ForwardingSlaveBase::symlink: " << target <<
", " << dest << endl;
224 if ( internalRewriteURL(dest, new_dest) )
227 connectSimpleJob(job);
229 tqApp->eventLoop()->enterLoop();
233 void ForwardingSlaveBase::chmod(
const KURL &url,
int permissions)
235 kdDebug() <<
"ForwardingSlaveBase::chmod: " << url << endl;
238 if ( internalRewriteURL(url, new_url) )
241 connectSimpleJob(job);
243 tqApp->eventLoop()->enterLoop();
247 void ForwardingSlaveBase::copy(
const KURL &src,
const KURL &dest,
248 int permissions,
bool overwrite)
250 kdDebug() <<
"ForwardingSlaveBase::copy: " << src <<
", " << dest << endl;
252 KURL new_src, new_dest;
253 if ( internalRewriteURL(src, new_src) && internalRewriteURL(dest, new_dest) )
259 tqApp->eventLoop()->enterLoop();
263 void ForwardingSlaveBase::del(
const KURL &url,
bool isfile)
265 kdDebug() <<
"ForwardingSlaveBase::del: " << url << endl;
268 if ( internalRewriteURL(url, new_url) )
278 connectSimpleJob(job);
281 tqApp->eventLoop()->enterLoop();
288 void ForwardingSlaveBase::connectJob(
KIO::Job *job)
297 kdDebug() << k_funcinfo <<
"transferring metadata:" << endl;
299 for ( MetaData::const_iterator it = md.begin(); it != md.end(); ++it )
300 kdDebug() << it.key() <<
" = " << it.data() << endl;
303 connect( job, TQT_SIGNAL( result(
KIO::Job *) ),
304 this, TQT_SLOT( slotResult(
KIO::Job *) ) );
305 connect( job, TQT_SIGNAL( warning(
KIO::Job *,
const TQString &) ),
306 this, TQT_SLOT( slotWarning(
KIO::Job *,
const TQString &) ) );
307 connect( job, TQT_SIGNAL( infoMessage(
KIO::Job *,
const TQString &) ),
308 this, TQT_SLOT( slotInfoMessage(
KIO::Job *,
const TQString &) ) );
313 connect( job, TQT_SIGNAL( speed(
KIO::Job *,
unsigned long) ),
314 this, TQT_SLOT( slotSpeed(
KIO::Job *,
unsigned long) ) );
320 connect( job, TQT_SIGNAL( redirection(
KIO::Job *,
const KURL &) ),
321 this, TQT_SLOT( slotRedirection(
KIO::Job *,
const KURL &) ) );
324 void ForwardingSlaveBase::connectListJob(
KIO::ListJob *job)
326 connectSimpleJob(job);
327 connect( job, TQT_SIGNAL( entries(
KIO::Job *,
const KIO::UDSEntryList &) ),
328 this, TQT_SLOT( slotEntries(
KIO::Job *,
const KIO::UDSEntryList &) ) );
333 connectSimpleJob(job);
334 connect( job, TQT_SIGNAL( data(
KIO::Job *,
const TQByteArray &) ),
335 this, TQT_SLOT( slotData(
KIO::Job *,
const TQByteArray &) ) );
336 connect( job, TQT_SIGNAL( dataReq(
KIO::Job *, TQByteArray &) ),
337 this, TQT_SLOT( slotDataReq(
KIO::Job *, TQByteArray &) ) );
339 this, TQT_SLOT( slotMimetype(
KIO::Job *,
const TQString &) ) );
346 void ForwardingSlaveBase::slotResult(
KIO::Job *job)
348 if ( job->
error() != 0)
358 prepareUDSEntry(entry);
364 tqApp->eventLoop()->exitLoop();
367 void ForwardingSlaveBase::slotWarning(
KIO::Job* ,
const TQString &msg)
372 void ForwardingSlaveBase::slotInfoMessage(
KIO::Job* ,
const TQString &msg)
387 void ForwardingSlaveBase::slotSpeed(
KIO::Job* ,
unsigned long bytesPerSecond)
389 speed(bytesPerSecond);
392 void ForwardingSlaveBase::slotRedirection(
KIO::Job *job,
const KURL &url)
400 tqApp->eventLoop()->exitLoop();
403 void ForwardingSlaveBase::slotEntries(
KIO::Job* ,
404 const KIO::UDSEntryList &entries)
406 KIO::UDSEntryList final_entries = entries;
408 KIO::UDSEntryList::iterator it = final_entries.begin();
409 KIO::UDSEntryList::iterator end = final_entries.end();
413 prepareUDSEntry(*it,
true);
416 listEntries( final_entries );
419 void ForwardingSlaveBase::slotData(
KIO::Job* ,
const TQByteArray &d)
424 void ForwardingSlaveBase::slotDataReq(
KIO::Job* , TQByteArray &data)
430 void ForwardingSlaveBase::slotMimetype (
KIO::Job* ,
const TQString &type)
442 #include "forwardingslavebase.moc"
A more complex Job to delete files and directories.
The base class for all jobs.
void setMetaData(const KIO::MetaData &metaData)
virtual void kill(bool quietly=true)
Abort this job.
int error() const
Returns the error code, if there has been an error.
void setInteractive(bool enable)
Enable or disable the message display from the job.
const TQString & errorText() const
Returns the error text if there has been an error.
A ListJob is allows you to get the get the content of a directory.
A simple job (one url and one command).
A KIO job that retrieves information about a file or directory.
const UDSEntry & statResult() const
The transfer job pumps data into and/or out of a Slave.
A namespace for KIO globals.
KIO_EXPORT SimpleJob * rmdir(const KURL &url)
Removes a single directory.
TQValueList< UDSAtom > UDSEntry
An entry is the list of atoms containing all the information for a file or URL.
KIO_EXPORT TransferJob * get(const KURL &url, bool reload=false, bool showProgressInfo=true)
Get (a.k.a.
KIO_EXPORT SimpleJob * symlink(const TQString &target, const KURL &dest, bool overwrite, bool showProgressInfo=true)
Create or move a symlink.
KIO_EXPORT StatJob * stat(const KURL &url, bool showProgressInfo=true)
Find all details for one file or directory.
TQ_ULLONG filesize_t
64-bit file size
KIO_EXPORT MimetypeJob * mimetype(const KURL &url, bool showProgressInfo=true)
Find mimetype for one file or directory.
KIO_EXPORT TransferJob * put(const KURL &url, int permissions, bool overwrite, bool resume, bool showProgressInfo=true)
Put (a.k.a.
KIO_EXPORT DeleteJob * del(const KURL &src, bool shred=false, bool showProgressInfo=true)
Delete a file or directory.
KIO_EXPORT ChmodJob * chmod(const KFileItemList &lstItems, int permissions, int mask, TQString newOwner, TQString newGroup, bool recursive, bool showProgressInfo=true)
Creates a job that changes permissions/ownership on several files or directories, optionally recursiv...
@ UDS_URL
An alternative URL (If different from the caption)
@ UDS_LOCAL_PATH
A local file path if the ioslave display files sitting on the local filesystem (but in another hierar...
@ UDS_NAME
Filename - as displayed in directory listings etc.
KIO_EXPORT FileCopyJob * file_copy(const KURL &src, const KURL &dest, int permissions=-1, bool overwrite=false, bool resume=false, bool showProgressInfo=true)
Copy a single file.
KIO_EXPORT SimpleJob * rename(const KURL &src, const KURL &dest, bool overwrite)
Rename a file or directory.
KIO_EXPORT ListJob * listDir(const KURL &url, bool showProgressInfo=true, bool includeHidden=true)
List the contents of url, which is assumed to be a directory.
KIO_EXPORT SimpleJob * mkdir(const KURL &url, int permissions=-1)
Creates a single directory.