3 GoogleLatitude::GoogleLatitude(QObject *parent) : QObject(parent) {
11 worker = new QNetworkAccessManager();
12 connect(worker, SIGNAL(finished(QNetworkReply *)), this, SLOT(finishedreply(QNetworkReply *)));
14 urllogin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview");
15 urldologin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLoginAuth?service=friendview");
16 urlupdate = QUrl::fromEncoded("http://maps.google.com/glm/mmap/mwmfr?hl=en");
22 void GoogleLatitude::login(QString u, QString p) {
23 if ( !u.contains('@') ) u.append("@gmail.com");
28 void GoogleLatitude::freq(int f) {
32 void GoogleLatitude::reset() {
35 set(latitude, longitude, accuracy);
38 void GoogleLatitude::set(double la, double lo, double ac) {
41 accuracy = ac>100000? 100000 : ac;
43 qDebug() << "GoogleLatitude: set la" << la << "lo" << lo << "ac" << ac << "current" << QDateTime::currentDateTime().toUTC().toTime_t();
44 if (login_error) return;
45 if (la*lo == 0) return;
46 if (!accuracy) return;
47 if ( QDateTime::currentDateTime().toUTC().toTime_t() < lastupdate + interval ) return;
49 #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
50 QNetworkConfigurationManager mgr;
51 if (!mgr.isOnline()) {
52 qDebug() << "GoogleLatitude: offline";
57 worker->get(QNetworkRequest(urllogin));
60 void GoogleLatitude::finishedreply(QNetworkReply *r) {
61 if ( r->url() == urllogin ) {
62 qDebug() << "GoogleLatitude: login";
63 QString aidis = r->readAll();
64 QRegExp regexp ("type=\"hidden\".*name=\"GALX\".*value=\"(.*)\"");
66 regexp.indexIn(aidis, 1);
67 QString googleGALX = regexp.capturedTexts().last();
70 datalogin += "&service=friendview";
71 datalogin += "&GALX=" + googleGALX;
72 datalogin += "&Email=" + user;
73 datalogin += "&Passwd=" + pass;
74 worker->post(QNetworkRequest(urldologin), datalogin);
75 } else if ( r->url() == urldologin ) {
76 qDebug() << "GoogleLatitude: dologin";
79 datagps += "&lat=" + QString::number(latitude);
80 datagps += "&lng=" + QString::number(longitude);
81 datagps += "&accuracy=" + QString::number(accuracy);
83 QNetworkRequest request(urlupdate);
84 request.setRawHeader("X-ManualHeader", QString("true").toAscii() );
85 worker->post(request, datagps);
86 } else if ( r->url() == urlupdate ) {
87 QString output = r->readAll();
88 QRegExp regexp ("Authentication required");
89 if (regexp.indexIn(output, 1) != -1) {
90 qDebug() << "GoogleLatitude: update error auth";
94 lastupdate = QDateTime::currentDateTime().toUTC().toTime_t();
95 qDebug() << "GoogleLatitude: update ok" << "lastupdate" << lastupdate;
100 qDebug() << "GoogleLatitude Error url" << r->url();
101 qDebug() << r->rawHeaderList();
102 qDebug() << r->readAll();