b4e6e8a1b8910e7e1a921996adc191b064ddbeea
[googlelatitude] / latitudewidget.h
1 #ifndef LATITUDEGUI_H
2 #define LATITUDEGUI_H
3
4 #include <QtGui/QWidget>
5 #include <QtGui/QPushButton>
6 #include <QtGui/QLabel>
7 #include <QtGui/QButtonGroup>
8 #include <QtGui/QRadioButton>
9 #include <QtGui/QSlider>
10 #include <QtGui/QVBoxLayout>
11 #include <QtGui/QHBoxLayout>
12 #include <QtGui/QDesktopServices>
13 #include <QtCore/QProcess>
14 #include <QtCore/QCoreApplication>
15 #include <QtCore/QDir>
16 #include <QtCore/QFile>
17 #include "googlelatitude.h"
18 #include "gpscontrol.h"
19
20 class LatitudeGUI : public QWidget {
21     Q_OBJECT
22 public:
23     LatitudeGUI(QWidget *parent = 0);
24
25 signals:
26
27 public slots:
28
29 private slots:
30     void gl_GotToken() {
31         qDebug() << "LatitudeGUI::gl_GotToken";
32         do_oauth->setDisabled(true);
33         if (system("killall -0 LatitudeUpdaterDaemon 2> /dev/null" )) {
34             do_start->setEnabled(true);
35             do_stop->setDisabled(true);
36         } else {
37             do_start->setDisabled(true);
38             do_stop->setEnabled(true);
39         }
40     }
41     void gl_NotToken() {
42         qDebug() << "LatitudeGUI::gl_NotToken";
43         do_oauth->setEnabled(true);
44         do_start->setDisabled(true);
45         do_stop->setDisabled(true);
46         gps.stopUpdates(true);
47     }
48     void gl_needAuth() {
49         qDebug() << "LatitudeGUI::gl_needAuth";
50         do_oauth->setEnabled(true);
51     }
52     void gl_webauth() {
53         qDebug() << "LatitudeGUI::gl_webauth";
54         QDesktopServices::openUrl(latitude.getUserAuthorization());
55     }
56     void gps_start() {
57         qDebug() << "LatitudeGUI::gps_start";
58         do_start->setDisabled(true);
59         do_stop->setEnabled(true);
60         if (demonioOpt.exists()) {
61             qDebug() << "LatitudeGUI:: demonio opt";
62             cli.startDetached(demonioOpt.fileName());
63         } else if (demonioSdk.exists()) {
64             qDebug() << "LatitudeGUI:: demonio sdk";
65             cli.startDetached(demonioSdk.fileName());
66         } else {
67             qDebug() << "LatitudeGUI:: demonio none";
68             gps.startUpdates();
69         }
70     }
71     void gps_stop() {
72         qDebug() << "LatitudeGUI::gps_stop";
73         do_start->setEnabled(true);
74         do_stop->setDisabled(true);
75         if (demonioOpt.exists() || demonioSdk.exists() ) {
76             qDebug() << "LatitudeGUI:: demonio kill" << system("killall LatitudeUpdaterDaemon 2> /dev/null");
77         } else {
78             gps.stopUpdates(true);
79         }
80     }
81     void set_latitude() {
82         qDebug() << "LatitudeGUI::set_latitude";
83         latitude.setCurrentLocation(gps.getCurrentLatitude(),
84                                     gps.getCurrentLongitude(),
85                                     gps.getCurrentAccuracy());
86         latitude.sendCurrentLocation();
87     }
88     void set_method() {
89         qDebug() << "LatitudeGUI::set_method";
90         if (gps_cell->isChecked()) gps.setPositioningMethod("cell");
91         if (gps_both->isChecked()) gps.setPositioningMethod("all");
92         if (gps_agps->isChecked()) gps.setPositioningMethod("gps");
93     }
94     void set_to(int value) {
95         qDebug() << "LatitudeGUI::set_to()" << value;
96         gps.setTimeOut(value);
97         gps_to_slider_value->setText(QString("%1 sec.").arg(value));
98
99     }
100     void set_i(int value) {
101         qDebug() << "LatitudeGUI::set_i()" << value;
102         gps.setInterval(value*60);
103         gps_i_slider_value->setText(QString("%1 min.").arg(value));
104     }
105     void set_ac_yes() {
106         qDebug() << "LatitudeGUI::set_ac_yes";
107         latitude.setAutoConnect(true);
108     }
109     void set_ac_not() {
110         qDebug() << "LatitudeGUI::set_ac_not";
111         latitude.setAutoConnect(false);
112     }
113
114 private:
115     GoogleLatitude latitude;
116     GpsControl gps;
117     QFile demonioOpt;
118     QFile demonioSdk;
119     QProcess cli;
120
121     QHBoxLayout *layout_row1;
122     QPushButton *do_oauth;
123     QPushButton *do_start;
124     QPushButton *do_stop;
125
126     QHBoxLayout *layout_row2;
127     QLabel *gps_method;
128     QButtonGroup *gps_group;
129     QRadioButton *gps_cell;
130     QRadioButton *gps_both;
131     QRadioButton *gps_agps;
132
133     QHBoxLayout *layout_row3;
134     QLabel *gps_to_label;
135     QSlider *gps_to_slider;
136     QLabel *gps_to_slider_value;
137
138     QHBoxLayout *layout_row4;
139     QLabel *gps_i_label;
140     QSlider *gps_i_slider;
141     QLabel *gps_i_slider_value;
142
143     QHBoxLayout *layout_row5;
144     QLabel *gps_ac_label;
145     QButtonGroup *gps_ac_group;
146     QRadioButton *gps_ac_yes;
147     QRadioButton *gps_ac_not;
148
149     QVBoxLayout *layout_gui;
150 };
151
152 #endif // LATITUDEGUI_H
153