| 598 | } |
| 599 | |
| 600 | void AddSubtractValueDialog::updatePreview() { |
| 601 | if (!ui.framePreview->isVisible() || !m_previewDirty) |
| 602 | return; |
| 603 | |
| 604 | QApplication::processEvents(QEventLoop::AllEvents, 0); |
| 605 | WAIT_CURSOR; |
| 606 | |
| 607 | if (!m_project) |
| 608 | initPreview(); |
| 609 | |
| 610 | // y for the result curve - copy the original data into the result column and process it |
| 611 | m_yColumnResult->setColumnMode(m_columns.constFirst()->columnMode()); // set the mode to its original value, it was potentially changed in generateForColumn |
| 612 | m_yColumnResult->copy(m_columns.constFirst()); |
| 613 | generateForColumn(m_yColumnResult, 0); |
| 614 | |
| 615 | auto valueType = static_cast<ValueType>(ui.cbType->itemData(ui.cbType->currentIndex()).toInt()); |
| 616 | if (valueType == ValueType::Baseline) { |
| 617 | // x |
| 618 | int rows = m_spreadsheet->rowCount(); |
| 619 | if (m_xColumnBaselineDirty) { |
| 620 | QVector<int> xData; |
| 621 | xData.resize(rows); |
| 622 | for (int i = 0; i < rows; ++i) |
| 623 | xData[i] = i; |
| 624 | m_xColumnBaseline->setIntegers(xData); |
| 625 | m_xColumnBaselineDirty = false; |
| 626 | } |
| 627 | |
| 628 | // y |
| 629 | const auto* col = m_columns.constFirst(); |
| 630 | QVector<double> baselineData(rows); |
| 631 | const auto* newData = static_cast<QVector<double>*>(m_yColumnResult->data()); |
| 632 | switch (col->columnMode()) { |
| 633 | case AbstractColumn::ColumnMode::Integer: { |
| 634 | auto* data = static_cast<QVector<int>*>(col->data()); |
| 635 | for (int i = 0; i < rows; ++i) |
| 636 | baselineData[i] = data->at(i) - newData->at(i); |
| 637 | break; |
| 638 | } |
| 639 | case AbstractColumn::ColumnMode::BigInt: { |
| 640 | auto* data = static_cast<QVector<qint64>*>(col->data()); |
| 641 | for (int i = 0; i < rows; ++i) |
| 642 | baselineData[i] = data->at(i) - newData->at(i); |
| 643 | break; |
| 644 | } |
| 645 | case AbstractColumn::ColumnMode::Double: { |
| 646 | auto* data = static_cast<QVector<double>*>(col->data()); |
| 647 | for (int i = 0; i < rows; ++i) |
| 648 | baselineData[i] = data->at(i) - newData->at(i); |
| 649 | break; |
| 650 | } |
| 651 | case AbstractColumn::ColumnMode::DateTime: |
| 652 | case AbstractColumn::ColumnMode::Day: |
| 653 | case AbstractColumn::ColumnMode::Month: |
| 654 | case AbstractColumn::ColumnMode::Text: |
| 655 | break; |
| 656 | } |
| 657 | m_yColumnBaseline->setValues(baselineData); |
nothing calls this directly
no test coverage detected