3 GoogleLatitude::GoogleLatitude(QObject *parent) :
5 user(""), pass(""), login_error(false),
6 latitude(0), longitude(0), accuracy(0) {
8 worker = new QNetworkAccessManager();
9 connect(worker, SIGNAL(finished(QNetworkReply *)), this, SLOT(glat_reply(QNetworkReply *)));
11 urllogin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview");
12 urldologin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLoginAuth?service=friendview");
13 urlupdate = QUrl::fromEncoded("http://maps.google.com/glm/mmap/mwmfr?hl=en");
16 void GoogleLatitude::set_login(QString u, QString p) {
17 qDebug() << "GoogleLatitude: set_login";
18 if ( !u.contains('@') ) u.append("@gmail.com");
23 void GoogleLatitude::update(double la, double lo, double ac) {
24 if (login_error) return;
29 #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
30 QNetworkConfigurationManager mgr;
31 if (!mgr.isOnline()) {
32 qDebug() << "GoogleLatitude: offline";
37 qDebug() << "GoogleLatitude: update";
43 worker->get(QNetworkRequest(urllogin));
46 void GoogleLatitude::reset() {
47 qDebug() << "GoogleLatitude: reset";
49 update(latitude, longitude, accuracy);
52 void GoogleLatitude::glat_reply(QNetworkReply *r) {
53 if ( r->url() == urllogin ) {
54 qDebug() << "GoogleLatitude: login";
55 QString aidis = r->readAll();
56 QRegExp regexp ("type=\"hidden\".*name=\"GALX\".*value=\"(.*)\"");
58 regexp.indexIn(aidis, 1);
59 QString googleGALX = regexp.capturedTexts().last();
62 datalogin += "&service=friendview";
63 datalogin += "&GALX=" + googleGALX;
64 datalogin += "&Email=" + user;
65 datalogin += "&Passwd=" + pass;
66 worker->post(QNetworkRequest(urldologin), datalogin);
67 } else if ( r->url() == urldologin ) {
68 qDebug() << "GoogleLatitude: dologin";
71 datagps += "&lat=" + QString::number(latitude);
72 datagps += "&lng=" + QString::number(longitude);
73 datagps += "&accuracy=" + QString::number(accuracy);
75 QNetworkRequest request(urlupdate);
76 request.setRawHeader("X-ManualHeader", QString("true").toAscii() );
77 worker->post(request, datagps);
78 } else if ( r->url() == urlupdate ) {
79 QString output = r->readAll();
80 QRegExp regexp ("Authentication required");
81 if (regexp.indexIn(output, 1) != -1) {
82 qDebug() << "GoogleLatitude: update error auth";
86 qDebug() << "GoogleLatitude: update ok";
91 qDebug() << "GoogleLatitude Error url" << r->url();
92 qDebug() << r->rawHeaderList();
93 qDebug() << r->readAll();