From ee8d81341bf4cdb12c4f705ff75076c5248687b5 Mon Sep 17 00:00:00 2001 From: Ivan Gorinov Date: Tue, 1 Nov 2011 22:44:44 -0700 Subject: [PATCH] Stop the accelerometer while the screen is locked --- ameter.pro | 10 +-------- debian/control | 63 +++++++++++++++++++++++++++++++++++++++++++++----------- mainwindow.cpp | 50 ++++++++++++++++++++++++++++++-------------- mainwindow.h | 10 +++++++++ 4 files changed, 97 insertions(+), 36 deletions(-) diff --git a/ameter.pro b/ameter.pro index c0b673d..1ec0114 100644 --- a/ameter.pro +++ b/ameter.pro @@ -1,12 +1,4 @@ -symbian:TARGET.UID3 = 0xE7516F88 - -# Allow network access on Symbian -symbian:TARGET.CAPABILITY += NetworkServices - -# If your application uses the Qt Mobility libraries, uncomment -# the following lines and add the respective components to the -# MOBILITY variable. -CONFIG += mobility +CONFIG += mobility qdbus MOBILITY += sensors SOURCES += main.cpp \ diff --git a/debian/control b/debian/control index 49b180e..14120f8 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: ameter Section: user/utilities Priority: optional Maintainer: Ivan Gorinov -Build-Depends: debhelper (>= 5), libqt4-dev, libqtm-dev, libqtm-sensors +Build-Depends: debhelper (>= 5), libqt4-dev, libqt4-dbus, libqtm-dev, libqtm-sensors Standards-Version: 3.7.3 Homepage: http://catori.ru/igorinov/software/ameter/ Bugtracker: https://garage.maemo.org/tracker/?group_id=2260 @@ -15,15 +15,54 @@ Description: Graphical acceleration indicator XB-Maemo-Display-Name: ameter XB-Maemo-Icon-26: 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 diff --git a/mainwindow.cpp b/mainwindow.cpp index 672c4e2..e3bac8c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,5 +1,10 @@ #include +#ifdef Q_WS_MAEMO_5 +#include +#include +#endif + #include "mainwindow.h" #include "asettings.h" #include "about.h" @@ -12,6 +17,10 @@ extern int smoothing; int data_rate = 0; +#ifdef Q_WS_MAEMO_5 +static QDBusConnection dBusConnection = QDBusConnection::systemBus(); +#endif + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { @@ -37,7 +46,14 @@ MainWindow::MainWindow(QWidget *parent) accelerometer->addFilter(awidget); accelerometer->setDataRate(data_rate); accelerometer->start(); - + +#ifdef Q_WS_MAEMO_5 + dBusInterface = new QDBusInterface(MCE_SERVICE, MCE_REQUEST_PATH, + MCE_REQUEST_IF, dBusConnection, this); + + dBusConnection.connect(MCE_SERVICE, MCE_SIGNAL_PATH, MCE_SIGNAL_IF, + MCE_DISPLAY_SIG, this, SLOT(screenChange(const QDBusMessage &))); +#endif } MainWindow::~MainWindow() @@ -57,8 +73,12 @@ void MainWindow::showSettings() { SettingsDialog dialog(this); QSettings settings("igorinov", "ameter", this); + int code; - if (dialog.exec() != QDialog::Accepted) + accelerometer->stop(); + code = dialog.exec(); + accelerometer->start(); + if (code != QDialog::Accepted) { return; } @@ -70,24 +90,11 @@ void MainWindow::showSettings() settings.setValue("rate", data_rate); awidget->setGravity(g_n); - accelerometer->stop(); accelerometer->setDataRate(data_rate); - accelerometer->start(); } void MainWindow::setOrientation(ScreenOrientation orientation) { -#if defined(Q_OS_SYMBIAN) - // If the version of Qt on the device is < 4.7.2, that attribute won't work - if (orientation != ScreenOrientationAuto) { - const QStringList v = QString::fromAscii(qVersion()).split(QLatin1Char('.')); - if (v.count() == 3 && (v.at(0).toInt() << 16 | v.at(1).toInt() << 8 | v.at(2).toInt()) < 0x040702) { - qWarning("Screen orientation locking only supported with Qt 4.7.2 and above"); - return; - } - } -#endif // Q_OS_SYMBIAN - Qt::WidgetAttribute attribute; switch (orientation) { #if QT_VERSION < 0x040702 @@ -129,3 +136,16 @@ void MainWindow::showExpanded() #endif } +#ifdef Q_WS_MAEMO_5 +void MainWindow::screenChange(const QDBusMessage &message) +{ + QString state = message.arguments().at(0).toString(); + if (!state.isEmpty()) { + if (state == MCE_DISPLAY_OFF_STRING) + accelerometer->stop(); + if (state == MCE_DISPLAY_ON_STRING) + accelerometer->start(); + } +} +#endif + diff --git a/mainwindow.h b/mainwindow.h index 59e8c86..8411575 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -8,6 +8,10 @@ #include +#ifdef Q_WS_MAEMO_5 +#include +#endif + // Neccessary for Qt Mobility API usage QTM_USE_NAMESPACE @@ -34,10 +38,16 @@ public: public slots: void showAbout(); void showSettings(); +#ifdef Q_WS_MAEMO_5 + void screenChange(const QDBusMessage &message); +#endif private: QAccelerometer *accelerometer; AMeterWidget *awidget; +#ifdef Q_WS_MAEMO_5 + QDBusInterface *dBusInterface; +#endif }; #endif // MAINWINDOW_H -- 1.7.9.5