summaryrefslogtreecommitdiffstats
path: root/doc/src/snippets/statemachine/main4.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-06-19 02:06:21 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-06-19 02:06:21 (GMT)
commitfb6775d423f1ebe7e624951edf39d79ca0433d4a (patch)
tree4b5b93d3c2d835b268ce16f2fe9a91e4b89ecfde /doc/src/snippets/statemachine/main4.cpp
parent9c7c859647771d5d2fa466b0a3ff9d408edecd38 (diff)
parentf9f08de9d41fd55d9c7d01578191ef5d4099c9e6 (diff)
downloadQt-fb6775d423f1ebe7e624951edf39d79ca0433d4a.zip
Qt-fb6775d423f1ebe7e624951edf39d79ca0433d4a.tar.gz
Qt-fb6775d423f1ebe7e624951edf39d79ca0433d4a.tar.bz2
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt into kinetic-declarativeui
Conflicts: configure.exe tools/qdoc3/htmlgenerator.cpp
Diffstat (limited to 'doc/src/snippets/statemachine/main4.cpp')
-rw-r--r--doc/src/snippets/statemachine/main4.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/doc/src/snippets/statemachine/main4.cpp b/doc/src/snippets/statemachine/main4.cpp
new file mode 100644
index 0000000..5681bbd
--- /dev/null
+++ b/doc/src/snippets/statemachine/main4.cpp
@@ -0,0 +1,71 @@
+
+#include <QtGui>
+
+
+//![0]
+struct StringEvent : public QEvent
+{
+ StringEvent(const QString &val)
+ : QEvent(QEvent::Type(QEvent::User+1)),
+ value(val) {}
+
+ QString value;
+};
+//![0]
+
+//![1]
+class StringTransition : public QAbstractTransition
+{
+public:
+ StringTransition(const QString &value)
+ : m_value(value) {}
+
+protected:
+ virtual bool eventTest(QEvent *e) const
+ {
+ if (e->type() != QEvent::Type(QEvent::User+1)) // StringEvent
+ return false;
+ StringEvent *se = static_cast<StringEvent*>(e);
+ return (m_value == se->value);
+ }
+
+ virtual void onTransition(QEvent *) {}
+
+private:
+ QString m_value;
+};
+//![1]
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+//![2]
+ QStateMachine machine;
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+ QFinalState *done = new QFinalState();
+
+ StringTransition *t1 = new StringTransition("Hello");
+ t1->setTargetState(s2);
+ s1->addTransition(t1);
+ StringTransition *t2 = new StringTransition("world");
+ t2->setTargetState(done);
+ s2->addTransition(t2);
+
+ machine.addState(s1);
+ machine.addState(s2);
+ machine.addState(done);
+ machine.setInitialState(s1);
+//![2]
+
+//![3]
+ machine.postEvent(new StringEvent("Hello"));
+ machine.postEvent(new StringEvent("world"));
+//![3]
+
+ return app.exec();
+}
+
+#include "main4.moc"
+