Don't call UI functions from helper code

This may seem much more complicated but actually is much cleaner. Add each
thread we start to the list of future results and add a new UI function
that updates the UI once all of the threads have finished.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-03-10 10:22:34 -07:00
parent 44b55bd1a2
commit 1e3700c11f
4 changed files with 14 additions and 4 deletions

View file

@ -327,14 +327,15 @@ void MainWindow::on_actionHash_images_triggered()
dialog.setLabelText(QFileDialog::Accept, tr("Scan"));
dialog.setLabelText(QFileDialog::Reject, tr("Cancel"));
QStringList dirnames;
QList<QFuture<void> > futures;
if (dialog.exec())
dirnames = dialog.selectedFiles();
if (dirnames.isEmpty())
return;
foreach (QString dir, dirnames) {
QtConcurrent::run(learnImages, QDir(dir), 10, false);
futures << QtConcurrent::run(learnImages, QDir(dir), 10, false);
}
DivePictureModel::instance()->updateDivePicturesWhenDone(futures);
}
ProfileWidget2 *MainWindow::graphics() const