summaryrefslogtreecommitdiffstats
path: root/examples/animation/states
diff options
context:
space:
mode:
authorAlexis Menard <alexis.menard@nokia.com>2009-04-17 14:06:06 (GMT)
committerAlexis Menard <alexis.menard@nokia.com>2009-04-17 14:06:06 (GMT)
commitf15b8a83e2e51955776a3f07cb85ebfc342dd8ef (patch)
treec5dc684986051654898db11ce73e03b9fec8db99 /examples/animation/states
downloadQt-f15b8a83e2e51955776a3f07cb85ebfc342dd8ef.zip
Qt-f15b8a83e2e51955776a3f07cb85ebfc342dd8ef.tar.gz
Qt-f15b8a83e2e51955776a3f07cb85ebfc342dd8ef.tar.bz2
Initial import of statemachine branch from the old kinetic repository
Diffstat (limited to 'examples/animation/states')
-rw-r--r--examples/animation/states/accessories-dictionary.pngbin0 -> 5396 bytes
-rw-r--r--examples/animation/states/akregator.pngbin0 -> 4873 bytes
-rw-r--r--examples/animation/states/digikam.pngbin0 -> 3334 bytes
-rw-r--r--examples/animation/states/help-browser.pngbin0 -> 6984 bytes
-rw-r--r--examples/animation/states/k3b.pngbin0 -> 8220 bytes
-rw-r--r--examples/animation/states/kchart.pngbin0 -> 4887 bytes
-rw-r--r--examples/animation/states/main.cpp262
-rw-r--r--examples/animation/states/states.pro8
-rw-r--r--examples/animation/states/states.qrc10
9 files changed, 280 insertions, 0 deletions
diff --git a/examples/animation/states/accessories-dictionary.png b/examples/animation/states/accessories-dictionary.png
new file mode 100644
index 0000000..e9bd55d
--- /dev/null
+++ b/examples/animation/states/accessories-dictionary.png
Binary files differ
diff --git a/examples/animation/states/akregator.png b/examples/animation/states/akregator.png
new file mode 100644
index 0000000..a086f45
--- /dev/null
+++ b/examples/animation/states/akregator.png
Binary files differ
diff --git a/examples/animation/states/digikam.png b/examples/animation/states/digikam.png
new file mode 100644
index 0000000..9de9fb2
--- /dev/null
+++ b/examples/animation/states/digikam.png
Binary files differ
diff --git a/examples/animation/states/help-browser.png b/examples/animation/states/help-browser.png
new file mode 100644
index 0000000..db92faa
--- /dev/null
+++ b/examples/animation/states/help-browser.png
Binary files differ
diff --git a/examples/animation/states/k3b.png b/examples/animation/states/k3b.png
new file mode 100644
index 0000000..bbcafcf
--- /dev/null
+++ b/examples/animation/states/k3b.png
Binary files differ
diff --git a/examples/animation/states/kchart.png b/examples/animation/states/kchart.png
new file mode 100644
index 0000000..1dd115b
--- /dev/null
+++ b/examples/animation/states/kchart.png
Binary files differ
diff --git a/examples/animation/states/main.cpp b/examples/animation/states/main.cpp
new file mode 100644
index 0000000..da50519
--- /dev/null
+++ b/examples/animation/states/main.cpp
@@ -0,0 +1,262 @@
+/****************************************************************************
+**
+** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the $MODULE$ of the Qt Toolkit.
+**
+** $TROLLTECH_DUAL_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#if defined(QT_EXPERIMENTAL_SOLUTION)
+# include "qstate.h"
+# include "qstatemachine.h"
+# include "qtransition.h"
+# include "qparallelanimationgroup.h"
+# include "qsequentialanimationgroup.h"
+# include "qpropertyanimation.h"
+#endif
+
+class Pixmap : public QGraphicsWidget
+{
+ Q_OBJECT
+public:
+ Pixmap(const QPixmap &pix) : QGraphicsWidget(), p(pix)
+ {
+ setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ }
+
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+ {
+ painter->drawPixmap(QPointF(), p);
+ }
+
+protected:
+ QSizeF sizeHint(Qt::SizeHint, const QSizeF & = QSizeF())
+ {
+ return QSizeF(p.width(), p.height());
+ }
+
+private:
+ QPixmap p;
+};
+
+int main(int argc, char *argv[])
+{
+ Q_INIT_RESOURCE(states);
+
+ QApplication app(argc, argv);
+
+ // Text edit and button
+ QTextEdit *edit = new QTextEdit;
+ edit->setText("asdf lkjha yuoiqwe asd iuaysd u iasyd uiy "
+ "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy "
+ "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy "
+ "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy!");
+
+ QPushButton *button = new QPushButton;
+ QGraphicsProxyWidget *buttonProxy = new QGraphicsProxyWidget;
+ buttonProxy->setWidget(button);
+ QGraphicsProxyWidget *editProxy = new QGraphicsProxyWidget;
+ editProxy->setWidget(edit);
+
+ QGroupBox *box = new QGroupBox;
+ box->setFlat(true);
+ box->setTitle("Options");
+
+ QVBoxLayout *layout2 = new QVBoxLayout;
+ box->setLayout(layout2);
+ layout2->addWidget(new QRadioButton("Herring"));
+ layout2->addWidget(new QRadioButton("Blue Parrot"));
+ layout2->addWidget(new QRadioButton("Petunias"));
+ layout2->addStretch();
+
+ QGraphicsProxyWidget *boxProxy = new QGraphicsProxyWidget;
+ boxProxy->setWidget(box);
+
+ // Parent widget
+ QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, widget);
+ layout->addItem(editProxy);
+ layout->addItem(buttonProxy);
+ widget->setLayout(layout);
+
+ Pixmap *p1 = new Pixmap(QPixmap(":/digikam.png"));
+ Pixmap *p2 = new Pixmap(QPixmap(":/akregator.png"));
+ Pixmap *p3 = new Pixmap(QPixmap(":/accessories-dictionary.png"));
+ Pixmap *p4 = new Pixmap(QPixmap(":/k3b.png"));
+ Pixmap *p5 = new Pixmap(QPixmap(":/help-browser.png"));
+ Pixmap *p6 = new Pixmap(QPixmap(":/kchart.png"));
+
+ QGraphicsScene scene(0, 0, 400, 300);
+ scene.setBackgroundBrush(scene.palette().window());
+ scene.addItem(widget);
+ scene.addItem(boxProxy);
+ scene.addItem(p1);
+ scene.addItem(p2);
+ scene.addItem(p3);
+ scene.addItem(p4);
+ scene.addItem(p5);
+ scene.addItem(p6);
+
+ QStateMachine machine;
+ QState *root = machine.rootState();
+ QState *state1 = new QState(root);
+ QState *state2 = new QState(root);
+ QState *state3 = new QState(root);
+ machine.setInitialState(state1);
+
+ // State 1
+ state1->assignProperty(button, "text", "Switch to state 2");
+ state1->assignProperty(widget, "geometry", QRectF(0, 0, 400, 150));
+ state1->assignProperty(box, "geometry", QRect(-200, 150, 200, 150));
+ state1->assignProperty(p1, "geometry", QRectF(68, 185, 64, 64));
+ state1->assignProperty(p2, "geometry", QRectF(168, 185, 64, 64));
+ state1->assignProperty(p3, "geometry", QRectF(268, 185, 64, 64));
+ state1->assignProperty(p4, "geometry", QRectF(68-150, 48-150, 64, 64));
+ state1->assignProperty(p5, "geometry", QRectF(168, 48-150, 64, 64));
+ state1->assignProperty(p6, "geometry", QRectF(268+150, 48-150, 64, 64));
+ state1->assignProperty(p1, "zRotation", qreal(0));
+ state1->assignProperty(p2, "zRotation", qreal(0));
+ state1->assignProperty(p3, "zRotation", qreal(0));
+ state1->assignProperty(p4, "zRotation", qreal(-270));
+ state1->assignProperty(p5, "zRotation", qreal(-90));
+ state1->assignProperty(p6, "zRotation", qreal(270));
+ state1->assignProperty(boxProxy, "opacity", qreal(0));
+ state1->assignProperty(p1, "opacity", qreal(1));
+ state1->assignProperty(p2, "opacity", qreal(1));
+ state1->assignProperty(p3, "opacity", qreal(1));
+ state1->assignProperty(p4, "opacity", qreal(0));
+ state1->assignProperty(p5, "opacity", qreal(0));
+ state1->assignProperty(p6, "opacity", qreal(0));
+
+ // State 2
+ state2->assignProperty(button, "text", "Switch to state 3");
+ state2->assignProperty(widget, "geometry", QRectF(200, 150, 200, 150));
+ state2->assignProperty(box, "geometry", QRect(9, 150, 190, 150));
+ state2->assignProperty(p1, "geometry", QRectF(68-150, 185+150, 64, 64));
+ state2->assignProperty(p2, "geometry", QRectF(168, 185+150, 64, 64));
+ state2->assignProperty(p3, "geometry", QRectF(268+150, 185+150, 64, 64));
+ state2->assignProperty(p4, "geometry", QRectF(64, 48, 64, 64));
+ state2->assignProperty(p5, "geometry", QRectF(168, 48, 64, 64));
+ state2->assignProperty(p6, "geometry", QRectF(268, 48, 64, 64));
+ state2->assignProperty(p1, "zRotation", qreal(-270));
+ state2->assignProperty(p2, "zRotation", qreal(90));
+ state2->assignProperty(p3, "zRotation", qreal(270));
+ state2->assignProperty(p4, "zRotation", qreal(0));
+ state2->assignProperty(p5, "zRotation", qreal(0));
+ state2->assignProperty(p6, "zRotation", qreal(0));
+ state2->assignProperty(boxProxy, "opacity", qreal(1));
+ state2->assignProperty(p1, "opacity", qreal(0));
+ state2->assignProperty(p2, "opacity", qreal(0));
+ state2->assignProperty(p3, "opacity", qreal(0));
+ state2->assignProperty(p4, "opacity", qreal(1));
+ state2->assignProperty(p5, "opacity", qreal(1));
+ state2->assignProperty(p6, "opacity", qreal(1));
+
+ // State 3
+ state3->assignProperty(button, "text", "Switch to state 1");
+ state3->assignProperty(p1, "geometry", QRectF(5, 5, 64, 64));
+ state3->assignProperty(p2, "geometry", QRectF(5, 5 + 64 + 5, 64, 64));
+ state3->assignProperty(p3, "geometry", QRectF(5, 5 + (64 + 5) + 64, 64, 64));
+ state3->assignProperty(p4, "geometry", QRectF(5 + 64 + 5, 5, 64, 64));
+ state3->assignProperty(p5, "geometry", QRectF(5 + 64 + 5, 5 + 64 + 5, 64, 64));
+ state3->assignProperty(p6, "geometry", QRectF(5 + 64 + 5, 5 + (64 + 5) + 64, 64, 64));
+ state3->assignProperty(widget, "geometry", QRectF(138, 5, 400 - 138, 200));
+ state3->assignProperty(box, "geometry", QRect(5, 205, 400, 90));
+ state3->assignProperty(p1, "opacity", qreal(1));
+ state3->assignProperty(p2, "opacity", qreal(1));
+ state3->assignProperty(p3, "opacity", qreal(1));
+ state3->assignProperty(p4, "opacity", qreal(1));
+ state3->assignProperty(p5, "opacity", qreal(1));
+ state3->assignProperty(p6, "opacity", qreal(1));
+
+ QParallelAnimationGroup animation1;
+
+ QSequentialAnimationGroup *animation1SubGroup;
+ animation1SubGroup = new QSequentialAnimationGroup(&animation1);
+ animation1SubGroup->addPause(250);
+ animation1SubGroup->addAnimation(new QPropertyAnimation(box, "geometry"));
+
+ animation1.addAnimation(new QPropertyAnimation(widget, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p1, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p2, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p3, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p4, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p5, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p6, "geometry"));
+ animation1.addAnimation(new QPropertyAnimation(p1, "zRotation"));
+ animation1.addAnimation(new QPropertyAnimation(p2, "zRotation"));
+ animation1.addAnimation(new QPropertyAnimation(p3, "zRotation"));
+ animation1.addAnimation(new QPropertyAnimation(p4, "zRotation"));
+ animation1.addAnimation(new QPropertyAnimation(p5, "zRotation"));
+ animation1.addAnimation(new QPropertyAnimation(p6, "zRotation"));
+ animation1.addAnimation(new QPropertyAnimation(p1, "opacity"));
+ animation1.addAnimation(new QPropertyAnimation(p2, "opacity"));
+ animation1.addAnimation(new QPropertyAnimation(p3, "opacity"));
+ animation1.addAnimation(new QPropertyAnimation(p4, "opacity"));
+ animation1.addAnimation(new QPropertyAnimation(p5, "opacity"));
+ animation1.addAnimation(new QPropertyAnimation(p6, "opacity"));
+
+ QParallelAnimationGroup animation2;
+ animation2.addAnimation(new QPropertyAnimation(box, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(widget, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p1, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p2, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p3, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p4, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p5, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p6, "geometry"));
+ animation2.addAnimation(new QPropertyAnimation(p1, "zRotation"));
+ animation2.addAnimation(new QPropertyAnimation(p2, "zRotation"));
+ animation2.addAnimation(new QPropertyAnimation(p3, "zRotation"));
+ animation2.addAnimation(new QPropertyAnimation(p4, "zRotation"));
+ animation2.addAnimation(new QPropertyAnimation(p5, "zRotation"));
+ animation2.addAnimation(new QPropertyAnimation(p6, "zRotation"));
+ animation2.addAnimation(new QPropertyAnimation(p1, "opacity"));
+ animation2.addAnimation(new QPropertyAnimation(p2, "opacity"));
+ animation2.addAnimation(new QPropertyAnimation(p3, "opacity"));
+ animation2.addAnimation(new QPropertyAnimation(p4, "opacity"));
+ animation2.addAnimation(new QPropertyAnimation(p5, "opacity"));
+ animation2.addAnimation(new QPropertyAnimation(p6, "opacity"));
+
+ QParallelAnimationGroup animation3;
+ animation3.addAnimation(new QPropertyAnimation(box, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(widget, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p1, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p2, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p3, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p4, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p5, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p6, "geometry"));
+ animation3.addAnimation(new QPropertyAnimation(p1, "zRotation"));
+ animation3.addAnimation(new QPropertyAnimation(p2, "zRotation"));
+ animation3.addAnimation(new QPropertyAnimation(p3, "zRotation"));
+ animation3.addAnimation(new QPropertyAnimation(p4, "zRotation"));
+ animation3.addAnimation(new QPropertyAnimation(p5, "zRotation"));
+ animation3.addAnimation(new QPropertyAnimation(p6, "zRotation"));
+ animation3.addAnimation(new QPropertyAnimation(p1, "opacity"));
+ animation3.addAnimation(new QPropertyAnimation(p2, "opacity"));
+ animation3.addAnimation(new QPropertyAnimation(p3, "opacity"));
+ animation3.addAnimation(new QPropertyAnimation(p4, "opacity"));
+ animation3.addAnimation(new QPropertyAnimation(p5, "opacity"));
+ animation3.addAnimation(new QPropertyAnimation(p6, "opacity"));
+
+ QAbstractTransition *t1 = state1->addTransition(button, SIGNAL(clicked()), state2);
+ t1->addAnimation(&animation1);
+ QAbstractTransition *t2 = state2->addTransition(button, SIGNAL(clicked()), state3);
+ t2->addAnimation(&animation2);
+ QAbstractTransition *t3 = state3->addTransition(button, SIGNAL(clicked()), state1);
+ t3->addAnimation(&animation3);
+
+ machine.start();
+
+ QGraphicsView view(&scene);
+ view.show();
+
+ return app.exec();
+}
+
+#include "main.moc"
diff --git a/examples/animation/states/states.pro b/examples/animation/states/states.pro
new file mode 100644
index 0000000..f4d1e0b
--- /dev/null
+++ b/examples/animation/states/states.pro
@@ -0,0 +1,8 @@
+SOURCES += main.cpp
+RESOURCES += states.qrc
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/animation/states
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS states.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/animation/states
+INSTALLS += target sources
diff --git a/examples/animation/states/states.qrc b/examples/animation/states/states.qrc
new file mode 100644
index 0000000..60ab3f7
--- /dev/null
+++ b/examples/animation/states/states.qrc
@@ -0,0 +1,10 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>accessories-dictionary.png</file>
+ <file>akregator.png</file>
+ <file>digikam.png</file>
+ <file>help-browser.png</file>
+ <file>k3b.png</file>
+ <file>kchart.png</file>
+</qresource>
+</RCC>