more on sellers

This commit is contained in:
Martin Brodbeck 2018-07-16 15:30:24 +02:00
parent 207edb27ba
commit a2ad2eb57d
8 changed files with 74 additions and 38 deletions

View file

@ -1,6 +1,6 @@
#include "sellermodel.h"
SellerModel::SellerModel(std::vector<std::shared_ptr<Seller>>& sellers, QObject* parent)
SellerModel::SellerModel(std::vector<std::unique_ptr<Seller>>& sellers, QObject* parent)
: QAbstractTableModel(parent), sellers_(&sellers)
{
}
@ -55,4 +55,37 @@ QVariant SellerModel::headerData(int section, Qt::Orientation orientation, int r
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;
}

View file

@ -8,14 +8,16 @@
class SellerModel : public QAbstractTableModel
{
public:
explicit SellerModel(std::vector<std::shared_ptr<Seller>>& sellers, QObject* parent = nullptr);
explicit SellerModel(std::vector<std::unique_ptr<Seller>>& sellers, QObject* parent = nullptr);
virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override;
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
private:
std::vector<std::shared_ptr<Seller>>* sellers_;
std::vector<std::unique_ptr<Seller>>* sellers_;
};
#endif