Profile: take int instead of bool in DiveEventItem::recalculatePos

The goal here is to slowly make animation speed a variable of the
profile widget, not of the global preferences. Currently the code
does some trickeries with setting / unsetting the global animation
speed.

Start by not taking a bool "instant" but a speed in
DiveEventItem::recalculatePos().

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-07-10 21:57:51 +02:00 committed by Robert C. Helling
parent 5886550434
commit 74244b3cfe
3 changed files with 12 additions and 11 deletions

View file

@ -32,20 +32,21 @@ DiveEventItem::~DiveEventItem()
void DiveEventItem::setHorizontalAxis(DiveCartesianAxis *axis)
{
hAxis = axis;
recalculatePos(true);
recalculatePos(0);
}
void DiveEventItem::setModel(DivePlotDataModel *model)
{
dataModel = model;
recalculatePos(true);
recalculatePos(0);
}
void DiveEventItem::setVerticalAxis(DiveCartesianAxis *axis)
void DiveEventItem::setVerticalAxis(DiveCartesianAxis *axis, int speed)
{
vAxis = axis;
recalculatePos(true);
connect(vAxis, SIGNAL(sizeChanged()), this, SLOT(recalculatePos()));
recalculatePos(0);
connect(vAxis, &DiveCartesianAxis::sizeChanged, this,
[speed, this] { recalculatePos(speed); });
}
struct event *DiveEventItem::getEvent()
@ -62,7 +63,7 @@ void DiveEventItem::setEvent(struct event *ev, struct gasmix lastgasmix)
internalEvent = clone_event(ev);
setupPixmap(lastgasmix);
setupToolTipString(lastgasmix);
recalculatePos(true);
recalculatePos(0);
}
void DiveEventItem::setupPixmap(struct gasmix lastgasmix)
@ -268,7 +269,7 @@ int DiveEventItem::depthAtTime(int time)
return dataModel->data(dataModel->index(result.first().row(), DivePlotDataModel::DEPTH)).toInt();
}
void DiveEventItem::recalculatePos(bool instant)
void DiveEventItem::recalculatePos(int speed)
{
if (!vAxis || !hAxis || !internalEvent || !dataModel)
return;
@ -286,7 +287,7 @@ void DiveEventItem::recalculatePos(bool instant)
show();
qreal x = hAxis->posAtValue(internalEvent->time.seconds);
qreal y = vAxis->posAtValue(depth);
if (!instant)
if (speed > 0)
Animations::moveTo(this, x, y);
else
setPos(x, y);