Files
86Box/src/qt/qt_vmmanager_config.cpp
Alexander Babikov b8d3714edb Manager: Implement defaults for manager config
Enable update checker by default
2025-12-17 17:46:33 +05:00

92 lines
2.3 KiB
C++

/*
* 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>
#include <86box/version.h>
}
QVariantHash VMManagerConfig::generalDefaults = {
{ "hide_tool_bar", 0 },
{ "regex_search", 0 },
#if EMU_BUILD_NUM != 0
{ "update_check", 1 },
#endif
{ "window_remember", 0 }
};
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);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
settings->setIniCodec("UTF-8");
#endif
settings->setFallbacksEnabled(false);
if (type == ConfigType::System && !section.isEmpty()) {
settings->beginGroup(section);
} else {
settings->beginGroup("");
}
}
VMManagerConfig::~VMManagerConfig()
{
settings->endGroup();
}
QString
VMManagerConfig::getStringValue(const QString &key) const
{
auto defaultValue = QVariant();
if ((config_type == ConfigType::General) && (generalDefaults.contains(key)))
defaultValue = generalDefaults[key];
const auto value = settings->value(key, defaultValue);
// 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();
}