File source plugin: added total record time in UI

pull/6/head
f4exb 2016-02-25 02:30:50 +01:00
rodzic 58d82139ab
commit d5ddd5c9a1
5 zmienionych plików z 70 dodań i 10 usunięć

Wyświetl plik

@ -38,6 +38,7 @@ FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, QWidget* parent) :
m_fileName("..."),
m_sampleRate(0),
m_centerFrequency(0),
m_recordLength(0),
m_startingTimeStamp(0),
m_samplesCount(0),
m_tickCount(0)
@ -124,6 +125,7 @@ bool FileSourceGui::handleMessage(const Message& message)
m_sampleRate = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getSampleRate();
m_centerFrequency = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getCenterFrequency();
m_startingTimeStamp = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getStartingTimeStamp();
m_recordLength = ((FileSourceInput::MsgReportFileSourceStreamData&)message).getRecordLength();
updateWithStreamData();
return true;
}
@ -205,6 +207,10 @@ void FileSourceGui::updateWithStreamData()
QString s = QString::number(m_sampleRate/1000.0, 'f', 0);
ui->sampleRateText->setText(tr("%1k").arg(s));
ui->play->setEnabled(m_acquisition);
QTime recordLength(0, 0, 0, 0);
recordLength = recordLength.addSecs(m_recordLength);
QString s_time = recordLength.toString("hh:mm:ss");
ui->recordLengthText->setText(s_time);
updateWithStreamTime(); // TODO: remove when time data is implemented
}

Wyświetl plik

@ -58,6 +58,7 @@ private:
QString m_fileName;
int m_sampleRate;
quint64 m_centerFrequency;
quint32 m_recordLength;
std::time_t m_startingTimeStamp;
int m_samplesCount;
std::size_t m_tickCount;

Wyświetl plik

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>266</width>
<width>289</width>
<height>133</height>
</rect>
</property>
@ -303,7 +303,7 @@
</spacer>
</item>
<item>
<widget class="Line" name="relTimeLine">
<widget class="Line" name="linePlay1">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@ -331,6 +331,35 @@
</property>
</widget>
</item>
<item>
<widget class="Line" name="linePlay2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="recordLengthText">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Total record time</string>
</property>
<property name="text">
<string>00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>

Wyświetl plik

@ -78,6 +78,7 @@ FileSourceInput::FileSourceInput(const QTimer& masterTimer) :
m_fileName("..."),
m_sampleRate(0),
m_centerFrequency(0),
m_recordLength(0),
m_startingTimeStamp(0),
m_masterTimer(masterTimer)
{
@ -90,15 +91,15 @@ FileSourceInput::~FileSourceInput()
void FileSourceInput::openFileStream()
{
qDebug() << "FileSourceInput::openFileStream: " << m_fileName.toStdString().c_str();
//stopInput();
if (m_ifstream.is_open()) {
m_ifstream.close();
}
m_ifstream.open(m_fileName.toStdString().c_str(), std::ios::binary);
m_ifstream.open(m_fileName.toStdString().c_str(), std::ios::binary | std::ios::ate);
quint64 fileSize = m_ifstream.tellg();
m_ifstream.seekg(0,std::ios_base::beg);
FileSink::Header header;
FileSink::readHeader(m_ifstream, header);
@ -106,7 +107,20 @@ void FileSourceInput::openFileStream()
m_centerFrequency = header.centerFrequency;
m_startingTimeStamp = header.startTimeStamp;
MsgReportFileSourceStreamData *report = MsgReportFileSourceStreamData::create(m_sampleRate, m_centerFrequency, m_startingTimeStamp); // file stream data
if (fileSize > sizeof(FileSink::Header)) {
m_recordLength = (fileSize - sizeof(FileSink::Header)) / (4 * m_sampleRate);
} else {
m_recordLength = 0;
}
qDebug() << "FileSourceInput::openFileStream: " << m_fileName.toStdString().c_str()
<< " fileSize: " << fileSize << "bytes"
<< " length: " << m_recordLength << " seconds";
MsgReportFileSourceStreamData *report = MsgReportFileSourceStreamData::create(m_sampleRate,
m_centerFrequency,
m_startingTimeStamp,
m_recordLength); // file stream data
getOutputMessageQueueToGUI()->push(report);
}

Wyświetl plik

@ -141,22 +141,31 @@ public:
int getSampleRate() const { return m_sampleRate; }
quint64 getCenterFrequency() const { return m_centerFrequency; }
std::time_t getStartingTimeStamp() const { return m_startingTimeStamp; }
quint32 getRecordLength() const { return m_recordLength; }
static MsgReportFileSourceStreamData* create(int sampleRate, quint64 centerFrequency, std::time_t startingTimeStamp)
static MsgReportFileSourceStreamData* create(int sampleRate,
quint64 centerFrequency,
std::time_t startingTimeStamp,
quint32 recordLength)
{
return new MsgReportFileSourceStreamData(sampleRate, centerFrequency, startingTimeStamp);
return new MsgReportFileSourceStreamData(sampleRate, centerFrequency, startingTimeStamp, recordLength);
}
protected:
int m_sampleRate;
quint64 m_centerFrequency;
std::time_t m_startingTimeStamp;
quint32 m_recordLength;
MsgReportFileSourceStreamData(int sampleRate, quint64 centerFrequency, std::time_t startingTimeStamp) :
MsgReportFileSourceStreamData(int sampleRate,
quint64 centerFrequency,
std::time_t startingTimeStamp,
quint32 recordLength) :
Message(),
m_sampleRate(sampleRate),
m_centerFrequency(centerFrequency),
m_startingTimeStamp(startingTimeStamp)
m_startingTimeStamp(startingTimeStamp),
m_recordLength(recordLength)
{ }
};
@ -203,6 +212,7 @@ private:
QString m_fileName;
int m_sampleRate;
quint64 m_centerFrequency;
quint32 m_recordLength; //!< record length in seconds computed from file size
std::time_t m_startingTimeStamp;
const QTimer& m_masterTimer;