aboutsummaryrefslogtreecommitdiffstats
path: root/tests/testapplications/elements/content/XmlListModelElement.qml
diff options
context:
space:
mode:
authorDamian Jansen <damian.jansen@nokia.com>2011-09-08 12:11:11 +1000
committerQt by Nokia <qt-info@nokia.com>2011-09-19 04:32:55 +0200
commitb0539f0ed9e848afd6df2cb4d01eb5af70168df8 (patch)
treec9d6c0e62d24b1ef976a5805def4ef74f3c6e945 /tests/testapplications/elements/content/XmlListModelElement.qml
parent48e333595fd81192a8cc2befa509407cc7a43381 (diff)
QtQuick 2.0 elements system test
Added an application to browse elements. A very basic acceptance test method that each can be performed in under a minute. Added the .qtt for formal usage. Also moved qsgimage system test. Change-Id: Iada9804e2efe1339a072935647962e54aa3b4c6f Reviewed-on: http://codereview.qt-project.org/4380 Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'tests/testapplications/elements/content/XmlListModelElement.qml')
-rw-r--r--tests/testapplications/elements/content/XmlListModelElement.qml154
1 files changed, 154 insertions, 0 deletions
diff --git a/tests/testapplications/elements/content/XmlListModelElement.qml b/tests/testapplications/elements/content/XmlListModelElement.qml
new file mode 100644
index 0000000000..3ea0f9cc8a
--- /dev/null
+++ b/tests/testapplications/elements/content/XmlListModelElement.qml
@@ -0,0 +1,154 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Item {
+ id: xmllistmodelelementtest
+ anchors.fill: parent
+ property string testtext: ""
+ property string modelxml: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
+ "<cookbook><recipe id=\"MushroomSoup\">"+
+ "<title>Hot chocolate</title>"+
+ "<ingredient name=\"Milk\" quantity=\"1\" unit=\"cup\"/>"+
+ "<time quantity=\"2\" unit=\"minutes\"/>"+
+ "<method><step>1. Place the cup of milk in the microwave for 1 minute.</step>"+
+ "<step>2. Stir in 2 teaspoons of drinking chocolate.</step></method></recipe></cookbook>"
+
+ XmlListModel { id: xmllistmodelelement
+ source: "cookbook.xml"
+ query: "/cookbook/recipe"
+ XmlRole { name: "title"; query: "title/string()" }
+ XmlRole { name: "xmlid"; query: "@id/string()" }
+ XmlRole { name: "method"; query: "method/string()" }
+ XmlRole { name: "time"; query: "time/@quantity/number()" }
+ }
+
+ ListView {
+ id: recipeview
+ model: xmllistmodelelement; height: 300; width: 300; clip: true
+ anchors.centerIn: parent
+ delegate: Component {
+ Rectangle { id: delbox; height: 50; width: 296; color: "orange"; border.color: "black"; state: "closed"; clip: true; radius: 5
+ anchors.horizontalCenter: parent.horizontalCenter
+ Text {
+ id: recipetitle
+ text: model.title; font.pointSize: 12; font.bold: true
+ anchors.horizontalCenter: parent.horizontalCenter; y: 20;
+ }
+
+ Text {
+ id: recipetime
+ width: parent.width; height: 20; text: "<b>Time: </b>" +model.time + " minutes"; visible: opacity != 0
+ anchors.horizontalCenter: parent.horizontalCenter; anchors.top: recipetitle.bottom
+ Behavior on opacity { NumberAnimation { duration: 250 } }
+ }
+
+ // Sub XmlListModel
+ XmlListModel { id: subxmllistmodelelement
+ source: "cookbook.xml"
+ query: "/cookbook/recipe[@id = '"+model.xmlid+"']/ingredient"
+ XmlRole { name: "ingredientname"; query: "@name/string()" }
+ XmlRole { name: "ingredientquantity"; query: "@quantity/string()" }
+ XmlRole { name: "ingredientunit"; query: "@unit/string()" }
+ }
+
+ ListView {
+ id: ingredientlist
+ model: subxmllistmodelelement
+ height: 20 * count; width: parent.width
+ visible: opacity != 0
+ Behavior on opacity { NumberAnimation { duration: 250 } }
+ anchors.horizontalCenter: parent.horizontalCenter; anchors.top: recipetime.bottom; anchors.topMargin: 10
+ header: Text { text: "<b>Ingredients:</b>" }
+ delegate: Text {
+ text: ingredientquantity + " " + ingredientunit + " of " + ingredientname; height: 20;
+ }
+ }
+
+ Text {
+ id: recipemethod
+ property string methodtext: ""
+ width: parent.width; wrapMode: Text.WordWrap; visible: opacity != 0; text: methodtext
+ anchors.horizontalCenter: parent.horizontalCenter; anchors.top: ingredientlist.bottom
+ Behavior on opacity { NumberAnimation { duration: 250 } }
+ Component.onCompleted: { console.log(model.method); methodtext = model.method; console.log(recipemethod.textFormat); }
+ }
+ MouseArea { anchors.fill: parent; onClicked: delbox.state = delbox.state == "open" ? "closed" : "open" }
+ Behavior on height { NumberAnimation { duration: 250 } }
+ states: [
+ State { name: "closed"
+ PropertyChanges { target: delbox; height: 50 }
+ PropertyChanges { target: recipemethod; opacity: 0 }
+ PropertyChanges { target: recipetime; opacity: 0 }
+ PropertyChanges { target: ingredientlist; opacity: 0 }
+ },
+ State { name: "open"
+ PropertyChanges { target: delbox; height: recipemethod.height+recipetime.height+ingredientlist.height+50 }
+ PropertyChanges { target: recipemethod; opacity: 1 }
+ StateChangeScript { script: { recipeview.positionViewAtIndex(model.index, ListView.Beginning); } }
+ }
+ ]
+ }
+ }
+ }
+
+ SystemTestHelp { id: helpbubble; visible: statenum != 0
+ anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 }
+ }
+ BugPanel { id: bugpanel }
+
+ states: [
+ State { name: "start"; when: statenum == 1
+ PropertyChanges { target: xmllistmodelelementtest
+ testtext: "This is a ListView populated by an XmlListModel. Clicking on an item will show the recipe details.\n"+
+ "Next we will change to source of the model data to a local string" }
+ },
+ State { name: "xmlstring"; when: statenum == 2
+ PropertyChanges { target: xmllistmodelelement; source: "" }
+ PropertyChanges { target: xmllistmodelelement; xml: modelxml }
+ PropertyChanges { target: xmllistmodelelementtest
+ testtext: "The list should now only contain a Hot chocolate recipe.\n"+
+ "Advance to restart the test." }
+ }
+ ]
+
+} \ No newline at end of file