Compatibilité avec les fichiers logs contenant les états des fonctions de détection.
104 lines
2.4 KiB
C++
104 lines
2.4 KiB
C++
#include "DirParserThread.h"
|
|
|
|
#include "GlobalDefine.h"
|
|
|
|
|
|
|
|
void CDirParserThread::ParseDirectories()
|
|
{
|
|
if(mRootDir.absolutePath().isEmpty() == true)
|
|
{
|
|
emit ParsingFinished(0);
|
|
return;
|
|
}
|
|
|
|
ParseDir(mRootDir,mKeepData);
|
|
|
|
emit ParsingFinished(1);
|
|
qDebug("Worker thread finished");
|
|
|
|
|
|
}
|
|
|
|
CDirParserThread::CDirParserThread()
|
|
{
|
|
mExecThread = true;
|
|
}
|
|
|
|
int CDirParserThread::ParseDir(QDir dir, bool KeepData)
|
|
{
|
|
mMutex.lockForRead();
|
|
bool Run = mExecThread;
|
|
mMutex.unlock();
|
|
if(Run == false)
|
|
return 0;
|
|
|
|
QStringList LogFilters;
|
|
QFileInfoList list;
|
|
// QString LogDataDir = mProgramHandle->GetLogDataPath();
|
|
LogFilters << mFilter;//"*.bin";
|
|
|
|
//Load files in base directory
|
|
QDir LogDir(dir);
|
|
LogDir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
|
|
LogDir.setNameFilters(LogFilters);
|
|
LogDir.setSorting(QDir::Name);
|
|
list = LogDir.entryInfoList();
|
|
if(list.size() != 0)
|
|
{
|
|
//Extract data for each passage
|
|
for(int i = 0; i < list.size(); i++)
|
|
{
|
|
//ParseNewLog(list.at(i).filePath(),KeepData);
|
|
unsigned int ret;
|
|
// CLogElement *NewLog = CTrainLogFileMgr::instance()->OpenTrainLog(list.at(i).filePath(),ret);
|
|
// if(ret == RET_OK)
|
|
if(mFilter == "*.bin")
|
|
{
|
|
CLogElement *NewLog = CTrainLogFileMgr::instance()->OpenTrainLog(list.at(i).filePath(),ret);
|
|
if(ret == RET_OK)
|
|
{
|
|
emit NewLogParsed(NewLog);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
emit NewLogParsed(list.at(i).filePath(),KeepData);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
emit EmptyDirParsed();
|
|
}
|
|
|
|
|
|
//Check for subdirectories
|
|
QDir SubDirectories(dir);
|
|
|
|
SubDirectories.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
|
|
|
|
QFileInfoList SubDirList = SubDirectories.entryInfoList();
|
|
for(int i = 0; i < SubDirList.size(); i++)
|
|
{
|
|
ParseDir(QDir(SubDirList.at(i).absoluteFilePath()), KeepData);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
void CDirParserThread::SetParsingInfo(QDir dir, QString Filter, bool KeepData)
|
|
{
|
|
//qDebug("DirParserThread parsing info: dir: %s, Filter: %s",dir.dirName().toAscii().data(),Filter.toAscii().data());
|
|
mRootDir = dir;
|
|
mKeepData = KeepData;
|
|
mFilter = Filter;
|
|
}
|
|
|
|
void CDirParserThread::KillThread()
|
|
{
|
|
mMutex.lockForWrite();
|
|
mExecThread = false;
|
|
mMutex.unlock();
|
|
}
|