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) // TODO add dates (entry, modification, end)
const UserRoles idRole = IdRole; const UserRoles idRole = IdRole;
const QString roleName = ROLE_NAMES.value(idRole); const QJsonValue idValue = extractJsonValue(itemValues, idRole);
const QVariant idValue = itemValues.value(idRole);
if (!idValue.isNull()) { if (!idValue.isNull()) {
const QString idRoleName = ROLE_NAMES.value(idRole); const QString idRoleName = ROLE_NAMES.value(idRole);
result.insert(idRoleName, idValue.toString()); result.insert(idRoleName, idValue);
} }
QListIterator<UserRoles> i(USER_FACING_ROLES); QListIterator<UserRoles> i(USER_FACING_ROLES);
while (i.hasNext()) { while (i.hasNext()) {
const UserRoles role = i.next(); const UserRoles role = i.next();
const QJsonValue jsonValue = extractJsonValue(itemValues, role);
const QString roleName = ROLE_NAMES.value(role); const QString roleName = ROLE_NAMES.value(role);
const QVariant value = itemValues.value(role); result.insert(roleName, jsonValue);
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);
}
} }
return result; return result;
} }
@ -134,3 +123,21 @@ pair<int, QVariant> JsonParser::getKeyValuePair(const QJsonObject& itemJsonObjec
} }
return pair<int, QVariant>(role, result); 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 ModelItemValues jsonObjectToItemValues(const QJsonObject& itemJsonObject);
static pair<int, QVariant> getKeyValuePair(const QJsonObject& itemJsonObject, const int role); static pair<int, QVariant> getKeyValuePair(const QJsonObject& itemJsonObject, const int role);
static QJsonValue extractJsonValue(const ModelItemValues& itemValues, const int role);
}; };
#endif // JSONPARSER_H #endif // JSONPARSER_H