| 329 | } |
| 330 | |
| 331 | void FlamePackExportTask::buildZip() |
| 332 | { |
| 333 | setStatus(tr("Adding files...")); |
| 334 | setProgress(4, 5); |
| 335 | |
| 336 | auto zipTask = makeShared<MMCZip::ExportToZipTask>(output, gameRoot, files, "overrides/", true, false); |
| 337 | zipTask->addExtraFile("manifest.json", generateIndex()); |
| 338 | zipTask->addExtraFile("modlist.html", generateHTML()); |
| 339 | |
| 340 | QStringList exclude; |
| 341 | std::transform(resolvedFiles.keyBegin(), resolvedFiles.keyEnd(), std::back_insert_iterator(exclude), |
| 342 | [this](QString file) { return gameRoot.relativeFilePath(file); }); |
| 343 | zipTask->setExcludeFiles(exclude); |
| 344 | |
| 345 | auto progressStep = std::make_shared<TaskStepProgress>(); |
| 346 | connect(zipTask.get(), &Task::finished, this, [this, progressStep] { |
| 347 | progressStep->state = TaskStepState::Succeeded; |
| 348 | stepProgress(*progressStep); |
| 349 | }); |
| 350 | |
| 351 | connect(zipTask.get(), &Task::succeeded, this, &FlamePackExportTask::emitSucceeded); |
| 352 | connect(zipTask.get(), &Task::aborted, this, &FlamePackExportTask::emitAborted); |
| 353 | connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { |
| 354 | progressStep->state = TaskStepState::Failed; |
| 355 | stepProgress(*progressStep); |
| 356 | emitFailed(reason); |
| 357 | }); |
| 358 | connect(zipTask.get(), &Task::stepProgress, this, &FlamePackExportTask::propagateStepProgress); |
| 359 | |
| 360 | connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { |
| 361 | progressStep->update(current, total); |
| 362 | stepProgress(*progressStep); |
| 363 | }); |
| 364 | connect(zipTask.get(), &Task::status, this, [this, progressStep](QString status) { |
| 365 | progressStep->status = status; |
| 366 | stepProgress(*progressStep); |
| 367 | }); |
| 368 | task.reset(zipTask); |
| 369 | zipTask->start(); |
| 370 | } |
| 371 | |
| 372 | QByteArray FlamePackExportTask::generateIndex() |
| 373 | { |
nothing calls this directly
no test coverage detected