frontend_common: Add option to read unsigned integers

This commit is contained in:
t895 2023-11-21 20:46:27 -05:00
parent 1654b8f9e0
commit d8f380961e
3 changed files with 34 additions and 2 deletions

View File

@ -284,7 +284,7 @@ void Config::ReadDisabledAddOnValues() {
const int size = BeginArray(std::string(""));
for (int i = 0; i < size; ++i) {
SetArrayIndex(i);
const auto title_id = ReadIntegerSetting(std::string("title_id"), 0);
const auto title_id = ReadUnsignedIntegerSetting(std::string("title_id"), 0);
std::vector<std::string> out;
const int d_size = BeginArray("disabled");
for (int j = 0; j < d_size; ++j) {
@ -664,6 +664,33 @@ s64 Config::ReadIntegerSetting(const std::string& key, const std::optional<s64>
return result;
}
u64 Config::ReadUnsignedIntegerSetting(const std::string& key,
const std::optional<u64> default_value) {
std::string full_key = GetFullKey(key, false);
if (!default_value.has_value()) {
try {
return std::stoull(
std::string(config->GetValue(GetSection().c_str(), full_key.c_str(), "0")));
} catch (...) {
return 0;
}
}
u64 result = 0;
if (config->GetBoolValue(GetSection().c_str(),
std::string(full_key).append("\\default").c_str(), true)) {
result = default_value.value();
} else {
try {
result = std::stoull(std::string(config->GetValue(
GetSection().c_str(), full_key.c_str(), ToString(default_value.value()).c_str())));
} catch (...) {
result = default_value.value();
}
}
return result;
}
double Config::ReadDoubleSetting(const std::string& key,
const std::optional<double> default_value) {
std::string full_key = GetFullKey(key, false);

View File

@ -137,6 +137,8 @@ protected:
bool ReadBooleanSetting(const std::string& key,
std::optional<bool> default_value = std::nullopt);
s64 ReadIntegerSetting(const std::string& key, std::optional<s64> default_value = std::nullopt);
u64 ReadUnsignedIntegerSetting(const std::string& key,
std::optional<u64> default_value = std::nullopt);
double ReadDoubleSetting(const std::string& key,
std::optional<double> default_value = std::nullopt);
std::string ReadStringSetting(const std::string& key,
@ -170,6 +172,8 @@ protected:
return value_.has_value() ? std::to_string(*value_) : "none";
} else if constexpr (std::is_same_v<T, bool>) {
return value_ ? "true" : "false";
} else if constexpr (std::is_same_v<T, u64>) {
return std::to_string(static_cast<u64>(value_));
} else {
return std::to_string(static_cast<s64>(value_));
}

View File

@ -283,7 +283,8 @@ void QtConfig::ReadUIGamelistValues() {
const int favorites_size = BeginArray("favorites");
for (int i = 0; i < favorites_size; i++) {
SetArrayIndex(i);
UISettings::values.favorited_ids.append(ReadIntegerSetting(std::string("program_id")));
UISettings::values.favorited_ids.append(
ReadUnsignedIntegerSetting(std::string("program_id")));
}
EndArray();