diff options
Diffstat (limited to 'examples')
18 files changed, 348 insertions, 17 deletions
diff --git a/examples/gestures/imagegestures/imagewidget.cpp b/examples/gestures/imagegestures/imagewidget.cpp index f615129..afa0185 100644 --- a/examples/gestures/imagegestures/imagewidget.cpp +++ b/examples/gestures/imagegestures/imagewidget.cpp @@ -50,7 +50,8 @@ ImageWidget::ImageWidget(QWidget *parent) horizontalOffset(0), verticalOffset(0), rotationAngle(0), - scaleFactor(1) + scaleFactor(1), + currentStepScaleFactor(1) { setMinimumSize(QSize(100,100)); @@ -75,7 +76,6 @@ bool ImageWidget::event(QEvent *event) void ImageWidget::paintEvent(QPaintEvent*) { QPainter p(this); - p.fillRect(rect(), Qt::white); float iw = currentImage.width(); float ih = currentImage.height(); @@ -85,7 +85,7 @@ void ImageWidget::paintEvent(QPaintEvent*) p.translate(ww/2, wh/2); p.translate(horizontalOffset, verticalOffset); p.rotate(rotationAngle); - p.scale(scaleFactor, scaleFactor); + p.scale(currentStepScaleFactor * scaleFactor, currentStepScaleFactor * scaleFactor); p.translate(-iw/2, -ih/2); p.drawImage(0, 0, currentImage); } @@ -94,6 +94,7 @@ void ImageWidget::mouseDoubleClickEvent(QMouseEvent *) { rotationAngle = 0; scaleFactor = 1; + currentStepScaleFactor = 1; verticalOffset = 0; horizontalOffset = 0; update(); @@ -102,12 +103,12 @@ void ImageWidget::mouseDoubleClickEvent(QMouseEvent *) //! [gesture event handler] bool ImageWidget::gestureEvent(QGestureEvent *event) { - if (QGesture *pan = event->gesture(Qt::PanGesture)) + if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) + swipeTriggered(static_cast<QSwipeGesture *>(swipe)); + else if (QGesture *pan = event->gesture(Qt::PanGesture)) panTriggered(static_cast<QPanGesture *>(pan)); if (QGesture *pinch = event->gesture(Qt::PinchGesture)) pinchTriggered(static_cast<QPinchGesture *>(pinch)); - if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) - swipeTriggered(static_cast<QSwipeGesture *>(swipe)); return true; } //! [gesture event handler] @@ -140,8 +141,11 @@ void ImageWidget::pinchTriggered(QPinchGesture *gesture) } if (changeFlags & QPinchGesture::ScaleFactorChanged) { qreal value = gesture->property("scaleFactor").toReal(); - qreal lastValue = gesture->property("lastScaleFactor").toReal(); - scaleFactor += value - lastValue; + currentStepScaleFactor = value; + } + if (gesture->state() == Qt::GestureFinished) { + scaleFactor *= currentStepScaleFactor; + currentStepScaleFactor = 1; } update(); } @@ -149,12 +153,14 @@ void ImageWidget::pinchTriggered(QPinchGesture *gesture) //! [swipe function] void ImageWidget::swipeTriggered(QSwipeGesture *gesture) { - if (gesture->horizontalDirection() == QSwipeGesture::Left + if (gesture->state() == Qt::GestureFinished) { + if (gesture->horizontalDirection() == QSwipeGesture::Left || gesture->verticalDirection() == QSwipeGesture::Up) - goPrevImage(); - else - goNextImage(); - update(); + goPrevImage(); + else + goNextImage(); + update(); + } } //! [swipe function] diff --git a/examples/gestures/imagegestures/imagewidget.h b/examples/gestures/imagegestures/imagewidget.h index 56e2316..7a68488 100644 --- a/examples/gestures/imagegestures/imagewidget.h +++ b/examples/gestures/imagegestures/imagewidget.h @@ -93,6 +93,7 @@ private: float verticalOffset; float rotationAngle; float scaleFactor; + float currentStepScaleFactor; //! [class definition end] }; //! [class definition end] diff --git a/examples/graphicsview/graphicsview.pro b/examples/graphicsview/graphicsview.pro index a919c74..210ab1f 100644 --- a/examples/graphicsview/graphicsview.pro +++ b/examples/graphicsview/graphicsview.pro @@ -9,7 +9,8 @@ SUBDIRS = \ diagramscene \ dragdroprobot \ flowlayout \ - anchorlayout + anchorlayout \ + weatheranchorlayout contains(QT_CONFIG, qt3support):SUBDIRS += portedcanvas portedasteroids contains(DEFINES, QT_NO_CURSOR)|contains(DEFINES, QT_NO_DRAGANDDROP): SUBDIRS -= dragdroprobot diff --git a/examples/graphicsview/weatheranchorlayout/images/5days.jpg b/examples/graphicsview/weatheranchorlayout/images/5days.jpg Binary files differnew file mode 100644 index 0000000..fd92ba8 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/images/5days.jpg diff --git a/examples/graphicsview/weatheranchorlayout/images/details.jpg b/examples/graphicsview/weatheranchorlayout/images/details.jpg Binary files differnew file mode 100644 index 0000000..fde0448 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/images/details.jpg diff --git a/examples/graphicsview/weatheranchorlayout/images/place.jpg b/examples/graphicsview/weatheranchorlayout/images/place.jpg Binary files differnew file mode 100644 index 0000000..03e5344 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/images/place.jpg diff --git a/examples/graphicsview/weatheranchorlayout/images/tabbar.jpg b/examples/graphicsview/weatheranchorlayout/images/tabbar.jpg Binary files differnew file mode 100644 index 0000000..7777662 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/images/tabbar.jpg diff --git a/examples/graphicsview/weatheranchorlayout/images/title.jpg b/examples/graphicsview/weatheranchorlayout/images/title.jpg Binary files differnew file mode 100644 index 0000000..fa84c81 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/images/title.jpg diff --git a/examples/graphicsview/weatheranchorlayout/images/weather-few-clouds.png b/examples/graphicsview/weatheranchorlayout/images/weather-few-clouds.png Binary files differnew file mode 100644 index 0000000..eea6ce6 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/images/weather-few-clouds.png diff --git a/examples/graphicsview/weatheranchorlayout/main.cpp b/examples/graphicsview/weatheranchorlayout/main.cpp new file mode 100644 index 0000000..9002828 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/main.cpp @@ -0,0 +1,275 @@ +/**************************************************************************** +** +** 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 <QLabel> +#include <QPainter> +#include <QPushButton> +#include <QApplication> + +#include <QGraphicsView> +#include <QGraphicsScene> +#include <QGraphicsWidget> +#include <QGraphicsProxyWidget> +#include <QGraphicsAnchorLayout> +#include <QGraphicsSceneResizeEvent> + + +class PixmapWidget : public QGraphicsLayoutItem +{ + +public: + PixmapWidget(const QPixmap &pix) : QGraphicsLayoutItem() + { + original = new QGraphicsPixmapItem(pix); + setGraphicsItem(original); + original->show(); + r = QRectF(QPointF(0, 0), pix.size()); + } + + ~PixmapWidget() + { + setGraphicsItem(0); + delete original; + } + + void setZValue(qreal z) + { + original->setZValue(z); + } + + void setGeometry (const QRectF &rect) + { + original->scale(rect.width() / r.width(), rect.height() / r.height()); + original->setPos(rect.x(), rect.y()); + r = rect; + } + +protected: + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const + { + Q_UNUSED(constraint); + QSizeF sh; + switch (which) { + case Qt::MinimumSize: + sh = QSizeF(0, 0); + break; + case Qt::PreferredSize: + sh = QSizeF(50, 50); + break; + case Qt::MaximumSize: + sh = QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + break; + } + return sh; + } + +private: + QGraphicsPixmapItem *original; + QRectF r; +}; + + +class PlaceWidget : public QGraphicsWidget +{ + Q_OBJECT + +public: + PlaceWidget(const QPixmap &pix) : QGraphicsWidget(), original(pix), scaled(pix) + { + } + + void paint(QPainter *painter, const QStyleOptionGraphicsItem*, QWidget*) + { + QPointF reflection = QPointF(); + reflection.setY(scaled.height() + 2); + + painter->drawPixmap(QPointF(), scaled); + + QPixmap tmp(scaled.size()); + tmp.fill(Qt::transparent); + QPainter p(&tmp); + + // create gradient + QPoint p1(scaled.width() / 2, 0); + QPoint p2(scaled.width() / 2, scaled.height()); + QLinearGradient linearGrad(p1, p2); + linearGrad.setColorAt(0, QColor(0, 0, 0, 0)); + linearGrad.setColorAt(0.65, QColor(0, 0, 0, 127)); + linearGrad.setColorAt(1, QColor(0, 0, 0, 255)); + + // apply 'mask' + p.setBrush(linearGrad); + p.fillRect(0, 0, tmp.width(), tmp.height(), QBrush(linearGrad)); + p.fillRect(0, 0, tmp.width(), tmp.height(), QBrush(linearGrad)); + + // paint the image flipped + p.setCompositionMode(QPainter::CompositionMode_DestinationOver); + p.drawPixmap(0, 0, QPixmap::fromImage(scaled.toImage().mirrored(false, true))); + p.end(); + + painter->drawPixmap(reflection, tmp); + } + + void resizeEvent(QGraphicsSceneResizeEvent *event) + { + QSize newSize = event->newSize().toSize(); + newSize.setHeight(newSize.height() / 2); + scaled = original.scaled(newSize); + } + + QRectF boundingRect() const + { + QSize size(scaled.width(), scaled.height() * 2 + 2); + return QRectF(QPointF(0, 0), size); + } + +private: + QPixmap original; + QPixmap scaled; +}; + + +static QGraphicsProxyWidget *createItem(const QString &name = "Unnamed") +{ + QGraphicsProxyWidget *w = new QGraphicsProxyWidget; + w->setWidget(new QPushButton(name)); + w->setData(0, name); + w->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + return w; +} + +int main(int argc, char **argv) +{ + Q_INIT_RESOURCE(weatheranchorlayout); + + QApplication app(argc, argv); + + QGraphicsScene scene; + scene.setSceneRect(0, 0, 800, 480); + +#ifdef DEBUG_MODE + QGraphicsProxyWidget *title = createItem("Title"); + QGraphicsProxyWidget *place = createItem("Place"); + QGraphicsProxyWidget *sun = createItem("Sun"); + QGraphicsProxyWidget *details = createItem("Details"); + QGraphicsProxyWidget *tabbar = createItem("Tabbar"); +#else + // pixmaps widgets + PixmapWidget *title = new PixmapWidget(QPixmap(":/images/title.jpg")); + PlaceWidget *place = new PlaceWidget(QPixmap(":/images/place.jpg")); + PixmapWidget *details = new PixmapWidget(QPixmap(":/images/5days.jpg")); + PixmapWidget *sun = new PixmapWidget(QPixmap(":/images/weather-few-clouds.png")); + PixmapWidget *tabbar = new PixmapWidget(QPixmap(":/images/tabbar.jpg")); +#endif + + + // setup sizes + title->setPreferredSize(QSizeF(348, 45)); + title->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + place->setPreferredSize(QSizeF(96, 72)); + place->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + details->setMinimumSize(QSizeF(200, 112)); + details->setPreferredSize(QSizeF(200, 112)); + details->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + tabbar->setPreferredSize(QSizeF(70, 24)); + tabbar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + sun->setPreferredSize(QSizeF(128, 97)); + sun->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + sun->setZValue(9999); + + // start anchor layout + QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; + l->setSpacing(0); + + // setup the main widget + QGraphicsWidget *w = new QGraphicsWidget(0, Qt::Window); + QPalette p; + p.setColor(QPalette::Window, Qt::black); + w->setPalette(p); + w->setPos(20, 20); + w->setLayout(l); + + // vertical anchors + QGraphicsAnchor *anchor = l->addAnchor(title, Qt::AnchorTop, l, Qt::AnchorTop); + anchor = l->addAnchor(place, Qt::AnchorTop, title, Qt::AnchorBottom); + anchor->setSpacing(12); + anchor = l->addAnchor(place, Qt::AnchorBottom, l, Qt::AnchorBottom); + anchor->setSpacing(12); + + anchor = l->addAnchor(sun, Qt::AnchorTop, title, Qt::AnchorTop); + anchor = l->addAnchor(sun, Qt::AnchorBottom, l, Qt::AnchorVerticalCenter); + + anchor = l->addAnchor(tabbar, Qt::AnchorTop, title, Qt::AnchorBottom); + anchor->setSpacing(5); + anchor = l->addAnchor(details, Qt::AnchorTop, tabbar, Qt::AnchorBottom); + anchor->setSpacing(2); + anchor = l->addAnchor(details, Qt::AnchorBottom, l, Qt::AnchorBottom); + anchor->setSpacing(12); + + // horizontal anchors + anchor = l->addAnchor(l, Qt::AnchorLeft, title, Qt::AnchorLeft); + anchor = l->addAnchor(title, Qt::AnchorRight, l, Qt::AnchorRight); + + anchor = l->addAnchor(place, Qt::AnchorLeft, l, Qt::AnchorLeft); + anchor->setSpacing(15); + anchor = l->addAnchor(place, Qt::AnchorRight, details, Qt::AnchorLeft); + anchor->setSpacing(35); + + anchor = l->addAnchor(sun, Qt::AnchorLeft, place, Qt::AnchorHorizontalCenter); + anchor = l->addAnchor(sun, Qt::AnchorRight, l, Qt::AnchorHorizontalCenter); + + anchor = l->addAnchor(tabbar, Qt::AnchorHorizontalCenter, details, Qt::AnchorHorizontalCenter); + anchor = l->addAnchor(details, Qt::AnchorRight, l, Qt::AnchorRight); + + // QGV setup + scene.addItem(w); + scene.setBackgroundBrush(Qt::white); + QGraphicsView *view = new QGraphicsView(&scene); + view->show(); + + return app.exec(); +} + +#include "main.moc" diff --git a/examples/graphicsview/weatheranchorlayout/weatheranchorlayout.pro b/examples/graphicsview/weatheranchorlayout/weatheranchorlayout.pro new file mode 100644 index 0000000..fa2733c --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/weatheranchorlayout.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue May 12 15:22:25 2009 +###################################################################### + +# Input +SOURCES += main.cpp +RESOURCES += weatheranchorlayout.qrc + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/weatheranchorlayout +sources.files = $$SOURCES $$HEADERS $$RESOURCES weatheranchorlayout.pro images +sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/weatheranchorlayout +INSTALLS += target sources + diff --git a/examples/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc b/examples/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc new file mode 100644 index 0000000..e39f8c0 --- /dev/null +++ b/examples/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc @@ -0,0 +1,10 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>images/5days.jpg</file> + <file>images/title.jpg</file> + <file>images/place.jpg</file> + <file>images/tabbar.jpg</file> + <file>images/details.jpg</file> + <file>images/weather-few-clouds.png</file> +</qresource> +</RCC> diff --git a/examples/painting/svggenerator/svggenerator.pro b/examples/painting/svggenerator/svggenerator.pro index 1134619..e0e4895 100644 --- a/examples/painting/svggenerator/svggenerator.pro +++ b/examples/painting/svggenerator/svggenerator.pro @@ -14,4 +14,7 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS svggenerator.pro sources.path = $$[QT_INSTALL_EXAMPLES]/painting/svggenerator INSTALLS += target sources -symbian:TARGET.UID3 = 0xA000CF68
\ No newline at end of file +symbian { + TARGET.UID3 = 0xA000CF68 + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +} diff --git a/examples/xmlpatterns/filetree/filetree.pro b/examples/xmlpatterns/filetree/filetree.pro index 0238c23..1683491 100644 --- a/examples/xmlpatterns/filetree/filetree.pro +++ b/examples/xmlpatterns/filetree/filetree.pro @@ -12,4 +12,7 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.xq *.html sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/filetree INSTALLS += target sources -symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +symbian { + TARGET.UID3 = 0xA000D7C4 + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +} diff --git a/examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.pro b/examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.pro index 39f0106..5a63b2b 100644 --- a/examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.pro +++ b/examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.pro @@ -11,3 +11,8 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/qobjectxmlmodel sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.xq *.html sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/qobjectxmlmodel INSTALLS += target sources + +symbian { + TARGET.UID3 = 0xA000D7C8 + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +} diff --git a/examples/xmlpatterns/recipes/recipes.pro b/examples/xmlpatterns/recipes/recipes.pro index f02a018..67d6d73 100644 --- a/examples/xmlpatterns/recipes/recipes.pro +++ b/examples/xmlpatterns/recipes/recipes.pro @@ -10,4 +10,7 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.xq *.html forms files sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/recipes INSTALLS += target sources -symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +symbian { + TARGET.UID3 = 0xA000D7C5 + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +} diff --git a/examples/xmlpatterns/schema/schema.pro b/examples/xmlpatterns/schema/schema.pro index af32e0a..4d3520c 100644 --- a/examples/xmlpatterns/schema/schema.pro +++ b/examples/xmlpatterns/schema/schema.pro @@ -9,3 +9,8 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/schema sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.xq *.html files sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/schema INSTALLS += target sources + +symbian { + TARGET.UID3 = 0xA000D7C6 + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +} diff --git a/examples/xmlpatterns/trafficinfo/trafficinfo.pro b/examples/xmlpatterns/trafficinfo/trafficinfo.pro index 52bcc19..99825d0 100644 --- a/examples/xmlpatterns/trafficinfo/trafficinfo.pro +++ b/examples/xmlpatterns/trafficinfo/trafficinfo.pro @@ -7,3 +7,8 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/trafficinfo sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/trafficinfo INSTALLS += target sources + +symbian { + TARGET.UID3 = 0xA000D7C7 + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +} |