summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-03-03 23:31:46 +0100
committerGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-07 00:13:35 +0200
commit1971cfad547792ba961f804605ccb12780e17de0 (patch)
tree54819d974f20b13721afddba3c87b835bed8814f
parent9a4718b46f5fa74c7c67a92d0c09ab805f364e12 (diff)
downloadsubsurface-1971cfad547792ba961f804605ccb12780e17de0.tar.gz
undo: implement set point change undo command
This is a simple copy of the other add-event commands. It could be made more friendly by stating the pO2 value in the text. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--commands/command.cpp5
-rw-r--r--commands/command.h1
-rw-r--r--commands/command_event.cpp6
-rw-r--r--commands/command_event.h5
-rw-r--r--desktop-widgets/simplewidgets.cpp10
5 files changed, 19 insertions, 8 deletions
diff --git a/commands/command.cpp b/commands/command.cpp
index 4f92038b9..44eb4b8f0 100644
--- a/commands/command.cpp
+++ b/commands/command.cpp
@@ -339,4 +339,9 @@ void addEventDivemodeSwitch(struct dive *d, int dcNr, int seconds, int divemode)
execute(new AddEventDivemodeSwitch(d, dcNr, seconds, divemode));
}
+void addEventSetpointChange(struct dive *d, int dcNr, int seconds, pressure_t pO2)
+{
+ execute(new AddEventSetpointChange(d, dcNr, seconds, pO2));
+}
+
} // namespace Command
diff --git a/commands/command.h b/commands/command.h
index 1644063a7..aa7c75ab3 100644
--- a/commands/command.h
+++ b/commands/command.h
@@ -108,6 +108,7 @@ void editTripNotes(dive_trip *trip, const QString &s);
void addEventBookmark(struct dive *d, int dcNr, int seconds);
void addEventDivemodeSwitch(struct dive *d, int dcNr, int seconds, int divemode);
+void addEventSetpointChange(struct dive *d, int dcNr, int seconds, pressure_t pO2);
} // namespace Command
diff --git a/commands/command_event.cpp b/commands/command_event.cpp
index ddef502bc..a1e13f252 100644
--- a/commands/command_event.cpp
+++ b/commands/command_event.cpp
@@ -49,4 +49,10 @@ AddEventDivemodeSwitch::AddEventDivemodeSwitch(struct dive *d, int dcNr, int sec
setText(tr("Add dive mode switch to %1").arg(gettextFromC::tr(divemode_text_ui[divemode])));
}
+AddEventSetpointChange::AddEventSetpointChange(struct dive *d, int dcNr, int seconds, pressure_t pO2) :
+ AddEventBase(d, dcNr, create_event(seconds, SAMPLE_EVENT_PO2, 0, pO2.mbar, QT_TRANSLATE_NOOP("gettextFromC", "SP change")))
+{
+ setText(tr("Add set point change")); // TODO: format pO2 value in bar or psi.
+}
+
} // namespace Command
diff --git a/commands/command_event.h b/commands/command_event.h
index 3130a128f..8cceaeb25 100644
--- a/commands/command_event.h
+++ b/commands/command_event.h
@@ -44,6 +44,11 @@ public:
AddEventDivemodeSwitch(struct dive *d, int dcNr, int seconds, int divemode);
};
+class AddEventSetpointChange : public AddEventBase {
+public:
+ AddEventSetpointChange(struct dive *d, int dcNr, int seconds, pressure_t pO2);
+};
+
} // namespace Command
#endif // COMMAND_EVENT_H
diff --git a/desktop-widgets/simplewidgets.cpp b/desktop-widgets/simplewidgets.cpp
index c31c93676..423f4b68f 100644
--- a/desktop-widgets/simplewidgets.cpp
+++ b/desktop-widgets/simplewidgets.cpp
@@ -23,7 +23,6 @@
#include "commands/command.h"
#include "core/metadata.h"
#include "core/tag.h"
-#include "core/divelist.h" // for mark_divelist_changed
double MinMaxAvgWidget::average() const
{
@@ -176,13 +175,8 @@ RenumberDialog::RenumberDialog(QWidget *parent) : QDialog(parent), selectedOnly(
void SetpointDialog::buttonClicked(QAbstractButton *button)
{
- if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
- add_event(get_dive_dc(d, dcNr), time, SAMPLE_EVENT_PO2, 0, (int)(1000.0 * ui.spinbox->value()),
- QT_TRANSLATE_NOOP("gettextFromC", "SP change"));
- invalidate_dive_cache(current_dive);
- }
- mark_divelist_changed(true);
- MainWindow::instance()->graphics->replot();
+ if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole)
+ Command::addEventSetpointChange(d, dcNr, time, pressure_t { (int)(1000.0 * ui.spinbox->value()) });
}
SetpointDialog::SetpointDialog(struct dive *dIn, int dcNrIn, int seconds) : QDialog(MainWindow::instance()),