summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-02-03 18:52:17 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-02-11 20:37:09 -0800
commit190a2a876e3fe3148c6cfce87ac630f251833066 (patch)
tree560473d8debc387f039456233c851b67bc98c3e9 /qt-models
parent6622f42aab937e72cc11cb5512012394aa687767 (diff)
downloadsubsurface-190a2a876e3fe3148c6cfce87ac630f251833066.tar.gz
Planner: make cylinder-model subobject of planner-model
The cylinder-model had an instance() function, but actually there were two cylinder models: one used by the equipment tab, one used by the planner. This is misleading. Therefore, remove the instance() function and make the cylinder-model a subobject of the planner-model. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/cylindermodel.cpp6
-rw-r--r--qt-models/cylindermodel.h1
-rw-r--r--qt-models/diveplannermodel.cpp35
-rw-r--r--qt-models/diveplannermodel.h3
4 files changed, 22 insertions, 23 deletions
diff --git a/qt-models/cylindermodel.cpp b/qt-models/cylindermodel.cpp
index c5a0d2272..1dbbc0653 100644
--- a/qt-models/cylindermodel.cpp
+++ b/qt-models/cylindermodel.cpp
@@ -611,12 +611,6 @@ void CylindersModel::cylindersReset(const QVector<dive *> &dives)
updateDive();
}
-CylindersModelFiltered *CylindersModelFiltered::instance()
-{
- static CylindersModelFiltered self;
- return &self;
-}
-
CylindersModelFiltered::CylindersModelFiltered(QObject *parent) : QSortFilterProxyModel(parent)
{
setSourceModel(&source);
diff --git a/qt-models/cylindermodel.h b/qt-models/cylindermodel.h
index 66f51acca..9534af8ad 100644
--- a/qt-models/cylindermodel.h
+++ b/qt-models/cylindermodel.h
@@ -61,7 +61,6 @@ class CylindersModelFiltered : public QSortFilterProxyModel {
Q_OBJECT
public:
CylindersModelFiltered(QObject *parent = 0);
- static CylindersModelFiltered *instance();
CylindersModel *model(); // Access to unfiltered base model
void clear();
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp
index 3d3f1d0bc..cf7dd0361 100644
--- a/qt-models/diveplannermodel.cpp
+++ b/qt-models/diveplannermodel.cpp
@@ -21,6 +21,11 @@
#define UNIT_FACTOR ((prefs.units.length == units::METERS) ? 1000.0 / 60.0 : feet_to_mm(1.0) / 60.0)
+CylindersModelFiltered *DivePlannerPointsModel::cylindersModel()
+{
+ return &cylinders;
+}
+
/* TODO: Port this to CleanerTableModel to remove a bit of boilerplate and
* use the signal warningMessage() to communicate errors to the MainWindow.
*/
@@ -37,7 +42,7 @@ void DivePlannerPointsModel::removeSelectedPoints(const QVector<int> &rows)
divepoints.remove(v2[i]);
}
endRemoveRows();
- CylindersModelFiltered::instance()->model()->updateTrashIcon();
+ cylinders.model()->updateTrashIcon();
}
void DivePlannerPointsModel::createSimpleDive()
@@ -89,7 +94,7 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
const struct event *evd = NULL;
enum divemode_t current_divemode = UNDEF_COMP_TYPE;
recalc = false;
- CylindersModelFiltered::instance()->updateDive();
+ cylinders.updateDive();
duration_t lasttime = { 0 };
duration_t lastrecordedtime = {};
duration_t newtime = {};
@@ -162,7 +167,7 @@ void DivePlannerPointsModel::setupCylinders()
reset_cylinders(&displayed_dive, true);
if (displayed_dive.cylinders.nr > 0) {
- CylindersModelFiltered::instance()->updateDive();
+ cylinders.updateDive();
return; // We have at least one cylinder
}
}
@@ -180,7 +185,7 @@ void DivePlannerPointsModel::setupCylinders()
add_to_cylinder_table(&displayed_dive.cylinders, 0, cyl);
}
reset_cylinders(&displayed_dive, false);
- CylindersModelFiltered::instance()->updateDive();
+ cylinders.updateDive();
}
// Update the dive's maximum depth. Returns true if max. depth changed
@@ -209,11 +214,9 @@ void DivePlannerPointsModel::removeDeco()
void DivePlannerPointsModel::addCylinder_clicked()
{
- CylindersModelFiltered::instance()->add();
+ cylinders.add();
}
-
-
void DivePlannerPointsModel::setPlanMode(Mode m)
{
mode = m;
@@ -317,7 +320,7 @@ bool DivePlannerPointsModel::setData(const QModelIndex &index, const QVariant &v
if (value.toInt() >= 0) {
p.depth = units_to_depth(value.toInt());
if (updateMaxDepth())
- CylindersModelFiltered::instance()->model()->updateBestMixes();
+ cylinders.model()->updateBestMixes();
}
break;
case RUNTIME:
@@ -343,8 +346,8 @@ bool DivePlannerPointsModel::setData(const QModelIndex &index, const QVariant &v
p.cylinderid = value.toInt();
/* Did we change the start (dp 0) cylinder to another cylinderid than 0? */
if (value.toInt() != 0 && index.row() == 0)
- CylindersModelFiltered::instance()->model()->moveAtFirst(value.toInt());
- CylindersModelFiltered::instance()->model()->updateTrashIcon();
+ cylinders.model()->moveAtFirst(value.toInt());
+ cylinders.model()->updateTrashIcon();
break;
case DIVEMODE:
if (value.toInt() < FREEDIVE) {
@@ -799,9 +802,9 @@ void DivePlannerPointsModel::editStop(int row, divedatapoint newData)
divepoints[row] = newData;
std::sort(divepoints.begin(), divepoints.end(), divePointsLessThan);
if (updateMaxDepth())
- CylindersModelFiltered::instance()->model()->updateBestMixes();
+ cylinders.model()->updateBestMixes();
if (divepoints[0].cylinderid != old_first_cylid)
- CylindersModelFiltered::instance()->model()->moveAtFirst(divepoints[0].cylinderid);
+ cylinders.model()->moveAtFirst(divepoints[0].cylinderid);
emitDataChanged();
}
@@ -850,9 +853,9 @@ void DivePlannerPointsModel::remove(const QModelIndex &index)
divepoints.remove(index.row());
}
endRemoveRows();
- CylindersModelFiltered::instance()->model()->updateTrashIcon();
+ cylinders.model()->updateTrashIcon();
if (divepoints[0].cylinderid != old_first_cylid)
- CylindersModelFiltered::instance()->model()->moveAtFirst(divepoints[0].cylinderid);
+ cylinders.model()->moveAtFirst(divepoints[0].cylinderid);
}
struct diveplan &DivePlannerPointsModel::getDiveplan()
@@ -907,13 +910,13 @@ void DivePlannerPointsModel::clear()
{
bool oldRecalc = setRecalc(false);
- CylindersModelFiltered::instance()->updateDive();
+ cylinders.updateDive();
if (rowCount() > 0) {
beginRemoveRows(QModelIndex(), 0, rowCount() - 1);
divepoints.clear();
endRemoveRows();
}
- CylindersModelFiltered::instance()->clear();
+ cylinders.clear();
setRecalc(oldRecalc);
}
diff --git a/qt-models/diveplannermodel.h b/qt-models/diveplannermodel.h
index 23d9ada02..4dda5cc6e 100644
--- a/qt-models/diveplannermodel.h
+++ b/qt-models/diveplannermodel.h
@@ -7,6 +7,7 @@
#include "core/deco.h"
#include "core/planner.h"
+#include "qt-models/cylindermodel.h"
class DivePlannerPointsModel : public QAbstractTableModel {
Q_OBJECT
@@ -47,6 +48,7 @@ public:
bool tankInUse(int cylinderid);
void setupCylinders();
bool updateMaxDepth();
+ CylindersModelFiltered *cylindersModel();
int ascrate75Display();
int ascrate50Display();
@@ -127,6 +129,7 @@ private:
void computeVariations(struct diveplan *diveplan, const struct deco_state *ds);
void computeVariationsFreeDeco(struct diveplan *diveplan, struct deco_state *ds);
int analyzeVariations(struct decostop *min, struct decostop *mid, struct decostop *max, const char *unit);
+ CylindersModelFiltered cylinders;
Mode mode;
bool recalc;
QVector<divedatapoint> divepoints;