Path browser: Move special handling of Windows root directory to GetFilesInDir.

This commit is contained in:
Henrik Rydgård 2021-07-10 11:47:03 +02:00
parent 623cc99145
commit a0bae1855f
2 changed files with 23 additions and 22 deletions

View File

@ -167,6 +167,26 @@ size_t GetFilesInDir(const Path &directory, std::vector<FileInfo> * files, const
return true; return true;
} }
#if PPSSPP_PLATFORM(WINDOWS)
if (directory.IsRoot()) {
// Special path that means root of file system.
std::vector<std::string> drives = File::GetWindowsDrives();
for (auto drive = drives.begin(); drive != drives.end(); ++drive) {
if (*drive == "A:/" || *drive == "B:/")
continue;
File::FileInfo fake;
fake.fullName = Path(*drive);
fake.name = *drive;
fake.isDirectory = true;
fake.exists = true;
fake.size = 0;
fake.isWritable = false;
files->push_back(fake);
}
return files->size();
}
#endif
size_t foundEntries = 0; size_t foundEntries = 0;
std::set<std::string> filters; std::set<std::string> filters;
if (filter) { if (filter) {

View File

@ -214,32 +214,13 @@ bool PathBrowser::GetListing(std::vector<File::FileInfo> &fileInfo, const char *
guard.lock(); guard.lock();
} }
#if PPSSPP_PLATFORM(WINDOWS)
if (path_.IsRoot()) {
// Special path that means root of file system.
std::vector<std::string> drives = File::GetWindowsDrives();
for (auto drive = drives.begin(); drive != drives.end(); ++drive) {
if (*drive == "A:/" || *drive == "B:/")
continue;
File::FileInfo fake;
fake.fullName = Path(*drive);
fake.name = *drive;
fake.isDirectory = true;
fake.exists = true;
fake.size = 0;
fake.isWritable = false;
fileInfo.push_back(fake);
}
}
#endif
if (path_.Type() == PathType::HTTP) { if (path_.Type() == PathType::HTTP) {
fileInfo = ApplyFilter(pendingFiles_, filter); fileInfo = ApplyFilter(pendingFiles_, filter);
return true; return true;
} else {
File::GetFilesInDir(path_, &fileInfo, filter);
return true;
} }
File::GetFilesInDir(path_, &fileInfo, filter);
return true;
} }
bool PathBrowser::CanNavigateUp() { bool PathBrowser::CanNavigateUp() {