#include "modelitem.h" #include "metadata.h" #include #include ModelItem::ModelItem(const ModelItemValues values) : m_values(values) {} QVariant ModelItem::data(int role) const { return m_values.value(role); } bool ModelItem::setData(const QVariant& value, int role) { bool valueChanged = false; if (m_values.contains(role)) { if (m_values.value(role) != value) { valueChanged = true; } } m_values[role] = value; return valueChanged; } bool ModelItem::setItemData(const QMap& changedValues) { bool valueChanged = false; QMap::const_iterator citer = changedValues.constBegin(); while (citer != changedValues.constEnd()) { const int role = citer.key(); const QVariant value = citer.value(); if (m_values.contains(role)) { if (m_values.value(role) != value) { valueChanged = true; } } m_values[role] = value; citer++; } return valueChanged; } QString ModelItem::toString() const { QString result; QListIterator i(USER_FACING_ROLES); while (i.hasNext()) { const UserRoles role = i.next(); const QString roleName = ROLE_NAMES.value(role); const QVariant value = data(role); // result.append(value.toString()); result.append(QString("%1: %2\n").arg(roleName, data(role).toString())); } return result; } QJsonObject ModelItem::toJsonObject() const { QJsonObject itemObject; // TODO add UUID and dates (entry, modification, end) QListIterator i(USER_FACING_ROLES); while (i.hasNext()) { const UserRoles role = i.next(); const QString roleName = ROLE_NAMES.value(role); const QVariant value = data(role); if (STRING_ROLES.contains(role)) { itemObject.insert(roleName, value.toString()); } else if (INT_ROLES.contains(role)) { itemObject.insert(roleName, value.toInt()); } else if (DOUBLE_ROLES.contains(role)) { itemObject.insert(roleName, value.toDouble()); } else { qCritical() << QString("Cant find data type of role %1!!!").arg(role); } } return itemObject; }