#include "sellermodel.h" SellerModel::SellerModel(std::vector>& sellers, QObject* parent) : QAbstractTableModel(parent), sellers_(&sellers) { } int SellerModel::rowCount(const QModelIndex& parent) const { return sellers_->size(); } int SellerModel::columnCount(const QModelIndex& parent) const { return 5; } QVariant SellerModel::data(const QModelIndex& index, int role) const { if (role != Qt::DisplayRole) return QVariant(); Seller* seller = sellers_->at(index.row()).get(); switch (index.column()) { case 0: return seller->getUuidAsString().c_str(); case 1: return seller->getSellerNo(); case 2: return seller->getFirstName().c_str(); case 3: return QString(seller->getLastName().c_str()); case 4: return seller->numArticlesOffered(); default: return "???"; } return QVariant{}; } QVariant SellerModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) { switch (section) { case 0: return "ID"; case 1: return "Nummer"; case 2: return "Vorname"; case 3: return "Nachname"; case 4: return "Anz. Artikel"; default: return "???"; } return QStringLiteral("%1").arg(section); } else return ""; } Qt::ItemFlags SellerModel::flags(const QModelIndex& index) const { return QAbstractTableModel::flags(index) | Qt::ItemFlag::ItemIsEditable; } bool SellerModel::setData(const QModelIndex& index, const QVariant& value, int role) { if (role != Qt::EditRole) return false; Seller* seller = sellers_->at(index.row()).get(); switch (index.column()) { case 0: seller->setUuidFromString(value.toString().toStdString()); break; case 1: seller->setSellerNo(value.toInt()); break; case 2: seller->setFirstName(value.toString().toStdString()); break; case 3: seller->setLastName(value.toString().toStdString()); break; case 4: seller->setNumArticlesOffered(value.toInt()); break; default: return false; } dataChanged(index, index); return true; }