123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- /*
- * Copyright (c) 2011 Nokia Corporation.
- */
- import Qt 4.7
- import "SamegameCore"
- import "SamegameCore/samegame.js" as Logic
- Rectangle {
- id: screen
- function initialize() {
- Logic.startNewGame()
- }
- anchors.fill: parent
- SystemPalette { id: activePalette }
- Item {
- width: parent.width
- anchors { top: toolBar.bottom; bottom: parent.bottom }
- 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
- horizontalCenterOffset: -10 // To allow the score show beside the dialog
- }
- z: 21
- onClicked: forceClose()
- }
- MouseArea {
- id: nameInputDialogExitMouseArea
- anchors.fill: parent
- enabled: nameInputDialog.opacity == 1
- onClicked: nameInputDialog.acceptText()
- Dialog {
- id: nameInputDialog
- property int initialWidth: 0
- function acceptText() {
- if (nameInputText.text != "")
- Logic.saveHighScore(nameInputText.text);
- nameInputText.closeSoftwareInputPanel();
- nameInputDialog.forceClose();
- }
- function rejectText() {
- nameInputText.closeSoftwareInputPanel();
- nameInputDialog.forceClose();
- }
- function updateWidth() {
- var newWidth = nameInputText.width + dialogText.width + 40;
- if ( (newWidth > nameInputDialog.width && newWidth < screen.width)
- || (nameInputDialog.width > nameInputDialog.initialWidth) )
- nameInputDialog.width = newWidth;
- }
- anchors.centerIn: parent
- anchors.verticalCenterOffset: -40
- height: dialogText.height + okButton.height + 65
- z: 22;
- onClicked: {
- nameInputText.focus = true;
- nameInputText.openSoftwareInputPanel();
- }
- Behavior on width {
- NumberAnimation {}
- enabled: nameInputDialog.initialWidth != 0
- }
- Text {
- id: dialogText
- anchors {
- top: parent.top; topMargin: 20
- left: nameInputDialog.left; leftMargin: 20
- }
- text: "You won! Please enter your name: "
- color: "white"
- }
- Rectangle {
- anchors.fill: nameInputText
- opacity: 0.3
- color: "gray"
- }
- TextInput {
- id: nameInputText
- anchors {
- top: dialogText.top
- left: dialogText.right
- }
- focus: nameInputDialog.opacity == 1 ? true : false
- maximumLength: 20
- color: "white"
- onTextChanged: nameInputDialog.updateWidth()
- onAccepted: nameInputDialog.acceptText()
- }
- Row {
- anchors {
- top: nameInputText.bottom; topMargin: 20
- horizontalCenter: parent.horizontalCenter
- }
- spacing: 20
- Button {
- id: okButton
- height: 20
- text: " OK "
- onClicked: {
- nameInputDialog.acceptText()
- }
- }
- Button {
- id: cancelButton
- height: 20
- text: " Cancel "
- onClicked: nameInputDialog.rejectText()
- }
- }
- }
- }
- Rectangle {
- id: toolBar
- width: parent.width; height: 60
- color: activePalette.window
- anchors.top: screen.top
- Button {
- id: newGameButton
- anchors { left: parent.left; leftMargin: 3; verticalCenter: parent.verticalCenter }
- text: "New Game"
- onClicked: Logic.startNewGame()
- }
- Text {
- id: score
- anchors { right: parent.right; rightMargin: 80; verticalCenter: parent.verticalCenter }
- text: "Score: " + gameCanvas.score
- font.bold: true
- color: activePalette.windowText
- }
- }
- }
|