QStringList Directory::recurseDir( const QString &dirPath, int curDepth ) const { QDir dir( dirPath ); dir.setFilter( QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot ); QStringList fileList; QDirIterator it( dir ); QFileInfo info; while( it.hasNext() ) { it.next(); info = it.fileInfo(); if ( info.isDir() && curDepth < staticMaxDepth ) { fileList.append( recurseDir( info.filePath(), curDepth + 1 ) ); } else if ( info.isFile() ) { fileList.append( info.filePath() ); } } return fileList; }
void DirReader::recurseDir(const QString &path, int curDepth) { QDir dir(path); dir.setSorting(flags); dir.setFilter(QDir::AllDirs|QDir::Files); const QStringList files = dir.entryList(); foreach (QString f, files) { if (f == "." || f == "..") continue; QFileInfo finf(dir, f); fileHandler(finf); if (finf.isDir()) // && (finf.absoluteFilePath() != path)) { if (curDepth < maxDirDepth) { recurseDir(finf.absoluteFilePath(), curDepth+1); } } } }
void DirReader::visit(const QString &path) { recurseDir(path, 0); }
QStringList Directory::list() const { return recurseDir( mDir, 0 ); }