qt: Fixes to the process for selecting an existing hdd image
This commit is contained in:
@@ -51,6 +51,40 @@ HarddiskDialog::HarddiskDialog(bool existing, QWidget *parent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
auto *model = ui->comboBoxFormat->model();
|
||||
model->insertRows(0, 6);
|
||||
model->setData(model->index(0, 0), tr("Raw image (.img)"));
|
||||
model->setData(model->index(1, 0), tr("HDI image (.hdi)"));
|
||||
model->setData(model->index(2, 0), tr("HDX image (.hdx)"));
|
||||
model->setData(model->index(3, 0), tr("Fixed-size VHD (.vhd)"));
|
||||
model->setData(model->index(4, 0), tr("Dynamic-size VHD (.vhd)"));
|
||||
model->setData(model->index(5, 0), tr("Differencing VHD (.vhd)"));
|
||||
|
||||
model = ui->comboBoxBlockSize->model();
|
||||
model->insertRows(0, 2);
|
||||
model->setData(model->index(0, 0), tr("Large blocks (2 MB)"));
|
||||
model->setData(model->index(1, 0), tr("Small blocks (512 KB)"));
|
||||
|
||||
ui->comboBoxBlockSize->hide();
|
||||
ui->labelBlockSize->hide();
|
||||
|
||||
Harddrives::populateBuses(ui->comboBoxBus->model());
|
||||
ui->comboBoxBus->setCurrentIndex(3);
|
||||
|
||||
model = ui->comboBoxType->model();
|
||||
for (int i = 0; i < 127; i++) {
|
||||
uint64_t size = ((uint64_t) hdd_table[i][0]) * hdd_table[i][1] * hdd_table[i][2];
|
||||
uint32_t size_mb = size >> 11LL;
|
||||
// QString text = QString("%1 MiB (CHS: %2, %3, %4)").arg(size_mb).arg(hdd_table[i][0]).arg(hdd_table[i][1]).arg(hdd_table[i][2]);
|
||||
QString text = QString::asprintf(tr("%u MB (CHS: %i, %i, %i)").toUtf8().constData(), (size_mb), (hdd_table[i][0]), (hdd_table[i][1]), (hdd_table[i][2]));
|
||||
Models::AddEntry(model, text, i);
|
||||
}
|
||||
Models::AddEntry(model, tr("Custom..."), 127);
|
||||
Models::AddEntry(model, tr("Custom (large)..."), 128);
|
||||
|
||||
ui->lineEditSize->setValidator(new QIntValidator());
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||
|
||||
if (existing) {
|
||||
ui->fileField->setFilter(tr("Hard disk images") % util::DlgFilter({ "hd?", "im?", "vhd" }) % tr("All files") % util::DlgFilter({ "*" }, true));
|
||||
|
||||
@@ -85,40 +119,6 @@ HarddiskDialog::HarddiskDialog(bool existing, QWidget *parent)
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
|
||||
});
|
||||
}
|
||||
|
||||
auto *model = ui->comboBoxFormat->model();
|
||||
model->insertRows(0, 6);
|
||||
model->setData(model->index(0, 0), tr("Raw image (.img)"));
|
||||
model->setData(model->index(1, 0), tr("HDI image (.hdi)"));
|
||||
model->setData(model->index(2, 0), tr("HDX image (.hdx)"));
|
||||
model->setData(model->index(3, 0), tr("Fixed-size VHD (.vhd)"));
|
||||
model->setData(model->index(4, 0), tr("Dynamic-size VHD (.vhd)"));
|
||||
model->setData(model->index(5, 0), tr("Differencing VHD (.vhd)"));
|
||||
|
||||
model = ui->comboBoxBlockSize->model();
|
||||
model->insertRows(0, 2);
|
||||
model->setData(model->index(0, 0), tr("Large blocks (2 MB)"));
|
||||
model->setData(model->index(1, 0), tr("Small blocks (512 KB)"));
|
||||
|
||||
ui->comboBoxBlockSize->hide();
|
||||
ui->labelBlockSize->hide();
|
||||
|
||||
Harddrives::populateBuses(ui->comboBoxBus->model());
|
||||
ui->comboBoxBus->setCurrentIndex(3);
|
||||
|
||||
model = ui->comboBoxType->model();
|
||||
for (int i = 0; i < 127; i++) {
|
||||
uint64_t size = ((uint64_t) hdd_table[i][0]) * hdd_table[i][1] * hdd_table[i][2];
|
||||
uint32_t size_mb = size >> 11LL;
|
||||
// QString text = QString("%1 MiB (CHS: %2, %3, %4)").arg(size_mb).arg(hdd_table[i][0]).arg(hdd_table[i][1]).arg(hdd_table[i][2]);
|
||||
QString text = QString::asprintf(tr("%u MB (CHS: %i, %i, %i)").toUtf8().constData(), (size_mb), (hdd_table[i][0]), (hdd_table[i][1]), (hdd_table[i][2]));
|
||||
Models::AddEntry(model, text, i);
|
||||
}
|
||||
Models::AddEntry(model, tr("Custom..."), 127);
|
||||
Models::AddEntry(model, tr("Custom (large)..."), 128);
|
||||
|
||||
ui->lineEditSize->setValidator(new QIntValidator());
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||
}
|
||||
|
||||
HarddiskDialog::~HarddiskDialog()
|
||||
@@ -499,7 +499,7 @@ HarddiskDialog::recalcSelection()
|
||||
}
|
||||
|
||||
void
|
||||
HarddiskDialog::onExistingFileSelected(const QString &fileName)
|
||||
HarddiskDialog::onExistingFileSelected(const QString &fileName, bool precheck)
|
||||
{
|
||||
// TODO : Over to non-existing file selected
|
||||
/*
|
||||
@@ -531,7 +531,11 @@ HarddiskDialog::onExistingFileSelected(const QString &fileName)
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||
QFile file(fileName);
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
QMessageBox::critical(this, tr("Unable to read file"), tr("Make sure the file exists and is readable."));
|
||||
// No message box during precheck (performed when the file input loses focus and this function is called)
|
||||
// If precheck is false, the file has been chosen from a file dialog and the alert should display.
|
||||
if(!precheck) {
|
||||
QMessageBox::critical(this, tr("Unable to read file"), tr("Make sure the file exists and is readable."));
|
||||
}
|
||||
return;
|
||||
}
|
||||
QByteArray fileNameUtf8 = fileName.toUtf8();
|
||||
|
||||
Reference in New Issue
Block a user