diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2021-06-05 09:05:46 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-06-05 11:29:00 -0700 |
commit | c93fb83edfe4bfab6bd2c01e2c54cfe7b39f0506 (patch) | |
tree | 58a72e048d0483734b6552f80a42d558f8235dd3 /profile-widget | |
parent | e42fc1a1e9a13c77d3474dbcb26b68b8772b8c6d (diff) | |
download | subsurface-c93fb83edfe4bfab6bd2c01e2c54cfe7b39f0506.tar.gz |
profile: pass event at construction time to DiveEventItem
There is no point in having a dive event without an event.
Let's pass the event at construction time to avoid having
to handle "invalid" events.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'profile-widget')
-rw-r--r-- | profile-widget/diveeventitem.cpp | 23 | ||||
-rw-r--r-- | profile-widget/diveeventitem.h | 3 | ||||
-rw-r--r-- | profile-widget/profilewidget2.cpp | 3 |
3 files changed, 9 insertions, 20 deletions
diff --git a/profile-widget/diveeventitem.cpp b/profile-widget/diveeventitem.cpp index 9cb28e168..3590a35c8 100644 --- a/profile-widget/diveeventitem.cpp +++ b/profile-widget/diveeventitem.cpp @@ -14,14 +14,18 @@ #define DEPTH_NOT_FOUND (-2342) -DiveEventItem::DiveEventItem(QGraphicsItem *parent) : DivePixmapItem(parent), +DiveEventItem::DiveEventItem(const struct dive *d, struct event *ev, struct gasmix lastgasmix, QGraphicsItem *parent) : DivePixmapItem(parent), vAxis(NULL), hAxis(NULL), dataModel(NULL), - internalEvent(NULL), - dive(NULL) + internalEvent(clone_event(ev)), + dive(d) { setFlag(ItemIgnoresTransformations); + + setupPixmap(lastgasmix); + setupToolTipString(lastgasmix); + recalculatePos(0); } DiveEventItem::~DiveEventItem() @@ -54,19 +58,6 @@ struct event *DiveEventItem::getEvent() return internalEvent; } -void DiveEventItem::setEvent(const struct dive *d, struct event *ev, struct gasmix lastgasmix) -{ - if (!ev) - return; - - dive = d; - free(internalEvent); - internalEvent = clone_event(ev); - setupPixmap(lastgasmix); - setupToolTipString(lastgasmix); - recalculatePos(0); -} - void DiveEventItem::setupPixmap(struct gasmix lastgasmix) { const IconMetrics& metrics = defaultIconMetrics(); diff --git a/profile-widget/diveeventitem.h b/profile-widget/diveeventitem.h index 1b2c1c5ba..a04d89214 100644 --- a/profile-widget/diveeventitem.h +++ b/profile-widget/diveeventitem.h @@ -11,9 +11,8 @@ struct event; class DiveEventItem : public DivePixmapItem { Q_OBJECT public: - DiveEventItem(QGraphicsItem *parent = 0); + DiveEventItem(const struct dive *d, struct event *ev, struct gasmix lastgasmix, QGraphicsItem *parent = 0); ~DiveEventItem(); - void setEvent(const struct dive *d, struct event *ev, struct gasmix lastgasmix); struct event *getEvent(); void eventVisibilityChanged(const QString &eventName, bool visible); void setVerticalAxis(DiveCartesianAxis *axis, int speed); diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index 142238d22..e4b624b8b 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -725,11 +725,10 @@ void ProfileWidget2::plotDive(const struct dive *dIn, int dcIn, bool doClearPict // printMode is always selected for SUBSURFACE_MOBILE due to font problems // BUT events are wanted. #endif - DiveEventItem *item = new DiveEventItem(); + DiveEventItem *item = new DiveEventItem(d, event, lastgasmix); item->setHorizontalAxis(timeAxis); item->setVerticalAxis(profileYAxis, qPrefDisplay::animation_speed()); item->setModel(dataModel); - item->setEvent(d, event, lastgasmix); item->setZValue(2); #ifndef SUBSURFACE_MOBILE item->setScale(printMode ? 4 :1); |