summaryrefslogtreecommitdiffstats
path: root/profile-widget
diff options
context:
space:
mode:
Diffstat (limited to 'profile-widget')
-rw-r--r--profile-widget/profilewidget2.cpp33
-rw-r--r--profile-widget/profilewidget2.h2
2 files changed, 8 insertions, 27 deletions
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp
index a85410892..eb47c8586 100644
--- a/profile-widget/profilewidget2.cpp
+++ b/profile-widget/profilewidget2.cpp
@@ -1442,6 +1442,9 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
}
}
// create the profile context menu
+ QPointF scenePos = mapToScene(mapFromGlobal(event->globalPos()));
+ qreal sec_val = timeAxis->valueAt(scenePos);
+ int seconds = (sec_val < 0.0) ? 0 : (int)sec_val;
GasSelectionModel *model = GasSelectionModel::instance();
model->repopulate();
int rowCount = model->rowCount();
@@ -1451,8 +1454,7 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
for (int i = 0; i < rowCount; i++) {
QAction *action = new QAction(&m);
action->setText(model->data(model->index(i, 0), Qt::DisplayRole).toString() + QString(tr(" (cyl. %1)")).arg(i + 1));
- connect(action, SIGNAL(triggered(bool)), this, SLOT(changeGas()));
- action->setData(event->globalPos());
+ connect(action, &QAction::triggered, [this, i, seconds] { changeGas(i, seconds); } );
gasChange->addAction(action);
}
}
@@ -1464,10 +1466,7 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
splitAction->setData(event->globalPos());
const struct event *ev = NULL;
enum divemode_t divemode = UNDEF_COMP_TYPE;
- QPointF scenePos = mapToScene(mapFromGlobal(event->globalPos()));
QString gas = action->text();
- qreal sec_val = timeAxis->valueAt(scenePos);
- int seconds = (sec_val < 0.0) ? 0 : (int)sec_val;
get_current_divemode(current_dc, seconds, &ev, &divemode);
QMenu *changeMode = m.addMenu(tr("Change divemode"));
@@ -1685,19 +1684,10 @@ void ProfileWidget2::splitDive()
#endif
}
-void ProfileWidget2::changeGas()
+void ProfileWidget2::changeGas(int tank, int seconds)
{
- QAction *action = qobject_cast<QAction *>(sender());
- QPointF scenePos = mapToScene(mapFromGlobal(action->data().toPoint()));
- QString gas = action->text();
- gas.remove(QRegExp(" \\(.*\\)"));
-
- // backup the things on the dataModel, since we will clear that out.
- struct gasmix gasmix;
- qreal sec_val = timeAxis->valueAt(scenePos);
-
- // no gas changes before the dive starts
- int seconds = (sec_val < 0.0) ? 0 : (int)sec_val;
+ if (!current_dive || tank < 0 || tank >= current_dive->cylinders.nr)
+ return;
// if there is a gas change at this time stamp, remove it before adding the new one
struct event *gasChangeEvent = current_dc->events;
@@ -1709,15 +1699,6 @@ void ProfileWidget2::changeGas()
gasChangeEvent = gasChangeEvent->next;
}
}
- validate_gas(qPrintable(gas), &gasmix);
- QRegExp rx("\\(\\D*(\\d+)");
- int tank;
- if (rx.indexIn(action->text()) > -1) {
- tank = rx.cap(1).toInt() - 1; // we display the tank 1 based
- } else {
- qDebug() << "failed to parse tank number";
- tank = get_gasidx(&displayed_dive, gasmix);
- }
// add this both to the displayed dive and the current dive
add_gas_switch_event(current_dive, current_dc, seconds, tank);
add_gas_switch_event(&displayed_dive, get_dive_dc(&displayed_dive, dc_number), seconds, tank);
diff --git a/profile-widget/profilewidget2.h b/profile-widget/profilewidget2.h
index fadfbcbc9..aebce54aa 100644
--- a/profile-widget/profilewidget2.h
+++ b/profile-widget/profilewidget2.h
@@ -115,7 +115,6 @@ slots: // Necessary to call from QAction's signals.
void removePictures(const QVector<QString> &fileUrls);
void setPlanState();
void setAddState();
- void changeGas();
void addSetpointChange();
void splitDive();
void addBookmark();
@@ -162,6 +161,7 @@ protected:
private: /*methods*/
+ void changeGas(int tank, int seconds);
void fixBackgroundPos();
void scrollViewTo(const QPoint &pos);
void setupSceneAndFlags();