File indexing completed on 2024-05-12 16:06:33
0001 /* 0002 SPDX-FileCopyrightText: 2007 Tobias Koenig <tokoe@kde.org> 0003 SPDX-FileCopyrightText: 2011 David Palacio <dpalacio@orbitalibre.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "directory.h" 0009 0010 #include <QDir> 0011 #include <QDirIterator> 0012 #include <QFile> 0013 #include <QFileInfo> 0014 0015 #include <memory> 0016 0017 Directory::Directory() 0018 { 0019 } 0020 0021 Directory::~Directory() 0022 { 0023 } 0024 0025 bool Directory::open(const QString &dirName) 0026 { 0027 mDir = dirName; 0028 QFileInfo dirTest(dirName); 0029 return dirTest.isDir() && dirTest.isReadable(); 0030 } 0031 0032 QStringList Directory::recurseDir(const QString &dirPath, int curDepth) const 0033 { 0034 QDir dir(dirPath); 0035 dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); 0036 QStringList fileList; 0037 QDirIterator it(dir); 0038 QFileInfo info; 0039 while (it.hasNext()) { 0040 it.next(); 0041 info = it.fileInfo(); 0042 if (info.isDir() && curDepth < staticMaxDepth) { 0043 fileList.append(recurseDir(info.filePath(), curDepth + 1)); 0044 } else if (info.isFile()) { 0045 fileList.append(info.filePath()); 0046 } 0047 } 0048 return fileList; 0049 } 0050 0051 QStringList Directory::list() const 0052 { 0053 return recurseDir(mDir, 0); 0054 } 0055 0056 QIODevice *Directory::createDevice(const QString &path) const 0057 { 0058 std::unique_ptr<QFile> file(new QFile(path)); 0059 if (!file->open(QIODevice::ReadOnly)) { 0060 return nullptr; 0061 } 0062 0063 return file.release(); 0064 }