! Update datasheet for corresponding curve-point, it is called every time whenever there is any change in position of curve-point or its error-bar so keep it undo unaware no need to create extra entry in undo stack */
| 435 | no need to create extra entry in undo stack |
| 436 | */ |
| 437 | void DatapickerCurve::updatePoint(const DatapickerPoint* point) { |
| 438 | Q_D(DatapickerCurve); |
| 439 | |
| 440 | if (m_supressResizeDatasheet) |
| 441 | return; |
| 442 | |
| 443 | // TODO: this check shouldn't be required. |
| 444 | // redesign the retransform()-call in load() to avoid it. |
| 445 | if (!parentAspect()) |
| 446 | return; |
| 447 | |
| 448 | auto* datapicker = static_cast<Datapicker*>(parentAspect()); |
| 449 | int row = indexOfChild<DatapickerPoint>(point, ChildIndexFlag::IncludeHidden); |
| 450 | |
| 451 | const auto xDateTime = datapicker->xDateTime(); |
| 452 | if ((m_datetime && !xDateTime) || (!m_datetime && xDateTime)) |
| 453 | updateColumns(xDateTime); |
| 454 | |
| 455 | Vector3D data = datapicker->mapSceneToLogical(point->position()); |
| 456 | |
| 457 | if (d->posXColumn) { |
| 458 | if (xDateTime) { |
| 459 | auto dt = QDateTime::fromMSecsSinceEpoch(data.x()); |
| 460 | dt.setTimeSpec(Qt::TimeSpec::UTC); |
| 461 | d->posXColumn->setDateTimeAt(row, dt); |
| 462 | } else |
| 463 | d->posXColumn->setValueAt(row, data.x()); |
| 464 | } |
| 465 | |
| 466 | if (d->posYColumn) |
| 467 | d->posYColumn->setValueAt(row, data.y()); |
| 468 | |
| 469 | if (d->posZColumn) |
| 470 | d->posZColumn->setValueAt(row, data.y()); |
| 471 | |
| 472 | if (d->plusDeltaXColumn) { |
| 473 | data = datapicker->mapSceneLengthToLogical(QPointF(point->plusDeltaXPos().x(), 0)); |
| 474 | d->plusDeltaXColumn->setValueAt(row, std::abs(data.x())); |
| 475 | } |
| 476 | |
| 477 | if (d->minusDeltaXColumn) { |
| 478 | data = datapicker->mapSceneLengthToLogical(QPointF(point->minusDeltaXPos().x(), 0)); |
| 479 | d->minusDeltaXColumn->setValueAt(row, std::abs(data.x())); |
| 480 | } |
| 481 | |
| 482 | if (d->plusDeltaYColumn) { |
| 483 | data = datapicker->mapSceneLengthToLogical(QPointF(0, point->plusDeltaYPos().y())); |
| 484 | d->plusDeltaYColumn->setValueAt(row, std::abs(data.y())); |
| 485 | } |
| 486 | |
| 487 | if (d->minusDeltaYColumn) { |
| 488 | data = datapicker->mapSceneLengthToLogical(QPointF(0, point->minusDeltaYPos().y())); |
| 489 | d->minusDeltaYColumn->setValueAt(row, std::abs(data.y())); |
| 490 | } |
| 491 | } |
| 492 | |
| 493 | void DatapickerCurve::updateColumns(bool datetime) { |
| 494 | m_datetime = datetime; |
nothing calls this directly
no test coverage detected