EventTypes::EventFromFileList VMGParser::ParseFile(QFile &eventFile, const QList<uint> &recordsToReturn)
{
- // VMG files are stored in Little-Endian UTF16, with no BOM.
- QTextStream eventStream(&eventFile);
- eventStream.setCodec("UTF-16LE");
-
- // Parse the event
- EventTypes::SMS *event(new EventTypes::SMS(CurrentSettings()));
- QString lineData = eventStream.readLine();
- EventParsers::VMGEntities::iReader* reader = EventParsers::VMGEntities::Factory::Instantiate(CurrentSettings(), lineData, NULL);
- bool valid(NULL != reader && reader->Read(QString(""), eventStream, *event));
- delete reader;
- if (!valid)
- throw std::runtime_error(QString("Unsupported format. Unable to open: %1").arg(eventFile.fileName()).toStdString());
-
- qDebug() << "\nParsed event:";
- qDebug() << event;
-
- // VMGs only support single events per file, so just create the list
EventTypes::EventFromFileList retList;
- retList.append(EventTypes::EventFromFile(QSharedPointer<EventTypes::iEvent>(event), 0));
+
+ // VMGs only support single events per file
+ if(recordsToReturn.count() == 0 || recordsToReturn.contains(0))
+ {
+ // VMG files are stored in Little-Endian UTF16, with no BOM.
+ QTextStream eventStream(&eventFile);
+ eventStream.setCodec("UTF-16LE");
+
+ // Parse the event
+ EventTypes::SMS *event(new EventTypes::SMS(CurrentSettings()));
+ QString lineData = eventStream.readLine();
+ EventParsers::VMGEntities::iReader* reader = EventParsers::VMGEntities::Factory::Instantiate(CurrentSettings(), lineData, NULL);
+ bool valid(NULL != reader && reader->Read(QString(""), eventStream, *event));
+ delete reader;
+ if (!valid)
+ throw std::runtime_error(QString("Unsupported format. Unable to open: %1").arg(eventFile.fileName()).toStdString());
+
+ qDebug() << "\nParsed event:";
+ qDebug() << event;
+
+ retList.append(EventTypes::EventFromFile(QSharedPointer<EventTypes::iEvent>(event), 0));
+ }
+
return retList;
}