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 }