Small change to text element.
[jspeed] / src / poiascreader.cpp
1 /*
2  * This file is part of jSpeed.
3  *
4  * jSpeed is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * jSpeed is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with jSpeed.  If not, see <http://www.gnu.org/licenses/>.
16  *
17  */
18
19 #include <QtCore/QFile>
20 #include <QtCore/QString>
21 #include <QtCore/QByteArray>
22 #include <QtCore/QStringList>
23 #include <QtCore/QDebug>
24 #include <QtCore/QRegExp>
25 #include "poiascreader.h"
26
27 PoiAscReader::PoiAscReader(QString filename): PoiReader(), filename_(filename)
28 {
29 }
30
31 bool PoiAscReader::read(QList<Poi>& pois)
32 {
33     pois.clear();
34
35     QFile file(filename_);
36
37     if(!file.open(QIODevice::ReadOnly))
38     {
39         setError("Unable to open file (check permissions)");
40         return false;
41     }
42
43     while(!file.atEnd())
44     {
45         QString data(file.readLine());
46         QStringList parts = data.split(",");
47
48         if(parts.size() < 3)
49         {
50             continue;
51         }
52
53         QString longitude = parts.at(0).trimmed();
54         QString latitude = parts.at(1).trimmed();
55
56         bool ok;
57
58         double doubleLatitude = latitude.toDouble(&ok);
59
60         if(!ok)
61         {
62             continue;
63         }
64
65         double doubleLongitude = longitude.toDouble(&ok);
66
67         if(!ok)
68         {
69             continue;
70         }
71
72         QString name = parts.at(2).trimmed();
73         name.remove('"');
74
75         Poi poi;
76         poi.latitude = doubleLatitude;
77         poi.longitude = doubleLongitude;
78         poi.name = name;
79
80         pois.push_back(poi);
81
82     }
83
84     if(pois.size() == 0)
85     {
86         setError("No valid poi data found from file");
87         return false;
88     }
89
90     return true;
91 }