Implemented Vessels VM

This commit is contained in:
Andrew nuark G 2020-12-22 22:31:38 +07:00
parent fc9b61467c
commit 2f67449c72
2 changed files with 73 additions and 5 deletions

View file

@ -1,6 +1,65 @@
#include "vesselsviewmodel.h" #include "vesselsviewmodel.h"
VesselsViewModel::VesselsViewModel() VesselsViewModel::VesselsViewModel(QObject *parent) : QAbstractTableModel(parent) {
{
} }
int VesselsViewModel::rowCount(const QModelIndex &/*parent*/) const {
return apparatus::instance()->get_object_subsystem()->vessels().length();
}
int VesselsViewModel::columnCount(const QModelIndex &/*parent*/) const {
return 5;
}
QVariant VesselsViewModel::headerData(int section, Qt::Orientation orientation, int role) const {
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
switch (section) {
case 0:
return QString("VID");
case 1:
return QString("Harbor");
case 2:
return QString("Capacity");
case 3:
return QString("Cargo count");
case 4:
return QString("Cargo volume");
}
}
return QVariant();
}
QVariant VesselsViewModel::data(const QModelIndex &index, int role) const {
if (role == Qt::DisplayRole) {
auto item = apparatus::instance()->get_object_subsystem()->vessels()[index.row()];
bool s = false;
auto harbor = apparatus::instance()->get_object_subsystem()->get_dpoint(item.harbor(), s);
int col = index.column();
switch (col) {
case 0:
return QString::number(item.id());
case 1:
return (s? harbor->title() : "##ERROR##");
case 2:
return item.capacity();
case 3:
return item.cargo().length();
case 4:
int cvol = 0;
foreach (auto cargo, item.cargo()) {
cvol += cargo.volume();
}
return cvol;
}
return "UNKNOWN FIELD";
}
return QVariant();
}
void VesselsViewModel::update() {
dataChanged(QModelIndex(), QModelIndex());
}

View file

@ -1,13 +1,22 @@
#ifndef VESSELSVIEWMODEL_H #ifndef VESSELSVIEWMODEL_H
#define VESSELSVIEWMODEL_H #define VESSELSVIEWMODEL_H
#include "system/apparatus.h"
#include <QAbstractTableModel> #include <QAbstractTableModel>
class VesselsViewModel : public QAbstractTableModel class VesselsViewModel : public QAbstractTableModel {
{
Q_OBJECT Q_OBJECT
public: public:
VesselsViewModel(); VesselsViewModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
public slots:
void update();
}; };
#endif // VESSELSVIEWMODEL_H #endif // VESSELSVIEWMODEL_H