mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-02-03 09:44:01 -05:00
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()));
|
||||
m_statusTimer.start(500);
|
||||
|
||||
displaySettings();
|
||||
setAccelerationCombo();
|
||||
displaySettings();
|
||||
|
||||
ui->navTimeSlider->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();
|
||||
|
||||
@ -202,6 +200,17 @@ bool FileSourceGui::handleMessage(const Message& message)
|
||||
|
||||
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))
|
||||
{
|
||||
FileSourceInput::MsgReportHeaderCRC& notif = (FileSourceInput::MsgReportHeaderCRC&) message;
|
||||
@ -228,15 +237,23 @@ void FileSourceGui::updateSampleRateAndFrequency()
|
||||
|
||||
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::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)
|
||||
|
@ -40,6 +40,7 @@ MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceWork, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceSeek, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgConfigureFileSourceStreamTiming, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgStartStop, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgPlayPause, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceAcquisition, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceStreamData, Message)
|
||||
MESSAGE_CLASS_DEFINITION(FileSourceInput::MsgReportFileSourceStreamTiming, Message)
|
||||
@ -332,7 +333,8 @@ bool FileSourceInput::handleMessage(const Message& message)
|
||||
|
||||
if (m_fileSourceThread != 0)
|
||||
{
|
||||
if (getMessageQueueToGUI()) {
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
|
||||
getMessageQueueToGUI()->push(report);
|
||||
}
|
||||
@ -364,11 +366,25 @@ bool FileSourceInput::handleMessage(const Message& message)
|
||||
qDebug() << "FileSourceInput::handleMessage: MsgReportEOF";
|
||||
m_fileSourceThread->stopWork();
|
||||
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
MsgReportFileSourceStreamTiming *report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
|
||||
getMessageQueueToGUI()->push(report);
|
||||
}
|
||||
|
||||
if (m_settings.m_loop)
|
||||
{
|
||||
seekFileStream(0);
|
||||
m_fileSourceThread->startWork();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
MsgPlayPause *report = MsgPlayPause::create(false);
|
||||
getMessageQueueToGUI()->push(report);
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user