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