summaryrefslogtreecommitdiffstats
path: root/examples/declarative/tutorials/extending/chapter3-bindings
diff options
context:
space:
mode:
Diffstat (limited to 'examples/declarative/tutorials/extending/chapter3-bindings')
-rw-r--r--examples/declarative/tutorials/extending/chapter3-bindings/app.qml31
-rw-r--r--examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro5
-rw-r--r--examples/declarative/tutorials/extending/chapter3-bindings/main.cpp58
-rw-r--r--examples/declarative/tutorials/extending/chapter3-bindings/musician.cpp77
-rw-r--r--examples/declarative/tutorials/extending/chapter3-bindings/musician.h83
5 files changed, 254 insertions, 0 deletions
diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/app.qml b/examples/declarative/tutorials/extending/chapter3-bindings/app.qml
new file mode 100644
index 0000000..0460b0b
--- /dev/null
+++ b/examples/declarative/tutorials/extending/chapter3-bindings/app.qml
@@ -0,0 +1,31 @@
+import Music 1.0
+import Qt 4.7
+
+Rectangle {
+ width: 200; height: 200
+
+ Musician {
+ id: reddy
+ name: "Reddy the Rocker"
+ instrument: "Guitar"
+ }
+
+ Musician {
+ id: craig
+ name: "Craig the Copycat"
+ instrument: reddy.instrument
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ reddy.perform()
+ craig.perform()
+
+ reddy.instrument = "Drums"
+
+ reddy.perform()
+ craig.perform()
+ }
+ }
+}
diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro b/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro
new file mode 100644
index 0000000..bd05ebe
--- /dev/null
+++ b/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro
@@ -0,0 +1,5 @@
+QT += declarative
+
+HEADERS += musician.h
+SOURCES += musician.cpp \
+ main.cpp
diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp b/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp
new file mode 100644
index 0000000..0e71bb0
--- /dev/null
+++ b/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+#include "musician.h"
+#include <qdeclarative.h>
+#include <QDeclarativeView>
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ qmlRegisterType<Musician>("Music", 1, 0, "Musician");
+
+ QDeclarativeView view;
+ view.setSource(QUrl::fromLocalFile("app.qml"));
+ view.show();
+ return app.exec();
+}
+//![0]
diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/musician.cpp b/examples/declarative/tutorials/extending/chapter3-bindings/musician.cpp
new file mode 100644
index 0000000..eb615f6
--- /dev/null
+++ b/examples/declarative/tutorials/extending/chapter3-bindings/musician.cpp
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "musician.h"
+#include <QDebug>
+
+Musician::Musician(QObject *parent)
+ : QObject(parent)
+{
+}
+
+QString Musician::name() const
+{
+ return m_name;
+}
+
+void Musician::setName(const QString &name)
+{
+ m_name = name;
+}
+
+QString Musician::instrument() const
+{
+ return m_instrument;
+}
+
+//![0]
+void Musician::setInstrument(const QString &instrument)
+{
+ if (instrument != m_instrument) {
+ m_instrument = instrument;
+ emit instrumentChanged();
+ }
+}
+//![0]
+
+void Musician::perform()
+{
+ qWarning() << m_name << "is playing the" << m_instrument;
+}
diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/musician.h b/examples/declarative/tutorials/extending/chapter3-bindings/musician.h
new file mode 100644
index 0000000..39887be
--- /dev/null
+++ b/examples/declarative/tutorials/extending/chapter3-bindings/musician.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef MUSICIAN_H
+#define MUSICIAN_H
+
+#include <QObject>
+
+//![0]
+class Musician : public QObject
+{
+//![0]
+ Q_OBJECT
+ Q_PROPERTY(QString name READ name WRITE setName)
+ Q_PROPERTY(QString instrument READ instrument WRITE setInstrument)
+
+//![1]
+ Q_PROPERTY(QString instrument READ instrument WRITE setInstrument NOTIFY instrumentChanged)
+public:
+//![1]
+
+ Musician(QObject *parent = 0);
+
+ QString name() const;
+ void setName(const QString &name);
+
+ QString instrument() const;
+ void setInstrument(const QString &instrument);
+
+ Q_INVOKABLE void perform();
+
+//![2]
+signals:
+ void instrumentChanged();
+//![2]
+
+private:
+ QString m_name;
+ QString m_instrument;
+
+//![3]
+};
+//![3]
+
+#endif
+