task: massively simplified task system

Made various changes and fixes to the task system:

- Tasks are built around QtConcurrent rather than QThread. Reduces
  code complexity significantly.
- Task error reporting is now streamlined in both TaskManager and
  TaskDialog.
- Moved ProjectImport/Save/LoadManager to the app/task folder
This commit is contained in:
itsmattkc
2020-05-19 02:44:32 +10:00
parent c4b0a53174
commit b9cd83eff1
49 changed files with 864 additions and 1332 deletions
+7 -5
View File
@@ -31,10 +31,11 @@ ConformTask::ConformTask(AudioStreamPtr stream, const AudioRenderingParams& para
SetTitle(tr("Conforming Audio %1:%2").arg(stream_->footage()->filename(), QString::number(stream_->index())));
}
void ConformTask::Action()
bool ConformTask::Run()
{
if (stream_->footage()->decoder().isEmpty()) {
emit Failed(tr("Failed to find decoder to conform audio stream"));
SetError(tr("Failed to find decoder to conform audio stream"));
return false;
} else {
DecoderPtr decoder = Decoder::CreateFromID(stream_->footage()->decoder());
@@ -42,10 +43,11 @@ void ConformTask::Action()
connect(decoder.get(), &Decoder::IndexProgress, this, &ConformTask::ProgressChanged);
if (decoder->ConformAudio(&IsCancelled(), params_)) {
emit Succeeded();
if (!decoder->ConformAudio(&IsCancelled(), params_)) {
SetError(tr("Failed to conform audio"));
return false;
} else {
emit Failed(QStringLiteral("Failed to conform audio"));
return true;
}
}
}