summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2015-01-01 17:00:46 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-01-10 17:27:24 -0800
commita478eb5711db6a1950cf810ca0b67414b6910030 (patch)
treeff4683168b7ad5d1465a65a89a4f3c746d85ddae
parent93eb386ba998b3351a9dff81fa8a4d6ad0715e25 (diff)
downloadsubsurface-a478eb5711db6a1950cf810ca0b67414b6910030.tar.gz
Maintab combobox to set dive type
still needs some work Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.c22
-rw-r--r--dive.h3
-rw-r--r--pref.h1
-rw-r--r--qt-ui/maintab.cpp23
-rw-r--r--qt-ui/maintab.h1
-rw-r--r--qt-ui/maintab.ui35
-rw-r--r--qt-ui/preferences.cpp1
-rw-r--r--subsurfacestartup.c1
8 files changed, 72 insertions, 15 deletions
diff --git a/dive.c b/dive.c
index 17b67a590..680ceeb58 100644
--- a/dive.c
+++ b/dive.c
@@ -29,7 +29,7 @@ static const char *default_tags[] = {
const char *cylinderuse_text[] = {
QT_TRANSLATE_NOOP("gettextFromC", "OC-gas"), QT_TRANSLATE_NOOP("gettextFromC", "diluent"), QT_TRANSLATE_NOOP("gettextFromC", "oxygen")
};
-const char *dctype_text[] = { "OC", "CCR", "PSCR" };
+const char *dctype_text[] = { "OC", "CCR", "PSCR", "Freedive" };
int event_is_gaschange(struct event *ev)
{
@@ -872,6 +872,26 @@ int explicit_first_cylinder(struct dive *dive, struct divecomputer *dc)
return 0;
}
+void update_setpoint_events(struct divecomputer *dc)
+{
+ struct event *ev = get_next_event(dc->events, "SP change");
+ bool changed = false;
+ int new_setpoint = 0;
+
+ if (dc->dctype == CCR)
+ new_setpoint = prefs.defaultsetpoint;
+
+ while (ev) {
+ if (ev->time.seconds == 0) {
+ ev->value = new_setpoint;
+ changed = true;
+ }
+ ev = get_next_event(ev->next, "SP change");
+ }
+ if (!changed)
+ add_event(dc, 0, SAMPLE_EVENT_PO2, 0, new_setpoint, "SP change");
+}
+
void sanitize_gasmix(struct gasmix *mix)
{
unsigned int o2, he;
diff --git a/dive.h b/dive.h
index d99f90073..bcae405a0 100644
--- a/dive.h
+++ b/dive.h
@@ -47,7 +47,7 @@ extern "C" {
#include <stdbool.h>
#endif
-enum dive_comp_type {OC, CCR, PSCR, NUM_DC_TYPE}; // Flags (Open-circuit and Closed-circuit-rebreather) for setting dive computer type
+enum dive_comp_type {OC, CCR, PSCR, FREEDIVE, NUM_DC_TYPE}; // Flags (Open-circuit and Closed-circuit-rebreather) for setting dive computer type
enum cylinderuse {OC_GAS, DILUENT, OXYGEN, NUM_GAS_USE}; // The different uses for cylinders
extern const char *cylinderuse_text[];
@@ -850,6 +850,7 @@ extern void set_save_userid_local(short value);
extern void set_userid(char *user_id);
extern const char *get_dive_date_c_string(timestamp_t when);
+extern void update_setpoint_events(struct divecomputer *dc);
#ifdef __cplusplus
}
#endif
diff --git a/pref.h b/pref.h
index 49e1afaab..8a8802c4d 100644
--- a/pref.h
+++ b/pref.h
@@ -76,6 +76,7 @@ struct preferences {
int decosac;
int o2consumption; // ml per min
int pscr_ratio; // dump ratio times 1000
+ int defaultsetpoint; // default setpoint in mbar
bool show_pictures_in_profile;
bool use_default_file;
facebook_prefs_t facebook;
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index e6e530d3d..1a25f19e4 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -86,6 +86,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui.dateEdit->installEventFilter(this);
ui.timeEdit->installEventFilter(this);
ui.tagWidget->installEventFilter(this);
+ ui.DiveType->installEventFilter(this);
Q_FOREACH (QObject *obj, ui.statisticsTab->children()) {
QLabel *label = qobject_cast<QLabel *>(obj);
@@ -100,6 +101,10 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui.weights->setBtnToolTip(tr("Add weight system"));
connect(ui.weights, SIGNAL(addButtonClicked()), this, SLOT(addWeight_clicked()));
+ // 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.cylinders->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editCylinderWidget(QModelIndex)));
connect(ui.weights->view(), SIGNAL(clicked(QModelIndex)), this, SLOT(editWeightWidget(QModelIndex)));
@@ -425,6 +430,7 @@ void MainTab::updateDiveInfo(bool clear)
UPDATE_TEXT(displayed_dive, buddy);
UPDATE_TEMP(displayed_dive, airtemp);
UPDATE_TEMP(displayed_dive, watertemp);
+ ui.DiveType->setCurrentIndex(displayed_dive.dc.dctype);
if (!clear) {
updateGpsCoordinates(&displayed_dive);
@@ -454,6 +460,8 @@ void MainTab::updateDiveInfo(bool clear)
ui.TagLabel->setVisible(false);
ui.airTempLabel->setVisible(false);
ui.airtemp->setVisible(false);
+ ui.DiveType->setVisible(false);
+ ui.TypeLabel->setVisible(false);
ui.waterTempLabel->setVisible(false);
ui.watertemp->setVisible(false);
// rename the remaining fields and fill data from selected trip
@@ -483,6 +491,8 @@ void MainTab::updateDiveInfo(bool clear)
ui.tagWidget->setVisible(true);
ui.airTempLabel->setVisible(true);
ui.airtemp->setVisible(true);
+ ui.TypeLabel->setVisible(true);
+ ui.DiveType->setVisible(true);
ui.waterTempLabel->setVisible(true);
ui.watertemp->setVisible(true);
/* and fill them from the dive */
@@ -504,6 +514,7 @@ void MainTab::updateDiveInfo(bool clear)
ui.otuText->setText(QString("%1").arg(displayed_dive.otu));
ui.waterTemperatureText->setText(get_temperature_string(displayed_dive.watertemp, true));
ui.airTemperatureText->setText(get_temperature_string(displayed_dive.airtemp, true));
+ ui.DiveType->setCurrentIndex(current_dc->dctype);
volume_t gases[MAX_CYLINDERS] = {};
get_gas_used(&displayed_dive, gases);
QString volumes;
@@ -761,6 +772,8 @@ 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)
+ MODIFY_SELECTED_DIVES(EDIT_VALUE(dc.dctype));
if (displayed_dive.watertemp.mkelvin != cd->watertemp.mkelvin)
MODIFY_SELECTED_DIVES(EDIT_VALUE(watertemp.mkelvin));
if (displayed_dive.when != cd->when) {
@@ -887,6 +900,7 @@ void MainTab::resetPallete()
ui.divemaster->setPalette(p);
ui.suit->setPalette(p);
ui.airtemp->setPalette(p);
+ ui.DiveType->setPalette(p);
ui.watertemp->setPalette(p);
ui.dateEdit->setPalette(p);
ui.timeEdit->setPalette(p);
@@ -998,6 +1012,15 @@ void MainTab::on_airtemp_textChanged(const QString &text)
validate_temp_field(ui.airtemp, text);
}
+void MainTab::on_divetype_Changed(const int &index)
+{
+ if (editMode == IGNORE)
+ return;
+ displayed_dive.dc.dctype = (enum dive_comp_type) index;
+ update_setpoint_events(&displayed_dive.dc);
+ markChangedWidget(ui.DiveType);
+}
+
void MainTab::on_watertemp_textChanged(const QString &text)
{
if (editMode == IGNORE || acceptingEdit == true)
diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h
index 668ed02ee..8b98119f4 100644
--- a/qt-ui/maintab.h
+++ b/qt-ui/maintab.h
@@ -71,6 +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 on_watertemp_textChanged(const QString &text);
void validate_temp_field(QLineEdit *tempField, const QString &text);
void on_dateEdit_dateChanged(const QDate &date);
diff --git a/qt-ui/maintab.ui b/qt-ui/maintab.ui
index ac0f1a70c..226442f70 100644
--- a/qt-ui/maintab.ui
+++ b/qt-ui/maintab.ui
@@ -175,28 +175,28 @@
<number>0</number>
</property>
<item>
- <widget class="QLabel" name="RatingLabel">
+ <widget class="StarWidget" name="rating" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="text">
- <string>Rating</string>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item>
- <widget class="QLabel" name="visibilityLabel">
+ <widget class="StarWidget" name="visibility" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="text">
- <string>Visibility</string>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
@@ -236,28 +236,28 @@
<number>0</number>
</property>
<item>
- <widget class="StarWidget" name="rating" native="true">
+ <widget class="QLabel" name="RatingLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy">
- <enum>Qt::StrongFocus</enum>
+ <property name="text">
+ <string>Rating</string>
</property>
</widget>
</item>
<item>
- <widget class="StarWidget" name="visibility" native="true">
+ <widget class="QLabel" name="visibilityLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy">
- <enum>Qt::StrongFocus</enum>
+ <property name="text">
+ <string>Visibility</string>
</property>
</widget>
</item>
@@ -301,6 +301,16 @@
<bool>false</bool>
</property>
</widget>
+ <item>
+ <widget class="QComboBox" name="DiveType">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
</item>
<item row="13" column="0" colspan="3">
<layout class="QHBoxLayout" name="notesAndSocialNetworksLayout">
@@ -1019,7 +1029,6 @@
<tabstop>airtemp</tabstop>
<tabstop>watertemp</tabstop>
<tabstop>location</tabstop>
- <tabstop>coordinates</tabstop>
<tabstop>divemaster</tabstop>
<tabstop>buddy</tabstop>
<tabstop>rating</tabstop>
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index 80bd3e49d..32237aea8 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -367,6 +367,7 @@ void PreferencesDialog::loadSettings()
GET_BOOL("show_sac", show_sac);
GET_BOOL("display_unused_tanks", display_unused_tanks);
GET_BOOL("show_average_depth", show_average_depth);
+ GET_INT("default_setpoint", defaultsetpoint);
s.endGroup();
s.beginGroup("GeneralSettings");
diff --git a/subsurfacestartup.c b/subsurfacestartup.c
index 1e3a2c1b4..c67381322 100644
--- a/subsurfacestartup.c
+++ b/subsurfacestartup.c
@@ -55,6 +55,7 @@ struct preferences default_prefs = {
.album_id = NULL,
.access_token = NULL
}
+ .defaultsetpoint = 1100
};
int run_survey;