c215f01d7efafc64eaec2af5077609252ef8be8f
[googlelatitude] / src / latitude.cpp
1 #include "latitude.h"
2
3 LatitudeGUI::LatitudeGUI(QMainWindow *parent) : QMainWindow(parent) {
4     setAttribute(Qt::WA_Maemo5AutoOrientation, true);
5     setWindowTitle(tr("Google Latitude Updater"));
6
7     setting = new QSettings();
8
9     // login input
10     QDialog *dialoglogin = new QDialog(this);
11     QLineEdit *login_user = new QLineEdit(setting->value("user","my_username").toString());
12     QLineEdit *login_pass = new QLineEdit(setting->value("pass","my_password").toString());
13     login_pass->setEchoMode(QLineEdit::Password);
14     QFormLayout *layout_login = new QFormLayout();
15     layout_login->addRow(tr("&Username"), login_user);
16     layout_login->addRow(tr("&Password"), login_pass);
17     connect(login_user, SIGNAL(textEdited(QString)), this, SLOT(save_user(QString)));
18     connect(login_pass, SIGNAL(textEdited(QString)), this, SLOT(save_pass(QString)));
19     connect(login_user, SIGNAL(returnPressed()), login_pass, SLOT(setFocus()));
20     connect(login_pass, SIGNAL(returnPressed()), dialoglogin, SLOT(accept()));
21     dialoglogin->setLayout(layout_login);
22     dialoglogin->exec();
23
24     // GUI
25     url = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview&continue=http://www.google.com/maps/m?mode=latitude");
26     maps = new QWebView();
27     connect(maps, SIGNAL(loadFinished(bool)), this, SLOT(maps_login()));
28     maps->load(url);
29     menuBar()->addAction(tr("&Latitude"), this, SLOT(mode_latitude()));
30     menuBar()->addAction(tr("&Buzz"), this, SLOT(mode_buzz()));
31
32     // updater
33     glatitude = new GoogleLatitude(this);
34     gps = new GpsMaemo5(this);
35     connect(gps, SIGNAL(fix()), this, SLOT(set()));
36     connect(glatitude, SIGNAL(OK()), this, SLOT(latitude_OK()));
37     connect(glatitude, SIGNAL(ERROR()), this, SLOT(latitude_ERROR()));
38
39     // show it
40     setCentralWidget(maps);
41 }
42
43 void LatitudeGUI::set() {
44     QMaemo5InformationBox::information(this, "New gps position", 1000);
45     glatitude->login(setting->value("user","my_username").toString(),
46                      setting->value("pass","my_password").toString());
47     glatitude->set(gps->get_lat(),
48                    gps->get_lon(),
49                    gps->get_acc());
50 }
51
52 void LatitudeGUI::latitude_OK() {
53     QMaemo5InformationBox::information(this, "Location Sent!", 1000);
54 }
55
56 void LatitudeGUI::latitude_ERROR() {
57     QMaemo5InformationBox::information(this, "Error in Authentification !", 3000);
58 }
59
60 void LatitudeGUI::save_user(QString _user) {
61     setting->setValue("user", _user);
62 }
63 void LatitudeGUI::save_pass(QString _pass) {
64     setting->setValue("pass", _pass);
65 }
66
67 void LatitudeGUI::mode_buzz() {
68     maps->load(QUrl::fromEncoded("http://www.google.com/maps/m?l-view=map&l-lci=m,com.google.latitudepublicupdates&ac=f,s,l"));
69 }
70
71 void LatitudeGUI::mode_latitude() {
72     maps->load(QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview&continue=http://www.google.com/maps/m?mode=latitude"));
73 }
74
75 void LatitudeGUI::maps_login() {
76     if ( maps->url() == url ) {
77         maps->page()->mainFrame()->evaluateJavaScript(
78                 QString("document.getElementById('Email').value = \"%1\";").arg(
79                         setting->value("user").toString()));
80         maps->page()->mainFrame()->evaluateJavaScript(
81                 QString("document.getElementById('Passwd').value = \"%1\";").arg(
82                         setting->value("pass").toString()));
83         maps->page()->mainFrame()->evaluateJavaScript("document.getElementById('gaia_loginform').submit();");
84     }
85 }