103 lines
2.8 KiB
C++
103 lines
2.8 KiB
C++
#include "workersviewmodel.h"
|
|
|
|
WorkersViewModel::WorkersViewModel(QObject *parent) : QAbstractTableModel(parent) {
|
|
|
|
}
|
|
|
|
int WorkersViewModel::rowCount(const QModelIndex &/*parent*/) const {
|
|
return mUserData.length();
|
|
}
|
|
|
|
int WorkersViewModel::columnCount(const QModelIndex &/*parent*/) const {
|
|
return 7;
|
|
}
|
|
|
|
QVariant WorkersViewModel::headerData(int section, Qt::Orientation orientation, int role) const {
|
|
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
|
|
switch (section) {
|
|
case 0:
|
|
return QString("UID");
|
|
case 1:
|
|
return QString("Login");
|
|
case 2:
|
|
return QString("Full name");
|
|
case 3:
|
|
return QString("First profession");
|
|
case 4:
|
|
return QString("Second profession");
|
|
case 5:
|
|
return QString("Third profession");
|
|
case 6:
|
|
return QString("Fourth profession");
|
|
}
|
|
}
|
|
return QVariant();
|
|
}
|
|
|
|
QString WorkersViewModel::getProfessionAt(const User &user, int pIdx) const {
|
|
auto profs = user.getProfessions();
|
|
QString out = "";
|
|
if (profs.size() >= pIdx + 1) {
|
|
auto p = Database::instance()->getProfession(profs[pIdx].getProfession());
|
|
out = tr("%1 (%2 rank)").arg(p->title()).arg(profs[pIdx].getRank());
|
|
}
|
|
return out;
|
|
}
|
|
|
|
bool WorkersViewModel::shouldBeBold(const QModelIndex &index) const {
|
|
int col = index.column();
|
|
if (col < 3) {
|
|
return false;
|
|
}
|
|
auto usr = mUserData[index.row()];
|
|
if (!getProfessionAt(usr, col-3).isEmpty()) {
|
|
if (usr.getProfessions()[col-3].getProfession() == usr.getCurrentProfession()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
QVariant WorkersViewModel::data(const QModelIndex &index, int role) const {
|
|
if (role == Qt::DisplayRole) {
|
|
auto usr = mUserData[index.row()];
|
|
auto profs = usr.getProfessions();
|
|
|
|
int col = index.column();
|
|
switch (col) {
|
|
case 0:
|
|
return usr.uID();
|
|
case 1:
|
|
return usr.getLogin();
|
|
case 2:
|
|
return usr.getFullName();
|
|
case 3:
|
|
return getProfessionAt(usr, 0);
|
|
case 4:
|
|
return getProfessionAt(usr, 1);
|
|
case 5:
|
|
return getProfessionAt(usr, 2);
|
|
case 6:
|
|
return getProfessionAt(usr, 3);
|
|
}
|
|
|
|
return "UNKNOWN FIELD";
|
|
}
|
|
else if (role == Qt::FontRole) {
|
|
if (shouldBeBold(index)) {
|
|
QFont f;
|
|
f.setBold(true);
|
|
return f;
|
|
}
|
|
}
|
|
return QVariant();
|
|
}
|
|
|
|
void WorkersViewModel::invalidateData() {
|
|
beginResetModel();
|
|
mUserData.clear();
|
|
foreach (auto u, Database::instance()->getUsersByType(UserType::WORKER)) {
|
|
mUserData += *u;
|
|
}
|
|
endResetModel();
|
|
}
|