* @brief Dispatches dataset form edits to ProjectModel, rebuilding only on tree-visible changes. */
| 4669 | * @brief Dispatches dataset form edits to ProjectModel, rebuilding only on tree-visible changes. |
| 4670 | */ |
| 4671 | void DataModel::ProjectEditor::onDatasetItemChanged(QStandardItem* item) |
| 4672 | { |
| 4673 | if (!item) |
| 4674 | return; |
| 4675 | |
| 4676 | const auto idInt = static_cast<DatasetItem>(item->data(ParameterType).toInt()); |
| 4677 | const auto value = item->data(EditableValue); |
| 4678 | |
| 4679 | if (idInt == kDatasetView_Widget) { |
| 4680 | const int widgetIdx = value.toInt(); |
| 4681 | if (widgetIdx < 0 || widgetIdx >= m_datasetWidgets.size()) |
| 4682 | return; |
| 4683 | } |
| 4684 | if (idInt == kDatasetView_Plot) { |
| 4685 | const int plotIdx = value.toInt(); |
| 4686 | if (plotIdx < 0 || plotIdx >= m_plotOptions.size()) |
| 4687 | return; |
| 4688 | } |
| 4689 | if (idInt == kDatasetView_FFT_Samples) { |
| 4690 | const int sampleIdx = value.toInt(); |
| 4691 | if (sampleIdx < 0 || sampleIdx >= m_fftSamples.size()) |
| 4692 | return; |
| 4693 | } |
| 4694 | |
| 4695 | onDatasetCommonItemChanged(item, m_selectedDataset); |
| 4696 | onDatasetWidgetItemChanged(item, m_selectedDataset); |
| 4697 | onDatasetRangeItemChanged(item, m_selectedDataset); |
| 4698 | onDatasetFftItemChanged(item, m_selectedDataset); |
| 4699 | onDatasetFlagItemChanged(item, m_selectedDataset); |
| 4700 | |
| 4701 | auto& pm = DataModel::ProjectModel::instance(); |
| 4702 | const auto groupId = m_selectedDataset.groupId; |
| 4703 | const auto datasetId = m_selectedDataset.datasetId; |
| 4704 | |
| 4705 | if (idInt == kDatasetView_Title) { |
| 4706 | const auto newTitle = m_selectedDataset.title; |
| 4707 | pm.updateDataset(groupId, datasetId, m_selectedDataset, false); |
| 4708 | |
| 4709 | for (auto it = m_datasetItems.begin(); it != m_datasetItems.end(); ++it) { |
| 4710 | if (it.value().groupId != groupId || it.value().datasetId != datasetId) |
| 4711 | continue; |
| 4712 | |
| 4713 | auto* treeItem = it.key(); |
| 4714 | treeItem->setText(newTitle); |
| 4715 | treeItem->setData(newTitle, TreeViewText); |
| 4716 | m_datasetItems[treeItem].title = newTitle; |
| 4717 | break; |
| 4718 | } |
| 4719 | |
| 4720 | Q_EMIT selectedTextChanged(); |
| 4721 | Q_EMIT datasetOptionsChanged(); |
| 4722 | Q_EMIT editableOptionsChanged(); |
| 4723 | return; |
| 4724 | } |
| 4725 | |
| 4726 | const bool rebuildTree = (idInt == kDatasetView_Index); |
| 4727 | pm.updateDataset(groupId, datasetId, m_selectedDataset, rebuildTree); |
| 4728 | if (!rebuildTree) |