* @brief Appends FFT window-size, sampling rate, and min/max range rows. */
| 3706 | * @brief Appends FFT window-size, sampling rate, and min/max range rows. |
| 3707 | */ |
| 3708 | void DataModel::ProjectEditor::buildFftRangeRows(CustomModel* model, |
| 3709 | const DataModel::Dataset& dataset) |
| 3710 | { |
| 3711 | const bool fftSettingsEditable = dataset.fft || dataset.waterfall; |
| 3712 | |
| 3713 | const auto windowSize = QString::number(dataset.fftSamples); |
| 3714 | int windowIndex = m_fftSamples.indexOf(windowSize); |
| 3715 | if (windowIndex < 0) |
| 3716 | windowIndex = 7; |
| 3717 | |
| 3718 | auto* fftWindow = new QStandardItem(); |
| 3719 | fftWindow->setEditable(fftSettingsEditable); |
| 3720 | fftWindow->setData(ComboBox, WidgetType); |
| 3721 | fftWindow->setData(m_fftSamples, ComboBoxData); |
| 3722 | fftWindow->setData(windowIndex, EditableValue); |
| 3723 | fftWindow->setData(fftWindow->isEditable(), Active); |
| 3724 | fftWindow->setData(kDatasetView_FFT_Samples, ParameterType); |
| 3725 | fftWindow->setData(tr("FFT Window Size"), ParameterName); |
| 3726 | fftWindow->setData(tr("Number of samples used for each FFT calculation window"), |
| 3727 | ParameterDescription); |
| 3728 | model->appendRow(fftWindow); |
| 3729 | |
| 3730 | auto* fftRate = new QStandardItem(); |
| 3731 | fftRate->setEditable(fftSettingsEditable); |
| 3732 | fftRate->setData(IntField, WidgetType); |
| 3733 | fftRate->setData(100, PlaceholderValue); |
| 3734 | fftRate->setData(fftRate->isEditable(), Active); |
| 3735 | fftRate->setData(dataset.fftSamplingRate, EditableValue); |
| 3736 | fftRate->setData(kDatasetView_FFT_SamplingRate, ParameterType); |
| 3737 | fftRate->setData(tr("FFT Sampling Rate (Hz, required)"), ParameterName); |
| 3738 | fftRate->setData(tr("Sampling frequency used for FFT (in Hz)"), ParameterDescription); |
| 3739 | model->appendRow(fftRate); |
| 3740 | |
| 3741 | auto* fftMin = new QStandardItem(); |
| 3742 | fftMin->setEditable(fftSettingsEditable); |
| 3743 | fftMin->setData(0, PlaceholderValue); |
| 3744 | fftMin->setData(FloatField, WidgetType); |
| 3745 | fftMin->setData(fftMin->isEditable(), Active); |
| 3746 | fftMin->setData(dataset.fftMin, EditableValue); |
| 3747 | fftMin->setData(kDatasetView_FFTMin, ParameterType); |
| 3748 | fftMin->setData(tr("Minimum Value (optional)"), ParameterName); |
| 3749 | fftMin->setData(tr("Lower bound for data normalization; falls back to the dataset value " |
| 3750 | "range when left unset"), |
| 3751 | ParameterDescription); |
| 3752 | model->appendRow(fftMin); |
| 3753 | |
| 3754 | auto* fftMax = new QStandardItem(); |
| 3755 | fftMax->setEditable(fftSettingsEditable); |
| 3756 | fftMax->setData(0, PlaceholderValue); |
| 3757 | fftMax->setData(FloatField, WidgetType); |
| 3758 | fftMax->setData(fftMax->isEditable(), Active); |
| 3759 | fftMax->setData(dataset.fftMax, EditableValue); |
| 3760 | fftMax->setData(kDatasetView_FFTMax, ParameterType); |
| 3761 | fftMax->setData(tr("Maximum Value (optional)"), ParameterName); |
| 3762 | fftMax->setData(tr("Upper bound for data normalization; falls back to the dataset value " |
| 3763 | "range when left unset"), |
| 3764 | ParameterDescription); |
| 3765 | model->appendRow(fftMax); |