be096f30e7c2bc31bfc18fd131c8a8fbac1d4de5
[googlelatitude] / src / latitude.cpp
1 #include "latitude.h"
2
3 LatitudeGUI::LatitudeGUI(QMainWindow *parent) : QMainWindow(parent) {
4     glatitude = new GoogleLatitude(this);
5     setting = new QSettings();
6     urllogin = QUrl::fromEncoded("https://www.google.com/accounts/ServiceLogin?service=friendview&continue=http://www.google.com/maps/m?mode=latitude");
7
8     show_lat();
9
10     connect(glatitude, SIGNAL(getOK()), this, SLOT(get_loc()));
11     connect(glatitude, SIGNAL(setOK()), this, SLOT(set_OK()));
12     connect(glatitude, SIGNAL(setERROR()), this, SLOT(set_ERROR()));
13 }
14
15 void LatitudeGUI::get_loc() {
16     location_lat->setText(QString::number(glatitude->get_lat()));
17     location_lon->setText(QString::number(glatitude->get_lon()));
18     location_acc->setText(QString::number(glatitude->get_acc()));
19     statusBar()->showMessage(tr("Using google.com/loc"),2000);
20 }
21
22 void LatitudeGUI::get_cell() {
23     statusBar()->showMessage(tr("Using cell... TODO"),2000);
24 }
25
26 void LatitudeGUI::get_gps() {
27     statusBar()->showMessage(tr("Using gps... TODO"),2000);
28 }
29
30 void LatitudeGUI::set() {
31     glatitude->login(login_user->text(),
32                      login_pass->text());
33     glatitude->set(location_lat->text().toDouble(),
34                    location_lon->text().toDouble(),
35                    location_acc->text().toDouble());
36     statusBar()->showMessage(tr("Setting location..."),2000);
37 }
38
39 void LatitudeGUI::set_OK() {
40     statusBar()->showMessage(tr("Location Updated !"),5000);
41 }
42
43 void LatitudeGUI::set_ERROR() {
44     statusBar()->showMessage(tr("Error in Authentification !"),5000);
45 }
46
47 void LatitudeGUI::save() {
48     setting->setValue("user", login_user->text());
49     setting->setValue("pass", login_pass->text());
50 }
51
52 void LatitudeGUI::show_map() {
53     maps = new QWebView();
54     connect(maps, SIGNAL(loadFinished(bool)), this, SLOT(maps_login()));
55     maps->load(urllogin);
56
57     setCentralWidget(maps);
58     setWindowTitle(tr("Google Maps"));
59
60     menuBar()->clear();
61     menuBar()->addAction(tr("&Latitude") ,this, SLOT(show_lat()));
62 }
63
64 void LatitudeGUI::show_lat() {
65     location = new QWidget();
66     QHBoxLayout *layout = new QHBoxLayout();
67     layout->addLayout(do_login());
68     layout->addLayout(do_location());
69     location->setLayout(layout);
70
71     setCentralWidget(location);
72     setWindowTitle(tr("Google Latitude Updater"));
73
74     menuBar()->clear();
75     menuBar()->addAction(tr("&Maps") ,this, SLOT(show_map()));
76     menuBar()->addAction(tr("&loc"), glatitude, SLOT(get()));
77     menuBar()->addAction(tr("&cell"), this, SLOT(get_cell()));
78     menuBar()->addAction(tr("&gps"), this, SLOT(get_gps()));
79 }
80
81 void LatitudeGUI::maps_login() {
82     if ( maps->url() == urllogin ) {
83         maps->page()->mainFrame()->evaluateJavaScript(
84                 QString("document.getElementById('Email').value = \"%1\";").arg(
85                         setting->value("user").toString()));
86         maps->page()->mainFrame()->evaluateJavaScript(
87                 QString("document.getElementById('Passwd').value = \"%1\";").arg(
88                         setting->value("pass").toString()));
89         maps->page()->mainFrame()->evaluateJavaScript("document.getElementById('gaia_loginform').submit();");
90     }
91 }
92
93 QFormLayout *LatitudeGUI::do_login() {
94     login_user = new QLineEdit(setting->value("user","my_username").toString());
95     login_pass = new QLineEdit(setting->value("pass","my_password").toString());
96     login_pass->setEchoMode(QLineEdit::Password);
97     QPushButton *login_up = new QPushButton(tr("Update Location"));
98
99     QFormLayout *layout = new QFormLayout();
100     layout->addRow(tr("&Username"), login_user);
101     layout->addRow(tr("&Password"), login_pass);
102     layout->addRow(login_up);
103
104     connect(login_user, SIGNAL(editingFinished()), this, SLOT(save()));
105     connect(login_pass, SIGNAL(editingFinished()), this, SLOT(save()));
106     connect(login_user, SIGNAL(returnPressed()), login_pass, SLOT(setFocus()));
107     connect(login_pass, SIGNAL(returnPressed()), this, SLOT(set()));
108     connect(login_up, SIGNAL(clicked()), this, SLOT(set()));
109
110     return layout;
111 }
112
113 QFormLayout *LatitudeGUI::do_location() {
114     location_lat = new QLineEdit(QString::number(0));
115     location_lon = new QLineEdit(QString::number(0));
116     location_acc = new QLineEdit(QString::number(0));
117
118     QFormLayout *layout = new QFormLayout();
119     layout->addRow(tr("lat :"), location_lat);
120     layout->addRow(tr("lon :"), location_lon);
121     layout->addRow(tr("acc :"), location_acc);
122
123     return layout;
124 }