Wiki

JulyScanDir - класс для рекурсивного перебора файлов и папок в отдельном потоке на Qt4

Версия: v1.25
Сайт: ссылка...
Скачать: JulyScanDir.zip
Лицензия: GPL

Класс JulyScanDir для рекурсивного перебора файлов и папок в отдельном потоке.
Используя его можно сделать прогрессбар перебора файлов или что-то другое не нагружая основной поток

Пример использования запуска с одной строки параметров:
JulyScanDir *scanDir = new JulyScanDir(this);
            scanDir->scanDir("C:\\Films","*.avi");  // задание параметров поиска и запуск
Пример использования запуска с отдельными параметрами:
JulyScanDir *scanDir = new JulyScanDir(this);
            scanDir->setStartDir("C:\\Films"); // задает папку или список папок разделенных ;; или через QStringList
            scanDir->setSearchSubFolders(false); // ищем файлы только в одной папке
            scanDir->setSubFoldersFirst(true);   // класс в текущей директории сначала сканирует папки а потом файлы
QStringList  filtersList;
            filtersList << "*.avi" << "*.mpg";   // задание маски файлов
            scanDir->setFilesFilter(filtersList);
            scanDir->scanDir();                // запуск поиска

В ответ получаем сигналы которые можно прикрутить к переменной класса:
void dirChanged(QString);   // Во время поиска возвращает полный адрес следующей директории
void fileChanged(QString);   // Во время поиска возвращает полный адрес текущего файла
void fileChanged(QFileInfo);   // Во время поиска возвращает полную информацию о файле
void numChanged(int);          // Во время поиска возвращает последовательный номер найденого файла
void loadedList(QStringList);  // По завершению поиска возвращает список найденых файлов
void errorHeppend(int);        // Если случилась ошибка то возвращает: 0 если не найдено никаких файлов
                              // и 1 если заданая папка поиска не существует

Еще параметры:
void setIgnoreDirs(QStringList); // задает список полных адресов папок что будут пропущены в поиске
void setIgnoreDirs(QString); // задает одну папку что будет пропущена в поиске или список папок через ;;
void clearIgnoreDirs(); // очищает и отключает список игнорируемых папок
void setRegExp(QRegExp fileRegExp); // задание регулярного выражения, если оно верно к имени файла он будет выведен в результат
void clearRegExp();  // очищает и отключает RegExp
void setSearchHidden(bool hidden); // задает фильтр поиска, искать ли скрытые файлы и папки

При начале сканирования и по окончании fileChanged(QString) возвращает пустую строку (так удобнее при перерисовке результата)

setStartDir(), setIgnoreDirs(), setFilesFilter() задаються как и через QStringList так и QString.
QString будет разбит на список разделенный из строки символами ;;

Буду рад услышать коментарии, критику или просто спасибо на форуме