void RecurseDirectory(const QString dir, bool recursion) { QDir dirEnt(dir); QFileInfoList list = dirEnt.entryInfoList(); for(int i = 0; i < list.count(); i++) { QFileInfo info = list[i]; QString filePath = info.filePath(); QString fileExt = info.suffix().toLower(); QString name = dir + QDir::separator(); if(recursion && info.isDir()) { // recursive if(info.fileName() != ".." && info.fileName() != ".") { RecurseDirectory(filePath, recursion); } } else if(imageExtensions.contains(fileExt)) { if(!QFile::exists(name + info.completeBaseName() + QString(".atlas"))) { packerData *data = new packerData; data->path = info.absoluteFilePath(); data->file = filePath.replace(topImageDir, ""); // qDebug() << "Packing " << data->path << "..."; mainPacker->addItem(data->path, data); } } } }
void MainWindow::RecurseDirectory(const QString &dir) { QDir dirEnt(dir); QFileInfoList list = dirEnt.entryInfoList(); for (int i = 0; i < list.count() && !recursiveLoaderDone;i++) { recursiveLoaderCounter++; QFileInfo info = list[i]; QString filePath = info.filePath(); QString fileExt = info.suffix().toLower(); QString name = dir + QDir::separator(); if (info.isDir()) { // recursive if (info.fileName()!=".." && info.fileName()!=".") RecurseDirectory(filePath); } else if(imageExtensions.contains(fileExt)) { if(!QFile::exists(name+info.completeBaseName()+QString(".atlas"))) { ui->tilesList->addItem(filePath.replace(topImageDir, "")); packerData * data = new packerData; data->listItem = ui->tilesList->item(ui->tilesList->count() - 1); data->path = info.absoluteFilePath(); packer.addItem(data->path, data); } } if(recursiveLoaderCounter == 500) { if(QMessageBox::No == QMessageBox::question( this, tr("Directory is too big"), tr("It seems that directory <b>") + topImageDir + tr("</b> is too big. " "Loading may take HUGE amount of time and memory. " "Please, check directory again. <br>" "Do you want to continue?"), QMessageBox::Yes, QMessageBox::No)) { recursiveLoaderDone = true; recursiveLoaderCounter++; continue; } ui->previewWithImages->setChecked(false); } } }