Custom EDID UI

This commit is contained in:
Cacodemon345
2025-08-26 02:10:37 +06:00
parent 74e3c83bed
commit da7a14b977
3 changed files with 174 additions and 84 deletions

View File

@@ -18,6 +18,7 @@
#include "ui_qt_settingsdisplay.h"
#include <QDebug>
#include <QFileDialog>
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();
}
}
}