void FilesSelectionWizardPage::initializePage() { m_view->setModel(0); delete m_model; m_model = new ProjectExplorer::SelectableFilesModel(this); connect(m_model, SIGNAL(parsingProgress(QString)), this, SLOT(parsingProgress(QString))); connect(m_model, SIGNAL(parsingFinished()), this, SLOT(parsingFinished())); m_model->startParsing(m_genericProjectWizardDialog->path()); m_hideFilesFilterLabel->setVisible(false); m_hideFilesfilterLineEdit->setVisible(false); m_showFilesFilterLabel->setVisible(false); m_showFilesfilterLineEdit->setVisible(false); m_applyFilterButton->setVisible(false); m_view->setVisible(false); m_label->setVisible(true); m_view->setModel(m_model); }
void SelectableFilesModel::buildTree(const QString &baseDir, Tree *tree, QFutureInterface<void> &fi) { const QFileInfoList fileInfoList = QDir(baseDir).entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); bool allChecked = true; bool allUnchecked = true; foreach (const QFileInfo &fileInfo, fileInfoList) { if (m_futureCount % 100) { emit parsingProgress(fileInfo.absoluteFilePath()); if (fi.isCanceled()) return; } ++m_futureCount; if (fileInfo.isDir()) { if (fileInfo.isSymLink()) continue; Tree *t = new Tree; t->parent = tree; t->name = fileInfo.fileName(); t->fullPath = fileInfo.filePath(); t->isDir = true; buildTree(fileInfo.filePath(), t, fi); allChecked &= t->checked == Qt::Checked; allUnchecked &= t->checked == Qt::Unchecked; tree->childDirectories.append(t); } else { Tree *t = new Tree; t->parent = tree; t->name = fileInfo.fileName(); t->checked = m_allFiles || m_files.contains(fileInfo.absoluteFilePath()) ? Qt::Checked : Qt::Unchecked; t->fullPath = fileInfo.filePath(); t->isDir = false; allChecked &= t->checked == Qt::Checked; allUnchecked &= t->checked == Qt::Unchecked; tree->files.append(t); if (!filter(t)) tree->visibleFiles.append(t); } } if (tree->childDirectories.isEmpty() && tree->visibleFiles.isEmpty()) tree->checked = Qt::Unchecked; else if (allChecked) tree->checked = Qt::Checked; else if (allUnchecked) tree->checked = Qt::Unchecked; else tree->checked = Qt::PartiallyChecked; }