Files
86Box/src/qt/qt_vmmanager_config.cpp

77 lines
1.7 KiB
C++
Raw Normal View History

2024-06-08 13:25:09 -04:00
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
* system designs based on the PCI bus.
*
* This file is part of the 86Box distribution.
*
* 86Box VM manager configuration module
*
*
*
* Authors: cold-brewed
*
* Copyright 2024 cold-brewed
*/
#include <QDebug>
#include <QDir>
#include "qt_vmmanager_config.hpp"
extern "C" {
#include <86box/plat.h>
}
VMManagerConfig::VMManagerConfig(const ConfigType type, const QString& section)
{
char BUF[256];
plat_get_global_config_dir(BUF, 255);
const auto configDir = QString(BUF);
const auto configFile = QDir::cleanPath(configDir + "/" + "vmm.ini");
config_type = type;
settings = new QSettings(configFile, QSettings::IniFormat, this);
settings->setFallbacksEnabled(false);
if(type == ConfigType::System && !section.isEmpty()) {
settings->beginGroup(section);
}
}
VMManagerConfig::~VMManagerConfig() {
settings->endGroup();
}
QString
VMManagerConfig::getStringValue(const QString& key) const
{
const auto value = settings->value(key);
// An invalid QVariant with toString will give a default QString value which is blank.
// Therefore any variables that do not exist will return blank strings
return value.toString();
}
void
VMManagerConfig::setStringValue(const QString &key, const QString &value) const
{
if (value.isEmpty()) {
remove(key);
return;
}
settings->setValue(key, value);
}
void
VMManagerConfig::remove(const QString &key) const
{
settings->remove(key);
}
void
VMManagerConfig::sync() const
{
settings->sync();
}