Further refactoring after the addition of the type role.

This commit is contained in:
2026-03-01 11:11:46 +01:00
parent becde8c794
commit f694e0e5ed
2 changed files with 27 additions and 18 deletions

View File

@ -58,29 +58,18 @@ QJsonObject JsonParser::itemValuesToJsonObject(const ModelItemValues& itemValues
// TODO add dates (entry, modification, end)
const UserRoles idRole = IdRole;
const QString roleName = ROLE_NAMES.value(idRole);
const QVariant idValue = itemValues.value(idRole);
const QJsonValue idValue = extractJsonValue(itemValues, idRole);
if (!idValue.isNull()) {
const QString idRoleName = ROLE_NAMES.value(idRole);
result.insert(idRoleName, idValue.toString());
result.insert(idRoleName, idValue);
}
QListIterator<UserRoles> i(USER_FACING_ROLES);
while (i.hasNext()) {
const UserRoles role = i.next();
const QJsonValue jsonValue = extractJsonValue(itemValues, role);
const QString roleName = ROLE_NAMES.value(role);
const QVariant value = itemValues.value(role);
if (STRING_ROLES.contains(role)) {
result.insert(roleName, value.toString());
} else if (INT_ROLES.contains(role)) {
result.insert(roleName, value.toInt());
} else if (DOUBLE_ROLES.contains(role)) {
result.insert(roleName, value.toDouble());
} else if (TYPE_ROLES.contains(role)) {
result.insert(roleName, value.toString());
} else {
qCritical() << QString("Can't find data type for role %1!!!").arg(role);
}
result.insert(roleName, jsonValue);
}
return result;
}
@ -134,3 +123,21 @@ pair<int, QVariant> JsonParser::getKeyValuePair(const QJsonObject& itemJsonObjec
}
return pair<int, QVariant>(role, result);
}
QJsonValue JsonParser::extractJsonValue(const ModelItemValues& itemValues, const int role) {
QJsonValue result;
const QString roleName = ROLE_NAMES.value(role);
const QVariant value = itemValues.value(role);
if (STRING_ROLES.contains(role)) {
result = value.toString();
} else if (INT_ROLES.contains(role)) {
result = value.toInt();
} else if (DOUBLE_ROLES.contains(role)) {
result = value.toDouble();
} else if (TYPE_ROLES.contains(role)) {
result = value.toString();
} else {
qCritical() << QString("Can't find data type for role %1!!!").arg(role);
}
return result;
}

View File

@ -27,6 +27,8 @@ class JsonParser {
static ModelItemValues jsonObjectToItemValues(const QJsonObject& itemJsonObject);
static pair<int, QVariant> getKeyValuePair(const QJsonObject& itemJsonObject, const int role);
static QJsonValue extractJsonValue(const ModelItemValues& itemValues, const int role);
};
#endif // JSONPARSER_H