X-Git-Url: http://git.maemo.org/git/?p=googlelatitude;a=blobdiff_plain;f=src%2Fglatitude.cpp;h=be927e937743594b797914682e994982cb858c5b;hp=4627ac51c8d5d11ba05a788919b4464683cd4b38;hb=e98468d19d7c7f3b2e068e3bebcc5ff47dd61d9b;hpb=e54b8298b5782a42c123e21578f75df74415cdae diff --git a/src/glatitude.cpp b/src/glatitude.cpp index 4627ac5..be927e9 100644 --- a/src/glatitude.cpp +++ b/src/glatitude.cpp @@ -13,7 +13,9 @@ GoogleLatitude::GoogleLatitude(QObject *parent) : QObject(parent) { 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"); + + lastupdate = 0; + login_error = false; } void GoogleLatitude::login(QString u, QString p) { @@ -26,16 +28,18 @@ 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); + qDebug() << "GoogleLatitude: set la = " << la << " lo = " << lo << " ac = " << ac; + qDebug() << "GoogleLatitude: set lastupdate = " << lastupdate << " current = " << QDateTime::currentMSecsSinceEpoch(); + if (login_error) return; + if (la*lo == 0) return; + if ( QDateTime::currentMSecsSinceEpoch() < lastupdate + 120*1000 ) return; + worker->get(QNetworkRequest(urllogin)); } void GoogleLatitude::finishedreply(QNetworkReply *r) { if ( r->url() == urllogin ) { + qDebug() << "GoogleLatitude: login"; QString aidis = r->readAll(); QRegExp regexp ("type=\"hidden\".*name=\"GALX\".*value=\"(.*)\""); regexp.setMinimal(1); @@ -49,6 +53,7 @@ void GoogleLatitude::finishedreply(QNetworkReply *r) { datalogin += "&Passwd=" + pass; worker->post(QNetworkRequest(urldologin), datalogin); } else if ( r->url() == urldologin ) { + qDebug() << "GoogleLatitude: dologin"; QByteArray datagps; datagps += "t=ul"; datagps += "&lat=" + QString::number(latitude); @@ -62,22 +67,16 @@ void GoogleLatitude::finishedreply(QNetworkReply *r) { QString output = r->readAll(); QRegExp regexp ("Authentication required"); if (regexp.indexIn(output, 1) != -1) { - emit setERROR(); + qDebug() << "GoogleLatitude: update error"; + login_error = true; + emit ERROR(); } else { - emit setOK(); + lastupdate = QDateTime::currentMSecsSinceEpoch(); + qDebug() << "GoogleLatitude: update ok " << " lastupdate = " << lastupdate; + emit OK(); } - } 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() << "GoogleLatitude Error url:" << r->url(); qDebug() << r->rawHeaderList(); qDebug() << r->readAll(); }