Stop the accelerometer while the screen is locked
authorIvan Gorinov <igorinov@gmail.com>
Wed, 2 Nov 2011 05:44:44 +0000 (22:44 -0700)
committerIvan Gorinov <igorinov@gmail.com>
Wed, 2 Nov 2011 05:44:44 +0000 (22:44 -0700)
ameter.pro
debian/control
mainwindow.cpp
mainwindow.h

index c0b673d..1ec0114 100644 (file)
@@ -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 \
index 49b180e..14120f8 100644 (file)
@@ -2,7 +2,7 @@ Source: ameter
 Section: user/utilities
 Priority: optional
 Maintainer: Ivan Gorinov <igorinov@gmail.com>
-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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
-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
+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
 
index 672c4e2..e3bac8c 100644 (file)
@@ -1,5 +1,10 @@
 #include <QtCore/QCoreApplication>
 
+#ifdef Q_WS_MAEMO_5
+#include <mce/dbus-names.h>
+#include <mce/mode-names.h>
+#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
+
index 59e8c86..8411575 100644 (file)
@@ -8,6 +8,10 @@
 
 #include <QtSensors/QAccelerometer>
 
+#ifdef Q_WS_MAEMO_5
+#include <QtDBus/QtDBus>
+#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