undo: switch SetpointDialog from divecomputer to dive + dc-number

Since pointers to divecomputers may not be stable, the undo
commands take a dive + a divecomputer number. Update the
SetpointDialog accordingly.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-03-03 23:17:08 +01:00
parent adb53f9c18
commit 9a4718b46f
3 changed files with 8 additions and 7 deletions

View file

@ -176,8 +176,8 @@ RenumberDialog::RenumberDialog(QWidget *parent) : QDialog(parent), selectedOnly(
void SetpointDialog::buttonClicked(QAbstractButton *button)
{
if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole && dc) {
add_event(dc, time, SAMPLE_EVENT_PO2, 0, (int)(1000.0 * ui.spinbox->value()),
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);
}
@ -185,8 +185,8 @@ void SetpointDialog::buttonClicked(QAbstractButton *button)
MainWindow::instance()->graphics->replot();
}
SetpointDialog::SetpointDialog(struct divecomputer *dcIn, int seconds) : QDialog(MainWindow::instance()),
dc(dcIn), time(seconds < 0 ? 0 : seconds)
SetpointDialog::SetpointDialog(struct dive *dIn, int dcNrIn, int seconds) : QDialog(MainWindow::instance()),
d(dIn), dcNr(dcNrIn), time(seconds < 0 ? 0 : seconds)
{
ui.setupUi(this);
connect(ui.buttonBox, &QDialogButtonBox::clicked, this, &SetpointDialog::buttonClicked);

View file

@ -65,14 +65,15 @@ private:
class SetpointDialog : public QDialog {
Q_OBJECT
public:
SetpointDialog(struct divecomputer *divecomputer, int time);
SetpointDialog(struct dive *d, int dcNr, int time);
private
slots:
void buttonClicked(QAbstractButton *button);
private:
Ui::SetpointDialog ui;
struct divecomputer *dc;
struct dive *d;
int dcNr;
int time;
};

View file

@ -1611,7 +1611,7 @@ void ProfileWidget2::addDivemodeSwitch(int seconds, int divemode)
void ProfileWidget2::addSetpointChange(int seconds)
{
SetpointDialog dialog(current_dc, seconds);
SetpointDialog dialog(current_dive, dc_number, seconds);
dialog.exec();
}