MCPcopy Create free account
hub / github.com/LongSoft/UEFITool / extract

Method extract

uefitool.cpp:438–527  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

436}
437
438void UEFITool::extract(const UINT8 mode)
439{
440 QModelIndex index = ui->structureTreeView->selectionModel()->currentIndex();
441 if (!index.isValid())
442 return;
443
444 TreeModel* model = ffsEngine->treeModel();
445 UINT8 type = model->type(index);
446
447 QString path;
448 if (mode == EXTRACT_MODE_AS_IS) {
449 switch (type) {
450 case Types::Capsule:
451 path = QFileDialog::getSaveFileName(this, tr("Save capsule to file"), currentDir, "Capsule files (*.cap *.bin);;All files (*)");
452 break;
453 case Types::Image:
454 path = QFileDialog::getSaveFileName(this, tr("Save image to file"), currentDir, "Image files (*.rom *.bin);;All files (*)");
455 break;
456 case Types::Region:
457 path = QFileDialog::getSaveFileName(this, tr("Save region to file"), currentDir, "Region files (*.rgn *.bin);;All files (*)");
458 break;
459 case Types::Padding:
460 path = QFileDialog::getSaveFileName(this, tr("Save padding to file"), currentDir, "Padding files (*.pad *.bin);;All files (*)");
461 break;
462 case Types::Volume:
463 path = QFileDialog::getSaveFileName(this, tr("Save volume to file"), currentDir, "Volume files (*.vol *.bin);;All files (*)");
464 break;
465 case Types::File:
466 path = QFileDialog::getSaveFileName(this, tr("Save FFS file to file"), currentDir, "FFS files (*.ffs *.bin);;All files (*)");
467 break;
468 case Types::Section:
469 path = QFileDialog::getSaveFileName(this, tr("Save section file to file"), currentDir, "Section files (*.sct *.bin);;All files (*)");
470 break;
471 default:
472 path = QFileDialog::getSaveFileName(this, tr("Save object to file"), currentDir, "Binary files (*.bin);;All files (*)");
473 }
474 }
475 else if (mode == EXTRACT_MODE_BODY) {
476 switch (type) {
477 case Types::Capsule:
478 path = QFileDialog::getSaveFileName(this, tr("Save capsule body to image file"), currentDir, "Image files (*.rom *.bin);;All files (*)");
479 break;
480 case Types::Volume:
481 path = QFileDialog::getSaveFileName(this, tr("Save volume body to file"), currentDir, "Volume body files (*.vbd *.bin);;All files (*)");
482 break;
483 case Types::File: {
484 if (model->subtype(index) == EFI_FV_FILETYPE_ALL || model->subtype(index) == EFI_FV_FILETYPE_RAW)
485 path = QFileDialog::getSaveFileName(this, tr("Save FFS file body to raw file"), currentDir, "Raw files (*.raw *.bin);;All files (*)");
486 else
487 path = QFileDialog::getSaveFileName(this, tr("Save FFS file body to file"), currentDir, "FFS file body files (*.fbd *.bin);;All files (*)");
488 }
489 break;
490 case Types::Section: {
491 if (model->subtype(index) == EFI_SECTION_COMPRESSION || model->subtype(index) == EFI_SECTION_GUID_DEFINED || model->subtype(index) == EFI_SECTION_DISPOSABLE)
492 path = QFileDialog::getSaveFileName(this, tr("Save encapsulation section body to FFS body file"), currentDir, "FFS file body files (*.fbd *.bin);;All files (*)");
493 else if (model->subtype(index) == EFI_SECTION_FIRMWARE_VOLUME_IMAGE)
494 path = QFileDialog::getSaveFileName(this, tr("Save section body to volume file"), currentDir, "Volume files (*.vol *.bin);;All files (*)");
495 else if (model->subtype(index) == EFI_SECTION_RAW)

Callers

nothing calls this directly

Calls 4

errorMessageFunction · 0.85
treeModelMethod · 0.80
typeMethod · 0.45
subtypeMethod · 0.45

Tested by

no test coverage detected