Merge pull request #3455 from cold-brewed/vhd-disk-default

qt: Change default disk image type to dynamic vhd
This commit is contained in:
Miran Grča
2023-07-11 22:32:59 +02:00
committed by GitHub
4 changed files with 31 additions and 8 deletions

View File

@@ -31,6 +31,12 @@ FileField::FileField(QWidget *parent)
fileName_ = ui->label->text(); fileName_ = ui->label->text();
emit fileSelected(ui->label->text(), true); emit fileSelected(ui->label->text(), true);
}); });
connect(ui->label, &QLineEdit::textChanged, this, [this]() {
fileName_ = ui->label->text();
emit fileTextEntered(ui->label->text(), true);
});
this->setFixedWidth(this->sizeHint().width() + ui->pushButton->sizeHint().width()); this->setFixedWidth(this->sizeHint().width() + ui->pushButton->sizeHint().width());
} }

View File

@@ -19,12 +19,14 @@ public:
void setFilter(const QString &filter) { filter_ = filter; } void setFilter(const QString &filter) { filter_ = filter; }
QString selectedFilter() const { return selectedFilter_; } QString selectedFilter() const { return selectedFilter_; }
void setselectedFilter(const QString &selectedFilter) { selectedFilter_ = selectedFilter; }
void setCreateFile(bool createFile) { createFile_ = createFile; } void setCreateFile(bool createFile) { createFile_ = createFile; }
bool createFile() { return createFile_; } bool createFile() { return createFile_; }
signals: signals:
void fileSelected(const QString &fileName, bool precheck = false); void fileSelected(const QString &fileName, bool precheck = false);
void fileTextEntered(const QString &fileName, bool precheck = false);
private slots: private slots:
void on_pushButton_clicked(); void on_pushButton_clicked();

View File

@@ -84,6 +84,13 @@ HarddiskDialog::HarddiskDialog(bool existing, QWidget *parent)
ui->lineEditSize->setValidator(new QIntValidator()); ui->lineEditSize->setValidator(new QIntValidator());
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
filters = QStringList({ tr("Raw image") % util::DlgFilter({ "img" }, true),
tr("HDI image") % util::DlgFilter({ "hdi" }, true),
tr("HDX image") % util::DlgFilter({ "hdx" }, true),
tr("Fixed-size VHD") % util::DlgFilter({ "vhd" }, true),
tr("Dynamic-size VHD") % util::DlgFilter({ "vhd" }, true),
tr("Differencing VHD") % util::DlgFilter({ "vhd" }, true) });
if (existing) { if (existing) {
ui->fileField->setFilter(tr("Hard disk images") % util::DlgFilter({ "hd?", "im?", "vhd" }) % tr("All files") % util::DlgFilter({ "*" }, true)); ui->fileField->setFilter(tr("Hard disk images") % util::DlgFilter({ "hd?", "im?", "vhd" }) % tr("All files") % util::DlgFilter({ "*" }, true));
@@ -99,24 +106,26 @@ HarddiskDialog::HarddiskDialog(bool existing, QWidget *parent)
connect(ui->fileField, &FileField::fileSelected, this, &HarddiskDialog::onExistingFileSelected); connect(ui->fileField, &FileField::fileSelected, this, &HarddiskDialog::onExistingFileSelected);
} else { } else {
QStringList filters({ tr("Raw image") % util::DlgFilter({ "img" }, true),
tr("HDI image") % util::DlgFilter({ "hdi" }, true),
tr("HDX image") % util::DlgFilter({ "hdx" }, true),
tr("Fixed-size VHD") % util::DlgFilter({ "vhd" }, true),
tr("Dynamic-size VHD") % util::DlgFilter({ "vhd" }, true),
tr("Differencing VHD") % util::DlgFilter({ "vhd" }, true) });
ui->fileField->setFilter(filters.join(";;")); ui->fileField->setFilter(filters.join(";;"));
setWindowTitle(tr("Add New Hard Disk")); setWindowTitle(tr("Add New Hard Disk"));
ui->fileField->setCreateFile(true); ui->fileField->setCreateFile(true);
connect(ui->fileField, &FileField::fileSelected, this, [this, filters] { // Enable the OK button as long as the filename length is non-zero
connect(ui->fileField, &FileField::fileTextEntered, this, [this] {
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled((this->fileName().length() > 0));
});
connect(ui->fileField, &FileField::fileSelected, this, [this] {
int filter = filters.indexOf(ui->fileField->selectedFilter()); int filter = filters.indexOf(ui->fileField->selectedFilter());
if (filter > -1) if (filter > -1)
ui->comboBoxFormat->setCurrentIndex(filter); ui->comboBoxFormat->setCurrentIndex(filter);
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
}); });
// Set the default format to Dynamic-size VHD. Do it last after everything is set up
// so the currentIndexChanged signal can do what is needed
ui->comboBoxFormat->setCurrentIndex(DEFAULT_DISK_FORMAT);
ui->fileField->setselectedFilter(filters.value(DEFAULT_DISK_FORMAT));
} }
} }
@@ -179,6 +188,7 @@ HarddiskDialog::on_comboBoxFormat_currentIndexChanged(int index)
ui->comboBoxBlockSize->show(); ui->comboBoxBlockSize->show();
ui->labelBlockSize->show(); ui->labelBlockSize->show();
} }
ui->fileField->setselectedFilter(filters.value(index));
} }
/* If the disk geometry requested in the 86Box GUI is not compatible with the internal VHD geometry, /* If the disk geometry requested in the 86Box GUI is not compatible with the internal VHD geometry,

View File

@@ -52,6 +52,11 @@ private:
bool disallowSizeModifications = false; bool disallowSizeModifications = false;
QStringList filters;
// "Dynamic-size VHD" is number 4 in the `filters` list and the
// comboBoxFormat model
const uint8_t DEFAULT_DISK_FORMAT = 4;
bool checkAndAdjustCylinders(); bool checkAndAdjustCylinders();
bool checkAndAdjustHeads(); bool checkAndAdjustHeads();
bool checkAndAdjustSectors(); bool checkAndAdjustSectors();