aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pref.h1
-rw-r--r--profile.c2
-rw-r--r--qt-ui/mainwindow.cpp7
-rw-r--r--qt-ui/mainwindow.h1
-rw-r--r--qt-ui/mainwindow.ui22
-rw-r--r--qt-ui/preferences.cpp1
-rw-r--r--qt-ui/profile/diveprofileitem.cpp22
-rw-r--r--qt-ui/profile/diveprofileitem.h5
-rw-r--r--qt-ui/profile/profilewidget2.cpp17
-rw-r--r--subsurfacestartup.c1
10 files changed, 70 insertions, 9 deletions
diff --git a/pref.h b/pref.h
index 4a6b2ad53..712a2d153 100644
--- a/pref.h
+++ b/pref.h
@@ -42,6 +42,7 @@ struct preferences {
bool display_unused_tanks;
bool show_average_depth;
bool zoomed_plot;
+ short heart_rate;
};
enum unit_system_values {
METRIC,
diff --git a/profile.c b/profile.c
index 5db3c3d11..0d3f0ab7e 100644
--- a/profile.c
+++ b/profile.c
@@ -1321,7 +1321,7 @@ static void plot_string(struct plot_info *pi, struct plot_data *entry, struct me
}
}
}
- if (entry->heartbeat)
+ if (entry->heartbeat && prefs.heart_rate)
put_format(b, translate("gettextFromC", "heartbeat: %d\n"), entry->heartbeat);
if (entry->bearing)
put_format(b, translate("gettextFromC", "bearing: %d\n"), entry->bearing);
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 216f18275..88be2ca23 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -221,6 +221,7 @@ void MainWindow::setToolButtonsEnabled(bool enabled)
ui.profSAC->setEnabled(enabled);
ui.profRuler->setEnabled(enabled);
ui.profScaled->setEnabled(enabled);
+ ui.profHR->setEnabled(enabled);
}
void MainWindow::on_actionClose_triggered()
@@ -702,6 +703,7 @@ void MainWindow::readSettings()
TOOLBOX_PREF_BUTTON(pp_graphs.phe, phegraph, profPhe);
TOOLBOX_PREF_BUTTON(pp_graphs.pn2, pn2graph, profPn2);
TOOLBOX_PREF_BUTTON(pp_graphs.po2, po2graph, profPO2);
+ TOOLBOX_PREF_BUTTON(heart_rate, hrgraph, profHR);
ui.profRuler->setChecked(s.value("rulergraph").toBool());
TOOLBOX_PREF_BUTTON(show_sac, show_sac, profSAC);
}
@@ -1164,6 +1166,11 @@ void MainWindow::on_profPO2_clicked(bool triggered)
prefs.pp_graphs.po2 = triggered;
TOOLBOX_PREF_PROFILE(po2graph);
}
+void MainWindow::on_profHR_clicked(bool triggered)
+{
+ prefs.heart_rate = triggered;
+ TOOLBOX_PREF_PROFILE(hrgraph);
+}
void MainWindow::on_profRuler_clicked(bool triggered)
{
TOOLBOX_PREF_PROFILE(rulergraph);
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index f47ade861..40d32b5e5 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -140,6 +140,7 @@ slots:
void on_profPO2_clicked(bool triggered);
void on_profPhe_clicked(bool triggered);
void on_profPn2_clicked(bool triggered);
+ void on_profHR_clicked(bool triggered);
void on_profRuler_clicked(bool triggered);
void on_profSAC_clicked(bool triggered);
void on_profScaled_clicked(bool triggered);
diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui
index 909e343ef..30610bb09 100644
--- a/qt-ui/mainwindow.ui
+++ b/qt-ui/mainwindow.ui
@@ -449,11 +449,27 @@
<bool>true</bool>
</property>
</widget>
- </item>
- <item row="0" column="1" rowspan="14">
+ </item>
+ <item row="13" column="0">
+ <widget class="QToolButton" name="profHR">
+ <property name="toolTip">
+ <string>Show/hide heart rate</string>
+ </property>
+ <property name="text">
+ <string>HR</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" rowspan="15">
<widget class="ProfileWidget2" name="newProfile"/>
</item>
- <item row="13" column="0">
+ <item row="14" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index 27570dc23..1e87662a1 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -268,6 +268,7 @@ void PreferencesDialog::loadSettings()
GET_BOOL("calcceiling3m", calc_ceiling_3m_incr);
GET_BOOL("calcndltts", calc_ndl_tts);
GET_BOOL("calcalltissues", calc_all_tissues);
+ GET_BOOL("hrgraph", heart_rate);
GET_INT("gflow", gflow);
GET_INT("gfhigh", gfhigh);
GET_BOOL("gf_low_at_maxdepth", gf_low_at_maxdepth);
diff --git a/qt-ui/profile/diveprofileitem.cpp b/qt-ui/profile/diveprofileitem.cpp
index 2ffc7ec02..51d6a3f79 100644
--- a/qt-ui/profile/diveprofileitem.cpp
+++ b/qt-ui/profile/diveprofileitem.cpp
@@ -221,6 +221,7 @@ DiveHeartrateItem::DiveHeartrateItem()
pen.setCosmetic(true);
pen.setWidth(1);
setPen(pen);
+ visible = true;
}
void DiveHeartrateItem::modelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
@@ -297,6 +298,27 @@ void DiveHeartrateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
painter->drawPolyline(polygon());
}
+void DiveHeartrateItem::preferencesChanged()
+{
+ QSettings s;
+ s.beginGroup("TecDetails");
+ setVisible(s.value(visibilityKey).toBool());
+ if (s.value(visibilityKey).toBool())
+ visible = true;
+ else
+ visible = false;
+}
+
+void DiveHeartrateItem::setVisibilitySettingsKey(const QString &key)
+{
+ visibilityKey = key;
+}
+
+bool DiveHeartrateItem::isVisible()
+{
+ return visible == true;
+}
+
DiveTemperatureItem::DiveTemperatureItem()
{
QPen pen;
diff --git a/qt-ui/profile/diveprofileitem.h b/qt-ui/profile/diveprofileitem.h
index 480776546..c7fa59841 100644
--- a/qt-ui/profile/diveprofileitem.h
+++ b/qt-ui/profile/diveprofileitem.h
@@ -100,9 +100,14 @@ public:
DiveHeartrateItem();
virtual void modelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+ virtual void preferencesChanged();
+ void setVisibilitySettingsKey(const QString &setVisibilitySettingsKey);
+ bool isVisible();
private:
void createTextItem(int seconds, int hr);
+ QString visibilityKey;
+ bool visible;
};
class DiveGasPressureItem : public AbstractProfilePolygonItem {
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 047634e15..95f8f49ee 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -193,6 +193,8 @@ void ProfileWidget2::setupItemOnScene()
setupItem(gasPressureItem, timeAxis, cylinderPressureAxis, dataModel, DivePlotDataModel::TEMPERATURE, DivePlotDataModel::TIME, 1);
setupItem(temperatureItem, timeAxis, temperatureAxis, dataModel, DivePlotDataModel::TEMPERATURE, DivePlotDataModel::TIME, 1);
setupItem(heartBeatItem, timeAxis, heartBeatAxis, dataModel, DivePlotDataModel::HEARTBEAT, DivePlotDataModel::TIME, 1);
+ heartBeatItem->setVisibilitySettingsKey("hrgraph");
+ heartBeatItem->preferencesChanged();
setupItem(diveProfileItem, timeAxis, profileYAxis, dataModel, DivePlotDataModel::DEPTH, DivePlotDataModel::TIME, 0);
#define CREATE_PP_GAS(ITEM, VERTICAL_COLUMN, COLOR, COLOR_ALERT, THRESHOULD_SETTINGS, VISIBILITY_SETTINGS) \
@@ -400,11 +402,15 @@ void ProfileWidget2::plotDives(QList<dive *> dives)
temperatureAxis->setMinimum(pInfo.mintemp);
temperatureAxis->setMaximum(pInfo.maxtemp);
- if (pInfo.maxhr) {
- heartBeatAxis->setMinimum(pInfo.minhr);
- heartBeatAxis->setMaximum(pInfo.maxhr);
- heartBeatAxis->updateTicks(); // this shows the ticks
- heartBeatAxis->setVisible(true);
+ if (heartBeatItem->isVisible()) {
+ if (pInfo.maxhr) {
+ heartBeatAxis->setMinimum(pInfo.minhr);
+ heartBeatAxis->setMaximum(pInfo.maxhr);
+ heartBeatAxis->updateTicks(); // this shows the ticks
+ heartBeatAxis->setVisible(true);
+ } else {
+ heartBeatAxis->setVisible(false);
+ }
} else {
heartBeatAxis->setVisible(false);
}
@@ -656,6 +662,7 @@ void ProfileWidget2::setProfileState()
temperatureAxis->setPos(itemPos.temperature.pos.on);
heartBeatAxis->setPos(itemPos.heartBeat.pos.on);
heartBeatAxis->setLine(itemPos.heartBeat.expanded);
+ heartBeatItem->setVisible(s.value("hrgraph").toBool());
meanDepth->setVisible(true);
diveComputerText->setVisible(true);
diff --git a/subsurfacestartup.c b/subsurfacestartup.c
index 63ecaa11b..3bd2dc0f1 100644
--- a/subsurfacestartup.c
+++ b/subsurfacestartup.c
@@ -18,6 +18,7 @@ struct preferences default_prefs = {
.mod = false,
.mod_ppO2 = 1.6,
.ead = false,
+ .heart_rate = true,
.profile_dc_ceiling = true,
.profile_red_ceiling = false,
.profile_calc_ceiling = false,