7 #include <QNetworkAccessManager>
8 #include <QNetworkReply>
12 #include <QStringList>
14 #include <QXmlStreamReader>
20 q(new RoutePrivate(this)),
21 manager(new QNetworkAccessManager(this))
23 connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
32 void Route::getRoute()
34 qDebug() << "getting route from Ytv";
36 QUrl fullUrl(Ytv::Url);
39 a << q->fromLocation()->longitude() << q->fromLocation()->latitude();
41 b << q->toLocation()->longitude() << q->toLocation()->latitude();
43 fullUrl.addQueryItem("user", Ytv::Username);
44 fullUrl.addQueryItem("pass", Ytv::Password);
45 fullUrl.addQueryItem("request", Ytv::Route);
46 fullUrl.addQueryItem("format", Ytv::Xml);
47 fullUrl.addQueryItem("language", Ytv::English);
48 fullUrl.addQueryItem("epsg_in", Ytv::WGS84);
49 fullUrl.addQueryItem("epsg_out", Ytv::WGS84);
50 fullUrl.addQueryItem("from", a.join(","));
51 fullUrl.addQueryItem("to", b.join(","));
52 fullUrl.addQueryItem("show", QString::number(Ytv::ShowFiveResults));
53 fullUrl.addQueryItem("walkspeed", QString::number(Ytv::WalkSpeedFast));
54 fullUrl.addQueryItem("optimize", QString::number(Ytv::OptimizeLeastWalking));
56 manager->get(QNetworkRequest(fullUrl));
57 qDebug() << "getting url" << fullUrl.toEncoded();
58 qDebug() << "waiting for reply from Ytv";
62 void Route::replyFinished(QNetworkReply * reply)
64 qDebug() << "have reply from Ytv";
65 QList<RouteData> routeData = q->parseReply(reply->readAll());
67 emit(routeReady(routeData));
71 void Route::setFromLocation(Location *location)
73 qDebug() << "setting new From location (" << location->label() << ")";
75 if (location && location->isValid()) {
76 qDebug() << "From is valid";
77 q->setFromLocation(location);
79 qDebug() << "To is also valid";
82 qDebug() << "To not valid - waiting";
85 qDebug() << "ERROR:From is not valid";
86 qDebug() << "location=" << location;
88 qDebug() << "location->isValid()=" << location->isValid();
93 Location *Route::fromLocation() const
95 return q->fromLocation();
98 void Route::setToLocation(Location *location)
100 qDebug() << "setting new To location (" << location->label() << ")";
102 if (location && location->isValid()) {
103 qDebug() << "To is valid";
104 q->setToLocation(location);
105 if (q->fromValid()) {
106 qDebug() << "From is also valid";
109 qDebug() << "From not valid - waiting";
112 qDebug() << "ERROR:From is not valid";
113 qDebug() << "location=" << location;
115 qDebug() << "location->isValid()=" << location->isValid();
120 Location *Route::toLocation() const
122 return q->toLocation();