/** Save FFT settings. */ void DockFft::saveSettings(QSettings *settings) { int intval; if (!settings) return; settings->beginGroup("fft"); intval = fftSize(); if (intval != DEFAULT_FFT_SIZE) settings->setValue("fft_size", intval); else settings->remove("fft_size"); intval = fftRate(); if (intval != DEFAULT_FFT_RATE) settings->setValue("fft_rate", fftRate()); else settings->remove("fft_rate"); if (ui->fftAvgSlider->value() != DEFAULT_FFT_AVG) settings->setValue("averaging", ui->fftAvgSlider->value()); else settings->remove("averaging"); if (ui->fftSplitSlider->value() != DEFAULT_FFT_SPLIT) settings->setValue("split", ui->fftSplitSlider->value()); else settings->remove("split"); QColor fftColor = ui->colorPicker->currentColor(); if (fftColor != QColor(0xFF,0xFF,0xFF,0xFF)) settings->setValue("pandapter_color", fftColor); else settings->remove("pandapter_color"); if (ui->fillButton->isChecked()) settings->setValue("pandapter_fill", true); else settings->remove("pandapter_fill"); if (ui->reflevelSlider->value() != DEFAULT_FFT_REF_LEVEL) settings->setValue("reference_level", ui->reflevelSlider->value()); else settings->remove("reference_level"); if (ui->rangeSlider->value() != DEFAULT_FFT_RANGE) settings->setValue("fft_range", ui->rangeSlider->value()); else settings->remove("fft_range"); settings->endGroup(); }
/*! \brief FFT rate changed. */ void DockFft::on_fftRateComboBox_currentIndexChanged(const QString & text) { int fps = fftRate(); Q_UNUSED(text); emit fftRateChanged(fps); }
/** Update RBW and FFT overlab labels */ void DockFft::updateInfoLabels(void) { float rate; float size; float rbw; float ovr; float sps; if (m_sample_rate == 0.f) return; rate = fftRate(); size = fftSize(); rbw = m_sample_rate / size; if (rbw < 1.e3f) ui->fftRbwLabel->setText(QString("RBW: %1 Hz").arg(rbw, 0, 'f', 1)); else if (rbw < 1.e6f) ui->fftRbwLabel->setText(QString("RBW: %1 kHz").arg(1.e-3 * rbw, 0, 'f', 1)); else ui->fftRbwLabel->setText(QString("RBW: %1 MHz").arg(1.e-6 * rbw, 0, 'f', 1)); sps = size * rate; if (sps <= m_sample_rate) ovr = 0; else ovr = 100 * (sps / m_sample_rate - 1.f); ui->fftOvrLabel->setText(QString("Overlap: %1%").arg(ovr, 0, 'f', 0)); }
/*! \brief Select new FFT rate in the combo box. * \param rate The new rate. * \returns The actual FFT rate selected. */ int DockFft::setFftRate(int fft_rate) { int idx = -1; QString rate_str = QString("%1 fps").arg(fft_rate); qDebug() << __func__ << "to" << rate_str; idx = ui->fftRateComboBox->findText(rate_str, Qt::MatchExactly); if(idx != -1) ui->fftRateComboBox->setCurrentIndex(idx); return fftRate(); }