diff --git a/plugins/samplesink/filesink/filesinkgui.cpp b/plugins/samplesink/filesink/filesinkgui.cpp index 1cc9d225f..efa0e5aa7 100644 --- a/plugins/samplesink/filesink/filesinkgui.cpp +++ b/plugins/samplesink/filesink/filesinkgui.cpp @@ -49,15 +49,14 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) : m_lastEngineState((DSPDeviceSinkEngine::State)-1) { ui->setupUi(this); + ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); ui->centerFrequency->setValueRange(7, 0, pow(10,7)); - ui->fileNameText->setText(m_fileName); - ui->sampleRate->clear(); - for (int i = 0; i < FileSinkSampleRates::getNbRates(); i++) - { - ui->sampleRate->addItem(QString::number(FileSinkSampleRates::getRate(i))); - } + ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::ReverseGreenYellow)); + ui->sampleRate->setValueRange(7, 32000U, 9000000U); + + ui->fileNameText->setText(m_fileName); connect(&(m_deviceAPI->getMainWindow()->getMasterTimer()), SIGNAL(timeout()), this, SLOT(tick())); connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware())); @@ -195,8 +194,7 @@ void FileSinkGui::updateSampleRateAndFrequency() void FileSinkGui::displaySettings() { ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000); - unsigned int sampleRateIndex = FileSinkSampleRates::getRateIndex(m_settings.m_sampleRate); - ui->sampleRate->setCurrentIndex(sampleRateIndex); + ui->sampleRate->setValue(m_settings.m_sampleRate); } void FileSinkGui::sendSettings() @@ -249,10 +247,9 @@ void FileSinkGui::on_centerFrequency_changed(quint64 value) sendSettings(); } -void FileSinkGui::on_sampleRate_currentIndexChanged(int index) +void FileSinkGui::on_sampleRate_changed(quint64 value) { - int newrate = FileSinkSampleRates::getRate(index); - m_settings.m_sampleRate = newrate * 1000; + m_settings.m_sampleRate = value; sendSettings(); } @@ -338,38 +335,3 @@ void FileSinkGui::tick() m_deviceSampleSink->getInputMessageQueue()->push(message); } } - -const unsigned int FileSinkSampleRates::m_nb_rates = 17; -const unsigned int FileSinkSampleRates::m_rates[FileSinkSampleRates::m_nb_rates] = { - 32, 48, 64, 72, 128, 192, 256, 288, 300, 384, 512, 1000, 2000, 3000, 4000, 5000, 6000}; - -unsigned int FileSinkSampleRates::getRate(unsigned int rate_index) -{ - if (rate_index < m_nb_rates) - { - return m_rates[rate_index]; - } - else - { - return m_rates[0]; - } -} - -unsigned int FileSinkSampleRates::getRateIndex(unsigned int rate) -{ - for (unsigned int i=0; i < m_nb_rates; i++) - { - if (rate/1000 == m_rates[i]) - { - return i; - } - } - - return 0; -} - -unsigned int FileSinkSampleRates::getNbRates() -{ - return FileSinkSampleRates::m_nb_rates; -} - diff --git a/plugins/samplesink/filesink/filesinkgui.h b/plugins/samplesink/filesink/filesinkgui.h index 9c4e99abf..faa773e5e 100644 --- a/plugins/samplesink/filesink/filesinkgui.h +++ b/plugins/samplesink/filesink/filesinkgui.h @@ -78,22 +78,13 @@ private slots: void handleDSPMessages(); void handleSinkMessages(); void on_centerFrequency_changed(quint64 value); + void on_sampleRate_changed(quint64 value); void on_startStop_toggled(bool checked); void on_showFileDialog_clicked(bool checked); void on_interp_currentIndexChanged(int index); - void on_sampleRate_currentIndexChanged(int index); void updateHardware(); void updateStatus(); void tick(); }; -class FileSinkSampleRates { -public: - static unsigned int getRate(unsigned int rate_index); - static unsigned int getRateIndex(unsigned int rate); - static unsigned int getNbRates(); - static const unsigned int m_nb_rates; - static const unsigned int m_rates[]; -}; - #endif // INCLUDE_FILESINKGUI_H diff --git a/plugins/samplesink/filesink/filesinkgui.ui b/plugins/samplesink/filesink/filesinkgui.ui index 7a25a0622..75967eed6 100644 --- a/plugins/samplesink/filesink/filesinkgui.ui +++ b/plugins/samplesink/filesink/filesinkgui.ui @@ -6,7 +6,7 @@ 0 0 - 246 + 315 190 @@ -35,7 +35,16 @@ 3 - + + 2 + + + 2 + + + 2 + + 2 @@ -274,16 +283,31 @@ - - - Sample rate selection (kS/s) + + + + 0 + 0 + + + + + 32 + 16 + + + + + DejaVu Sans Mono + 12 + - kS/s + S/s @@ -365,6 +389,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/samplesink/filesink/filesinksettings.cpp b/plugins/samplesink/filesink/filesinksettings.cpp index bea9e7039..7974dc838 100644 --- a/plugins/samplesink/filesink/filesinksettings.cpp +++ b/plugins/samplesink/filesink/filesinksettings.cpp @@ -33,7 +33,7 @@ QByteArray FileSinkSettings::serialize() const { SimpleSerializer s(1); - s.writeS32(1, m_sampleRate); + s.writeU64(1, m_sampleRate); s.writeU32(2, m_log2Interp); return s.final(); @@ -52,7 +52,7 @@ bool FileSinkSettings::deserialize(const QByteArray& data) if (d.getVersion() == 1) { int intval; - d.readS32(1, &m_sampleRate, 48000); + d.readU64(1, &m_sampleRate, 48000); d.readU32(2, &m_log2Interp, 0); return true; } diff --git a/plugins/samplesink/filesink/filesinksettings.h b/plugins/samplesink/filesink/filesinksettings.h index 694dae79b..79ac500a3 100644 --- a/plugins/samplesink/filesink/filesinksettings.h +++ b/plugins/samplesink/filesink/filesinksettings.h @@ -21,7 +21,7 @@ struct FileSinkSettings { quint64 m_centerFrequency; - qint32 m_sampleRate; + quint64 m_sampleRate; quint32 m_log2Interp; FileSinkSettings();