diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-02-03 18:52:17 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-02-11 20:37:09 -0800 |
commit | 190a2a876e3fe3148c6cfce87ac630f251833066 (patch) | |
tree | 560473d8debc387f039456233c851b67bc98c3e9 /qt-models | |
parent | 6622f42aab937e72cc11cb5512012394aa687767 (diff) | |
download | subsurface-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.cpp | 6 | ||||
-rw-r--r-- | qt-models/cylindermodel.h | 1 | ||||
-rw-r--r-- | qt-models/diveplannermodel.cpp | 35 | ||||
-rw-r--r-- | qt-models/diveplannermodel.h | 3 |
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; |