summaryrefslogtreecommitdiffstats
path: root/qt-ui/models.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/models.cpp')
-rw-r--r--qt-ui/models.cpp175
1 files changed, 175 insertions, 0 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
new file mode 100644
index 000000000..dac1c7215
--- /dev/null
+++ b/qt-ui/models.cpp
@@ -0,0 +1,175 @@
+#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()
+{
+}