3 GoogleLatitude::GoogleLatitude(QObject *parent) : QObject(parent) {
10 worker = new QNetworkAccessManager();
11 connect(worker, SIGNAL(finished(QNetworkReply *)), this, SLOT(finishedreply(QNetworkReply *)));
13 urllogin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview");
14 urldologin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLoginAuth?service=friendview");
15 urlupdate = QUrl::fromEncoded("http://maps.google.com/glm/mmap/mwmfr?hl=en");
16 urlloc = QUrl::fromEncoded("http://www.google.com/loc/json");
19 void GoogleLatitude::login(QString u, QString p) {
20 if ( !u.contains('@') ) u.append("@gmail.com");
25 void GoogleLatitude::set(double la, double lo, double ac) {
30 if (la*lo == 0) return;
31 worker->get(QNetworkRequest(urllogin));
34 void GoogleLatitude::get() {
35 QByteArray postloc = QByteArray("{version:\"1.1.0\"}");
36 worker->post(QNetworkRequest(urlloc),postloc);
39 void GoogleLatitude::finishedreply(QNetworkReply *r) {
40 if ( r->url() == urllogin ) {
41 QString aidis = r->readAll();
42 QRegExp regexp ("type=\"hidden\".*name=\"GALX\".*value=\"(.*)\"");
44 regexp.indexIn(aidis, 1);
45 QString googleGALX = regexp.capturedTexts().last();
48 datalogin += "&service=friendview";
49 datalogin += "&GALX=" + googleGALX;
50 datalogin += "&Email=" + user;
51 datalogin += "&Passwd=" + pass;
52 worker->post(QNetworkRequest(urldologin), datalogin);
53 } else if ( r->url() == urldologin ) {
56 datagps += "&lat=" + QString::number(latitude);
57 datagps += "&lng=" + QString::number(longitude);
58 datagps += "&accuracy=" + QString::number(accuracy);
60 QNetworkRequest request(urlupdate);
61 request.setRawHeader("X-ManualHeader", QString("true").toAscii() );
62 worker->post(request, datagps);
63 } else if ( r->url() == urlupdate ) {
64 QString output = r->readAll();
65 QRegExp regexp ("Authentication required");
66 if (regexp.indexIn(output, 1) != -1) {
72 } else if ( r->url() == urlloc ) {
73 QString loc = r->readAll();
74 QRegExp regexp ("\\{\"latitude\":(.*),\"longitude\":(.*),\"accuracy\":(.*)\\}");
76 regexp.indexIn(loc, 1);
77 latitude = regexp.capturedTexts().at(1).toDouble();
78 longitude = regexp.capturedTexts().at(2).toDouble();
79 accuracy = regexp.capturedTexts().at(3).toDouble();
81 qDebug() << "lat = " + QString::number(latitude) + " lng = " + QString::number(longitude) + " acc = " + QString::number(accuracy);
84 qDebug() << "url:" << r->url();
85 qDebug() << r->rawHeaderList();
86 qDebug() << r->readAll();