mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: remove DivePlotDataModel
All accesses to the plot data are now directly to the core structures. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7aacde3169
commit
564cbc797c
4 changed files with 0 additions and 257 deletions
|
@ -149,7 +149,6 @@ SOURCES += subsurface-mobile-main.cpp \
|
||||||
mobile-widgets/statsmanager.cpp \
|
mobile-widgets/statsmanager.cpp \
|
||||||
mobile-widgets/themeinterface.cpp \
|
mobile-widgets/themeinterface.cpp \
|
||||||
qt-models/divesummarymodel.cpp \
|
qt-models/divesummarymodel.cpp \
|
||||||
qt-models/diveplotdatamodel.cpp \
|
|
||||||
qt-models/completionmodels.cpp \
|
qt-models/completionmodels.cpp \
|
||||||
qt-models/divelocationmodel.cpp \
|
qt-models/divelocationmodel.cpp \
|
||||||
qt-models/maplocationmodel.cpp \
|
qt-models/maplocationmodel.cpp \
|
||||||
|
@ -305,7 +304,6 @@ HEADERS += \
|
||||||
mobile-widgets/themeinterface.h \
|
mobile-widgets/themeinterface.h \
|
||||||
map-widget/qmlmapwidgethelper.h \
|
map-widget/qmlmapwidgethelper.h \
|
||||||
qt-models/divesummarymodel.h \
|
qt-models/divesummarymodel.h \
|
||||||
qt-models/diveplotdatamodel.h \
|
|
||||||
qt-models/divelocationmodel.h \
|
qt-models/divelocationmodel.h \
|
||||||
qt-models/completionmodels.h \
|
qt-models/completionmodels.h \
|
||||||
qt-models/weightsysteminfomodel.h \
|
qt-models/weightsysteminfomodel.h \
|
||||||
|
|
|
@ -15,8 +15,6 @@ set(SUBSURFACE_GENERIC_MODELS_LIB_SRCS
|
||||||
divelocationmodel.h
|
divelocationmodel.h
|
||||||
diveplannermodel.cpp
|
diveplannermodel.cpp
|
||||||
diveplannermodel.h
|
diveplannermodel.h
|
||||||
diveplotdatamodel.cpp
|
|
||||||
diveplotdatamodel.h
|
|
||||||
divetripmodel.cpp
|
divetripmodel.cpp
|
||||||
divetripmodel.h
|
divetripmodel.h
|
||||||
filterconstraintmodel.cpp
|
filterconstraintmodel.cpp
|
||||||
|
|
|
@ -1,180 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
|
||||||
#include "qt-models/diveplotdatamodel.h"
|
|
||||||
#include "qt-models/diveplannermodel.h"
|
|
||||||
#include "core/profile.h"
|
|
||||||
#include "core/divelist.h"
|
|
||||||
#include "core/color.h"
|
|
||||||
|
|
||||||
DivePlotDataModel::DivePlotDataModel(QObject *parent) :
|
|
||||||
QAbstractTableModel(parent),
|
|
||||||
dcNr(0)
|
|
||||||
{
|
|
||||||
init_plot_info(&pInfo);
|
|
||||||
memset(&plot_deco_state, 0, sizeof(struct deco_state));
|
|
||||||
}
|
|
||||||
|
|
||||||
DivePlotDataModel::~DivePlotDataModel()
|
|
||||||
{
|
|
||||||
free_plot_info_data(&pInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
int DivePlotDataModel::columnCount(const QModelIndex&) const
|
|
||||||
{
|
|
||||||
return COLUMNS;
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant DivePlotDataModel::data(const QModelIndex &index, int role) const
|
|
||||||
{
|
|
||||||
if ((!index.isValid()) || (index.row() >= pInfo.nr) || pInfo.entry == 0)
|
|
||||||
return QVariant();
|
|
||||||
|
|
||||||
plot_data item = pInfo.entry[index.row()];
|
|
||||||
if (role == Qt::DisplayRole) {
|
|
||||||
switch (index.column()) {
|
|
||||||
case DEPTH:
|
|
||||||
return item.depth;
|
|
||||||
case TIME:
|
|
||||||
return item.sec;
|
|
||||||
case PRESSURE:
|
|
||||||
return get_plot_sensor_pressure(&pInfo, index.row(), 0);
|
|
||||||
case TEMPERATURE:
|
|
||||||
return item.temperature;
|
|
||||||
case COLOR:
|
|
||||||
return item.velocity;
|
|
||||||
case USERENTERED:
|
|
||||||
return false;
|
|
||||||
case SENSOR_PRESSURE:
|
|
||||||
return get_plot_sensor_pressure(&pInfo, index.row(), 0);
|
|
||||||
case INTERPOLATED_PRESSURE:
|
|
||||||
return get_plot_interpolated_pressure(&pInfo, index.row(), 0);
|
|
||||||
case CEILING:
|
|
||||||
return item.ceiling;
|
|
||||||
case SAC:
|
|
||||||
return item.sac;
|
|
||||||
case PN2:
|
|
||||||
return item.pressures.n2;
|
|
||||||
case PHE:
|
|
||||||
return item.pressures.he;
|
|
||||||
case PO2:
|
|
||||||
return item.pressures.o2;
|
|
||||||
case O2SETPOINT:
|
|
||||||
return item.o2setpoint.mbar / 1000.0;
|
|
||||||
case CCRSENSOR1:
|
|
||||||
return item.o2sensor[0].mbar / 1000.0;
|
|
||||||
case CCRSENSOR2:
|
|
||||||
return item.o2sensor[1].mbar / 1000.0;
|
|
||||||
case CCRSENSOR3:
|
|
||||||
return item.o2sensor[2].mbar / 1000.0;
|
|
||||||
case SCR_OC_PO2:
|
|
||||||
return item.scr_OC_pO2.mbar / 1000.0;
|
|
||||||
case HEARTBEAT:
|
|
||||||
return item.heartbeat;
|
|
||||||
case INSTANT_MEANDEPTH:
|
|
||||||
return item.running_sum;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (role == Qt::DisplayRole && index.column() >= TISSUE_1 && index.column() <= TISSUE_16) {
|
|
||||||
return item.ceilings[index.column() - TISSUE_1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (role == Qt::BackgroundRole) {
|
|
||||||
switch (index.column()) {
|
|
||||||
case COLOR:
|
|
||||||
return getColor((color_index_t)(VELOCITY_COLORS_START_IDX + item.velocity));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
const plot_info &DivePlotDataModel::data() const
|
|
||||||
{
|
|
||||||
return pInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DivePlotDataModel::rowCount(const QModelIndex&) const
|
|
||||||
{
|
|
||||||
return pInfo.nr;
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant DivePlotDataModel::headerData(int section, Qt::Orientation orientation, int role) const
|
|
||||||
{
|
|
||||||
if (orientation != Qt::Horizontal)
|
|
||||||
return QVariant();
|
|
||||||
|
|
||||||
if (role != Qt::DisplayRole)
|
|
||||||
return QVariant();
|
|
||||||
|
|
||||||
switch (section) {
|
|
||||||
case DEPTH:
|
|
||||||
return tr("Depth");
|
|
||||||
case TIME:
|
|
||||||
return tr("Time");
|
|
||||||
case PRESSURE:
|
|
||||||
return tr("Pressure");
|
|
||||||
case TEMPERATURE:
|
|
||||||
return tr("Temperature");
|
|
||||||
case COLOR:
|
|
||||||
return tr("Color");
|
|
||||||
case USERENTERED:
|
|
||||||
return tr("User entered");
|
|
||||||
case SENSOR_PRESSURE:
|
|
||||||
return tr("Pressure S");
|
|
||||||
case INTERPOLATED_PRESSURE:
|
|
||||||
return tr("Pressure I");
|
|
||||||
case CEILING:
|
|
||||||
return tr("Ceiling");
|
|
||||||
case SAC:
|
|
||||||
return tr("SAC");
|
|
||||||
case PN2:
|
|
||||||
return tr("pN₂");
|
|
||||||
case PHE:
|
|
||||||
return tr("pHe");
|
|
||||||
case PO2:
|
|
||||||
return tr("pO₂");
|
|
||||||
case O2SETPOINT:
|
|
||||||
return tr("Setpoint");
|
|
||||||
case CCRSENSOR1:
|
|
||||||
return tr("Sensor 1");
|
|
||||||
case CCRSENSOR2:
|
|
||||||
return tr("Sensor 2");
|
|
||||||
case CCRSENSOR3:
|
|
||||||
return tr("Sensor 3");
|
|
||||||
case HEARTBEAT:
|
|
||||||
return tr("Heart rate");
|
|
||||||
case INSTANT_MEANDEPTH:
|
|
||||||
return tr("Mean depth @ s");
|
|
||||||
}
|
|
||||||
if (role == Qt::DisplayRole && section >= TISSUE_1 && section <= TISSUE_16) {
|
|
||||||
return QString("Ceiling: %1").arg(section - TISSUE_1);
|
|
||||||
}
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DivePlotDataModel::clear()
|
|
||||||
{
|
|
||||||
if (rowCount() != 0) {
|
|
||||||
beginRemoveRows(QModelIndex(), 0, rowCount() - 1);
|
|
||||||
pInfo.nr = 0;
|
|
||||||
free(pInfo.entry);
|
|
||||||
free(pInfo.pressures);
|
|
||||||
pInfo.entry = nullptr;
|
|
||||||
pInfo.pressures = nullptr;
|
|
||||||
dcNr = -1;
|
|
||||||
endRemoveRows();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DivePlotDataModel::setDive(const plot_info &info)
|
|
||||||
{
|
|
||||||
beginResetModel();
|
|
||||||
dcNr = dc_number;
|
|
||||||
free(pInfo.entry);
|
|
||||||
free(pInfo.pressures);
|
|
||||||
pInfo = info;
|
|
||||||
pInfo.entry = (plot_data *)malloc(sizeof(plot_data) * pInfo.nr);
|
|
||||||
memcpy(pInfo.entry, info.entry, sizeof(plot_data) * pInfo.nr);
|
|
||||||
pInfo.pressures = (plot_pressure_data *)malloc(sizeof(plot_pressure_data) * pInfo.nr_cylinders * pInfo.nr);
|
|
||||||
memcpy(pInfo.pressures, info.pressures, sizeof(plot_pressure_data) * pInfo.nr_cylinders * pInfo.nr);
|
|
||||||
endResetModel();
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
|
||||||
#ifndef DIVEPLOTDATAMODEL_H
|
|
||||||
#define DIVEPLOTDATAMODEL_H
|
|
||||||
|
|
||||||
#include <QAbstractTableModel>
|
|
||||||
|
|
||||||
#include "core/display.h"
|
|
||||||
#include "core/deco.h"
|
|
||||||
#include "core/planner.h"
|
|
||||||
|
|
||||||
struct dive;
|
|
||||||
struct plot_data;
|
|
||||||
struct plot_info;
|
|
||||||
|
|
||||||
class DivePlotDataModel : public QAbstractTableModel {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
enum {
|
|
||||||
DEPTH,
|
|
||||||
TIME,
|
|
||||||
PRESSURE,
|
|
||||||
TEMPERATURE,
|
|
||||||
USERENTERED,
|
|
||||||
COLOR,
|
|
||||||
SENSOR_PRESSURE,
|
|
||||||
INTERPOLATED_PRESSURE,
|
|
||||||
SAC,
|
|
||||||
CEILING,
|
|
||||||
TISSUE_1,
|
|
||||||
TISSUE_2,
|
|
||||||
TISSUE_3,
|
|
||||||
TISSUE_4,
|
|
||||||
TISSUE_5,
|
|
||||||
TISSUE_6,
|
|
||||||
TISSUE_7,
|
|
||||||
TISSUE_8,
|
|
||||||
TISSUE_9,
|
|
||||||
TISSUE_10,
|
|
||||||
TISSUE_11,
|
|
||||||
TISSUE_12,
|
|
||||||
TISSUE_13,
|
|
||||||
TISSUE_14,
|
|
||||||
TISSUE_15,
|
|
||||||
TISSUE_16,
|
|
||||||
PN2,
|
|
||||||
PHE,
|
|
||||||
PO2,
|
|
||||||
O2SETPOINT,
|
|
||||||
CCRSENSOR1,
|
|
||||||
CCRSENSOR2,
|
|
||||||
CCRSENSOR3,
|
|
||||||
SCR_OC_PO2,
|
|
||||||
HEARTBEAT,
|
|
||||||
INSTANT_MEANDEPTH,
|
|
||||||
COLUMNS
|
|
||||||
};
|
|
||||||
explicit DivePlotDataModel(QObject *parent = 0);
|
|
||||||
~DivePlotDataModel();
|
|
||||||
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
|
||||||
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
|
||||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
|
||||||
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
|
||||||
void clear();
|
|
||||||
void setDive(const plot_info &pInfo);
|
|
||||||
const plot_info &data() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
struct plot_info pInfo;
|
|
||||||
unsigned int dcNr;
|
|
||||||
struct deco_state plot_deco_state;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // DIVEPLOTDATAMODEL_H
|
|
Loading…
Add table
Reference in a new issue