diff --git a/src/qt/qt_settingsdisplay.cpp b/src/qt/qt_settingsdisplay.cpp index 15b2f4588..9aa7ff6f2 100644 --- a/src/qt/qt_settingsdisplay.cpp +++ b/src/qt/qt_settingsdisplay.cpp @@ -18,6 +18,7 @@ #include "ui_qt_settingsdisplay.h" #include +#include extern "C" { #include <86box/86box.h> @@ -27,6 +28,7 @@ extern "C" { #include <86box/vid_8514a_device.h> #include <86box/vid_xga_device.h> #include <86box/vid_ps55da2.h> +#include <86box/vid_ddc.h> } #include "qt_deviceconfig.hpp" @@ -67,6 +69,9 @@ SettingsDisplay::save() ibm8514_standalone_enabled = ui->checkBox8514->isChecked() ? 1 : 0; xga_standalone_enabled = ui->checkBoxXga->isChecked() ? 1 : 0; da2_standalone_enabled = ui->checkBoxDa2->isChecked() ? 1 : 0; + monitor_edid = ui->radioButtonCustom->isChecked() ? 1 : 0; + + strncpy(monitor_edid_path, ui->lineEdit->fileName().toUtf8(), sizeof(monitor_edid_path) - 1); } void @@ -121,6 +126,11 @@ SettingsDisplay::onCurrentMachineChanged(int machineId) for (uint8_t i = 1; i < GFXCARD_MAX; i ++) if (gfxcard[i] == 0) ui->pushButtonConfigureVideoSecondary->setEnabled(false); + + ui->radioButtonDefault->setChecked(monitor_edid == 0); + ui->radioButtonCustom->setChecked(monitor_edid == 1); + ui->lineEdit->setFileName(monitor_edid_path); + ui->lineEdit->setEnabled(monitor_edid == 1); } void @@ -305,3 +315,33 @@ SettingsDisplay::on_pushButtonConfigureVideoSecondary_clicked() auto *device = video_card_getdevice(ui->comboBoxVideoSecondary->currentData().toInt()); DeviceConfig::ConfigureDevice(device); } + +void SettingsDisplay::on_radioButtonDefault_clicked() +{ + ui->radioButtonDefault->setChecked(true); + ui->radioButtonCustom->setChecked(false); + ui->lineEdit->setEnabled(false); +} + + +void SettingsDisplay::on_radioButtonCustom_clicked() +{ + ui->radioButtonDefault->setChecked(false); + ui->radioButtonCustom->setChecked(true); + ui->lineEdit->setEnabled(true); +} + +void SettingsDisplay::on_pushButtonExportDefault_clicked() +{ + auto str = QFileDialog::getSaveFileName(this, tr("Export")); + if (!str.isEmpty()) { + QFile file(str); + if (file.open(QFile::ReadOnly)) { + ssize_t size = 0; + auto bytes = ddc_create_default_edid(&size); + file.write((char*)bytes, size); + file.close(); + } + } +} + diff --git a/src/qt/qt_settingsdisplay.hpp b/src/qt/qt_settingsdisplay.hpp index 7eca7cc60..8854b0373 100644 --- a/src/qt/qt_settingsdisplay.hpp +++ b/src/qt/qt_settingsdisplay.hpp @@ -40,6 +40,12 @@ private slots: void on_checkBoxDa2_stateChanged(int state); void on_pushButtonConfigureDa2_clicked(); + void on_radioButtonDefault_clicked(); + + void on_radioButtonCustom_clicked(); + + void on_pushButtonExportDefault_clicked(); + private: Ui::SettingsDisplay *ui; int machineId = 0; diff --git a/src/qt/qt_settingsdisplay.ui b/src/qt/qt_settingsdisplay.ui index c5eba7adf..f295a6206 100644 --- a/src/qt/qt_settingsdisplay.ui +++ b/src/qt/qt_settingsdisplay.ui @@ -7,7 +7,7 @@ 0 0 400 - 300 + 399 @@ -26,16 +26,52 @@ 0 - - - - - 0 - 0 - - + + - Video: + Configure + + + + + + + Configure + + + + + + + Configure + + + + + + + IBM 8514/A Graphics + + + + + + + IBM PS/55 Display Adapter Graphics + + + + + + + XGA Graphics + + + + + + + Configure @@ -52,19 +88,6 @@ - - - - - 0 - 0 - - - - Configure - - - @@ -78,6 +101,33 @@ + + + + Voodoo 1 or 2 Graphics + + + + + + + Configure + + + + + + + + 0 + 0 + + + + Configure + + + @@ -91,73 +141,23 @@ - - + + + + + 0 + 0 + + - Configure + Video: - - - - Voodoo 1 or 2 Graphics - - - - - - - Configure - - - - - - - IBM 8514/A Graphics - - - - - - - Configure - - - - - - - XGA Graphics - - - - - - - Configure - - - - - - - IBM PS/55 Display Adapter Graphics - - - - - - - Configure - - - - + - Qt::Vertical + Qt::Orientation::Vertical @@ -167,8 +167,52 @@ + + + + Monitor EDID + + + + QLayout::SizeConstraint::SetFixedSize + + + + + Default + + + + + + + Export... + + + + + + + Custom + + + + + + + + + + + + FileField + QWidget +
qt_filefield.hpp
+ 1 +
+