summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@nokia.com>2011-05-12 15:54:11 +0200
committerRobert Griebl <robert.griebl@nokia.com>2011-05-16 15:57:38 +0200
commit4f7af4c544c3b793ba8cccb28e5c856f3d754e4a (patch)
treedf28438d523460f8897e4242df20f47672efef63 /examples
parentcb5b6799333794496269aa7e6515f96c2ac96d37 (diff)
downloadqt4-tools-4f7af4c544c3b793ba8cccb28e5c856f3d754e4a.tar.gz
Revert all QScroller and QFlickGesture related code.
This reverts commits 0274e68767cce6440515a68d6af868725d5577a4 2770b1277744bb676e96e4ae8c89acd645ec895d 02e1f4e83dc8e3c4ab957095167b3d34c51ba3c1 fdf3be5b6b5db75833e0a7e9a90445ddd794fe4d d1f9a534da288884f443a975f428b0cfe0a7b29b 205d607c3387d074fb87f8deb77a8f515ae2e189 32d200da9cc7a4dfb3f302f22ef5718a286845c9 3e0df49f978933b1e4e6b48c695bf813ec9a2828 82bbc1c1611bde33680d22a1a3c6449e51d7b0b9 b78ffe51f9a4c4ac705e435d45fffe39864c032d fe438d7d828021d7f86301af36fe8dff2768532a df30d58de183d13c649ef7e0fbb8e2b3658e0862 fa845566b3733bc06454b71e33b1ff405ba32280 4f9a318d639c4e7e09e56751d31608fb39d472af 4810b587a65d81f8f90646efd09cadeb1276a756 7bad867382ad6c84155ffcfbb361709a8e8184ab 64ec011c6132496eb9555c1d09e7fd4ddf472837 81492e56aba5b5761500543665012a85d6835513 b668857b3749b39c3a61e0a25e750740b74df552 78a7a02b3b85435bc28eb23e9210522467171e42 Reviewed-By: Ralf Engels
Diffstat (limited to 'examples')
-rw-r--r--examples/examples.pro1
-rw-r--r--examples/scroller/graphicsview/graphicsview.pro8
-rw-r--r--examples/scroller/graphicsview/main.cpp295
-rw-r--r--examples/scroller/plot/main.cpp221
-rw-r--r--examples/scroller/plot/plot.pro13
-rw-r--r--examples/scroller/plot/plotwidget.cpp204
-rw-r--r--examples/scroller/plot/plotwidget.h88
-rw-r--r--examples/scroller/plot/settingswidget.cpp689
-rw-r--r--examples/scroller/plot/settingswidget.h108
-rw-r--r--examples/scroller/scroller.pro11
-rw-r--r--examples/scroller/wheel/main.cpp122
-rw-r--r--examples/scroller/wheel/wheel.pro11
-rw-r--r--examples/scroller/wheel/wheelwidget.cpp275
-rw-r--r--examples/scroller/wheel/wheelwidget.h103
14 files changed, 0 insertions, 2149 deletions
diff --git a/examples/examples.pro b/examples/examples.pro
index 968740d0e5..f233aba410 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -20,7 +20,6 @@ SUBDIRS = \
mainwindows \
painting \
richtext \
- scroller \
sql \
tools \
tutorials \
diff --git a/examples/scroller/graphicsview/graphicsview.pro b/examples/scroller/graphicsview/graphicsview.pro
deleted file mode 100644
index dcebe6227a..0000000000
--- a/examples/scroller/graphicsview/graphicsview.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-TEMPLATE = app
-SOURCES = main.cpp
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/scroller/graphicsview
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS graphicsview.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/scroller/graphicsview
-INSTALLS += target sources
diff --git a/examples/scroller/graphicsview/main.cpp b/examples/scroller/graphicsview/main.cpp
deleted file mode 100644
index 738a824269..0000000000
--- a/examples/scroller/graphicsview/main.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtCore>
-#include <QtGui>
-
-#define NUM_ITEMS 100
-#define NUM_LISTS 10
-
-/*!
- \class RectObject
- Note that it needs to be a QGraphicsObject or else the gestures will not work correctly.
-*/
-class RectObject : public QGraphicsObject
-{
- Q_OBJECT
-
-public:
-
- RectObject(const QString &text, qreal x, qreal y, qreal width, qreal height, QBrush brush, QGraphicsItem *parent = 0)
- : QGraphicsObject(parent)
- , m_text(text)
- , m_rect(x, y, width, height)
- , m_pen(brush.color().lighter(), 3.0)
- , m_brush(brush)
- {
- setFlag(QGraphicsItem::ItemClipsToShape, true);
- }
-
- QRectF boundingRect() const
- {
- // here we only want the size of the children and not the size of the children of the children...
- qreal halfpw = m_pen.widthF() / 2;
- QRectF rect = m_rect;
- if (halfpw > 0.0)
- rect.adjust(-halfpw, -halfpw, halfpw, halfpw);
-
- return rect;
- }
-
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
- {
- Q_UNUSED(option);
- Q_UNUSED(widget);
- painter->setPen(m_pen);
- painter->setBrush(m_brush);
- painter->drawRect(m_rect);
-
- painter->setPen(Qt::black);
- QFont f;
- f.setPixelSize(m_rect.height());
- painter->setFont(f);
- painter->drawText(m_rect, Qt::AlignCenter, m_text);
- }
-
- QString m_text;
- QRectF m_rect;
- QPen m_pen;
- QBrush m_brush;
-};
-
-class ViewObject : public QGraphicsObject
-{
- Q_OBJECT
-public:
- ViewObject(QGraphicsObject *parent)
- : QGraphicsObject(parent)
- { }
-
- QRectF boundingRect() const
- {
- QRectF rect;
- foreach (QGraphicsItem *item, childItems())
- rect |= item->boundingRect().translated(item->pos());
- return rect;
- }
-
- void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*)
- { }
-};
-
-class ListObject : public QGraphicsObject
-{
- Q_OBJECT
-
-public:
- ListObject(const QSizeF &size, bool useTouch)
- {
- m_size = size;
- setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- // grab gesture via Touch or Mouse events
- QScroller::grabGesture(this, useTouch ? QScroller::TouchGesture : QScroller::LeftMouseButtonGesture);
-
- // this needs to be QGraphicsOBJECT - otherwise gesture recognition
- // will not work for the parent of the viewport (in this case the
- // list)
- m_viewport = new ViewObject(this);
-
- }
-
- QGraphicsObject *viewport() const
- {
- return m_viewport;
- }
-
- bool event(QEvent *e)
- {
- switch (e->type()) {
-// ![2]
- case QEvent::ScrollPrepare: {
- QScrollPrepareEvent *se = static_cast<QScrollPrepareEvent *>(e);
- se->setViewportSize(m_size);
- QRectF br = m_viewport->boundingRect();
- se->setContentPosRange(QRectF(0, 0,
- qMax(qreal(0), br.width() - m_size.width()),
- qMax(qreal(0), br.height() - m_size.height())));
- se->setContentPos(-m_viewport->pos());
- se->accept();
- return true;
- }
-// ![1]
-// ![2]
- case QEvent::Scroll: {
- QScrollEvent *se = static_cast<QScrollEvent *>(e);
- m_viewport->setPos(-se->contentPos() - se->overshootDistance());
- return true;
- }
-// ![2]
- default:
- break;
- }
- return QGraphicsObject::event(e);
- }
-
- bool sceneEvent(QEvent *e)
- {
- switch (e->type()) {
- case QEvent::TouchBegin: {
- // We need to return true for the TouchBegin here in the
- // top-most graphics object - otherwise gestures in our parent
- // objects will NOT work at all (the accept() flag is already
- // set due to our setAcceptTouchEvents(true) call in the c'tor
- return true;
-
- }
- case QEvent::GraphicsSceneMousePress: {
- // We need to return true for the MousePress here in the
- // top-most graphics object - otherwise gestures in our parent
- // objects will NOT work at all (the accept() flag is already
- // set to true by Qt)
- return true;
-
- }
- default:
- break;
- }
- return QGraphicsObject::sceneEvent(e);
- }
-
- QRectF boundingRect() const
- {
- return QRectF(0, 0, m_size.width() + 3, m_size.height());
- }
-
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
- {
- Q_UNUSED(option);
- Q_UNUSED(widget);
- painter->setPen(QPen(QColor(100, 100, 100), 3.0));
- painter->drawRect(QRect(1.5, 1.5, m_size.width() - 3, m_size.height() - 3));
- }
-
- QSizeF m_size;
- ViewObject *m_viewport;
-};
-
-class MainWindow : public QMainWindow
-{
- Q_OBJECT
-
-public:
- MainWindow(bool useTouch)
- {
- m_scene = new QGraphicsScene();
-
- // -- make the main list
- ListObject *mainList = new ListObject(QSizeF(780, 400), useTouch);
- mainList->setObjectName(QLatin1String("MainList"));
- m_scene->addItem(mainList);
-// ![3]
- for (int i=0; i<NUM_LISTS; i++) {
- ListObject *childList = new ListObject(QSizeF(mainList->m_size.width()/3, mainList->m_size.height()), useTouch);
- childList->setObjectName(QString("ChildList %1").arg(i));
- fillList(childList);
- childList->setParentItem(mainList->viewport());
- childList->setPos(i*mainList->m_size.width()/3, 0);
- }
- mainList->viewport()->setPos(0, 0);
-
-
- /*
- list1->setTransformOriginPoint(200, 200);
- list1->setRotation(135);
- list1->setPos(20 + 200 * .41, 20 + 200 * .41);
- */
-// ![3]
-
- m_view = new QGraphicsView(m_scene);
- setCentralWidget(m_view);
- setWindowTitle(tr("Gesture example"));
- m_scene->setSceneRect(0, 0, m_view->viewport()->width(), m_view->viewport()->height());
- }
-
- /**
- * Fills the list object \a list with RectObjects.
- */
- void fillList(ListObject *list)
- {
- qreal h = list->m_size.height() / 10;
- for (int i=0; i<NUM_ITEMS; i++) {
- QColor color = QColor(255*i/NUM_ITEMS, 255*(NUM_ITEMS-i)/NUM_ITEMS, 127*(i%2)+64*(i/2%2));
- QString text = QLatin1String("Item #") + QString::number(i);
- QGraphicsItem *rect = new RectObject(text, 0, 0, list->m_size.width() - 6, h - 3, QBrush(color), list->viewport());
- rect->setPos(3, h*i+3);
- }
- list->viewport()->setPos(0, 0);
- }
-
-
-protected:
- void resizeEvent(QResizeEvent *e)
- {
- // resize the scene according to our own size to prevent scrolling
- m_scene->setSceneRect(0, 0, m_view->viewport()->width(), m_view->viewport()->height());
- QMainWindow::resizeEvent(e);
- }
-
- QGraphicsScene *m_scene;
- QGraphicsView *m_view;
-};
-
-int main(int argc, char *argv[])
-{
- QApplication a(argc, argv);
- bool touch = (a.arguments().contains(QLatin1String("--touch")));
- MainWindow mw(touch);
-#ifdef Q_WS_S60
- mw.showMaximized();
-#else
- mw.show();
-#endif
-#ifdef Q_WS_MAC
- mw.raise();
-#endif
- return a.exec();
-}
-
-#include "main.moc"
diff --git a/examples/scroller/plot/main.cpp b/examples/scroller/plot/main.cpp
deleted file mode 100644
index 178a09481d..0000000000
--- a/examples/scroller/plot/main.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include <QListWidget>
-#include <QListWidgetItem>
-#include <QSplitter>
-#include <QStackedWidget>
-#include <QSignalMapper>
-#include <QMainWindow>
-#include <QMenuBar>
-#include <QActionGroup>
-#include <QWebView>
-#include <QTimer>
-#include <QScroller>
-
-#include <QtDebug>
-
-#include <QGesture>
-
-#include "settingswidget.h"
-#include "plotwidget.h"
-
-
-class MainWindow : public QMainWindow
-{
- Q_OBJECT
-public:
- MainWindow(bool smallscreen, bool touch)
- : QMainWindow(), m_touch(touch)
- {
- m_list = new QListWidget();
- m_list->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
- m_list_scroller = installKineticScroller(m_list);
-
- for (int i = 0; i < 1000; ++i)
- new QListWidgetItem(QString("This is a test text %1 %2").arg(i).arg(QString("--------").left(i % 8)), m_list);
-
- connect(m_list, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(listItemActivated(QListWidgetItem*)));
- connect(m_list, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(listItemClicked(QListWidgetItem*)));
- connect(m_list, SIGNAL(itemPressed(QListWidgetItem*)), this, SLOT(listItemPressed(QListWidgetItem*)));
- connect(m_list, SIGNAL(itemSelectionChanged()), this, SLOT(listItemSelectionChanged()));
- connect(m_list, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(listItemCurrentChanged(QListWidgetItem*)));
-
- m_web = new QWebView();
- m_web_scroller = installKineticScroller(m_web);
-
- QTimer::singleShot(1000, this, SLOT(loadUrl()));
-
- m_settings = new SettingsWidget(smallscreen);
- installKineticScroller(m_settings);
- m_plot = new PlotWidget(smallscreen);
-
- QStackedWidget *stack = new QStackedWidget();
- stack->addWidget(m_list);
- stack->addWidget(m_web);
-
- QActionGroup *pages = new QActionGroup(this);
- pages->setExclusive(true);
- QSignalMapper *mapper = new QSignalMapper(this);
- connect(mapper, SIGNAL(mapped(int)), stack, SLOT(setCurrentIndex(int)));
-
- createAction("List", pages, mapper, 0, true);
- createAction("Web", pages, mapper, 1);
-
- if (smallscreen) {
- stack->addWidget(m_settings);
- stack->addWidget(m_plot);
-
- createAction("Settings", pages, mapper, 2);
- createAction("Plot", pages, mapper, 3);
-
- setCentralWidget(stack);
- } else {
- QSplitter *split = new QSplitter();
- m_settings->setMinimumWidth(m_settings->sizeHint().width());
- split->addWidget(stack);
- split->addWidget(m_settings);
- split->addWidget(m_plot);
- setCentralWidget(split);
- }
- menuBar()->addMenu(QLatin1String("Pages"))->addActions(pages->actions());
- connect(stack, SIGNAL(currentChanged(int)), this, SLOT(pageChanged(int)));
- pageChanged(0);
- }
-
-private slots:
- void pageChanged(int page)
- {
- if (page < 0 || page > 1)
- return;
- switch (page) {
- case 0:
- m_settings->setScroller(m_list);
- m_plot->setScroller(m_list);
- break;
- case 1:
- m_settings->setScroller(m_web);
- m_plot->setScroller(m_web);
- break;
- default:
- break;
- }
- }
-
- void loadUrl()
- {
- m_web->load(QUrl("http://www.google.com"));
- }
-
- void listItemActivated(QListWidgetItem *lwi) { qWarning() << "Item ACTIVATED: " << lwi->text(); }
- void listItemClicked(QListWidgetItem *lwi) { qWarning() << "Item CLICKED: " << lwi->text(); }
- void listItemPressed(QListWidgetItem *lwi) { qWarning() << "Item PRESSED: " << lwi->text(); }
- void listItemCurrentChanged(QListWidgetItem *lwi) { qWarning() << "Item CURRENT: " << (lwi ? lwi->text() : QString("(none)")); }
- void listItemSelectionChanged()
- {
- int n = m_list->selectedItems().count();
- qWarning("Item%s SELECTED: %d", n == 1 ? "" : "s", n);
- foreach (QListWidgetItem *lwi, m_list->selectedItems())
- qWarning() << " " << lwi->text();
- }
-
-private:
- QAction *createAction(const char *text, QActionGroup *group, QSignalMapper *mapper, int mapping, bool checked = false)
- {
- QAction *a = new QAction(QLatin1String(text), group);
- a->setCheckable(true);
- a->setChecked(checked);
-#if defined(Q_WS_MAC)
- a->setMenuRole(QAction::NoRole);
-#endif
- mapper->setMapping(a, mapping);
- connect(a, SIGNAL(toggled(bool)), mapper, SLOT(map()));
- return a;
- }
-
- QScroller *installKineticScroller(QWidget *w)
- {
- if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(w)) {
- QScroller::grabGesture(area->viewport(), m_touch ? QScroller::TouchGesture : QScroller::LeftMouseButtonGesture);
- return QScroller::scroller(area->viewport());
- } else if (QWebView *web = qobject_cast<QWebView *>(w)) {
- QScroller::grabGesture(web, m_touch ? QScroller::TouchGesture : QScroller::LeftMouseButtonGesture);
- }
- return QScroller::scroller(w);
- }
-
-private:
- QListWidget *m_list;
- QWebView *m_web;
- QScroller *m_list_scroller, *m_web_scroller;
- SettingsWidget *m_settings;
- PlotWidget *m_plot;
- bool m_touch;
-};
-
-int main(int argc, char **argv)
-{
- QApplication a(argc, argv);
-
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_S60) || defined(Q_WS_WINCE)
- bool smallscreen = true;
-#else
- bool smallscreen = false;
-#endif
- bool touch = false;
-
- if (a.arguments().contains(QLatin1String("--small")))
- smallscreen = true;
- if (a.arguments().contains(QLatin1String("--touch")))
- touch = true;
-
- MainWindow mw(smallscreen, touch);
- if (smallscreen)
- mw.showMaximized();
- else
- mw.show();
-#if defined(Q_WS_MAC)
- mw.raise();
-#endif
- return a.exec();
-}
-
-#include "main.moc"
diff --git a/examples/scroller/plot/plot.pro b/examples/scroller/plot/plot.pro
deleted file mode 100644
index 04fdf709b0..0000000000
--- a/examples/scroller/plot/plot.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-HEADERS = settingswidget.h \
- plotwidget.h
-SOURCES = settingswidget.cpp \
- plotwidget.cpp \
- main.cpp
-
-QT += webkit
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/scroller/plot
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS plot.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/scroller/plot
-INSTALLS += target sources
diff --git a/examples/scroller/plot/plotwidget.cpp b/examples/scroller/plot/plotwidget.cpp
deleted file mode 100644
index e600652a8d..0000000000
--- a/examples/scroller/plot/plotwidget.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QPushButton>
-#include <QTextStream>
-#include <QColor>
-#include <QPainter>
-#include <QLabel>
-#include <QResizeEvent>
-#include <QPlastiqueStyle>
-#include <QAbstractScrollArea>
-
-#include "plotwidget.h"
-#include "qscroller.h"
-
-PlotWidget::PlotWidget(bool /*smallscreen*/)
- : QWidget(), m_widget(0)
-{
- setWindowTitle(QLatin1String("Plot"));
- m_clear = new QPushButton(QLatin1String("Clear"), this);
-#if defined(Q_WS_MAEMO_5)
- m_clear->setStyle(new QPlastiqueStyle());
- m_clear->setFixedHeight(55);
-#endif
- connect(m_clear, SIGNAL(clicked()), this, SLOT(reset()));
- m_legend = new QLabel(this);
- QString legend;
- QTextStream ts(&legend);
- // ok. this wouldn't pass the w3c html verification...
- ts << "<table style=\"color:#000;\" border=\"0\">";
- ts << "<tr><td width=\"30\" bgcolor=\"" << QColor(Qt::red).light().name() << "\" /><td>Velocity X</td></tr>";
- ts << "<tr><td width=\"30\" bgcolor=\"" << QColor(Qt::red).dark().name() << "\" /><td>Velocity Y</td></tr>";
- ts << "<tr><td width=\"30\" bgcolor=\"" << QColor(Qt::green).light().name() << "\" /><td>Content Position X</td></tr>";
- ts << "<tr><td width=\"30\" bgcolor=\"" << QColor(Qt::green).dark().name() << "\" /><td>Content Position Y</td></tr>";
- ts << "<tr><td width=\"30\" bgcolor=\"" << QColor(Qt::blue).light().name() << "\" /><td>Overshoot Position X</td></tr>";
- ts << "<tr><td width=\"30\" bgcolor=\"" << QColor(Qt::blue).dark().name() << "\" /><td>Overshoot Position Y</td></tr>";
- ts << "</table>";
- m_legend->setText(legend);
-}
-
-void PlotWidget::setScroller(QWidget *widget)
-{
- if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget))
- widget = area->viewport();
-
- if (m_widget)
- m_widget->removeEventFilter(this);
- m_widget = widget;
- reset();
- if (m_widget)
- m_widget->installEventFilter(this);
-}
-
-bool PlotWidget::eventFilter(QObject *obj, QEvent *ev)
-{
- if (ev->type() == QEvent::Scroll) {
- QScrollEvent *se = static_cast<QScrollEvent *>(ev);
- QScroller *scroller = QScroller::scroller(m_widget);
-
- QPointF v = scroller->velocity();
- //v.rx() *= scroller->pixelPerMeter().x();
- //v.ry() *= scroller->pixelPerMeter().y();
-
- PlotItem pi = { v, se->contentPos(), se->overshootDistance() };
- addPlotItem(pi);
- }
-
- return QWidget::eventFilter(obj, ev);
-}
-
-static inline void doMaxMin(const QPointF &v, qreal &minmaxv)
-{
- minmaxv = qMax(minmaxv, qMax(qAbs(v.x()), qAbs(v.y())));
-}
-
-void PlotWidget::addPlotItem(const PlotItem &pi)
-{
- m_plotitems.append(pi);
- minMaxVelocity = minMaxPosition = 0;
-
- while (m_plotitems.size() > 500)
- m_plotitems.removeFirst();
-
- foreach (const PlotItem &pi, m_plotitems) {
- doMaxMin(pi.velocity, minMaxVelocity);
- doMaxMin(pi.contentPosition, minMaxPosition);
- doMaxMin(pi.overshootPosition, minMaxPosition);
- }
- update();
-}
-
-void PlotWidget::reset()
-{
- m_plotitems.clear();
- minMaxVelocity = minMaxPosition = 0;
- update();
-}
-
-void PlotWidget::resizeEvent(QResizeEvent *)
-{
- QSize cs = m_clear->sizeHint();
- QSize ls = m_legend->sizeHint();
- m_clear->setGeometry(4, 4, cs.width(), cs.height());
- m_legend->setGeometry(4, height() - ls.height() - 4, ls.width(), ls.height());
-}
-
-void PlotWidget::paintEvent(QPaintEvent *)
-{
-#define SCALE(v, mm) ((qreal(1) - (v / mm)) * qreal(0.5) * height())
-
- QColor rvColor = Qt::red;
- QColor cpColor = Qt::green;
- QColor opColor = Qt::blue;
-
-
- QPainter p(this);
- //p.setRenderHints(QPainter::Antialiasing); //too slow for 60fps
- p.fillRect(rect(), Qt::white);
-
- p.setPen(Qt::black);
- p.drawLine(0, SCALE(0, 1), width(), SCALE(0, 1));
-
- if (m_plotitems.isEmpty())
- return;
-
- int x = 2;
- int offset = m_plotitems.size() - width() / 2;
- QList<PlotItem>::const_iterator it = m_plotitems.constBegin();
- if (offset > 0)
- it += (offset - 1);
-
- const PlotItem *last = &(*it++);
-
- while (it != m_plotitems.constEnd()) {
- p.setPen(rvColor.light());
- p.drawLine(qreal(x - 2), SCALE(last->velocity.x(), minMaxVelocity),
- qreal(x), SCALE(it->velocity.x(), minMaxVelocity));
- p.setPen(rvColor.dark());
- p.drawLine(qreal(x - 2), SCALE(last->velocity.y(), minMaxVelocity),
- qreal(x), SCALE(it->velocity.y(), minMaxVelocity));
-
- p.setPen(cpColor.light());
- p.drawLine(qreal(x - 2), SCALE(last->contentPosition.x(), minMaxPosition),
- qreal(x), SCALE(it->contentPosition.x(), minMaxPosition));
- p.setPen(cpColor.dark());
- p.drawLine(qreal(x - 2), SCALE(last->contentPosition.y(), minMaxPosition),
- qreal(x), SCALE(it->contentPosition.y(), minMaxPosition));
-
- p.setPen(opColor.light());
- p.drawLine(qreal(x - 2), SCALE(last->overshootPosition.x(), minMaxPosition),
- qreal(x), SCALE(it->overshootPosition.x(), minMaxPosition));
- p.setPen(opColor.dark());
- p.drawLine(qreal(x - 2), SCALE(last->overshootPosition.y(), minMaxPosition),
- qreal(x), SCALE(it->overshootPosition.y(), minMaxPosition));
-
- last = &(*it++);
- x += 2;
- }
-
- QString toptext = QString("%1 [m/s] / %2 [pix]").arg(minMaxVelocity, 0, 'f', 2).arg(minMaxPosition, 0, 'f', 2);
- QString bottomtext = QString("-%1 [m/s] / -%2 [pix]").arg(minMaxVelocity, 0, 'f', 2).arg(minMaxPosition, 0, 'f', 2);
-
- p.setPen(Qt::black);
- p.drawText(rect(), Qt::AlignTop | Qt::AlignHCenter, toptext);
- p.drawText(rect(), Qt::AlignBottom | Qt::AlignHCenter, bottomtext);
-#undef SCALE
-}
diff --git a/examples/scroller/plot/plotwidget.h b/examples/scroller/plot/plotwidget.h
deleted file mode 100644
index 3c36be9f68..0000000000
--- a/examples/scroller/plot/plotwidget.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PLOTWIDGET_H
-#define PLOTWIDGET_H
-
-#include <QWidget>
-#include <QPointF>
-
-QT_BEGIN_NAMESPACE
-class QPushButton;
-class QLabel;
-class QScroller;
-QT_END_NAMESPACE
-
-class PlotWidget : public QWidget
-{
- Q_OBJECT
-
-public:
- PlotWidget(bool smallscreen = false);
-
- void setScroller(QWidget *widget);
-
-public slots:
- void reset();
-
-protected:
- void resizeEvent(QResizeEvent *);
- void paintEvent(QPaintEvent *);
-
- bool eventFilter(QObject *obj, QEvent *ev);
-
-private:
-
- struct PlotItem {
- QPointF velocity;
- QPointF contentPosition;
- QPointF overshootPosition;
- };
-
- void addPlotItem(const PlotItem &pi);
-
- QWidget *m_widget;
- QList<PlotItem> m_plotitems;
- qreal minMaxVelocity, minMaxPosition;
- QPushButton *m_clear;
- QLabel *m_legend;
-};
-
-#endif
diff --git a/examples/scroller/plot/settingswidget.cpp b/examples/scroller/plot/settingswidget.cpp
deleted file mode 100644
index c9de008598..0000000000
--- a/examples/scroller/plot/settingswidget.cpp
+++ /dev/null
@@ -1,689 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QVariant>
-#include <QSlider>
-#include <QHBoxLayout>
-#include <QLabel>
-#include <QPushButton>
-#include <QComboBox>
-#include <QSpinBox>
-#include <QGroupBox>
-#include <QToolButton>
-#include <QCheckBox>
-#include <QScrollBar>
-#include <QPainter>
-#include <QScrollArea>
-#include <QScrollPrepareEvent>
-#include <QApplication>
-#include <QPlainTextEdit>
-#include <QTextBlock>
-#include <qnumeric.h>
-
-#include <QEasingCurve>
-
-#include <QDebug>
-
-#include "math.h"
-
-#include "settingswidget.h"
-#include "qscroller.h"
-#include "qscrollerproperties.h"
-
-class SnapOverlay : public QWidget
-{
- Q_OBJECT
-public:
- SnapOverlay(QWidget *w)
- : QWidget(w)
- {
- setAttribute(Qt::WA_TransparentForMouseEvents);
-
- if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(w)) {
- connect(area->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(update()));
- connect(area->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(update()));
- area->viewport()->installEventFilter(this);
- }
- }
- void clear(Qt::Orientation o)
- {
- m_snap[o].clear();
- update();
- }
-
- void set(Qt::Orientation o, qreal first, qreal step)
- {
- m_snap[o] = QList<qreal>() << -Q_INFINITY << first << step;
- update();
- }
-
- void set(Qt::Orientation o, const QList<qreal> &list)
- {
- m_snap[o] = list;
- update();
- }
-
-protected:
- bool eventFilter(QObject *o, QEvent *e)
- {
- if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(parentWidget())) {
- if (area->viewport() == o) {
- if (e->type() == QEvent::Move || e->type() == QEvent::Resize) {
- setGeometry(area->viewport()->rect());
- }
- }
- }
- return false;
- }
-
- void paintEvent(QPaintEvent *e)
- {
- if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(parentWidget())) {
- int dx = area->horizontalScrollBar()->value();
- int dy = area->verticalScrollBar()->value();
-
- QPainter paint(this);
- paint.fillRect(e->rect(), Qt::transparent);
- paint.setPen(QPen(Qt::red, 9));
-
- if (m_snap[Qt::Horizontal].isEmpty()) {
- } else if (m_snap[Qt::Horizontal][0] == -Q_INFINITY) {
- int start = int(m_snap[Qt::Horizontal][1]);
- int step = int(m_snap[Qt::Horizontal][2]);
- if (step > 0) {
- for (int i = start; i < area->horizontalScrollBar()->maximum(); i += step)
- paint.drawPoint(i - dx, 5);
- }
- } else {
- foreach (qreal r, m_snap[Qt::Horizontal])
- paint.drawPoint(int(r) - dx, 5);
- }
- paint.setPen(QPen(Qt::green, 9));
- if (m_snap[Qt::Vertical].isEmpty()) {
- } else if (m_snap[Qt::Vertical][0] == -Q_INFINITY) {
- int start = int(m_snap[Qt::Vertical][1]);
- int step = int(m_snap[Qt::Vertical][2]);
- if (step > 0) {
- for (int i = start; i < area->verticalScrollBar()->maximum(); i += step)
- paint.drawPoint(5, i - dy);
- }
- } else {
- foreach (qreal r, m_snap[Qt::Vertical])
- paint.drawPoint(5, int(r) - dy);
- }
- }
- }
-
-private:
- QMap<Qt::Orientation, QList<qreal> > m_snap;
-};
-
-struct MetricItem
-{
- QScrollerProperties::ScrollMetric metric;
- const char *name;
- int scaling;
- const char *unit;
- QVariant min, max;
- QVariant step;
-};
-
-class MetricItemUpdater : public QObject
-{
- Q_OBJECT
-public:
- MetricItemUpdater(MetricItem *item)
- : m_item(item)
- , m_widget(0)
- , m_slider(0)
- , m_combo(0)
- , m_valueLabel(0)
- {
- m_frameRateType = QVariant::fromValue(QScrollerProperties::Standard).userType();
- m_overshootPolicyType = QVariant::fromValue(QScrollerProperties::OvershootWhenScrollable).userType();
-
- if (m_item->min.type() == QVariant::EasingCurve) {
- m_combo = new QComboBox();
- m_combo->addItem("OutQuad", QEasingCurve::OutQuad);
- m_combo->addItem("OutCubic", QEasingCurve::OutCubic);
- m_combo->addItem("OutQuart", QEasingCurve::OutQuart);
- m_combo->addItem("OutQuint", QEasingCurve::OutQuint);
- m_combo->addItem("OutExpo", QEasingCurve::OutExpo);
- m_combo->addItem("OutSine", QEasingCurve::OutSine);
- m_combo->addItem("OutCirc", QEasingCurve::OutCirc);
- } else if (m_item->min.userType() == m_frameRateType) {
- m_combo = new QComboBox();
- m_combo->addItem("Standard", QScrollerProperties::Standard);
- m_combo->addItem("60 FPS", QScrollerProperties::Fps60);
- m_combo->addItem("30 FPS", QScrollerProperties::Fps30);
- m_combo->addItem("20 FPS", QScrollerProperties::Fps20);
- } else if (m_item->min.userType() == m_overshootPolicyType) {
- m_combo = new QComboBox();
- m_combo->addItem("When Scrollable", QScrollerProperties::OvershootWhenScrollable);
- m_combo->addItem("Always On", QScrollerProperties::OvershootAlwaysOn);
- m_combo->addItem("Always Off", QScrollerProperties::OvershootAlwaysOff);
- } else {
- m_slider = new QSlider(Qt::Horizontal);
- m_slider->setSingleStep(1);
- m_slider->setMinimum(-1);
- m_slider->setMaximum(qRound((m_item->max.toReal() - m_item->min.toReal()) / m_item->step.toReal()));
- m_slider->setValue(-1);
- m_valueLabel = new QLabel();
- }
- m_nameLabel = new QLabel(QLatin1String(m_item->name));
- if (m_item->unit && m_item->unit[0])
- m_nameLabel->setText(m_nameLabel->text() + QLatin1String(" [") + QLatin1String(m_item->unit) + QLatin1String("]"));
- m_resetButton = new QToolButton();
- m_resetButton->setText(QLatin1String("Reset"));
- m_resetButton->setEnabled(false);
-
- connect(m_resetButton, SIGNAL(clicked()), this, SLOT(reset()));
- if (m_slider) {
- connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(controlChanged(int)));
- m_slider->setMinimum(0);
- } else if (m_combo) {
- connect(m_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(controlChanged(int)));
- }
- }
-
- void setScroller(QWidget *widget)
- {
- m_widget = widget;
- QScroller *scroller = QScroller::scroller(widget);
- QScrollerProperties properties = QScroller::scroller(widget)->scrollerProperties();
-
- if (m_slider)
- m_slider->setEnabled(scroller);
- if (m_combo)
- m_combo->setEnabled(scroller);
- m_nameLabel->setEnabled(scroller);
- if (m_valueLabel)
- m_valueLabel->setEnabled(scroller);
- m_resetButton->setEnabled(scroller);
-
- if (!scroller)
- return;
-
- m_default_value = properties.scrollMetric(m_item->metric);
- valueChanged(m_default_value);
- }
-
- QWidget *nameLabel() { return m_nameLabel; }
- QWidget *valueLabel() { return m_valueLabel; }
- QWidget *valueControl() { if (m_combo) return m_combo; else return m_slider; }
- QWidget *resetButton() { return m_resetButton; }
-
-private slots:
- void valueChanged(const QVariant &v)
- {
- m_value = v;
- if (m_slider) {
- switch (m_item->min.type()) {
- case QMetaType::Float:
- case QVariant::Double: {
- m_slider->setValue(qRound((m_value.toReal() * m_item->scaling - m_item->min.toReal()) / m_item->step.toReal()));
- break;
- }
- case QVariant::Int: {
- m_slider->setValue(qRound((m_value.toInt() * m_item->scaling - m_item->min.toInt()) / m_item->step.toInt()));
- break;
- }
- default: break;
- }
- } else if (m_combo) {
- if (m_item->min.type() == QVariant::EasingCurve) {
- m_combo->setCurrentIndex(m_combo->findData(v.toEasingCurve().type()));
- } else if (m_item->min.userType() == m_overshootPolicyType) {
- m_combo->setCurrentIndex(m_combo->findData(v.value<QScrollerProperties::OvershootPolicy>()));
- } else if (m_item->min.userType() == m_frameRateType) {
- m_combo->setCurrentIndex(m_combo->findData(v.value<QScrollerProperties::FrameRates>()));
- }
- }
- }
-
- void controlChanged(int value)
- {
- bool combo = (m_combo && (sender() == m_combo));
- QString text;
-
- if (m_slider && !combo) {
- switch (m_item->min.type()) {
- case QMetaType::Float:
- case QVariant::Double: {
- qreal d = m_item->min.toReal() + qreal(value) * m_item->step.toReal();
- text = QString::number(d);
- m_value = d / qreal(m_item->scaling);
- break;
- }
- case QVariant::Int: {
- int i = m_item->min.toInt() + qRound(qreal(value) * m_item->step.toReal());
- text = QString::number(i);
- m_value = i / m_item->scaling;
- break;
- }
- default: break;
- }
- } else if (m_combo && combo) {
- if (m_item->min.type() == QVariant::EasingCurve) {
- m_value = QVariant(QEasingCurve(static_cast<QEasingCurve::Type>(m_combo->itemData(value).toInt())));
- } else if (m_item->min.userType() == m_overshootPolicyType) {
- m_value = QVariant::fromValue(static_cast<QScrollerProperties::OvershootPolicy>(m_combo->itemData(value).toInt()));
- } else if (m_item->min.userType() == m_frameRateType) {
- m_value = QVariant::fromValue(static_cast<QScrollerProperties::FrameRates>(m_combo->itemData(value).toInt()));
- }
- }
- if (m_valueLabel)
- m_valueLabel->setText(text);
- if (m_widget && QScroller::scroller(m_widget)) {
- QScrollerProperties properties = QScroller::scroller(m_widget)->scrollerProperties();
- properties.setScrollMetric(m_item->metric, m_value);
- QScroller::scroller(m_widget)->setScrollerProperties(properties);
- }
-
- m_resetButton->setEnabled(m_value != m_default_value);
- }
-
- void reset()
- {
- QScrollerProperties properties = QScroller::scroller(m_widget)->scrollerProperties();
- properties.setScrollMetric(m_item->metric, m_value);
- QScroller::scroller(m_widget)->setScrollerProperties(properties);
- valueChanged(m_default_value);
- }
-
-private:
- MetricItem *m_item;
- int m_frameRateType;
- int m_overshootPolicyType;
-
- QWidget *m_widget;
- QSlider *m_slider;
- QComboBox *m_combo;
- QLabel *m_nameLabel, *m_valueLabel;
- QToolButton *m_resetButton;
-
- QVariant m_value, m_default_value;
-};
-
-#define METRIC(x) QScrollerProperties::x, #x
-
-MetricItem items[] = {
- { METRIC(MousePressEventDelay), 1000, "ms", qreal(0), qreal(2000), qreal(10) },
- { METRIC(DragStartDistance), 1000, "mm", qreal(1), qreal(20), qreal(0.1) },
- { METRIC(DragVelocitySmoothingFactor), 1, "", qreal(0), qreal(1), qreal(0.1) },
- { METRIC(AxisLockThreshold), 1, "", qreal(0), qreal(1), qreal(0.01) },
-
- { METRIC(ScrollingCurve), 1, "", QEasingCurve(), 0, 0 },
- { METRIC(DecelerationFactor), 1, "", qreal(0), qreal(3), qreal(0.01) },
-
- { METRIC(MinimumVelocity), 1, "m/s", qreal(0), qreal(7), qreal(0.01) },
- { METRIC(MaximumVelocity), 1, "m/s", qreal(0), qreal(7), qreal(0.01) },
- { METRIC(MaximumClickThroughVelocity), 1, "m/s", qreal(0), qreal(7), qreal(0.01) },
-
- { METRIC(AcceleratingFlickMaximumTime), 1000, "ms", qreal(100), qreal(5000), qreal(100) },
- { METRIC(AcceleratingFlickSpeedupFactor), 1, "", qreal(1), qreal(7), qreal(0.1) },
-
- { METRIC(SnapPositionRatio), 1, "", qreal(0.1), qreal(0.9), qreal(0.1) },
- { METRIC(SnapTime), 1000, "ms", qreal(0), qreal(2000), qreal(10) },
-
- { METRIC(OvershootDragResistanceFactor), 1, "", qreal(0), qreal(1), qreal(0.01) },
- { METRIC(OvershootDragDistanceFactor), 1, "", qreal(0), qreal(1), qreal(0.01) },
- { METRIC(OvershootScrollDistanceFactor), 1, "", qreal(0), qreal(1), qreal(0.01) },
- { METRIC(OvershootScrollTime), 1000, "ms", qreal(0), qreal(2000), qreal(10) },
-
- { METRIC(HorizontalOvershootPolicy), 1, "", QVariant::fromValue(QScrollerProperties::OvershootWhenScrollable), 0, 0 },
- { METRIC(VerticalOvershootPolicy), 1, "", QVariant::fromValue(QScrollerProperties::OvershootWhenScrollable), 0, 0 },
- { METRIC(FrameRate), 1, "", QVariant::fromValue(QScrollerProperties::Standard), 0, 0 },
-};
-
-#undef METRIC
-
-void SettingsWidget::addToGrid(QGridLayout *grid, QWidget *label, int widgetCount, ...)
-{
- va_list args;
- va_start(args, widgetCount);
-
- int rows = grid->rowCount();
- int cols = grid->columnCount();
-
- if (label) {
- if (m_smallscreen)
- grid->addWidget(label, rows++, 0, 1, qMax(cols, widgetCount));
- else
- grid->addWidget(label, rows, 0);
- }
- for (int i = 0; i < widgetCount; i++) {
- if (QWidget *w = va_arg(args, QWidget *))
- grid->addWidget(w, rows, m_smallscreen ? i : i + 1);
- }
- va_end(args);
-}
-
-SettingsWidget::SettingsWidget(bool smallscreen)
- : QScrollArea()
- , m_widget(0)
- , m_snapoverlay(0)
- , m_smallscreen(smallscreen)
-{
- setWindowTitle(QLatin1String("Settings"));
- QWidget *view = new QWidget();
- QVBoxLayout *layout = new QVBoxLayout(view);
- QGroupBox *grp;
- QGridLayout *grid;
-
- // GROUP: SCROLL METRICS
-
- grp = new QGroupBox(QLatin1String("Scroll Metrics"));
- grid = new QGridLayout();
- grid->setVerticalSpacing(m_smallscreen ? 4 : 2);
-
- for (int i = 0; i < int(sizeof(items) / sizeof(items[0])); i++) {
- MetricItemUpdater *u = new MetricItemUpdater(items + i);
- u->setParent(this);
- addToGrid(grid, u->nameLabel(), 3, u->valueControl(), u->valueLabel(), u->resetButton());
- m_metrics.append(u);
- }
- grp->setLayout(grid);
- layout->addWidget(grp);
-
- // GROUP: SCROLL TO
-
- grp = new QGroupBox(QLatin1String("Scroll To"));
- grid = new QGridLayout();
- grid->setVerticalSpacing(m_smallscreen ? 4 : 2);
-
- m_scrollx = new QSpinBox();
- m_scrolly = new QSpinBox();
- m_scrolltime = new QSpinBox();
- m_scrolltime->setRange(0, 10000);
- m_scrolltime->setValue(1000);
- m_scrolltime->setSuffix(QLatin1String(" ms"));
- QPushButton *go = new QPushButton(QLatin1String("Go"));
- connect(go, SIGNAL(clicked()), this, SLOT(scrollTo()));
- connect(m_scrollx, SIGNAL(editingFinished()), this, SLOT(scrollTo()));
- connect(m_scrolly, SIGNAL(editingFinished()), this, SLOT(scrollTo()));
- connect(m_scrolltime, SIGNAL(editingFinished()), this, SLOT(scrollTo()));
- grid->addWidget(new QLabel(QLatin1String("X:")), 0, 0);
- grid->addWidget(m_scrollx, 0, 1);
- grid->addWidget(new QLabel(QLatin1String("Y:")), 0, 2);
- grid->addWidget(m_scrolly, 0, 3);
- int row = smallscreen ? 1 : 0;
- int col = smallscreen ? 0 : 4;
- grid->addWidget(new QLabel(QLatin1String("in")), row, col++);
- grid->addWidget(m_scrolltime, row, col++);
- if (smallscreen) {
- grid->addWidget(go, row, col + 1);
- } else {
- grid->addWidget(go, row, col);
- grid->setColumnStretch(5, 1);
- grid->setColumnStretch(6, 1);
- }
- grid->setColumnStretch(1, 1);
- grid->setColumnStretch(3, 1);
- grp->setLayout(grid);
- layout->addWidget(grp);
-
- QLayout *snapbox = new QHBoxLayout();
-
- // GROUP: SNAP POINTS X
-
- grp = new QGroupBox(QLatin1String("Snap Positions X"));
- QBoxLayout *vbox = new QVBoxLayout();
- vbox->setSpacing(m_smallscreen ? 4 : 2);
- m_snapx = new QComboBox();
- m_snapx->addItem(QLatin1String("No Snapping"), NoSnap);
- m_snapx->addItem(QLatin1String("Snap to Interval"), SnapToInterval);
- m_snapx->addItem(QLatin1String("Snap to List"), SnapToList);
- connect(m_snapx, SIGNAL(currentIndexChanged(int)), this, SLOT(snapModeChanged(int)));
- vbox->addWidget(m_snapx);
-
- m_snapxinterval = new QWidget();
- grid = new QGridLayout();
- grid->setVerticalSpacing(m_smallscreen ? 4 : 2);
- m_snapxfirst = new QSpinBox();
- connect(m_snapxfirst, SIGNAL(valueChanged(int)), this, SLOT(snapPositionsChanged()));
- grid->addWidget(new QLabel("First:"), 0, 0);
- grid->addWidget(m_snapxfirst, 0, 1);
- m_snapxstep = new QSpinBox();
- connect(m_snapxstep, SIGNAL(valueChanged(int)), this, SLOT(snapPositionsChanged()));
- grid->addWidget(new QLabel("Interval:"), 0, 2);
- grid->addWidget(m_snapxstep, 0, 3);
- m_snapxinterval->setLayout(grid);
- vbox->addWidget(m_snapxinterval);
- m_snapxinterval->hide();
-
- m_snapxlist = new QPlainTextEdit();
- m_snapxlist->setToolTip(QLatin1String("One snap position per line. Empty lines are ignored."));
- m_snapxlist->installEventFilter(this);
- connect(m_snapxlist, SIGNAL(textChanged()), this, SLOT(snapPositionsChanged()));
- vbox->addWidget(m_snapxlist);
- m_snapxlist->hide();
-
- vbox->addStretch(100);
- grp->setLayout(vbox);
- snapbox->addWidget(grp);
-
- // GROUP: SNAP POINTS Y
-
- grp = new QGroupBox(QLatin1String("Snap Positions Y"));
- vbox = new QVBoxLayout();
- vbox->setSpacing(m_smallscreen ? 4 : 2);
- m_snapy = new QComboBox();
- m_snapy->addItem(QLatin1String("No Snapping"), NoSnap);
- m_snapy->addItem(QLatin1String("Snap to Interval"), SnapToInterval);
- m_snapy->addItem(QLatin1String("Snap to List"), SnapToList);
- connect(m_snapy, SIGNAL(currentIndexChanged(int)), this, SLOT(snapModeChanged(int)));
- vbox->addWidget(m_snapy);
-
- m_snapyinterval = new QWidget();
- grid = new QGridLayout();
- grid->setVerticalSpacing(m_smallscreen ? 4 : 2);
- m_snapyfirst = new QSpinBox();
- connect(m_snapyfirst, SIGNAL(valueChanged(int)), this, SLOT(snapPositionsChanged()));
- grid->addWidget(new QLabel("First:"), 0, 0);
- grid->addWidget(m_snapyfirst, 0, 1);
- m_snapystep = new QSpinBox();
- connect(m_snapystep, SIGNAL(valueChanged(int)), this, SLOT(snapPositionsChanged()));
- grid->addWidget(new QLabel("Interval:"), 0, 2);
- grid->addWidget(m_snapystep, 0, 3);
- m_snapyinterval->setLayout(grid);
- vbox->addWidget(m_snapyinterval);
- m_snapyinterval->hide();
-
- m_snapylist = new QPlainTextEdit();
- m_snapylist->setToolTip(QLatin1String("One snap position per line. Empty lines are ignored."));
- m_snapylist->installEventFilter(this);
- connect(m_snapylist, SIGNAL(textChanged()), this, SLOT(snapPositionsChanged()));
- vbox->addWidget(m_snapylist);
- m_snapylist->hide();
-
- vbox->addStretch(100);
- grp->setLayout(vbox);
- snapbox->addWidget(grp);
-
- layout->addLayout(snapbox);
-
- layout->addStretch(100);
- setWidget(view);
- setWidgetResizable(true);
-}
-
-void SettingsWidget::setScroller(QWidget *widget)
-{
- delete m_snapoverlay;
- if (m_widget)
- m_widget->removeEventFilter(this);
- QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget);
- if (area)
- widget = area->viewport();
- m_widget = widget;
- m_widget->installEventFilter(this);
- m_snapoverlay = new SnapOverlay(area);
- QScrollerProperties properties = QScroller::scroller(widget)->scrollerProperties();
-
- QMutableListIterator<MetricItemUpdater *> it(m_metrics);
- while (it.hasNext())
- it.next()->setScroller(widget);
-
- if (!widget)
- return;
-
- updateScrollRanges();
-}
-
-bool SettingsWidget::eventFilter(QObject *o, QEvent *e)
-{
- if (o == m_widget && e->type() == QEvent::Resize)
- updateScrollRanges();
- return false;
-}
-
-void SettingsWidget::updateScrollRanges()
-{
- QScrollPrepareEvent spe(QPoint(0, 0));
- QApplication::sendEvent(m_widget, &spe);
-
- QSizeF vp = spe.viewportSize();
- QRectF maxc = spe.contentPosRange();
-
- m_scrollx->setRange(qRound(-vp.width()), qRound(maxc.width() + vp.width()));
- m_scrolly->setRange(qRound(-vp.height()), qRound(maxc.height() + vp.height()));
-
- m_snapxfirst->setRange(maxc.left(), maxc.right());
- m_snapxstep->setRange(0, maxc.width());
- m_snapyfirst->setRange(maxc.top(), maxc.bottom());
- m_snapystep->setRange(0, maxc.height());
-}
-
-void SettingsWidget::scrollTo()
-{
- if (QApplication::activePopupWidget())
- return;
- if ((sender() == m_scrollx) && !m_scrollx->hasFocus())
- return;
- if ((sender() == m_scrolly) && !m_scrolly->hasFocus())
- return;
- if ((sender() == m_scrolltime) && !m_scrolltime->hasFocus())
- return;
-
- if (QScroller *scroller = QScroller::scroller(m_widget))
- scroller->scrollTo(QPointF(m_scrollx->value(), m_scrolly->value()), m_scrolltime->value());
-}
-
-void SettingsWidget::snapModeChanged(int mode)
-{
- if (sender() == m_snapx) {
- m_snapxmode = static_cast<SnapMode>(mode);
- m_snapxinterval->setVisible(mode == SnapToInterval);
- m_snapxlist->setVisible(mode == SnapToList);
- snapPositionsChanged();
- } else if (sender() == m_snapy) {
- m_snapymode = static_cast<SnapMode>(mode);
- m_snapyinterval->setVisible(mode == SnapToInterval);
- m_snapylist->setVisible(mode == SnapToList);
- snapPositionsChanged();
- }
-}
-
-void SettingsWidget::snapPositionsChanged()
-{
- QScroller *s = QScroller::scroller(m_widget);
- if (!s)
- return;
-
- switch (m_snapxmode) {
- case NoSnap:
- s->setSnapPositionsX(QList<qreal>());
- m_snapoverlay->clear(Qt::Horizontal);
- break;
- case SnapToInterval:
- s->setSnapPositionsX(m_snapxfirst->value(), m_snapxstep->value());
- m_snapoverlay->set(Qt::Horizontal, m_snapxfirst->value(), m_snapxstep->value());
- break;
- case SnapToList:
- s->setSnapPositionsX(toPositionList(m_snapxlist, m_snapxfirst->minimum(), m_snapxfirst->maximum()));
- m_snapoverlay->set(Qt::Horizontal, toPositionList(m_snapxlist, m_snapxfirst->minimum(), m_snapxfirst->maximum()));
- break;
- }
- switch (m_snapymode) {
- case NoSnap:
- s->setSnapPositionsY(QList<qreal>());
- m_snapoverlay->clear(Qt::Vertical);
- break;
- case SnapToInterval:
- s->setSnapPositionsY(m_snapyfirst->value(), m_snapystep->value());
- m_snapoverlay->set(Qt::Vertical, m_snapyfirst->value(), m_snapystep->value());
- break;
- case SnapToList:
- s->setSnapPositionsY(toPositionList(m_snapylist, m_snapyfirst->minimum(), m_snapyfirst->maximum()));
- m_snapoverlay->set(Qt::Vertical, toPositionList(m_snapylist, m_snapyfirst->minimum(), m_snapyfirst->maximum()));
- break;
- }
-}
-
-QList<qreal> SettingsWidget::toPositionList(QPlainTextEdit *list, int vmin, int vmax)
-{
- QList<qreal> snaps;
- QList<QTextEdit::ExtraSelection> extrasel;
- QTextEdit::ExtraSelection uline;
- uline.format.setUnderlineColor(Qt::red);
- uline.format.setUnderlineStyle(QTextCharFormat::WaveUnderline);
- int line = 0;
-
- foreach (const QString &str, list->toPlainText().split(QLatin1Char('\n'))) {
- ++line;
- if (str.isEmpty())
- continue;
- bool ok = false;
- double d = str.toDouble(&ok);
- if (ok && d >= vmin && d <= vmax) {
- snaps << d;
- } else {
- QTextEdit::ExtraSelection esel = uline;
- esel.cursor = QTextCursor(list->document()->findBlockByLineNumber(line - 1));
- esel.cursor.select(QTextCursor::LineUnderCursor);
- extrasel << esel;
- }
- }
- list->setExtraSelections(extrasel);
- return snaps;
-}
-
-#include "settingswidget.moc"
diff --git a/examples/scroller/plot/settingswidget.h b/examples/scroller/plot/settingswidget.h
deleted file mode 100644
index fc0acff04c..0000000000
--- a/examples/scroller/plot/settingswidget.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SETTINGSWIDGET_H
-#define SETTINGSWIDGET_H
-
-#include <QScrollArea>
-
-QT_BEGIN_NAMESPACE
-class QScroller;
-class QGridLayout;
-class QSpinBox;
-class QComboBox;
-class QCheckBox;
-class QPlainTextEdit;
-QT_END_NAMESPACE
-
-class MetricItemUpdater;
-class SnapOverlay;
-
-class SettingsWidget : public QScrollArea
-{
- Q_OBJECT
-
-public:
- SettingsWidget(bool smallscreen = false);
-
- void setScroller(QWidget *widget);
-
-protected:
- bool eventFilter(QObject *, QEvent *);
-
-private slots:
- void scrollTo();
- void snapModeChanged(int);
- void snapPositionsChanged();
-
-private:
- enum SnapMode {
- NoSnap,
- SnapToInterval,
- SnapToList
- };
-
- void addToGrid(QGridLayout *grid, QWidget *label, int widgetCount, ...);
- QList<qreal> toPositionList(QPlainTextEdit *list, int vmin, int vmax);
- void updateScrollRanges();
-
- QWidget *m_widget;
- QSpinBox *m_scrollx, *m_scrolly, *m_scrolltime;
- QList<MetricItemUpdater *> m_metrics;
-
- SnapMode m_snapxmode;
- QComboBox *m_snapx;
- QWidget *m_snapxinterval;
- QPlainTextEdit *m_snapxlist;
- QSpinBox *m_snapxfirst;
- QSpinBox *m_snapxstep;
-
- SnapMode m_snapymode;
- QComboBox *m_snapy;
- QWidget *m_snapyinterval;
- QPlainTextEdit *m_snapylist;
- QSpinBox *m_snapyfirst;
- QSpinBox *m_snapystep;
- SnapOverlay *m_snapoverlay;
-
- bool m_smallscreen;
-};
-
-#endif
diff --git a/examples/scroller/scroller.pro b/examples/scroller/scroller.pro
deleted file mode 100644
index 9a9991a6bf..0000000000
--- a/examples/scroller/scroller.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = graphicsview
-
-contains(QT_CONFIG, webkit):SUBDIRS += plot wheel
-
-# install
-sources.files = *.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/scroller
-INSTALLS += sources
-
-symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
diff --git a/examples/scroller/wheel/main.cpp b/examples/scroller/wheel/main.cpp
deleted file mode 100644
index 4205bafed3..0000000000
--- a/examples/scroller/wheel/main.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-#include <qmath.h>
-
-#include "wheelwidget.h"
-
-class MainWindow : public QMainWindow
-{
- Q_OBJECT
-public:
- MainWindow(bool touch)
- : QMainWindow()
- {
- makeSlotMachine(touch);
- setCentralWidget(m_slotMachine);
- }
-
- void makeSlotMachine(bool touch)
- {
- if (QApplication::desktop()->width() > 1000) {
- QFont f = font();
- f.setPointSize(f.pointSize() * 2);
- setFont(f);
- }
-
- m_slotMachine = new QWidget(this);
- QGridLayout *grid = new QGridLayout(m_slotMachine);
- grid->setSpacing(20);
-
- QStringList colors;
- colors << "Red" << "Magenta" << "Peach" << "Orange" << "Yellow" << "Citro" << "Green" << "Cyan" << "Blue" << "Violet";
-
- m_wheel1 = new StringWheelWidget(touch);
- m_wheel1->setItems( colors );
- grid->addWidget( m_wheel1, 0, 0 );
-
- m_wheel2 = new StringWheelWidget(touch);
- m_wheel2->setItems( colors );
- grid->addWidget( m_wheel2, 0, 1 );
-
- m_wheel3 = new StringWheelWidget(touch);
- m_wheel3->setItems( colors );
- grid->addWidget( m_wheel3, 0, 2 );
-
- QPushButton *shakeButton = new QPushButton(tr("Shake"));
- connect(shakeButton, SIGNAL(clicked()), this, SLOT(rotateRandom()));
-
- grid->addWidget( shakeButton, 1, 0, 1, 3 );
- }
-
-private slots:
- void rotateRandom()
- {
- m_wheel1->scrollTo(m_wheel1->currentIndex() + (qrand() % 200));
- m_wheel2->scrollTo(m_wheel2->currentIndex() + (qrand() % 200));
- m_wheel3->scrollTo(m_wheel3->currentIndex() + (qrand() % 200));
- }
-
-private:
- QWidget *m_slotMachine;
-
- StringWheelWidget *m_wheel1;
- StringWheelWidget *m_wheel2;
- StringWheelWidget *m_wheel3;
-};
-
-int main(int argc, char **argv)
-{
- QApplication a(argc, argv);
- bool touch = a.arguments().contains(QLatin1String("--touch"));
- MainWindow mw(touch);
-#ifdef Q_WS_S60
- mw.showMaximized();
-#else
- mw.show();
-#endif
-#ifdef Q_WS_MAC
- mw.raise();
-#endif
- return a.exec();
-}
-
-#include "main.moc"
diff --git a/examples/scroller/wheel/wheel.pro b/examples/scroller/wheel/wheel.pro
deleted file mode 100644
index 48fe17180c..0000000000
--- a/examples/scroller/wheel/wheel.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-HEADERS = wheelwidget.h
-SOURCES = wheelwidget.cpp \
- main.cpp
-
-QT += webkit
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/scroller/wheel
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS wheel.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/scroller/wheel
-INSTALLS += target sources
diff --git a/examples/scroller/wheel/wheelwidget.cpp b/examples/scroller/wheel/wheelwidget.cpp
deleted file mode 100644
index 10eaefb4c4..0000000000
--- a/examples/scroller/wheel/wheelwidget.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-
-#include "wheelwidget.h"
-
-#define WHEEL_SCROLL_OFFSET 50000.0
-
-AbstractWheelWidget::AbstractWheelWidget(bool touch, QWidget *parent)
- : QWidget(parent)
- , m_currentItem(0)
- , m_itemOffset(0)
-{
-// ![0]
- QScroller::grabGesture(this, touch ? QScroller::TouchGesture : QScroller::LeftMouseButtonGesture);
-// ![0]
-}
-
-AbstractWheelWidget::~AbstractWheelWidget()
-{ }
-
-int AbstractWheelWidget::currentIndex() const
-{
- return m_currentItem;
-}
-
-void AbstractWheelWidget::setCurrentIndex(int index)
-{
- if (index >= 0 && index < itemCount()) {
- m_currentItem = index;
- m_itemOffset = 0;
- update();
- }
-}
-
-bool AbstractWheelWidget::event(QEvent *e)
-{
- switch (e->type()) {
-// ![1]
- case QEvent::ScrollPrepare:
- {
- // We set the snap positions as late as possible so that we are sure
- // we get the correct itemHeight
- QScroller *scroller = QScroller::scroller(this);
- scroller->setSnapPositionsY( WHEEL_SCROLL_OFFSET, itemHeight() );
-
- QScrollPrepareEvent *se = static_cast<QScrollPrepareEvent *>(e);
- se->setViewportSize(QSizeF(size()));
- // we claim a huge scrolling area and a huge content position and
- // hope that the user doesn't notice that the scroll area is restricted
- se->setContentPosRange(QRectF(0.0, 0.0, 0.0, WHEEL_SCROLL_OFFSET * 2));
- se->setContentPos(QPointF(0.0, WHEEL_SCROLL_OFFSET + m_currentItem * itemHeight() + m_itemOffset));
- se->accept();
- return true;
- }
-// ![1]
-// ![2]
- case QEvent::Scroll:
- {
- QScrollEvent *se = static_cast<QScrollEvent *>(e);
-
- qreal y = se->contentPos().y();
- int iy = y - WHEEL_SCROLL_OFFSET;
- int ih = itemHeight();
-
-// ![2]
-
- // -- calculate the current item position and offset and redraw the widget
- int ic = itemCount();
- if (ic>0) {
- m_currentItem = iy / ih % ic;
- m_itemOffset = iy % ih;
-
- // take care when scrolling backwards. Modulo returns negative numbers
- if (m_itemOffset < 0) {
- m_itemOffset += ih;
- m_currentItem--;
- }
-
- if (m_currentItem < 0)
- m_currentItem += ic;
- }
- // -- repaint
- update();
-
- se->accept();
- return true;
- }
- default:
- return QWidget::event(e);
- }
- return true;
-}
-
-void AbstractWheelWidget::paintEvent(QPaintEvent* event)
-{
- Q_UNUSED( event );
-
- // -- first calculate size and position.
- int w = width();
- int h = height();
-
- QPainter painter(this);
- QPalette palette = QApplication::palette();
- QPalette::ColorGroup colorGroup = isEnabled() ? QPalette::Active : QPalette::Disabled;
-
- // linear gradient brush
- QLinearGradient grad(0.5, 0, 0.5, 1.0);
- grad.setColorAt(0, palette.color(colorGroup, QPalette::ButtonText));
- grad.setColorAt(0.2, palette.color(colorGroup, QPalette::Button));
- grad.setColorAt(0.8, palette.color(colorGroup, QPalette::Button));
- grad.setColorAt(1.0, palette.color(colorGroup, QPalette::ButtonText));
- grad.setCoordinateMode( QGradient::ObjectBoundingMode );
- QBrush gBrush( grad );
-
- // paint a border and background
- painter.setPen(palette.color(colorGroup, QPalette::ButtonText));
- painter.setBrush(gBrush);
- // painter.setBrushOrigin( QPointF( 0.0, 0.0 ) );
- painter.drawRect( 0, 0, w-1, h-1 );
-
- // paint inner border
- painter.setPen(palette.color(colorGroup, QPalette::Button));
- painter.setBrush(Qt::NoBrush);
- painter.drawRect( 1, 1, w-3, h-3 );
-
- // paint the items
- painter.setClipRect( QRect( 3, 3, w-6, h-6 ) );
- painter.setPen(palette.color(colorGroup, QPalette::ButtonText));
-
- int iH = itemHeight();
- int iC = itemCount();
- if (iC > 0) {
-
- m_itemOffset = m_itemOffset % iH;
-
- for (int i=-h/2/iH; i<=h/2/iH+1; i++) {
-
- int itemNum = m_currentItem + i;
- while (itemNum < 0)
- itemNum += iC;
- while (itemNum >= iC)
- itemNum -= iC;
-
- paintItem(&painter, itemNum, QRect(6, h/2 +i*iH - m_itemOffset - iH/2, w-6, iH ));
- }
- }
-
- // draw a transparent bar over the center
- QColor highlight = palette.color(colorGroup, QPalette::Highlight);
- highlight.setAlpha(150);
-
- QLinearGradient grad2(0.5, 0, 0.5, 1.0);
- grad2.setColorAt(0, highlight);
- grad2.setColorAt(1.0, highlight.lighter());
- grad2.setCoordinateMode( QGradient::ObjectBoundingMode );
- QBrush gBrush2( grad2 );
-
- QLinearGradient grad3(0.5, 0, 0.5, 1.0);
- grad3.setColorAt(0, highlight);
- grad3.setColorAt(1.0, highlight.darker());
- grad3.setCoordinateMode( QGradient::ObjectBoundingMode );
- QBrush gBrush3( grad3 );
-
- painter.fillRect( QRect( 0, h/2 - iH/2, w, iH/2 ), gBrush2 );
- painter.fillRect( QRect( 0, h/2, w, iH/2 ), gBrush3 );
-}
-
-/*!
- Rotates the wheel widget to a given index.
- You can also give an index greater than itemCount or less than zero in which
- case the wheel widget will scroll in the given direction and end up with
- (index % itemCount)
-*/
-void AbstractWheelWidget::scrollTo(int index)
-{
- QScroller *scroller = QScroller::scroller(this);
-
- scroller->scrollTo(QPointF(0, WHEEL_SCROLL_OFFSET + index * itemHeight()), 5000);
-}
-
-/*!
- \class StringWheelWidget
- \brief The StringWheelWidget class is an implementation of the AbstractWheelWidget class that draws QStrings as items.
- \sa AbstractWheelWidget
-*/
-
-StringWheelWidget::StringWheelWidget(bool touch)
- : AbstractWheelWidget(touch)
-{ }
-
-QStringList StringWheelWidget::items() const
-{
- return m_items;
-}
-
-void StringWheelWidget::setItems( const QStringList &items )
-{
- m_items = items;
- if (m_currentItem >= items.count())
- m_currentItem = items.count()-1;
- update();
-}
-
-
-QSize StringWheelWidget::sizeHint() const
-{
- // determine font size
- QFontMetrics fm(font());
-
- return QSize( fm.width("m") * 10 + 6, fm.height() * 7 + 6 );
-}
-
-QSize StringWheelWidget::minimumSizeHint() const
-{
- QFontMetrics fm(font());
-
- return QSize( fm.width("m") * 5 + 6, fm.height() * 3 + 6 );
-}
-
-void StringWheelWidget::paintItem(QPainter* painter, int index, const QRect &rect)
-{
- painter->drawText(rect, Qt::AlignCenter, m_items.at(index));
-}
-
-int StringWheelWidget::itemHeight() const
-{
- QFontMetrics fm(font());
- return fm.height();
-}
-
-int StringWheelWidget::itemCount() const
-{
- return m_items.count();
-}
-
-
diff --git a/examples/scroller/wheel/wheelwidget.h b/examples/scroller/wheel/wheelwidget.h
deleted file mode 100644
index 96dcebfdfe..0000000000
--- a/examples/scroller/wheel/wheelwidget.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 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:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef WHEELWIDGET_H
-#define WHEELWIDGET_H
-
-#include <QWidget>
-#include <QStringList>
-
-QT_BEGIN_NAMESPACE
-class QPainter;
-class QRect;
-QT_END_NAMESPACE
-
-class AbstractWheelWidget : public QWidget {
- Q_OBJECT
-
-public:
- AbstractWheelWidget(bool touch, QWidget *parent = 0);
- virtual ~AbstractWheelWidget();
-
- int currentIndex() const;
- void setCurrentIndex(int index);
-
- bool event(QEvent*);
- void paintEvent(QPaintEvent *e);
- virtual void paintItem(QPainter* painter, int index, const QRect &rect) = 0;
-
- virtual int itemHeight() const = 0;
- virtual int itemCount() const = 0;
-
-public slots:
- void scrollTo(int index);
-
-signals:
- void stopped(int index);
-
-protected:
- int m_currentItem;
- int m_itemOffset; // 0-itemHeight()
- qreal m_lastY;
-};
-
-
-class StringWheelWidget : public AbstractWheelWidget {
- Q_OBJECT
-
-public:
- StringWheelWidget(bool touch);
-
- QStringList items() const;
- void setItems( const QStringList &items );
-
- QSize sizeHint() const;
- QSize minimumSizeHint() const;
-
- void paintItem(QPainter* painter, int index, const QRect &rect);
-
- int itemHeight() const;
- int itemCount() const;
-
-private:
- QStringList m_items;
-};
-
-#endif // WHEELWIDGET_H