void TrashProtocol::stat(const KURL &url) { INIT_IMPL; const QString path = url.path(); if(path.isEmpty() || path == "/") { // The root is "virtual" - it's not a single physical directory KIO::UDSEntry entry; createTopLevelDirEntry(entry); statEntry(entry); finished(); } else { int trashId; QString fileId, relativePath; bool ok = TrashImpl::parseURL(url, trashId, fileId, relativePath); if(!ok) { // ######## do we still need this? kdDebug() << k_funcinfo << url << " looks fishy, returning does-not-exist" << endl; // A URL like trash:/file simply means that CopyJob is trying to see if // the destination exists already (it made up the URL by itself). error(KIO::ERR_DOES_NOT_EXIST, url.prettyURL()); // error( KIO::ERR_SLAVE_DEFINED, i18n( "Malformed URL %1" ).arg( url.prettyURL() ) ); return; } const QString filePath = impl.physicalPath(trashId, fileId, relativePath); if(filePath.isEmpty()) { error(impl.lastErrorCode(), impl.lastErrorMessage()); return; } QString fileName = filePath.section('/', -1, -1, QString::SectionSkipEmpty); QString fileURL = QString::null; if(url.path().length() > 1) { fileURL = url.url(); } KIO::UDSEntry entry; TrashedFileInfo info; ok = impl.infoForFile(trashId, fileId, info); if(ok) ok = createUDSEntry(filePath, fileName, fileURL, entry, info); if(!ok) { error(KIO::ERR_COULD_NOT_STAT, url.prettyURL()); } statEntry(entry); finished(); } }
void TrashProtocol::stat(const KUrl& url) { INIT_IMPL; const QString path = url.path(); if (path.isEmpty() || path == QLatin1String("/")) { // The root is "virtual" - it's not a single physical directory KIO::UDSEntry entry; createTopLevelDirEntry( entry ); statEntry( entry ); finished(); } else { int trashId; QString fileId, relativePath; bool ok = TrashImpl::parseURL( url, trashId, fileId, relativePath ); if ( !ok ) { // ######## do we still need this? kDebug() << url << " looks fishy, returning does-not-exist"; // A URL like trash:/file simply means that CopyJob is trying to see if // the destination exists already (it made up the URL by itself). error( KIO::ERR_DOES_NOT_EXIST, url.prettyUrl() ); //error( KIO::ERR_SLAVE_DEFINED, i18n( "Malformed URL %1" ).arg( url.prettyUrl() ) ); return; } kDebug() << "parsed" << url << "got" << trashId << fileId << relativePath; const QString filePath = impl.physicalPath( trashId, fileId, relativePath ); if ( filePath.isEmpty() ) { error( impl.lastErrorCode(), impl.lastErrorMessage() ); return; } // For a toplevel file, use the fileId as display name (to hide the trashId) // For a file in a subdir, use the fileName as is. QString fileDisplayName = relativePath.isEmpty() ? fileId : url.fileName(); KUrl fileURL; if ( url.path().length() > 1 ) { fileURL = url; } KIO::UDSEntry entry; TrashedFileInfo info; ok = impl.infoForFile( trashId, fileId, info ); if ( ok ) ok = createUDSEntry( filePath, fileDisplayName, fileURL.fileName(), entry, info ); if ( !ok ) { error( KIO::ERR_COULD_NOT_STAT, url.prettyUrl() ); return; } statEntry( entry ); finished(); } }
void TrashProtocol::listRoot() { INIT_IMPL; const TrashedFileInfoList lst = impl.list(); totalSize(lst.count()); KIO::UDSEntry entry; createTopLevelDirEntry(entry); listEntry(entry, false); for(TrashedFileInfoList::ConstIterator it = lst.begin(); it != lst.end(); ++it) { const KURL url = TrashImpl::makeURL((*it).trashId, (*it).fileId, QString::null); KURL origURL; origURL.setPath((*it).origPath); entry.clear(); if(createUDSEntry((*it).physicalPath, origURL.fileName(), url.url(), entry, *it)) listEntry(entry, false); } entry.clear(); listEntry(entry, true); finished(); }