minor change in gui
[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     // webkit magic
54     maps = new QWebView();
55     connect(maps, SIGNAL(loadFinished(bool)), this, SLOT(maps_login()));
56     maps->load(urllogin);
57
58     // set widget
59     setCentralWidget(maps);
60     setWindowTitle(tr("Google Maps"));
61
62     // menu
63     menuBar()->clear();
64     menuBar()->addAction(tr("&Latitude") ,this, SLOT(show_lat()));
65     setStatusBar(0);
66 }
67
68 void LatitudeGUI::show_lat() {
69     // login input
70     login_user = new QLineEdit(setting->value("user","my_username").toString());
71     login_pass = new QLineEdit(setting->value("pass","my_password").toString());
72     login_pass->setEchoMode(QLineEdit::Password);
73     QPushButton *button_update = new QPushButton(tr("&Update Location"));
74     // login layout
75     QFormLayout *layout_login = new QFormLayout();
76     layout_login->addRow(tr("&Username"), login_user);
77     layout_login->addRow(tr("&Password"), login_pass);
78     layout_login->addRow(button_update);
79     // login connect
80     connect(login_user, SIGNAL(editingFinished()), this, SLOT(save()));
81     connect(login_pass, SIGNAL(editingFinished()), this, SLOT(save()));
82     connect(login_user, SIGNAL(returnPressed()), login_pass, SLOT(setFocus()));
83     connect(login_pass, SIGNAL(returnPressed()), this, SLOT(set()));
84     connect(button_update, SIGNAL(clicked()), this, SLOT(set()));
85
86     // location input
87     location_lat = new QLineEdit(QString::number(0));
88     location_lon = new QLineEdit(QString::number(0));
89     location_acc = new QLineEdit(QString::number(0));
90     // location layout
91     QFormLayout *layout_location = new QFormLayout();
92     layout_location->addRow(tr("lat :"), location_lat);
93     layout_location->addRow(tr("lon :"), location_lon);
94     layout_location->addRow(tr("acc :"), location_acc);
95
96     // source button
97     QPushButton *source_loc = new QPushButton(tr("&loc"));
98     QPushButton *source_cell = new QPushButton(tr("&cell"));
99     QPushButton *source_gps = new QPushButton(tr("&gps"));
100     // source layout
101     QHBoxLayout *layout_source = new QHBoxLayout();
102     layout_source->addWidget(source_loc);
103     layout_source->addWidget(source_cell);
104     layout_source->addWidget(source_gps);
105     // source connect
106     connect(source_loc, SIGNAL(clicked()), glatitude, SLOT(get()));
107     connect(source_cell, SIGNAL(clicked()), this, SLOT(get_cell()));
108     connect(source_gps, SIGNAL(clicked()), this, SLOT(get_gps()));
109
110     // main layout
111     location = new QWidget();
112     QHBoxLayout *layout_form = new QHBoxLayout();
113     layout_form->addLayout(layout_login);
114     layout_form->addLayout(layout_location);
115     QVBoxLayout *layout = new QVBoxLayout();
116     layout->addLayout(layout_form);
117     layout->addLayout(layout_source);
118     location->setLayout(layout);
119
120     // set widget
121     setCentralWidget(location);
122     setWindowTitle(tr("Google Latitude Updater"));
123
124     // menu
125     menuBar()->clear();
126     menuBar()->addAction(tr("&Maps") ,this, SLOT(show_map()));
127     statusBar()->showMessage(tr("Ready"));
128 }
129
130 void LatitudeGUI::maps_login() {
131     if ( maps->url() == urllogin ) {
132         maps->page()->mainFrame()->evaluateJavaScript(
133                 QString("document.getElementById('Email').value = \"%1\";").arg(
134                         setting->value("user").toString()));
135         maps->page()->mainFrame()->evaluateJavaScript(
136                 QString("document.getElementById('Passwd').value = \"%1\";").arg(
137                         setting->value("pass").toString()));
138         maps->page()->mainFrame()->evaluateJavaScript("document.getElementById('gaia_loginform').submit();");
139     }
140 }