File indexing completed on 2024-04-21 14:52:33

0001 /*
0002     SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #ifndef FILTEREDDIRITERATOR_H
0008 #define FILTEREDDIRITERATOR_H
0009 
0010 #include <QDirIterator>
0011 #include <QFileInfo>
0012 #include <QStack>
0013 
0014 namespace Baloo {
0015 
0016 class FileIndexerConfig;
0017 
0018 class FilteredDirIterator
0019 {
0020 public:
0021     enum Filter {
0022         FilesAndDirs,
0023         DirsOnly,
0024     };
0025     FilteredDirIterator(const FileIndexerConfig* config, const QString& folder, Filter filter = FilesAndDirs);
0026     ~FilteredDirIterator();
0027 
0028     FilteredDirIterator(const FilteredDirIterator &) = delete;
0029     FilteredDirIterator &operator=(const FilteredDirIterator &) = delete;
0030 
0031     QString next();
0032     QString filePath() const;
0033     QFileInfo fileInfo() const;
0034 
0035 private:
0036     const FileIndexerConfig* m_config;
0037 
0038     QDirIterator* m_currentIter;
0039     QStack<QString> m_paths;
0040     QDir::Filters m_filters;
0041 
0042     QString m_filePath;
0043     QFileInfo m_fileInfo;
0044     bool m_firstItem;
0045 };
0046 
0047 }
0048 
0049 #endif // FILTEREDDIRITERATOR_H