diff options
-rw-r--r-- | dive.h | 3 | ||||
-rw-r--r-- | equipment.c | 2 | ||||
-rw-r--r-- | qt-ui/models.cpp | 62 |
3 files changed, 36 insertions, 31 deletions
@@ -157,6 +157,7 @@ typedef struct { extern bool cylinder_nodata(cylinder_t *cyl); extern bool cylinder_none(void *_data); +extern bool weightsystem_none(void *_data); extern bool no_weightsystems(weightsystem_t *ws); extern bool weightsystems_equal(weightsystem_t *ws1, weightsystem_t *ws2); @@ -377,7 +378,7 @@ struct dive { pressure_t surface_pressure; duration_t duration; int salinity; // kg per 10000 l - int dive_tags; + int dive_tags; struct divecomputer dc; }; diff --git a/equipment.c b/equipment.c index 189cc617f..5f858f41d 100644 --- a/equipment.c +++ b/equipment.c @@ -513,7 +513,7 @@ static gboolean description_equal(const char *desc1, const char *desc2) (desc1 && desc2 && strcmp(desc1, desc2) == 0)); } -static gboolean weightsystem_none(void *_data) +gboolean weightsystem_none(void *_data) { weightsystem_t *ws = _data; return !ws->weight.grams && !ws->description; diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 04f7256e6..466dcd2f9 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -5,6 +5,7 @@ * */ #include "models.h" +#include "../helpers.h" #include <QCoreApplication> #include <QDebug> #include <QColor> @@ -62,30 +63,42 @@ QVariant CylindersModel::data(const QModelIndex& index, int role) const if (!index.isValid() || index.row() >= MAX_CYLINDERS) return ret; - cylinder_t& cyl = current->cylinder[index.row()]; + cylinder_t *cyl = ¤t->cylinder[index.row()]; if (role == Qt::DisplayRole) { switch(index.column()) { case TYPE: - ret = QString(cyl.type.description); + ret = QString(cyl->type.description); break; case SIZE: - ret = cyl.type.size.mliter; + // we can't use get_volume_string because the idiotic imperial tank + // sizes take working pressure into account... + if (cyl->type.size.mliter) { + if (prefs.units.volume == prefs.units.CUFT) { + int cuft = ml_to_cuft(gas_volume(cyl, cyl->type.workingpressure)); + ret = QString("%1cuft").arg(cuft); + } else { + ret = QString("%1l").arg(cyl->type.size.mliter / 1000.0, 0, 'f', 1); + } + } break; case MAXPRESS: - ret = cyl.type.workingpressure.mbar; + if (cyl->type.workingpressure.mbar) + ret = get_pressure_string(cyl->type.workingpressure, TRUE); break; case START: - ret = cyl.start.mbar; + if (cyl->start.mbar) + ret = get_pressure_string(cyl->start, TRUE); break; case END: - ret = cyl.end.mbar; + if (cyl->end.mbar) + ret = get_pressure_string(cyl->end, TRUE ); break; case O2: - ret = cyl.gasmix.o2.permille; + ret = QString("%1%").arg((cyl->gasmix.o2.permille + 5) / 10); break; case HE: - ret = cyl.gasmix.he.permille; + ret = QString("%1%").arg((cyl->gasmix.he.permille + 5) / 10); break; } } @@ -136,10 +149,10 @@ void CylindersModel::setDive(dive* d) if (current) clear(); - int amount = 0; + int amount = MAX_CYLINDERS; for(int i = 0; i < MAX_CYLINDERS; i++){ - cylinder_t& cylinder = d->cylinder[i]; - if (!cylinder.type.description){ + cylinder_t *cylinder = &d->cylinder[i]; + if (cylinder_none(cylinder)) { amount = i; break; } @@ -178,13 +191,7 @@ QVariant WeightModel::data(const QModelIndex& index, int role) const ret = QString(ws->description); break; case WEIGHT: - if (get_units()->weight == units::KG) { - int gr = ws->weight.grams % 1000; - int kg = ws->weight.grams / 1000; - ret = QString("%1.%2").arg(kg).arg((unsigned) gr / 100); - } else { - ret = QString("%1").arg((unsigned)(grams_to_lbs(ws->weight.grams))); - } + ret = get_weight_string(ws->weight, TRUE); break; } } @@ -217,9 +224,8 @@ QVariant WeightModel::headerData(int section, Qt::Orientation orientation, int r void WeightModel::add(weightsystem_t* weight) { - if (rows >= MAX_WEIGHTSYSTEMS) { + if (rows >= MAX_WEIGHTSYSTEMS) return; - } int row = rows; @@ -243,10 +249,10 @@ void WeightModel::setDive(dive* d) if (current) clear(); - int amount = 0; - for(int i = 0; i < MAX_WEIGHTSYSTEMS; i++){ - weightsystem_t& weightsystem = d->weightsystem[i]; - if (!weightsystem.description){ + int amount = MAX_WEIGHTSYSTEMS; + for(int i = 0; i < MAX_WEIGHTSYSTEMS; i++) { + weightsystem_t *weightsystem = &d->weightsystem[i]; + if (weightsystem_none(weightsystem)) { amount = i; break; } @@ -528,13 +534,11 @@ QVariant DiveItem::data(int column, int role) const break; } - if(role == STAR_ROLE){ + if (role == STAR_ROLE) retVal = dive->rating; - } - if(role == DIVE_ROLE){ + if (role == DIVE_ROLE) retVal = QVariant::fromValue<void*>(dive); - } return retVal; } @@ -663,7 +667,7 @@ Qt::ItemFlags DiveTripModel::flags(const QModelIndex& index) const } QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, - int role) const + int role) const { if (orientation == Qt::Horizontal && role == Qt::DisplayRole) return rootItem->data(section, role); |