diff --git a/src/qt/qt_vmmanager_details.cpp b/src/qt/qt_vmmanager_details.cpp index 063f8658b..9292c7039 100644 --- a/src/qt/qt_vmmanager_details.cpp +++ b/src/qt/qt_vmmanager_details.cpp @@ -67,6 +67,9 @@ VMManagerDetails::VMManagerDetails(QWidget *parent) : portsSection = new VMManagerDetailSection(tr("Ports", "Header for Input section in VM Manager Details")); ui->leftColumn->layout()->addWidget(portsSection); + otherSection = new VMManagerDetailSection(tr("Other devices", "Header for Other devices section in VM Manager Details")); + ui->leftColumn->layout()->addWidget(otherSection); + // This is like adding a spacer leftColumnLayout->addStretch(); @@ -270,6 +273,11 @@ VMManagerDetails::updateConfig(VMManagerSystem *passed_sysconfig) { portsSection->addSection(tr("Serial ports"), passed_sysconfig->getDisplayValue(Display::Name::Serial)); portsSection->addSection(tr("Parallel ports"), passed_sysconfig->getDisplayValue(Display::Name::Parallel)); + // Other devices + otherSection->clear(); + otherSection->addSection(tr("ISA RTC"), passed_sysconfig->getDisplayValue(Display::Name::IsaRtc)); + otherSection->addSection(tr("ISA RAM"), passed_sysconfig->getDisplayValue(Display::Name::IsaMem)); + otherSection->addSection(tr("ISA ROM"), passed_sysconfig->getDisplayValue(Display::Name::IsaRom)); } void diff --git a/src/qt/qt_vmmanager_details.hpp b/src/qt/qt_vmmanager_details.hpp index dc0436ce8..2fb1a9d57 100644 --- a/src/qt/qt_vmmanager_details.hpp +++ b/src/qt/qt_vmmanager_details.hpp @@ -55,6 +55,7 @@ private: VMManagerDetailSection *networkSection; VMManagerDetailSection *inputSection; VMManagerDetailSection *portsSection; + VMManagerDetailSection *otherSection; QFileInfoList screenshots; int screenshotIndex = 0; diff --git a/src/qt/qt_vmmanager_system.cpp b/src/qt/qt_vmmanager_system.cpp index 2a2685164..e2e06f0cb 100644 --- a/src/qt/qt_vmmanager_system.cpp +++ b/src/qt/qt_vmmanager_system.cpp @@ -59,6 +59,9 @@ extern "C" { #include <86box/fdc_ext.h> #include <86box/hdc.h> #include <86box/gameport.h> +#include <86box/isartc.h> +#include <86box/isamem.h> +#include <86box/isarom.h> #include <86box/lpt.h> #include <86box/midi.h> #include <86box/network.h> @@ -532,6 +535,7 @@ VMManagerSystem::setupVars() { auto rdisk_mo_config = getCategory("Other removable devices"); auto storage_config = getCategory("Storage controllers"); auto ports_config = getCategory("Ports (COM & LPT)"); + auto other_config = getCategory("Other peripherals"); // auto general_config = getCategory("General"); // auto config_uuid = QString("Not set"); // if(!general_config["uuid"].isEmpty()) { @@ -1017,6 +1021,47 @@ VMManagerSystem::setupVars() { display_table[Display::Name::Serial] = (serialFinal.empty() ? tr("None") : serialFinal.join(", ")); display_table[Display::Name::Parallel] = (lptFinal.empty() ? tr("None") : lptFinal.join((hasLptDevices ? VMManagerDetailSection::sectionSeparator : ", "))); + // ISA RTC + if (other_config.contains("isartc_type")) { + auto isartc_internal_name = other_config["isartc_type"]; + auto isartc_dev = isartc_get_from_internal_name(isartc_internal_name.toUtf8().data()); + auto isartc_dev_name = DeviceConfig::DeviceName(isartc_get_device(isartc_dev), isartc_get_internal_name(isartc_dev), 0); + display_table[Display::Name::IsaRtc] = isartc_dev_name; + } + + // ISA RAM + QStringList IsaMemCards; + static auto isamem_match = QRegularExpression("isamem\\d_type", QRegularExpression::CaseInsensitiveOption); + for(const auto& key: other_config.keys()) { + if(key.contains(isamem_match)) { + auto device_number = QString(key.split("_").at(0).right(1).toInt() + 1); + auto isamem_internal_name = QString(other_config[key]); + auto isamem_id = isamem_get_from_internal_name(isamem_internal_name.toUtf8().data()); + auto isamem_device = isamem_get_device(isamem_id); + auto isamem_name = DeviceConfig::DeviceName(isamem_device, isamem_get_internal_name(isamem_id), 0); + if(!isamem_name.isEmpty()) { + IsaMemCards.append(isamem_name); + } + } + } + display_table[Display::Name::IsaMem] = IsaMemCards.join(VMManagerDetailSection::sectionSeparator); + + // ISA ROM + QStringList IsaRomCards; + static auto isarom_match = QRegularExpression("isarom\\d_type", QRegularExpression::CaseInsensitiveOption); + for(const auto& key: other_config.keys()) { + if(key.contains(isarom_match)) { + auto device_number = QString(key.split("_").at(0).right(1).toInt() + 1); + auto isarom_internal_name = QString(other_config[key]); + auto isarom_id = isarom_get_from_internal_name(isarom_internal_name.toUtf8().data()); + auto isarom_device = isarom_get_device(isarom_id); + auto isarom_name = DeviceConfig::DeviceName(isarom_device, isarom_get_internal_name(isarom_id), 0); + if(!isarom_name.isEmpty()) { + IsaRomCards.append(isarom_name); + } + } + } + display_table[Display::Name::IsaRom] = IsaRomCards.join(VMManagerDetailSection::sectionSeparator); } bool diff --git a/src/qt/qt_vmmanager_system.hpp b/src/qt/qt_vmmanager_system.hpp index 0023ab893..27b9fda57 100644 --- a/src/qt/qt_vmmanager_system.hpp +++ b/src/qt/qt_vmmanager_system.hpp @@ -59,6 +59,9 @@ enum class Name { NIC, Keyboard, Mouse, + IsaRtc, + IsaMem, + IsaRom, Unknown }; Q_ENUM_NS(Name)