diff options
Diffstat (limited to 'chicken-wranglers/src/qml/StartView.qml')
-rw-r--r-- | chicken-wranglers/src/qml/StartView.qml | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/chicken-wranglers/src/qml/StartView.qml b/chicken-wranglers/src/qml/StartView.qml new file mode 100644 index 0000000..fd2905d --- /dev/null +++ b/chicken-wranglers/src/qml/StartView.qml @@ -0,0 +1,246 @@ +/**************************************************************************** +** +** This file is a part of QtChickenWranglers. +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).* +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** 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 Nokia Corporation 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." +** +****************************************************************************/ + + +import Qt 4.7 +import game.types 1.0 + +import "client.js" as Client +import "host.js" as Host +import "widgets" + +Screen { + id: screen + + signal hostSelected + signal clientSelected + signal clientDiscoveryCanceled + + function showStartServerDialog() { + startServerDialog.show() + } + + function hideStartServerDialog() { + startServerDialog.hide() + } + + function showStartClientDialog() { + if (game.connectivity == "bluetooth") { + connectivityDialog.model = connectivityListModel + connectivityDialog.show() + } else { + startClientDialog.show() + } + } + + function hideStartClientDialog() { + if (game.connectivity == "bluetooth") { + gameClient.scanCanceled() + connectivityDialog.hide() + } else + startClientDialog.hide() + } + + function showErrorDialog(msg) { + errorDialog.text = msg + errorDialog.show() + } + + function hideErrorDialog() { + errorDialog.hide() + } + + onHostSelected: Host.start() + onClientSelected: Client.start() + + Image { + id: background + + smooth: true + anchors.fill: parent + + source: { + if (game.environment() == Global.Symbian) + "qrc:/images/general/symbian/bg_640x360.png" + else if (game.environment() == Global.Maemo) + "qrc:/images/general/bg_800x480.png" + else + "qrc:/images/general/bg_1280x768.png" + } + } + + FeatherFall { + id: featherFall + number: { + if (game.environment() == Global.Symbian) + 2 + else if (game.environment() == Global.Maemo) + 3 + else + 5 + } + fallWidth:{ + if (game.environment() == Global.Symbian) + 640 + else + 800 + } + fallHeight:{ + if (game.environment() == Global.Symbian) + 360 + else + 768 + } + + anchors.fill: parent + } + + Item { + anchors { + centerIn: parent + horizontalCenterOffset: 90 + verticalCenterOffset: 120 + margins: 100 + } + + Button { + id: hostGameButton + + anchors { + right: parent.right + bottom: parent.bottom + } + + text: "Host game" + width: 200 + onClicked: hostSelected() + } + + Button { + id: joinGameButton + + anchors { + left: parent.left + leftMargin: 10 + bottom: parent.bottom + } + + text: "Join game" + width: 200 + onClicked: clientSelected() + } + } + + ImageButton { + anchors { + top: parent.top + left: parent.left + margins: 15 + } + + name: "close" + onClicked: Qt.quit() + } + + ToggleButton { + anchors { + top: parent.top + right: parent.right + margins: 15 + } + } + + MessageDialog { + id: startClientDialog + + text: "Searching for server" + buttonText: "Cancel" + opacity: 0 + + Loading { + anchors.horizontalCenter: startClientDialog.box.horizontalCenter + anchors.bottom: startClientDialog.box.bottom + anchors.bottomMargin: 100 + } + + onButtonClicked: clientDiscoveryCanceled() + } + + ConnectivityDialog { + id: connectivityDialog + + opacity: 0 + onCancel: { + connectivityDialog.hide() + gameClient.scanCanceled() + } + } + + MessageDialog { + id: startServerDialog + + text: "Creating server" + opacity: 0 + + Loading { + anchors.horizontalCenter: startServerDialog.box.horizontalCenter + anchors.bottom: startServerDialog.box.bottom + anchors.bottomMargin: 100 + } + } + + MessageDialog { + id: errorDialog + + text: "error" + buttonText: "Close" + opacity: 0 + + onButtonClicked: hideErrorDialog() + } + + onOpacityChanged: { + if (opacity == 1) + featherFall.start() + else if (opacity == 0) + featherFall.stop() + } +} |