Manager: Show ISA RTC, memory and ROM cards in details pane

This commit is contained in:
Alexander Babikov
2025-08-02 15:00:27 +05:00
parent 47bdbbdac0
commit 75df93555d
4 changed files with 57 additions and 0 deletions

View File

@@ -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

View File

@@ -55,6 +55,7 @@ private:
VMManagerDetailSection *networkSection;
VMManagerDetailSection *inputSection;
VMManagerDetailSection *portsSection;
VMManagerDetailSection *otherSection;
QFileInfoList screenshots;
int screenshotIndex = 0;

View File

@@ -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

View File

@@ -59,6 +59,9 @@ enum class Name {
NIC,
Keyboard,
Mouse,
IsaRtc,
IsaMem,
IsaRom,
Unknown
};
Q_ENUM_NS(Name)