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()
|
||||
{
|
||||
if (mode == ADD) {
|
||||
// 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
|
||||
// see if there is a gas that is now missing and if there is, we
|
||||
// replace it with the matching new gas.
|
||||
QList<QPair<int,int> > gases = collectGases(stagingDive);
|
||||
if (gases.length() == oldGases.length()) {
|
||||
// either nothing relevant changed, or exactly ONE gasmix changed
|
||||
for (int i = 0; i < gases.length(); i++) {
|
||||
if (gases.at(i) != oldGases.at(i)) {
|
||||
if (oldGases.count(oldGases.at(i)) > 1) {
|
||||
// we had this gas more than once, so don't
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
// 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
|
||||
// see if there is a gas that is now missing and if there is, we
|
||||
// replace it with the matching new gas.
|
||||
QList<QPair<int,int> > gases = collectGases(stagingDive);
|
||||
if (gases.length() == oldGases.length()) {
|
||||
// either nothing relevant changed, or exactly ONE gasmix changed
|
||||
for (int i = 0; i < gases.length(); i++) {
|
||||
if (gases.at(i) != oldGases.at(i)) {
|
||||
if (oldGases.count(oldGases.at(i)) > 1) {
|
||||
// we had this gas more than once, so don't
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
emit dataChanged(createIndex(0, 0), createIndex(rowCount()-1, COLUMNS-1));
|
||||
}
|
||||
emit dataChanged(createIndex(0, 0), createIndex(rowCount()-1, COLUMNS-1));
|
||||
}
|
||||
|
||||
void DivePlannerPointsModel::clear()
|
||||
|
|
Loading…
Reference in a new issue