Don't allow two gas changes at the same time

t = 0 isn't really special here. We shouldn't allow two gas changes at the
same time, period.

We also can do away with the special handling to mark the dive list
changed and replot things if a gas change gets removed. That's done at the
end of this function either way.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-03-11 11:24:30 -07:00
parent e121b4b548
commit 0739da38c5

View file

@ -1394,24 +1394,16 @@ void ProfileWidget2::changeGas()
// no gas changes before the dive starts // no gas changes before the dive starts
seconds = seconds > 0 ?: 0; seconds = seconds > 0 ?: 0;
if (seconds == 0) { // if there is a gas change at this time stamp, remove it before adding the new one
bool eventRemoved = false; struct event *gasChangeEvent = current_dc->events;
struct event *gasChangeEvent = current_dc->events; while ((gasChangeEvent = get_next_event(gasChangeEvent, "gaschange")) != NULL) {
while ((gasChangeEvent = get_next_event(gasChangeEvent, "gaschange")) != NULL) { if (gasChangeEvent->time.seconds == seconds) {
if (gasChangeEvent->time.seconds == 0) { remove_event(gasChangeEvent);
remove_event(gasChangeEvent); gasChangeEvent = current_dc->events;
eventRemoved = true; } else {
gasChangeEvent = current_dc->events; gasChangeEvent = gasChangeEvent->next;
} else {
gasChangeEvent = gasChangeEvent->next;
}
}
if (eventRemoved) {
mark_divelist_changed(true);
replot();
} }
} }
validate_gas(gas.toUtf8().constData(), &gasmix); validate_gas(gas.toUtf8().constData(), &gasmix);
QRegExp rx("\\(\\D*(\\d+)"); QRegExp rx("\\(\\D*(\\d+)");
int tank; int tank;