QtsDvdFile QtsDvdDirectory::searchPath(QStringList::ConstIterator begin, QStringList::ConstIterator end, Qt::CaseSensitivity cs) const { if (begin == end) { // Empty path, no file. return QtsDvdFile(); } const QStringList::ConstIterator next(begin + 1); if (next == end) { // We are at the end of the path, search a file. return searchFile(*begin, cs); } foreach (const QtsDvdDirectoryPtr& dir, _subDirectories) { if (!dir.isNull() && begin->compare(dir->name(), cs) == 0) { return dir->searchPath(next, end, cs); } } // Not found return QtsDvdFile(*(end - 1)); }