kima2/src/gui/sellermodel.cpp

91 lines
2.3 KiB
C++

#include "sellermodel.h"
SellerModel::SellerModel(std::vector<std::unique_ptr<Seller>>& 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;
}