mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Hook up the tank change and tank update for the planner
This failed spectacularly when I first tried it, so I put it on the back burner. And it appears that with all my recent fixes for "add dive" as a side effect this is working, too. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
77a1ef9ebe
commit
8d284b0e24
1 changed files with 24 additions and 26 deletions
|
@ -1302,37 +1302,35 @@ bool DivePlannerPointsModel::tankInUse(int o2, int he)
|
||||||
|
|
||||||
void DivePlannerPointsModel::tanksUpdated()
|
void DivePlannerPointsModel::tanksUpdated()
|
||||||
{
|
{
|
||||||
if (mode == ADD) {
|
// we don't know exactly what changed - what we care about is
|
||||||
// we don't know exactly what changed - what we care about is
|
// "did a gas change on us". So we look through the diveplan to
|
||||||
// "did a gas change on us". So we look through the diveplan to
|
// see if there is a gas that is now missing and if there is, we
|
||||||
// see if there is a gas that is now missing and if there is, we
|
// replace it with the matching new gas.
|
||||||
// replace it with the matching new gas.
|
QList<QPair<int,int> > gases = collectGases(stagingDive);
|
||||||
QList<QPair<int,int> > gases = collectGases(stagingDive);
|
if (gases.length() == oldGases.length()) {
|
||||||
if (gases.length() == oldGases.length()) {
|
// either nothing relevant changed, or exactly ONE gasmix changed
|
||||||
// either nothing relevant changed, or exactly ONE gasmix changed
|
for (int i = 0; i < gases.length(); i++) {
|
||||||
for (int i = 0; i < gases.length(); i++) {
|
if (gases.at(i) != oldGases.at(i)) {
|
||||||
if (gases.at(i) != oldGases.at(i)) {
|
if (oldGases.count(oldGases.at(i)) > 1) {
|
||||||
if (oldGases.count(oldGases.at(i)) > 1) {
|
// we had this gas more than once, so don't
|
||||||
// we had this gas more than once, so don't
|
// change segments that used this gas as it still exists
|
||||||
// change segments that used this gas as it still exists
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
for (int j = 0; j < rowCount(); j++) {
|
|
||||||
divedatapoint& p = divepoints[j];
|
|
||||||
int o2 = oldGases.at(i).first;
|
|
||||||
int he = oldGases.at(i).second;
|
|
||||||
if ((p.o2 == o2 && p.he == he) ||
|
|
||||||
(is_air(p.o2, p.he) && (is_air(o2, he) || (o2 == 0 && he == 0)))) {
|
|
||||||
p.o2 = gases.at(i).first;
|
|
||||||
p.he = gases.at(i).second;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
for (int j = 0; j < rowCount(); j++) {
|
||||||
|
divedatapoint& p = divepoints[j];
|
||||||
|
int o2 = oldGases.at(i).first;
|
||||||
|
int he = oldGases.at(i).second;
|
||||||
|
if ((p.o2 == o2 && p.he == he) ||
|
||||||
|
(is_air(p.o2, p.he) && (is_air(o2, he) || (o2 == 0 && he == 0)))) {
|
||||||
|
p.o2 = gases.at(i).first;
|
||||||
|
p.he = gases.at(i).second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
emit dataChanged(createIndex(0, 0), createIndex(rowCount()-1, COLUMNS-1));
|
|
||||||
}
|
}
|
||||||
|
emit dataChanged(createIndex(0, 0), createIndex(rowCount()-1, COLUMNS-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DivePlannerPointsModel::clear()
|
void DivePlannerPointsModel::clear()
|
||||||
|
|
Loading…
Reference in a new issue