| 271 | } |
| 272 | |
| 273 | void InstanceImportTask::processFlame() |
| 274 | { |
| 275 | shared_qobject_ptr<FlameCreationTask> inst_creation_task = nullptr; |
| 276 | if (!m_extra_info.isEmpty()) { |
| 277 | auto pack_id_it = m_extra_info.constFind("pack_id"); |
| 278 | Q_ASSERT(pack_id_it != m_extra_info.constEnd()); |
| 279 | auto pack_id = pack_id_it.value(); |
| 280 | |
| 281 | auto pack_version_id_it = m_extra_info.constFind("pack_version_id"); |
| 282 | Q_ASSERT(pack_version_id_it != m_extra_info.constEnd()); |
| 283 | auto pack_version_id = pack_version_id_it.value(); |
| 284 | |
| 285 | QString original_instance_id; |
| 286 | auto original_instance_id_it = m_extra_info.constFind("original_instance_id"); |
| 287 | if (original_instance_id_it != m_extra_info.constEnd()) |
| 288 | original_instance_id = original_instance_id_it.value(); |
| 289 | |
| 290 | inst_creation_task = |
| 291 | makeShared<FlameCreationTask>(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id); |
| 292 | } else { |
| 293 | // FIXME: Find a way to get IDs in directly imported ZIPs |
| 294 | inst_creation_task = makeShared<FlameCreationTask>(m_stagingPath, m_globalSettings, m_parent, QString(), QString()); |
| 295 | } |
| 296 | |
| 297 | inst_creation_task->setName(*this); |
| 298 | // if the icon was specified by user, use that. otherwise pull icon from the pack |
| 299 | if (m_instIcon == "default") { |
| 300 | auto iconKey = QString("Flame_%1_Icon").arg(name()); |
| 301 | |
| 302 | if (installIcon(m_stagingPath, iconKey)) { |
| 303 | m_instIcon = iconKey; |
| 304 | } |
| 305 | } |
| 306 | inst_creation_task->setIcon(m_instIcon); |
| 307 | inst_creation_task->setGroup(m_instGroup); |
| 308 | inst_creation_task->setConfirmUpdate(shouldConfirmUpdate()); |
| 309 | |
| 310 | auto weak = inst_creation_task.toWeakRef(); |
| 311 | connect(inst_creation_task.get(), &Task::succeeded, this, [this, weak] { |
| 312 | if (auto sp = weak.lock()) { |
| 313 | setOverride(sp->shouldOverride(), sp->originalInstanceID()); |
| 314 | } |
| 315 | emitSucceeded(); |
| 316 | }); |
| 317 | connect(inst_creation_task.get(), &Task::failed, this, &InstanceImportTask::emitFailed); |
| 318 | connect(inst_creation_task.get(), &Task::progress, this, &InstanceImportTask::setProgress); |
| 319 | connect(inst_creation_task.get(), &Task::stepProgress, this, &InstanceImportTask::propagateStepProgress); |
| 320 | connect(inst_creation_task.get(), &Task::status, this, &InstanceImportTask::setStatus); |
| 321 | connect(inst_creation_task.get(), &Task::details, this, &InstanceImportTask::setDetails); |
| 322 | |
| 323 | connect(inst_creation_task.get(), &Task::aborted, this, &InstanceImportTask::emitAborted); |
| 324 | connect(inst_creation_task.get(), &Task::abortStatusChanged, this, &Task::setAbortable); |
| 325 | connect(inst_creation_task.get(), &Task::abortButtonTextChanged, this, &Task::setAbortButtonText); |
| 326 | |
| 327 | connect(inst_creation_task.get(), &Task::warningLogged, this, [this](const QString& line) { m_Warnings.append(line); }); |
| 328 | |
| 329 | m_task.reset(inst_creation_task); |
| 330 | setAbortable(true); |
nothing calls this directly
no test coverage detected