/*! to retrieve the both lists with groupFrames option = on and off. */ void TSystem::readDirectory(TFilePathSet &groupFpSet, TFilePathSet &allFpSet, const TFilePath &path) { if (!TFileStatus(path).isDirectory()) throw TSystemException(path, " is not a directory"); std::set<TFilePath, CaselessFilepathLess> fileSet_group; std::set<TFilePath, CaselessFilepathLess> fileSet_all; QStringList fil = QDir(toQString(path)) .entryList(QDir::Files | QDir::NoDotAndDotDot | QDir::Readable); if (fil.size() == 0) return; for (int i = 0; i < fil.size(); i++) { QString fi = fil.at(i); TFilePath son = path + TFilePath(fi.toStdWString()); // store all file paths fileSet_all.insert(son); // in case of the sequencial files if (son.getDots() == "..") son = son.withFrame(); // store the group. insersion avoids duplication of the item fileSet_group.insert(son); } groupFpSet.insert(groupFpSet.end(), fileSet_group.begin(), fileSet_group.end()); allFpSet.insert(allFpSet.end(), fileSet_all.begin(), fileSet_all.end()); }
void TSystem::readDirectory(TFilePathSet &dst, const QDir &dir, bool groupFrames) { if (!(dir.exists() && QFileInfo(dir.path()).isDir())) throw TSystemException(TFilePath(dir.path().toStdWString()), " is not a directory"); QStringList entries(dir.entryList(dir.filter() | QDir::NoDotAndDotDot)); TFilePath dirPath(dir.path().toStdWString()); std::set<TFilePath, CaselessFilepathLess> fpSet; int e, eCount = entries.size(); for (e = 0; e != eCount; ++e) { TFilePath path(dirPath + TFilePath(entries.at(e).toStdWString())); if (groupFrames && path.getDots() == "..") path = path.withFrame(); fpSet.insert(path); } dst.insert(dst.end(), fpSet.begin(), fpSet.end()); }
/*! return the file list which is readable and executable */ void TSystem::readDirectory_Dir_ReadExe(TFilePathSet &dst, const TFilePath &path) { if (!TFileStatus(path).isDirectory()) throw TSystemException(path, " is not a directory"); std::set<TFilePath, CaselessFilepathLess> fileSet; QStringList fil = QDir(toQString(path)) .entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Readable); int i; for (i = 0; i < fil.size(); i++) { QString fi = fil.at(i); TFilePath son = path + TFilePath(fi.toStdWString()); fileSet.insert(son); } dst.insert(dst.end(), fileSet.begin(), fileSet.end()); }