summaryrefslogtreecommitdiffstats
path: root/examples/widgets/gestures/imagegestures/imagewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/gestures/imagegestures/imagewidget.cpp')
-rw-r--r--examples/widgets/gestures/imagegestures/imagewidget.cpp56
1 files changed, 37 insertions, 19 deletions
diff --git a/examples/widgets/gestures/imagegestures/imagewidget.cpp b/examples/widgets/gestures/imagegestures/imagewidget.cpp
index aad40afc26..57c2af4502 100644
--- a/examples/widgets/gestures/imagegestures/imagewidget.cpp
+++ b/examples/widgets/gestures/imagegestures/imagewidget.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the examples of the Qt Toolkit.
@@ -43,6 +43,8 @@
#include <QtWidgets>
+Q_LOGGING_CATEGORY(lcExample, "qt.examples.imagegestures")
+
//! [constructor]
ImageWidget::ImageWidget(QWidget *parent)
: QWidget(parent),
@@ -55,15 +57,17 @@ ImageWidget::ImageWidget(QWidget *parent)
{
setMinimumSize(QSize(100,100));
-
-//! [enable gestures]
- grabGesture(Qt::PanGesture);
- grabGesture(Qt::PinchGesture);
- grabGesture(Qt::SwipeGesture);
-//! [enable gestures]
}
//! [constructor]
+void ImageWidget::grabGestures(const QList<Qt::GestureType> &gestures)
+{
+ //! [enable gestures]
+ foreach (Qt::GestureType gesture, gestures)
+ grabGesture(gesture);
+ //! [enable gestures]
+}
+
//! [event handler]
bool ImageWidget::event(QEvent *event)
{
@@ -77,10 +81,10 @@ void ImageWidget::paintEvent(QPaintEvent*)
{
QPainter p(this);
- float iw = currentImage.width();
- float ih = currentImage.height();
- float wh = height();
- float ww = width();
+ const qreal iw = currentImage.width();
+ const qreal ih = currentImage.height();
+ const qreal wh = height();
+ const qreal ww = width();
p.translate(ww/2, wh/2);
p.translate(horizontalOffset, verticalOffset);
@@ -98,11 +102,13 @@ void ImageWidget::mouseDoubleClickEvent(QMouseEvent *)
verticalOffset = 0;
horizontalOffset = 0;
update();
+ qCDebug(lcExample) << "reset on mouse double click";
}
//! [gesture event handler]
bool ImageWidget::gestureEvent(QGestureEvent *event)
{
+ qCDebug(lcExample) << "gestureEvent():" << event->gestures().size();
if (QGesture *swipe = event->gesture(Qt::SwipeGesture))
swipeTriggered(static_cast<QSwipeGesture *>(swipe));
else if (QGesture *pan = event->gesture(Qt::PanGesture))
@@ -126,6 +132,7 @@ void ImageWidget::panTriggered(QPanGesture *gesture)
}
#endif
QPointF delta = gesture->delta();
+ qCDebug(lcExample) << "panTriggered():" << delta;
horizontalOffset += delta.x();
verticalOffset += delta.y();
update();
@@ -135,13 +142,16 @@ void ImageWidget::pinchTriggered(QPinchGesture *gesture)
{
QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
if (changeFlags & QPinchGesture::RotationAngleChanged) {
- qreal value = gesture->property("rotationAngle").toReal();
- qreal lastValue = gesture->property("lastRotationAngle").toReal();
- rotationAngle += value - lastValue;
+ const qreal value = gesture->property("rotationAngle").toReal();
+ const qreal lastValue = gesture->property("lastRotationAngle").toReal();
+ const qreal rotationAngleDelta = value - lastValue;
+ rotationAngle += rotationAngleDelta;
+ qCDebug(lcExample) << "pinchTriggered(): rotation by" << rotationAngleDelta << rotationAngle;
}
if (changeFlags & QPinchGesture::ScaleFactorChanged) {
qreal value = gesture->property("scaleFactor").toReal();
currentStepScaleFactor = value;
+ qCDebug(lcExample) << "pinchTriggered(): " << currentStepScaleFactor;
}
if (gesture->state() == Qt::GestureFinished) {
scaleFactor *= currentStepScaleFactor;
@@ -155,10 +165,13 @@ void ImageWidget::swipeTriggered(QSwipeGesture *gesture)
{
if (gesture->state() == Qt::GestureFinished) {
if (gesture->horizontalDirection() == QSwipeGesture::Left
- || gesture->verticalDirection() == QSwipeGesture::Up)
+ || gesture->verticalDirection() == QSwipeGesture::Up) {
+ qCDebug(lcExample) << "swipeTriggered(): swipe to previous";
goPrevImage();
- else
+ } else {
+ qCDebug(lcExample) << "swipeTriggered(): swipe to next";
goNextImage();
+ }
update();
}
}
@@ -184,17 +197,22 @@ void ImageWidget::openDirectory(const QString &path)
QImage ImageWidget::loadImage(const QString &fileName)
{
+ qDebug() << position << files << fileName;
QImageReader reader(fileName);
+ qCDebug(lcExample) << "loading" << QDir::toNativeSeparators(fileName) << position << '/' << files.size();
if (!reader.canRead()) {
- qDebug() << fileName << ": can't load image";
+ qCWarning(lcExample) << QDir::toNativeSeparators(fileName) << ": can't load image";
return QImage();
}
QImage image;
if (!reader.read(&image)) {
- qDebug() << fileName << ": corrupted image";
+ qCWarning(lcExample) << QDir::toNativeSeparators(fileName) << ": corrupted image: " << reader.errorString();
return QImage();
}
+ const QSize maximumSize(2000, 2000); // Reduce in case someone has large photo images.
+ if (image.size().width() > maximumSize.width() || image.height() > maximumSize.height())
+ image = image.scaled(maximumSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
return image;
}
@@ -238,7 +256,7 @@ void ImageWidget::goToImage(int index)
return;
if (index < 0 || index >= files.size()) {
- qDebug() << "goToImage: invalid index: " << index;
+ qCWarning(lcExample) << "goToImage: invalid index: " << index;
return;
}