diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-26 13:30:08 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-26 13:31:31 +0300 |
commit | 48f8fc6a63a25970c2fac66ae6a201d67fed2f9d (patch) | |
tree | a492e6fd338dd1b519cf3fcd020704a2e4c9bcca /tests | |
parent | 037d0960a2bde8ad310a9917055c7c0c3488152a (diff) |
Kinect demo updated
Change-Id: Ide3da14d644bd5a88414a82a0fcdb52eb4ead3cc
Change-Id: Ide3da14d644bd5a88414a82a0fcdb52eb4ead3cc
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/kinectsurface/main.cpp | 47 | ||||
-rw-r--r-- | tests/kinectsurface/surfacedata.cpp | 74 | ||||
-rw-r--r-- | tests/kinectsurface/surfacedata.h | 9 |
3 files changed, 105 insertions, 25 deletions
diff --git a/tests/kinectsurface/main.cpp b/tests/kinectsurface/main.cpp index 0f9b9731..b9469c8b 100644 --- a/tests/kinectsurface/main.cpp +++ b/tests/kinectsurface/main.cpp @@ -26,6 +26,7 @@ #include <QLabel> #include <QComboBox> #include <QSlider> +#include <QTextEdit> #include <QScreen> int main(int argc, char **argv) @@ -70,8 +71,39 @@ int main(int argc, char **argv) distanceSlider->setValue(50); distanceSlider->setMaximum(200); - QLabel *status = new QLabel(widget); - status->setText(QStringLiteral("Stopped")); + QLinearGradient gradientOne(0, 0, 200, 1); + gradientOne.setColorAt(0.0, Qt::black); + gradientOne.setColorAt(0.33, Qt::blue); + gradientOne.setColorAt(0.67, Qt::red); + gradientOne.setColorAt(1.0, Qt::yellow); + + QPixmap pm(200, 24); + QPainter pmp(&pm); + pmp.setBrush(QBrush(gradientOne)); + pmp.setPen(Qt::NoPen); + pmp.drawRect(0, 0, 200, 24); + + QPushButton *gradientOneButton = new QPushButton(widget); + gradientOneButton->setIcon(QIcon(pm)); + gradientOneButton->setIconSize(QSize(200, 24)); + gradientOneButton->setToolTip(QStringLiteral("Colors: Thermal Imitation")); + + QLinearGradient gradientTwo(0, 0, 200, 1); + gradientTwo.setColorAt(0.0, Qt::white); + gradientTwo.setColorAt(0.8, Qt::red); + gradientTwo.setColorAt(1.0, Qt::green); + + pmp.setBrush(QBrush(gradientTwo)); + pmp.setPen(Qt::NoPen); + pmp.drawRect(0, 0, 200, 24); + + QPushButton *gradientTwoButton = new QPushButton(widget); + gradientTwoButton->setIcon(QIcon(pm)); + gradientTwoButton->setIconSize(QSize(200, 24)); + gradientTwoButton->setToolTip(QStringLiteral("Colors: Highlight Foreground")); + + QTextEdit *status = new QTextEdit(QStringLiteral("<b>Ready</b><br>"), widget); + status->setReadOnly(true); vLayout->addWidget(startButton); vLayout->addWidget(stopButton); @@ -79,8 +111,10 @@ int main(int argc, char **argv) vLayout->addWidget(resolutionBox); vLayout->addWidget(new QLabel(QStringLiteral("Adjust far distance"))); vLayout->addWidget(distanceSlider); - vLayout->addWidget(new QLabel(QStringLiteral("Kinect state:")), 1, Qt::AlignBottom); - vLayout->addWidget(status, 0, Qt::AlignBottom); + vLayout->addWidget(new QLabel(QStringLiteral("Change color scheme"))); + vLayout->addWidget(gradientOneButton); + vLayout->addWidget(gradientTwoButton); + vLayout->addWidget(status, 1, Qt::AlignBottom); widget->show(); @@ -90,6 +124,11 @@ int main(int argc, char **argv) QObject::connect(stopButton, &QPushButton::clicked, datagen, &SurfaceData::stop); QObject::connect(distanceSlider, &QSlider::valueChanged, datagen, &SurfaceData::setDistance); QObject::connect(resolutionBox, SIGNAL(activated(int)), datagen, SLOT(setResolution(int))); + QObject::connect(status, &QTextEdit::textChanged, datagen, &SurfaceData::scrollDown); + QObject::connect(gradientOneButton, &QPushButton::clicked, datagen, + &SurfaceData::useGradientOne); + QObject::connect(gradientTwoButton, &QPushButton::clicked, datagen, + &SurfaceData::useGradientTwo); datagen->setDistance(distanceSlider->value()); diff --git a/tests/kinectsurface/surfacedata.cpp b/tests/kinectsurface/surfacedata.cpp index d635f954..1b19d136 100644 --- a/tests/kinectsurface/surfacedata.cpp +++ b/tests/kinectsurface/surfacedata.cpp @@ -20,20 +20,23 @@ #include "surfacedata.h" #include "QKinectWrapper.h" -#include <QHeightMapSurfaceDataProxy> -#include <Q3DValueAxis> +#include <QtDataVisualization/QHeightMapSurfaceDataProxy> +#include <QtDataVisualization/Q3DValueAxis> +#include <QScrollBar> +#include <QSize> #include <QDebug> QT_DATAVISUALIZATION_USE_NAMESPACE -SurfaceData::SurfaceData(Q3DSurface *surface, QLabel *statusLabel) : +SurfaceData::SurfaceData(Q3DSurface *surface, QTextEdit *statusArea) : m_surface(surface), - m_statusLabel(statusLabel), + m_statusArea(statusArea), m_resize(true), m_resolution(QSize(320, 240)) { // Initialize surface + m_surface->setTheme(QDataVis::ThemeIsabelle); QLinearGradient gradient; gradient.setColorAt(0.0, Qt::black); gradient.setColorAt(0.33, Qt::blue); @@ -47,6 +50,9 @@ SurfaceData::SurfaceData(Q3DSurface *surface, QLabel *statusLabel) : m_surface->setSmoothSurfaceEnabled(false); m_surface->setActiveDataProxy(new QHeightMapSurfaceDataProxy()); + // Hide scroll bar + m_statusArea->verticalScrollBar()->setVisible(false); + // Connect Kinect signals connect(&m_kinect, &QKinect::QKinectWrapper::dataNotification, this, &SurfaceData::updateData); connect(&m_kinect, &QKinect::QKinectWrapper::statusNotification, this, @@ -70,19 +76,22 @@ void SurfaceData::updateStatus(QKinect::KinectStatus status) { switch (status) { case QKinect::Idle: { - m_statusLabel->setText(QStringLiteral("Stopped")); + m_statusArea->append(QStringLiteral("<b>Kinect:</b> Stopped")); + m_statusArea->append(QStringLiteral("<br><b>Ready</b><br>")); break; } case QKinect::Initializing: { - m_statusLabel->setText(QStringLiteral("Initializing")); + m_statusArea->append(QStringLiteral("<b>Kinect:</b> Initializing")); break; } case QKinect::OkRun: { - m_statusLabel->setText(QStringLiteral("Ok")); + m_statusArea->append(QStringLiteral("<b>Kinect:</b> Running")); + m_statusArea->append(QString(QStringLiteral("<i> - resolution: %1 x %2</i>")).arg( + m_resolution.width()).arg(m_resolution.height())); break; } default: { - m_statusLabel->setText(QStringLiteral("Error")); + m_statusArea->append(QStringLiteral("<b>Kinect:</b> Error")); break; } }; @@ -90,22 +99,18 @@ void SurfaceData::updateStatus(QKinect::KinectStatus status) void SurfaceData::start() { - if (m_kinect.isStopped()) { + if (m_kinect.isStopped()) m_kinect.start(); -#ifdef USE_TIMER_UPDATE - m_updateTimer.start(); -#endif - } + else + m_statusArea->append(QStringLiteral("<b>Kinect:</b> Already running")); } void SurfaceData::stop() { - if (m_kinect.isRunning()) { + if (m_kinect.isRunning()) m_kinect.stop(); -#ifdef USE_TIMER_UPDATE - m_updateTimer.stop(); -#endif - } + else + m_statusArea->append(QStringLiteral("<b>Kinect:</b> Already stopped")); } void SurfaceData::setDistance(int distance) @@ -137,4 +142,37 @@ void SurfaceData::setResolution(int selection) break; } }; + m_statusArea->append(QString(QStringLiteral("<b>Resolution:</b> %1 x %2")).arg( + m_resolution.width()).arg(m_resolution.height())); + if (m_kinect.isStopped()) + m_statusArea->append(QStringLiteral("<i> - change takes effect once Kinect is running</i>")); +} + +void SurfaceData::scrollDown() +{ + QScrollBar *scrollbar = m_statusArea->verticalScrollBar(); + scrollbar->setValue(scrollbar->maximum()); +} + +void SurfaceData::useGradientOne() +{ + m_surface->setTheme(QDataVis::ThemeIsabelle); + QLinearGradient gradient; + gradient.setColorAt(0.0, Qt::black); + gradient.setColorAt(0.33, Qt::blue); + gradient.setColorAt(0.67, Qt::red); + gradient.setColorAt(1.0, Qt::yellow); + m_surface->setGradient(gradient); + m_statusArea->append(QStringLiteral("<b>Colors:</b> Thermal image imitation")); +} + +void SurfaceData::useGradientTwo() +{ + m_surface->setTheme(QDataVis::ThemeQt); + QLinearGradient gradient; + gradient.setColorAt(0.0, Qt::white); + gradient.setColorAt(0.8, Qt::red); + gradient.setColorAt(1.0, Qt::green); + m_surface->setGradient(gradient); + m_statusArea->append(QStringLiteral("<b>Colors:</b> Highlight foreground")); } diff --git a/tests/kinectsurface/surfacedata.h b/tests/kinectsurface/surfacedata.h index 2c59206b..24b92fad 100644 --- a/tests/kinectsurface/surfacedata.h +++ b/tests/kinectsurface/surfacedata.h @@ -21,7 +21,7 @@ #include "QKinectWrapper.h" #include <QtDataVisualization/q3dsurface.h> -#include <QLabel> +#include <QTextEdit> using namespace QtDataVisualization; @@ -30,7 +30,7 @@ class SurfaceData : public QObject Q_OBJECT public: - explicit SurfaceData(Q3DSurface *surface, QLabel *statusLabel); + explicit SurfaceData(Q3DSurface *surface, QTextEdit *statusLabel); ~SurfaceData(); void start(); @@ -40,13 +40,16 @@ public: void updateStatus(QKinect::KinectStatus status); void setDistance(int distance); + void scrollDown(); + void useGradientOne(); + void useGradientTwo(); public slots: void setResolution(int selection); private: Q3DSurface *m_surface; - QLabel *m_statusLabel; + QTextEdit *m_statusArea; bool m_resize; QSize m_resolution; QKinect::QKinectWrapper m_kinect; |