1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-10 17:58:36 -04:00

File Input: acceleration and loop handling phase 1

This commit is contained in:
f4exb
2018-10-14 01:16:39 +02:00
parent 1674ab0e29
commit bb1e3f3933
9 changed files with 255 additions and 42 deletions
@@ -51,7 +51,8 @@ FileSourceGui::FileSourceGui(DeviceUISet *deviceUISet, QWidget* parent) :
m_samplesCount(0),
m_tickCount(0),
m_enableNavTime(false),
m_lastEngineState(DSPDeviceSourceEngine::StNotStarted)
m_lastEngineState(DSPDeviceSourceEngine::StNotStarted),
m_accelerationMaxScale(1)
{
ui->setupUi(this);
ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
@@ -64,8 +65,10 @@ FileSourceGui::FileSourceGui(DeviceUISet *deviceUISet, QWidget* parent) :
m_statusTimer.start(500);
displaySettings();
setAccelerationCombo();
ui->navTimeSlider->setEnabled(false);
ui->acceleration->setEnabled(false);
ui->playLoop->setChecked(true); // FIXME: always play in a loop
ui->playLoop->setEnabled(false);
@@ -279,6 +282,7 @@ void FileSourceGui::on_play_toggled(bool checked)
FileSourceInput::MsgConfigureFileSourceWork* message = FileSourceInput::MsgConfigureFileSourceWork::create(checked);
m_sampleSource->getInputMessageQueue()->push(message);
ui->navTimeSlider->setEnabled(!checked);
ui->acceleration->setEnabled(!checked);
m_enableNavTime = !checked;
}
@@ -305,6 +309,13 @@ void FileSourceGui::on_showFileDialog_clicked(bool checked __attribute__((unused
}
}
void FileSourceGui::on_acceleration_currentIndexChanged(int index)
{
m_settings.m_accelerationFactor = FileSourceSettings::getAccelerationValue(index);
FileSourceInput::MsgConfigureFileSource *message = FileSourceInput::MsgConfigureFileSource::create(m_settings);
m_sampleSource->getInputMessageQueue()->push(message);
}
void FileSourceGui::configureFileName()
{
qDebug() << "FileSourceGui::configureFileName: " << m_fileName.toStdString().c_str();
@@ -369,3 +380,42 @@ void FileSourceGui::tick()
m_sampleSource->getInputMessageQueue()->push(message);
}
}
void FileSourceGui::setAccelerationCombo()
{
ui->acceleration->blockSignals(true);
ui->acceleration->clear();
ui->acceleration->addItem(QString("1"));
for (unsigned int i = 0; i <= m_accelerationMaxScale; i++)
{
QString s;
int m = pow(10.0, i);
int x = 2*m;
setNumberStr(x, s);
ui->acceleration->addItem(s);
x = 5*m;
setNumberStr(x, s);
ui->acceleration->addItem(s);
x = 10*m;
setNumberStr(x, s);
ui->acceleration->addItem(s);
}
ui->acceleration->blockSignals(false);
}
void FileSourceGui::setNumberStr(int n, QString& s)
{
if (n < 1000) {
s = tr("%1").arg(n);
} else if (n < 100000) {
s = tr("%1k").arg(n/1000);
} else if (n < 1000000) {
s = tr("%1e5").arg(n/100000);
} else if (n < 1000000000) {
s = tr("%1M").arg(n/1000000);
} else {
s = tr("%1G").arg(n/1000000000);
}
}