Qt Reference Documentation

- Qt 4.8
- ALL VERSIONS

- A
- A
- A
- Print

# samegame.qml Example File

demos/declarative/samegame/qml/samegame/samegame.qml

     /****************************************************************************
     **
     ** Copyright (C) 2015 The Qt Company Ltd.
     ** Contact: http://www.qt.io/licensing/
     **
     ** This file is part of the QtDeclarative 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 The Qt Company. For licensing terms
     ** and conditions see http://www.qt.io/terms-conditions. For further
     ** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free
     ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
     ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
     ** following information to ensure the GNU Lesser General Public License
     ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
     ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
     **
     ** As a special exception, The Qt Company gives you certain additional
     ** rights. These rights are described in The Qt Company 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 1.1
     import "SamegameCore"
     import "SamegameCore/samegame.js" as Logic

     Rectangle {
         id: screen
         width: 490; height: 720
         property bool inAnotherDemo: false //Samegame often is just plonked straight into other demos

         SystemPalette { id: activePalette }

         Item {
             width: parent.width
             anchors { top: parent.top; bottom: toolBar.top }

             Image {
                 id: background
                 anchors.fill: parent
                 source: "SamegameCore/pics/background.png"
                 fillMode: Image.PreserveAspectCrop
             }

             Item {
                 id: gameCanvas
                 property int score: 0
                 property int blockSize: 40

                 z: 20; anchors.centerIn: parent
                 width: parent.width - (parent.width % blockSize);
                 height: parent.height - (parent.height % blockSize);

                 MouseArea {
                     anchors.fill: parent; onClicked: Logic.handleClick(mouse.x,mouse.y);
                 }
             }
         }

         Dialog { id: dialog; anchors.centerIn: parent; z: 21 }

         Dialog {
             id: nameInputDialog

             property int initialWidth: 0
             property alias name: nameInputText.text

             anchors.centerIn: parent
             z: 22;

             Behavior on width {
                 NumberAnimation {}
                 enabled: nameInputDialog.initialWidth != 0
             }

             onClosed: {
                 if (nameInputText.text != "")
                     Logic.saveHighScore(nameInputText.text);
             }
             Text {
                 id: dialogText
                 anchors { left: nameInputDialog.left; leftMargin: 20; verticalCenter: parent.verticalCenter }
                 text: "You won! Please enter your name: "
             }
             MouseArea {
                 anchors.fill: parent
                 onClicked: {
                     if (nameInputText.text == "")
                         nameInputText.openSoftwareInputPanel();
                     else
                         nameInputDialog.forceClose();
                 }
             }

             TextInput {
                 id: nameInputText
                 anchors { verticalCenter: parent.verticalCenter; left: dialogText.right }
                 focus: visible
                 autoScroll: false
                 maximumLength: 24
                 onTextChanged: {
                     var newWidth = nameInputText.width + dialogText.width + 40;
                     if ( (newWidth > nameInputDialog.width && newWidth < screen.width)
                             || (nameInputDialog.width > nameInputDialog.initialWidth) )
                         nameInputDialog.width = newWidth;
                 }
                 onAccepted: {
                     nameInputDialog.forceClose();
                 }
             }
         }

         Rectangle {
             id: toolBar
             width: parent.width; height: 58
             color: activePalette.window
             anchors.bottom: screen.bottom

             Button {
                 id: newGameButton
                 anchors { left: parent.left; leftMargin: 3; verticalCenter: parent.verticalCenter }
                 text: "New Game"
                 onClicked: Logic.startNewGame()
             }

             Button {
                 visible: !inAnotherDemo
                 text: "Quit"
                 anchors { left: newGameButton.right; leftMargin: 3; verticalCenter: parent.verticalCenter }
                 onClicked: Qt.quit();
             }

             Text {
                 id: score
                 anchors { right: parent.right; rightMargin: 3; verticalCenter: parent.verticalCenter }
                 text: "Score: " + gameCanvas.score
                 font.bold: true
                 font.pixelSize: 24
                 color: activePalette.windowText
             }
         }
     }