mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -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()));
 | 
						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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user