mirror of https://github.com/f4exb/sdrangel.git
File Input: loop handling phase 2
This commit is contained in:
parent
bb1e3f3933
commit
2c87e67057
|
@ -64,13 +64,11 @@ FileSourceGui::FileSourceGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
||||||
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
||||||
m_statusTimer.start(500);
|
m_statusTimer.start(500);
|
||||||
|
|
||||||
displaySettings();
|
|
||||||
setAccelerationCombo();
|
setAccelerationCombo();
|
||||||
|
displaySettings();
|
||||||
|
|
||||||
ui->navTimeSlider->setEnabled(false);
|
ui->navTimeSlider->setEnabled(false);
|
||||||
ui->acceleration->setEnabled(false);
|
ui->acceleration->setEnabled(false);
|
||||||
ui->playLoop->setChecked(true); // FIXME: always play in a loop
|
|
||||||
ui->playLoop->setEnabled(false);
|
|
||||||
|
|
||||||
m_sampleSource = m_deviceUISet->m_deviceSourceAPI->getSampleSource();
|
m_sampleSource = m_deviceUISet->m_deviceSourceAPI->getSampleSource();
|
||||||
|
|
||||||
|
@ -202,6 +200,17 @@ bool FileSourceGui::handleMessage(const Message& message)
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (FileSourceInput::MsgPlayPause::match(message))
|
||||||
|
{
|
||||||
|
FileSourceInput::MsgPlayPause& notif = (FileSourceInput::MsgPlayPause&) message;
|
||||||
|
bool checked = notif.getPlayPause();
|
||||||
|
ui->play->setChecked(checked);
|
||||||
|
ui->navTimeSlider->setEnabled(!checked);
|
||||||
|
ui->acceleration->setEnabled(!checked);
|
||||||
|
m_enableNavTime = !checked;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if (FileSourceInput::MsgReportHeaderCRC::match(message))
|
else if (FileSourceInput::MsgReportHeaderCRC::match(message))
|
||||||
{
|
{
|
||||||
FileSourceInput::MsgReportHeaderCRC& notif = (FileSourceInput::MsgReportHeaderCRC&) message;
|
FileSourceInput::MsgReportHeaderCRC& notif = (FileSourceInput::MsgReportHeaderCRC&) message;
|
||||||
|
@ -228,15 +237,23 @@ void FileSourceGui::updateSampleRateAndFrequency()
|
||||||
|
|
||||||
void FileSourceGui::displaySettings()
|
void FileSourceGui::displaySettings()
|
||||||
{
|
{
|
||||||
|
ui->playLoop->blockSignals(true);
|
||||||
|
ui->acceleration->blockSignals(true);
|
||||||
|
ui->playLoop->setChecked(m_settings.m_loop);
|
||||||
|
ui->acceleration->setCurrentIndex(FileSourceSettings::getAccelerationIndex(m_settings.m_accelerationFactor));
|
||||||
|
ui->acceleration->blockSignals(false);
|
||||||
|
ui->playLoop->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSourceGui::sendSettings()
|
void FileSourceGui::sendSettings()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSourceGui::on_playLoop_toggled(bool checked __attribute__((unused)))
|
void FileSourceGui::on_playLoop_toggled(bool checked)
|
||||||
{
|
{
|
||||||
// TODO: do something about it!
|
m_settings.m_loop = checked;
|
||||||
|
FileSourceInput::MsgConfigureFileSource *message = FileSourceInput::MsgConfigureFileSource::create(m_settings);
|
||||||
|
m_sampleSource->getInputMessageQueue()->push(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSourceGui::on_startStop_toggled(bool checked)
|
void FileSourceGui::on_startStop_toggled(bool checked)
|
||||||
|
|
|
@ -40,6 +40,7 @@ MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceWork, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceSeek, Message)
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceSeek, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceStreamTiming, Message)
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceStreamTiming, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgStartStop, Message)
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgStartStop, Message)
|
||||||
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgPlayPause, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceAcquisition, Message)
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceAcquisition, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceStreamData, Message)
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceStreamData, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceStreamTiming, Message)
|
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceStreamTiming, Message)
|
||||||
|
@ -332,7 +333,8 @@ bool FileSourceInput::handleMessage(const Message& message)
|
||||||
|
|
||||||
if (m_fileSourceThread != 0)
|
if (m_fileSourceThread != 0)
|
||||||
{
|
{
|
||||||
if (getMessageQueueToGUI()) {
|
if (getMessageQueueToGUI())
|
||||||
|
{
|
||||||
report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
|
report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
|
||||||
getMessageQueueToGUI()->push(report);
|
getMessageQueueToGUI()->push(report);
|
||||||
}
|
}
|
||||||
|
@ -364,11 +366,25 @@ bool FileSourceInput::handleMessage(const Message& message)
|
||||||
qDebug() << "FileSourceInput::handleMessage: MsgReportEOF";
|
qDebug() << "FileSourceInput::handleMessage: MsgReportEOF";
|
||||||
m_fileSourceThread->stopWork();
|
m_fileSourceThread->stopWork();
|
||||||
|
|
||||||
|
if (getMessageQueueToGUI())
|
||||||
|
{
|
||||||
|
MsgReportFileSourceStreamTiming *report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
|
||||||
|
getMessageQueueToGUI()->push(report);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_settings.m_loop)
|
if (m_settings.m_loop)
|
||||||
{
|
{
|
||||||
seekFileStream(0);
|
seekFileStream(0);
|
||||||
m_fileSourceThread->startWork();
|
m_fileSourceThread->startWork();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (getMessageQueueToGUI())
|
||||||
|
{
|
||||||
|
MsgPlayPause *report = MsgPlayPause::create(false);
|
||||||
|
getMessageQueueToGUI()->push(report);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,6 +168,25 @@ public:
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MsgPlayPause : public Message {
|
||||||
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool getPlayPause() const { return m_playPause; }
|
||||||
|
|
||||||
|
static MsgPlayPause* create(bool playPause) {
|
||||||
|
return new MsgPlayPause(playPause);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool m_playPause;
|
||||||
|
|
||||||
|
MsgPlayPause(bool playPause) :
|
||||||
|
Message(),
|
||||||
|
m_playPause(playPause)
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
class MsgReportFileSourceStreamData : public Message {
|
class MsgReportFileSourceStreamData : public Message {
|
||||||
MESSAGE_CLASS_DECLARATION
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue