diff options
author | Kalle Viironen <kalle.viironen@digia.com> | 2014-02-21 12:03:35 +0200 |
---|---|---|
committer | Kalle Viironen <kalle.viironen@digia.com> | 2014-02-21 12:04:13 +0200 |
commit | b1f9ebae32c44ff0dc2315a1c1c363ad98aaf145 (patch) | |
tree | bad33c0a01cc4274dee43c8370a0bdcd08d6fc7f /basicsuite/qt5-everywhere/demos | |
parent | 9c48ce0535c7a89e32a4b0f932dc3f61e973018a (diff) | |
parent | 0325d7b4156098ef064f04208905712c5bf0174e (diff) |
Merge branch 'stable' into release
* stable: (50 commits)
Fix deployment of QML import plugins when building in Qt Creator
Add QtWidgets dependecy to shared.pri
Update title and description for Text Input demo
Update content for About Boot to Qt demo
Fix QML GroupBox: Binding loop detected for property
[controls-touch] Deploy images
Remove Sensors demo from the Qt Creator's list of examples
Remove Sensor Explorer and Particles demos from launcher
Fix layout issues with Qt-Everywhere (touchgallery)
[qt5-launchpresentation] Don't crop the description text on nexus
[launcher settings] improve visual appearance
[qt5-everywhere] update preview image
Fix vkb import path
Fix issues in qt5-launcher presentation
Remove Raspberry Pi logo from demo
Fix Canvas2D error
Qt5-Everywhere: show network error message
fix glsl syntax in graphical effects demo
Update copyright year
Limit camera & mediaplayer demos to working devices
...
Change-Id: I1ed9233a89ea989013b398c8480e1932949fff19
Diffstat (limited to 'basicsuite/qt5-everywhere/demos')
295 files changed, 14337 insertions, 0 deletions
diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/Calqlatr.qml b/basicsuite/qt5-everywhere/demos/calqlatr/Calqlatr.qml new file mode 100644 index 0000000..39a0834 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/Calqlatr.qml @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "content" +import "content/calculator.js" as CalcEngine + + +Rectangle { + id: window + anchors.fill: parent + color: "#272822" + + function operatorPressed(operator) { CalcEngine.operatorPressed(operator) } + function digitPressed(digit) { CalcEngine.digitPressed(digit) } + + Item { + id: pad + width: window.width * 0.58 + height: window.height * 0.98 + NumberPad { anchors.horizontalCenter: parent.horizontalCenter } + } + + AnimationController { + id: controller + animation: ParallelAnimation { + id: anim + NumberAnimation { target: display; property: "x"; duration: 400; from: -16; to: window.width - display.width; easing.type: Easing.InOutQuad } + NumberAnimation { target: pad; property: "x"; duration: 400; from: window.width - pad.width; to: 0; easing.type: Easing.InOutQuad } + SequentialAnimation { + NumberAnimation { target: pad; property: "scale"; duration: 200; from: 1; to: 0.97; easing.type: Easing.InOutQuad } + NumberAnimation { target: pad; property: "scale"; duration: 200; from: 0.97; to: 1; easing.type: Easing.InOutQuad } + } + } + } + + Display { + id: display + x: -16 + width: window.width * 0.42 + height: parent.height + + MouseArea { + property real startX: 0 + property real oldP: 0 + property bool rewind: false + + anchors.fill: parent + onPositionChanged: { + var reverse = startX > window.width / 2 + var mx = mapToItem(window, mouse.x).x + var p = Math.abs((mx - startX) / (window.width - display.width)) + if (p < oldP) + rewind = reverse ? false : true + else + rewind = reverse ? true : false + controller.progress = reverse ? 1 - p : p + oldP = p + } + onPressed: startX = mapToItem(window, mouse.x).x + onReleased: { + if (rewind) + controller.completeToBeginning() + else + controller.completeToEnd() + } + } + } + +} diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/Button.qml b/basicsuite/qt5-everywhere/demos/calqlatr/content/Button.qml new file mode 100644 index 0000000..6165ed3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/Button.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + property alias text: textItem.text + property alias color: textItem.color + property bool operator: false + + signal clicked + + width: 0.33*pad.width + height: pad.height/7 + + Text { + id: textItem + anchors.centerIn: parent + horizontalAlignment: Text.AlignHCenter + font.pixelSize: parent.height * 0.6 + elide: Text.ElideLeft + lineHeight: 0.75 + color: "white" + } + + Image { + id: touchImage + source: "images/touch-green.png" + anchors.centerIn: parent + width: 2*parent.height + height: 2*parent.height + visible: false + } + + MouseArea { + id: mouse + anchors.fill: parent + anchors.margins: -5 + onPressed: touchImage.visible = true + onReleased: touchImage.visible = false + onClicked: { + if (operator) + window.operatorPressed(parent.text) + else + window.digitPressed(parent.text) + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/Display.qml b/basicsuite/qt5-everywhere/demos/calqlatr/content/Display.qml new file mode 100644 index 0000000..df3bfa2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/Display.qml @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: display + function clearAll() + { + listView.model.clear(); + } + + function displayOperator(operator) + { + listView.model.append({ "operator": operator, "operand": "" }) + } + + function newLine(operator, operand) + { + listView.model.append({ "operator": operator, "operand": operand }) + } + + function appendDigit(digit) + { + if (!listView.model.count) + listView.model.append({ "operator": "", "operand": "" }) + var i = listView.model.count - 1; + listView.model.get(i).operand = listView.model.get(i).operand + digit; + } + + Item { + id: theItem + width: parent.width + 32 + height: parent.height + + Rectangle { + id: rect + x: 16 + color: "white" + height: parent.height + width: display.width - 16 + } + Image { + anchors.right: rect.left + source: "images/paper-edge-left.png" + height: parent.height + fillMode: Image.TileVertically + } + Image { + anchors.left: rect.right + source: "images/paper-edge-right.png" + height: parent.height + fillMode: Image.TileVertically + } + + Image { + source: "images/paper-grip.png" + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 20 + } + + ListView { + id: listView + x: 16; y: 30 + width: display.width + height: display.height + delegate: Item { + height: 20 + width: parent.width + Text { + id: operator + x: 8 + font.pixelSize: 18 + color: "#6da43d" + text: model.operator + } + Text { + id: operand + font.pixelSize: 18 + anchors.right: parent.right + anchors.rightMargin: 26 + text: model.operand + } + } + model: ListModel { } + } + + } + +} diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/NumberPad.qml b/basicsuite/qt5-everywhere/demos/calqlatr/content/NumberPad.qml new file mode 100644 index 0000000..454c50d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/NumberPad.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Grid { + columns: 3 + columnSpacing: 0 + rowSpacing: 0 + + Button { text: "7" } + Button { text: "8" } + Button { text: "9" } + Button { text: "4" } + Button { text: "5" } + Button { text: "6" } + Button { text: "1" } + Button { text: "2" } + Button { text: "3" } + Button { text: "0" } + Button { text: "." } + Button { text: " " } + Button { text: "±"; color: "#6da43d"; operator: true } + Button { text: "−"; color: "#6da43d"; operator: true } + Button { text: "+"; color: "#6da43d"; operator: true } + Button { text: " "; color: "#6da43d"; operator: true } + Button { text: "÷"; color: "#6da43d"; operator: true } + Button { text: "×"; color: "#6da43d"; operator: true } + Button { text: "C"; color: "#6da43d"; operator: true } + Button { text: " "; color: "#6da43d"; operator: true } + Button { text: "="; color: "#6da43d"; operator: true } +} diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/StyleLabel.qml b/basicsuite/qt5-everywhere/demos/calqlatr/content/StyleLabel.qml new file mode 100644 index 0000000..3bdea86 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/StyleLabel.qml @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Text { + width: 64 + font.pixelSize: 14 + font.bold: false + wrapMode: Text.WordWrap + lineHeight: 0.75 + color: "#676764" +} diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/audio/touch.wav b/basicsuite/qt5-everywhere/demos/calqlatr/content/audio/touch.wav Binary files differnew file mode 100644 index 0000000..94cccb7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/audio/touch.wav diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/calculator.js b/basicsuite/qt5-everywhere/demos/calqlatr/content/calculator.js new file mode 100644 index 0000000..ffc78bf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/calculator.js @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + + +var curVal = 0 +var memory = 0 +var lastOp = "" +var previousOperator = "" +var digits = "" + +function disabled(op) { + if (op == "." && digits.toString().search(/\./) != -1) { + return true + } else if (op == window.squareRoot && digits.toString().search(/-/) != -1) { + return true + } else { + return false + } +} + +function digitPressed(op) +{ + if (lastOp == "=") + display.newLine("", ""); + + if (disabled(op)) + return + if (digits.toString().length >= 14) + return + if (lastOp.toString().length == 1 && ((lastOp >= "0" && lastOp <= "9") || lastOp == ".") ) { + digits = digits + op.toString() + display.appendDigit(op.toString()) + } else { + digits = op + display.appendDigit(op.toString()) + } + lastOp = op +} + +function operatorPressed(op) +{ + if (disabled(op)) + return + lastOp = op + + if (previousOperator == "+") { + digits = Number(digits.valueOf()) + Number(curVal.valueOf()) + } else if (previousOperator == "−") { + digits = Number(curVal) - Number(digits.valueOf()) + } else if (previousOperator == "×") { + digits = Number(curVal) * Number(digits.valueOf()) + } else if (previousOperator == "÷") { + digits = Number(Number(curVal) / Number(digits.valueOf())).toString() + } else if (previousOperator == "=") { + } + + if (op == "+" || op == "−" || op == "×" || op == "÷") { + previousOperator = op + curVal = digits.valueOf() + display.displayOperator(previousOperator) + return + } + + if (op == "=") { + display.newLine("=", digits.toString()) + } + + curVal = 0 + previousOperator = "" + + if (op == "1/x") { + digits = (1 / digits.valueOf()).toString() + } else if (op == "x^2") { + digits = (digits.valueOf() * digits.valueOf()).toString() + } else if (op == "Abs") { + digits = (Math.abs(digits.valueOf())).toString() + } else if (op == "Int") { + digits = (Math.floor(digits.valueOf())).toString() + } else if (op == window.plusminus) { + digits = (digits.valueOf() * -1).toString() + } else if (op == window.squareRoot) { + digits = (Math.sqrt(digits.valueOf())).toString() + } else if (op == "mc") { + memory = 0; + } else if (op == "m+") { + memory += digits.valueOf() + } else if (op == "mr") { + digits = memory.toString() + } else if (op == "m-") { + memory = digits.valueOf() + } else if (op == window.leftArrow) { + digits = digits.toString().slice(0, -1) + if (digits.length == 0) { + digits = "0" + } + } else if (op == "Off") { + Qt.quit(); + } else if (op == "C") { + curVal = 0 + memory = 0 + lastOp = "" + digits = "" + display.clearAll() + } else if (op == "AC") { + curVal = 0 + memory = 0 + lastOp = "" + digits ="0" + } + + +} + diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-back.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-back.png Binary files differnew file mode 100644 index 0000000..2989ee2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-back.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-close.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-close.png Binary files differnew file mode 100644 index 0000000..3e21248 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-close.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-settings.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-settings.png Binary files differnew file mode 100644 index 0000000..98e662f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/icon-settings.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/logo.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/logo.png Binary files differnew file mode 100644 index 0000000..6bc6561 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/logo.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-edge-left.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-edge-left.png Binary files differnew file mode 100644 index 0000000..ca29a3a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-edge-left.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-edge-right.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-edge-right.png Binary files differnew file mode 100644 index 0000000..7c2da7b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-edge-right.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-grip.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-grip.png Binary files differnew file mode 100644 index 0000000..953c408 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/paper-grip.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/settings-selected-a.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/settings-selected-a.png Binary files differnew file mode 100644 index 0000000..e08ddfa --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/settings-selected-a.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/settings-selected-b.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/settings-selected-b.png Binary files differnew file mode 100644 index 0000000..d9aa7e3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/settings-selected-b.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/touch-green.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/touch-green.png Binary files differnew file mode 100644 index 0000000..64dbde6 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/touch-green.png diff --git a/basicsuite/qt5-everywhere/demos/calqlatr/content/images/touch-white.png b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/touch-white.png Binary files differnew file mode 100644 index 0000000..bb02b00 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/calqlatr/content/images/touch-white.png diff --git a/basicsuite/qt5-everywhere/demos/canvasclock/canvasClock.qml b/basicsuite/qt5-everywhere/demos/canvasclock/canvasClock.qml new file mode 100644 index 0000000..2a79735 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/canvasclock/canvasClock.qml @@ -0,0 +1,404 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + anchors.fill: parent + property color rimColor: Qt.rgba(1,0,0,1) //'#ff0000' + property color dialColor: Qt.rgba(0.2,0.2,0.2,1) //'#333333' + property color bgcolor: Qt.rgba(1,1,1,1) + property int dialStyle: 0 + color: "#333333" + + Text{ + id: codeText + anchors {fill:parent} + text: "" + rotation: 10 + color: "#666666" + font.pixelSize: root.height*.05 + + verticalAlignment:Text.AlignBottom + + property int pos: 0 + + property string code: " +var ctx = clockCanvas.getContext('2d') +ctx.clearRect(0,0,clockContainer.clockRadius,clockContainer.clockRadius) + +var gradient = ctx.createRadialGradient(clockContainer.clockRadius/4, clockContainer.clockRadius/4, 0, clockContainer.clockRadius/4, clockContainer.clockRadius/4, clockContainer.clockRadius) +gradient.addColorStop(0, '#ffffff') +gradient.addColorStop(1, '#888888') + +ctx.fillStyle = gradient +ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) +ctx.fill() + +drawDials(ctx) + +var gradient2 = ctx.createLinearGradient(0, 0, clockContainer.clockRadius, clockContainer.clockRadius) +gradient2.addColorStop(0, Qt.rgba(0,0,0,.5)) +gradient2.addColorStop(.5, Qt.rgba(1,1,1,.5)) +gradient2.addColorStop(1, Qt.rgba(0,0,0,.5)) + +var gradient3 = ctx.createLinearGradient(0, 0, clockContainer.clockRadius, clockContainer.clockRadius) +gradient3.addColorStop(0, Qt.rgba(1,1,1,.5)) +gradient3.addColorStop(.5, Qt.rgba(0,0,0,.5)) +gradient3.addColorStop(1, Qt.rgba(1,1,1,.5)) + +ctx.lineWidth = clockContainer.clockRadius*.05 +ctx.strokeStyle = root.rimColor + +ctx.beginPath() +ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.45, 0, 360, false) +ctx.stroke() + +ctx.strokeStyle = gradient2 +ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.45, 0, 360, false) +ctx.stroke() + +ctx.beginPath() +ctx.strokeStyle = root.rimColor +ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) +ctx.stroke() + +ctx.strokeStyle = gradient3 +ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) +ctx.stroke() +ctx.closePath() + +function drawPointer(context, angle, len, thickness, color){ + context.beginPath() + context.lineWidth = thickness + context.strokeStyle = color + context.moveTo(clockContainer.clockRadius/2, clockContainer.clockRadius/2) + var x1=Math.cos(angle*0.01745)*len + var y1=Math.sin(angle*0.01745)*len + context.lineTo(clockContainer.clockRadius/2+.5+x1,clockContainer.clockRadius/2+.5+y1) + context.stroke() + context.closePath() +}" + + Timer{ + id: textTimer + interval: 10 + onTriggered: { + codeText.pos++ + if (codeText.pos >= codeText.code.length)codeText.pos=0 + codeText.text+=codeText.code.charAt(codeText.pos) + if (codeText.text.length >1000){ + codeText.text=codeText.text.substring(codeText.text.length-1000) + } + } + repeat: true + running: true + } + } + + Rectangle { + anchors.fill: parent + gradient: Gradient { + GradientStop {position: .0; color :"black"} + GradientStop {position: .5; color :"transparent"} + GradientStop {position: 1.0; color :"black"} + + } + opacity: .5 + } + + Item { + id: clockContainer + width: 2* Math.min(root.width*.8, root.height*.8) + height: width + scale: 0.5 + anchors.centerIn: parent + property int clockRadius: width + + ShaderEffectSource{ + id: clockBg + anchors.fill: parent + sourceItem: clockCanvas + hideSource: true + live: false + } + + Canvas { + id: clockCanvas + anchors.fill: parent + onPaint: { + var ctx = clockCanvas.getContext('2d') + + ctx.clearRect(0,0,clockContainer.clockRadius,clockContainer.clockRadius) + + var gradient = ctx.createRadialGradient(clockContainer.clockRadius/4, clockContainer.clockRadius/4, 0, clockContainer.clockRadius/4, clockContainer.clockRadius/4, clockContainer.clockRadius) + + ctx.fillStyle = root.bgcolor + ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) + ctx.fill() + + gradient.addColorStop(0, Qt.rgba(0,0,0,0)) + gradient.addColorStop(1, Qt.rgba(0,0,0,.5)) + + ctx.fillStyle = gradient + ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) + ctx.fill() + + drawDials(ctx) + + var gradient2 = ctx.createLinearGradient(0, 0, clockContainer.clockRadius, clockContainer.clockRadius) + gradient2.addColorStop(0, Qt.rgba(0,0,0,.5)) + gradient2.addColorStop(.5, Qt.rgba(1,1,1,.5)) + gradient2.addColorStop(1, Qt.rgba(0,0,0,.5)) + + var gradient3 = ctx.createLinearGradient(0, 0, clockContainer.clockRadius, clockContainer.clockRadius) + gradient3.addColorStop(0, Qt.rgba(1,1,1,.5)) + gradient3.addColorStop(.5, Qt.rgba(0,0,0,.5)) + gradient3.addColorStop(1, Qt.rgba(1,1,1,.5)) + + ctx.lineWidth = clockContainer.clockRadius*.05 + + ctx.strokeStyle = root.rimColor + ctx.beginPath() + ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.45, 0, 360, false) + ctx.stroke() + + ctx.strokeStyle = gradient2 + ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.45, 0, 360, false) + ctx.stroke() + + ctx.beginPath() + ctx.strokeStyle = root.rimColor + ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) + ctx.stroke() + + ctx.strokeStyle = gradient3 + + ctx.arc(clockContainer.clockRadius/2, clockContainer.clockRadius/2, clockContainer.clockRadius*.475, 0, 360, false) + ctx.stroke() + ctx.closePath() + + + clockBg.scheduleUpdate() + } + + function drawDials(context){ + + context.strokeStyle = "#888888" + context.fillStyle = root.dialColor + context.lineWidth = 2 + context.beginPath() + for (var i=1; i<=60; i++){ + var x1=Math.cos(((i)*6)*0.01745)*clockContainer.clockRadius*.4 + var y1=Math.sin(((i)*6)*0.01745)*clockContainer.clockRadius*.4 + + var x2=Math.cos(((i)*6)*0.01745)*clockContainer.clockRadius*.45 + var y2=Math.sin(((i)*6)*0.01745)*clockContainer.clockRadius*.45 + + context.moveTo(clockContainer.clockRadius/2+.5+x1,clockContainer.clockRadius/2+.5+y1) + context.lineTo(clockContainer.clockRadius/2+.5+x2,clockContainer.clockRadius/2+.5+y2) + context.stroke() + } + context.closePath() + + context.beginPath() + + var romans = ['I','II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'] + + for (i=1; i<=12; i++){ + x1=Math.cos((-90+(i)*30)*0.01745)*clockContainer.clockRadius*.35 -clockContainer.width*0.03 + y1=Math.sin((-90+(i)*30)*0.01745)*clockContainer.clockRadius*.35 +clockContainer.height*0.04 + + if (root.dialStyle === 1) x1-=clockContainer.width*0.01 + + context.font = 'bold '+Math.floor(clockContainer.width*.1)+'px sans-serif' + + + if (i >= 10) + x1 -= clockContainer.width*0.02 + context.textAlign = 'center'; + context.textBaseline = 'middle' + + var dial = i + + if (root.dialStyle === 1) dial = romans[i-1] + context.text(dial,clockContainer.clockRadius/2+x1,clockContainer.clockRadius/2+y1) + + context.fill() + context.stroke() + } + context.closePath() + } + } + + Canvas { + id: clockPointers + anchors.fill: parent + antialiasing: true + renderTarget: Canvas.Image + onPaint: { + var ctx = clockPointers.getContext('2d') + ctx.clearRect(0,0,clockContainer.clockRadius,clockContainer.clockRadius) + ctx.lineCap = 'round' + drawPointer(ctx, -90+clock.hours*30, clockContainer.clockRadius*.25, clockContainer.clockRadius*.05, "#000000") + drawPointer(ctx, -90+clock.minutes*6, clockContainer.clockRadius*.375, clockContainer.clockRadius*.025, "#333333") + drawPointer(ctx, -90+clock.seconds*6, clockContainer.clockRadius*.40, 4, "#aa0000") + + // Draw nail + ctx.beginPath() + ctx.fillStyle = "#535353" + ctx.ellipse(clockContainer.clockRadius/2-16,clockContainer.clockRadius/2-16,32,32) + ctx.fill() + ctx.closePath() + } + + function drawPointer(context, angle, len, thickness, color){ + context.beginPath() + context.lineWidth = thickness + context.strokeStyle = color + context.moveTo(clockContainer.clockRadius/2, clockContainer.clockRadius/2) + var x1=Math.cos(angle*0.01745)*len + var y1=Math.sin(angle*0.01745)*len + context.lineTo(clockContainer.clockRadius/2+.5+x1,clockContainer.clockRadius/2+.5+y1) + context.stroke() + context.closePath() + } + } + + Timer{ + id: clock + interval: 1000 + repeat: true + running: !mouseArea.pressed + + property int hours: 0 + property int minutes: 0 + property int seconds: 0 + + onTriggered: { + seconds ++ + if (seconds == 60) seconds = 0 + + if (seconds == 0) minutes++ + if (minutes == 60) { + hours++ + minutes=0 + } + + if (hours >= 12) hours=0 + + clockPointers.requestPaint() + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: clockContainer + property bool grabbed: false + + onPressed: { + + var temp = clockContainer.clockRadius/2 + var ang = (90+Math.atan2((mouseY-temp), (mouseX-temp))*57.2957795) + if (ang <0) ang+=360 + + if (ang/6 > clock.minutes-2 && ang/6<clock.minutes+2){ + + grabbed = true + return; + } else { + var y = mouseY-temp + var x = mouseX-temp + var dist = Math.sqrt(y*y+x*x) + + if (dist>clockContainer.clockRadius*.42*clockContainer.scale){ + root.rimColor = newColor() + clockCanvas.requestPaint() + return; + }else if (dist>clockContainer.clockRadius*.32*clockContainer.scale) { + root.dialStyle = Math.round(Math.random()) + root.dialColor = newColor() + clockCanvas.requestPaint() + }else{ + root.bgcolor = newColor() + clockCanvas.requestPaint() + } + } + } + + onPositionChanged: { + if (grabbed) { + var temp = clockContainer.clockRadius/2 + var ang = (90+Math.atan2((mouseY-temp), (mouseX-temp))*57.2957795) + if (ang <0) ang+=360 + + var oldMinutes = clock.minutes + clock.minutes=ang/6 + + if (oldMinutes>55 && clock.minutes <5) clock.hours++ + if (oldMinutes<5 && clock.minutes >50) clock.hours-- + if (clock.hours >12) clock.hours=1 + if (clock.hours <0) clock.hours=11 + + + clockPointers.requestPaint() + } + } + onReleased: grabbed = false; + } + + function newColor(){ + var r=Math.random() + var g=Math.random() + var b=Math.random() + return Qt.rgba(r,g,b,1) + } + + Component.onCompleted: { + var d = new Date() + clock.hours = d.getHours() + if (clock.hours>=12)clock.hours-=12 + clock.minutes = d.getMinutes() + clock.seconds = d.getSeconds() + clockCanvas.requestPaint() + } +} diff --git a/basicsuite/qt5-everywhere/demos/demos.pro b/basicsuite/qt5-everywhere/demos/demos.pro new file mode 100644 index 0000000..439fe35 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/demos.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +SUBDIRS += \ + shaders \ diff --git a/basicsuite/qt5-everywhere/demos/gridrssnews/RssDelegate.qml b/basicsuite/qt5-everywhere/demos/gridrssnews/RssDelegate.qml new file mode 100644 index 0000000..87b25c2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/gridrssnews/RssDelegate.qml @@ -0,0 +1,111 @@ +/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia Plc 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+ id: delegate
+ height: grid.cellHeight
+ width: grid.cellWidth
+ color: mainWindow.appBackground
+ property int tileMargin: mainWindow.tileMargin
+
+ Rectangle {
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.topMargin: parent.tileMargin/2
+ width: parent.width - tileMargin
+ height: parent.height - tileMargin
+ color: mainWindow.tileBackground
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ grid.currentIndex = index
+ console.log(link)
+ Qt.openUrlExternally(link)
+ }
+ }
+
+ states: [
+ State {
+ name: "selected"
+ when: delegate.GridView.isCurrentItem
+ }
+ ]
+
+
+ Image {
+ id: iconImage
+ source: url
+ width: parent.width
+ height: parent.height
+ }
+
+ Rectangle{
+ width: parent.width
+ height: dateText.height + tileMargin
+ anchors.top: dateText.top
+ anchors.bottom: parent.bottom
+ color: "Black"
+ opacity: 0.5
+ visible: iconImage.source
+
+ }
+
+ Text {
+ id: dateText
+ anchors.left: parent.left
+ anchors.leftMargin: tileMargin
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: tileMargin
+ anchors.right: parent.right
+ anchors.rightMargin: tileMargin
+
+ color: mainWindow.textColor
+ text: title
+ width: parent.width;
+ wrapMode: Text.WordWrap;
+ smooth: true
+ font { family: mainWindow.uiFont; pixelSize: mainWindow.tileFontSize }
+ }
+ }
+}
+
diff --git a/basicsuite/qt5-everywhere/demos/gridrssnews/ScrollBar.qml b/basicsuite/qt5-everywhere/demos/gridrssnews/ScrollBar.qml new file mode 100644 index 0000000..3a8fea9 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/gridrssnews/ScrollBar.qml @@ -0,0 +1,72 @@ +/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia Plc 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Item {
+ id: scrollBar
+
+ // The properties that define the scrollbar's state.
+ // position and pageSize are in the range 0.0 - 1.0. They are relative to the
+ // height of the page, i.e. a pageSize of 0.5 means that you can see 50%
+ // of the height of the view.
+ // orientation can be either Qt.Vertical or Qt.Horizontal
+ property real position
+ property real pageSize
+ property variant orientation : Qt.Vertical
+
+ // A light, semi-transparent background
+ Rectangle {
+ id: background
+ anchors.fill: parent
+ radius: width/2 - 1
+ color: mainWindow.appBackground
+ }
+
+ // Size the bar to the required size, depending upon the orientation.
+ Rectangle {
+ x: scrollBar.position * (scrollBar.width-2) + 1
+ y: 1
+ width: scrollBar.pageSize * (scrollBar.width-2)
+ height: parent.height
+ radius: height/2 - 1
+ color: mainWindow.tileBackground
+ }
+}
diff --git a/basicsuite/qt5-everywhere/demos/gridrssnews/main.qml b/basicsuite/qt5-everywhere/demos/gridrssnews/main.qml new file mode 100644 index 0000000..2856cfb --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/gridrssnews/main.qml @@ -0,0 +1,176 @@ +/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia Plc 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.XmlListModel 2.0
+
+Rectangle {
+ id: mainWindow
+ anchors.fill: parent
+ color: appBackground
+
+ property int tileHeight: parseInt(grid.height / 3)
+ property int tileFontSize: tileHeight * 0.08
+ property int horizontalMargin: height * 0.08
+ property int topBarsize: height * 0.2
+ property int bottomBarSize: height * 0.08
+ property int tileMargin: height * 0.01
+ property int appHeaderFontSize: topBarsize * 0.4
+ property string appBackground: "#262626"
+ property string tileBackground: "#86bc24"
+ property string textColor: "white"
+ property string uiFont: "Segoe UI"
+
+ XmlListModel {
+ id: feedModel
+ //source: "http://blog.qt.digia.com/feed/"
+ source: "http://news.yahoo.com/rss/tech"
+ //query: "/rss/channel/item"
+ // Filter out items that don't have images
+ query: "/rss/channel/item[exists(child::media:content)]"
+ namespaceDeclarations: "declare namespace media=\"http://search.yahoo.com/mrss/\";"
+ XmlRole { name: "url"; query: "media:content/@url/string()" }
+ XmlRole { name: "title"; query: "title/string()" }
+ XmlRole { name: "pubDate"; query: "pubDate/string()" }
+ XmlRole { name: "link"; query: "link/string()" }
+
+ onStatusChanged: {
+ if (status == XmlListModel.Ready) {
+ playbanner.start();
+ } else if (status == XmlListModel.Error) {
+ networkErrorMessage.start();
+ }
+ }
+ }
+
+ // Top bar
+ Item {
+ id: topBar
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.leftMargin: horizontalMargin
+ opacity: 0
+ height: topBarsize
+ Text {
+ id: title
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ text: qsTr("Yahoo Technology")
+ font.family: uiFont;
+ font.pixelSize: appHeaderFontSize;
+ color: textColor
+ smooth: true
+ }
+ }
+
+ // Grid view
+ GridView {
+ id: grid
+ anchors.fill: parent
+ anchors.topMargin: topBarsize
+ anchors.bottomMargin: bottomBarSize
+ anchors.leftMargin: horizontalMargin
+ anchors.rightMargin: horizontalMargin
+ opacity: 0
+ flow: GridView.TopToBottom
+ cellHeight: tileHeight
+ cellWidth: parseInt(tileHeight * 1.5)
+ cacheBuffer: cellWidth
+ clip: false
+ focus: true
+ model: feedModel
+ delegate: RssDelegate {}
+
+ // Only show the scrollbars when the view is moving.
+ states: State {
+ when: grid.movingHorizontally
+ PropertyChanges { target: horizontalScrollBar; opacity: 1 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "opacity"; duration: 400 }
+ }
+ }
+
+ ScrollBar {
+ id: horizontalScrollBar
+ width: parent.width; height: 6
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ opacity: 0
+ orientation: Qt.Horizontal
+ position: grid.visibleArea.xPosition
+ pageSize: grid.visibleArea.widthRatio
+ }
+
+ Item {
+ id: networkErrorBox
+ opacity: 0
+ anchors.fill: parent
+
+ Text {
+ anchors.centerIn: parent
+ text: qsTr("Sorry! No network connection")
+ font.family: uiFont;
+ font.pixelSize: appHeaderFontSize;
+ color: textColor
+ smooth: true
+ }
+ }
+
+ SequentialAnimation {
+ id: playbanner
+ running: false
+ NumberAnimation { target: topBar; property: "opacity"; to: 1.0; duration: 300}
+ NumberAnimation { target: grid; property: "opacity"; to: 1.0; duration: 300}
+ }
+
+ NumberAnimation {
+ id: networkErrorMessage
+ running: false
+ target: networkErrorBox
+ property: "opacity"
+ to: 1.0
+ duration: 300
+ }
+
+}
+
diff --git a/basicsuite/qt5-everywhere/demos/heartmonitor/HeartData.js b/basicsuite/qt5-everywhere/demos/heartmonitor/HeartData.js new file mode 100644 index 0000000..d3ad154 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/heartmonitor/HeartData.js @@ -0,0 +1,50 @@ +/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia Plc 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$
+**
+****************************************************************************/
+
+var heartData = [0,0,0,0,0]
+
+function fillHeartData(length) {
+ if (length !== heartData.length) {
+ heartData = new Array(length);
+ for (var i=0; i<length; i++) {
+ heartData[i] = 0;
+ }
+ }
+}
diff --git a/basicsuite/qt5-everywhere/demos/heartmonitor/heart.png b/basicsuite/qt5-everywhere/demos/heartmonitor/heart.png Binary files differnew file mode 100644 index 0000000..d7a6170 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/heartmonitor/heart.png diff --git a/basicsuite/qt5-everywhere/demos/heartmonitor/main.qml b/basicsuite/qt5-everywhere/demos/heartmonitor/main.qml new file mode 100644 index 0000000..7594bdd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/heartmonitor/main.qml @@ -0,0 +1,266 @@ +/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia Plc 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import "HeartData.js" as Data
+
+Rectangle {
+ id: app
+ anchors.fill: parent
+ color: "black"
+
+ property int frequency: 60
+ property int beatDataIndex: -1
+ property int heartDataIndex: 0
+ property int beatDifference: 1200
+ property var previousTime: 0
+ property string curveColor: "#22ff22"
+ property string alarmColor: "#ff2222"
+ property string textColor: "#22ff22"
+ property string gridColor: "#333333"
+
+ function pulse() {
+ if (!heartAnimation.running) {
+ heartAnimation.restart()
+ heartTimer.restart()
+ calculateFrequency();
+ app.beatDataIndex = 0
+ }
+ }
+
+ function calculateFrequency() {
+ var ms = new Date().getTime();
+ if (app.previousTime > 0)
+ app.beatDifference = 0.8*beatDifference + 0.2*(ms - app.previousTime)
+ app.frequency = Math.round(60000.0 / app.beatDifference)
+ app.previousTime = ms;
+ }
+
+ function updateData() {
+ app.heartDataIndex++;
+ if (app.heartDataIndex >= Data.heartData.length)
+ app.heartDataIndex = 0;
+ else
+ app.heartDataIndex++;
+
+ if (beatDataIndex >= 0)
+ fillBeatData()
+ else
+ fillRandomData()
+
+ heartCanvas.requestPaint()
+ }
+
+ function fillBeatData() {
+ var value = 0;
+ switch (app.beatDataIndex) {
+ case 0: value = Math.random()*0.1+0.1; break;
+ case 1: value = Math.random()*0.1+0.0; break;
+ case 2: value = Math.random()*0.3+0.7; break;
+ case 3: value = Math.random()*0.1-0.05; break;
+ case 4: value = Math.random()*0.3-0.8; break;
+ case 5: value = Math.random()*0.1-0.05; break;
+ case 6: value = Math.random()*0.1-0.05; break;
+ case 7: value = Math.random()*0.1+0.15; break;
+ default: value = 0; break;
+ }
+
+ Data.heartData[app.heartDataIndex] = value;
+ app.beatDataIndex++;
+ if (app.beatDataIndex > 7)
+ app.beatDataIndex = -1
+ }
+
+ function fillRandomData() {
+ Data.heartData[app.heartDataIndex] = Math.random()*0.05-0.025
+ }
+
+ onWidthChanged: {
+ Data.fillHeartData(Math.floor(app.width*0.5))
+ gridCanvas.requestPaint();
+ }
+ onHeightChanged: gridCanvas.requestPaint()
+
+ Item {
+ id: grid
+ anchors.fill: parent
+
+ Canvas {
+ id: gridCanvas
+ anchors.fill: parent
+ antialiasing: true
+ renderTarget: Canvas.Image
+ onPaint: {
+ var ctx = gridCanvas.getContext('2d')
+
+ ctx.clearRect(0,0,grid.width,grid.height)
+ var step = 1000 / updateTimer.interval * (app.width / Data.heartData.length)
+ var xCount = app.width / step
+ var yCount = app.height / step
+ ctx.strokeStyle = app.gridColor;
+
+ var x=0;
+ ctx.beginPath()
+ for (var i=0; i<xCount; i++) {
+ x = i*step
+ ctx.moveTo(x,0)
+ ctx.lineTo(x,app.height)
+ }
+ ctx.stroke()
+ ctx.closePath()
+
+ var y=0;
+ ctx.beginPath()
+ for (var j=0; j<yCount; j++) {
+ y = j*step
+ ctx.moveTo(0, y)
+ ctx.lineTo(app.width,y)
+ }
+ ctx.stroke()
+ ctx.closePath()
+ }
+ }
+ }
+
+ Rectangle {
+ id: canvasBackground
+ anchors { bottom: parent.bottom; left: parent.left; right: parent.right }
+ height: 0.75 * parent.height
+
+ gradient: Gradient {
+ GradientStop {position: .0; color :"black"}
+ GradientStop {position: .5; color :"#00ff00"}
+ GradientStop {position: 1.0; color :"black"}
+ }
+ opacity: .3
+ }
+
+ Item {
+ id: canvasContainer
+ anchors.fill: canvasBackground
+
+ Canvas {
+ id: heartCanvas
+ anchors.fill: parent
+ antialiasing: true
+ renderTarget: Canvas.Image
+ onPaint: {
+ var ctx = heartCanvas.getContext('2d')
+
+ ctx.clearRect(0,0,canvasContainer.width,canvasContainer.height)
+
+ var baseY = heartCanvas.height/2;
+ var length = Data.heartData.length;
+ var step = (heartCanvas.width-5) / length;
+ var yFactor = heartCanvas.height * 0.35;
+ var heartIndex = (heartDataIndex+1) % length;
+ ctx.strokeStyle = app.curveColor;
+
+ ctx.beginPath()
+ ctx.moveTo(0,baseY)
+ var i=0, x=0, y=0;
+ for (i=0; i<length; i++) {
+ x=i*step;
+ y=baseY - Data.heartData[heartIndex]*yFactor;
+ ctx.lineTo(x,y)
+ heartIndex = (heartIndex+1)%length;
+ }
+ ctx.stroke()
+ ctx.closePath()
+
+ ctx.beginPath()
+ ctx.fillStyle = app.curveColor
+ ctx.ellipse(x-5,y-5,10,10)
+ ctx.fill()
+ ctx.closePath()
+ }
+ }
+ }
+ Image {
+ id: heart
+ anchors { left: parent.left; top: parent.top }
+ anchors.margins: app.width * 0.05
+ height: parent.height * 0.2
+ width: height*1.2
+ source: "heart.png"
+ MouseArea {
+ anchors.fill: parent
+ onPressed: pulse()
+ }
+ }
+
+ Text {
+ id: pulseText
+ anchors { right: parent.right; verticalCenter: heart.verticalCenter }
+ anchors.margins: app.width * 0.05
+ antialiasing: true
+ text: app.frequency
+ color: app.frequency > 100 ? app.alarmColor : app.textColor
+ font { pixelSize: app.width * .1; bold: true }
+ }
+
+ // Pulse timer
+ Timer {
+ id: heartTimer
+ interval: 1200
+ running: true
+ repeat: false
+ onTriggered: pulse()
+ }
+
+ // Update timer
+ Timer {
+ id: updateTimer
+ interval: 30
+ running: true
+ repeat: true
+ onTriggered: updateData()
+ }
+
+ SequentialAnimation{
+ id: heartAnimation
+ NumberAnimation { target: heart; property: "scale"; duration: 100; from: 1.0; to:1.2; easing.type: Easing.Linear }
+ NumberAnimation { target: heart; property: "scale"; duration: 100; from: 1.2; to:1.0; easing.type: Easing.Linear }
+ }
+
+ Component.onCompleted: {
+ Data.fillHeartData(Math.max(100,Math.floor(app.width*0.5)))
+ }
+}
diff --git a/basicsuite/qt5-everywhere/demos/maroon/.DS_Store b/basicsuite/qt5-everywhere/demos/maroon/.DS_Store Binary files differnew file mode 100644 index 0000000..b5c859b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/.DS_Store diff --git a/basicsuite/qt5-everywhere/demos/maroon/Maroon.qml b/basicsuite/qt5-everywhere/demos/maroon/Maroon.qml new file mode 100644 index 0000000..d7bfcb6 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/Maroon.qml @@ -0,0 +1,233 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 +import "content" +import "content/logic.js" as Logic + +Item { + id: root + width: 320 + height: 480 + property var gameState: Logic.newGameState(canvas); + property bool passedSplash: false + + Image { + source:"content/gfx/background.png" + anchors.bottom: view.bottom + + ParticleSystem { + id: particles + anchors.fill: parent + + ImageParticle { + id: bubble + anchors.fill: parent + source: "content/gfx/catch.png" + opacity: 0.25 + } + + Wander { + xVariance: 25; + pace: 25; + } + + Emitter { + width: parent.width + height: 150 + anchors.bottom: parent.bottom + anchors.bottomMargin: 3 + startTime: 15000 + + emitRate: 2 + lifeSpan: 15000 + + acceleration: PointDirection{ y: -6; xVariation: 2; yVariation: 2 } + + size: 24 + sizeVariation: 16 + } + } + } + + Column { + id: view + y: -(height - 480) + width: 320 + + GameOverScreen { gameCanvas: canvas } + + Item { + id: canvasArea + width: 320 + height: 480 + + Row { + height: childrenRect.height + Image { + id: wave + y: 30 + source:"content/gfx/wave.png" + } + Image { + y: 30 + source:"content/gfx/wave.png" + } + NumberAnimation on x { from: 0; to: -(wave.width); duration: 16000; loops: Animation.Infinite } + SequentialAnimation on y { + loops: Animation.Infinite + NumberAnimation { from: y - 2; to: y + 2; duration: 1600; easing.type: Easing.InOutQuad } + NumberAnimation { from: y + 2; to: y - 2; duration: 1600; easing.type: Easing.InOutQuad } + } + } + + Row { + opacity: 0.5 + Image { + id: wave2 + y: 25 + source: "content/gfx/wave.png" + } + Image { + y: 25 + source: "content/gfx/wave.png" + } + NumberAnimation on x { from: -(wave2.width); to: 0; duration: 32000; loops: Animation.Infinite } + SequentialAnimation on y { + loops: Animation.Infinite + NumberAnimation { from: y + 2; to: y - 2; duration: 1600; easing.type: Easing.InOutQuad } + NumberAnimation { from: y - 2; to: y + 2; duration: 1600; easing.type: Easing.InOutQuad } + } + } + + Image { + source: "content/gfx/sunlight.png" + opacity: 0.02 + y: 0 + anchors.horizontalCenter: parent.horizontalCenter + transformOrigin: Item.Top + SequentialAnimation on rotation { + loops: Animation.Infinite + NumberAnimation { from: -10; to: 10; duration: 8000; easing.type: Easing.InOutSine } + NumberAnimation { from: 10; to: -10; duration: 8000; easing.type: Easing.InOutSine } + } + } + + Image { + source: "content/gfx/sunlight.png" + opacity: 0.04 + y: 20 + anchors.horizontalCenter: parent.horizontalCenter + transformOrigin: Item.Top + SequentialAnimation on rotation { + loops: Animation.Infinite + NumberAnimation { from: 10; to: -10; duration: 8000; easing.type: Easing.InOutSine } + NumberAnimation { from: -10; to: 10; duration: 8000; easing.type: Easing.InOutSine } + } + } + + Image { + source: "content/gfx/grid.png" + opacity: 0.5 + } + + GameCanvas { + id: canvas + anchors.bottom: parent.bottom + anchors.bottomMargin: 20 + x: 32 + focus: true + } + + InfoBar { anchors.bottom: canvas.top; anchors.bottomMargin: 6; width: parent.width } + + //3..2..1..go + Timer { + id: countdownTimer + interval: 1000 + running: root.countdown < 5 + repeat: true + onTriggered: root.countdown++ + } + Repeater { + model: ["content/gfx/text-blank.png", "content/gfx/text-3.png", "content/gfx/text-2.png", "content/gfx/text-1.png", "content/gfx/text-go.png"] + delegate: Image { + visible: root.countdown <= index + opacity: root.countdown == index ? 0.5 : 0.1 + scale: root.countdown >= index ? 1.0 : 0.0 + source: modelData + Behavior on opacity { NumberAnimation {} } + Behavior on scale { NumberAnimation {} } + } + } + } + + NewGameScreen { + onStartButtonClicked: root.passedSplash = true + } + } + + property int countdown: 10 + Timer { + id: gameStarter + interval: 4000 + running: false + repeat: false + onTriggered: Logic.startGame(canvas); + } + + states: [ + State { + name: "gameOn"; when: gameState.gameOver == false && passedSplash + PropertyChanges { target: view; y: -(height - 960) } + StateChangeScript { script: root.countdown = 0; } + PropertyChanges { target: gameStarter; running: true } + }, + State { + name: "gameOver"; when: gameState.gameOver == true + PropertyChanges { target: view; y: 0 } + } + ] + + transitions: Transition { + NumberAnimation { properties: "x,y"; duration: 1200; easing.type: Easing.OutQuad } + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/BuildButton.qml b/basicsuite/qt5-everywhere/demos/maroon/content/BuildButton.qml new file mode 100644 index 0000000..49641fc --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/BuildButton.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "logic.js" as Logic + +Item { + id: container + width: 64 + height: 64 + property alias source: img.source + property int index + property int row: 0 + property int col: 0 + property int towerType + property bool canBuild: true + property Item gameCanvas: parent.parent.parent + signal clicked() + + Image { + id: img + opacity: (canBuild && gameCanvas.coins >= Logic.towerData[towerType-1].cost) ? 1.0 : 0.4 + } + Text { + anchors.right: parent.right + font.pointSize: 14 + font.bold: true + color: "#ffffff" + text: Logic.towerData[towerType - 1].cost + } + MouseArea { + anchors.fill: parent + onClicked: { + Logic.buildTower(towerType, col, row) + container.clicked() + } + } + Image { + visible: col == index && row != 0 + source: "gfx/dialog-pointer.png" + anchors.top: parent.bottom + anchors.topMargin: 4 + anchors.horizontalCenter: parent.horizontalCenter + } + Image { + visible: col == index && row == 0 + source: "gfx/dialog-pointer.png" + rotation: 180 + anchors.bottom: parent.top + anchors.bottomMargin: 6 + anchors.horizontalCenter: parent.horizontalCenter + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/GameCanvas.qml b/basicsuite/qt5-everywhere/demos/maroon/content/GameCanvas.qml new file mode 100644 index 0000000..5e6e963 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/GameCanvas.qml @@ -0,0 +1,240 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "logic.js" as Logic +import "towers" as Towers + +Item { + id: grid + + property int squareSize: 64 + property int rows: 6 + property int cols: 4 + property Item canvas: grid + property int score: 0 + property int coins: 100 + property int lives: 3 + property int waveNumber: 0 + property int waveProgress: 0 + property var towers + property var mobs + property bool gameRunning: false + property bool gameOver: false + property bool errored: false + property string errorString: "" + + width: cols * squareSize + height: rows * squareSize + + function freshState() { + lives = 3 + coins = 100 + score = 0 + waveNumber = 0 + waveProgress = 0 + gameOver = false + gameRunning = false + towerMenu.shown = false + helpButton.comeBack(); + } + + Text { + id: errorText // Mostly for debug purposes + text: errorString + visible: errored + color: "red" + font.pixelSize: 18 + wrapMode: Text.WordWrap + width: parent.width / 1.2 + height: parent.height / 1.2 + anchors.centerIn: parent + z: 1000 + } + + Timer { + interval: 16 + running: true + repeat: true + onTriggered: Logic.tick() + } + + MouseArea { + id: ma + anchors.fill: parent + onClicked: { + if (towerMenu.visible) + towerMenu.finish() + else + towerMenu.open(mouse.x, mouse.y) + } + } + + Image { + id: towerMenu + visible: false + z: 1500 + scale: 0.9 + opacity: 0.7 + property int dragDistance: 16 + property int targetRow: 0 + property int targetCol: 0 + property bool shown: false + property bool towerExists: false + + function finish() { + shown = false + } + + function open(xp,yp) { + if (!grid.gameRunning) + return + targetRow = Logic.row(yp) + targetCol = Logic.col(xp) + if (targetRow == 0) + towerMenu.y = (targetRow + 1) * grid.squareSize + else + towerMenu.y = (targetRow - 1) * grid.squareSize + towerExists = (grid.towers[Logic.towerIdx(targetCol, targetRow)] != null) + shown = true + helpButton.goAway(); + } + + states: State { + name: "shown"; when: towerMenu.shown && !grid.gameOver + PropertyChanges { target: towerMenu; visible: true; scale: 1; opacity: 1 } + } + + transitions: Transition { + PropertyAction { property: "visible" } + NumberAnimation { properties: "opacity,scale"; duration: 500; easing.type: Easing.OutElastic } + } + + x: -32 + source: "gfx/dialog.png" + Row { + id: buttonRow + height: 100 + anchors.centerIn: parent + spacing: 8 + BuildButton { + row: towerMenu.targetRow; col: towerMenu.targetCol + anchors.verticalCenter: parent.verticalCenter + towerType: 1; index: 0 + canBuild: !towerMenu.towerExists + source: "gfx/dialog-melee.png" + onClicked: towerMenu.finish() + } + BuildButton { + row: towerMenu.targetRow; col: towerMenu.targetCol + anchors.verticalCenter: parent.verticalCenter + towerType: 2; index: 1 + canBuild: !towerMenu.towerExists + source: "gfx/dialog-shooter.png" + onClicked: towerMenu.finish() + } + BuildButton { + row: towerMenu.targetRow; col: towerMenu.targetCol + anchors.verticalCenter: parent.verticalCenter + towerType: 3; index: 2 + canBuild: !towerMenu.towerExists + source: "gfx/dialog-bomb.png" + onClicked: towerMenu.finish() + } + BuildButton { + row: towerMenu.targetRow; col: towerMenu.targetCol + anchors.verticalCenter: parent.verticalCenter + towerType: 4; index: 3 + canBuild: !towerMenu.towerExists + source: "gfx/dialog-factory.png" + onClicked: towerMenu.finish() + } + } + } + + + Keys.onPressed: { // Cheat Codes while Testing + if (event.key == Qt.Key_Up && (event.modifiers & Qt.ShiftModifier)) + grid.coins += 10; + if (event.key == Qt.Key_Left && (event.modifiers & Qt.ShiftModifier)) + grid.lives += 1; + if (event.key == Qt.Key_Down && (event.modifiers & Qt.ShiftModifier)) + Logic.gameState.waveProgress += 1000; + if (event.key == Qt.Key_Right && (event.modifiers & Qt.ShiftModifier)) + Logic.endGame(); + } + + Image { + id: helpButton + z: 1010 + source: "gfx/button-help.png" + function goAway() { + helpMA.enabled = false; + helpButton.opacity = 0; + } + function comeBack() { + helpMA.enabled = true; + helpButton.opacity = 1; + } + Behavior on opacity { NumberAnimation {} } + MouseArea { + id: helpMA + anchors.fill: parent + onClicked: {helpImage.visible = true; helpButton.visible = false;} + } + + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + } + + Image { + id: helpImage + z: 1010 + source: "gfx/help.png" + anchors.fill: parent + visible: false + MouseArea { + anchors.fill: parent + onClicked: helpImage.visible = false; + } + } + +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/GameOverScreen.qml b/basicsuite/qt5-everywhere/demos/maroon/content/GameOverScreen.qml new file mode 100644 index 0000000..dfb439f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/GameOverScreen.qml @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 +import "logic.js" as Logic + +Item { + id: gameOverScreen + width: 320 + height: 400 + property GameCanvas gameCanvas + + Image { + id: img + source: "gfx/text-gameover.png" + anchors.centerIn: parent + } + + ParticleSystem { + anchors.fill: parent + ImageParticle { + id: cloud + source: "gfx/cloud.png" + alphaVariation: 0.25 + opacity: 0.25 + } + + Wander { + xVariance: 100; + pace: 1; + } + + Emitter { + id: cloudLeft + width: 160 + height: 160 + anchors.right: parent.left + emitRate: 0.5 + lifeSpan: 12000 + velocity: PointDirection{ x: 64; xVariation: 2; yVariation: 2 } + size: 160 + } + + Emitter { + id: cloudRight + width: 160 + height: 160 + anchors.left: parent.right + emitRate: 0.5 + lifeSpan: 12000 + velocity: PointDirection{ x: -64; xVariation: 2; yVariation: 2 } + size: 160 + } + } + + + Text { + visible: gameCanvas != undefined + text: "You saved " + gameCanvas.score + " fishes!" + anchors.top: img.bottom + anchors.topMargin: 12 + anchors.horizontalCenter: parent.horizontalCenter + font.bold: true + color: "#000000" + opacity: 0.5 + } + + Image { + source: "gfx/button-play.png" + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + MouseArea { + anchors.fill: parent + onClicked: gameCanvas.gameOver = false//This will actually trigger the state change in main.qml + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/InfoBar.qml b/basicsuite/qt5-everywhere/demos/maroon/content/InfoBar.qml new file mode 100644 index 0000000..36303fc --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/InfoBar.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + height: childrenRect.height + + // Display the number of lives + Row { + anchors.left: parent.left + anchors.leftMargin: 10 + spacing: 5 + Repeater { + id: rep + model: Math.min(10, canvas.lives) + delegate: Image { source: "gfx/lifes.png" } + } + } + + // Display the number of fishes saved + Row { + anchors.right: points.left + anchors.rightMargin: 20 + spacing: 5 + Image { source: "gfx/scores.png" } + Text { + text: canvas.score + font.bold: true + } + } + + // Display the number of coins + Row { + id: points + anchors.right: parent.right + anchors.rightMargin: 10 + spacing: 5 + Image { source: "gfx/points.png" } + Text { + id: pointsLabel + text: canvas.coins + font.bold: true + } + } +} + diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/NewGameScreen.qml b/basicsuite/qt5-everywhere/demos/maroon/content/NewGameScreen.qml new file mode 100644 index 0000000..495e3aa --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/NewGameScreen.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +// This is the first screen. +// It shows the logo and emit a startButtonClicked signal +// when the user press the "PLAY" button. + +Item { + id: newGameScreen + width: 320 + height: 480 + + signal startButtonClicked + + Image { + source: "gfx/logo.png" + anchors.top: parent.top + anchors.topMargin: 60 + } + + Image { + source: "gfx/logo-fish.png" + anchors.top: parent.top + + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: x + 148; to: x + 25; duration: 2000; easing.type: Easing.InOutQuad } + NumberAnimation { from: x + 25; to: x + 148; duration: 1600; easing.type: Easing.InOutQuad } + } + SequentialAnimation on anchors.topMargin { + loops: Animation.Infinite + NumberAnimation { from: 100; to: 60; duration: 1600; easing.type: Easing.InOutQuad } + NumberAnimation { from: 60; to: 100; duration: 2000; easing.type: Easing.InOutQuad } + } + } + + Image { + source: "gfx/logo-bubble.png" + anchors.top: parent.top + + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: x + 140; to: x + 40; duration: 2000; easing.type: Easing.InOutQuad } + NumberAnimation { from: x + 40; to: x + 140; duration: 1600; easing.type: Easing.InOutQuad } + } + SequentialAnimation on anchors.topMargin { + loops: Animation.Infinite + NumberAnimation { from: 100; to: 60; duration: 1600; easing.type: Easing.InOutQuad } + NumberAnimation { from: 60; to: 100; duration: 2000; easing.type: Easing.InOutQuad } + } + SequentialAnimation on width { + loops: Animation.Infinite + NumberAnimation { from: 140; to: 160; duration: 1000; easing.type: Easing.InOutQuad } + NumberAnimation { from: 160; to: 140; duration: 800; easing.type: Easing.InOutQuad } + } + SequentialAnimation on height { + loops: Animation.Infinite + NumberAnimation { from: 150; to: 140; duration: 800; easing.type: Easing.InOutQuad } + NumberAnimation { from: 140; to: 150; duration: 1000; easing.type: Easing.InOutQuad } + } + } + + Image { + source: "gfx/button-play.png" + anchors.bottom: parent.bottom + anchors.bottomMargin: 60 + MouseArea { + anchors.fill: parent + onClicked: newGameScreen.startButtonClicked() + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/SoundEffect.qml b/basicsuite/qt5-everywhere/demos/maroon/content/SoundEffect.qml new file mode 100644 index 0000000..0dccd12 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/SoundEffect.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +//Proxies a SoundEffect if QtMultimedia is installed +Item { + id: container + property QtObject effect: Qt.createQmlObject("import QtMultimedia 5.0; SoundEffect{ source: '" + container.source + "' }", container); + property url source: "" + onSourceChanged: if (effect != null) effect.source = source; + function play() { + if (effect != null) + effect.play(); + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/bomb-action.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/bomb-action.wav Binary files differnew file mode 100644 index 0000000..b334dc1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/bomb-action.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/catch-action.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/catch-action.wav Binary files differnew file mode 100644 index 0000000..3e22124 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/catch-action.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/catch.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/catch.wav Binary files differnew file mode 100644 index 0000000..d3eade8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/catch.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/currency.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/currency.wav Binary files differnew file mode 100644 index 0000000..0d9ef2c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/currency.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/factory-action.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/factory-action.wav Binary files differnew file mode 100644 index 0000000..a2ace6c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/factory-action.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/melee-action.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/melee-action.wav Binary files differnew file mode 100644 index 0000000..d325af4 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/melee-action.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/projectile-action.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/projectile-action.wav Binary files differnew file mode 100644 index 0000000..4e2284f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/projectile-action.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/audio/shooter-action.wav b/basicsuite/qt5-everywhere/demos/maroon/content/audio/shooter-action.wav Binary files differnew file mode 100644 index 0000000..3e12b94 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/audio/shooter-action.wav diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/background.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/background.png Binary files differnew file mode 100644 index 0000000..d548b93 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/background.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb-action.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb-action.png Binary files differnew file mode 100644 index 0000000..42da5d7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb-action.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb-idle.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb-idle.png Binary files differnew file mode 100644 index 0000000..3bd62e2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb-idle.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb.png Binary files differnew file mode 100644 index 0000000..380da7d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/bomb.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/button-help.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/button-help.png Binary files differnew file mode 100644 index 0000000..aecebc1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/button-help.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/button-play.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/button-play.png Binary files differnew file mode 100644 index 0000000..6cdad6c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/button-play.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/catch-action.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/catch-action.png Binary files differnew file mode 100644 index 0000000..78ca9fe --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/catch-action.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/catch.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/catch.png Binary files differnew file mode 100644 index 0000000..b7620fe --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/catch.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/cloud.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/cloud.png Binary files differnew file mode 100644 index 0000000..d7c35f8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/cloud.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/currency.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/currency.png Binary files differnew file mode 100644 index 0000000..1571341 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/currency.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-bomb.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-bomb.png Binary files differnew file mode 100644 index 0000000..708d916 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-bomb.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-factory.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-factory.png Binary files differnew file mode 100644 index 0000000..d2e2a48 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-factory.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-melee.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-melee.png Binary files differnew file mode 100644 index 0000000..069d18d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-melee.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-pointer.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-pointer.png Binary files differnew file mode 100644 index 0000000..9b51a09 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-pointer.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-shooter.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-shooter.png Binary files differnew file mode 100644 index 0000000..af980ca --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog-shooter.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog.png Binary files differnew file mode 100644 index 0000000..d528ba7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/dialog.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory-action.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory-action.png Binary files differnew file mode 100644 index 0000000..8981678 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory-action.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory-idle.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory-idle.png Binary files differnew file mode 100644 index 0000000..a145582 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory-idle.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory.png Binary files differnew file mode 100644 index 0000000..bfb9f3f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/factory.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/grid.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/grid.png Binary files differnew file mode 100644 index 0000000..b595552 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/grid.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/help.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/help.png Binary files differnew file mode 100644 index 0000000..4654e4c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/help.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/lifes.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/lifes.png Binary files differnew file mode 100644 index 0000000..135310b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/lifes.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo-bubble.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo-bubble.png Binary files differnew file mode 100644 index 0000000..136151c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo-bubble.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo-fish.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo-fish.png Binary files differnew file mode 100644 index 0000000..c41833a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo-fish.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo.png Binary files differnew file mode 100644 index 0000000..787ac99 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/logo.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee-action.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee-action.png Binary files differnew file mode 100644 index 0000000..c53873b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee-action.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee-idle.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee-idle.png Binary files differnew file mode 100644 index 0000000..621d9df --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee-idle.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee.png Binary files differnew file mode 100644 index 0000000..ab24015 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/melee.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/mob-idle.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/mob-idle.png Binary files differnew file mode 100644 index 0000000..dedacc7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/mob-idle.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/mob.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/mob.png Binary files differnew file mode 100644 index 0000000..7569c35 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/mob.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/points.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/points.png Binary files differnew file mode 100644 index 0000000..1d2386d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/points.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/projectile-action.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/projectile-action.png Binary files differnew file mode 100644 index 0000000..aa2e650 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/projectile-action.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/projectile.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/projectile.png Binary files differnew file mode 100644 index 0000000..c25a0c3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/projectile.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/scores.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/scores.png Binary files differnew file mode 100644 index 0000000..af757fe --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/scores.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter-action.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter-action.png Binary files differnew file mode 100644 index 0000000..08e7e30 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter-action.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter-idle.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter-idle.png Binary files differnew file mode 100644 index 0000000..663098d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter-idle.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter.png Binary files differnew file mode 100644 index 0000000..d44401e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/shooter.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/sunlight.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/sunlight.png Binary files differnew file mode 100644 index 0000000..d1c7042 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/sunlight.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-1.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-1.png Binary files differnew file mode 100644 index 0000000..3ea399c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-1.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-2.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-2.png Binary files differnew file mode 100644 index 0000000..934a481 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-2.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-3.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-3.png Binary files differnew file mode 100644 index 0000000..47523f5 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-3.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-blank.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-blank.png Binary files differnew file mode 100644 index 0000000..4a687b2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-blank.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-gameover.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-gameover.png Binary files differnew file mode 100644 index 0000000..4f53ef0 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-gameover.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-go.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-go.png Binary files differnew file mode 100644 index 0000000..bfc26f7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/text-go.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/gfx/wave.png b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/wave.png Binary files differnew file mode 100644 index 0000000..f97426c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/gfx/wave.png diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/logic.js b/basicsuite/qt5-everywhere/demos/maroon/content/logic.js new file mode 100644 index 0000000..dd76b7e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/logic.js @@ -0,0 +1,264 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +.pragma library // Shared game state +.import QtQuick 2.0 as QQ + +// Game Stuff +var gameState // Local reference +function getGameState() { return gameState; } + +var towerData = [ // Name and cost, stats are in the delegate per instance + { "name": "Melee", "cost": 20 }, + { "name": "Ranged", "cost": 50 }, + { "name": "Bomb", "cost": 75 }, + { "name": "Factory", "cost": 25 } +] + +var waveBaseData = [300, 290, 280, 270, 220, 180, 160, 80, 80, 80, 30, 30, 30, 30]; +var waveData = []; + +var towerComponents = new Array(towerData.length); +var mobComponent = Qt.createComponent("mobs/MobBase.qml"); + +function endGame() +{ + gameState.gameRunning = false; + gameState.gameOver = true; + for (var i = 0; i < gameState.cols; i++) { + for (var j = 0; j < gameState.rows; j++) { + if (gameState.towers[towerIdx(i, j)]) { + gameState.towers[towerIdx(i, j)].destroy(); + gameState.towers[towerIdx(i, j)] = null; + } + } + for (var j in gameState.mobs[i]) + gameState.mobs[i][j].destroy(); + gameState.mobs[i].splice(0,gameState.mobs[i].length); //Leaves queue reusable + } +} + +function startGame(gameCanvas) +{ + waveData = new Array(); + for (var i in waveBaseData) + waveData[i] = waveBaseData[i]; + gameState.freshState(); + for (var i = 0; i < gameCanvas.cols; i++) { + for (var j = 0; j < gameCanvas.rows; j++) + gameState.towers[towerIdx(i, j)] = null; + gameState.mobs[i] = new Array(); + } + gameState.towers[towerIdx(0, 0)] = newTower(3, 0, 0);//Start with a starfish in the corner + gameState.gameRunning = true; + gameState.gameOver = false; +} + +function newGameState(gameCanvas) +{ + for (var i = 0; i < towerComponents.length; i++) { + towerComponents[i] = Qt.createComponent("towers/" + towerData[i].name + ".qml"); + if (towerComponents[i].status == QQ.Component.Error) { + gameCanvas.errored = true; + gameCanvas.errorString += "Loading Tower " + towerData[i].name + "\n" + (towerComponents[i].errorString()); + console.log(towerComponents[i].errorString()); + } + } + gameState = gameCanvas; + gameState.freshState(); + gameState.towers = new Array(gameCanvas.rows * gameCanvas.cols); + gameState.mobs = new Array(gameCanvas.cols); + return gameState; +} + +function row(y) +{ + return Math.floor(y / gameState.squareSize); +} + +function col(x) +{ + return Math.floor(x / gameState.squareSize); +} + +function towerIdx(x, y) +{ + return y + (x * gameState.rows); +} + +function newMob(col) +{ + var ret = mobComponent.createObject(gameState.canvas, + { "col" : col, + "speed" : (Math.min(2.0, 0.10 * (gameState.waveNumber + 1))), + "y" : gameState.canvas.height }); + gameState.mobs[col].push(ret); + return ret; +} + +function newTower(type, row, col) +{ + var ret = towerComponents[type].createObject(gameState.canvas); + ret.row = row; + ret.col = col; + ret.fireCounter = ret.rof; + ret.spawn(); + return ret; +} + +function buildTower(type, x, y) +{ + if (gameState.towers[towerIdx(x,y)] != null) { + if (type <= 0) { + gameState.towers[towerIdx(x,y)].sell(); + gameState.towers[towerIdx(x,y)] = null; + } + } else { + if (gameState.coins < towerData[type - 1].cost) + return; + gameState.towers[towerIdx(x, y)] = newTower(type - 1, y, x); + gameState.coins -= towerData[type - 1].cost; + } +} + +function killMob(col, mob) +{ + if (!mob) + return; + var idx = gameState.mobs[col].indexOf(mob); + if (idx == -1 || !mob.hp) + return; + mob.hp = 0; + mob.die(); + gameState.mobs[col].splice(idx,1); +} + +function killTower(row, col) +{ + var tower = gameState.towers[towerIdx(col, row)]; + if (!tower) + return; + tower.hp = 0; + tower.die(); + gameState.towers[towerIdx(col, row)] = null; +} + +function tick() +{ + if (!gameState.gameRunning) + return; + + // Spawn + gameState.waveProgress += 1; + var i = gameState.waveProgress; + var j = 0; + while (i > 0 && j < waveData.length) + i -= waveData[j++]; + if ( i == 0 ) // Spawn a mob + newMob(Math.floor(Math.random() * gameState.cols)); + if ( j == waveData.length ) { // Next Wave + gameState.waveNumber += 1; + gameState.waveProgress = 0; + var waveModifier = 10; // Constant governing how much faster the next wave is to spawn (not fish speed) + for (var k in waveData ) // Slightly faster + if (waveData[k] > waveModifier) + waveData[k] -= waveModifier; + } + + // Towers Attack + for (var j in gameState.towers) { + var tower = gameState.towers[j]; + if (tower == null) + continue; + if (tower.fireCounter > 0) { + tower.fireCounter -= 1; + continue; + } + var column = tower.col; + for (var k in gameState.mobs[column]) { + var conflict = gameState.mobs[column][k]; + if (conflict.y <= gameState.canvas.height && conflict.y + conflict.height > tower.y + && conflict.y - ((tower.row + 1) * gameState.squareSize) < gameState.squareSize * tower.range) { // In Range + tower.fire(); + tower.fireCounter = tower.rof; + conflict.hit(tower.damage); + } + } + + // Income + if (tower.income) { + gameState.coins += tower.income; + tower.fire(); + tower.fireCounter = tower.rof; + } + } + + // Mobs move + for (var i = 0; i < gameState.cols; i++) { + for (var j = 0; j < gameState.mobs[i].length; j++) { + var mob = gameState.mobs[i][j]; + var newPos = gameState.mobs[i][j].y - gameState.mobs[i][j].speed; + if (newPos < 0) { + gameState.lives -= 1; + killMob(i, mob); + if (gameState.lives <= 0) + endGame(); + continue; + } + var conflict = gameState.towers[towerIdx(i, row(newPos))]; + if (conflict != null) { + if (mob.y < conflict.y + gameState.squareSize) + gameState.mobs[i][j].y += gameState.mobs[i][j].speed * 10; // Moved inside tower, now hurry back out + if (mob.fireCounter > 0) { + mob.fireCounter--; + } else { + gameState.mobs[i][j].fire(); + conflict.hp -= mob.damage; + if (conflict.hp <= 0) + killTower(conflict.row, conflict.col); + mob.fireCounter = mob.rof; + } + } else { + gameState.mobs[i][j].y = newPos; + } + } + } + +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/mobs/MobBase.qml b/basicsuite/qt5-everywhere/demos/maroon/content/mobs/MobBase.qml new file mode 100644 index 0000000..d4ece66 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/mobs/MobBase.qml @@ -0,0 +1,262 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "../logic.js" as Logic +import ".." + +Item { + id: container + property string name: "Fish" + property int col: 0 + property real hp: 3 + property real damage: 1 + property real speed: 0.25 + property int rof: 30 //In ticks + property int fireCounter: 0 + property bool dying: false + width: parent ? parent.squareSize : 0 + height: parent ? parent.squareSize : 0 + x: col * width + z: 1001 + function fire() { } + + function die() { + if (dying) + return; + dying = true; + bubble.jumpTo("burst"); + if (fishSprite.currentSprite == "front") + fishSprite.jumpTo(Math.random() > 0.5 ? "left" : "right" ); + fishSwim.start(); + Logic.gameState.score += 1; + killedSound.play(); + bubble.scale = 0.9 + destroy(350); + } + + function inked() { + if (hp > 0) + ink.jumpTo("dirty"); + } + + function hit(dmg) { + hp -= dmg; + + if (hp <= 0) + Logic.killMob(col, container); + } + + Component.onCompleted: spawnSound.play() + + SoundEffect { + id: spawnSound + source: "../audio/catch.wav" + } + SoundEffect { + id: killedSound + source: "../audio/catch-action.wav" + } + + SpriteSequence { + id: fishSprite + width: 64 + height: 64 + interpolate: false + goalSprite: "" + + Sprite { + name: "left" + source: "../gfx/mob-idle.png" + frameWidth: 64 + frameHeight: 64 + frameCount: 1 + frameDuration: 800 + frameDurationVariation: 400 + to: { "front" : 1 } + } + + Sprite { + name: "front" + source: "../gfx/mob-idle.png" + frameCount: 1 + frameX: 64 + frameWidth: 64 + frameHeight: 64 + frameDuration: 800 + frameDurationVariation: 400 + to: { "left" : 1, "right" : 1 } + } + + Sprite { + name: "right" + source: "../gfx/mob-idle.png" + frameCount: 1 + frameX: 128 + frameWidth: 64 + frameHeight: 64 + frameDuration: 800 + frameDurationVariation: 400 + to: { "front" : 1 } + } + + + Sprite { //WORKAROUND: This prevents the triggering of a rendering error which is currently under investigation. + name: "dummy" + source: "../gfx/melee-idle.png" + frameCount: 8 + frameWidth: 64 + frameHeight: 64 + frameX: 0 + frameDuration: 200 + } + + NumberAnimation on x { + id: fishSwim + running: false + property bool goingLeft: fishSprite.currentSprite == "right" + to: goingLeft ? -360 : 360 + duration: 300 + } + } + + SpriteSequence { + id: bubble + width: 64 + height: 64 + scale: 0.4 + (0.2 * hp) + interpolate: false + goalSprite: "" + + Behavior on scale { + NumberAnimation { duration: 150; easing.type: Easing.OutBack } + } + + Sprite { + name: "big" + source: "../gfx/catch.png" + frameCount: 1 + to: { "burst" : 0 } + } + + Sprite { + name: "burst" + source: "../gfx/catch-action.png" + frameCount: 3 + frameX: 64 + frameDuration: 200 + } + + Sprite { //WORKAROUND: This prevents the triggering of a rendering error which is currently under investigation. + name: "dummy" + source: "../gfx/melee-idle.png" + frameCount: 8 + frameWidth: 64 + frameHeight: 64 + frameX: 0 + frameDuration: 200 + } + SequentialAnimation on width { + loops: Animation.Infinite + NumberAnimation { from: width * 1; to: width * 1.1; duration: 800; easing.type: Easing.InOutQuad } + NumberAnimation { from: width * 1.1; to: width * 1; duration: 1000; easing.type: Easing.InOutQuad } + } + SequentialAnimation on height { + loops: Animation.Infinite + NumberAnimation { from: height * 1; to: height * 1.15; duration: 1200; easing.type: Easing.InOutQuad } + NumberAnimation { from: height * 1.15; to: height * 1; duration: 1000; easing.type: Easing.InOutQuad } + } + } + + SpriteSequence { + id: ink + width: 64 + height: 64 + scale: bubble.scale + goalSprite: "" + + Sprite { + name: "clean" + source: "../gfx/projectile-action.png" + frameCount: 1 + frameX: 0 + frameWidth: 64 + frameHeight: 64 + } + Sprite { + name: "dirty" + source: "../gfx/projectile-action.png" + frameCount: 3 + frameX: 64 + frameWidth: 64 + frameHeight: 64 + frameDuration: 150 + to: {"clean":1} + } + + Sprite { //WORKAROUND: This prevents the triggering of a rendering error which is currently under investigation. + name: "dummy" + source: "../gfx/melee-idle.png" + frameCount: 8 + frameWidth: 64 + frameHeight: 64 + frameX: 0 + frameDuration: 200 + } + SequentialAnimation on width { + loops: Animation.Infinite + NumberAnimation { from: width * 1; to: width * 1.1; duration: 800; easing.type: Easing.InOutQuad } + NumberAnimation { from: width * 1.1; to: width * 1; duration: 1000; easing.type: Easing.InOutQuad } + } + SequentialAnimation on height { + loops: Animation.Infinite + NumberAnimation { from: height * 1; to: height * 1.15; duration: 1200; easing.type: Easing.InOutQuad } + NumberAnimation { from: height * 1.15; to: height * 1; duration: 1000; easing.type: Easing.InOutQuad } + } + + } + + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: x; to: x - 5; duration: 900; easing.type: Easing.InOutQuad } + NumberAnimation { from: x - 5; to: x; duration: 900; easing.type: Easing.InOutQuad } + } +} + diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/towers/Bomb.qml b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Bomb.qml new file mode 100644 index 0000000..41522ef --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Bomb.qml @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "../logic.js" as Logic +import ".." + +TowerBase { + id: container + hp: 10 + range: 0.4 + rof: 10 + property real detonationRange: 2.5 + + function fire() { + sound.play() + sprite.jumpTo("shoot") + animDelay.start() + } + + function finishFire() { + var sCol = Math.max(0, col - 1) + var eCol = Math.min(Logic.gameState.cols - 1, col + 1) + var killList = new Array() + for (var i = sCol; i <= eCol; i++) { + for (var j = 0; j < Logic.gameState.mobs[i].length; j++) + if (Math.abs(Logic.gameState.mobs[i][j].y - container.y) < Logic.gameState.squareSize * detonationRange) + killList.push(Logic.gameState.mobs[i][j]) + while (killList.length > 0) + Logic.killMob(i, killList.pop()) + } + Logic.killTower(row, col); + } + + Timer { + id: animDelay + running: false + interval: shootState.frameCount * shootState.frameDuration + onTriggered: finishFire() + } + + function die() + { + destroy() // No blink, because we usually meant to die + } + + SoundEffect { + id: sound + source: "../audio/bomb-action.wav" + } + + SpriteSequence { + id: sprite + width: 64 + height: 64 + interpolate: false + goalSprite: "" + + Sprite { + name: "idle" + source: "../gfx/bomb-idle.png" + frameCount: 4 + frameDuration: 800 + } + + Sprite { + id: shootState + name: "shoot" + source: "../gfx/bomb-action.png" + frameCount: 6 + frameDuration: 155 + to: { "dying" : 1 } // So that if it takes a frame to clean up, it is on the last frame of the explosion + } + + Sprite { + name: "dying" + source: "../gfx/bomb-action.png" + frameCount: 1 + frameX: 64 * 5 + frameWidth: 64 + frameHeight: 64 + frameDuration: 155 + } + + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: x; to: x + 4; duration: 900; easing.type: Easing.InOutQuad } + NumberAnimation { from: x + 4; to: x; duration: 900; easing.type: Easing.InOutQuad } + } + SequentialAnimation on y { + loops: Animation.Infinite + NumberAnimation { from: y; to: y - 4; duration: 900; easing.type: Easing.InOutQuad } + NumberAnimation { from: y - 4; to: y; duration: 900; easing.type: Easing.InOutQuad } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/towers/Factory.qml b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Factory.qml new file mode 100644 index 0000000..b34a184 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Factory.qml @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "../logic.js" as Logic +import ".." + +TowerBase { + id: container + rof: 160 + income: 5 + SpriteSequence { + id: sprite + width: 64 + height: 64 + interpolate: false + goalSprite: "" + + Sprite { + name: "idle" + source: "../gfx/factory-idle.png" + frameCount: 4 + frameDuration: 200 + } + + Sprite { + name: "action" + source: "../gfx/factory-action.png" + frameCount: 4 + frameDuration: 90 + to: { "idle" : 1 } + } + + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: x; to: x + 4; duration: 900; easing.type: Easing.InOutQuad } + NumberAnimation { from: x + 4; to: x; duration: 900; easing.type: Easing.InOutQuad } + } + SequentialAnimation on y { + loops: Animation.Infinite + NumberAnimation { from: y; to: y - 4; duration: 900; easing.type: Easing.InOutQuad } + NumberAnimation { from: y - 4; to: y; duration: 900; easing.type: Easing.InOutQuad } + } + } + + SoundEffect { + id: actionSound + source: "../audio/factory-action.wav" + } + + function fire() { + actionSound.play() + sprite.jumpTo("action") + coinLaunch.start() + } + + function spawn() { + coin.target = Logic.gameState.mapToItem(container, 240, -32) + } + + Image { + id: coin + property var target: { "x" : 0, "y" : 0 } + source: "../gfx/currency.png" + visible: false + } + + SequentialAnimation { + id: coinLaunch + PropertyAction { target: coin; property: "visible"; value: true } + ParallelAnimation { + NumberAnimation { target: coin; property: "x"; from: 16; to: coin.target.x } + NumberAnimation { target: coin; property: "y"; from: 16; to: coin.target.y } + } + PropertyAction { target: coin; property: "visible"; value: false } + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/towers/Melee.qml b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Melee.qml new file mode 100644 index 0000000..1b49a45 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Melee.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import ".." + +TowerBase { + hp: 4 + range: 0.1 + damage: 1 + rof: 40 + income: 0 + + SpriteSequence { + id: sprite + width: 64 + height: 64 + interpolate: false + goalSprite: "" + + Sprite { + name: "idle" + source: "../gfx/melee-idle.png" + frameCount: 8 + frameDuration: 250 + } + + Sprite { + name: "shoot" + source: "../gfx/melee-action.png" + frameCount: 2 + frameDuration: 200 + to: { "idle" : 1 } + } + } + + function fire() { + shootSound.play() + sprite.jumpTo("shoot") + } + + SoundEffect { + id: shootSound + source: "../audio/melee-action.wav" + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/towers/Ranged.qml b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Ranged.qml new file mode 100644 index 0000000..33f3354 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/towers/Ranged.qml @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "../logic.js" as Logic +import ".." + +TowerBase { + id: container + hp: 2 + range: 6 + damage: 0 // By projectile + rof: 40 + income: 0 + property var targetMob + property real realDamage: 1 + function fire() { + proj.x = 32 - proj.width / 2 + proj.y = 0 + targetMob = Logic.gameState.mobs[col][0] + projAnim.to = targetMob.y - container.y -10 + projAnim.start() + shootSound.play() + sprite.jumpTo("shoot") + } + + Image { + id: proj + y: 1000 + SequentialAnimation on y { + id: projAnim + running: false + property real to: 1000 + SmoothedAnimation { + to: projAnim.to + velocity: 400 + } + ScriptAction { + script: { + if (targetMob && targetMob.hit) { + targetMob.hit(realDamage) + targetMob.inked() + projSound.play() + } + } + } + PropertyAction { + value: 1000; + } + } + source: "../gfx/projectile.png" + } + + SoundEffect { + id: shootSound + source: "../audio/shooter-action.wav" + } + SoundEffect { + id: projSound + source: "../audio/projectile-action.wav" + } + + SpriteSequence { + id: sprite + width: 64 + height: 64 + interpolate: false + goalSprite: "" + + Sprite { + name: "idle" + source: "../gfx/shooter-idle.png" + frameCount: 4 + frameDuration: 250 + } + + Sprite { + name: "shoot" + source: "../gfx/shooter-action.png" + frameCount: 5 + frameDuration: 90 + to: { "idle" : 1 } + } + + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: x; to: x - 4; duration: 900; easing.type: Easing.InOutQuad } + NumberAnimation { from: x - 4; to: x; duration: 900; easing.type: Easing.InOutQuad } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/maroon/content/towers/TowerBase.qml b/basicsuite/qt5-everywhere/demos/maroon/content/towers/TowerBase.qml new file mode 100644 index 0000000..5c71cb0 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/maroon/content/towers/TowerBase.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + property real hp: 1 + property real range: 0 + property real damage: 0 + property int rof: 100 + property int fireCounter: 0 + property int income: 0 + property int row: 0 + property int col: 0 + + width: parent ? parent.squareSize : 0 + height: parent ? parent.squareSize : 0 + //This is how it is placed on the gameboard, do not modify/animate the X/Y/Z of a TowerBase please + x: col * width + y: row * height + z: 1000 + + function fire() { } + function spawn() { } //After all game properties are set + function die() { stdDeath.start(); destroy(1000); } + function sell() { destroy(); } + + SequentialAnimation on opacity { + id: stdDeath + running: false + loops: 2 + NumberAnimation { from: 1; to: 0; } + NumberAnimation { from: 0; to: 1; } + } +} diff --git a/basicsuite/qt5-everywhere/demos/particledemo/BootScreenDemo.qml b/basicsuite/qt5-everywhere/demos/particledemo/BootScreenDemo.qml new file mode 100644 index 0000000..ca1e55e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/BootScreenDemo.qml @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: root + property real size: Math.min(root.width, root.height); + signal finished() + + SequentialAnimation { + id: entryAnimation + running: true + PropertyAction { target: sphereEmitter; property: "emitRate"; value: 150 } + PropertyAction { target: starEmitter; property: "emitRate"; value: 100 } + PropertyAction { target: starEmitter; property: "enabled"; value: true } + PropertyAction { target: sphereEmitter; property: "enabled"; value: true } + PropertyAction { target: sphereSystem; property: "running"; value: true } + PropertyAction { target: starSystem; property: "running"; value: true } + PauseAnimation { duration: 5000 } + + onRunningChanged: if (!running) explodeAnimation.restart() + } + + SequentialAnimation{ + id: explodeAnimation + ScriptAction { script: { + starAccel.x = 5 + starAccel.xVariation = 20; + starAccel.yVariation = 20; + sphereAccel.x = -5 + sphereAccel.xVariation = 20 + sphereAccel.yVariation = 20 + sphereParticle.alpha = 0; + } + } + PropertyAction { target: sphereEmitter; property: "emitRate"; value: 200 } + PropertyAction { target: starEmitter; property: "emitRate"; value: 200 } + PauseAnimation { duration: 2000 } + PropertyAction { target: starEmitter; property: "enabled"; value: false } + PropertyAction { target: sphereEmitter; property: "enabled"; value: false } + PauseAnimation { duration: 5000 } + + onRunningChanged: { + if (!running) { + root.finished() + root.destroy() + } + } + } + + Item { + id: logo; + width: root.size / 2; + height: root.size / 2; + anchors.centerIn: parent + } + + ParticleSystem { + id: sphereSystem; + anchors.fill: logo + running: false + + ImageParticle { + id: sphereParticle + source: "images/particle.png" + color: "#80c342" + alpha: 1 + colorVariation: 0.0 + } + + Emitter { + id: sphereEmitter + anchors.fill: parent + emitRate: 100 + lifeSpan: 4000 + size: root.width*.15 + sizeVariation: size *.2 + velocity: PointDirection { xVariation: 2; yVariation: 2; } + + acceleration: PointDirection { + id: sphereAccel + xVariation: 1; + yVariation: 1; + } + + shape: MaskShape { + source: "images/qt-logo-green-mask.png" + } + } + } + + ParticleSystem { + id: starSystem; + anchors.fill: logo + running: false + + ImageParticle { + id: starParticle + source: "images/particle_star.png" + color: "#ffffff" + alpha: 0 + colorVariation: 0 + } + + Emitter { + id: starEmitter + anchors.fill: parent + emitRate: 50 + lifeSpan: 5000 + size: root.width*.1 + sizeVariation: size *.2 + velocity: PointDirection { xVariation: 1; yVariation: 1; } + + acceleration: PointDirection { + id: starAccel + xVariation: 0; + yVariation: 0; + } + + shape: MaskShape { + source: "images/qt-logo-white-mask.png" + } + } + } + + MouseArea { + anchors.fill: parent + onClicked: { + + if (entryAnimation.running) { + entryAnimation.complete() + return; + } + + if (explodeAnimation.running) { + root.finished() + root.destroy() + } + + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/particledemo/ParticleSysComponent.qml b/basicsuite/qt5-everywhere/demos/particledemo/ParticleSysComponent.qml new file mode 100644 index 0000000..531b7c3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/ParticleSysComponent.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +/** + * ParticleSystem component draw particles with the given color. + */ + +ParticleSystem { + id: root + anchors.fill: parent + running: true + + property color particleColor: "#ff0000" + property real angle: particleRoot.angle; + property int pointCount: particleRoot.pointCount; + property real radius: particleRoot.distance; + property real movement: particleRoot.movement; + property bool emitting: particleRoot.running; + property int touchX: 0 + property int touchY: 0 + property int startAngle: 0 + property bool pressed: false + property real targetX: pressed ? touchX : width/2+radius * Math.cos(targetAngle*(Math.PI/180)) + property real targetY: pressed ? touchY : height/2+radius * Math.sin(targetAngle*(Math.PI/180)) + property real targetAngle: angle+startAngle + + Emitter { + id: emitter + lifeSpan: 1000 + emitRate: 80 + x: targetX + y: targetY + enabled: root.emitting + size: root.height*.05 + endSize: root.height*.1 + sizeVariation: .5 + velocity: AngleDirection{angle:0; angleVariation: 360; magnitude: 10} + acceleration: AngleDirection{angle:0; angleVariation: 360; magnitude: 10} + velocityFromMovement: root.movement + } + + ImageParticle { + id: imageParticle + source: "images/particle.png" + color: root.pointCount >0 && root.pressed ? root.particleColor: "#444444" + alpha: .0 + colorVariation: root.pointCount >0 && root.pressed ? 0.3: .0 + + Behavior on color{ + enabled: root.pointCount != 0 + ColorAnimation { duration: 500 } + } + + SequentialAnimation on color { + id: colorAnimation + loops: Animation.Infinite + running: root.pointCount === 0 + ColorAnimation {from: root.particleColor; to: "magenta"; duration: 2000} + ColorAnimation {from: "magenta"; to: "blue"; duration: 1000} + ColorAnimation {from: "blue"; to: "violet"; duration: 1000} + ColorAnimation {from: "violet"; to: "red"; duration: 1000} + ColorAnimation {from: "red"; to: "orange"; duration: 1000} + ColorAnimation {from: "orange"; to: "yellow"; duration: 1000} + ColorAnimation {from: "yellow"; to: "green"; duration: 1000} + ColorAnimation {from: "green"; to: root.particleColor; duration: 2000} + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/particledemo/images/particle.png b/basicsuite/qt5-everywhere/demos/particledemo/images/particle.png Binary files differnew file mode 100644 index 0000000..7520c9b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/images/particle.png diff --git a/basicsuite/qt5-everywhere/demos/particledemo/images/particle_star.png b/basicsuite/qt5-everywhere/demos/particledemo/images/particle_star.png Binary files differnew file mode 100644 index 0000000..5660d27 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/images/particle_star.png diff --git a/basicsuite/qt5-everywhere/demos/particledemo/images/qt-logo-green-mask.png b/basicsuite/qt5-everywhere/demos/particledemo/images/qt-logo-green-mask.png Binary files differnew file mode 100644 index 0000000..84be10d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/images/qt-logo-green-mask.png diff --git a/basicsuite/qt5-everywhere/demos/particledemo/images/qt-logo-white-mask.png b/basicsuite/qt5-everywhere/demos/particledemo/images/qt-logo-white-mask.png Binary files differnew file mode 100644 index 0000000..920eeee --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/images/qt-logo-white-mask.png diff --git a/basicsuite/qt5-everywhere/demos/particledemo/particle.png b/basicsuite/qt5-everywhere/demos/particledemo/particle.png Binary files differnew file mode 100644 index 0000000..5c83896 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/particle.png diff --git a/basicsuite/qt5-everywhere/demos/particledemo/particledemo.qml b/basicsuite/qt5-everywhere/demos/particledemo/particledemo.qml new file mode 100644 index 0000000..235a2cd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/particledemo/particledemo.qml @@ -0,0 +1,213 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Rectangle { + id: particleRoot + color: "#000000" + anchors.fill: parent + + property real distance: parent.height*.4 + property real angle: 0 + property real movement: 0 + property alias running: angleAnimation.running + property int pointCount: mouseArea.pointCount + multiPointTouchArea.pointCount + + BootScreenDemo { + width: Math.min(parent.width,parent.height) + height: width + anchors.centerIn: parent + z: 1 + onFinished: { + distanceAnimation.restart() + angleAnimation.restart() + } + } + + RotationAnimation on angle { + id: angleAnimation + from: 0 + to: 360 + running: false + duration: distanceAnimation.delay + direction: RotationAnimation.Shortest + loops: Animation.Infinite + } + + SequentialAnimation on distance { + id: distanceAnimation + property int easingType:0 + property int delay: 1000 + running: false + + NumberAnimation { + from: 0 + to: parent.height*.4 + duration: distanceAnimation.delay/2 + easing.type: distanceAnimation.easingType + } + + NumberAnimation { + from: parent.height*.4 + to: 0 + duration: distanceAnimation.delay/2 + easing.type: distanceAnimation.easingType + } + + onRunningChanged: { + if (!running){ + var type = Math.floor(Math.random()*10) + switch (type){ + case 0: + distanceAnimation.easingType=Easing.InOutBack + break; + case 1: + distanceAnimation.easingType=Easing.InOutBounce + break; + case 2: + distanceAnimation.easingType=Easing.InOutCirc + break; + case 3: + distanceAnimation.easingType=Easing.InOutElastic + break; + case 4: + distanceAnimation.easingType=Easing.InOutSine + break; + case 5: + distanceAnimation.easingType=Easing.OutInQuad + break; + case 6: + distanceAnimation.easingType=Easing.OutInCubic + break; + case 7: + distanceAnimation.easingType=Easing.OutExpo + break; + case 8: + distanceAnimation.easingType=Easing.OutCurve + break; + default: + distanceAnimation.easingType=Easing.Linear + break; + } + + distanceAnimation.delay = 500 + Math.floor(Math.random()*1500) + angleAnimation.from = 180 + Math.random()*90 - 45 + particleRoot.movement = Math.random()*2 + angleAnimation.restart() + distanceAnimation.restart() + } + } + } + + /** + * Create five ParticleSysComponents for drawing particles + * in the place of multitouch points with the given color. + */ + ParticleSysComponent{ id: p1; particleColor: "#ff0000"; startAngle: 1*360/(5-particleRoot.pointCount); } + ParticleSysComponent{ id: p2; particleColor: "#00ff00"; startAngle: 2*360/(5-particleRoot.pointCount); } + ParticleSysComponent{ id: p3; particleColor: "#0000ff"; startAngle: 3*360/(5-particleRoot.pointCount); } + ParticleSysComponent{ id: p4; particleColor: "#ffff00"; startAngle: 4*360/(5-particleRoot.pointCount); } + ParticleSysComponent{ id: p5; particleColor: "#ff00ff"; startAngle: 5*360/(5-particleRoot.pointCount); } + + /** + * In this demo we only support five touch point at the same time. + * One from mouseArea (because of Desktop-support) and four from MultiPointTouchArea. + */ + MultiPointTouchArea { + id: multiPointTouchArea + anchors.fill: parent + minimumTouchPoints: 1 + maximumTouchPoints: 6 + + property int pointCount:0 + + touchPoints: [ + TouchPoint { id: point1 }, + TouchPoint { id: point2 }, + TouchPoint { id: point3 }, + TouchPoint { id: point4 } + ] + + onPressed: updatePointCount() + onReleased: updatePointCount() + onTouchUpdated: { + p2.touchX = point1.x; p2.touchY = point1.y; p2.pressed = point1.pressed; + p3.touchX = point2.x; p3.touchY = point2.y; p3.pressed = point2.pressed; + p4.touchX = point3.x; p4.touchY = point3.y; p4.pressed = point3.pressed; + p5.touchX = point4.x; p5.touchY = point4.y; p5.pressed = point4.pressed; + } + + function updatePointCount(){ + var tmp = 0 + for (var i=0; i<4; i++) { + if (touchPoints[i].pressed) + tmp++ + } + pointCount = tmp + } + } + + /** + * For desktop. + */ + MouseArea { + id: mouseArea + anchors.fill: parent + + property int pointCount:0 + + onPressed: { + pointCount = 1; + p1.touchX = mouse.x; + p1.touchY = mouse.y; + p1.pressed = true; + } + onReleased: { + pointCount = 0; + p1.pressed = false; + } + onPositionChanged: { + p1.touchX = mouse.x; + p1.touchY = mouse.y; + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/photosurface/images/image0.png b/basicsuite/qt5-everywhere/demos/photosurface/images/image0.png Binary files differnew file mode 100644 index 0000000..711b788 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/images/image0.png diff --git a/basicsuite/qt5-everywhere/demos/photosurface/images/image1.png b/basicsuite/qt5-everywhere/demos/photosurface/images/image1.png Binary files differnew file mode 100644 index 0000000..e9bfcdf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/images/image1.png diff --git a/basicsuite/qt5-everywhere/demos/photosurface/images/image2.png b/basicsuite/qt5-everywhere/demos/photosurface/images/image2.png Binary files differnew file mode 100644 index 0000000..b37453c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/images/image2.png diff --git a/basicsuite/qt5-everywhere/demos/photosurface/images/image3.png b/basicsuite/qt5-everywhere/demos/photosurface/images/image3.png Binary files differnew file mode 100644 index 0000000..63d82e7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/images/image3.png diff --git a/basicsuite/qt5-everywhere/demos/photosurface/images/image4.png b/basicsuite/qt5-everywhere/demos/photosurface/images/image4.png Binary files differnew file mode 100644 index 0000000..a499231 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/images/image4.png diff --git a/basicsuite/qt5-everywhere/demos/photosurface/images/qml-photosurface-example-small.png b/basicsuite/qt5-everywhere/demos/photosurface/images/qml-photosurface-example-small.png Binary files differnew file mode 100644 index 0000000..a0cd823 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/images/qml-photosurface-example-small.png diff --git a/basicsuite/qt5-everywhere/demos/photosurface/photosurface.qml b/basicsuite/qt5-everywhere/demos/photosurface/photosurface.qml new file mode 100644 index 0000000..d96a9bd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/photosurface/photosurface.qml @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ +import QtQuick 2.0 + +Rectangle { + id: root + visible: true + anchors.fill: parent + property int highestZ: 0 + property real defaultSize: 200 + + gradient: Gradient{ + GradientStop{position: 0.0; color: "#333333"} + GradientStop{position: 1.0; color: "#111111"} + } + + Repeater { +// model: FolderListModel { +// id: folderModel +// objectName: "folderModel" +// showDirs: false +// nameFilters: ["*.png", "*.jpg", "*.gif"] +// } + id: repeater + model: 5 + anchors.fill: parent + + clip: true + Rectangle { + id: photoFrame + width: image.width * image.scale + 20 + height: image.height * image.scale + 20 + border.color: "black" + border.width: 2 + smooth: true + antialiasing: true + x: Math.random() * root.width - defaultSize / 2 + y: Math.random() * root.height - defaultSize / 2 + rotation: Math.random() * 13 - 6 + Image { + id: image + anchors.centerIn: parent + fillMode: Image.PreserveAspectFit + source: "images/image"+index+".png" + scale: defaultSize / Math.max(sourceSize.width, sourceSize.height) + antialiasing: true + } + PinchArea { + anchors.fill: parent + pinch.target: photoFrame + pinch.minimumRotation: -360 + pinch.maximumRotation: 360 + pinch.minimumScale: 0.1 + pinch.maximumScale: 10 + onPinchFinished: photoFrame.border.color = "black"; + MouseArea { + id: dragArea + hoverEnabled: true + anchors.fill: parent + drag.target: photoFrame + onPressed: photoFrame.z = ++root.highestZ; + onEntered: photoFrame.border.color = "red"; + onExited: photoFrame.border.color = "black"; + onWheel: { + if (wheel.modifiers & Qt.ControlModifier) { + photoFrame.rotation += wheel.angleDelta.y / 120 * 5; + if (Math.abs(photoFrame.rotation) < 4) + photoFrame.rotation = 0; + } else { + photoFrame.rotation += wheel.angleDelta.x / 120; + if (Math.abs(photoFrame.rotation) < 0.6) + photoFrame.rotation = 0; + var scaleBefore = image.scale; + image.scale += image.scale * wheel.angleDelta.y / 120 / 10; + photoFrame.x -= image.width * (image.scale - scaleBefore) / 2.0; + photoFrame.y -= image.height * (image.scale - scaleBefore) / 2.0; + } + } + } + } + } + } +// Text { +// anchors.bottom: parent.bottom +// anchors.left: parent.left +// anchors.margins: 10 +// color: "darkgrey" +// text: "On a touchscreen: use two fingers to zoom and rotate, one finger to drag\n" + +// "With a mouse: drag normally, use the vertical wheel to zoom, horizontal wheel to rotate, or hold Ctrl while using the vertical wheel to rotate" +// wrapMode: Text.Wrap +// } + + //Component.onCompleted: fileDialog.open() +} diff --git a/basicsuite/qt5-everywhere/demos/radio/VolumeButton.qml b/basicsuite/qt5-everywhere/demos/radio/VolumeButton.qml new file mode 100644 index 0000000..11b687e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/VolumeButton.qml @@ -0,0 +1,185 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: root + width: size + height: size + + property int steps: 10 + property int size: 0 + property real volume: .5 + property bool playing: false + signal clicked(); + + Item { + id: bg + anchors.fill: parent + + Rectangle { + id: bgRect + + gradient: Gradient { + GradientStop {position: .0; color: "lightgray"} + GradientStop {position: 1.0; color: "white"} + } + + border {width:1; color: "#888888"} + radius: root.size/2 + anchors.centerIn: parent + width: parent.width + height: parent.height + } + + Rectangle { + gradient: Gradient { + GradientStop {position: .0; color: playButtonMouseArea.pressed ? "#052e41": "#095477"} + GradientStop {position: 1.0; color: playButtonMouseArea.pressed ? "#095477": "#052e41"} + } + + border {width:1; color: "#888888"} + radius: width/2 + anchors.centerIn: parent + width: parent.width*.6 + height: parent.height*.6 + + Image { + anchors {fill: parent; margins: parent.height*.3} + source: !root.playing ? "images/radio_btn_play.png" : "images/radio_btn_pause.png" + } + + MouseArea { + id: playButtonMouseArea + anchors.fill: parent + anchors.margins: parent.width*.2 + onClicked:{ + root.clicked() + } + } + } + } + + Item { + id: volumeIndicator + anchors.centerIn: root + width: root.size + height: root.size + z:2 + + Rectangle{ + id: volumeCircle + objectName: "volumeCircle" + anchors {horizontalCenter: parent.horizontalCenter; top: parent.top} + + gradient: Gradient { + GradientStop {position: .1; color: "#095477"} + GradientStop {position: 1.0; color: "#0e82b8"} + } + + width: root.size * .2 + height: width + radius: width/2 + border {width:1; color: "#888888"} + + Image { + anchors {fill: parent; margins: parent.height*.2} + source: "images/radio_sound_icon.png" + rotation: -volumeRotation.angle + } + } + + transform: Rotation { + id: volumeRotation + origin.x: volumeIndicator.width/2 + origin.y: volumeIndicator.height/2 + angle: 270.0*root.volume+225 + } + } + + MouseArea { + id: mouseArea + anchors.fill: volumeIndicator + property bool grabbed: false + anchors.margins: -root.size*.2 + z: -1 + + onPressed: { + var object = mapToItem(volumeIndicator, mouse.x, mouse.y) + var item = volumeIndicator.childAt(object.x,object.y) + if (item && item.objectName === 'volumeCircle') { + grabbed = true + return; + } else { + grabbed = false + } + + object = mapToItem(root, mouse.x, mouse.y) + item = root.childAt(object.x,object.y) + if (item && item.objectName === 'volumePoint') { + root.volume = item.level + } + } + + onPositionChanged: { + if (!grabbed) return; + var ang = (225+Math.atan2((mouse.y-mouseArea.height/2.0), (mouse.x-mouseArea.width/2.0))*180.0/Math.PI) + if (ang >360) ang-=360 + if (ang > 270) return; + root.volume = (ang)/270.0 + } + } + + function init(){ + for (var i=0; i<=root.steps; i++){ + var x=Math.cos(((i)*270/root.steps+135)*0.01745)*root.size*.40 + var y=Math.sin(((i)*270/root.steps+135)*0.01745)*root.size*.40 + var component = Qt.createComponent("VolumePoint.qml") + if (component.status === Component.Ready) { + var object = component.createObject(root); + object.size = root.size*.05 + object.x = root.size/2+x-object.size/2 + object.y = root.size/2+y-object.size/2 + object.level = i/root.steps + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/radio/VolumePoint.qml b/basicsuite/qt5-everywhere/demos/radio/VolumePoint.qml new file mode 100644 index 0000000..a491860 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/VolumePoint.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + objectName: "volumePoint" + width: size + height: size + radius: size/2 + color: volume >= level ? "#0e82b8": "#095477" + border {width:1; color: "#888888"} + property int size: 10 + property real level: 0 + property real volume: parent.volume + + Behavior on color{ColorAnimation { duration: 500 }} + + Item { + id: pointClickArea + objectName: "pointClickArea" + property alias value: root.level + anchors.fill: parent + anchors.margins: -root.size*2 + } +} diff --git a/basicsuite/qt5-everywhere/demos/radio/channels.xml b/basicsuite/qt5-everywhere/demos/radio/channels.xml new file mode 100644 index 0000000..99522ab --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/channels.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> + <radio> + <channel> + <title>BBC World Service</title> + <url>http://vpr.streamguys.net/vpr24.mp3</url> + </channel> + <channel> + <title>CBC Music Hard Rock</title> + <url>http://2903.live.streamtheworld.com:80/CBC_HAROCK_H_SC.mp3</url> + </channel> + <channel> + <title>"JPR Classics"</title> + <url>http://jpr.streamguys.org:80/jpr-classics</url> + </channel> + <channel> + <title>VPR Classical</title> + <url>http://vprclassical.streamguys.net/vprclassical24.mp3</url> + </channel> + <channel> + <title>VPR Jazz24</title> + <url>http://vprjazz.streamguys.net/vprjazz24.mp3</url> + </channel> + <channel> + <title>Radio Paradise</title> + <url>http://scfire-m26.websys.aol.com:80/radio_paradise_mp3_128kbps.mp3</url> + </channel> + </radio> diff --git a/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_pause.png b/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_pause.png Binary files differnew file mode 100644 index 0000000..5204834 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_pause.png diff --git a/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_play.png b/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_play.png Binary files differnew file mode 100644 index 0000000..92ee858 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_play.png diff --git a/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_stop.png b/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_stop.png Binary files differnew file mode 100644 index 0000000..187158a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/images/radio_btn_stop.png diff --git a/basicsuite/qt5-everywhere/demos/radio/images/radio_sound_icon.png b/basicsuite/qt5-everywhere/demos/radio/images/radio_sound_icon.png Binary files differnew file mode 100644 index 0000000..ac0b61e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/images/radio_sound_icon.png diff --git a/basicsuite/qt5-everywhere/demos/radio/images/volume.png b/basicsuite/qt5-everywhere/demos/radio/images/volume.png Binary files differnew file mode 100644 index 0000000..a098d82 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/images/volume.png diff --git a/basicsuite/qt5-everywhere/demos/radio/radio.qml b/basicsuite/qt5-everywhere/demos/radio/radio.qml new file mode 100644 index 0000000..e81c567 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/radio/radio.qml @@ -0,0 +1,285 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 5.0 +import QtQuick.XmlListModel 2.0 + +FocusScope { + id: scope + x: parent.x; y: parent.y + width: parent.width; height: parent.height + focus: true + property bool active: false + + Rectangle { + id: root + width:parent.width + height: parent.height + anchors.centerIn: parent + focus: true + color: "#262626" + + Audio { + id: playMusic + source: "" + volume: volumeButton.volume + onSourceChanged: { + if (volumeButton.playing) playMusic.play() + } + onAvailabilityChanged: { + if (availability === Audio.Available) { + if (volumeButton.playing) playMusic.play() + } + } + Component.onDestruction: { + volumeButton.playing = false + playMusic.stop() + playMusic.source = "" + } + } + + Rectangle { + id: playerRect + anchors.top: volumeButton.top + anchors.left: volumeButton.left + anchors.bottom: volumeButton.bottom + anchors.right: parent.right + anchors.rightMargin: parent.height*.05 + gradient: Gradient { + GradientStop {position: .1; color: "lightgrey"} + GradientStop {position: 1.0; color: "white"} + } + border {width:1; color: "#888888"} + radius: height/2 + + Rectangle { + id: displayRect + anchors.fill: parent + anchors.margins: parent.height*.1 + gradient: Gradient { + GradientStop {position: .0; color: "#095477"} + GradientStop {position: 1.0; color: "#052e41"} + } + border {width:1; color: "#888888"} + radius: height/2 + + + Item { + id: networkErrorBox + opacity: 0 + anchors.fill: parent + + Text { + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: parent.width * 0.1 + text: qsTr("Sorry! No network connection") + font.pixelSize: stationList.height*.1; + color: "white" + smooth: true + } + } + + PathView { + enabled: root.activeFocus + id: stationList + anchors.fill:parent + anchors.leftMargin: parent.height*.9 + model: stationModel + pathItemCount: 6 + clip: true + property int openedIndex: -1 + + onMovementStarted: { + idleTimer.stop() + openedIndex = -1 + pathItemCount = 5 + } + onMovementEnded: idleTimer.restart() + + onOpenedIndexChanged: { + if (openedIndex === -1) return + idleTimer.lastIndex=openedIndex + positionViewAtIndex(openedIndex, PathView.Center) + } + + Timer { + id: idleTimer + interval: 5000 + property int lastIndex: -1 + onTriggered: { + stationList.openedIndex = idleTimer.lastIndex + } + } + + Timer { + id: browseTimer + interval: 500 + property string source:"" + onTriggered: playMusic.source = source + } + + path: Path { + startX: stationList.x; startY: 0 + PathArc { + id: pathArc + x: stationList.x; relativeY: stationList.height*1.1 + radiusX: volumeButton.height/2 + radiusY: volumeButton.height/2 + useLargeArc: false + } + } + + delegate: Item { + id: stationDelegate + property bool opened: stationList.openedIndex === index + width: stationList.width*.7 + height: opened? stationList.height*.4: stationList.height*.2 + + Behavior on height {NumberAnimation{duration:200}} + + Text { + id: delegateText + anchors.left: parent.left + anchors.top: parent.top + text: (index+1) +". " +title + font.pixelSize: stationDelegate.opened? stationList.height*.15 : stationList.height*.1 + font.weight: stationDelegate.opened? Font.Bold: Font.Normal + color: stationList.openedIndex ===-1 || opened? "white": "#0e82b8" + Behavior on font.pixelSize {NumberAnimation{duration:200}} + } + + Text { + id: statustextText + anchors.left: parent.left + anchors.top: delegateText.bottom + + text: playMusic.playbackState=== Audio.PlayingState ? "Playing...": + playMusic.status=== Audio.Buffering ? "Buffering...": + playMusic.status=== Audio.Loading ? "Loading...": + playMusic.playbackState=== Audio.StoppedState ? "Stopped":"Error" + + font.pixelSize: stationList.height*.1 + color: delegateText.color + opacity: opened? 1.0: .0 + Behavior on opacity {NumberAnimation{duration:200}} + } + + + MouseArea { + anchors.fill: parent + visible: root.activeFocus + + onClicked: { + if (opened){ + idleTimer.lastIndex=-1 + stationList.openedIndex=-1 + }else { + stationList.openedIndex= index + browseTimer.source = url + browseTimer.restart() + } + } + } + } + } + } + } + + XmlListModel { + id: stationModel + source: "http://qt-project.org/uploads/videos/qt5_radio_channels.xml" + query: "/radio/channel" + XmlRole {name: "title"; query: "title/string()"} + XmlRole {name: "url"; query: "url/string()"} + + onStatusChanged: { + if (status == XmlListModel.Ready) { + networkErrorBox.opacity = 0; + } else if (status == XmlListModel.Error) { + networkErrorBox.opacity = 1; + } + } + } + + VolumeButton { + id: volumeButton + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: size*.1 + size:parent.height*.5 + playing: playMusic.playbackState === Audio.PlayingState + onClicked: { + if (!playMusic.source) return; + if (!playing) { + playMusic.play() + }else { + playMusic.stop() + } + } + } + + Component.onCompleted: { + volumeButton.init() + scope.focus = true + } + + Keys.onPressed: { + if (event.key === Qt.Key_Down || event.key === Qt.Key_VolumeDown) { + event.accepted = true + if (volumeButton.volume > .1){ + volumeButton.volume-=.1 + }else{ + volumeButton.volume = 0.0 + } + } + + if (event.key === Qt.Key_Up || event.key === Qt.Key_VolumeUp) { + event.accepted = true + if (volumeButton.volume < .9){ + volumeButton.volume+=.1 + }else{ + volumeButton.volume = 1.0 + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/BusyIndicator.qml b/basicsuite/qt5-everywhere/demos/rssnews/content/BusyIndicator.qml new file mode 100644 index 0000000..97065b2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/BusyIndicator.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Image { + id: container + property bool on: false + + source: "images/busy.png"; visible: container.on + + NumberAnimation on rotation { + running: container.on; from: 0; to: 360; loops: Animation.Infinite; duration: 1200 + } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/CategoryDelegate.qml b/basicsuite/qt5-everywhere/demos/rssnews/content/CategoryDelegate.qml new file mode 100644 index 0000000..ae70e44 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/CategoryDelegate.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: delegate + property double margin: delegate.height * 0.2; + width: delegate.ListView.view.width; + height: 60 + + Text { + text: name + color: delegate.ListView.isCurrentItem ? "white" : "black" + font { family: "Helvetica"; pixelSize: delegate.height * 0.25; bold: true } + anchors { + left: parent.left; + leftMargin: margin + verticalCenter: parent.verticalCenter + } + } + + BusyIndicator { + scale: 0.6 + on: delegate.ListView.isCurrentItem && window.loading + anchors { right: parent.right; rightMargin: margin; verticalCenter: parent.verticalCenter } + } + + Rectangle { + width: delegate.width; height: 1; color: "#cccccc" + anchors.bottom: delegate.bottom + visible: delegate.ListView.isCurrentItem ? false : true + } + Rectangle { + width: delegate.width; height: 1; color: "white" + visible: delegate.ListView.isCurrentItem ? false : true + } + + MouseArea { + anchors.fill: delegate + onClicked: { + delegate.ListView.view.currentIndex = index + window.currentFeed = feed + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/NewsDelegate.qml b/basicsuite/qt5-everywhere/demos/rssnews/content/NewsDelegate.qml new file mode 100644 index 0000000..7080312 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/NewsDelegate.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: delegate + height: column.height + 2*margin + width: delegate.ListView.view.width + + property double margin: width * 0.03 + + Column { + id: column + x: margin; y: margin + width: parent.width - 2*margin + + Text { + id: titleText + text: title; width: parent.width; wrapMode: Text.WordWrap + font { bold: true; family: "Helvetica"; pixelSize: 20} + } + + Text { + id: descriptionText + width: parent.width; text: description + wrapMode: Text.WordWrap + font.family: "Helvetica" + font.pixelSize: 12 + } + } + + Rectangle { + width: parent.width; height: 1; color: "#cccccc" + anchors.bottom: parent.bottom + } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/RssFeeds.qml b/basicsuite/qt5-everywhere/demos/rssnews/content/RssFeeds.qml new file mode 100644 index 0000000..2f0591b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/RssFeeds.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +ListModel { + id: rssFeeds + + ListElement { name: "Top Stories"; feed: "feeds.bbci.co.uk/news/rss.xml" } + ListElement { name: "Popular Stories"; feed: "finance.yahoo.com/rss/popularstories" } + ListElement { name: "Qt Blog"; feed: "blog.qt.digia.com/feed/" } + ListElement { name: "Planet Qt"; feed: "planet.qt-project.org/rss20.xml" } + ListElement { name: "World"; feed: "rss.news.yahoo.com/rss/world" } + ListElement { name: "Oceania"; feed: "rss.news.yahoo.com/rss/oceania" } + ListElement { name: "U.S. National"; feed: "rss.news.yahoo.com/rss/us" } + ListElement { name: "Business"; feed: "rss.news.yahoo.com/rss/business" } + ListElement { name: "Technology"; feed: "rss.news.yahoo.com/rss/tech" } + ListElement { name: "Entertainment"; feed: "rss.news.yahoo.com/rss/entertainment" } + ListElement { name: "Sports"; feed: "sports.yahoo.com/mlb/teams/bos/rss.xml" } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/ScrollBar.qml b/basicsuite/qt5-everywhere/demos/rssnews/content/ScrollBar.qml new file mode 100644 index 0000000..02ad7ea --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/ScrollBar.qml @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: container + + property variant scrollArea + property variant orientation: Qt.Vertical + + opacity: 0 + + function position() + { + var ny = 0; + if (container.orientation == Qt.Vertical) + ny = scrollArea.visibleArea.yPosition * container.height; + else + ny = scrollArea.visibleArea.xPosition * container.width; + if (ny > 2) return ny; else return 2; + } + + function size() + { + var nh, ny; + + if (container.orientation == Qt.Vertical) + nh = scrollArea.visibleArea.heightRatio * container.height; + else + nh = scrollArea.visibleArea.widthRatio * container.width; + + if (container.orientation == Qt.Vertical) + ny = scrollArea.visibleArea.yPosition * container.height; + else + ny = scrollArea.visibleArea.xPosition * container.width; + + if (ny > 3) { + var t; + if (container.orientation == Qt.Vertical) + t = Math.ceil(container.height - 3 - ny); + else + t = Math.ceil(container.width - 3 - ny); + if (nh > t) return t; else return nh; + } else return nh + ny; + } + + Rectangle { anchors.fill: parent; color: "Black"; opacity: 0.3 } + + BorderImage { + source: "images/scrollbar.png" + border { left: 1; right: 1; top: 1; bottom: 1 } + x: container.orientation == Qt.Vertical ? 2 : position() + width: container.orientation == Qt.Vertical ? container.width - 4 : size() + y: container.orientation == Qt.Vertical ? position() : 2 + height: container.orientation == Qt.Vertical ? size() : container.height - 4 + } + + states: State { + name: "visible" + when: container.orientation == Qt.Vertical ? scrollArea.movingVertically : scrollArea.movingHorizontally + PropertyChanges { target: container; opacity: 1.0 } + } + + transitions: Transition { + from: "visible"; to: "" + NumberAnimation { properties: "opacity"; duration: 600 } + } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/images/busy.png b/basicsuite/qt5-everywhere/demos/rssnews/content/images/busy.png Binary files differnew file mode 100644 index 0000000..664c2b1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/images/busy.png diff --git a/basicsuite/qt5-everywhere/demos/rssnews/content/images/scrollbar.png b/basicsuite/qt5-everywhere/demos/rssnews/content/images/scrollbar.png Binary files differnew file mode 100644 index 0000000..0228dcf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/content/images/scrollbar.png diff --git a/basicsuite/qt5-everywhere/demos/rssnews/rssnews.qml b/basicsuite/qt5-everywhere/demos/rssnews/rssnews.qml new file mode 100644 index 0000000..213d9e8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/rssnews.qml @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.XmlListModel 2.0 +import "content" + +Rectangle { + id: window + anchors.fill: parent + gradient: Gradient { + GradientStop { position: 0.0; color: "#eeeeee" } + GradientStop { position: 0.1; color: "#ffffff" } + GradientStop { position: 0.9; color: "#ffffff" } + GradientStop { position: 1.0; color: "#bbbbbb" } + } + + property int listWidth: window.width*0.35 + property string currentFeed: "feeds.bbci.co.uk/news/rss.xml" + property bool loading: feedModel.status == XmlListModel.Loading + + RssFeeds { id: rssFeeds } + + XmlListModel { + id: feedModel + source: "http://" + window.currentFeed + query: "/rss/channel/item" + + XmlRole { name: "title"; query: "title/string()" } + XmlRole { name: "link"; query: "link/string()" } + XmlRole { name: "description"; query: "description/string()" } + + onStatusChanged: { + if (status == XmlListModel.Error) { + networkErrorBox.opacity = 1.0 + } else if (status == XmlListModel.Ready) { + networkErrorBox.opacity = 0.0 + } + } + } + + Row { + Rectangle { + id: categoryContent + width: window.listWidth; height: window.height + color: "#efefef" + + ListView { + id: categories + anchors.fill: parent + model: rssFeeds + delegate: CategoryDelegate {} + highlight: Rectangle { color: "steelblue" } + highlightMoveVelocity: 9999999 + } + ScrollBar { + scrollArea: categories; height: categories.height; width: 8 + anchors.right: categories.right + } + } + ListView { + id: list + width: window.width - window.listWidth; height: window.height + model: feedModel + delegate: NewsDelegate {} + + Item { + id: networkErrorBox + opacity: 0 + anchors.fill: parent + + Text { + anchors.centerIn: parent + text: qsTr("Sorry! No network connection") + } + } + } + } + + + ScrollBar { scrollArea: list; height: list.height; width: 8; anchors.right: window.right } + Rectangle { x: window.listWidth; height: window.height; width: 1; color: "#cccccc" } +} diff --git a/basicsuite/qt5-everywhere/demos/rssnews/rssnews.qmlproject b/basicsuite/qt5-everywhere/demos/rssnews/rssnews.qmlproject new file mode 100644 index 0000000..5becbda --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/rssnews/rssnews.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.1 + +Project { + mainFile: "rssnews.qml" + + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/Block.qml b/basicsuite/qt5-everywhere/demos/samegame/content/Block.qml new file mode 100644 index 0000000..b643f4e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/Block.qml @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: block + property bool dying: false + property bool spawned: false + property int type: 0 + property ParticleSystem particleSystem + + Behavior on x { + enabled: spawned; + SpringAnimation{ spring: 2; damping: 0.2 } + } + Behavior on y { + SpringAnimation{ spring: 2; damping: 0.2 } + } + + Image { + id: img + source: { + if (type == 0){ + "gfx/red.png"; + } else if (type == 1) { + "gfx/blue.png"; + } else if (type == 2) { + "gfx/green.png"; + } else { + "gfx/yellow.png"; + } + } + opacity: 0 + Behavior on opacity { NumberAnimation { duration: 200 } } + anchors.fill: parent + } + + //Foreground particles + BlockEmitter { + id: particles + system: particleSystem + group: { + if (type == 0){ + "red"; + } else if (type == 1) { + "blue"; + } else if (type == 2) { + "green"; + } else { + "yellow"; + } + } + anchors.fill: parent + } + + //Paint particles on the background + PaintEmitter { + id: particles2 + system: particleSystem + } + + states: [ + State { + name: "AliveState"; when: spawned == true && dying == false + PropertyChanges { target: img; opacity: 1 } + }, + + State { + name: "DeathState"; when: dying == true + StateChangeScript { script: {particleSystem.paused = false; particles.pulse(100); particles2.pulse(100);} } + PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } + } + ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/BlockEmitter.qml b/basicsuite/qt5-everywhere/demos/samegame/content/BlockEmitter.qml new file mode 100644 index 0000000..f2c975f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/BlockEmitter.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +import "../settings.js" as Settings + +Emitter { + property Item block: parent + velocity: TargetDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -40; magnitudeVariation: 40} + acceleration: TargetDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -100;} + shape: EllipseShape{fill:true} + enabled: false; + lifeSpan: 700; lifeSpanVariation: 100 + emitRate: 1000 + maximumEmitted: 100 //only fires 0.1s bursts (still 2x old number) + size: Settings.blockSize * 0.85 + endSize: Settings.blockSize * 0.85 /2 +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/Button.qml b/basicsuite/qt5-everywhere/demos/samegame/content/Button.qml new file mode 100644 index 0000000..5fcc578 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/Button.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + property alias imgSrc: image.source + property alias system: emitter.system + property alias group: emitter.group + signal clicked + property bool rotatedButton: false + + width: image.width + height: image.sourceSize.height + Image { + id: image + height: parent.height + width: height/sourceSize.height * sourceSize.width + + anchors.horizontalCenter: parent.horizontalCenter + rotation: rotatedButton ? ((Math.random() * 3 + 2) * (Math.random() <= 0.5 ? -1 : 1)) : 0 + MenuEmitter { + id: emitter + anchors.fill: parent + //shape: MaskShape {source: image.source} + } + } + MouseArea { + anchors.fill: parent + onClicked: {parent.clicked(); emitter.burst(400);} + } +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/GameArea.qml b/basicsuite/qt5-everywhere/demos/samegame/content/GameArea.qml new file mode 100644 index 0000000..3a9e59b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/GameArea.qml @@ -0,0 +1,226 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 +import "samegame.js" as Logic + +Item { + id: gameCanvas + property bool gameOver: true + property int score: 0 + property int highScore: 0 + property int moves: 0 + property string mode: "" + property ParticleSystem ps: particleSystem + //For easy theming + property alias backgroundVisible: bg.visible + property string background: "gfx/background.png" + property string blockFile: "Block.qml" + onBlockFileChanged: Logic.changeBlock(blockFile); + property alias particlePack: auxLoader.source + //For multiplayer + property int score2: 0 + property int curTurn: 1 + property bool autoTurnChange: false + signal swapPlayers + property bool swapping: false + //onSwapPlayers: if (autoTurnChange) Logic.turnChange();//Now implemented below + //For puzzle + property url level + property bool puzzleWon: false + signal puzzleLost //Since root is tracking the puzzle progress + function showPuzzleEnd (won) { + if (won) { + smokeParticle.color = Qt.rgba(0,1,0,0); + puzzleWin.play(); + } else { + smokeParticle.color = Qt.rgba(1,0,0,0); + puzzleFail.play(); + puzzleLost(); + } + } + function showPuzzleGoal (str) { + puzzleTextBubble.opacity = 1; + puzzleTextLabel.text = str; + } + Image { + id: bg + z: -1 + anchors.fill: parent + source: background; + fillMode: Image.PreserveAspectCrop + } + + MouseArea { + anchors.fill: parent; onClicked: { + if (puzzleTextBubble.opacity == 1) { + puzzleTextBubble.opacity = 0; + Logic.finishLoadingMap(); + } else if (!swapping) { + Logic.handleClick(mouse.x,mouse.y); + } + } + } + + Image { + id: highScoreTextBubble + opacity: mode == "arcade" && gameOver && gameCanvas.score == gameCanvas.highScore ? 1 : 0 + Behavior on opacity { NumberAnimation {} } + anchors.centerIn: parent + z: 10 + source: "gfx/bubble-highscore.png" + Image { + anchors.centerIn: parent + source: "gfx/text-highscore-new.png" + rotation: -10 + } + } + + Image { + id: puzzleTextBubble + anchors.centerIn: parent + opacity: 0 + Behavior on opacity { NumberAnimation {} } + z: 10 + source: "gfx/bubble-puzzle.png" + Connections { + target: gameCanvas + onModeChanged: if (mode != "puzzle" && puzzleTextBubble.opacity > 0) puzzleTextBubble.opacity = 0; + } + Text { + id: puzzleTextLabel + width: parent.width - 24 + anchors.centerIn: parent + horizontalAlignment: Text.AlignHCenter + color: "white" + font.pixelSize: 24 + font.bold: true + wrapMode: Text.WordWrap + } + } + onModeChanged: { + p1WonImg.opacity = 0; + p2WonImg.opacity = 0; + } + SmokeText { id: puzzleWin; source: "gfx/icon-ok.png"; system: particleSystem } + SmokeText { id: puzzleFail; source: "gfx/icon-fail.png"; system: particleSystem } + + onSwapPlayers: { + smokeParticle.color = "yellow" + Logic.turnChange(); + if (curTurn == 1) { + p1Text.play(); + } else { + p2Text.play(); + } + clickDelay.running = true; + } + SequentialAnimation { + id: clickDelay + ScriptAction { script: gameCanvas.swapping = true; } + PauseAnimation { duration: 750 } + ScriptAction { script: gameCanvas.swapping = false; } + } + + SmokeText { + id: p1Text; source: "gfx/text-p1-go.png"; + system: particleSystem; playerNum: 1 + opacity: p1WonImg.opacity + p2WonImg.opacity > 0 ? 0 : 1 + } + + SmokeText { + id: p2Text; source: "gfx/text-p2-go.png"; + system: particleSystem; playerNum: 2 + opacity: p1WonImg.opacity + p2WonImg.opacity > 0 ? 0 : 1 + } + + onGameOverChanged: { + if (gameCanvas.mode == "multiplayer") { + if (gameCanvas.score >= gameCanvas.score2) { + p1WonImg.opacity = 1; + } else { + p2WonImg.opacity = 1; + } + } + } + Image { + id: p1WonImg + source: "gfx/text-p1-won.png" + anchors.centerIn: parent + opacity: 0 + Behavior on opacity { NumberAnimation {} } + z: 10 + } + Image { + id: p2WonImg + source: "gfx/text-p2-won.png" + anchors.centerIn: parent + opacity: 0 + Behavior on opacity { NumberAnimation {} } + z: 10 + } + + ParticleSystem{ + id: particleSystem; + anchors.fill: parent + z: 5 + ImageParticle { + id: smokeParticle + groups: ["smoke"] + source: "gfx/particle-smoke.png" + alpha: 0.1 + alphaVariation: 0.1 + color: "yellow" + } + Loader { + id: auxLoader + anchors.fill: parent + source: "PrimaryPack.qml" + onItemChanged: { + if (item && "particleSystem" in item) + item.particleSystem = particleSystem + if (item && "gameArea" in item) + item.gameArea = gameCanvas + } + } + } +} + diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/LogoAnimation.qml b/basicsuite/qt5-everywhere/demos/samegame/content/LogoAnimation.qml new file mode 100644 index 0000000..0322c67 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/LogoAnimation.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: container //Positioned where the 48x48 S/G should be + property alias running: mainAnim.running + property ParticleSystem particleSystem + property int dur: 500 + signal boomTime + Image { + id: s1 + source: "gfx/logo-s.png" + y: 0 + } + Image { + id: g1 + source: "gfx/logo-g.png" + y: -128 + } + Column { + Repeater { + model: 2 + Item { + width: 48 + height: 48 + BlockEmitter { + id: emitter + anchors.fill: parent + group: "red" + system: particleSystem + Connections { + target: container + onBoomTime: emitter.pulse(100); + } + } + } + } + } + SequentialAnimation { + id: mainAnim + running: true + loops: -1 + PropertyAction { target: g1; property: "y"; value: -128} + PropertyAction { target: g1; property: "opacity"; value: 1} + PropertyAction { target: s1; property: "y"; value: 0} + PropertyAction { target: s1; property: "opacity"; value: 1} + NumberAnimation { target: g1; property: "y"; from: -96; to: -48; duration: dur} + ParallelAnimation { + NumberAnimation { target: g1; property: "y"; from: -48; to: 0; duration: dur} + NumberAnimation { target: s1; property: "y"; from: 0; to: 48; duration: dur } + } + PauseAnimation { duration: dur } + ScriptAction { script: container.boomTime(); } + ParallelAnimation { + NumberAnimation { target: g1; property: "opacity"; to: 0; duration: dur } + NumberAnimation { target: s1; property: "opacity"; to: 0; duration: dur } + } + PropertyAction { target: s1; property: "y"; value: -128} + PropertyAction { target: s1; property: "opacity"; value: 1} + NumberAnimation { target: s1; property: "y"; from: -96; to: 0; duration: dur * 2} + } +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/MenuEmitter.qml b/basicsuite/qt5-everywhere/demos/samegame/content/MenuEmitter.qml new file mode 100644 index 0000000..c74b7a3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/MenuEmitter.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Emitter { + anchors.fill: parent + velocity: AngleDirection{angleVariation: 360; magnitude: 140; magnitudeVariation: 40} + enabled: false; + lifeSpan: 500; + emitRate: 1 + size: 28 + endSize: 14 + group: "yellow" +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/PaintEmitter.qml b/basicsuite/qt5-everywhere/demos/samegame/content/PaintEmitter.qml new file mode 100644 index 0000000..c448cba --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/PaintEmitter.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 +import "../settings.js" as Settings + +Emitter { + property Item block: parent + anchors.fill: parent + shape: EllipseShape { fill: true } + group: { + if (block.type == 0){ + "redspots"; + } else if (block.type == 1) { + "bluespots"; + } else if (block.type == 2) { + "greenspots"; + } else { + "yellowspots"; + } + } + size: Settings.blockSize * 2 + endSize: Settings.blockSize/2 + lifeSpan: 30000 + enabled: false + emitRate: 60 + maximumEmitted: 60 + velocity: PointDirection{ y: 4; yVariation: 4 } + /* Possibly better, but dependent on gerrit change,28212 + property real mainIntensity: 0.8 + property real subIntensity: 0.1 + property real colorVariation: 0.005 + onEmitParticles: {//One group, many colors, for better stacking + for (var i=0; i<particles.length; i++) { + var particle = particles[i]; + if (block.type == 0) { + particle.red = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.green = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.blue = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + } else if (block.type == 1) { + particle.red = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.green = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.blue = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + } else if (block.type == 2) { + particle.red = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.green = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.blue = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + } else if (block.type == 3) { + particle.red = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.green = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.blue = subIntensity + (Math.random() * colorVariation * 2 - colorVariation); + } else { + particle.red = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.green = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + particle.blue = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation); + } + } + } + */ +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/PrimaryPack.qml b/basicsuite/qt5-everywhere/demos/samegame/content/PrimaryPack.qml new file mode 100644 index 0000000..166fcb8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/PrimaryPack.qml @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: container + property ParticleSystem particleSystem + property GameArea gameArea + onGameAreaChanged: bgstacker.parent = gameArea;//Move to direct child of game canvas + Item { + id: bgstacker + z: 0 + ImageParticle { + groups: ["yellowspots"] + color: Qt.darker("yellow");//Actually want desaturated... + system: particleSystem + source: "gfx/particle-paint.png" + colorVariation: 0.2 + alpha: 0.2 + entryEffect: ImageParticle.None + } + ImageParticle { + groups: ["redspots"] + system: particleSystem + color: Qt.darker("red");//Actually want desaturated... + source: "gfx/particle-paint.png" + colorVariation: 0.2 + alpha: 0.2 + entryEffect: ImageParticle.None + } + ImageParticle { + groups: ["greenspots"] + system: particleSystem + color: Qt.darker("green");//Actually want desaturated... + source: "gfx/particle-paint.png" + colorVariation: 0.2 + alpha: 0.2 + entryEffect: ImageParticle.None + } + ImageParticle { + groups: ["bluespots"] + system: particleSystem + color: Qt.darker("blue");//Actually want desaturated... + source: "gfx/particle-paint.png" + colorVariation: 0.2 + alpha: 0.2 + entryEffect: ImageParticle.None + } + } + ImageParticle { + groups: ["yellow"] + system: particleSystem + color: Qt.darker("yellow");//Actually want desaturated... + source: "gfx/particle-brick.png" + colorVariation: 0.4 + alpha: 0.1 + } + ImageParticle { + groups: ["red"] + system: particleSystem + color: Qt.darker("red");//Actually want desaturated... + source: "gfx/particle-brick.png" + colorVariation: 0.4 + alpha: 0.1 + } + ImageParticle { + groups: ["green"] + system: particleSystem + color: Qt.darker("green");//Actually want desaturated... + source: "gfx/particle-brick.png" + colorVariation: 0.4 + alpha: 0.1 + } + ImageParticle { + groups: ["blue"] + system: particleSystem + color: Qt.darker("blue");//Actually want desaturated... + source: "gfx/particle-brick.png" + colorVariation: 0.4 + alpha: 0.1 + } +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/PuzzleBlock.qml b/basicsuite/qt5-everywhere/demos/samegame/content/PuzzleBlock.qml new file mode 100644 index 0000000..963565a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/PuzzleBlock.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: block + property bool dying: false + property bool spawned: false + property int type: 0 + property ParticleSystem particleSystem + + Behavior on x { + enabled: spawned; + NumberAnimation{ easing.type: Easing.OutBounce } + } + Behavior on y { + NumberAnimation{ easing.type: Easing.InQuad } + } + + Image { + id: img + source: { + if (type == 0){ + "gfx/red-puzzle.png"; + } else if (type == 1) { + "gfx/blue-puzzle.png"; + } else if (type == 2) { + "gfx/green-puzzle.png"; + } else { + "gfx/yellow-puzzle.png"; + } + } + opacity: 0 + Behavior on opacity { NumberAnimation { duration: 200 } } + anchors.centerIn: parent + anchors.verticalCenterOffset: -4 + anchors.horizontalCenterOffset: 4 + } + + //Foreground particles + BlockEmitter { + id: particles + system: particleSystem + group: { + if (type == 0){ + "red"; + } else if (type == 1) { + "blue"; + } else if (type == 2) { + "green"; + } else { + "yellow"; + } + } + anchors.fill: parent + } + + states: [ + State { + name: "AliveState"; when: spawned == true && dying == false + PropertyChanges { target: img; opacity: 1 } + }, + + State { + name: "DeathState"; when: dying == true + PropertyChanges { target: img; scale: 2 } + StateChangeScript { script: particles.pulse(200); } + PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } + } + ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/SamegameText.qml b/basicsuite/qt5-everywhere/demos/samegame/content/SamegameText.qml new file mode 100644 index 0000000..28c85f9 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/SamegameText.qml @@ -0,0 +1,49 @@ +/*************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "../settings.js" as Settings + +Text { + font.pixelSize: Settings.fontPixelSize; + color: "white"; + textFormat: Text.StyledText; + Behavior on opacity { NumberAnimation {} } +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/SimpleBlock.qml b/basicsuite/qt5-everywhere/demos/samegame/content/SimpleBlock.qml new file mode 100644 index 0000000..e389abd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/SimpleBlock.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: block + property bool dying: false + property bool spawned: false + property int type: 0 + property ParticleSystem particleSystem + + Behavior on x { + enabled: spawned; + SpringAnimation{ spring: 2; damping: 0.2 } + } + Behavior on y { + SpringAnimation{ spring: 2; damping: 0.2 } + } + + Image { + id: img + source: { + if (type == 0){ + "gfx/red.png"; + } else if (type == 1) { + "gfx/blue.png"; + } else if (type == 2) { + "gfx/green.png"; + } else { + "gfx/yellow.png"; + } + } + opacity: 0 + Behavior on opacity { NumberAnimation { duration: 200 } } + anchors.fill: parent + } + + //Foreground particles + BlockEmitter { + id: particles + system: particleSystem + group: { + if (type == 0){ + "red"; + } else if (type == 1) { + "blue"; + } else if (type == 2) { + "green"; + } else { + "yellow"; + } + } + anchors.fill: parent + } + + states: [ + State { + name: "AliveState"; when: spawned == true && dying == false + PropertyChanges { target: img; opacity: 1 } + }, + + State { + name: "DeathState"; when: dying == true + StateChangeScript { script: {particleSystem.paused = false; particles.pulse(100); } } + PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } + } + ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/SmokeText.qml b/basicsuite/qt5-everywhere/demos/samegame/content/SmokeText.qml new file mode 100644 index 0000000..d4c4365 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/SmokeText.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + z: 10 + property alias source: img.source + property alias system: emitter.system + property int playerNum: 1 + function play() { + anim.running = true; + } + anchors.centerIn: parent + Image { + opacity: 0 + id: img + anchors.centerIn: parent + rotation: playerNum == 1 ? -8 : -5 + Emitter { + id: emitter + group: "smoke" + anchors.fill: parent + shape: MaskShape { source: img.source } + enabled: false + emitRate: 1000 + lifeSpan: 600 + size: 64 + endSize: 32 + velocity: AngleDirection { angleVariation: 360; magnitudeVariation: 160 } + } + } + SequentialAnimation { + id: anim + running: false + PauseAnimation { duration: 500} + ParallelAnimation { + NumberAnimation { target: img; property: "opacity"; from: 0.1; to: 1.0 } + NumberAnimation { target: img; property: "scale"; from: 0.1; to: 1.0 } + } + PauseAnimation { duration: 250} + ScriptAction { script: emitter.pulse(100); } + NumberAnimation { target: img; property: "opacity"; from: 1.0; to: 0.0 } + } +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/background-puzzle.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/background-puzzle.png Binary files differnew file mode 100644 index 0000000..c2eca5f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/background-puzzle.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/background.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/background.png Binary files differnew file mode 100644 index 0000000..60f57b6 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/background.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bar.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bar.png Binary files differnew file mode 100644 index 0000000..4953cd6 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bar.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/blue-puzzle.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/blue-puzzle.png Binary files differnew file mode 100644 index 0000000..e550d59 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/blue-puzzle.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/blue.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/blue.png Binary files differnew file mode 100644 index 0000000..b8161c0 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/blue.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bubble-highscore.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bubble-highscore.png Binary files differnew file mode 100644 index 0000000..c4e38df --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bubble-highscore.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bubble-puzzle.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bubble-puzzle.png Binary files differnew file mode 100644 index 0000000..278556b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/bubble-puzzle.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-1.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-1.png Binary files differnew file mode 100644 index 0000000..3343b7f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-1.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-2.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-2.png Binary files differnew file mode 100644 index 0000000..afba106 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-2.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-3.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-3.png Binary files differnew file mode 100644 index 0000000..adea77a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-3.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-4.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-4.png Binary files differnew file mode 100644 index 0000000..18c922b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-4.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-new.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-new.png Binary files differnew file mode 100644 index 0000000..257e182 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-game-new.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-menu.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-menu.png Binary files differnew file mode 100644 index 0000000..8440e87 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-menu.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-puzzle-next.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-puzzle-next.png Binary files differnew file mode 100644 index 0000000..7e3ed41 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-puzzle-next.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-quit.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-quit.png Binary files differnew file mode 100644 index 0000000..95c77ce --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/but-quit.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/green-puzzle.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/green-puzzle.png Binary files differnew file mode 100644 index 0000000..581f76f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/green-puzzle.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/green.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/green.png Binary files differnew file mode 100644 index 0000000..da4cca5 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/green.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-fail.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-fail.png Binary files differnew file mode 100644 index 0000000..4072611 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-fail.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-ok.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-ok.png Binary files differnew file mode 100644 index 0000000..15a8442 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-ok.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-time.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-time.png Binary files differnew file mode 100644 index 0000000..9490e49 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/icon-time.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-a.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-a.png Binary files differnew file mode 100644 index 0000000..20c20ba --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-a.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-e.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-e.png Binary files differnew file mode 100644 index 0000000..dd663f1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-e.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-g.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-g.png Binary files differnew file mode 100644 index 0000000..a319bf9 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-g.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-m.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-m.png Binary files differnew file mode 100644 index 0000000..6a029b3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-m.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-s.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-s.png Binary files differnew file mode 100644 index 0000000..963b175 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo-s.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo.png Binary files differnew file mode 100644 index 0000000..e900edd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/logo.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-brick.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-brick.png Binary files differnew file mode 100644 index 0000000..5c83896 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-brick.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-paint.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-paint.png Binary files differnew file mode 100644 index 0000000..9bd0a2a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-paint.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-smoke.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-smoke.png Binary files differnew file mode 100644 index 0000000..b27f954 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/particle-smoke.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/red-puzzle.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/red-puzzle.png Binary files differnew file mode 100644 index 0000000..9ceb17e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/red-puzzle.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/red.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/red.png Binary files differnew file mode 100644 index 0000000..681810f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/red.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-highscore-new.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-highscore-new.png Binary files differnew file mode 100644 index 0000000..50f7fcd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-highscore-new.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-highscore.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-highscore.png Binary files differnew file mode 100644 index 0000000..7198c27 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-highscore.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-no-winner.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-no-winner.png Binary files differnew file mode 100644 index 0000000..b4a6685 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-no-winner.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1-go.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1-go.png Binary files differnew file mode 100644 index 0000000..c7bd2a5 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1-go.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1-won.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1-won.png Binary files differnew file mode 100644 index 0000000..41c2eb7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1-won.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1.png Binary files differnew file mode 100644 index 0000000..b59c87b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p1.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2-go.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2-go.png Binary files differnew file mode 100644 index 0000000..f03cd93 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2-go.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2-won.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2-won.png Binary files differnew file mode 100644 index 0000000..116b7f2 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2-won.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2.png Binary files differnew file mode 100644 index 0000000..d4f2bc7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/text-p2.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/yellow-puzzle.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/yellow-puzzle.png Binary files differnew file mode 100644 index 0000000..66044c8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/yellow-puzzle.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/gfx/yellow.png b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/yellow.png Binary files differnew file mode 100644 index 0000000..6bc5d38 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/gfx/yellow.png diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/TemplateBase.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/TemplateBase.qml new file mode 100644 index 0000000..d02f26d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/TemplateBase.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle{ + id: control + property int scoreTarget: -1 + property int timeTarget: -1 + property int moveTarget: -1 + property bool mustClear: true + property string goalText: "Clear the level..." + + property var startingGrid //If this isn't an array of ints, we will refuse to load the level. + /* Ints are 0-4. If not enough ints are there it will be prepadded with 0s to fill the grid + (which ruins everything if you have the wrong number of rows). + 0 - No block + 1 - Red + 2 - Blue + 3 - Green + 4 - Yellow + Ideas for future colors, but not supported in this version: + 5 - Purple + 6 - Cyan + 7 - Gray + 8 - Black + 9 - White + */ + + width: 320 + height: 416 + color: "white" //TODO: Theme support for both setting themes per level, and seeing it in the control! +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level0.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level0.qml new file mode 100644 index 0000000..0e6e0a8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level0.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + moveTarget: 3 + goalText: "1 of 10<br><br>Clear in three moves..." + startingGrid: [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , + 0 , 0 , 0 , 0 , 0 , 1 , 1 , 2 , 1 , 1 , + 0 , 0 , 0 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , + 0 , 1 , 1 , 3 , 3 , 3 , 1 , 3 , 1 , 1 , + 1 , 2 , 3 , 3 , 1 , 1 , 3 , 3 , 3 , 3 , + 1 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 1 , 1 , + 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level1.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level1.qml new file mode 100644 index 0000000..0467c5b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level1.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + timeTarget: 10 + goalText: "2 of 10<br><br>Clear in 10 seconds..." + startingGrid: [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 1 , 3 , 3 , 3 , 1 , 1 , 1 , 1 , 2 , 2 , + 1 , 2 , 3 , 3 , 3 , 1 , 1 , 1 , 1 , 2 , + 2 , 2 , 1 , 3 , 3 , 3 , 1 , 1 , 1 , 2 , + 2 , 1 , 1 , 1 , 3 , 3 , 3 , 1 , 2 , 2 , + 1 , 1 , 1 , 1 , 1 , 3 , 3 , 3 , 2 , 1 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level2.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level2.qml new file mode 100644 index 0000000..332af0f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level2.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + scoreTarget: 1200 + timeTarget: 60 + goalText: "3 of 10<br><br>Score over 1200 points in one minute..." + mustClear: false + startingGrid: [ 3 , 1 , 2 , 1 , 1 , 2 , 1 , 1 , 3 , 3 , + 1 , 3 , 3 , 2 , 3 , 3 , 1 , 1 , 3 , 1 , + 3 , 1 , 3 , 3 , 2 , 3 , 3 , 3 , 1 , 2 , + 3 , 2 , 2 , 1 , 3 , 3 , 2 , 1 , 1 , 2 , + 3 , 1 , 2 , 2 , 2 , 2 , 2 , 1 , 3 , 1 , + 2 , 3 , 1 , 2 , 2 , 3 , 3 , 1 , 3 , 2 , + 3 , 2 , 1 , 1 , 3 , 3 , 3 , 2 , 2 , 1 , + 1 , 2 , 2 , 3 , 2 , 3 , 3 , 3 , 1 , 1 , + 1 , 3 , 3 , 3 , 1 , 2 , 2 , 3 , 3 , 1 , + 3 , 3 , 2 , 1 , 2 , 2 , 1 , 1 , 1 , 3 , + 2 , 1 , 3 , 2 , 3 , 2 , 3 , 2 , 2 , 1 , + 1 , 3 , 1 , 2 , 1 , 2 , 3 , 1 , 2 , 2 , + 1 , 2 , 2 , 2 , 1 , 1 , 2 , 3 , 1 , 2 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level3.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level3.qml new file mode 100644 index 0000000..9504baf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level3.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + scoreTarget: 3000 + timeTarget: 60 + goalText: "4 of 10<br>Clear the board with over 3000 points in under a minute..." + startingGrid: [ 3 , 3 , 1 , 1 , 1 , 2 , 2 , 4 , 3 , 3 , + 4 , 3 , 1 , 4 , 2 , 2 , 2 , 4 , 3 , 4 , + 4 , 3 , 3 , 4 , 1 , 1 , 3 , 3 , 4 , 4 , + 3 , 3 , 3 , 3 , 3 , 1 , 3 , 2 , 2 , 4 , + 4 , 4 , 3 , 4 , 3 , 1 , 4 , 4 , 4 , 4 , + 4 , 4 , 3 , 4 , 1 , 1 , 4 , 4 , 3 , 3 , + 4 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 1 , + 4 , 4 , 2 , 4 , 2 , 2 , 1 , 1 , 1 , 1 , + 4 , 4 , 2 , 4 , 2 , 2 , 1 , 4 , 4 , 1 , + 4 , 1 , 1 , 4 , 3 , 3 , 4 , 2 , 4 , 1 , + 4 , 1 , 1 , 2 , 3 , 3 , 4 , 2 , 2 , 1 , + 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 2 , 1 , + 4 , 1 , 1 , 2 , 2 , 3 , 4 , 3 , 4 , 4 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level4.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level4.qml new file mode 100644 index 0000000..d5d01f0 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level4.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + goalText: "5 of 10<br><br>Clear the level..." + startingGrid: [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 1 , 3 , 2 , 1 , 1 , 1 , 1 , 3 , 2 , 3 , + 1 , 2 , 3 , 1 , 3 , 2 , 2 , 1 , 1 , 2 , + 3 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 3 , 3 , + 2 , 1 , 1 , 3 , 2 , 1 , 1 , 2 , 1 , 3 , + 1 , 3 , 3 , 1 , 2 , 1 , 2 , 1 , 3 , 3 , + 1 , 3 , 2 , 2 , 2 , 1 , 1 , 3 , 2 , 3 , + 1 , 1 , 3 , 2 , 3 , 3 , 2 , 1 , 1 , 1 , + 1 , 2 , 2 , 3 , 2 , 2 , 1 , 3 , 1 , 3 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level5.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level5.qml new file mode 100644 index 0000000..d602567 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level5.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + moveTarget: 4 + goalText: "6 of 10<br><br>Clear in four or less moves..." + startingGrid: [ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , + 4 , 2 , 2 , 2 , 4 , 3 , 3 , 3 , 4 , 4 , + 4 , 2 , 4 , 4 , 4 , 3 , 2 , 3 , 4 , 4 , + 4 , 2 , 2 , 2 , 4 , 3 , 3 , 3 , 4 , 4 , + 4 , 4 , 4 , 2 , 4 , 3 , 4 , 3 , 4 , 4 , + 4 , 2 , 2 , 2 , 4 , 3 , 4 , 3 , 4 , 4 , + 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , + 4 , 3 , 4 , 3 , 4 , 2 , 2 , 2 , 4 , 3 , + 4 , 3 , 3 , 3 , 4 , 2 , 4 , 4 , 4 , 3 , + 4 , 3 , 3 , 3 , 4 , 2 , 2 , 2 , 4 , 3 , + 4 , 3 , 4 , 3 , 4 , 2 , 4 , 4 , 4 , 4 , + 4 , 3 , 4 , 3 , 4 , 2 , 2 , 2 , 4 , 3 , + 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level6.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level6.qml new file mode 100644 index 0000000..5dd42f8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level6.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + moveTarget: 20 + timeTarget: 40 + goalText: "7 of 10<br><br>Clear with 20 moves in 40 seconds (or better)." + startingGrid: [ 1 , 3 , 1 , 1 , 1 , 1 , 2 , 1 , 2 , 2 , + 2 , 1 , 2 , 3 , 3 , 1 , 3 , 1 , 1 , 3 , + 3 , 1 , 1 , 1 , 2 , 2 , 3 , 2 , 3 , 1 , + 1 , 3 , 1 , 1 , 3 , 1 , 1 , 1 , 2 , 3 , + 2 , 1 , 1 , 1 , 3 , 2 , 3 , 3 , 2 , 3 , + 3 , 3 , 3 , 3 , 2 , 2 , 3 , 1 , 3 , 2 , + 2 , 2 , 3 , 2 , 2 , 3 , 2 , 2 , 2 , 2 , + 1 , 2 , 1 , 2 , 1 , 3 , 2 , 3 , 2 , 3 , + 1 , 1 , 2 , 3 , 3 , 3 , 3 , 1 , 1 , 2 , + 3 , 3 , 2 , 2 , 2 , 2 , 3 , 1 , 3 , 1 , + 1 , 2 , 3 , 3 , 3 , 1 , 3 , 2 , 1 , 2 , + 1 , 2 , 1 , 1 , 2 , 3 , 1 , 2 , 1 , 3 , + 3 , 1 , 2 , 2 , 1 , 3 , 3 , 1 , 3 , 2 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level7.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level7.qml new file mode 100644 index 0000000..87633b4 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level7.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + goalText: "8 of 10<br><br>Clear the grid." + startingGrid: [ 2 , 4 , 3 , 2 , 3 , 2 , 3 , 3 , 4 , 3 , + 2 , 2 , 3 , 3 , 1 , 4 , 3 , 3 , 3 , 2 , + 1 , 4 , 2 , 3 , 4 , 3 , 3 , 1 , 1 , 1 , + 2 , 1 , 2 , 4 , 4 , 2 , 2 , 3 , 2 , 1 , + 3 , 4 , 4 , 1 , 3 , 2 , 4 , 2 , 1 , 1 , + 2 , 2 , 3 , 1 , 2 , 4 , 1 , 2 , 1 , 2 , + 1 , 2 , 3 , 2 , 4 , 4 , 3 , 1 , 1 , 2 , + 4 , 4 , 2 , 1 , 2 , 4 , 2 , 2 , 4 , 3 , + 4 , 2 , 4 , 1 , 3 , 4 , 1 , 4 , 2 , 4 , + 4 , 3 , 4 , 1 , 4 , 3 , 1 , 3 , 1 , 1 , + 3 , 3 , 2 , 3 , 2 , 4 , 1 , 2 , 4 , 4 , + 3 , 4 , 2 , 2 , 4 , 3 , 4 , 1 , 3 , 2 , + 4 , 3 , 3 , 4 , 2 , 4 , 1 , 2 , 3 , 2 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level8.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level8.qml new file mode 100644 index 0000000..9d25e31 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level8.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + scoreTarget: 1000 + goalText: "9 of 10<br><br>Score over 1000 points" + startingGrid: [ 1 , 4 , 4 , 3 , 2 , 1 , 4 , 2 , 4 , 2 , + 2 , 3 , 4 , 4 , 1 , 1 , 1 , 4 , 4 , 4 , + 1 , 3 , 1 , 2 , 2 , 1 , 2 , 1 , 4 , 2 , + 4 , 3 , 4 , 2 , 1 , 4 , 1 , 2 , 2 , 3 , + 3 , 4 , 2 , 4 , 4 , 3 , 2 , 2 , 2 , 1 , + 4 , 4 , 3 , 2 , 4 , 4 , 2 , 1 , 1 , 1 , + 1 , 2 , 1 , 3 , 4 , 1 , 1 , 3 , 2 , 3 , + 3 , 4 , 2 , 2 , 1 , 3 , 2 , 2 , 4 , 2 , + 2 , 4 , 1 , 2 , 2 , 4 , 3 , 3 , 3 , 1 , + 1 , 2 , 2 , 4 , 1 , 2 , 2 , 3 , 3 , 3 , + 4 , 4 , 1 , 4 , 3 , 1 , 3 , 3 , 3 , 4 , + 1 , 2 , 4 , 1 , 2 , 1 , 1 , 4 , 2 , 1 , + 1 , 2 , 3 , 4 , 2 , 4 , 4 , 2 , 1 , 3 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/levels/level9.qml b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level9.qml new file mode 100644 index 0000000..755268d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/levels/level9.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +TemplateBase{ + scoreTarget: 2000 + timeTarget: 60 + moveTarget: 20 + mustClear: false + goalText: "10 of 10<br><br>Score 2000 in one minute with less than 20 moves!" + startingGrid: [ 3 , 2 , 3 , 1 , 3 , 3 , 4 , 1 , 3 , 3 , + 2 , 3 , 2 , 1 , 1 , 2 , 2 , 2 , 4 , 1 , + 2 , 4 , 4 , 4 , 3 , 1 , 4 , 4 , 4 , 1 , + 3 , 1 , 3 , 4 , 4 , 2 , 2 , 2 , 2 , 3 , + 2 , 1 , 4 , 4 , 3 , 3 , 1 , 1 , 3 , 2 , + 3 , 2 , 1 , 4 , 3 , 4 , 1 , 3 , 4 , 2 , + 3 , 3 , 1 , 4 , 4 , 4 , 2 , 1 , 2 , 3 , + 2 , 3 , 4 , 3 , 4 , 1 , 1 , 3 , 2 , 4 , + 4 , 4 , 1 , 2 , 4 , 3 , 2 , 2 , 2 , 4 , + 1 , 4 , 2 , 2 , 1 , 1 , 2 , 1 , 1 , 4 , + 1 , 4 , 3 , 3 , 3 , 1 , 3 , 4 , 4 , 2 , + 3 , 4 , 1 , 1 , 2 , 2 , 2 , 3 , 2 , 1 , + 3 , 3 , 4 , 3 , 1 , 1 , 1 , 4 , 4 , 3 ] +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/content/samegame.js b/basicsuite/qt5-everywhere/demos/samegame/content/samegame.js new file mode 100644 index 0000000..9035b12 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/content/samegame.js @@ -0,0 +1,581 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +/* This script file handles the game logic */ +.pragma library +.import QtQuick.LocalStorage 2.0 as Sql +.import "../settings.js" as Settings + +var maxColumn = 10; +var maxRow = 13; +var types = 3; +var maxIndex = maxColumn*maxRow; +var board = new Array(maxIndex); +var blockSrc = "Block.qml"; +var gameDuration; +var component = Qt.createComponent(blockSrc); +var gameCanvas; +var betweenTurns = false; + +var puzzleLevel = null; +var puzzlePath = ""; + +var gameMode = "arcade"; //Set in new game, then tweaks behavior of other functions +var gameOver = false; + +function changeBlock(src) +{ + blockSrc = src; + component = Qt.createComponent(blockSrc); +} + +// Index function used instead of a 2D array +function index(column, row) +{ + return column + row * maxColumn; +} + +function timeStr(msecs) +{ + var secs = Math.floor(msecs/1000); + var m = Math.floor(secs/60); + var ret = "" + m + "m " + (secs%60) + "s"; + return ret; +} + +function cleanUp() +{ + if (gameCanvas == undefined) + return; + // Delete blocks from previous game + for (var i = 0; i < maxIndex; i++) { + if (board[i] != null) + board[i].destroy(); + board[i] = null; + } + if (puzzleLevel != null){ + puzzleLevel.destroy(); + puzzleLevel = null; + } + gameCanvas.mode = "" +} + +function startNewGame(gc, mode, map) +{ + gameCanvas = gc; + if (mode == undefined) + gameMode = "arcade"; + else + gameMode = mode; + gameOver = false; + + cleanUp(); + + gc.gameOver = false; + gc.mode = gameMode; + // Calculate board size + maxColumn = Math.floor(gameCanvas.width/Settings.blockSize); + maxRow = Math.floor(gameCanvas.height/Settings.blockSize); + maxIndex = maxRow * maxColumn; + if (gameMode == "arcade") //Needs to be after board sizing + getHighScore(); + + + // Initialize Board + board = new Array(maxIndex); + gameCanvas.score = 0; + gameCanvas.score2 = 0; + gameCanvas.moves = 0; + gameCanvas.curTurn = 1; + if (gameMode == "puzzle") + loadMap(map); + else//Note that we load them in reverse order for correct visual stacking + for (var column = maxColumn - 1; column >= 0; column--) + for (var row = maxRow - 1; row >= 0; row--) + createBlock(column, row); + if (gameMode == "puzzle") + getLevelHistory();//Needs to be after map load + gameDuration = new Date(); +} + +var fillFound; // Set after a floodFill call to the number of blocks found +var floodBoard; // Set to 1 if the floodFill reaches off that node + +// NOTE: Be careful with vars named x,y, as the calling object's x,y are still in scope +function handleClick(x,y) +{ + if (betweenTurns || gameOver || gameCanvas == undefined) + return; + var column = Math.floor(x/Settings.blockSize); + var row = Math.floor(y/Settings.blockSize); + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return; + if (board[index(column, row)] == null) + return; + // If it's a valid block, remove it and all connected (does nothing if it's not connected) + floodFill(column,row, -1); + if (fillFound <= 0) + return; + if (gameMode == "multiplayer" && gameCanvas.curTurn == 2) + gameCanvas.score2 += (fillFound - 1) * (fillFound - 1); + else + gameCanvas.score += (fillFound - 1) * (fillFound - 1); + if (gameMode == "multiplayer" && gameCanvas.curTurn == 2) + shuffleUp(); + else + shuffleDown(); + gameCanvas.moves += 1; + if (gameMode == "endless") + refill(); + else if (gameMode != "multiplayer") + victoryCheck(); + if (gameMode == "multiplayer" && !gc.gameOver){ + betweenTurns = true; + gameCanvas.swapPlayers();//signal, animate and call turnChange() when ready + } +} + +function floodFill(column,row,type) +{ + if (board[index(column, row)] == null) + return; + var first = false; + if (type == -1) { + first = true; + type = board[index(column,row)].type; + + // Flood fill initialization + fillFound = 0; + floodBoard = new Array(maxIndex); + } + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return; + if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type)) + return; + floodBoard[index(column, row)] = 1; + floodFill(column + 1, row, type); + floodFill(column - 1, row, type); + floodFill(column, row + 1, type); + floodFill(column, row - 1, type); + if (first == true && fillFound == 0) + return; // Can't remove single blocks + board[index(column, row)].dying = true; + board[index(column, row)] = null; + fillFound += 1; +} + +function shuffleDown() +{ + // Fall down + for (var column = 0; column < maxColumn; column++) { + var fallDist = 0; + for (var row = maxRow - 1; row >= 0; row--) { + if (board[index(column,row)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + var obj = board[index(column, row)]; + obj.y = (row + fallDist) * Settings.blockSize; + board[index(column, row + fallDist)] = obj; + board[index(column, row)] = null; + } + } + } + } + // Fall to the left + fallDist = 0; + for (column = 0; column < maxColumn; column++) { + if (board[index(column, maxRow - 1)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + for (row = 0; row < maxRow; row++) { + obj = board[index(column, row)]; + if (obj == null) + continue; + obj.x = (column - fallDist) * Settings.blockSize; + board[index(column - fallDist,row)] = obj; + board[index(column, row)] = null; + } + } + } + } +} + + +function shuffleUp() +{ + // Fall up + for (var column = 0; column < maxColumn; column++) { + var fallDist = 0; + for (var row = 0; row < maxRow; row++) { + if (board[index(column,row)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + var obj = board[index(column, row)]; + obj.y = (row - fallDist) * Settings.blockSize; + board[index(column, row - fallDist)] = obj; + board[index(column, row)] = null; + } + } + } + } + // Fall to the left (or should it be right, so as to be left for P2?) + fallDist = 0; + for (column = 0; column < maxColumn; column++) { + if (board[index(column, 0)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + for (row = 0; row < maxRow; row++) { + obj = board[index(column, row)]; + if (obj == null) + continue; + obj.x = (column - fallDist) * Settings.blockSize; + board[index(column - fallDist,row)] = obj; + board[index(column, row)] = null; + } + } + } + } +} + +function turnChange()//called by ui outside +{ + betweenTurns = false; + if (gameCanvas.curTurn == 1){ + shuffleUp(); + gameCanvas.curTurn = 2; + victoryCheck(); + }else{ + shuffleDown(); + gameCanvas.curTurn = 1; + victoryCheck(); + } +} + +function refill() +{ + for (var column = 0; column < maxColumn; column++) { + for (var row = 0; row < maxRow; row++) { + if (board[index(column, row)] == null) + createBlock(column, row); + } + } +} + +function victoryCheck() +{ + // Awards bonuses for no blocks left + var deservesBonus = true; + if (board[index(0,maxRow - 1)] != null || board[index(0,0)] != null) + deservesBonus = false; + // Checks for game over + if (deservesBonus){ + if (gameCanvas.curTurn = 1) + gameCanvas.score += 1000; + else + gameCanvas.score2 += 1000; + } + gameOver = deservesBonus; + if (gameCanvas.curTurn == 1){ + if (!(floodMoveCheck(0, maxRow - 1, -1))) + gameOver = true; + }else{ + if (!(floodMoveCheck(0, 0, -1, true))) + gameOver = true; + } + if (gameMode == "puzzle"){ + puzzleVictoryCheck(deservesBonus);//Takes it from here + return; + } + if (gameOver) { + var winnerScore = Math.max(gameCanvas.score, gameCanvas.score2); + if (gameMode == "multiplayer"){ + gameCanvas.score = winnerScore; + saveHighScore(gameCanvas.score2); + } + saveHighScore(gameCanvas.score); + gameDuration = new Date() - gameDuration; + gameCanvas.gameOver = true; + } +} + +// Only floods up and right, to see if it can find adjacent same-typed blocks +function floodMoveCheck(column, row, type, goDownInstead) +{ + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return false; + if (board[index(column, row)] == null) + return false; + var myType = board[index(column, row)].type; + if (type == myType) + return true; + if (goDownInstead) + return floodMoveCheck(column + 1, row, myType, goDownInstead) || + floodMoveCheck(column, row + 1, myType, goDownInstead); + else + return floodMoveCheck(column + 1, row, myType) || + floodMoveCheck(column, row - 1, myType); +} + +function createBlock(column,row,type) +{ + // Note that we don't wait for the component to become ready. This will + // only work if the block QML is a local file. Otherwise the component will + // not be ready immediately. There is a statusChanged signal on the + // component you could use if you want to wait to load remote files. + if (component.status == 1){ + if (type == undefined) + type = Math.floor(Math.random() * types); + if (type < 0 || type > 4) { + console.log("Invalid type requested");//TODO: Is this triggered by custom levels much? + return; + } + var dynamicObject = component.createObject(gameCanvas, + {"type": type, + "x": column*Settings.blockSize, + "y": -1*Settings.blockSize, + "width": Settings.blockSize, + "height": Settings.blockSize, + "particleSystem": gameCanvas.ps}); + if (dynamicObject == null){ + console.log("error creating block"); + console.log(component.errorString()); + return false; + } + dynamicObject.y = row*Settings.blockSize; + dynamicObject.spawned = true; + + board[index(column,row)] = dynamicObject; + }else{ + console.log("error loading block component"); + console.log(component.errorString()); + return false; + } + return true; +} + +function showPuzzleError(str) +{ + //TODO: Nice user visible UI? + console.log(str); +} + +function loadMap(map) +{ + puzzlePath = map; + var levelComp = Qt.createComponent(puzzlePath); + if (levelComp.status != 1){ + console.log("Error loading level"); + showPuzzleError(levelComp.errorString()); + return; + } + puzzleLevel = levelComp.createObject(); + if (puzzleLevel == null || !puzzleLevel.startingGrid instanceof Array) { + showPuzzleError("Bugger!"); + return; + } + gameCanvas.showPuzzleGoal(puzzleLevel.goalText); + //showPuzzleGoal should call finishLoadingMap as the next thing it does, before handling more events +} + +function finishLoadingMap() +{ + for (var i in puzzleLevel.startingGrid) + if (! (puzzleLevel.startingGrid[i] >= 0 && puzzleLevel.startingGrid[i] <= 9) ) + puzzleLevel.startingGrid[i] = 0; + //TODO: Don't allow loading larger levels, leads to cheating + while (puzzleLevel.startingGrid.length > maxIndex) puzzleLevel.startingGrid.shift(); + while (puzzleLevel.startingGrid.length < maxIndex) puzzleLevel.startingGrid.unshift(0); + for (var i in puzzleLevel.startingGrid) + if (puzzleLevel.startingGrid[i] > 0) + createBlock(i % maxColumn, Math.floor(i / maxColumn), puzzleLevel.startingGrid[i] - 1); + + //### Experimental feature - allow levels to contain arbitrary QML scenes as well! + //while (puzzleLevel.children.length) + // puzzleLevel.children[0].parent = gameCanvas; + gameDuration = new Date(); //Don't start until we finish loading +} + +function puzzleVictoryCheck(clearedAll)//gameOver has also been set if no more moves +{ + var won = true; + var soFar = new Date() - gameDuration; + if (puzzleLevel.scoreTarget != -1 && gameCanvas.score < puzzleLevel.scoreTarget){ + won = false; + } if (puzzleLevel.scoreTarget != -1 && gameCanvas.score >= puzzleLevel.scoreTarget && !puzzleLevel.mustClear){ + gameOver = true; + } if (puzzleLevel.timeTarget != -1 && soFar/1000.0 > puzzleLevel.timeTarget){ + gameOver = true; + } if (puzzleLevel.moveTarget != -1 && gameCanvas.moves >= puzzleLevel.moveTarget){ + gameOver = true; + } if (puzzleLevel.mustClear && gameOver && !clearedAll) { + won = false; + } + + if (gameOver) { + gameCanvas.gameOver = true; + gameCanvas.showPuzzleEnd(won); + + if (won) { + // Store progress + saveLevelHistory(); + } + } +} + +function getHighScore() +{ + var db = Sql.LocalStorage.openDatabaseSync( + "SameGame", + "2.0", + "SameGame Local Data", + 100 + ); + db.transaction( + function(tx) { + tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(game TEXT, score NUMBER, gridSize TEXT, time NUMBER)'); + // Only show results for the current grid size + var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "' + + maxColumn + "x" + maxRow + '" AND game = "' + gameMode + '" ORDER BY score desc'); + if (rs.rows.length > 0) + gameCanvas.highScore = rs.rows.item(0).score; + else + gameCanvas.highScore = 0; + } + ); +} + +function saveHighScore(score) +{ + // Offline storage + var db = Sql.LocalStorage.openDatabaseSync( + "SameGame", + "2.0", + "SameGame Local Data", + 100 + ); + var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)"; + var data = [ + gameMode, + score, + maxColumn + "x" + maxRow, + Math.floor(gameDuration / 1000) + ]; + if (score >= gameCanvas.highScore)//Update UI field + gameCanvas.highScore = score; + + db.transaction( + function(tx) { + tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(game TEXT, score NUMBER, gridSize TEXT, time NUMBER)'); + tx.executeSql(dataStr, data); + } + ); +} + +function getLevelHistory() +{ + var db = Sql.LocalStorage.openDatabaseSync( + "SameGame", + "2.0", + "SameGame Local Data", + 100 + ); + db.transaction( + function(tx) { + tx.executeSql('CREATE TABLE IF NOT EXISTS Puzzle(level TEXT, score NUMBER, moves NUMBER, time NUMBER)'); + var rs = tx.executeSql('SELECT * FROM Puzzle WHERE level = "' + puzzlePath + '" ORDER BY score desc'); + if (rs.rows.length > 0) { + gameCanvas.puzzleWon = true; + gameCanvas.highScore = rs.rows.item(0).score; + } else { + gameCanvas.puzzleWon = false; + gameCanvas.highScore = 0; + } + } + ); +} + +function saveLevelHistory() +{ + var db = Sql.LocalStorage.openDatabaseSync( + "SameGame", + "2.0", + "SameGame Local Data", + 100 + ); + var dataStr = "INSERT INTO Puzzle VALUES(?, ?, ?, ?)"; + var data = [ + puzzlePath, + gameCanvas.score, + gameCanvas.moves, + Math.floor(gameDuration / 1000) + ]; + gameCanvas.puzzleWon = true; + + db.transaction( + function(tx) { + tx.executeSql('CREATE TABLE IF NOT EXISTS Puzzle(level TEXT, score NUMBER, moves NUMBER, time NUMBER)'); + tx.executeSql(dataStr, data); + } + ); +} + +function nuke() //For "Debug mode" +{ + for (var row = 1; row <= 5; row++) { + for (var col = 0; col < 5; col++) { + if (board[index(col, maxRow - row)] != null) { + board[index(col, maxRow - row)].dying = true; + board[index(col, maxRow - row)] = null; + } + } + } + if (gameMode == "multiplayer" && gameCanvas.curTurn == 2) + shuffleUp(); + else + shuffleDown(); + if (gameMode == "endless") + refill(); + else + victoryCheck(); +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/samegame.qml b/basicsuite/qt5-everywhere/demos/samegame/samegame.qml new file mode 100644 index 0000000..e81a8bf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/samegame.qml @@ -0,0 +1,371 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 +import "content/samegame.js" as Logic +import "settings.js" as Settings +import "content" + +Rectangle { + id: root + anchors.fill: parent + property int acc: 0 + + + function loadPuzzle() { + if (gameCanvas.mode != "") + Logic.cleanUp(); + Logic.startNewGame(gameCanvas,"puzzle","levels/level"+acc+".qml") + } + function nextPuzzle() { + acc = (acc + 1) % 10; + loadPuzzle(); + } + Timer { + id: gameOverTimer + interval: 1500 + running : gameCanvas.gameOver && gameCanvas.mode == "puzzle" //mode will be reset by cleanUp(); + repeat : false + onTriggered: { + Logic.cleanUp(); + nextPuzzle(); + } + } + + Image { + source: "content/gfx/background.png" + anchors.fill: parent + } + + GameArea { + id: gameCanvas + z: 1 + y: Settings.headerHeight + + width: parent.width + height: parent.height - Settings.headerHeight - Settings.footerHeight + + backgroundVisible: root.state == "in-game" + onModeChanged: if (gameCanvas.mode != "puzzle") puzzleWon = false; //UI has stricter constraints on this variable than the game does + Age { + groups: ["redspots", "greenspots", "bluespots", "yellowspots"] + enabled: root.state == "" + system: gameCanvas.ps + } + + onPuzzleLost: acc--;//So that nextPuzzle() reloads the current one + + } + + Item { + id: menu + z: 2 + width: parent.width; + anchors.top: parent.top + anchors.bottom: bottomBar.top + + LogoAnimation { + x: 64 + y: Settings.headerHeight + particleSystem: gameCanvas.ps + running: root.state == "" + } + Row { + x: 112 + y: 20 + Image { source: "content/gfx/logo-a.png" } + Image { source: "content/gfx/logo-m.png" } + Image { source: "content/gfx/logo-e.png" } + } + + Column { + y: 100 + 40 + spacing: Settings.menuButtonSpacing + + Button { + width: root.width + rotatedButton: true + imgSrc: "content/gfx/but-game-1.png" + onClicked: { + if (root.state == "in-game") + return //Prevent double clicking + root.state = "in-game" + gameCanvas.blockFile = "Block.qml" + gameCanvas.background = "gfx/background.png" + arcadeTimer.start(); + } + //Emitted particles don't fade out, because ImageParticle is on the GameArea + system: gameCanvas.ps + group: "green" + Timer { + id: arcadeTimer + interval: Settings.menuDelay + running : false + repeat : false + onTriggered: Logic.startNewGame(gameCanvas) + } + } + + Button { + width: root.width + rotatedButton: true + imgSrc: "content/gfx/but-game-2.png" + onClicked: { + if (root.state == "in-game") + return + root.state = "in-game" + gameCanvas.blockFile = "Block.qml" + gameCanvas.background = "gfx/background.png" + twopTimer.start(); + } + system: gameCanvas.ps + group: "green" + Timer { + id: twopTimer + interval: Settings.menuDelay + running : false + repeat : false + onTriggered: Logic.startNewGame(gameCanvas, "multiplayer") + } + } + + Button { + width: root.width + rotatedButton: true + imgSrc: "content/gfx/but-game-3.png" + onClicked: { + if (root.state == "in-game") + return + root.state = "in-game" + gameCanvas.blockFile = "SimpleBlock.qml" + gameCanvas.background = "gfx/background.png" + endlessTimer.start(); + } + system: gameCanvas.ps + group: "blue" + Timer { + id: endlessTimer + interval: Settings.menuDelay + running : false + repeat : false + onTriggered: Logic.startNewGame(gameCanvas, "endless") + } + } + + Button { + width: root.width + rotatedButton: true + imgSrc: "content/gfx/but-game-4.png" + group: "yellow" + onClicked: { + if (root.state == "in-game") + return + root.state = "in-game" + gameCanvas.blockFile = "PuzzleBlock.qml" + gameCanvas.background = "gfx/background.png" + puzzleTimer.start(); + } + Timer { + id: puzzleTimer + interval: Settings.menuDelay + running : false + repeat : false + onTriggered: loadPuzzle(); + } + system: gameCanvas.ps + } + } + } + + Image { + id: scoreBar + source: "content/gfx/bar.png" + width: parent.width + z: 6 + y: -Settings.headerHeight + height: Settings.headerHeight + Behavior on opacity { NumberAnimation {} } + SamegameText { + id: arcadeScore + anchors { right: parent.right; topMargin: 3; rightMargin: 11; top: parent.top} + text: '<font color="#f7d303">P1:</font> ' + gameCanvas.score + font.pixelSize: Settings.fontPixelSize + textFormat: Text.StyledText + color: "white" + opacity: gameCanvas.mode == "arcade" ? 1 : 0 + Behavior on opacity { NumberAnimation {} } + } + SamegameText { + id: arcadeHighScore + anchors { left: parent.left; topMargin: 3; leftMargin: 11; top: parent.top} + text: '<font color="#f7d303">Highscore:</font> ' + gameCanvas.highScore + opacity: gameCanvas.mode == "arcade" ? 1 : 0 + } + SamegameText { + id: p1Score + anchors { right: parent.right; topMargin: 3; rightMargin: 11; top: parent.top} + text: '<font color="#f7d303">P1:</font> ' + gameCanvas.score + opacity: gameCanvas.mode == "multiplayer" ? 1 : 0 + } + SamegameText { + id: p2Score + anchors { left: parent.left; topMargin: 3; leftMargin: 11; top: parent.top} + text: '<font color="#f7d303">P2:</font> ' + gameCanvas.score2 + opacity: gameCanvas.mode == "multiplayer" ? 1 : 0 + rotation: 180 + } + SamegameText { + id: puzzleMoves + anchors { left: parent.left; topMargin: 3; leftMargin: 11; top: parent.top} + text: '<font color="#f7d303">Moves:</font> ' + gameCanvas.moves + opacity: gameCanvas.mode == "puzzle" ? 1 : 0 + } + SamegameText { + Image { + source: "content/gfx/icon-time.png" + x: -20 + } + id: puzzleTime + anchors { topMargin: 3; top: parent.top; horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: 20} + text: "00:00" + opacity: gameCanvas.mode == "puzzle" ? 1 : 0 + Timer { + interval: 1000 + repeat: true + running: gameCanvas.mode == "puzzle" && !gameCanvas.gameOver + onTriggered: { + var elapsed = Math.floor((new Date() - Logic.gameDuration)/ 1000.0); + var mins = Math.floor(elapsed/60.0); + var secs = (elapsed % 60); + puzzleTime.text = (mins < 10 ? "0" : "") + mins + ":" + (secs < 10 ? "0" : "") + secs; + } + } + } + SamegameText { + id: puzzleScore + anchors { right: parent.right; topMargin: 3; rightMargin: 11; top: parent.top} + text: '<font color="#f7d303">Score:</font> ' + gameCanvas.score + opacity: gameCanvas.mode == "puzzle" ? 1 : 0 + } + } + + Image { + id: bottomBar + width: parent.width + height: Settings.footerHeight + source: "content/gfx/bar.png" + y: parent.height - Settings.footerHeight; + z: 2 + /*Button { + id: quitButton + height: Settings.toolButtonHeight + imgSrc: "content/gfx/but-quit.png" + onClicked: {Qt.quit(); } + anchors { left: parent.left; verticalCenter: parent.verticalCenter; leftMargin: 11 } + }*/ + Button { + id: menuButton + height: Settings.toolButtonHeight + imgSrc: "content/gfx/but-menu.png" + visible: (root.state == "in-game"); + onClicked: {root.state = ""; Logic.cleanUp(); gameCanvas.mode = ""} + anchors { left: parent.left; verticalCenter: parent.verticalCenter; leftMargin: 0 } + } + Button { + id: againButton + height: Settings.toolButtonHeight + imgSrc: "content/gfx/but-game-new.png" + visible: (root.state == "in-game"); + opacity: gameCanvas.gameOver && (gameCanvas.mode == "arcade" || gameCanvas.mode == "multiplayer") + Behavior on opacity{ NumberAnimation {} } + onClicked: {if (gameCanvas.gameOver) { Logic.startNewGame(gameCanvas, gameCanvas.mode);}} + anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 11 } + } + Button { + id: nextButton + height: Settings.toolButtonHeight + imgSrc: "content/gfx/but-puzzle-next.png" + visible: (root.state == "in-game") && gameCanvas.mode == "puzzle" && gameCanvas.puzzleWon + opacity: gameCanvas.puzzleWon ? 1 : 0 + Behavior on opacity{ NumberAnimation {} } + onClicked: {if (gameCanvas.puzzleWon) nextPuzzle();} + anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 11 } + } + } + + Connections { + target: root + onStateChanged: stateChangeAnim.running = true + } + SequentialAnimation { + id: stateChangeAnim + ParallelAnimation { + NumberAnimation { target: bottomBar; property: "y"; to: root.height; duration: Settings.menuDelay/2; easing.type: Easing.OutQuad } + NumberAnimation { target: scoreBar; property: "y"; to: -Settings.headerHeight; duration: Settings.menuDelay/2; easing.type: Easing.OutQuad } + } + ParallelAnimation { + NumberAnimation { target: bottomBar; property: "y"; to: root.height - Settings.footerHeight; duration: Settings.menuDelay/2; easing.type: Easing.OutBounce} + NumberAnimation { target: scoreBar; property: "y"; to: root.state == "" ? -Settings.headerHeight : 0; duration: Settings.menuDelay/2; easing.type: Easing.OutBounce} + } + } + + states: [ + State { + name: "in-game" + PropertyChanges { + target: menu + opacity: 0 + visible: false + } + } + ] + + transitions: [ + Transition { + NumberAnimation {properties: "x,y,opacity"} + } + ] + + //"Debug mode" + focus: true + Keys.onAsteriskPressed: Logic.nuke(); + Keys.onSpacePressed: gameCanvas.puzzleWon = true; +} diff --git a/basicsuite/qt5-everywhere/demos/samegame/samegame.qrc b/basicsuite/qt5-everywhere/demos/samegame/samegame.qrc new file mode 100644 index 0000000..951b9d1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/samegame.qrc @@ -0,0 +1,72 @@ +<RCC> + <qresource prefix="/demos/samegame"> + <file>samegame.qml</file> + <file>settings.js</file> + <file>content/gfx/text-p1-won.png</file> + <file>content/gfx/background-puzzle.png</file> + <file>content/gfx/background.png</file> + <file>content/gfx/bar.png</file> + <file>content/gfx/blue-puzzle.png</file> + <file>content/gfx/blue.png</file> + <file>content/gfx/bubble-highscore.png</file> + <file>content/gfx/bubble-puzzle.png</file> + <file>content/gfx/but-game-1.png</file> + <file>content/gfx/but-game-2.png</file> + <file>content/gfx/but-game-3.png</file> + <file>content/gfx/but-game-4.png</file> + <file>content/gfx/but-game-new.png</file> + <file>content/gfx/but-menu.png</file> + <file>content/gfx/but-puzzle-next.png</file> + <file>content/gfx/but-quit.png</file> + <file>content/gfx/green-puzzle.png</file> + <file>content/gfx/green.png</file> + <file>content/gfx/icon-fail.png</file> + <file>content/gfx/icon-ok.png</file> + <file>content/gfx/icon-time.png</file> + <file>content/gfx/logo-a.png</file> + <file>content/gfx/logo-e.png</file> + <file>content/gfx/logo-g.png</file> + <file>content/gfx/logo-m.png</file> + <file>content/gfx/logo-s.png</file> + <file>content/gfx/logo.png</file> + <file>content/gfx/particle-brick.png</file> + <file>content/gfx/particle-paint.png</file> + <file>content/gfx/particle-smoke.png</file> + <file>content/gfx/red-puzzle.png</file> + <file>content/gfx/red.png</file> + <file>content/gfx/text-highscore-new.png</file> + <file>content/gfx/text-highscore.png</file> + <file>content/gfx/text-no-winner.png</file> + <file>content/gfx/text-p1-go.png</file> + <file>content/gfx/text-p1.png</file> + <file>content/gfx/text-p2-go.png</file> + <file>content/gfx/text-p2-won.png</file> + <file>content/gfx/text-p2.png</file> + <file>content/gfx/yellow-puzzle.png</file> + <file>content/gfx/yellow.png</file> + <file>content/levels/level0.qml</file> + <file>content/levels/level1.qml</file> + <file>content/levels/level2.qml</file> + <file>content/levels/level3.qml</file> + <file>content/levels/level4.qml</file> + <file>content/levels/level5.qml</file> + <file>content/levels/level6.qml</file> + <file>content/levels/level7.qml</file> + <file>content/levels/level8.qml</file> + <file>content/levels/level9.qml</file> + <file>content/levels/TemplateBase.qml</file> + <file>content/SamegameText.qml</file> + <file>content/SimpleBlock.qml</file> + <file>content/Block.qml</file> + <file>content/BlockEmitter.qml</file> + <file>content/Button.qml</file> + <file>content/GameArea.qml</file> + <file>content/LogoAnimation.qml</file> + <file>content/MenuEmitter.qml</file> + <file>content/PaintEmitter.qml</file> + <file>content/PrimaryPack.qml</file> + <file>content/PuzzleBlock.qml</file> + <file>content/samegame.js</file> + <file>content/SmokeText.qml</file> + </qresource> +</RCC> diff --git a/basicsuite/qt5-everywhere/demos/samegame/settings.js b/basicsuite/qt5-everywhere/demos/samegame/settings.js new file mode 100644 index 0000000..e09dee9 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/samegame/settings.js @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +.pragma library + +//This should be switched over once a proper QML settings API exists + +var menuDelay = 500 + +var headerHeight = 20 // 70 on BB10 +var footerHeight = 44 // 100 on BB10 + +var fontPixelSize = 14 // 55 on BB10 + +var blockSize = 32 // 64 on BB10 + +var toolButtonHeight = 32 // 64 on BB10 + +var menuButtonSpacing = 0 // 15 on BB10 diff --git a/basicsuite/qt5-everywhere/demos/shaders/Content.qml b/basicsuite/qt5-everywhere/demos/shaders/Content.qml new file mode 100755 index 0000000..aae2337 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Content.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + property alias effect: effectLoader.item + property string effectSource: "Effects/EffectPassThrough.qml" + signal contentSizeChanged(size contentSize) + + color: "black" + + ShaderEffectSource { + id: theSource + smooth: true + hideSource: true + } + + LogoContainer { + id: logoContainer + anchors.fill: root + } + + Loader { + id: effectLoader + source: effectSource + } + + onWidthChanged: { + if (effectLoader.item) + effectLoader.item.targetWidth = root.width + } + + onHeightChanged: { + if (effectLoader.item) + effectLoader.item.targetHeight = root.height + } + + onEffectSourceChanged: { + effectLoader.source = effectSource + updateSource() + } + + function updateSource() { + if (effectLoader.item) { + effectLoader.item.parent = root + effectLoader.item.targetWidth = root.width + effectLoader.item.targetHeight = root.height + effectLoader.item.anchors.fill = logoContainer + effectLoader.item.source = theSource + } + } + + function init() { + theSource.sourceItem = logoContainer + root.effectSource = "Effects/EffectPassThrough.qml" + effectLoader.source = root.effectSource + updateSource() + } +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/EffectSelectionPanel.qml b/basicsuite/qt5-everywhere/demos/shaders/EffectSelectionPanel.qml new file mode 100755 index 0000000..93cdb5f --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/EffectSelectionPanel.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.0 + +Rectangle { + id: root + height: 78 + property int itemHeight: 25 + property string effectSource: "" + property string effectName: "No effect" + + signal clicked + QtObject { + id: d + property Item selectedItem + } + + ListModel { + id: sources + ListElement { name: "No effect"; source: "Effects/EffectPassThrough.qml" } + ListElement { name: "Billboard"; source: "Effects/EffectBillboard.qml" } + ListElement { name: "Black & white"; source: "Effects/EffectBlackAndWhite.qml" } + ListElement { name: "Blur"; source: "Effects/EffectGaussianBlur.qml" } + ListElement { name: "Edge detection"; source: "Effects/EffectSobelEdgeDetection1.qml" } + ListElement { name: "Emboss"; source: "Effects/EffectEmboss.qml" } + ListElement { name: "Glow"; source: "Effects/EffectGlow.qml" } + ListElement { name: "Isolate"; source: "Effects/EffectIsolate.qml" } + ListElement { name: "Pixelate"; source: "Effects/EffectPixelate.qml" } + ListElement { name: "Posterize"; source: "Effects/EffectPosterize.qml" } + ListElement { name: "Ripple"; source: "Effects/EffectRipple.qml" } + ListElement { name: "Sepia"; source: "Effects/EffectSepia.qml" } + ListElement { name: "Sharpen"; source: "Effects/EffectSharpen.qml" } + ListElement { name: "Shockwave"; source: "Effects/EffectShockwave.qml" } + ListElement { name: "Toon"; source: "Effects/EffectToon.qml" } + ListElement { name: "Warhol"; source: "Effects/EffectWarhol.qml" } + ListElement { name: "Wobble"; source: "Effects/EffectWobble.qml" } + ListElement { name: "Vignette"; source: "Effects/EffectVignette.qml" } + } + + Component { + id: sourceDelegate + Item { + id: sourceDelegateItem + width: root.width + height: itemHeight + + Text { + id: sourceSelectorItem + anchors.centerIn: parent + width: 0.9 * parent.width + height: 0.8 * itemHeight + text: name + color: "white" + } + + states: [ + State { + name: "selected" + PropertyChanges { + target: sourceSelectorItem + bgColor: "#ff8888" + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + ColorAnimation { + properties: "color" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + } + } + + MouseArea { + id: mouseAboveMonitor + anchors.fill: parent + hoverEnabled: true + } + + ListView { + id: list + anchors.fill: parent + clip: true + anchors.margins: root.width * 0.05 + model: sources + + currentIndex: 0 + + onCurrentIndexChanged : { + effectSource = model.get(currentIndex).source + effectName = model.get(currentIndex).name + root.clicked() + } + + delegate: Item { + id: item + width: parent.width + height: itemHeight + Rectangle { + anchors.fill: parent + border.color: index == list.currentIndex ? "#44ffffff" : "transparent" + color: index == list.currentIndex ? "#22ffffff" : "transparent" + radius: 3 + Text { color: "white" ; text: name ; anchors.centerIn: parent; font.pixelSize: item.height * 0.5 } + MouseArea { + anchors.fill: parent + onClicked: list.currentIndex = index + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/Effect.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/Effect.qml new file mode 100755 index 0000000..34eb07c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/Effect.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import ShaderReader 1.0 + +ShaderEffect { + id: effect + property variant source + property ListModel parameters: ListModel { } + property bool divider: false + property real dividerValue: 1.0 + property real targetWidth: 0 + property real targetHeight: 0 + property alias fragmentShaderFilename: shaderFileReader.fragmentShaderFilename + property alias vertexShaderFilename: shaderFileReader.vertexShaderFilename + //property string fragmentShaderFilename + //property string vertexShaderFilename + + QtObject { + id: d + property string fragmentShaderCommon: " + #ifdef GL_ES + precision mediump float; + #else + # define lowp + # define mediump + # define highp + #endif // GL_ES + " + } + + ShaderFileReader { + id: shaderFileReader + onFragmentShaderFilenameChanged: { + effect.fragmentShader = d.fragmentShaderCommon + shaderFileReader.fragmentShader + } + onVertexShaderFilenameChanged: { + effect.vertexShader = shaderFileReader.vertexShader + } + } + + // The following is a workaround for the fact that ShaderEffect + // doesn't provide a way for shader programs to be read from a file, + // rather than being inline in the QML file + + //onFragmentShaderFilenameChanged: + // fragmentShader = d.fragmentShaderCommon + shaderFileReader.readFile("qml/QtDemo/demos/shaders/" + fragmentShaderFilename) + //onVertexShaderFilenameChanged: + // vertexShader = shaderFileReader.readFile("qml/QtDemo/demos/shaders/" + vertexShaderFilename) +} + diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectBillboard.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectBillboard.qml new file mode 100755 index 0000000..124a2a1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectBillboard.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "grid spacing" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real grid: parameters.get(0).value * 10 + + property real step_x: 0.0015625 + property real step_y: targetHeight ? (step_x * targetWidth / targetHeight) : 0.0 + + fragmentShaderFilename: "shaders/billboard.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectBlackAndWhite.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectBlackAndWhite.qml new file mode 100755 index 0000000..37a3b6e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectBlackAndWhite.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "threshold" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real threshold: parameters.get(0).value + + fragmentShaderFilename: "shaders/blackandwhite.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectEmboss.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectEmboss.qml new file mode 100755 index 0000000..4bf5771 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectEmboss.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + fragmentShaderFilename: "shaders/emboss.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectGaussianBlur.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectGaussianBlur.qml new file mode 100755 index 0000000..e63e17a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectGaussianBlur.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://www.geeks3d.com/20100909/shader-library-gaussian-blur-post-processing-filter-in-glsl/ + +import QtQuick 2.0 + +Item { + id: root + property bool divider: true + property real dividerValue: 1 + property ListModel parameters: ListModel { + ListElement { + name: "radius" + value: 0.5 + } + } + + property alias targetWidth: verticalShader.targetWidth + property alias targetHeight: verticalShader.targetHeight + property alias source: verticalShader.source + + Effect { + id: verticalShader + anchors.fill: parent + dividerValue: parent.dividerValue + property real blurSize: 4.0 * parent.parameters.get(0).value / targetHeight + fragmentShaderFilename: "shaders/gaussianblur_v.fsh" + } + + Effect { + id: horizontalShader + anchors.fill: parent + dividerValue: parent.dividerValue + property real blurSize: 4.0 * parent.parameters.get(0).value / parent.targetWidth + fragmentShaderFilename: "shaders/gaussianblur_h.fsh" + source: horizontalShaderSource + + ShaderEffectSource { + id: horizontalShaderSource + sourceItem: verticalShader + smooth: true + hideSource: true + } + } +} + diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectGlow.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectGlow.qml new file mode 100755 index 0000000..d6e987d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectGlow.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + fragmentShaderFilename: "shaders/glow.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectIsolate.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectIsolate.qml new file mode 100755 index 0000000..2425a25 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectIsolate.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "hue" + value: 0.5 + } + ListElement { + name: "width" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real targetHue: parameters.get(0).value * 360 + property real windowWidth: parameters.get(1).value * 60 + + fragmentShaderFilename: "shaders/isolate.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPassThrough.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPassThrough.qml new file mode 100755 index 0000000..1f259be --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPassThrough.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + divider: false +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPixelate.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPixelate.qml new file mode 100755 index 0000000..71f7da9 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPixelate.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "granularity" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real granularity: parameters.get(0).value * 20 + + fragmentShaderFilename: "shaders/pixelate.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPosterize.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPosterize.qml new file mode 100755 index 0000000..0cf16a0 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectPosterize.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "gamma" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real gamma: parameters.get(0).value + + property real numColors: 8.0 + + fragmentShaderFilename: "shaders/posterize.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectRipple.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectRipple.qml new file mode 100755 index 0000000..0b7c48c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectRipple.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "amplitude" + value: 0.5 + } + ListElement { + name: "frequency" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real amplitude: parameters.get(0).value * 0.03 + property real n: parameters.get(1).value * 7 + + property real time: 0 + NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 } + + fragmentShaderFilename: "shaders/ripple.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSepia.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSepia.qml new file mode 100755 index 0000000..446e779 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSepia.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + fragmentShaderFilename: "shaders/sepia.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSharpen.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSharpen.qml new file mode 100755 index 0000000..99ece3c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSharpen.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "sharpness" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real amount: parameters.get(0).value * 18 + + fragmentShaderFilename: "shaders/sharpen.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectShockwave.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectShockwave.qml new file mode 100755 index 0000000..fe91781 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectShockwave.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + id: root + parameters: ListModel { + ListElement { + name: "amplitude" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real granularity: parameters.get(0).value * 20 + property real weight: parameters.get(0).value + + property real centerX + property real centerY + property real time + + SequentialAnimation { + running: true + loops: Animation.Infinite + ScriptAction { + script: { + centerX = Math.random() + centerY = Math.random() + } + } + NumberAnimation { + target: root + property: "time" + from: 0 + to: 1 + duration: 1000 + } + } + + fragmentShaderFilename: "shaders/shockwave.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSobelEdgeDetection1.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSobelEdgeDetection1.qml new file mode 100755 index 0000000..189d5d3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectSobelEdgeDetection1.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "threshold" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real mixLevel: parameters.get(0).value + property real targetSize: 250 - (200 * mixLevel) // TODO: fix ... + property real resS: targetSize + property real resT: targetSize + + fragmentShaderFilename: "shaders/sobeledgedetection1.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectToon.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectToon.qml new file mode 100755 index 0000000..08f1849 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectToon.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "threshold" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real threshold: parameters.get(0).value + property real targetSize: 250 - (200 * threshold) // TODO: fix ... + property real resS: targetSize + property real resT: targetSize + + // TODO + property real magTol: 0.3 + property real quantize: 8.0 + + fragmentShaderFilename: "shaders/toon.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectVignette.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectVignette.qml new file mode 100755 index 0000000..1120161 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectVignette.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + fragmentShaderFilename: "shaders/vignette.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectWarhol.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectWarhol.qml new file mode 100755 index 0000000..e96d052 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectWarhol.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + fragmentShaderFilename: "shaders/warhol.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectWobble.qml b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectWobble.qml new file mode 100755 index 0000000..4cccf48 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Effects/EffectWobble.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + parameters: ListModel { + ListElement { + name: "amplitude" + value: 0.5 + } + } + + // Transform slider values, and bind result to shader uniforms + property real amplitude: parameters.get(0).value * 0.05 + + property real frequency: 20 + property real time: 0 + + NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 } + + fragmentShaderFilename: "shaders/wobble.fsh" +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Logo.qml b/basicsuite/qt5-everywhere/demos/shaders/Logo.qml new file mode 100644 index 0000000..04bcd36 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Logo.qml @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: root + + property int logoSize: Math.min(parent.height, parent.width) / 2 + property int logoSizeDivider: 1 + property int logoState: 1 + property double posX: parent.width / 2 + property double posY: parent.height / 2 + property double rot: 0 + property double dx: 10 + property double dy: 10 + property double drot: 1 + property string explodeColor: "#ff3333" + + function play() { + randomValues(); + animationTimer.restart() + } + + function logoClicked() { + switch(root.logoState) { + case 1: { + parent.createNewLogos(root.posX,root.posY,logoSize,2) + parent.decreaseCounter(); + logo.visible = false; + root.logoState = 2; + root.explodeColor = "#33ff33" + explodeAnimation.restart() + break; + } + default: { + // return true if we must destroy this logo + if (parent.decreaseCounter(root.posX,root.posY) === true) { + logo.visible = false; + root.logoState = 2; + root.dx = 0; + root.dy = 0; + root.drot = 0; + root.explodeColor = "#ff3333" + explodeAnimation.restart() + } + else { // It was last logo, we will keep it + root.logoState = 1 + root.logoSizeDivider = 1 + root.explodeColor = "#3333ff" + explodeAnimation.restart() + } + break; + } + } + + } + + function randomValues() { + root.dx = Math.random()*5 + root.dy = Math.random()*5 + root.drot = Math.floor(Math.random()*10) - 5 + } + + function move() { + var x = root.posX + root.dx; + var y = root.posY + root.dy; + var limit = logoSize / logoState; + + // Check x + if (x + limit >= parent.width) { + x = parent.width - limit; + root.dx = -root.dx; + } + else if (x <= 0) { + x = 0; + root.dx = -root.dx; + } + + // Check y + if (y + limit >= parent.height) { + y = parent.height - limit; + root.dy = -root.dy; + } + else if (y <= 0) { + y = 0; + root.dy = -root.dy; + } + + root.posX = x + root.posY = y + root.rot = root.rot + root.drot + } + + ParticleSystem{ + id: particleSystem; + anchors.fill: logo + + Emitter { + id: emitter + anchors.fill: particleSystem + enabled: false + emitRate: 1000 + lifeSpan: 500 + size: logo.height * .5 + endSize: logo.height * .1 + velocity: AngleDirection { angleVariation: 360; magnitudeVariation: 160 } + } + + ImageParticle { + id: smokeParticle + source: "images/particle-smoke.png" + alpha: 0.3 + alphaVariation: 0.1 + color: root.explodeColor + } + } + + Timer { + id: animationTimer + interval: 20 + running: false + repeat: true + onTriggered: move(); + } + + Image { + id: logo + width: (logoSize / logoSizeDivider) + height: (logoSize / logoSizeDivider) + x: root.posX + y: root.posY + rotation: root.rot + source: "images/qt-logo.png" + + MouseArea { + anchors.fill: parent + onClicked: logoClicked(); + } + } + + SequentialAnimation { + id: explodeAnimation + running: false + ScriptAction { script: emitter.pulse(100); } + PauseAnimation { duration: 600 } + onRunningChanged: { + if (!explodeAnimation.running && root.logoState > 1) + root.destroy(); + } + } + +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/LogoContainer.qml b/basicsuite/qt5-everywhere/demos/shaders/LogoContainer.qml new file mode 100644 index 0000000..57b3505 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/LogoContainer.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: root + anchors.fill: parent + + property int logoCount: 0 + + Image { + id: background + source: "images/wallpaper.png" + anchors.fill: root + } + + function createNewLogo(x,y,logoState) { + logoCount++; + var component = Qt.createComponent("Logo.qml") + if (component.status === Component.Ready) { + var logo = component.createObject(root, {"posX": x, "posY": y, "logoState": logoState, "logoSizeDivider" : logoState, "objectName": "logo"}); + logo.play(); + } + } + + function createNewLogos(x, y, logoSize, logoState) { + var newSize = logoSize / logoState; + var temp = logoSize - newSize; + + createNewLogo(x, y, logoState); + createNewLogo(x+temp, y, logoState); + createNewLogo(x+temp, y+temp, logoState); + createNewLogo(x, y+temp, logoState); + createNewLogo(x+logoSize/2-newSize/2, y+logoSize/2-newSize/2, logoState); + } + + function decreaseCounter() { + if (logoCount > 1) { + logoCount--; + return true; + } + return false; + } + + Component.onCompleted: { + var logoSize = Math.min(root.height, root.width) / 2; + createNewLogo(root.width/2 - logoSize/2, root.height/2 - logoSize/2, 1) + } +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/ParameterPanel.qml b/basicsuite/qt5-everywhere/demos/shaders/ParameterPanel.qml new file mode 100644 index 0000000..33dd5ea --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/ParameterPanel.qml @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + height: view.model.count * sliderHeight + color: "#BB333333" + property color lineColor: "black" + property real spacing: 10 + property real sliderHeight: 50 + property bool isMouseAbove: mouseAboveMonitor.containsMouse + + property ListModel model: ListModel { } + + MouseArea { + id: mouseAboveMonitor + anchors.fill: parent + hoverEnabled: true; + } + + Component { + id: editDelegate + + Item { + id: delegate + width: root.width + height: root.sliderHeight + + Text { + id: text + text: name + color: "white" + anchors { + top: parent.top + bottom: parent.bottom + left: parent.left + leftMargin: root.width * 0.05 + } + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + font.pixelSize: delegate.height * 0.3 + font.capitalization: Font.Capitalize + width: root.width * 0.35 + } + + Slider { + anchors { + verticalCenter: text.verticalCenter + left: text.right + leftMargin: root.width * 0.05 + right: parent.right + rightMargin: root.width * 0.05 + } + value: model.value + onValueChanged: view.model.setProperty(index, "value", value) + } + } + } + + ListView { + id: view + anchors.fill: parent + model: root.model + delegate: editDelegate + interactive: false + } +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/Slider.qml b/basicsuite/qt5-everywhere/demos/shaders/Slider.qml new file mode 100644 index 0000000..2e21010 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/Slider.qml @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: slider + + height: handleBack.height + // value is read/write. + property real value: 0 + property real maximum: 1 + property real minimum: 0 + property int xMax: width - handle.width + onXMaxChanged: updatePos() + onMinimumChanged: updatePos() + onValueChanged: if (!pressed) updatePos() + property bool mutable: true + property alias pressed : backgroundMouse.pressed + + signal valueChangedByHandle(int newValue) + + function updatePos() { + if (maximum > minimum) { + var pos = 0 + (value - minimum) * slider.xMax / (maximum - minimum); + pos = Math.min(pos, width - handle.width - 0); + pos = Math.max(pos, 0); + handle.x = pos; + } else { + handle.x = 0; + } + } + + Rectangle { + id: background + width: slider.width + anchors.verticalCenter: slider.verticalCenter + height: 2 + color: "#666666" + + MouseArea { + id: backgroundMouse + anchors.fill: parent + anchors.topMargin: -24 + anchors.bottomMargin: -24 + enabled: slider.mutable + drag.target: handle + drag.axis: Drag.XAxis + drag.minimumX: 0 + drag.maximumX: slider.xMax + onPressedChanged: { + value = Math.max(minimum, Math.min(maximum, (maximum - minimum) * (mouseX - handle.width/2) / slider.xMax + minimum)); + valueChangedByHandle(value); + updatePos(); + } + onPositionChanged: { + value = Math.max(minimum, Math.min(maximum, (maximum - minimum) * (mouseX - handle.width/2) / slider.xMax + minimum)); + valueChangedByHandle(value); + } + onWheel: { + value = Math.max(minimum, Math.min(maximum, value + (wheel.angleDelta.y > 0 ? 1 : -1) * (10 / slider.xMax) * (slider.maximum - slider.minimum))); + valueChangedByHandle(value); + updatePos(); + } + } + } + + Rectangle { + id: progress + height: 5 + anchors.verticalCenter: background.verticalCenter + anchors.left: background.left + anchors.right: handle.right + anchors.rightMargin: handle.width / 2 + visible: slider.enabled + color: "#98c66c" + } + + Rectangle { + id: handleBack + width: 40 + height: width + radius: width / 2 + color: "#8898c66c" + antialiasing: true + anchors.centerIn: handle + visible: handle.visible + } + + Rectangle { + id: handle + width: 14 + height: width + radius: width / 2 + antialiasing: true + color: "#98c66c" + anchors.verticalCenter: background.verticalCenter + visible: slider.enabled + } +} + diff --git a/basicsuite/qt5-everywhere/demos/shaders/images/particle-smoke.png b/basicsuite/qt5-everywhere/demos/shaders/images/particle-smoke.png Binary files differnew file mode 100644 index 0000000..b27f954 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/images/particle-smoke.png diff --git a/basicsuite/qt5-everywhere/demos/shaders/images/qt-logo.png b/basicsuite/qt5-everywhere/demos/shaders/images/qt-logo.png Binary files differnew file mode 100755 index 0000000..242bb28 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/images/qt-logo.png diff --git a/basicsuite/qt5-everywhere/demos/shaders/images/wallpaper.png b/basicsuite/qt5-everywhere/demos/shaders/images/wallpaper.png Binary files differnew file mode 100644 index 0000000..a499231 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/images/wallpaper.png diff --git a/basicsuite/qt5-everywhere/demos/shaders/import/import.pro b/basicsuite/qt5-everywhere/demos/shaders/import/import.pro new file mode 100644 index 0000000..af51461 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/import/import.pro @@ -0,0 +1,20 @@ +TEMPLATE = lib +CONFIG += plugin + +TARGET = shaderreader + +QT += qml quick + +SOURCES = main.cpp \ + shaderfilereader.cpp \ + +HEADERS = shaderfilereader.h \ + +pluginfiles.files += \ + qmldir \ + +B2QT_DEPLOYPATH = /data/user/qt/qmlplugins/ShaderReader +target.path += $$B2QT_DEPLOYPATH +pluginfiles.path += $$B2QT_DEPLOYPATH + +INSTALLS += target pluginfiles diff --git a/basicsuite/qt5-everywhere/demos/shaders/import/main.cpp b/basicsuite/qt5-everywhere/demos/shaders/import/main.cpp new file mode 100644 index 0000000..fe03f0e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/import/main.cpp @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of the examples of the Qt Enterprise Embedded. +** +** $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 Digia Plc 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 <QtQml/QQmlExtensionPlugin> +#include <QtQml/QtQml> +#include "shaderfilereader.h" + +QT_BEGIN_NAMESPACE + +class SensorExplorerDeclarativeModule : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface" FILE "plugin.json") +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("ShaderReader")); + qmlRegisterType<ShaderFileReader>(uri, 1, 0, "ShaderFileReader"); + } +}; + +QT_END_NAMESPACE + +#include "main.moc" + diff --git a/basicsuite/qt5-everywhere/demos/shaders/import/plugin.json b/basicsuite/qt5-everywhere/demos/shaders/import/plugin.json new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/import/plugin.json diff --git a/basicsuite/qt5-everywhere/demos/shaders/import/qmldir b/basicsuite/qt5-everywhere/demos/shaders/import/qmldir new file mode 100644 index 0000000..0c53031 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/import/qmldir @@ -0,0 +1,2 @@ +module ShaderReader +plugin shaderreader diff --git a/basicsuite/qt5-everywhere/demos/shaders/import/shaderfilereader.cpp b/basicsuite/qt5-everywhere/demos/shaders/import/shaderfilereader.cpp new file mode 100644 index 0000000..629f4b7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/import/shaderfilereader.cpp @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of the examples of the Qt Enterprise Embedded. +** +** $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 Digia Plc 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 "shaderfilereader.h" +#include <QtCore/QFile> +#include <QtCore/QTextStream> +#include <QtCore/QDir> +#include <QtCore/QDebug> + +ShaderFileReader::ShaderFileReader(QObject* parent) + : QObject(parent) +{ + if (qEnvironmentVariableIsEmpty("QT_SHADER_PATH")) + setenv("QT_SHADER_PATH", "/data/user/qt/qt5-everywhere/demos/shaders/",1); + // check if directory contains shader files + QByteArray shaderPath(qgetenv("QT_SHADER_PATH").append("shaders/")); + QDir shaderDir(shaderPath); + if (shaderDir.entryInfoList(QStringList() << "*.fsh").length() < 1) + qWarning() << "ShaderFileReader: can not find shader files in " << shaderPath; +} + +ShaderFileReader::~ShaderFileReader() +{ +} + +void ShaderFileReader::setFragmentShaderFilename(const QString &name) +{ + m_fragmentShaderFilename = name; + Q_EMIT fragmentShaderFilenameChanged(); +} + +void ShaderFileReader::setVertexShaderFilename(const QString &name) +{ + m_vertexShaderFilename = name; + Q_EMIT vertexShaderFilenameChanged(); +} + +QString ShaderFileReader::fragmentShader() const +{ + return readShaderFile(m_fragmentShaderFilename); +} + +QString ShaderFileReader::vertexShader() const +{ + return readShaderFile(m_vertexShaderFilename); +} + +QString ShaderFileReader::readShaderFile(const QString &fileName) const +{ + QString content; + QString path = qgetenv("QT_SHADER_PATH"); + QFile file(path.append(fileName)); + if (file.open(QIODevice::ReadOnly)) { + QTextStream stream(&file); + content = stream.readAll(); + file.close(); + } + return content; +} + diff --git a/basicsuite/qt5-everywhere/demos/shaders/import/shaderfilereader.h b/basicsuite/qt5-everywhere/demos/shaders/import/shaderfilereader.h new file mode 100644 index 0000000..30a68f3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/import/shaderfilereader.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of the examples of the Qt Enterprise Embedded. +** +** $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 Digia Plc 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 SHADERFILEREADER_H +#define SHADERFILEREADER_H + +#include <QtCore/QObject> +#include <QtCore/QString> + +class ShaderFileReader : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString fragmentShaderFilename READ fragmentShaderFilename + WRITE setFragmentShaderFilename NOTIFY fragmentShaderFilenameChanged) + Q_PROPERTY(QString vertexShaderFilename READ vertexShaderFilename + WRITE setVertexShaderFilename NOTIFY vertexShaderFilenameChanged) + + Q_PROPERTY(QString fragmentShader READ fragmentShader) + Q_PROPERTY(QString vertexShader READ vertexShader) + +public: + ShaderFileReader(QObject* parent = 0); + ~ShaderFileReader(); + + void setFragmentShaderFilename(const QString &name); + void setVertexShaderFilename(const QString &name); + QString fragmentShaderFilename() const { return m_fragmentShaderFilename; } + QString vertexShaderFilename() const { return m_vertexShaderFilename; } + + QString fragmentShader() const; + QString vertexShader() const; + +protected: + QString readShaderFile(const QString &fileName) const; + +Q_SIGNALS: + void fragmentShaderFilenameChanged(); + void vertexShaderFilenameChanged(); + +private: + QString m_fragmentShaderFilename; + QString m_vertexShaderFilename; +}; + +Q_DECLARE_METATYPE(ShaderFileReader*) + +#endif // SHADERFILEREADER_H diff --git a/basicsuite/qt5-everywhere/demos/shaders/main.qml b/basicsuite/qt5-everywhere/demos/shaders/main.qml new file mode 100755 index 0000000..c5f5d4c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/main.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: applicationWindow + anchors.fill:parent + color: "black" + property int margin: applicationWindow.height * 0.02 + + Content { + id: content + anchors.fill: parent + } + + Rectangle { + id: fx + anchors.right: applicationWindow.right + anchors.bottom: applicationWindow.bottom + anchors.margins: applicationWindow.margin + width: applicationWindow.width * 0.25 + height: applicationWindow.height * 0.08 + color: "#333333" + border.color: "#777777" + opacity: 0.5 + + Text { + anchors.centerIn: fx + color: "#ffffff" + text: effectSelectionPanel.effectName + font.pixelSize: fx.height * 0.5 + } + + MouseArea { + anchors.fill: parent + onPressed: fx.color = "#555555" + onReleased: fx.color = "#333333" + onClicked: effectSelectionPanel.visible = !effectSelectionPanel.visible; + } + } + + ParameterPanel { + id: parameterPanel + opacity: 0.7 + visible: effectSelectionPanel.visible && model.count !== 0 + width: applicationWindow.width * 0.4 + sliderHeight: applicationWindow.height * 0.15 + anchors { + bottom: effectSelectionPanel.bottom + right: effectSelectionPanel.left + } + } + + EffectSelectionPanel { + id: effectSelectionPanel + visible: false + opacity: 0.7 + anchors { + top: applicationWindow.top + right: applicationWindow.right + margins: applicationWindow.margin + } + width: fx.width + height: applicationWindow.height - fx.height - 2*applicationWindow.margin + itemHeight: fx.height + color: fx.color + + onClicked: { + content.effectSource = effectSource + parameterPanel.model = content.effect.parameters + } + } + + Component.onCompleted: { + content.init() + } +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders.pro b/basicsuite/qt5-everywhere/demos/shaders/shaders.pro new file mode 100644 index 0000000..de580fd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +SUBDIRS += \ + import \ diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/billboard.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/billboard.fsh new file mode 100755 index 0000000..baa9554 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/billboard.fsh @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float grid; +uniform float dividerValue; +uniform float step_x; +uniform float step_y; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + float offx = floor(uv.x / (grid * step_x)); + float offy = floor(uv.y / (grid * step_y)); + vec3 res = texture2D(source, vec2(offx * grid * step_x , offy * grid * step_y)).rgb; + vec2 prc = fract(uv / vec2(grid * step_x, grid * step_y)); + vec2 pw = pow(abs(prc - 0.5), vec2(2.0)); + float rs = pow(0.45, 2.0); + float gr = smoothstep(rs - 0.1, rs + 0.1, pw.x + pw.y); + float y = (res.r + res.g + res.b) / 3.0; + vec3 ra = res / y; + float ls = 0.3; + float lb = ceil(y / ls); + float lf = ls * lb + 0.3; + res = lf * res; + vec3 col = mix(res, vec3(0.1, 0.1, 0.1), gr); + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(col, 1.0); + else + gl_FragColor = qt_Opacity * texture2D(source, uv); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/blackandwhite.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/blackandwhite.fsh new file mode 100755 index 0000000..40756c4 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/blackandwhite.fsh @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float threshold; +uniform float dividerValue; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 orig = texture2D(source, uv); + vec3 col = orig.rgb; + float y = 0.3 *col.r + 0.59 * col.g + 0.11 * col.b; + y = y < threshold ? 0.0 : 1.0; + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(y, y, y, 1.0); + else + gl_FragColor = qt_Opacity * orig; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/emboss.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/emboss.fsh new file mode 100755 index 0000000..bd13a0b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/emboss.fsh @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float dividerValue; +const float step_w = 0.0015625; +const float step_h = 0.0027778; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec3 t1 = texture2D(source, vec2(uv.x - step_w, uv.y - step_h)).rgb; + vec3 t2 = texture2D(source, vec2(uv.x, uv.y - step_h)).rgb; + vec3 t3 = texture2D(source, vec2(uv.x + step_w, uv.y - step_h)).rgb; + vec3 t4 = texture2D(source, vec2(uv.x - step_w, uv.y)).rgb; + vec3 t5 = texture2D(source, uv).rgb; + vec3 t6 = texture2D(source, vec2(uv.x + step_w, uv.y)).rgb; + vec3 t7 = texture2D(source, vec2(uv.x - step_w, uv.y + step_h)).rgb; + vec3 t8 = texture2D(source, vec2(uv.x, uv.y + step_h)).rgb; + vec3 t9 = texture2D(source, vec2(uv.x + step_w, uv.y + step_h)).rgb; + vec3 rr = -4.0 * t1 - 4.0 * t2 - 4.0 * t4 + 12.0 * t5; + float y = (rr.r + rr.g + rr.b) / 3.0; + vec3 col = vec3(y, y, y) + 0.3; + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(col, 1.0); + else + gl_FragColor = qt_Opacity * texture2D(source, uv); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/gaussianblur_h.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/gaussianblur_h.fsh new file mode 100755 index 0000000..96ae8e4 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/gaussianblur_h.fsh @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +uniform float dividerValue; +uniform float blurSize; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 c = vec4(0.0); + if (uv.x < dividerValue) { + c += texture2D(source, uv - vec2(4.0*blurSize, 0.0)) * 0.05; + c += texture2D(source, uv - vec2(3.0*blurSize, 0.0)) * 0.09; + c += texture2D(source, uv - vec2(2.0*blurSize, 0.0)) * 0.12; + c += texture2D(source, uv - vec2(1.0*blurSize, 0.0)) * 0.15; + c += texture2D(source, uv) * 0.18; + c += texture2D(source, uv + vec2(1.0*blurSize, 0.0)) * 0.15; + c += texture2D(source, uv + vec2(2.0*blurSize, 0.0)) * 0.12; + c += texture2D(source, uv + vec2(3.0*blurSize, 0.0)) * 0.09; + c += texture2D(source, uv + vec2(4.0*blurSize, 0.0)) * 0.05; + } else { + c = texture2D(source, qt_TexCoord0); + } + gl_FragColor = qt_Opacity * c; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/gaussianblur_v.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/gaussianblur_v.fsh new file mode 100755 index 0000000..6bc7b8b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/gaussianblur_v.fsh @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +uniform float dividerValue; +uniform float blurSize; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 c = vec4(0.0); + if (uv.x < dividerValue) { + c += texture2D(source, uv - vec2(0.0, 4.0*blurSize)) * 0.05; + c += texture2D(source, uv - vec2(0.0, 3.0*blurSize)) * 0.09; + c += texture2D(source, uv - vec2(0.0, 2.0*blurSize)) * 0.12; + c += texture2D(source, uv - vec2(0.0, 1.0*blurSize)) * 0.15; + c += texture2D(source, uv) * 0.18; + c += texture2D(source, uv + vec2(0.0, 1.0*blurSize)) * 0.15; + c += texture2D(source, uv + vec2(0.0, 2.0*blurSize)) * 0.12; + c += texture2D(source, uv + vec2(0.0, 3.0*blurSize)) * 0.09; + c += texture2D(source, uv + vec2(0.0, 4.0*blurSize)) * 0.05; + } else { + c = texture2D(source, qt_TexCoord0); + } + // First pass we don't apply opacity + gl_FragColor = c; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/glow.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/glow.fsh new file mode 100755 index 0000000..e0adcfd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/glow.fsh @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float dividerValue; +const float step_w = 0.0015625; +const float step_h = 0.0027778; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec3 t1 = texture2D(source, vec2(uv.x - step_w, uv.y - step_h)).rgb; + vec3 t2 = texture2D(source, vec2(uv.x, uv.y - step_h)).rgb; + vec3 t3 = texture2D(source, vec2(uv.x + step_w, uv.y - step_h)).rgb; + vec3 t4 = texture2D(source, vec2(uv.x - step_w, uv.y)).rgb; + vec3 t5 = texture2D(source, uv).rgb; + vec3 t6 = texture2D(source, vec2(uv.x + step_w, uv.y)).rgb; + vec3 t7 = texture2D(source, vec2(uv.x - step_w, uv.y + step_h)).rgb; + vec3 t8 = texture2D(source, vec2(uv.x, uv.y + step_h)).rgb; + vec3 t9 = texture2D(source, vec2(uv.x + step_w, uv.y + step_h)).rgb; + vec3 xx = t1 + 2.0*t2 + t3 - t7 - 2.0*t8 - t9; + vec3 yy = t1 - t3 + 2.0*t4 - 2.0*t6 + t7 - t9; + vec3 rr = sqrt(xx * xx + yy * yy); + vec3 col = rr * 2.0 * t5; + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(col, 1.0); + else + gl_FragColor = qt_Opacity * texture2D(source, uv); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/isolate.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/isolate.fsh new file mode 100755 index 0000000..0f25bfa --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/isolate.fsh @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float targetHue; +uniform float windowWidth; +uniform float dividerValue; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void rgb2hsl(vec3 rgb, out float h, out float s, float l) +{ + float maxval = max(rgb.r, max(rgb.g, rgb.b)); + float minval = min(rgb.r, min(rgb.g, rgb.b)); + float delta = maxval - minval; + l = (minval + maxval) / 2.0; + s = 0.0; + if (l > 0.0 && l < 1.0) + s = delta / (l < 0.5 ? 2.0 * l : 2.0 - 2.0 * l); + h = 0.0; + if (delta > 0.0) + { + if (rgb.r == maxval && rgb.g != maxval) + h += (rgb.g - rgb.b ) / delta; + if (rgb.g == maxval && rgb.b != maxval) + h += 2.0 + (rgb.b - rgb.r) / delta; + if (rgb.b == maxval && rgb.r != maxval) + h += 4.0 + (rgb.r - rgb.g) / delta; + h *= 60.0; + } +} + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec3 col = texture2D(source, uv).rgb; + float h, s, l; + rgb2hsl(col, h, s, l); + float h2 = (h > targetHue) ? h - 360.0 : h + 360.0; + float y = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + vec3 result; + if (uv.x > dividerValue || (abs(h - targetHue) < windowWidth) || (abs(h2 - targetHue) < windowWidth)) + result = col; + else + result = vec3(y, y, y); + gl_FragColor = qt_Opacity * vec4(result, 1.0); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/pixelate.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/pixelate.fsh new file mode 100755 index 0000000..922d79b --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/pixelate.fsh @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://www.geeks3d.com/20101029/shader-library-pixelation-post-processing-effect-glsl/ + +uniform float dividerValue; +uniform float granularity; +uniform float targetWidth; +uniform float targetHeight; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec2 tc = qt_TexCoord0; + if (uv.x < dividerValue && granularity > 0.0) { + float dx = granularity / targetWidth; + float dy = granularity / targetHeight; + tc = vec2(dx*(floor(uv.x/dx) + 0.5), + dy*(floor(uv.y/dy) + 0.5)); + } + gl_FragColor = qt_Opacity * texture2D(source, tc); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/posterize.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/posterize.fsh new file mode 100755 index 0000000..e5c77ce --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/posterize.fsh @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://www.geeks3d.com/20091027/shader-library-posterization-post-processing-effect-glsl/ + +uniform float dividerValue; +uniform float gamma; +uniform float numColors; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 c = vec4(0.0); + if (uv.x < dividerValue) { + vec3 x = texture2D(source, uv).rgb; + x = pow(x, vec3(gamma, gamma, gamma)); + x = x * numColors; + x = floor(x); + x = x / numColors; + x = pow(x, vec3(1.0/gamma)); + c = vec4(x, 1.0); + } else { + c = texture2D(source, uv); + } + gl_FragColor = qt_Opacity * c; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/ripple.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/ripple.fsh new file mode 100755 index 0000000..6d4187c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/ripple.fsh @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://labs.qt.nokia.com/2011/03/22/the-convenient-power-of-qml-scene-graph/ + +uniform float dividerValue; +uniform float targetWidth; +uniform float targetHeight; +uniform float time; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +const float PI = 3.1415926535; +const int ITER = 7; +const float RATE = 0.1; +uniform float amplitude; +uniform float n; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec2 tc = uv; + vec2 p = vec2(-1.0 + 2.0 * gl_FragCoord.x / targetWidth, -(-1.0 + 2.0 * gl_FragCoord.y / targetHeight)); + float diffx = 0.0; + float diffy = 0.0; + vec4 col; + if (uv.x < dividerValue) { + for (int i=0; i<ITER; ++i) { + float theta = float(i) * PI / float(ITER); + vec2 r = vec2(cos(theta) * p.x + sin(theta) * p.y, -1.0 * sin(theta) * p.x + cos(theta) * p.y); + float diff = (sin(2.0 * PI * n * (r.y + time * RATE)) + 1.0) / 2.0; + diffx += diff * sin(theta); + diffy += diff * cos(theta); + } + tc = 0.5*(vec2(1.0,1.0) + p) + amplitude * vec2(diffx, diffy); + } + gl_FragColor = qt_Opacity * texture2D(source, tc); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/selectionpanel.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/selectionpanel.fsh new file mode 100755 index 0000000..89d570e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/selectionpanel.fsh @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/sepia.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/sepia.fsh new file mode 100755 index 0000000..196c517 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/sepia.fsh @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float dividerValue; +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 orig = texture2D(source, uv); + vec3 col = orig.rgb; + float y = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(y + 0.15, y + 0.07, y - 0.12, 1.0); + else + gl_FragColor = qt_Opacity * orig; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/sharpen.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/sharpen.fsh new file mode 100755 index 0000000..3907637 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/sharpen.fsh @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float dividerValue; +uniform float amount; +const float step_w = 0.0015625; +const float step_h = 0.0027778; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +vec3 sharpen(vec3 t1, vec3 t2, vec3 t3, vec3 t4, vec3 t5, vec3 t6, vec3 t7, vec3 t8, vec3 t9) +{ + return -t1 - t2 - t3 - t4 + amount * t5 - t6 - t7 - t8 - t9; +} + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec3 t1 = texture2D(source, vec2(uv.x - step_w, uv.y - step_h)).rgb; + vec3 t2 = texture2D(source, vec2(uv.x, uv.y - step_h)).rgb; + vec3 t3 = texture2D(source, vec2(uv.x + step_w, uv.y - step_h)).rgb; + vec3 t4 = texture2D(source, vec2(uv.x - step_w, uv.y)).rgb; + vec3 t5 = texture2D(source, uv).rgb; + vec3 t6 = texture2D(source, vec2(uv.x + step_w, uv.y)).rgb; + vec3 t7 = texture2D(source, vec2(uv.x - step_w, uv.y + step_h)).rgb; + vec3 t8 = texture2D(source, vec2(uv.x, uv.y + step_h)).rgb; + vec3 t9 = texture2D(source, vec2(uv.x + step_w, uv.y + step_h)).rgb; + vec3 col = sharpen(t1, t2, t3, t4, t5, t6, t7, t8, t9); + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(col, 1.0); + else + gl_FragColor = qt_Opacity * texture2D(source, uv); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/shockwave.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/shockwave.fsh new file mode 100755 index 0000000..64f33c8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/shockwave.fsh @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://www.geeks3d.com/20091116/shader-library-2d-shockwave-post-processing-filter-glsl/ + +uniform float centerX; +uniform float centerY; +uniform float dividerValue; +uniform float granularity; +uniform float time; +uniform float weight; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec2 tc = qt_TexCoord0; + vec2 center = vec2(centerX, centerY); + const vec3 shock = vec3(10.0, 1.5, 0.1); + if (uv.x < dividerValue) { + float distance = distance(uv, center); + if ((distance <= (time + shock.z)) && + (distance >= (time - shock.z))) { + float diff = (distance - time); + float powDiff = 1.0 - pow(abs(diff*shock.x), shock.y*weight); + float diffTime = diff * powDiff; + vec2 diffUV = normalize(uv - center); + tc += (diffUV * diffTime); + } + } + gl_FragColor = qt_Opacity * texture2D(source, tc); +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/sobeledgedetection1.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/sobeledgedetection1.fsh new file mode 100755 index 0000000..96732fa --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/sobeledgedetection1.fsh @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on "Graphics Shaders: Theory and Practice" (http://cgeducation.org/ShadersBook/) + +uniform float dividerValue; +uniform float mixLevel; +uniform float resS; +uniform float resT; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 c = vec4(0.0); + if (uv.x < dividerValue) { + vec2 st = qt_TexCoord0.st; + vec3 irgb = texture2D(source, st).rgb; + vec2 stp0 = vec2(1.0 / resS, 0.0); + vec2 st0p = vec2(0.0 , 1.0 / resT); + vec2 stpp = vec2(1.0 / resS, 1.0 / resT); + vec2 stpm = vec2(1.0 / resS, -1.0 / resT); + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + float i00 = dot(texture2D(source, st).rgb, W); + float im1m1 = dot(texture2D(source, st-stpp).rgb, W); + float ip1p1 = dot(texture2D(source, st+stpp).rgb, W); + float im1p1 = dot(texture2D(source, st-stpm).rgb, W); + float ip1m1 = dot(texture2D(source, st+stpm).rgb, W); + float im10 = dot(texture2D(source, st-stp0).rgb, W); + float ip10 = dot(texture2D(source, st+stp0).rgb, W); + float i0m1 = dot(texture2D(source, st-st0p).rgb, W); + float i0p1 = dot(texture2D(source, st+st0p).rgb, W); + float h = -1.0*im1p1 - 2.0*i0p1 - 1.0*ip1p1 + 1.0*im1m1 + 2.0*i0m1 + 1.0*ip1m1; + float v = -1.0*im1m1 - 2.0*im10 - 1.0*im1p1 + 1.0*ip1m1 + 2.0*ip10 + 1.0*ip1p1; + float mag = 1.0 - length(vec2(h, v)); + vec3 target = vec3(mag, mag, mag); + c = vec4(target, 1.0); + } else { + c = texture2D(source, qt_TexCoord0); + } + gl_FragColor = qt_Opacity * c; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/toon.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/toon.fsh new file mode 100755 index 0000000..2814dfb --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/toon.fsh @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://www.geeks3d.com/20101029/shader-library-pixelation-post-processing-effect-glsl/ + +uniform float dividerValue; +uniform float threshold; +uniform float resS; +uniform float resT; +uniform float magTol; +uniform float quantize; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec4 color = vec4(1.0, 0.0, 0.0, 1.1); + vec2 uv = qt_TexCoord0.xy; + if (uv.x < dividerValue) { + vec2 st = qt_TexCoord0.st; + vec3 rgb = texture2D(source, st).rgb; + vec2 stp0 = vec2(1.0/resS, 0.0); + vec2 st0p = vec2(0.0 , 1.0/resT); + vec2 stpp = vec2(1.0/resS, 1.0/resT); + vec2 stpm = vec2(1.0/resS, -1.0/resT); + float i00 = dot( texture2D(source, st).rgb, vec3(0.2125,0.7154,0.0721)); + float im1m1 = dot( texture2D(source, st-stpp).rgb, vec3(0.2125,0.7154,0.0721)); + float ip1p1 = dot( texture2D(source, st+stpp).rgb, vec3(0.2125,0.7154,0.0721)); + float im1p1 = dot( texture2D(source, st-stpm).rgb, vec3(0.2125,0.7154,0.0721)); + float ip1m1 = dot( texture2D(source, st+stpm).rgb, vec3(0.2125,0.7154,0.0721)); + float im10 = dot( texture2D(source, st-stp0).rgb, vec3(0.2125,0.7154,0.0721)); + float ip10 = dot( texture2D(source, st+stp0).rgb, vec3(0.2125,0.7154,0.0721)); + float i0m1 = dot( texture2D(source, st-st0p).rgb, vec3(0.2125,0.7154,0.0721)); + float i0p1 = dot( texture2D(source, st+st0p).rgb, vec3(0.2125,0.7154,0.0721)); + float h = -1.*im1p1 - 2.*i0p1 - 1.*ip1p1 + 1.*im1m1 + 2.*i0m1 + 1.*ip1m1; + float v = -1.*im1m1 - 2.*im10 - 1.*im1p1 + 1.*ip1m1 + 2.*ip10 + 1.*ip1p1; + float mag = sqrt(h*h + v*v); + if (mag > magTol) { + color = vec4(0.0, 0.0, 0.0, 1.0); + } + else { + rgb.rgb *= quantize; + rgb.rgb += vec3(0.5, 0.5, 0.5); + ivec3 irgb = ivec3(rgb.rgb); + rgb.rgb = vec3(irgb) / quantize; + color = vec4(rgb, 1.0); + } + } else { + color = texture2D(source, uv); + } + gl_FragColor = qt_Opacity * color; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/vignette.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/vignette.fsh new file mode 100755 index 0000000..bd20c8e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/vignette.fsh @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float dividerValue; +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 orig = texture2D(source, uv); + float cr = pow(0.1, 2.0); + float pt = pow(uv.x - 0.5, 2.0) + pow(uv.y - 0.5, 2.0); + float d = pt - cr; + float cf = 1.0; + if (d > 0.0) + cf = 1.0 - 2.0 * d; + vec3 col = cf * orig.rgb; + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(col, 1.0); + else + gl_FragColor = qt_Opacity * orig; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/warhol.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/warhol.fsh new file mode 100755 index 0000000..6852495 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/warhol.fsh @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://kodemongki.blogspot.com/2011/06/kameraku-custom-shader-effects-example.html + +uniform float dividerValue; +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec4 orig = texture2D(source, uv); + vec3 col = orig.rgb; + float y = 0.3 *col.r + 0.59 * col.g + 0.11 * col.b; + y = y < 0.3 ? 0.0 : (y < 0.6 ? 0.5 : 1.0); + if (y == 0.5) + col = vec3(0.8, 0.0, 0.0); + else if (y == 1.0) + col = vec3(0.9, 0.9, 0.0); + else + col = vec3(0.0, 0.0, 0.0); + if (uv.x < dividerValue) + gl_FragColor = qt_Opacity * vec4(col, 1.0); + else + gl_FragColor = qt_Opacity * orig; +} diff --git a/basicsuite/qt5-everywhere/demos/shaders/shaders/wobble.fsh b/basicsuite/qt5-everywhere/demos/shaders/shaders/wobble.fsh new file mode 100755 index 0000000..1670de3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/shaders/shaders/wobble.fsh @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Based on http://labs.qt.nokia.com/2011/03/22/the-convenient-power-of-qml-scene-graph/ + +uniform float amplitude; +uniform float dividerValue; +uniform float frequency; +uniform float time; + +uniform sampler2D source; +uniform lowp float qt_Opacity; +varying vec2 qt_TexCoord0; + +void main() +{ + vec2 uv = qt_TexCoord0.xy; + vec2 tc = qt_TexCoord0; + if (uv.x < dividerValue) { + vec2 p = sin(time + frequency * qt_TexCoord0); + tc += amplitude * vec2(p.y, -p.x); + } + gl_FragColor = qt_Opacity * texture2D(source, tc); +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/AndroidDelegate.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/AndroidDelegate.qml new file mode 100644 index 0000000..e84d6b1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/AndroidDelegate.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + + + + + +import QtQuick 2.1 + +Item { + id: root + width: parent.width + height: app.height*.1 + + property alias text: textitem.text + signal clicked + + Rectangle { + anchors.fill: parent + color: "#11ffffff" + visible: mouse.pressed + } + + Text { + id: textitem + color: "white" + font.pixelSize: root.height*.6 + text: modelData + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: 30 + } + + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 15 + height: 1 + color: "#424246" + } + + Image { + anchors.right: parent.right + anchors.rightMargin: 20 + anchors.verticalCenter: parent.verticalCenter + height: root.height*.8 + width: height + source: "../images/navigation_next_item.png" + } + + MouseArea { + id: mouse + anchors.fill: parent + onClicked: root.clicked() + + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/ButtonPage.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/ButtonPage.qml new file mode 100644 index 0000000..9133158 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/ButtonPage.qml @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + + + + + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + width: parent.width + height: parent.height + anchors {leftMargin: width*.1; rightMargin: width*.1} + + property real progress: 0 + SequentialAnimation on progress { + loops: Animation.Infinite + running: true + NumberAnimation { + from: 0 + to: 1 + duration: 3000 + } + NumberAnimation { + from: 1 + to: 0 + duration: 3000 + } + } + + Column { + spacing: 40 + anchors.centerIn: parent + + Button { + anchors.margins: 20 + text: "Press me" + style: touchStyle + } + + Button { + anchors.margins: 20 + style: touchStyle + text: "Press me too" + } + + Button { + anchors.margins: 20 + style: touchStyle + text: "Dont press me" + onClicked: if (pageStack) pageStack.pop() + } + + } + + Component { + id: touchStyle + ButtonStyle { + panel: Item { + implicitHeight: 50 + implicitWidth: 300 + BorderImage { + anchors.fill: parent + antialiasing: true + border.bottom: 8 + border.top: 8 + border.left: 8 + border.right: 8 + anchors.margins: control.pressed ? -4 : 0 + source: control.pressed ? "../images/button_pressed.png" : "../images/button_default.png" + Text { + text: control.text + anchors.centerIn: parent + color: "white" + font.pixelSize: 23 + renderType: Text.NativeRendering + } + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/CustomAppWindow.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/CustomAppWindow.qml new file mode 100644 index 0000000..afaa951 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/CustomAppWindow.qml @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick.Window 2.1 +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Layouts 1.0 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ApplicationWindow + \since QtQuick.Controls 1.0 + \inqmlmodule QtQuick.Controls 1.0 + \ingroup applicationwindow + \brief Provides a top-level application window. + + ApplicationWindow is a \l Window that adds convenience for positioning items, + such as \l MenuBar, \l ToolBar, and \l StatusBar in a platform independent + manner. + + \code + ApplicationWindow { + id: window + menuBar: MenuBar { + Menu { MenuItem {...} } + Menu { MenuItem {...} } + } + + toolBar: ToolBar { + RowLayout { + anchors.fill: parent + ToolButton {...} + } + } + + TabView { + id: myContent + anchors.fill: parent + ... + } + } + \endcode +*/ + +Rectangle { + id: root + + /*! + \qmlproperty MenuBar ApplicationWindow::menuBar + + This property holds the \l MenuBar. + + By default, this value is not set. + */ + property MenuBar menuBar: null + + /*! + \qmlproperty Item ApplicationWindow::toolBar + + This property holds the toolbar \l Item. + + It can be set to any Item type, but is generally used with \l ToolBar. + + By default, this value is not set. When you set the toolbar item, it will + be anchored automatically into the application window. + */ + property Item toolBar + + /*! + \qmlproperty Item ApplicationWindow::statusBar + + This property holds the status bar \l Item. + + It can be set to any Item type, but is generally used with \l StatusBar. + + By default, this value is not set. When you set the status bar item, it + will be anchored automatically into the application window. + */ + property Item statusBar + + onToolBarChanged: { if (toolBar) { toolBar.parent = toolBarArea } } + + onStatusBarChanged: { if (statusBar) { statusBar.parent = statusBarArea } } + + /*! \internal */ + default property alias data: contentArea.data + + color: syspal.window + + SystemPalette {id: syspal} + + Item { + id: backgroundItem + anchors.fill: parent + + Item { + id: toolBarArea + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + height: childrenRect.height + } + + Item { + id: contentArea + anchors.top: toolBarArea.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: statusBarArea.top + } + + Item { + id: statusBarArea + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + height: childrenRect.height + } + + onVisibleChanged: if (visible && menuBar) menuBar.__parentWindow = root + + states: State { + name: "hasMenuBar" + when: menuBar && !menuBar.__isNative + + ParentChange { + target: menuBar.__contentItem + parent: backgroundItem + } + + PropertyChanges { + target: menuBar.__contentItem + x: 0 + y: 0 + width: backgroundItem.width + } + + AnchorChanges { + target: toolBarArea + anchors.top: menuBar.__contentItem.bottom + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/ProgressBarPage.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/ProgressBarPage.qml new file mode 100644 index 0000000..93adc7a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/ProgressBarPage.qml @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + + + + + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + width: parent.width + height: parent.height + + property real progress: 0 + SequentialAnimation on progress { + loops: Animation.Infinite + running: true + NumberAnimation { + from: 0 + to: 1 + duration: 3000 + } + NumberAnimation { + from: 1 + to: 0 + duration: 3000 + } + } + + Column { + spacing: 40 + anchors.centerIn: parent + + ProgressBar { + anchors.margins: 20 + style: touchStyle + width: 300 + value: progress + } + + ProgressBar { + anchors.margins: 20 + style: touchStyle + width: 300 + value: 1 - progress + } + + ProgressBar { + anchors.margins: 20 + style: touchStyle + value: 1 + width: 300 + } + + } + + Component { + id: touchStyle + ProgressBarStyle { + panel: Rectangle { + implicitHeight: 15 + implicitWidth: 400 + color: "#444" + opacity: 0.8 + Rectangle { + antialiasing: true + radius: 1 + color: "#468bb7" + height: parent.height + width: parent.width * control.value / control.maximumValue + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/SliderPage.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/SliderPage.qml new file mode 100644 index 0000000..4a34037 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/SliderPage.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + id: root + width: parent.width + height: parent.height + + Column { + spacing: 12 + anchors.centerIn: parent + + Slider { + anchors.margins: 20 + width: 280 + style: touchStyle + value: 0 + } + Slider { + anchors.margins: 20 + width: 280 + style: touchStyle + value: 0.5 + } + Slider { + anchors.margins: 20 + width: 280 + style: touchStyle + value: 1.0 + } + } + + Component { + id: touchStyle + SliderStyle { + handle: Rectangle { + width: 30 + height: 30 + radius: height + antialiasing: true + color: Qt.lighter("#468bb7", 1.2) + } + + groove: Item { + implicitHeight: 50 + implicitWidth: root.width + Rectangle { + height: 8 + width: parent.width + anchors.verticalCenter: parent.verticalCenter + color: "#444" + opacity: 0.8 + Rectangle { + antialiasing: true + radius: 1 + color: "#468bb7" + height: parent.height + width: parent.width * control.value / control.maximumValue + } + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/TabBarPage.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/TabBarPage.qml new file mode 100644 index 0000000..7731c33 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/TabBarPage.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + + + + + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + width: parent.width + height: parent.height + + TabView { + anchors.fill: parent + style: touchStyle + Tab { + title: "Buttons" + ButtonPage{ visible: true } + } + Tab { + title: "Sliders" + SliderPage{ visible: true } + } + Tab { + title: "Progress" + ProgressBarPage{ visible: true } + } + } + + Component { + id: touchStyle + TabViewStyle { + tabsAlignment: Qt.AlignVCenter + tabOverlap: 0 + frame: Item { } + tab: Item { + implicitWidth: control.width/control.count + implicitHeight: 50 + BorderImage { + anchors.fill: parent + border.bottom: 8 + border.top: 8 + source: tab.selected ? "../images/tab_selected.png":"../images/tabs_standard.png" + Text { + anchors.centerIn: parent + color: "white" + text: styleData.title + font.pixelSize: 16 + } + Rectangle { + visible: index > 0 + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.margins: 10 + width:1 + color: "#3a3a3a" + } + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/content/TextInputPage.qml b/basicsuite/qt5-everywhere/demos/touchgallery/content/TextInputPage.qml new file mode 100644 index 0000000..0ed71f7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/content/TextInputPage.qml @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + + + + + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + width: parent.width + height: parent.height + + property real progress: 0 + SequentialAnimation on progress { + loops: Animation.Infinite + running: true + NumberAnimation { + from: 0 + to: 1 + duration: 3000 + } + NumberAnimation { + from: 1 + to: 0 + duration: 3000 + } + } + + Column { + spacing: 40 + anchors.centerIn: parent + + TextField { + anchors.margins: 20 + text: "Text input" + style: touchStyle + } + + TextField { + anchors.margins: 20 + text: "Readonly Text input" + style: touchStyle + readOnly: true + } + } + Component { + id: touchStyle + + TextFieldStyle { + textColor: "white" + font.pixelSize: 28 + background: Item { + implicitHeight: 50 + implicitWidth: 300 + BorderImage { + source: "../images/textinput.png" + border.left: 8 + border.right: 8 + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/NOTICE.txt b/basicsuite/qt5-everywhere/demos/touchgallery/images/NOTICE.txt new file mode 100644 index 0000000..93a9afc --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/NOTICE.txt @@ -0,0 +1,2 @@ +Notice some of these images are derived from Google applications resources. They were provided under the following license: +You may use the materials in this directory without restriction to develop your apps and to use in your apps. diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/button_default.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/button_default.png Binary files differnew file mode 100644 index 0000000..6d6cfd9 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/button_default.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/button_pressed.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/button_pressed.png Binary files differnew file mode 100644 index 0000000..ab78b6e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/button_pressed.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/navigation_next_item.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/navigation_next_item.png Binary files differnew file mode 100644 index 0000000..6665c9d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/navigation_next_item.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/navigation_previous_item.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/navigation_previous_item.png Binary files differnew file mode 100644 index 0000000..f8be011 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/navigation_previous_item.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/tab_selected.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/tab_selected.png Binary files differnew file mode 100644 index 0000000..2345f7a --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/tab_selected.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/tabs_standard.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/tabs_standard.png Binary files differnew file mode 100644 index 0000000..7140ab7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/tabs_standard.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/textinput.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/textinput.png Binary files differnew file mode 100644 index 0000000..b0256db --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/textinput.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/images/toolbar.png b/basicsuite/qt5-everywhere/demos/touchgallery/images/toolbar.png Binary files differnew file mode 100644 index 0000000..e9eba4c --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/images/toolbar.png diff --git a/basicsuite/qt5-everywhere/demos/touchgallery/main.qml b/basicsuite/qt5-everywhere/demos/touchgallery/main.qml new file mode 100644 index 0000000..94089cf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/touchgallery/main.qml @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc 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$ +** +****************************************************************************/ + + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import "content" + +CustomAppWindow { + id: app + anchors.fill: parent + color: "black" + + toolBar: BorderImage { + border.bottom: 8 + source: "images/toolbar.png" + width: parent.width + height: app.height*.1 + + Rectangle { + id: backButton + width: opacity ? height : 0 + anchors.left: parent.left + anchors.leftMargin: 20 + opacity: pageStack.depth > 1 ? 1 : 0 + anchors.verticalCenter: parent.verticalCenter + antialiasing: true + height: parent.height* .8 + radius: 4 + color: backmouse.pressed ? "#222" : "transparent" + Behavior on opacity { NumberAnimation{} } + Image { + anchors.verticalCenter: parent.verticalCenter + source: "images/navigation_previous_item.png" + height: parent.height*.8 + width: height + } + MouseArea { + id: backmouse + anchors.fill: parent + anchors.margins: -10 + onClicked: pageStack.pop() + } + } + + Text { + font.pixelSize: app.height*.06 + Behavior on x { NumberAnimation{ easing.type: Easing.OutCubic} } + x: backButton.x + backButton.width + 10 + anchors.verticalCenter: parent.verticalCenter + color: "white" + text: "Widget Gallery" + } +} + + ListModel { + id: pageModel + ListElement { + title: "Buttons" + page: "content/ButtonPage.qml" + } + ListElement { + title: "Sliders" + page: "content/SliderPage.qml" + } + ListElement { + title: "ProgressBar" + page: "content/ProgressBarPage.qml" + } + ListElement { + title: "Tabs" + page: "content/TabBarPage.qml" + } + ListElement { + title: "TextInput" + page: "content/TextInputPage.qml" + } + } + + StackView { + id: pageStack + anchors.fill: parent + + initialItem: Item { + width: parent.width + height: parent.height + ListView { + model: pageModel + anchors.fill: parent + clip: true + delegate: AndroidDelegate { + text: title + onClicked: pageStack.push(Qt.resolvedUrl(page)) + } + } + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/Content.qml b/basicsuite/qt5-everywhere/demos/video/Content.qml new file mode 100644 index 0000000..de25f13 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/Content.qml @@ -0,0 +1,67 @@ + /**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 5.0 + +Rectangle { + id: root + property alias videoPlayer: videoContent + + color: "black" + + ContentVideo { + id: videoContent + anchors.fill: root + visible: mediaSource == "" ? false : true + } + + function openVideo(path) { + stop(); + videoContent.mediaSource = path + } + + function stop() { + if (videoContent.mediaSource !== undefined) { + videoContent.stop(); + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/ContentVideo.qml b/basicsuite/qt5-everywhere/demos/video/ContentVideo.qml new file mode 100644 index 0000000..83c9ab7 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/ContentVideo.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 5.0 + +VideoOutput { + id: videoOutput + source: mediaPlayer + fillMode: VideoOutput.PreserveAspectFit + property alias mediaSource: mediaPlayer.source + property alias mediaPlayer: mediaPlayer + property bool isPlaying: false + + MediaPlayer { + id: mediaPlayer + autoLoad: true + autoPlay: true + + onPlaybackStateChanged: { + if (playbackState === MediaPlayer.PlayingState) + videoOutput.isPlaying = true; + else + videoOutput.isPlaying = false; + } + + Component.onDestruction: { + mediaPlayer.stop() + } + } + function play() { mediaPlayer.play() } + function stop() { mediaPlayer.stop() } +} diff --git a/basicsuite/qt5-everywhere/demos/video/ControlBar.qml b/basicsuite/qt5-everywhere/demos/video/ControlBar.qml new file mode 100644 index 0000000..f013dcf --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/ControlBar.qml @@ -0,0 +1,290 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 5.0 + +Item { + id: controlBar + anchors.fill: parent + + property MediaPlayer mediaPlayer: null + property bool isMouseAbove: false + property int margin: applicationWindow.width * 0.01 + + signal openURL() + + state: "VISIBLE" + + onMediaPlayerChanged: { + if (mediaPlayer === null) + return; + volumeControl.volume = mediaPlayer.volume; + } + + function updateStatusText() + { + var strText = "" + switch (mediaPlayer.status) { + case MediaPlayer.NoMedia: strText = "No Media"; break; + case MediaPlayer.Loading: strText = "Loading..."; break; + case MediaPlayer.Buffering: strText = "Buffering..."; break; + case MediaPlayer.Stalled: strText = "Stalled"; break; + case MediaPlayer.EndOfMedia: strText = "EndOfMedia"; break; + case MediaPlayer.InvalidMedia: strText = "InvalidMedia"; break; + case MediaPlayer.UnknownStatus: strText = "UnknownStatus"; break; + default: strText = ""; break; + } + + statusText.text = strText; + } + + Rectangle { + anchors.right: parent.right + anchors.top: parent.top + width: applicationWindow.height * 0.12 + height: width + color: "#88333333" + + Image { + id: closeImage + source: "images/CloseButton.png" + anchors.centerIn: parent + width: 0.5*parent.height + height: width + opacity: closeMouseArea.pressed ? 0.6 : 1 + smooth: true + } + + MouseArea { + id: closeMouseArea + anchors.fill: parent + onClicked: { + if (mediaPlayer !== null) { + mediaPlayer.stop(); + mediaPlayer.source = ""; + } + + videoSelector.show(); + } + } + } + + Rectangle { + id: bottomBar + height: parent.height * 0.2 + color: "#88333333" + anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.right: parent.right + + property double playBackHeight: height*0.48 + property double seekHeight: height*0.48 + + VolumeControl { + id: volumeControl + anchors.verticalCenter: playbackControl.verticalCenter + anchors.left: bottomBar.left + anchors.leftMargin: bottomBar.margin + height: bottomBar.playBackHeight + width: parent.width * 0.3 + onVolumeChanged: { + if (mediaPlayer !== null) + mediaPlayer.volume = volume + } + + Connections { + target: mediaPlayer + onVolumeChanged: volumeControl.volume = mediaPlayer.volume + } + } + + //Playback Controls + PlaybackControl { + id: playbackControl + anchors.horizontalCenter: bottomBar.horizontalCenter + anchors.top: bottomBar.top + anchors.topMargin: bottomBar.margin + height: bottomBar.playBackHeight + + onPlayButtonPressed: { + if (mediaPlayer === null) + return; + + if (isPlaying) { + mediaPlayer.pause(); + } else { + mediaPlayer.play(); + } + } + } + + Text { + id: statusText + anchors.right: parent.right + anchors.verticalCenter: playbackControl.verticalCenter + anchors.rightMargin: bottomBar.margin + verticalAlignment: Text.AlignVCenter + height: bottomBar.playBackHeight + font.pixelSize: playbackControl.height * 0.5 + color: "white" + } + + //Seek controls + SeekControl { + id: seekControl + anchors.bottom: bottomBar.bottom + anchors.right: bottomBar.right + anchors.left: bottomBar.left + height: bottomBar.seekHeight + anchors.leftMargin: bottomBar.margin + anchors.rightMargin: bottomBar.margin + + enabled: playbackControl.isPlaybackEnabled + duration: mediaPlayer !== null ? mediaPlayer.duration : 0 + + onSeekValueChanged: { + if (mediaPlayer !== null) { + mediaPlayer.seek(newPosition); + position = mediaPlayer.position; + } + } + + Component.onCompleted: { + if (mediaPlayer !== null) + seekable = mediaPlayer.seekable; + } + } + + Connections { + target: mediaPlayer + onPositionChanged: { + if (!seekControl.pressed) seekControl.position = mediaPlayer.position; + } + onStatusChanged: { + if ((mediaPlayer.status == MediaPlayer.Loaded) || (mediaPlayer.status == MediaPlayer.Buffered) || mediaPlayer.status === MediaPlayer.Buffering || mediaPlayer.status === MediaPlayer.EndOfMedia) + playbackControl.isPlaybackEnabled = true; + else + playbackControl.isPlaybackEnabled = false; + updateStatusText(); + } + onErrorChanged: { + updateStatusText(); + } + + onPlaybackStateChanged: { + if (mediaPlayer.playbackState === MediaPlayer.PlayingState) { + playbackControl.isPlaying = true; + applicationWindow.resetTimer(); + } else { + show(); + playbackControl.isPlaying = false; + } + } + + onSeekableChanged: { + seekControl.seekable = mediaPlayer.seekable; + } + } + } + + //Usage: give the value you wish to modify position, + //returns a value between 0 and duration + function normalizeSeek(value) { + var newPosition = mediaPlayer.position + value; + if (newPosition < 0) + newPosition = 0; + else if (newPosition > mediaPlayer.duration) + newPosition = mediaPlayer.duration; + return newPosition; + } + + function hide() { + controlBar.state = "HIDDEN"; + } + + function show() { + controlBar.state = "VISIBLE"; + } + + states: [ + State { + name: "HIDDEN" + PropertyChanges { + target: controlBar + opacity: 0.0 + } + }, + State { + name: "VISIBLE" + PropertyChanges { + target: controlBar + opacity: 0.95 + } + } + ] + + transitions: [ + Transition { + from: "HIDDEN" + to: "VISIBLE" + NumberAnimation { + id: showAnimation + target: controlBar + properties: "opacity" + from: 0.0 + to: 1.0 + duration: 200 + } + }, + Transition { + from: "VISIBLE" + to: "HIDDEN" + NumberAnimation { + id: hideAnimation + target: controlBar + properties: "opacity" + from: 0.95 + to: 0.0 + duration: 200 + } + } + ] +} diff --git a/basicsuite/qt5-everywhere/demos/video/ImageButton.qml b/basicsuite/qt5-everywhere/demos/video/ImageButton.qml new file mode 100644 index 0000000..428f6de --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/ImageButton.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: root + + height: parent.height * 0.8 + width: image.width * image.scale + + property alias enabled: mouseArea.enabled + property alias imageSource: image.source + + property bool checkable: false + property bool checked: false + property alias hover: mouseArea.containsMouse + property alias pressed: mouseArea.pressed + property double imageSize: 0.9*root.height + + opacity: enabled ? 1.0 : 0.3 + signal clicked + + Image { + id: image + anchors.centerIn: parent + scale: root.height / height + visible: true + opacity: pressed ? 0.6 : 1 + smooth: true + } + + MouseArea { + id: mouseArea + hoverEnabled: true + anchors.fill: root + onPositionChanged: applicationWindow.resetTimer() + onClicked: root.clicked(); + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/PlaybackControl.qml b/basicsuite/qt5-everywhere/demos/video/PlaybackControl.qml new file mode 100644 index 0000000..2d7307e --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/PlaybackControl.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Row { + id: root + spacing: controlBar.margin + + property bool isPlaybackEnabled: false + property bool isPlaying: false + + signal playButtonPressed() + + ImageButton { + id: playButton + enabled: isPlaybackEnabled + imageSource: !isPlaying ? "images/PlayButton.png" : "images/PauseButton.png" + anchors.verticalCenter: root.verticalCenter + onClicked: { + playButtonPressed(); + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/ScrollBar.qml b/basicsuite/qt5-everywhere/demos/video/ScrollBar.qml new file mode 100644 index 0000000..8ac0d31 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/ScrollBar.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: scrollBar + + // The properties that define the scrollbar's state. + // position and pageSize are in the range 0.0 - 1.0. They are relative to the + // height of the page, i.e. a pageSize of 0.5 means that you can see 50% + // of the height of the view. + property real position + property real pageSize + + // A light, semi-transparent background + Rectangle { + id: background + anchors.fill: parent + radius: width/2 - 1 + color: "transparent" + } + + Rectangle { + x: scrollBar.position * (scrollBar.width-2) + 1 + y: 1 + width: scrollBar.pageSize * (scrollBar.width-2) + height: parent.height + radius: height/2 - 1 + color: "#22aa22" + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/SeekControl.qml b/basicsuite/qt5-everywhere/demos/video/SeekControl.qml new file mode 100644 index 0000000..2e037e3 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/SeekControl.qml @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: root + + property int position: 0 + property int duration: 0 + property bool seekable: false + property alias pressed : seekSlider.pressed + property bool enabled + + signal seekValueChanged(int newPosition) + + onPositionChanged: { + elapsedText.text = formatTime(position); + seekSlider.value = position; + } + + onDurationChanged: { + remainingText.text = formatTime(duration); + } + + Text { + id: elapsedText + anchors.verticalCenter: seekSlider.verticalCenter + anchors.left: root.left + verticalAlignment: Text.AlignVCenter + height: parent.height + text: "00:00" + font.pixelSize: height * 0.4 + color: "#cccccc" + } + + Slider { + id: seekSlider + anchors.left: elapsedText.right + anchors.right: remainingText.left + anchors.verticalCenter: root.verticalCenter + mutable: root.seekable + enabled: root.enabled + height: parent.height + + minimum: 0.0 + maximum: root.duration !== 0 ? root.duration : 1 + + onValueChangedByHandle: { + seekValueChanged(newValue); + applicationWindow.resetTimer() + } + } + + Text { + id: remainingText + anchors.verticalCenter: seekSlider.verticalCenter + anchors.right: root.right + verticalAlignment: Text.AlignVCenter + height: parent.height + text: "00:00" + font.pixelSize: height * 0.4 + color: "#cccccc" + } + + function formatTime(time) { + time = time / 1000 + var hours = Math.floor(time / 3600); + time = time - hours * 3600; + var minutes = Math.floor(time / 60); + var seconds = Math.floor(time - minutes * 60); + + if (hours > 0) + return formatTimeBlock(hours) + ":" + formatTimeBlock(minutes) + ":" + formatTimeBlock(seconds); + else + return formatTimeBlock(minutes) + ":" + formatTimeBlock(seconds); + + } + + function formatTimeBlock(time) { + if (time === 0) + return "00" + if (time < 10) + return "0" + time; + else + return time.toString(); + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/Slider.qml b/basicsuite/qt5-everywhere/demos/video/Slider.qml new file mode 100644 index 0000000..cc45537 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/Slider.qml @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: slider + + anchors.leftMargin: handleBack.radius + anchors.rightMargin: handleBack.radius + + // value is read/write. + property real value: 0 + property real maximum: 1 + property real minimum: 0 + property int xMax: width - handle.width + onXMaxChanged: updatePos() + onMinimumChanged: updatePos() + onValueChanged: if (!pressed) updatePos() + property bool mutable: true + property alias pressed : backgroundMouse.pressed + + signal valueChangedByHandle(int newValue) + + function updatePos() { + if (maximum > minimum) { + var pos = 0 + (value - minimum) * slider.xMax / (maximum - minimum); + pos = Math.min(pos, width - handle.width - 0); + pos = Math.max(pos, 0); + handle.x = pos; + } else { + handle.x = 0; + } + } + + Rectangle { + id: background + width: slider.width + anchors.verticalCenter: slider.verticalCenter + height: 2 + color: "#666666" + + MouseArea { + id: backgroundMouse + anchors.fill: parent + anchors.topMargin: -24 + anchors.bottomMargin: -24 + enabled: slider.mutable + drag.target: handle + drag.axis: Drag.XAxis + drag.minimumX: 0 + drag.maximumX: slider.xMax + onPressedChanged: { + value = Math.max(minimum, Math.min(maximum, (maximum - minimum) * (mouseX - handle.width/2) / slider.xMax + minimum)); + valueChangedByHandle(value); + updatePos(); + } + onPositionChanged: { + value = Math.max(minimum, Math.min(maximum, (maximum - minimum) * (mouseX - handle.width/2) / slider.xMax + minimum)); + valueChangedByHandle(value); + } + onWheel: { + value = Math.max(minimum, Math.min(maximum, value + (wheel.angleDelta.y > 0 ? 1 : -1) * (10 / slider.xMax) * (slider.maximum - slider.minimum))); + valueChangedByHandle(value); + updatePos(); + } + } + } + + Rectangle { + id: progress + height: 5 + anchors.verticalCenter: background.verticalCenter + anchors.left: background.left + anchors.right: handle.right + anchors.rightMargin: handle.width / 2 + visible: slider.enabled + color: "#98c66c" + } + + Rectangle { + id: handleBack + width: Math.max(10, Math.min(50, slider.height)) + height: width + radius: width / 2 + color: "#8898c66c" + antialiasing: true + anchors.centerIn: handle + visible: handle.visible + } + + Rectangle { + id: handle + width: Math.max(3,handleBack.height / 3) + height: width + radius: width / 2 + antialiasing: true + color: "#98c66c" + anchors.verticalCenter: background.verticalCenter + visible: slider.enabled + } +} + diff --git a/basicsuite/qt5-everywhere/demos/video/VideoDelegate.qml b/basicsuite/qt5-everywhere/demos/video/VideoDelegate.qml new file mode 100644 index 0000000..fedc9f4 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/VideoDelegate.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: delegate + height: grid.cellHeight + width: grid.cellWidth + property int tileMargin: videoSelector.tileMargin + + signal videoSelected(string link) + + Rectangle { + anchors.left: parent.left + anchors.top: parent.top + anchors.topMargin: parent.tileMargin/2 + width: parent.width - tileMargin + height: parent.height - tileMargin + color: videoSelector.tileBackground + + MouseArea { + anchors.fill: parent + onClicked: { + grid.currentIndex = index + delegate.videoSelected(link) + } + } + + states: [ + State { + name: "selected" + when: delegate.GridView.isCurrentItem + } + ] + + + Image { + id: iconImage + source: thumbnail + width: parent.width + height: parent.height + } + + Rectangle{ + width: parent.width + height: titleText.height + tileMargin + anchors.top: titleText.top + anchors.bottom: parent.bottom + color: "Black" + opacity: 0.5 + visible: iconImage.source + + } + + Text { + id: titleText + anchors.left: parent.left + anchors.leftMargin: tileMargin/3 + anchors.bottom: parent.bottom + anchors.bottomMargin: tileMargin/3 + anchors.right: parent.right + anchors.rightMargin: tileMargin/3 + + color: videoSelector.textColor + text: title + width: parent.width; + wrapMode: Text.WordWrap; + smooth: true + font { family: videoSelector.uiFont; pixelSize: videoSelector.tileFontSize } + } + } +} + diff --git a/basicsuite/qt5-everywhere/demos/video/VideoSelector.qml b/basicsuite/qt5-everywhere/demos/video/VideoSelector.qml new file mode 100644 index 0000000..8ce8d83 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/VideoSelector.qml @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.XmlListModel 2.0 + +Item { + id: videoSelector + + property int tileHeight: parseInt(grid.height / 2) + property int tileMargin: tileHeight * 0.1 + property int tileFontSize: tileHeight * 0.08 + property string tileBackground: "#262626" + property string textColor: "white" + property string uiFont: "Segoe UI" + + signal selectVideo(string link) + + state: "VISIBLE" + + onOpacityChanged: { + if (state === "HIDDEN" && opacity <= 0.05) + visible = false; + } + + XmlListModel { + id: videoModel + source: "http://qt-project.org/uploads/videos/qt5_videos.xml" + query: "/videolist/item" + XmlRole { name: "thumbnail"; query: "thumbnail/string()" } + XmlRole { name: "title"; query: "title/string()" } + XmlRole { name: "link"; query: "link/string()" } + + onStatusChanged: { + if (status == XmlListModel.Ready) { + networkErrorBox.opacity = 0.0 + } else if (status == XmlListModel.Error) { + networkErrorBox.opacity = 1.0 + } + } + } + + Item { + id: networkErrorBox + opacity: 0 + anchors.fill: parent + + Text { + anchors.centerIn: parent + text: qsTr("Sorry! No network connection") + font.family: uiFont; + font.pixelSize: tileFontSize * 2; + color: textColor + smooth: true + } + } + + // Grid view + GridView { + id: grid + anchors.fill: parent + flow: GridView.TopToBottom + cellHeight: tileHeight + cellWidth: parseInt(tileHeight * 1.5) + cacheBuffer: cellWidth + clip: false + focus: true + model: videoModel + delegate: VideoDelegate { onVideoSelected: videoSelector.selectVideo(link); } + + // Only show the scrollbars when the view is moving. + states: State { + when: grid.movingHorizontally + PropertyChanges { target: horizontalScrollBar; opacity: 1 } + } + + transitions: Transition { + NumberAnimation { properties: "opacity"; duration: 400 } + } + } + + ScrollBar { + id: horizontalScrollBar + width: parent.width; height: 6 + anchors.bottom: parent.bottom + anchors.left: parent.left + opacity: 0 + position: grid.visibleArea.xPosition + pageSize: grid.visibleArea.widthRatio + } + + function hide() { + videoSelector.state = "HIDDEN"; + } + + function show() { + videoSelector.visible = true; + videoSelector.state = "VISIBLE"; + } + + states: [ + State { + name: "HIDDEN" + PropertyChanges { + target: videoSelector + opacity: 0.0 + } + }, + State { + name: "VISIBLE" + PropertyChanges { + target: videoSelector + opacity: 0.95 + } + } + ] + + transitions: [ + Transition { + from: "HIDDEN" + to: "VISIBLE" + NumberAnimation { + id: showAnimation + target: videoSelector + properties: "opacity" + from: 0.0 + to: 1.0 + duration: 200 + } + }, + Transition { + from: "VISIBLE" + to: "HIDDEN" + NumberAnimation { + id: hideAnimation + target: videoSelector + properties: "opacity" + from: 0.95 + to: 0.0 + duration: 200 + } + } + ] +} diff --git a/basicsuite/qt5-everywhere/demos/video/VolumeControl.qml b/basicsuite/qt5-everywhere/demos/video/VolumeControl.qml new file mode 100644 index 0000000..4754951 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/VolumeControl.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc 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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: root + property alias volume: volumeSlider.value + + //Volume Controls + ImageButton { + id: volumeDown + height: parent.height * 0.5 + imageSource: "images/VolumeDown.png" + anchors.verticalCenter: root.verticalCenter + anchors.left: root.left + onClicked: { + root.volume = 0.0; + } + } + Slider { + id: volumeSlider + anchors.left: volumeDown.right + anchors.right: volumeUp.left + height: root.height + maximum: 1.0 + minimum: 0.0 + anchors.verticalCenter: root.verticalCenter + anchors.verticalCenterOffset: 1 + } + + ImageButton { + id: volumeUp + height: parent.height * 0.5 + imageSource: "images/VolumeUp.png" + anchors.verticalCenter: root.verticalCenter + anchors.verticalCenterOffset: 1 + anchors.right: root.right + onClicked: { + root.volume = 1.0 + } + } +} diff --git a/basicsuite/qt5-everywhere/demos/video/images/CloseButton.png b/basicsuite/qt5-everywhere/demos/video/images/CloseButton.png Binary files differnew file mode 100644 index 0000000..24407fe --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/CloseButton.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/PauseButton.png b/basicsuite/qt5-everywhere/demos/video/images/PauseButton.png Binary files differnew file mode 100644 index 0000000..b58ceb4 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/PauseButton.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/PlayButton.png b/basicsuite/qt5-everywhere/demos/video/images/PlayButton.png Binary files differnew file mode 100644 index 0000000..247fe32 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/PlayButton.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/RateButtonForward.png b/basicsuite/qt5-everywhere/demos/video/images/RateButtonForward.png Binary files differnew file mode 100644 index 0000000..ebfca0d --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/RateButtonForward.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/RateButtonReverse.png b/basicsuite/qt5-everywhere/demos/video/images/RateButtonReverse.png Binary files differnew file mode 100644 index 0000000..1837bfd --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/RateButtonReverse.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/StopButton.png b/basicsuite/qt5-everywhere/demos/video/images/StopButton.png Binary files differnew file mode 100644 index 0000000..76bcbc8 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/StopButton.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/VolumeDown.png b/basicsuite/qt5-everywhere/demos/video/images/VolumeDown.png Binary files differnew file mode 100644 index 0000000..38b1013 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/VolumeDown.png diff --git a/basicsuite/qt5-everywhere/demos/video/images/VolumeUp.png b/basicsuite/qt5-everywhere/demos/video/images/VolumeUp.png Binary files differnew file mode 100644 index 0000000..cffe961 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/images/VolumeUp.png diff --git a/basicsuite/qt5-everywhere/demos/video/main.qml b/basicsuite/qt5-everywhere/demos/video/main.qml new file mode 100644 index 0000000..5987843 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/main.qml @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 5.0 + +Rectangle { + id: applicationWindow + focus: true + color: "black" + anchors.fill:parent + + MouseArea { + id: mouseActivityMonitor + anchors.fill: parent + + hoverEnabled: true + onClicked: { + if (controlBar.state === "VISIBLE") { + controlBar.hide(); + } else { + controlBar.show(); + controlBarTimer.restart(); + } + } + } + + signal resetTimer + onResetTimer: { + controlBar.show(); + controlBarTimer.restart(); + } + + Content { + id: content + anchors.fill: parent + } + + VideoSelector { + id: videoSelector + anchors.fill: parent + anchors.margins: applicationWindow.width * 0.02 + visible: true + onSelectVideo: { + videoSelector.hide() + content.openVideo(link) + content.videoPlayer.play() + } + onVisibleChanged: { + if (visible) + controlBar.hide() + else + controlBar.show() + } + } + + Timer { + id: controlBarTimer + interval: 4000 + running: false + + onTriggered: hideToolBars(); + } + + ControlBar { + id: controlBar + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: applicationWindow.bottom + mediaPlayer: content.videoPlayer.mediaPlayer + } + + Component.onCompleted: { + controlBar.hide() + } + + property real volumeBeforeMuted: 1.0 + + Keys.onPressed: { + applicationWindow.resetTimer(); + if (event.key === Qt.Key_Up || event.key === Qt.Key_VolumeUp) { + content.videoPlayer.mediaPlayer.volume = Math.min(1, content.videoPlayer.mediaPlayer.volume + 0.1); + return; + } else if (event.key === Qt.Key_Down || event.key === Qt.Key_VolumeDown) { + if (event.modifiers & Qt.ControlModifier) { + if (content.videoPlayer.mediaPlayer.volume) { + volumeBeforeMuted = content.videoPlayer.mediaPlayer.volume; + content.videoPlayer.mediaPlayer.volume = 0 + } else { + content.videoPlayer.mediaPlayer.volume = volumeBeforeMuted; + } + } else { + content.videoPlayer.mediaPlayer.volume = Math.max(0, content.videoPlayer.mediaPlayer.volume - 0.1); + } + return; + } + + // What's next should be handled only if there's a loaded media + if (content.videoPlayer.mediaPlayer.status !== MediaPlayer.Loaded + && content.videoPlayer.mediaPlayer.status !== MediaPlayer.Buffered) + return; + + if (event.key === Qt.Key_Space) { + if (content.videoPlayer.mediaPlayer.playbackState === MediaPlayer.PlayingState) + content.videoPlayer.mediaPlayer.pause() + else if (content.videoPlayer.mediaPlayer.playbackState === MediaPlayer.PausedState + || content.videoPlayer.mediaPlayer.playbackState === MediaPlayer.StoppedState) + content.videoPlayer.mediaPlayer.play() + } else if (event.key === Qt.Key_Left) { + content.videoPlayer.mediaPlayer.seek(Math.max(0, content.videoPlayer.mediaPlayer.position - 30000)); + return; + } else if (event.key === Qt.Key_Right) { + content.videoPlayer.mediaPlayer.seek(Math.min(content.videoPlayer.mediaPlayer.duration, content.videoPlayer.mediaPlayer.position + 30000)); + return; + } + } + + function hideToolBars() { + if (!controlBar.isMouseAbove && content.videoPlayer.isPlaying) + controlBar.hide(); + } + +} diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_video_jens.png b/basicsuite/qt5-everywhere/demos/video/qt5_video_jens.png Binary files differnew file mode 100644 index 0000000..84f3bce --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_video_jens.png diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_video_kenneth.png b/basicsuite/qt5-everywhere/demos/video/qt5_video_kenneth.png Binary files differnew file mode 100644 index 0000000..eecb297 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_video_kenneth.png diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_video_lars.png b/basicsuite/qt5-everywhere/demos/video/qt5_video_lars.png Binary files differnew file mode 100644 index 0000000..51e0701 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_video_lars.png diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_video_samuel.png b/basicsuite/qt5-everywhere/demos/video/qt5_video_samuel.png Binary files differnew file mode 100644 index 0000000..1ed97c1 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_video_samuel.png diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_video_simon.png b/basicsuite/qt5-everywhere/demos/video/qt5_video_simon.png Binary files differnew file mode 100644 index 0000000..583c564 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_video_simon.png diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_video_thiago.png b/basicsuite/qt5-everywhere/demos/video/qt5_video_thiago.png Binary files differnew file mode 100644 index 0000000..abf8522 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_video_thiago.png diff --git a/basicsuite/qt5-everywhere/demos/video/qt5_videos.xml b/basicsuite/qt5-everywhere/demos/video/qt5_videos.xml new file mode 100644 index 0000000..420e476 --- /dev/null +++ b/basicsuite/qt5-everywhere/demos/video/qt5_videos.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?>
+<videolist>
+ <item>
+ <title>Lars Knoll: The Making of Qt 5</title>
+ <thumbnail>qt5_video_lars.png</thumbnail>
+ <link>http://download.qt-project.org/learning/videos/Lars_Knoll_The_Making_of_Qt_5.mp4</link>
+ </item>
+ <item>
+ <title>Qt 5: Jens Bache-Wiig on Qt 5 and Qt Quick</title>
+ <thumbnail>qt5_video_jens.png</thumbnail>
+ <link>http://download.qt-project.org/learning/videos/Qt5_Jens_Bache-Wiig_on_Qt5_Qt_Quick.mp4</link>
+ </item>
+ <item>
+ <title>Qt 5: Simon Hausmann on Qt WebKit</title>
+ <thumbnail>qt5_video_simon.png</thumbnail>
+ <link>http://download.qt-project.org/learning/videos/Qt_5_Simon_Hausmann_on_Qt_WebKit.mp4</link>
+ </item>
+ <item>
+ <title>Qt 5: Qt Developer Kenneth Christiansen on Qt WebKit</title>
+ <thumbnail>qt5_video_kenneth.png</thumbnail>
+ <link>http://download.qt-project.org/learning/videos/Qt5_Kenneth_Christiansen_on_Qt_WebKit.mp4</link>
+ </item>
+ <item>
+ <title>Qt 5: Thiago Macieira on Qt Core</title>
+ <thumbnail>qt5_video_thiago.png</thumbnail>
+ <link>http://download.qt-project.org/learning/videos/Qt5_Thiago_Macieira_on_Qt_Core.mp4</link>
+ </item>
+ <item>
+ <title>Qt 5: Samuel Rodal on Qt GUI, Qt Quick and Qt Open GL</title>
+ <thumbnail>qt5_video_samuel.png</thumbnail>
+ <link>http://download.qt-project.org/learning/videos/Qt5_Samuel_Rodal_on_Qt_GUI_OpenGL.mp4</link>
+ </item>
+</videolist>
|