From 492f794897128d61082e40e419c7a25214de7198 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Thu, 8 Jan 2015 14:42:07 +0100 Subject: [PATCH 4/7] 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 --- dive.c | 6 ++++-- qt-ui/maintab.cpp | 9 ++++++--- qt-ui/maintab.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dive.c b/dive.c index 680ceeb..c464e7e 100644 --- a/dive.c +++ b/dive.c @@ -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) diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index 1a25f19..2c92447 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -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); diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h index 8b98119..2f7277b 100644 --- a/qt-ui/maintab.h +++ b/qt-ui/maintab.h @@ -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); -- 1.9.3 (Apple Git-50)