[Option][JSON] Custom auto-replaces

This commit is contained in:
Eric Kotato 2022-08-26 22:32:27 +03:00 committed by Eric Kotato
parent 606400d9c2
commit 125556f766

View file

@ -154,6 +154,33 @@ CheckHandler IntLimitMin(int min) {
};
}
CheckHandler ReplacesLimit() {
return [=] (QVariant value) -> QVariant {
auto newArrayValue = QJsonArray();
if (value.canConvert<QJsonArray>()) {
auto arrayValue = value.toJsonArray();
for (auto i = arrayValue.begin(); i != arrayValue.end(); ++i) {
if (!(*i).isArray()) {
continue;
}
const auto a = (*i).toArray();
if (a.size() != 2 || !a.at(0).isString() || !a.at(1).isString()) {
continue;
}
const auto from = a.at(0).toString();
const auto to = a.at(1).toString();
Ui::AddCustomReplacement(from, to);
newArrayValue.append(a);
}
}
return newArrayValue;
};
}
struct Definition {
SettingScope scope = SettingScope::Global;
@ -252,6 +279,9 @@ const std::map<QString, Definition, std::greater<QString>> DefinitionMap {
{ "disable_up_edit", {
.type = SettingType::BoolSetting,
.defaultValue = false, }},
{ "replaces", {
.type = SettingType::QJsonArraySetting,
.limitHandler = ReplacesLimit(), }},
};
using OldOptionKey = QString;