#ifndef METADATA_H #define METADATA_H #include #include #include #include // TODO add namespace /// model data enum UserRoles { LastNameRole = Qt::UserRole + 1, FirstNameRole, MembershipNumberRole, Bidding1Role, Bidding2Role, Bidding3Role, DepotWish1Role, DepotWish2Role, ShareAmountRole, MailRole, ShareTypeRole, BiddingTypeRole, OnlineIdRole, AccessCodeRole, // read-only (calculated) FullNameRole, FactoredBiddingRole, ToStringRole, JsonObjectRole }; static UserRoles DEFAULT_ROLE = FullNameRole; // TODO ?rename USER_FACING_ROLES -> MAIN_ROLES ? static QList USER_FACING_ROLES = { LastNameRole, FirstNameRole, MembershipNumberRole, Bidding1Role, Bidding2Role, Bidding3Role, DepotWish1Role, DepotWish2Role, ShareAmountRole, MailRole, ShareTypeRole, BiddingTypeRole, OnlineIdRole, AccessCodeRole}; static QHash ROLE_NAMES = {{MembershipNumberRole, "Mitglieds-nr."}, {LastNameRole, "Name"}, {FirstNameRole, "Vorname"}, {Bidding1Role, "Gebot 1"}, {Bidding2Role, "Gebot 2"}, {Bidding3Role, "Gebot 3"}, {DepotWish1Role, "Wunsch 1"}, {DepotWish2Role, "Wunsch 2"}, {ShareAmountRole, "Anzahl"}, {MailRole, "Mail"}, {ShareTypeRole, "Art"}, {BiddingTypeRole, "Bietart"}, {OnlineIdRole, "Online ID"}, {AccessCodeRole, "Access Code"}, {FactoredBiddingRole, "factoredBidding"}}; static const QList SHARE_TYPES = {"bezahlt", "teils/teils", "erarbeitet", ""}; static const QList BIDDING_TYPES = {"paper", "digital", "online", "offline", ""}; static QList STRING_ROLES = {LastNameRole, FirstNameRole, DepotWish1Role, DepotWish2Role, MailRole, ShareTypeRole, BiddingTypeRole, OnlineIdRole, AccessCodeRole}; static QList INT_ROLES = { MembershipNumberRole, Bidding1Role, Bidding2Role, Bidding3Role, }; static QList DOUBLE_ROLES = { ShareAmountRole, }; static const QList TYPE_ROLES = {ShareTypeRole, BiddingTypeRole}; static const QList SHARE_TYPE_ROLES = {ShareTypeRole}; static const QList BIDDING_TYPE_ROLES = {BiddingTypeRole}; /// JSON keys static const QString ITEMS_KEY_STRING = "items"; static const QString ITEM_KEY_STRING = "item"; /// file naming static const QString ITEMS_FILE_NAME = ITEMS_KEY_STRING + ".json"; /// functions static UserRoles GET_ROLE_FOR_COLUMN(const int column) { switch (column) { case 0: return MembershipNumberRole; break; case 1: return LastNameRole; break; case 2: return FirstNameRole; break; case 3: return ShareTypeRole; break; case 4: return ShareAmountRole; break; case 5: return BiddingTypeRole; break; case 6: return Bidding1Role; break; case 7: return Bidding2Role; break; case 8: return Bidding3Role; break; case 9: return DepotWish1Role; break; case 10: return DepotWish2Role; break; case 11: return MailRole; break; case 12: return OnlineIdRole; break; case 13: return AccessCodeRole; break; default: qWarning() << QString("No role found for column %1! Returning 'FullNameRole'...").arg(column); return FullNameRole; 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; } static QString GET_HEADER_FOR_COLUMN(const int column) { const UserRoles role = GET_ROLE_FOR_COLUMN(column); const QString headerName = ROLE_NAMES.value(role); return headerName; } #endif // METADATA_H