From d61a299b8bfaa74e8c2680923a3efbbcf2ab8347 Mon Sep 17 00:00:00 2001 From: Rodrigo Linfati Date: Wed, 27 Jul 2011 20:58:02 +0200 Subject: [PATCH] Enable Daemon Option, submit for testing --- LatitudeUpdaterDaemon.desktop | 11 ------ LatitudeUpdaterDaemon.png | Bin 3646 -> 0 bytes latitudeqml.cpp | 8 ++++- latitudeqml.h | 37 ++++++++++++++++++++ latitudewidget.cpp | 71 +++++++++++++++----------------------- latitudewidget.h | 67 +++++++++++++++++++++--------------- main-daemon.cpp | 2 +- main-qml.cpp | 2 +- main-widget.cpp | 2 +- qml/MainPage.qml | 75 +++++++++++------------------------------ 10 files changed, 132 insertions(+), 143 deletions(-) delete mode 100644 LatitudeUpdaterDaemon.desktop delete mode 100644 LatitudeUpdaterDaemon.png diff --git a/LatitudeUpdaterDaemon.desktop b/LatitudeUpdaterDaemon.desktop deleted file mode 100644 index 901b786..0000000 --- a/LatitudeUpdaterDaemon.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=true -Name=LatitudeDaemon -Exec=/opt/LatitudeUpdaterDaemon/bin/LatitudeUpdaterDaemon -Icon=LatitudeUpdaterDaDaemon -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/LatitudeUpdaterDaemon.png b/LatitudeUpdaterDaemon.png deleted file mode 100644 index d98268f31e1c847a9b0e0d3fda477d7079f494d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3646 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 Qv;Y7A07*qoM6N<$f^%-)0RR91 diff --git a/latitudeqml.cpp b/latitudeqml.cpp index 0dd7af1..3ae61c0 100644 --- a/latitudeqml.cpp +++ b/latitudeqml.cpp @@ -4,11 +4,17 @@ LatitudeQML::LatitudeQML(QDeclarativeView *parent) : QDeclarativeView(parent), latitude(this), - gps(this) { + gps(this), + demonioOpt("/opt/LatitudeUpdaterDaemon/bin/LatitudeUpdaterDaemon"), + demonioSdk(QCoreApplication::applicationDirPath()+ + QDir::separator()+ + "LatitudeUpdaterDaemon"), + cli(this) { qDebug() << "* LatitudeQML::LatitudeQML"; rootContext()->setContextProperty("latitude", &latitude); rootContext()->setContextProperty("gps", &gps); + rootContext()->setContextProperty("demonio", this); setSource(QUrl("qrc:/qml/main.qml")); latitude.getAccess(); diff --git a/latitudeqml.h b/latitudeqml.h index 13c8b27..c868551 100644 --- a/latitudeqml.h +++ b/latitudeqml.h @@ -3,6 +3,10 @@ #include #include +#include +#include +#include +#include #include "googlelatitude.h" #include "gpscontrol.h" @@ -14,12 +18,45 @@ public: signals: public slots: + bool demonio_status() { + qDebug() << "LatitudeQML::demonio_status"; + if (system("killall -0 LatitudeUpdaterDaemon 2> /dev/null" )) { + return false; + } + return true; + } + bool demonio_start() { + qDebug() << "LatitudeQML::demonio_start"; + if (demonioOpt.exists()) { + qDebug() << "LatitudeQML:: demonio opt"; + cli.startDetached(demonioOpt.fileName()); + return true; + } + if (demonioSdk.exists()) { + qDebug() << "LatitudeQML:: demonio sdk"; + cli.startDetached(demonioSdk.fileName()); + return true; + } + qDebug() << "LatitudeQML:: demonio none"; + return false; + } + bool demonio_stop() { + qDebug() << "LatitudeQML::demonio_stop"; + if (demonioOpt.exists() || demonioSdk.exists() ) { + qDebug() << "LatitudeQML:: demonio kill" << system("killall LatitudeUpdaterDaemon 2> /dev/null"); + return true; + } + return false; + } private slots: private: GoogleLatitude latitude; GpsControl gps; + QFile demonioOpt; + QFile demonioSdk; + QProcess cli; }; #endif // LatitudeQML_H diff --git a/latitudewidget.cpp b/latitudewidget.cpp index f81b786..6b754d9 100644 --- a/latitudewidget.cpp +++ b/latitudewidget.cpp @@ -3,7 +3,12 @@ LatitudeGUI::LatitudeGUI(QWidget *parent) : QWidget(parent), latitude(this), - gps(this) { + gps(this), + demonioOpt("/opt/LatitudeUpdaterDaemon/bin/LatitudeUpdaterDaemon"), + demonioSdk(QCoreApplication::applicationDirPath()+ + QDir::separator()+ + "LatitudeUpdaterDaemon"), + cli(this) { qDebug() << "* LatitudeGUI::LatitudeGUI"; setWindowTitle(tr("LatitudeUpdater")); @@ -28,32 +33,10 @@ LatitudeGUI::LatitudeGUI(QWidget *parent) : connect(&latitude, SIGNAL(notToken()), this, SLOT(gl_NotToken()) ); connect(&latitude, SIGNAL(needAuth()), this, SLOT(gl_needAuth()) ); - latitude.getAccess(); + connect(&gps, SIGNAL(gotFix()), this, SLOT(set_latitude()) ); // row 2 layout_row2 = new QHBoxLayout(); - pos_label = new QLabel("Position"); - pos_lat = new QLineEdit("lat"); - pos_lon = new QLineEdit("lon"); - pos_acc = new QLineEdit("acc"); - pos_tis = new QLineEdit("tis"); - - pos_lat->setReadOnly(true); - pos_lon->setReadOnly(true); - pos_acc->setReadOnly(true); - pos_tis->setReadOnly(true); - - layout_row2->addWidget(pos_label); - layout_row2->addWidget(pos_lat); - layout_row2->addWidget(pos_lon); - layout_row2->addWidget(pos_acc); - layout_row2->addWidget(pos_tis); - - connect(&gps, SIGNAL(gotUpdate()), this, SLOT(get_gps()) ); - connect(&gps, SIGNAL(gotFix()), this, SLOT(set_latitude()) ); - - // row 3 - layout_row3 = new QHBoxLayout(); gps_group = new QButtonGroup(); gps_method = new QLabel("Method"); gps_cell = new QRadioButton("Cell Tower"); @@ -62,10 +45,10 @@ LatitudeGUI::LatitudeGUI(QWidget *parent) : gps_group->addButton(gps_cell); gps_group->addButton(gps_both); gps_group->addButton(gps_agps); - layout_row3->addWidget(gps_method); - layout_row3->addWidget(gps_cell); - layout_row3->addWidget(gps_both); - layout_row3->addWidget(gps_agps); + layout_row2->addWidget(gps_method); + layout_row2->addWidget(gps_cell); + layout_row2->addWidget(gps_both); + layout_row2->addWidget(gps_agps); if ( gps.getPositioningMethod() == "gps" ) gps_agps->setChecked(true); if ( gps.getPositioningMethod() == "cell" ) gps_cell->setChecked(true); @@ -75,22 +58,22 @@ LatitudeGUI::LatitudeGUI(QWidget *parent) : connect(gps_both, SIGNAL(clicked()), this, SLOT(set_method()) ); connect(gps_agps, SIGNAL(clicked()), this, SLOT(set_method()) ); - // row 4 - layout_row4 = new QHBoxLayout(); + // row 3 + layout_row3 = new QHBoxLayout(); gps_to_label = new QLabel("Time Out"); gps_to_slider = new QSlider(Qt::Horizontal); gps_to_slider->setSingleStep(5); gps_to_slider->setRange(5, 120); gps_to_slider->setValue(gps.getTimeOut()); gps_to_slider_value = new QLabel(QString("%1 sec.").arg(gps_to_slider->value())); - layout_row4->addWidget(gps_to_label); - layout_row4->addWidget(gps_to_slider); - layout_row4->addWidget(gps_to_slider_value); + layout_row3->addWidget(gps_to_label); + layout_row3->addWidget(gps_to_slider); + layout_row3->addWidget(gps_to_slider_value); connect(gps_to_slider, SIGNAL(valueChanged(int)), this, SLOT(set_to(int)) ); - // row 5 - layout_row5 = new QHBoxLayout(); + // row 4 + layout_row4 = new QHBoxLayout(); gps_i_label = new QLabel("Interval"); gps_i_slider = new QSlider(Qt::Horizontal); @@ -98,23 +81,23 @@ LatitudeGUI::LatitudeGUI(QWidget *parent) : gps_i_slider->setRange(5, 60); gps_i_slider->setValue(gps.getInterval()/60); gps_i_slider_value = new QLabel(QString("%1 min.").arg(gps_i_slider->value())); - layout_row5->addWidget(gps_i_label); - layout_row5->addWidget(gps_i_slider); - layout_row5->addWidget(gps_i_slider_value); + layout_row4->addWidget(gps_i_label); + layout_row4->addWidget(gps_i_slider); + layout_row4->addWidget(gps_i_slider_value); connect(gps_i_slider, SIGNAL(valueChanged(int)), this, SLOT(set_i(int)) ); - // row 6 - layout_row6 = new QHBoxLayout(); + // row 5 + layout_row5 = new QHBoxLayout(); gps_ac_group = new QButtonGroup(); gps_ac_label = new QLabel("Auto Connect"); gps_ac_yes = new QRadioButton("Yes"); gps_ac_not = new QRadioButton("No"); gps_ac_group->addButton(gps_ac_yes); gps_ac_group->addButton(gps_ac_not); - layout_row6->addWidget(gps_ac_label); - layout_row6->addWidget(gps_ac_yes); - layout_row6->addWidget(gps_ac_not); + layout_row5->addWidget(gps_ac_label); + layout_row5->addWidget(gps_ac_yes); + layout_row5->addWidget(gps_ac_not); if ( latitude.getAutoConnect() == true ) gps_ac_yes->setChecked(true); if ( latitude.getAutoConnect() == false ) gps_ac_not->setChecked(true); @@ -129,8 +112,8 @@ LatitudeGUI::LatitudeGUI(QWidget *parent) : layout_gui->addLayout(layout_row3); layout_gui->addLayout(layout_row4); layout_gui->addLayout(layout_row5); - layout_gui->addLayout(layout_row6); setLayout(layout_gui); + latitude.getAccess(); } diff --git a/latitudewidget.h b/latitudewidget.h index 26bb749..b4e6e8a 100644 --- a/latitudewidget.h +++ b/latitudewidget.h @@ -3,14 +3,17 @@ #include #include -#include #include -#include -#include -#include #include +#include #include +#include +#include #include +#include +#include +#include +#include #include "googlelatitude.h" #include "gpscontrol.h" @@ -27,8 +30,13 @@ private slots: void gl_GotToken() { qDebug() << "LatitudeGUI::gl_GotToken"; do_oauth->setDisabled(true); - do_start->setEnabled(true); - do_stop->setDisabled(true); + if (system("killall -0 LatitudeUpdaterDaemon 2> /dev/null" )) { + do_start->setEnabled(true); + do_stop->setDisabled(true); + } else { + do_start->setDisabled(true); + do_stop->setEnabled(true); + } } void gl_NotToken() { qDebug() << "LatitudeGUI::gl_NotToken"; @@ -49,26 +57,32 @@ private slots: qDebug() << "LatitudeGUI::gps_start"; do_start->setDisabled(true); do_stop->setEnabled(true); - gps.startUpdates(); + if (demonioOpt.exists()) { + qDebug() << "LatitudeGUI:: demonio opt"; + cli.startDetached(demonioOpt.fileName()); + } else if (demonioSdk.exists()) { + qDebug() << "LatitudeGUI:: demonio sdk"; + cli.startDetached(demonioSdk.fileName()); + } else { + qDebug() << "LatitudeGUI:: demonio none"; + gps.startUpdates(); + } } void gps_stop() { qDebug() << "LatitudeGUI::gps_stop"; do_start->setEnabled(true); do_stop->setDisabled(true); - gps.stopUpdates(true); - } - void get_gps() { - qDebug() << "LatitudeGUI::get_gps"; - pos_lat->setText(QString("%1").arg(gps.getCurrentLatitude())); - pos_lon->setText(QString("%1").arg(gps.getCurrentLongitude())); - pos_acc->setText(QString("%1").arg(gps.getCurrentAccuracy())); - pos_tis->setText(QString("%1").arg(gps.getCurrentTimestamp())); + if (demonioOpt.exists() || demonioSdk.exists() ) { + qDebug() << "LatitudeGUI:: demonio kill" << system("killall LatitudeUpdaterDaemon 2> /dev/null"); + } else { + gps.stopUpdates(true); + } } void set_latitude() { qDebug() << "LatitudeGUI::set_latitude"; - latitude.setCurrentLocation(pos_lat->text().toDouble(), - pos_lon->text().toDouble(), - pos_acc->text().toDouble()); + latitude.setCurrentLocation(gps.getCurrentLatitude(), + gps.getCurrentLongitude(), + gps.getCurrentAccuracy()); latitude.sendCurrentLocation(); } void set_method() { @@ -100,6 +114,9 @@ private slots: private: GoogleLatitude latitude; GpsControl gps; + QFile demonioOpt; + QFile demonioSdk; + QProcess cli; QHBoxLayout *layout_row1; QPushButton *do_oauth; @@ -107,30 +124,23 @@ private: QPushButton *do_stop; QHBoxLayout *layout_row2; - QLabel *pos_label; - QLineEdit *pos_lat; - QLineEdit *pos_lon; - QLineEdit *pos_acc; - QLineEdit *pos_tis; - - QHBoxLayout *layout_row3; QLabel *gps_method; QButtonGroup *gps_group; QRadioButton *gps_cell; QRadioButton *gps_both; QRadioButton *gps_agps; - QHBoxLayout *layout_row4; + QHBoxLayout *layout_row3; QLabel *gps_to_label; QSlider *gps_to_slider; QLabel *gps_to_slider_value; - QHBoxLayout *layout_row5; + QHBoxLayout *layout_row4; QLabel *gps_i_label; QSlider *gps_i_slider; QLabel *gps_i_slider_value; - QHBoxLayout *layout_row6; + QHBoxLayout *layout_row5; QLabel *gps_ac_label; QButtonGroup *gps_ac_group; QRadioButton *gps_ac_yes; @@ -140,3 +150,4 @@ private: }; #endif // LATITUDEGUI_H + diff --git a/main-daemon.cpp b/main-daemon.cpp index be44174..2ca44e4 100644 --- a/main-daemon.cpp +++ b/main-daemon.cpp @@ -2,7 +2,7 @@ #include "latitudedaemon.h" int main(int argc, char *argv[]) { - qDebug() << "* main"; + qDebug() << "* Main Daemon"; QCoreApplication::setOrganizationName("linfati.com"); QCoreApplication::setOrganizationDomain("linfati.com"); QCoreApplication::setApplicationName("latitudeupdater"); diff --git a/main-qml.cpp b/main-qml.cpp index 1b6b9eb..98828f7 100644 --- a/main-qml.cpp +++ b/main-qml.cpp @@ -2,7 +2,7 @@ #include "latitudeqml.h" int main(int argc, char *argv[]) { - qDebug() << "* main"; + qDebug() << "* Main QML"; QCoreApplication::setOrganizationName("linfati.com"); QCoreApplication::setOrganizationDomain("linfati.com"); QCoreApplication::setApplicationName("latitudeupdater"); diff --git a/main-widget.cpp b/main-widget.cpp index 111498a..b3d2ba9 100644 --- a/main-widget.cpp +++ b/main-widget.cpp @@ -2,7 +2,7 @@ #include "latitudewidget.h" int main(int argc, char *argv[]) { - qDebug() << "* main"; + qDebug() << "* Main Widget"; QCoreApplication::setOrganizationName("linfati.com"); QCoreApplication::setOrganizationDomain("linfati.com"); QCoreApplication::setApplicationName("latitudeupdater"); diff --git a/qml/MainPage.qml b/qml/MainPage.qml index 17f9154..8decc23 100644 --- a/qml/MainPage.qml +++ b/qml/MainPage.qml @@ -24,7 +24,9 @@ Page { onClicked: { do_start.enabled = false; do_stop.enabled = true; - gps.startUpdates() + if (!demonio.demonio_start()) { + gps.startUpdates() + } } } Button { @@ -35,44 +37,9 @@ Page { onClicked: { do_start.enabled = true; do_stop.enabled = false; - gps.stopUpdates(true) - } - } - } - Row { - width: rootWindow.width - Label { - id: pos_label - text: "Position" - width: rootWindow.width / 4 - anchors.verticalCenter: position.verticalCenter - } - Row { - id: position - width: rootWindow.width * 3 / 4 - TextField { - id: pos_lat - width: parent / 4 - placeholderText: "pos_lat" - readOnly: true - } - TextField { - id: pos_lon - width: parent / 4 - placeholderText: "pos_lon" - readOnly: true - } - TextField { - id: pos_acc - width: parent / 4 - placeholderText: "pos_acc" - readOnly: true - } - TextField { - id: pos_tis - width: parent / 4 - placeholderText: "pos_tis" - readOnly: true + if (!demonio.demonio_stop()) { + gps.stopUpdates(true) + } } } } @@ -194,8 +161,13 @@ Page { target: latitude onGotToken: { do_auth.enabled = false; - do_start.enabled = true; - do_stop.enabled = false; + if (demonio.demonio_status()) { + do_start.enabled = false; + do_stop.enabled = true; + } else { + do_start.enabled = true; + do_stop.enabled = false; + } } } Connections { @@ -204,7 +176,9 @@ Page { do_auth.enabled = true; do_start.enabled = false; do_stop.enabled = false; - gps.stopUpdates(true) + if (!demonio.demonio_stop()) { + gps.stopUpdates(true) + } } } Connections { @@ -216,21 +190,10 @@ Page { Connections { target: gps - onGotUpdate: { - pos_lat.text = gps.getCurrentLatitude() - pos_lon.text = gps.getCurrentLongitude() - pos_acc.text = gps.getCurrentAccuracy() - pos_tis.text = gps.getCurrentTimestamp() - } - } - Connections { - target: gps onGotFix: { - pos_lat.text = gps.getCurrentLatitude() - pos_lon.text = gps.getCurrentLongitude() - pos_acc.text = gps.getCurrentAccuracy() - pos_tis.text = gps.getCurrentTimestamp() - latitude.setCurrentLocation(pos_lat.text, pos_lon.text, pos_acc.text) + latitude.setCurrentLocation(gps.getCurrentLatitude(), + gps.getCurrentLongitude(), + gps.getCurrentAccuracy()) latitude.sendCurrentLocation() } } -- 1.7.9.5