Add setpoint events according to divetype

When changing to a CCR dive, add a setpoint change to the default setpoint
at the beginning of the dive. Otherwise add an explicit setpoint change to 0
.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Robert C. Helling 2015-01-08 14:42:07 +01:00 committed by Dirk Hohndel
parent a478eb5711
commit 0f7f2195d5
3 changed files with 11 additions and 6 deletions

6
dive.c
View file

@ -888,8 +888,10 @@ void update_setpoint_events(struct divecomputer *dc)
}
ev = get_next_event(ev->next, "SP change");
}
if (!changed)
add_event(dc, 0, SAMPLE_EVENT_PO2, 0, new_setpoint, "SP change");
if (!changed) {
if (!add_event(dc, 0, SAMPLE_EVENT_PO2, 0, new_setpoint, "SP change"))
printf("Could not add setpoint change event\n");
}
}
void sanitize_gasmix(struct gasmix *mix)

View file

@ -103,7 +103,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
// This needs to be the same order as enum dive_comp_type in dive.h!
ui.DiveType->insertItems(0, QStringList() << "OC" << "CCR" << "pSCR" << "Freedive");
connect(ui.DiveType, SIGNAL(currentIndexChanged(int)), this, SLOT(on_divetype_Changed(int)));
connect(ui.DiveType, SIGNAL(currentIndexChanged(int)), this, SLOT(divetype_Changed(int)));
connect(ui.cylinders->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editCylinderWidget(QModelIndex)));
connect(ui.weights->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editWeightWidget(QModelIndex)));
@ -772,8 +772,10 @@ void MainTab::acceptChanges()
MODIFY_SELECTED_DIVES(EDIT_VALUE(visibility));
if (displayed_dive.airtemp.mkelvin != cd->airtemp.mkelvin)
MODIFY_SELECTED_DIVES(EDIT_VALUE(airtemp.mkelvin));
if (displayed_dive.dc.dctype != cd->dc.dctype)
if (displayed_dive.dc.dctype != cd->dc.dctype) {
MODIFY_SELECTED_DIVES(EDIT_VALUE(dc.dctype));
MODIFY_SELECTED_DIVES(update_setpoint_events(&mydive->dc));
}
if (displayed_dive.watertemp.mkelvin != cd->watertemp.mkelvin)
MODIFY_SELECTED_DIVES(EDIT_VALUE(watertemp.mkelvin));
if (displayed_dive.when != cd->when) {
@ -1012,10 +1014,11 @@ void MainTab::on_airtemp_textChanged(const QString &text)
validate_temp_field(ui.airtemp, text);
}
void MainTab::on_divetype_Changed(const int &index)
void MainTab::divetype_Changed(int index)
{
if (editMode == IGNORE)
return;
qDebug() << "Changing divetype to " << dctype_text[index];
displayed_dive.dc.dctype = (enum dive_comp_type) index;
update_setpoint_events(&displayed_dive.dc);
markChangedWidget(ui.DiveType);

View file

@ -71,7 +71,7 @@ slots:
void on_suit_textChanged(const QString &text);
void on_notes_textChanged();
void on_airtemp_textChanged(const QString &text);
void on_divetype_Changed(const int &index);
void divetype_Changed(int);
void on_watertemp_textChanged(const QString &text);
void validate_temp_field(QLineEdit *tempField, const QString &text);
void on_dateEdit_dateChanged(const QDate &date);