#ifndef METADATA_H #define METADATA_H #include #include #include #include // TODO add namespace /// model data enum UserRoles { NameRole = Qt::UserRole + 1, DescriptionRole, InfoRole, AmountRole, FactorRole, /// Non user facing IdRole, /// read only roles ToStringRole, ToJsonRole }; static UserRoles DEFAULT_ROLE = NameRole; // TODO ?rename USER_FACING_ROLES -> MAIN_ROLES ? static QList USER_FACING_ROLES = {NameRole, DescriptionRole, InfoRole, AmountRole, FactorRole}; static QHash ROLE_NAMES = { {NameRole, "name"}, {DescriptionRole, "description"}, {InfoRole, "info"}, {AmountRole, "amount"}, {FactorRole, "factor"}, {ToStringRole, "ToString"}, {IdRole, "id"}}; static QList STRING_ROLES = {NameRole, DescriptionRole, InfoRole, IdRole}; static QList INT_ROLES = {AmountRole}; static QList DOUBLE_ROLES = {FactorRole}; /// JSON keys static const QString ITEM_KEY_STRING = "items"; /// file naming static const QString ITEM_FILE_NAME = ITEM_KEY_STRING + ".json"; /// functions static int GET_ROLE_FOR_COLUMN(const int column) { switch (column) { case 0: return NameRole; break; case 1: return DescriptionRole; break; case 2: return InfoRole; break; case 3: return AmountRole; break; case 4: return FactorRole; break; default: qWarning() << QString("No role found for column %1! Returning 'NameRole'...").arg(column); return NameRole; break; } } static QList GET_HEADER_NAMES() { QList result; for (const UserRoles& role : USER_FACING_ROLES) { const QString headerName = ROLE_NAMES.value(role); result.append(headerName); } return result; } #endif // METADATA_H