#include <QtCore/QFile>
#include <QtCore/QString>
#include <QtCore/QByteArray>
+#include <QtCore/QStringList>
#include <QtCore/QDebug>
#include <QtCore/QRegExp>
#include "poiascreader.h"
bool PoiAscReader::read(QList<Poi>& pois)
{
+ pois.clear();
+
QFile file(filename_);
if(!file.open(QIODevice::ReadOnly))
return false;
}
- QString data = QString(file.readAll());
- static QRegExp matcher("([0-9]{1,3})\\.([0-9]+), ([0-9]{1,3})\\.([0-9]+), \"(.*)\"");
- matcher.setMinimal(true);
-
- int pos = 0;
-
- while((pos = matcher.indexIn(data, pos)) != -1)
+ while(!file.atEnd())
{
- pos += matcher.matchedLength();
+ QString data(file.readLine());
+ QStringList parts = data.split(",");
- Poi poi;
+ if(parts.size() < 3)
+ {
+ continue;
+ }
- bool ok;
+ QString longitude = parts.at(0).trimmed();
+ QString latitude = parts.at(1).trimmed();
- QString latitude = matcher.cap(3) + "." + matcher.cap(4);
- QString longitude = matcher.cap(1) + "." + matcher.cap(2);
+ bool ok;
double doubleLatitude = latitude.toDouble(&ok);
continue;
}
+ QString name = parts.at(2).trimmed();
+ name.remove('"');
+
+ Poi poi;
poi.latitude = doubleLatitude;
poi.longitude = doubleLongitude;
- poi.name = matcher.cap(5);
+ poi.name = name;
pois.push_back(poi);