subsurface/qt-ui/models.cpp
Dirk Hohndel d8e11439ad Undoing the last Qtr_ hack
The Qtr_ hack isn't needed as in commit 720fc15b2dcd ("Introduce
QApplication") had already made sure that we are using gettext.

I didn't revert the two commits as I wanted to keep the added header
comments and fix the tooling in the Makefile as well.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-14 06:58:56 -07:00

181 lines
3.1 KiB
C++

/*
* models.cpp
*
* classes for the equipment models of Subsurface
*
*/
#include "models.h"
#include "../dive.h"
CylindersModel::CylindersModel(QObject* parent): QAbstractTableModel(parent)
{
}
QVariant CylindersModel::headerData(int section, Qt::Orientation orientation, int role) const
{
QVariant ret;
if (orientation == Qt::Vertical) {
return ret;
}
if (role == Qt::DisplayRole) {
switch(section) {
case TYPE:
ret = tr("Type");
break;
case SIZE:
ret = tr("Size");
break;
case MAXPRESS:
ret = tr("MaxPress");
break;
case START:
ret = tr("Start");
break;
case END:
ret = tr("End");
break;
case O2:
ret = tr("O2%");
break;
case HE:
ret = tr("He%");
break;
}
}
return ret;
}
int CylindersModel::columnCount(const QModelIndex& parent) const
{
return 7;
}
QVariant CylindersModel::data(const QModelIndex& index, int role) const
{
QVariant ret;
if (!index.isValid() || index.row() >= MAX_CYLINDERS) {
return ret;
}
dive *d = get_dive(selected_dive);
cylinder_t& cyl = d->cylinder[index.row()];
if (role == Qt::DisplayRole) {
switch(index.column()) {
case TYPE:
ret = QString(cyl.type.description);
break;
case SIZE:
ret = cyl.type.size.mliter;
break;
case MAXPRESS:
ret = cyl.type.workingpressure.mbar;
break;
case START:
ret = cyl.start.mbar;
break;
case END:
ret = cyl.end.mbar;
break;
case O2:
ret = cyl.gasmix.o2.permille;
break;
case HE:
ret = cyl.gasmix.he.permille;
break;
}
}
return ret;
}
int CylindersModel::rowCount(const QModelIndex& parent) const
{
return usedRows[currentDive];
}
void CylindersModel::add(cylinder_t* cyl)
{
if (usedRows[currentDive] >= MAX_CYLINDERS) {
free(cyl);
}
int row = usedRows[currentDive];
cylinder_t& cylinder = currentDive->cylinder[row];
cylinder.end.mbar = cyl->end.mbar;
cylinder.start.mbar = cyl->start.mbar;
beginInsertRows(QModelIndex(), row, row);
usedRows[currentDive]++;
endInsertRows();
}
void CylindersModel::update()
{
if (usedRows[currentDive] > 0) {
beginRemoveRows(QModelIndex(), 0, usedRows[currentDive]-1);
endRemoveRows();
}
currentDive = get_dive(selected_dive);
if (usedRows[currentDive] > 0) {
beginInsertRows(QModelIndex(), 0, usedRows[currentDive]-1);
endInsertRows();
}
}
void CylindersModel::clear()
{
if (usedRows[currentDive] > 0) {
beginRemoveRows(QModelIndex(), 0, usedRows[currentDive]-1);
usedRows[currentDive] = 0;
endRemoveRows();
}
}
void WeightModel::clear()
{
}
int WeightModel::columnCount(const QModelIndex& parent) const
{
return 0;
}
QVariant WeightModel::data(const QModelIndex& index, int role) const
{
return QVariant();
}
int WeightModel::rowCount(const QModelIndex& parent) const
{
return rows;
}
QVariant WeightModel::headerData(int section, Qt::Orientation orientation, int role) const
{
QVariant ret;
if (orientation == Qt::Vertical) {
return ret;
}
switch(section){
case TYPE:
ret = tr("Type");
break;
case WEIGHT:
ret = tr("Weight");
break;
}
return ret;
}
void WeightModel::add(weight_t* weight)
{
}
void WeightModel::update()
{
}