diff options
author | David Boddie <dboddie@trolltech.com> | 2009-10-13 17:26:35 (GMT) |
---|---|---|
committer | David Boddie <dboddie@trolltech.com> | 2009-10-16 15:15:22 (GMT) |
commit | f0688de89cb82f6d3715bb03d7706fca4e6ab86f (patch) | |
tree | fd945f5a0852e1e089b271d8c609b3f752f5aa6f /examples/gestures/imageviewer | |
parent | 0266b3d62eb9f091c93dc6b2c59eaad0f64ddedc (diff) | |
download | Qt-f0688de89cb82f6d3715bb03d7706fca4e6ab86f.zip Qt-f0688de89cb82f6d3715bb03d7706fca4e6ab86f.tar.gz Qt-f0688de89cb82f6d3715bb03d7706fca4e6ab86f.tar.bz2 |
Doc: Moving the Image Gestures example.
Reviewed-by: Trust Me
Diffstat (limited to 'examples/gestures/imageviewer')
-rw-r--r-- | examples/gestures/imageviewer/imageviewer.pro | 16 | ||||
-rw-r--r-- | examples/gestures/imageviewer/imagewidget.cpp | 268 | ||||
-rw-r--r-- | examples/gestures/imageviewer/imagewidget.h | 98 | ||||
-rw-r--r-- | examples/gestures/imageviewer/main.cpp | 59 | ||||
-rw-r--r-- | examples/gestures/imageviewer/mainwidget.cpp | 56 | ||||
-rw-r--r-- | examples/gestures/imageviewer/mainwidget.h | 63 |
6 files changed, 0 insertions, 560 deletions
diff --git a/examples/gestures/imageviewer/imageviewer.pro b/examples/gestures/imageviewer/imageviewer.pro deleted file mode 100644 index 7780ad9..0000000 --- a/examples/gestures/imageviewer/imageviewer.pro +++ /dev/null @@ -1,16 +0,0 @@ -HEADERS = imagewidget.h \ - mainwidget.h -SOURCES = imagewidget.cpp \ - main.cpp \ - mainwidget.cpp - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/gestures/imageviewer -sources.files = $$SOURCES \ - $$HEADERS \ - $$RESOURCES \ - $$FORMS \ - imageviewer.pro -sources.path = $$[QT_INSTALL_EXAMPLES]/gestures/imageviewer -INSTALLS += target \ - sources diff --git a/examples/gestures/imageviewer/imagewidget.cpp b/examples/gestures/imageviewer/imagewidget.cpp deleted file mode 100644 index c4a4e50..0000000 --- a/examples/gestures/imageviewer/imagewidget.cpp +++ /dev/null @@ -1,268 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "imagewidget.h" - -#include <QtGui> - -ImageWidget::ImageWidget(QWidget *parent) - : QWidget(parent), - position(0), - horizontalOffset(0), - verticalOffset(0), - rotationAngle(0), - scaleFactor(1) - -{ - setObjectName("ImageWidget"); - setMinimumSize(QSize(100,100)); - - setAttribute(Qt::WA_PaintOnScreen); - setAttribute(Qt::WA_OpaquePaintEvent); - setAttribute(Qt::WA_NoSystemBackground); - -//! [enable gestures] - grabGesture(Qt::PanGesture); - grabGesture(Qt::PinchGesture); - grabGesture(Qt::SwipeGesture); -//! [enable gestures] -} - -//! [event handler] -bool ImageWidget::event(QEvent *event) -{ - if (event->type() == QEvent::Gesture) - return gestureEvent(static_cast<QGestureEvent*>(event)); - return QWidget::event(event); -} -//! [event handler] - -void ImageWidget::paintEvent(QPaintEvent*) -{ - QPainter p(this); - p.fillRect(rect(), Qt::white); - - float iw = currentImage.width(); - float ih = currentImage.height(); - float wh = height(); - float ww = width(); - - p.translate(ww/2, wh/2); - p.translate(horizontalOffset, verticalOffset); - p.rotate(rotationAngle); - p.scale(scaleFactor, scaleFactor); - p.translate(-iw/2, -ih/2); - p.drawImage(0, 0, currentImage); -} - -void ImageWidget::mouseDoubleClickEvent(QMouseEvent *) -{ - rotationAngle = 0; - scaleFactor = 1; - verticalOffset = 0; - horizontalOffset = 0; - update(); -} - -//! [gesture event handler] -bool ImageWidget::gestureEvent(QGestureEvent *event) -{ - if (QGesture *pan = event->gesture(Qt::PanGesture)) { - panTriggered(static_cast<QPanGesture*>(pan)); - return true; - } else if (QGesture *pinch = event->gesture(Qt::PinchGesture)) { - pinchTriggered(static_cast<QPinchGesture*>(pinch)); - return true; - } else if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) { - swipeTriggered(static_cast<QSwipeGesture*>(swipe)); - return true; - } - return false; -} -//! [gesture event handler] - -void ImageWidget::panTriggered(QPanGesture *gesture) -{ -#ifndef QT_NO_CURSOR - switch (gesture->state()) { - case Qt::GestureStarted: - case Qt::GestureUpdated: - setCursor(Qt::SizeAllCursor); - break; - default: - setCursor(Qt::ArrowCursor); - } -#endif - QSizeF lastOffset = gesture->offset(); - horizontalOffset += lastOffset.width(); - verticalOffset += lastOffset.height(); - update(); -} - -void ImageWidget::pinchTriggered(QPinchGesture *gesture) -{ - QPinchGesture::WhatChanged whatChanged = gesture->whatChanged(); - if (whatChanged & QPinchGesture::RotationAngleChanged) { - qreal value = gesture->property("rotationAngle").toReal(); - qreal lastValue = gesture->property("lastRotationAngle").toReal(); - rotationAngle += value - lastValue; - } - if (whatChanged & QPinchGesture::ScaleFactorChanged) { - qreal value = gesture->property("scaleFactor").toReal(); - qreal lastValue = gesture->property("lastScaleFactor").toReal(); - scaleFactor += value - lastValue; - } - update(); -} - -//! [swipe function] -void ImageWidget::swipeTriggered(QSwipeGesture *gesture) -{ - if (gesture->horizontalDirection() == QSwipeGesture::Left - || gesture->verticalDirection() == QSwipeGesture::Up) - goPrevImage(); - else - goNextImage(); - update(); -} -//! [swipe function] - -void ImageWidget::resizeEvent(QResizeEvent*) -{ - update(); -} - -void ImageWidget::openDirectory(const QString &path) -{ - this->path = path; - QDir dir(path); - QStringList nameFilters; - nameFilters << "*.jpg" << "*.png"; - files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name); - - position = 0; - goToImage(0); - update(); -} - -QImage ImageWidget::loadImage(const QString &fileName) -{ - QImageReader reader(fileName); - if (!reader.canRead()) { - qDebug() << fileName << ": can't load image"; - return QImage(); - } - - QImage image; - if (!reader.read(&image)) { - qDebug() << fileName << ": corrupted image"; - return QImage(); - } - return image; -} - -void ImageWidget::goNextImage() -{ - if (files.isEmpty()) - return; - - if (position < files.size()-1) { - ++position; - prevImage = currentImage; - currentImage = nextImage; - if (position+1 < files.size()) - nextImage = loadImage(path+QLatin1String("/")+files.at(position+1)); - else - nextImage = QImage(); - } - update(); -} - -void ImageWidget::goPrevImage() -{ - if (files.isEmpty()) - return; - - if (position > 0) { - --position; - nextImage = currentImage; - currentImage = prevImage; - if (position > 0) - prevImage = loadImage(path+QLatin1String("/")+files.at(position-1)); - else - prevImage = QImage(); - } - update(); -} - -void ImageWidget::goToImage(int index) -{ - if (files.isEmpty()) - return; - - if (index < 0 || index >= files.size()) { - qDebug() << "goToImage: invalid index: " << index; - return; - } - - if (index == position+1) { - goNextImage(); - return; - } - - if (position > 0 && index == position-1) { - goPrevImage(); - return; - } - - position = index; - - if (index > 0) - prevImage = loadImage(path+QLatin1String("/")+files.at(position-1)); - else - prevImage = QImage(); - currentImage = loadImage(path+QLatin1String("/")+files.at(position)); - if (position+1 < files.size()) - nextImage = loadImage(path+QLatin1String("/")+files.at(position+1)); - else - nextImage = QImage(); - update(); -} diff --git a/examples/gestures/imageviewer/imagewidget.h b/examples/gestures/imageviewer/imagewidget.h deleted file mode 100644 index 7b91fbf..0000000 --- a/examples/gestures/imageviewer/imagewidget.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef IMAGEWIDGET_H -#define IMAGEWIDGET_H - -#include <QWidget> -#include <QImage> -#include <QtGui> - -QT_BEGIN_NAMESPACE -class QGestureEvent; -class QPanGesture; -class QPinchGesture; -class QSwipeGesture; -QT_END_NAMESPACE - -class ImageWidget : public QWidget -{ - Q_OBJECT - -public: - ImageWidget(QWidget *parent = 0); - - void openDirectory(const QString &path); - -protected: - bool event(QEvent*); - bool gestureEvent(QGestureEvent*); - void paintEvent(QPaintEvent*); - void resizeEvent(QResizeEvent*); - void mouseDoubleClickEvent(QMouseEvent*); - -private: - void panTriggered(QPanGesture*); - void pinchTriggered(QPinchGesture*); - void swipeTriggered(QSwipeGesture*); - -private: - void updateImage(); - QImage loadImage(const QString &fileName); - void loadImage(); - void goNextImage(); - void goPrevImage(); - void goToImage(int index); - - QString path; - QStringList files; - int position; - - QImage prevImage, nextImage; - QImage currentImage; - - float horizontalOffset; - float verticalOffset; - float rotationAngle; - float scaleFactor; -}; - -#endif diff --git a/examples/gestures/imageviewer/main.cpp b/examples/gestures/imageviewer/main.cpp deleted file mode 100644 index 9c99f31..0000000 --- a/examples/gestures/imageviewer/main.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtGui> - -#include "mainwidget.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - MainWidget w; - w.show(); - - if (QApplication::arguments().size() > 1) - w.openDirectory(QApplication::arguments().at(1)); - else - w.openDirectory(QFileDialog::getExistingDirectory(0, "Select image folder")); - - return app.exec(); -} diff --git a/examples/gestures/imageviewer/mainwidget.cpp b/examples/gestures/imageviewer/mainwidget.cpp deleted file mode 100644 index 51e9f1e..0000000 --- a/examples/gestures/imageviewer/mainwidget.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "imagewidget.h" -#include "mainwidget.h" - -MainWidget::MainWidget(QWidget *parent) - : QMainWindow(parent) -{ - resize(400, 300); - imageWidget = new ImageWidget(this); - setCentralWidget(imageWidget); -} - -void MainWidget::openDirectory(const QString &path) -{ - imageWidget->openDirectory(path); -} diff --git a/examples/gestures/imageviewer/mainwidget.h b/examples/gestures/imageviewer/mainwidget.h deleted file mode 100644 index 1a99155..0000000 --- a/examples/gestures/imageviewer/mainwidget.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef MAINWIDGET_H -#define MAINWIDGET_H - -#include <QMainWindow> - -class MainWidget : public QMainWindow -{ - Q_OBJECT - -public: - MainWidget(QWidget *parent = 0); - -public slots: - void openDirectory(const QString &path); - -private: - bool loadImage(const QString &fileName); - - ImageWidget *imageWidget; -}; - -#endif |