From db2df16d1aa7ece4ee27b16122142c002b01d65d Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 9 Nov 2011 11:31:53 +1000 Subject: add documentation to sensor gesture c++ example Also make the example app a bit more informative and useful. Change-Id: I9e74d12c7d762df46355467670f0b9b41e7b3b5c Sanity-Review: Qt Sanity Bot Reviewed-by: Lincoln Ramsay --- examples/sensors/sensorgestures/mainwindow.cpp | 94 +++++++++++++++++++++++--- examples/sensors/sensorgestures/mainwindow.h | 6 ++ examples/sensors/sensorgestures/mainwindow.ui | 35 ++++++++-- examples/sensors/sensors.pro | 8 +-- 4 files changed, 123 insertions(+), 20 deletions(-) (limited to 'examples') diff --git a/examples/sensors/sensorgestures/mainwindow.cpp b/examples/sensors/sensorgestures/mainwindow.cpp index 668d7a21..41e1a2b3 100644 --- a/examples/sensors/sensorgestures/mainwindow.cpp +++ b/examples/sensors/sensorgestures/mainwindow.cpp @@ -38,7 +38,8 @@ ** ****************************************************************************/ -#include +#include +#include #include "mainwindow.h" #include "ui_mainwindow.h" @@ -51,19 +52,24 @@ MainWindow::MainWindow(QWidget *parent) ui(new Ui::MainWindow) { ui->setupUi(this); + //! [0] QSensorGestureManager manager; - QSensorGesture *thisGesture = new QSensorGesture(manager.gestureIds(), this); + Q_FOREACH (const QString &gesture, manager.gestureIds()) { - if (thisGesture->availableIds().contains("QtSensors.shake")) { - connect(thisGesture,SIGNAL(shake()), - this,SLOT(onShake())); + QTreeWidgetItem *gestureId = new QTreeWidgetItem(ui->treeWidget); + QStringList recognizerSignals = manager.recognizerSignals(gesture); + gestureId->setText(0,gesture); + + for (int i = 0; i < recognizerSignals.count(); i++) { + QTreeWidgetItem *oneSignal = new QTreeWidgetItem(gestureId); + oneSignal->setText(0,recognizerSignals.at(i)); + } + ui->treeWidget->insertTopLevelItem(0,gestureId); } + //! [0] - connect(thisGesture,SIGNAL(detected(QString)), - this,SLOT(detectedShake(QString))); - thisGesture->startDetection(); ui->textEdit->setReadOnly(true); } @@ -75,7 +81,7 @@ MainWindow::~MainWindow() void MainWindow::detectedShake(const QString &name) { - QString str = ""+name+"
"; + QString str = ""+name+"
"; ui->textEdit->insertHtml(str); ui->textEdit->ensureCursorVisible(); } @@ -87,8 +93,76 @@ void MainWindow::on_pushButton_clicked() void MainWindow::onShake() { - QString str = "onShake()
"; + QString str = "onShake()
"; ui->textEdit->insertHtml(str); ui->textEdit->ensureCursorVisible(); } +void MainWindow::on_startPushButton_clicked() +{ + if (ui->treeWidget->currentItem() == 0) + return; + QString currentRecognizer; + + if (ui->treeWidget->currentItem()->childCount() == 0) { + currentRecognizer = ui->treeWidget->currentItem()->parent()->text(0); + } else { + currentRecognizer = ui->treeWidget->currentItem()->text(0); + } + + if (recognizerMap.contains(currentRecognizer)) + return; + //! [1] + QSensorGestureManager manager; + QSensorGesture *thisGesture = new QSensorGesture(QStringList() << currentRecognizer, this); + + if (currentRecognizer.contains("QtSensors.shake")) { + connect(thisGesture,SIGNAL(shake()), + this,SLOT(onShake())); + } + + connect(thisGesture,SIGNAL(detected(QString)), + this,SLOT(detectedShake(QString))); + thisGesture->startDetection(); + + //! [1] + + recognizerMap.insert(currentRecognizer,thisGesture); + + QString str = QString("Started %1
").arg(currentRecognizer); + ui->textEdit->insertHtml(str); + ui->textEdit->ensureCursorVisible(); +} + +void MainWindow::on_stopPushButton_clicked() +{ + if (ui->treeWidget->currentItem() == 0) + return; + QString currentRecognizer; + + if (ui->treeWidget->currentItem()->childCount() == 0) { + currentRecognizer = ui->treeWidget->currentItem()->parent()->text(0); + } else { + currentRecognizer = ui->treeWidget->currentItem()->text(0); + } + + if (!recognizerMap.contains(currentRecognizer)) + return; + //! [2] + + recognizerMap[currentRecognizer]->stopDetection(); + + if (currentRecognizer == "QtSensors.shake") { + disconnect(recognizerMap[currentRecognizer],SIGNAL(shake()), + this,SLOT(onShake())); + } + disconnect(recognizerMap[currentRecognizer],SIGNAL(detected(QString)), + this,SLOT(detectedShake(QString))); + //! [2] + + recognizerMap.take(currentRecognizer); + + QString str = QString("Stopped %1
").arg(currentRecognizer); + ui->textEdit->insertHtml(str); + ui->textEdit->ensureCursorVisible(); +} diff --git a/examples/sensors/sensorgestures/mainwindow.h b/examples/sensors/sensorgestures/mainwindow.h index 24a6f63c..d0fd7f73 100644 --- a/examples/sensors/sensorgestures/mainwindow.h +++ b/examples/sensors/sensorgestures/mainwindow.h @@ -42,6 +42,7 @@ #define MAINWINDOW_H #include +#include namespace Ui { class MainWindow; @@ -57,11 +58,16 @@ public: private: Ui::MainWindow *ui; + QMap recognizerMap; + private slots: void detectedShake(const QString&); void onShake(); void on_pushButton_clicked(); + + void on_startPushButton_clicked(); + void on_stopPushButton_clicked(); }; #endif // MAINWINDOW_H diff --git a/examples/sensors/sensorgestures/mainwindow.ui b/examples/sensors/sensorgestures/mainwindow.ui index b0bff42d..baccf98c 100644 --- a/examples/sensors/sensorgestures/mainwindow.ui +++ b/examples/sensors/sensorgestures/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 423 + 474 @@ -15,18 +15,41 @@ - + + + + + Gesture Recognizer Id + + + + + + + + Start + + + + + + + Stop + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:8pt;">hello</span></p></body></html> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;"></p></body></html> - + Clear @@ -40,7 +63,7 @@ p, li { white-space: pre-wrap; } 0 0 - 400 + 423 22 diff --git a/examples/sensors/sensors.pro b/examples/sensors/sensors.pro index 9826b522..50b5fac0 100644 --- a/examples/sensors/sensors.pro +++ b/examples/sensors/sensors.pro @@ -2,8 +2,8 @@ TEMPLATE = subdirs SUBDIRS += \ accel\ - grue - -contains(QT_CONFIG,widgets):SUBDIRS += \ - sensor_explorer \ + grue \ sensorgestures + +#contains(QT_CONFIG,widgets):SUBDIRS += \ + # sensor_explorer \ -- cgit v1.2.3