--- /dev/null
+#include "glatitude.h"
+
+GoogleLatitude::GoogleLatitude(QObject *parent) : QObject(parent) {
+ user = "";
+ pass = "";
+ latitude = 0.;
+ longitude = 0.;
+ accuracy = 0.;
+
+ worker = new QNetworkAccessManager();
+ connect(worker, SIGNAL(finished(QNetworkReply *)), this, SLOT(finishedreply(QNetworkReply *)));
+
+ urllogin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview");
+ urldologin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLoginAuth?service=friendview");
+ urlupdate = QUrl::fromEncoded("http://maps.google.com/glm/mmap/mwmfr?hl=en");
+ urlloc = QUrl::fromEncoded("http://www.google.com/loc/json");
+}
+
+void GoogleLatitude::login(QString u, QString p) {
+ if ( !u.contains('@') ) u.append("@gmail.com");
+ user = u;
+ pass = p;
+}
+
+void GoogleLatitude::set(double la, double lo, double ac) {
+ latitude = la;
+ longitude = lo;
+ accuracy = ac;
+ worker->get(QNetworkRequest(urllogin));
+}
+
+void GoogleLatitude::get() {
+ QByteArray postloc = QByteArray("{version:\"1.1.0\"}");
+ worker->post(QNetworkRequest(urlloc),postloc);
+}
+
+void GoogleLatitude::finishedreply(QNetworkReply *r) {
+ if ( r->url() == urllogin ) {
+ QString aidis = r->readAll();
+ QRegExp regexp ("type=\"hidden\".*name=\"GALX\".*value=\"(.*)\"");
+ regexp.setMinimal(1);
+ regexp.indexIn(aidis, 1);
+ QString googleGALX = regexp.capturedTexts().last();
+
+ QByteArray datalogin;
+ datalogin += "&service=friendview";
+ datalogin += "&GALX=" + googleGALX;
+ datalogin += "&Email=" + user;
+ datalogin += "&Passwd=" + pass;
+ worker->post(QNetworkRequest(urldologin), datalogin);
+ } else if ( r->url() == urldologin ) {
+ QByteArray datagps;
+ datagps += "t=ul";
+ datagps += "&lat=" + QString::number(latitude);
+ datagps += "&lng=" + QString::number(longitude);
+ datagps += "&accuracy=" + QString::number(accuracy);
+
+ QNetworkRequest request(urlupdate);
+ request.setRawHeader("X-ManualHeader", QString("true").toAscii() );
+ worker->post(request, datagps);
+ } else if ( r->url() == urlupdate ) {
+ QString output = r->readAll();
+ QRegExp regexp ("Authentication required");
+ if (regexp.indexIn(output, 1) != -1) {
+ emit setERROR();
+ } else {
+ emit setOK();
+ }
+ } else if ( r->url() == urlloc ) {
+ QString loc = r->readAll();
+ QRegExp regexp ("\\{\"latitude\":(.*),\"longitude\":(.*),\"accuracy\":(.*)\\}");
+ regexp.setMinimal(1);
+ regexp.indexIn(loc, 1);
+ latitude = regexp.capturedTexts().at(1).toDouble();
+ longitude = regexp.capturedTexts().at(2).toDouble();
+ accuracy = regexp.capturedTexts().at(3).toDouble();
+ emit getOK();
+ } else {
+ qDebug() << "Error";
+ qDebug() << "url:" << r->url();
+ qDebug() << r->rawHeaderList();
+ qDebug() << r->readAll();
+ }
+}