fix the .desktop file to use /opt/linfati.com
[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 (demonio.exists()) {
61             qDebug() << "* LatitudeGUI:: demonio";
62             cli.startDetached(demonio.fileName());
63             return;
64         }
65         qDebug() << "* LatitudeGUI:: demonio none";
66         gps.startUpdates();
67     }
68     void gps_stop() {
69         qDebug() << "* LatitudeGUI::gps_stop";
70         do_start->setEnabled(true);
71         do_stop->setDisabled(true);
72         if (demonio.exists()) {
73             qDebug() << "* LatitudeGUI:: demonio kill" << system("killall LatitudeUpdaterDaemon 2> /dev/null");
74         } else {
75             gps.stopUpdates(true);
76         }
77     }
78     void set_latitude() {
79         qDebug() << "* LatitudeGUI::set_latitude";
80         latitude.setCurrentLocation(gps.getCurrentLatitude(),
81                                     gps.getCurrentLongitude(),
82                                     gps.getCurrentAccuracy());
83         latitude.sendCurrentLocation();
84     }
85     void set_method() {
86         qDebug() << "* LatitudeGUI::set_method";
87         if (gps_cell->isChecked()) gps.setPositioningMethod("cell");
88         if (gps_both->isChecked()) gps.setPositioningMethod("all");
89         if (gps_agps->isChecked()) gps.setPositioningMethod("gps");
90     }
91     void set_to(int value) {
92         qDebug() << "* LatitudeGUI::set_to()" << value;
93         gps.setTimeOut(value);
94         gps_to_slider_value->setText(QString("%1 sec.").arg(value));
95
96     }
97     void set_i(int value) {
98         qDebug() << "* LatitudeGUI::set_i()" << value;
99         gps.setInterval(value*60);
100         gps_i_slider_value->setText(QString("%1 min.").arg(value));
101     }
102     void set_ac_yes() {
103         qDebug() << "* LatitudeGUI::set_ac_yes";
104         latitude.setAutoConnect(true);
105     }
106     void set_ac_not() {
107         qDebug() << "* LatitudeGUI::set_ac_not";
108         latitude.setAutoConnect(false);
109     }
110
111 private:
112     GoogleLatitude latitude;
113     GpsControl gps;
114     QFile demonio;
115     QProcess cli;
116
117     QHBoxLayout *layout_row1;
118     QPushButton *do_oauth;
119     QPushButton *do_start;
120     QPushButton *do_stop;
121
122     QHBoxLayout *layout_row2;
123     QLabel *gps_method;
124     QButtonGroup *gps_group;
125     QRadioButton *gps_cell;
126     QRadioButton *gps_both;
127     QRadioButton *gps_agps;
128
129     QHBoxLayout *layout_row3;
130     QLabel *gps_to_label;
131     QSlider *gps_to_slider;
132     QLabel *gps_to_slider_value;
133
134     QHBoxLayout *layout_row4;
135     QLabel *gps_i_label;
136     QSlider *gps_i_slider;
137     QLabel *gps_i_slider_value;
138
139     QHBoxLayout *layout_row5;
140     QLabel *gps_ac_label;
141     QButtonGroup *gps_ac_group;
142     QRadioButton *gps_ac_yes;
143     QRadioButton *gps_ac_not;
144
145     QVBoxLayout *layout_gui;
146 };
147
148 #endif // LATITUDEGUI_H
149