mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
planner: remove dc_number access from models
Instead of accessing the global dc_number from the DivePlannerPointsModel and the CylinderModel, pass them in the respective initialization functions. The dc_number global might not make sense on mobile. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
d057af43b4
commit
832398180c
7 changed files with 20 additions and 14 deletions
|
@ -571,7 +571,7 @@ void PlannerWidgets::replanDive()
|
|||
return;
|
||||
copy_dive(current_dive, &displayed_dive); // Planning works on a copy of the dive (for now).
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(&displayed_dive);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(&displayed_dive, dc_number);
|
||||
|
||||
plannerWidget.setReplanButton(true);
|
||||
plannerWidget.setupStartTime(timestampToDateTime(displayed_dive.when));
|
||||
|
@ -580,7 +580,7 @@ void PlannerWidgets::replanDive()
|
|||
if (displayed_dive.salinity)
|
||||
plannerWidget.setSalinity(displayed_dive.salinity);
|
||||
reset_cylinders(&displayed_dive, true);
|
||||
DivePlannerPointsModel::instance()->cylindersModel()->updateDive(&displayed_dive);
|
||||
DivePlannerPointsModel::instance()->cylindersModel()->updateDive(&displayed_dive, dc_number);
|
||||
}
|
||||
|
||||
void PlannerWidgets::printDecoPlan()
|
||||
|
|
|
@ -226,7 +226,7 @@ void ProfileWidget::divesChanged(const QVector<dive *> &dives, DiveField field)
|
|||
if (editedDive) {
|
||||
copy_dive(current_dive, editedDive.get());
|
||||
// TODO: Holy moly that function sends too many signals. Fix it!
|
||||
DivePlannerPointsModel::instance()->loadFromDive(editedDive.get());
|
||||
DivePlannerPointsModel::instance()->loadFromDive(editedDive.get(), editedDc);
|
||||
}
|
||||
|
||||
plotCurrentDive();
|
||||
|
@ -258,7 +258,7 @@ void ProfileWidget::editDive()
|
|||
copy_dive(current_dive, editedDive.get()); // Work on a copy of the dive
|
||||
originalDive = current_dive;
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
|
||||
DivePlannerPointsModel::instance()->loadFromDive(editedDive.get());
|
||||
DivePlannerPointsModel::instance()->loadFromDive(editedDive.get(), editedDc);
|
||||
view->setEditState(editedDive.get(), editedDc);
|
||||
}
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ void TabDiveEquipment::toggleTriggeredColumn()
|
|||
|
||||
void TabDiveEquipment::updateData()
|
||||
{
|
||||
cylindersModel->updateDive(current_dive);
|
||||
cylindersModel->updateDive(current_dive, dc_number);
|
||||
weightModel->updateDive(current_dive);
|
||||
|
||||
if (current_dive && current_dive->suit)
|
||||
|
|
|
@ -241,7 +241,8 @@ QVariant CylindersModel::data(const QModelIndex &index, int role) const
|
|||
case SIZE_INT:
|
||||
return static_cast<int>(cyl->type.size.mliter);
|
||||
case SENSORS: {
|
||||
const struct divecomputer *currentdc = get_dive_dc(current_dive, dc_number);
|
||||
std::vector<int16_t> sensors;
|
||||
const struct divecomputer *currentdc = get_dive_dc(d, dcNr);
|
||||
for (int i = 0; i < currentdc->samples; ++i) {
|
||||
auto &sample = currentdc->sample[i];
|
||||
for (int s = 0; s < MAX_SENSORS; ++s) {
|
||||
|
@ -475,7 +476,7 @@ bool CylindersModel::setData(const QModelIndex &index, const QVariant &value, in
|
|||
bool ok = false;
|
||||
int s = vString.toInt(&ok);
|
||||
if (ok) {
|
||||
Command::editSensors(index.row(), s, dc_number);
|
||||
Command::editSensors(index.row(), s, dcNr);
|
||||
// We don't use the edit cylinder command and editing sensors is not relevant for planner
|
||||
return true;
|
||||
}
|
||||
|
@ -521,10 +522,11 @@ void CylindersModel::clear()
|
|||
{
|
||||
beginResetModel();
|
||||
d = nullptr;
|
||||
dcNr = -1;
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
void CylindersModel::updateDive(dive *dIn)
|
||||
void CylindersModel::updateDive(dive *dIn, int dcNrIn)
|
||||
{
|
||||
#ifdef DEBUG_CYL
|
||||
if (d)
|
||||
|
@ -532,6 +534,7 @@ void CylindersModel::updateDive(dive *dIn)
|
|||
#endif
|
||||
beginResetModel();
|
||||
d = dIn;
|
||||
dcNr = dcNrIn;
|
||||
numRows = calcNumRows();
|
||||
endResetModel();
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
|
||||
void add();
|
||||
void clear();
|
||||
void updateDive(dive *d);
|
||||
void updateDive(dive *d, int dcNr);
|
||||
void updateDecoDepths(pressure_t olddecopo2);
|
||||
void updateTrashIcon();
|
||||
void moveAtFirst(int cylid);
|
||||
|
@ -65,6 +65,7 @@ slots:
|
|||
|
||||
private:
|
||||
dive *d;
|
||||
int dcNr;
|
||||
bool inPlanner;
|
||||
bool hideUnused;
|
||||
int numRows; // Does not include unused cylinders at the end
|
||||
|
|
|
@ -105,9 +105,10 @@ void DivePlannerPointsModel::setupStartTime()
|
|||
}
|
||||
}
|
||||
|
||||
void DivePlannerPointsModel::loadFromDive(dive *dIn)
|
||||
void DivePlannerPointsModel::loadFromDive(dive *dIn, int dcNrIn)
|
||||
{
|
||||
d = dIn;
|
||||
dcNr = dcNrIn;
|
||||
|
||||
int depthsum = 0;
|
||||
int samplecount = 0;
|
||||
|
@ -115,7 +116,7 @@ void DivePlannerPointsModel::loadFromDive(dive *dIn)
|
|||
struct divecomputer *dc = &(d->dc);
|
||||
const struct event *evd = NULL;
|
||||
enum divemode_t current_divemode = UNDEF_COMP_TYPE;
|
||||
cylinders.updateDive(d);
|
||||
cylinders.updateDive(d, dcNr);
|
||||
duration_t lasttime = { 0 };
|
||||
duration_t lastrecordedtime = {};
|
||||
duration_t newtime = {};
|
||||
|
@ -197,7 +198,7 @@ void DivePlannerPointsModel::setupCylinders()
|
|||
reset_cylinders(d, true);
|
||||
|
||||
if (d->cylinders.nr > 0) {
|
||||
cylinders.updateDive(d);
|
||||
cylinders.updateDive(d, dcNr);
|
||||
return; // We have at least one cylinder
|
||||
}
|
||||
}
|
||||
|
@ -215,7 +216,7 @@ void DivePlannerPointsModel::setupCylinders()
|
|||
add_cylinder(&d->cylinders, 0, cyl);
|
||||
}
|
||||
reset_cylinders(d, false);
|
||||
cylinders.updateDive(d);
|
||||
cylinders.updateDive(d, dcNr);
|
||||
}
|
||||
|
||||
// Update the dive's maximum depth. Returns true if max. depth changed
|
||||
|
|
|
@ -60,7 +60,7 @@ public:
|
|||
struct diveplan &getDiveplan();
|
||||
struct deco_state final_deco_state;
|
||||
|
||||
void loadFromDive(dive *d);
|
||||
void loadFromDive(dive *d, int dcNr);
|
||||
void addStop(int millimeters, int seconds);
|
||||
public
|
||||
slots:
|
||||
|
@ -132,6 +132,7 @@ private:
|
|||
void computeVariationsFreeDeco(struct diveplan *diveplan, struct deco_state *ds);
|
||||
int analyzeVariations(struct decostop *min, struct decostop *mid, struct decostop *max, const char *unit);
|
||||
struct dive *d;
|
||||
int dcNr;
|
||||
CylindersModel cylinders;
|
||||
Mode mode;
|
||||
QVector<divedatapoint> divepoints;
|
||||
|
|
Loading…
Reference in a new issue