00001 #include <QStringList>
00002 #include <QTimer>
00003
00004 #include "qsescan.h"
00005 #include "qseinputfile.h"
00006 #include "qsefilereader.h"
00007 #include "qsecontroller.h"
00008
00009 QseFileReader::QseFileReader(const QString& name, QObject *parent)
00010 : inherited(parent),
00011 m_Timer(NULL),
00012 m_Name(name),
00013 m_Data(NULL),
00014 m_Abort(false),
00015 m_Restart(false),
00016 m_Changed(false)
00017 {
00018 m_Data = new QseInputFile(m_Name);
00019
00020 m_Timer = new QTimer(this);
00021
00022 connect(m_Timer, SIGNAL(timeout()), this, SLOT(timerRoutine()));
00023
00024 m_Timer -> start(500);
00025 }
00026
00027 QseFileReader::~QseFileReader()
00028 {
00029 }
00030
00031 void QseFileReader::openFile(QString fileName)
00032 {
00033 m_FileNames.clear();
00034 m_FileNames.append(fileName);
00035 m_Restart = true;
00036 }
00037
00038 void QseFileReader::appendFile(QString fileName)
00039 {
00040 m_FileNames.append(fileName);
00041 }
00042
00043 void QseFileReader::timerRoutine()
00044 {
00045 forever {
00046 int atend = m_Data -> atEnd();
00047 int nfiles = m_FileNames.size();
00048
00049 if (m_Abort) return;
00050
00051 if (m_Restart || atend) {
00052 if (m_Restart) {
00053 m_Data -> clear();
00054 m_Restart = false;
00055 m_Changed = true;
00056 }
00057
00058 if (nfiles) {
00059 QString nextFile = m_FileNames.takeFirst();
00060
00061
00062 m_Data -> nextDataFile(nextFile);
00063 m_Changed = true;
00064 } else {
00065 if (m_Changed) {
00066 m_Data->emitOperationCompleted();
00067 m_Changed = false;
00068 }
00069 return;
00070 }
00071 } else if (!atend) {
00072 m_Data -> nextInputLine();
00073 m_Changed = true;
00074 }
00075 }
00076 }
00077
00078 QseInputFile* QseFileReader::inputFile()
00079 {
00080 return m_Data;
00081 }
00082