summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-06-05 09:05:46 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-06-05 11:29:00 -0700
commitc93fb83edfe4bfab6bd2c01e2c54cfe7b39f0506 (patch)
tree58a72e048d0483734b6552f80a42d558f8235dd3
parente42fc1a1e9a13c77d3474dbcb26b68b8772b8c6d (diff)
downloadsubsurface-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>
-rw-r--r--profile-widget/diveeventitem.cpp23
-rw-r--r--profile-widget/diveeventitem.h3
-rw-r--r--profile-widget/profilewidget2.cpp3
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);