From 941b44c2e36eeafe1acd1be5fd1cb27151db99d2 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 24 May 2010 13:40:11 +1000 Subject: Clean up project files for c++ examples --- .../cppextensions/imageprovider/imageprovider.pro | 15 +++++++-------- examples/declarative/cppextensions/plugins/plugins.pro | 16 +++++++--------- examples/declarative/cppextensions/qwidgets/qwidgets.pro | 12 +++++------- .../extending/chapter5-plugins/chapter5-plugins.pro | 8 ++++---- 4 files changed, 23 insertions(+), 28 deletions(-) diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider.pro b/examples/declarative/cppextensions/imageprovider/imageprovider.pro index 945a301..462f7d9d 100644 --- a/examples/declarative/cppextensions/imageprovider/imageprovider.pro +++ b/examples/declarative/cppextensions/imageprovider/imageprovider.pro @@ -1,12 +1,10 @@ TEMPLATE = lib -TARGET = imageprovider -QT += declarative CONFIG += qt plugin +QT += declarative -TARGET = $$qtLibraryTarget($$TARGET) DESTDIR = ImageProviderCore +TARGET = imageprovider -# Input SOURCES += imageprovider.cpp sources.files = $$SOURCES imageprovider.qml imageprovider.pro @@ -18,8 +16,9 @@ ImageProviderCore_sources.files = \ ImageProviderCore/qmldir ImageProviderCore_sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore -symbian:{ - TARGET.EPOCALLOWDLLDATA=1 -} - INSTALLS = sources ImageProviderCore_sources target + +symbian { + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCALLOWDLLDATA = 1 +} diff --git a/examples/declarative/cppextensions/plugins/plugins.pro b/examples/declarative/cppextensions/plugins/plugins.pro index b501ae3..d37ff40 100644 --- a/examples/declarative/cppextensions/plugins/plugins.pro +++ b/examples/declarative/cppextensions/plugins/plugins.pro @@ -1,9 +1,10 @@ TEMPLATE = lib -DESTDIR = com/nokia/TimeExample -TARGET = qtimeexampleqmlplugin CONFIG += qt plugin QT += declarative +DESTDIR = com/nokia/TimeExample +TARGET = qtimeexampleqmlplugin + SOURCES += plugin.cpp qdeclarativesources.files += \ @@ -18,14 +19,11 @@ qdeclarativesources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/noki sources.files += plugins.pro plugin.cpp plugins.qml README sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins - target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample -symbian:{ - TARGET.EPOCALLOWDLLDATA=1 -} - - INSTALLS += qdeclarativesources sources target -symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +symbian { + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCALLOWDLLDATA = 1 +} diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/cppextensions/qwidgets/qwidgets.pro index 37f313d..c5f8bcf 100644 --- a/examples/declarative/cppextensions/qwidgets/qwidgets.pro +++ b/examples/declarative/cppextensions/qwidgets/qwidgets.pro @@ -1,21 +1,19 @@ TEMPLATE = lib -DESTDIR = QWidgets -TARGET = qwidgetsplugin CONFIG += qt plugin QT += declarative +DESTDIR = QWidgets +TARGET = qwidgetsplugin + SOURCES += qwidgets.cpp sources.files += qwidgets.pro qwidgets.cpp qwidgets.qml - sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins - target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins INSTALLS += sources target -symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) - -symbian:{ +symbian { + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) TARGET.EPOCALLOWDLLDATA = 1 } diff --git a/examples/declarative/tutorials/extending/chapter5-plugins/chapter5-plugins.pro b/examples/declarative/tutorials/extending/chapter5-plugins/chapter5-plugins.pro index a8fb565..483da8f 100644 --- a/examples/declarative/tutorials/extending/chapter5-plugins/chapter5-plugins.pro +++ b/examples/declarative/tutorials/extending/chapter5-plugins/chapter5-plugins.pro @@ -2,6 +2,10 @@ TEMPLATE = lib CONFIG += qt plugin QT += declarative +DESTDIR = lib +OBJECTS_DIR = tmp +MOC_DIR = tmp + HEADERS += musician.h \ instrument.h \ musicplugin.h @@ -10,10 +14,6 @@ SOURCES += musician.cpp \ instrument.cpp \ musicplugin.cpp -DESTDIR = lib -OBJECTS_DIR = tmp -MOC_DIR = tmp - symbian { include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) TARGET.EPOCALLOWDLLDATA = 1 -- cgit v0.12 From 96f47aeec086b2d35b859194e42721dbc2d2db6a Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 24 May 2010 15:23:10 +1000 Subject: Clean up and don't allow clicks on already filled places --- .../toys/tic-tac-toe/content/Button.qml | 34 ++--- .../toys/tic-tac-toe/content/tic-tac-toe.js | 144 +++++++++++---------- .../declarative/toys/tic-tac-toe/tic-tac-toe.qml | 110 ++++++++-------- 3 files changed, 149 insertions(+), 139 deletions(-) diff --git a/examples/declarative/toys/tic-tac-toe/content/Button.qml b/examples/declarative/toys/tic-tac-toe/content/Button.qml index 9b2dc8e..d0f387f 100644 --- a/examples/declarative/toys/tic-tac-toe/content/Button.qml +++ b/examples/declarative/toys/tic-tac-toe/content/Button.qml @@ -43,35 +43,37 @@ import Qt 4.7 Rectangle { id: container - property string text: "Button" - property bool down: false - property string mainCol: "lightgray" - property string darkCol: "darkgray" - property string lightCol: "white" + property string text + property bool pressed: false + + signal clicked width: buttonLabel.width + 20; height: buttonLabel.height + 6 - border { width: 1; color: Qt.darker(mainCol) } - radius: 8; - color: mainCol + border { width: 1; color: Qt.darker(container.color) } + radius: 8 + color: "lightgray" smooth: true gradient: Gradient { GradientStop { - id: topGrad; position: 0.0 - color: if (container.down) { darkCol } else { lightCol } + position: 0.0 + color: container.pressed ? "darkgray" : "white" + } + GradientStop { + position: 1.0 + color: container.color } - GradientStop { position: 1.0; color: mainCol } } - signal clicked - - MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() } + MouseArea { + anchors.fill: parent + onClicked: container.clicked() + } Text { id: buttonLabel - anchors.centerIn: container - text: container.text; + text: container.text font.pixelSize: 14 } } diff --git a/examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js b/examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js index f8d6d9f..5a166b7 100644 --- a/examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js +++ b/examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js @@ -1,145 +1,149 @@ function winner(board) { for (var i=0; i<3; ++i) { - if (board.children[i].state!="" - && board.children[i].state==board.children[i+3].state - && board.children[i].state==board.children[i+6].state) + if (board.children[i].state != "" + && board.children[i].state == board.children[i+3].state + && board.children[i].state == board.children[i+6].state) return true - if (board.children[i*3].state!="" - && board.children[i*3].state==board.children[i*3+1].state - && board.children[i*3].state==board.children[i*3+2].state) + if (board.children[i*3].state != "" + && board.children[i*3].state == board.children[i*3+1].state + && board.children[i*3].state == board.children[i*3+2].state) return true } - if (board.children[0].state!="" - && board.children[0].state==board.children[4].state!="" - && board.children[0].state==board.children[8].state!="") + if (board.children[0].state != "" + && board.children[0].state == board.children[4].state != "" + && board.children[0].state == board.children[8].state != "") return true - if (board.children[2].state!="" - && board.children[2].state==board.children[4].state!="" - && board.children[2].state==board.children[6].state!="") + if (board.children[2].state != "" + && board.children[2].state == board.children[4].state != "" + && board.children[2].state == board.children[6].state != "") return true return false } -function restart() +function restartGame() { - // No moves left - start again + game.running = true + for (var i=0; i<9; ++i) board.children[i].state = "" } -function makeMove(pos,player) +function makeMove(pos, player) { board.children[pos].state = player if (winner(board)) { - win(player + " wins") + gameFinished(player + " wins") return true } else { return false } } +function canPlayAtPos(pos) +{ + return board.children[pos].state == "" +} + function computerTurn() { var r = Math.random(); - if(r < game.difficulty){ + if (r < game.difficulty) smartAI(); - }else{ - randAI(); - } + else + randomAI(); } function smartAI() { - function boardCopy(a){ + function boardCopy(a) { var ret = new Object; ret.children = new Array(9); - for(var i = 0; i<9; i++){ + for (var i = 0; i<9; i++) { ret.children[i] = new Object; ret.children[i].state = a.children[i].state; } return ret; } - for(var i=0; i<9; i++){ + + for (var i=0; i<9; i++) { var simpleBoard = boardCopy(board); - if (board.children[i].state == "") { + if (canPlayAtPos(i)) { simpleBoard.children[i].state = "O"; - if(winner(simpleBoard)){ - makeMove(i,"O") + if (winner(simpleBoard)) { + makeMove(i, "O") return } } } - for(var i=0; i<9; i++){ + for (var i=0; i<9; i++) { var simpleBoard = boardCopy(board); - if (board.children[i].state == "") { + if (canPlayAtPos(i)) { simpleBoard.children[i].state = "X"; - if(winner(simpleBoard)){ - makeMove(i,"O") + if (winner(simpleBoard)) { + makeMove(i, "O") return } } } - function thwart(a,b,c){//If they are at a, try b or c + + function thwart(a,b,c) { //If they are at a, try b or c if (board.children[a].state == "X") { - if (board.children[b].state == "") { - makeMove(b,"O") + if (canPlayAtPos(b)) { + makeMove(b, "O") return true - }else if (board.children[c].state == "") { - makeMove(c,"O") + } else if (canPlayAtPos(c)) { + makeMove(c, "O") return true } } return false; } - if(thwart(4,0,2)) return; - if(thwart(0,4,3)) return; - if(thwart(2,4,1)) return; - if(thwart(6,4,7)) return; - if(thwart(8,4,5)) return; - if(thwart(1,4,2)) return; - if(thwart(3,4,0)) return; - if(thwart(5,4,8)) return; - if(thwart(7,4,6)) return; - for(var i =0; i<9; i++){//Backup - if (board.children[i].state == "") { - makeMove(i,"O") + + if (thwart(4,0,2)) return; + if (thwart(0,4,3)) return; + if (thwart(2,4,1)) return; + if (thwart(6,4,7)) return; + if (thwart(8,4,5)) return; + if (thwart(1,4,2)) return; + if (thwart(3,4,0)) return; + if (thwart(5,4,8)) return; + if (thwart(7,4,6)) return; + + for (var i =0; i<9; i++) { + if (canPlayAtPos(i)) { + makeMove(i, "O") return } } - restart(); + restartGame(); } -function randAI() +function randomAI() { - var open = 0; - for (var i=0; i<9; ++i) - if (board.children[i].state == "") { - open += 1; - } - if(open == 0){ - restart(); - return; + var unfilledPosns = new Array(); + + for (var i=0; i<9; ++i) { + if (canPlayAtPos(i)) + unfilledPosns.push(i); + } + + if (unfilledPosns.length == 0) { + restartGame(); + } else { + var choice = unfilledPosns[Math.floor(Math.random() * unfilledPosns.length)]; + makeMove(choice, "O"); } - var openA = new Array(open);//JS doesn't have lists I can append to (i think) - var acc = 0; - for (var i=0; i<9; ++i) - if (board.children[i].state == "") { - openA[acc] = i; - acc += 1; - } - var choice = openA[Math.floor(Math.random() * open)]; - makeMove(choice, "O"); } -function win(s) +function gameFinished(message) { - msg.text = s - msg.opacity = 1 - endtimer.running = true + messageDisplay.text = message + messageDisplay.visible = true + game.running = false } diff --git a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml index 707add7..34c3130 100644 --- a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml +++ b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml @@ -42,76 +42,80 @@ import Qt 4.7 import "content" import "content/tic-tac-toe.js" as Logic -Item { +Rectangle { id: game - property bool show: false + property bool running: true property real difficulty: 1.0 //chance it will actually think - width: 440 - height: 480 - anchors.fill: parent + width: display.width; height: display.height + 10 Image { - id: boardimage - anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.horizontalCenter } + id: boardImage source: "content/pics/board.png" } - Grid { - id: board - anchors.fill: boardimage - columns: 3 - - Repeater { - model: 9 - TicTac { - width: board.width/3 - height: board.height/3 - onClicked: { - if (!endtimer.running) { - if (!Logic.makeMove(index,"X")) - Logic.computerTurn() - } - } - } - } + Text { + id: messageDisplay + anchors.centerIn: parent + color: "blue" + style: Text.Outline; styleColor: "white" + font.pixelSize: 50; font.bold: true + visible: false Timer { - id: endtimer - interval: 1600 - onTriggered: { msg.opacity = 0; Logic.restart() } + running: messageDisplay.visible + onTriggered: { + messageDisplay.visible = false; + Logic.restartGame(); + } } } - Row { - spacing: 4 - anchors { top: board.bottom; horizontalCenter: board.horizontalCenter } + Column { + id: display - Button { - text: "Hard" - onClicked: game.difficulty = 1.0; - down: game.difficulty == 1.0 - } - Button { - text: "Moderate" - onClicked: game.difficulty = 0.8; - down: game.difficulty == 0.8 - } - Button { - text: "Easy" - onClicked: game.difficulty = 0.2; - down: game.difficulty == 0.2 + Grid { + id: board + width: boardImage.width; height: boardImage.height + columns: 3 + + Repeater { + model: 9 + + TicTac { + width: board.width/3 + height: board.height/3 + + onClicked: { + if (game.running && Logic.canPlayAtPos(index)) { + if (!Logic.makeMove(index, "X")) + Logic.computerTurn(); + } + } + } + } } - } - Text { - id: msg + Row { + spacing: 4 + anchors.horizontalCenter: parent.horizontalCenter - anchors.centerIn: parent - opacity: 0 - color: "blue" - style: Text.Outline; styleColor: "white" - font.pixelSize: 50; font.bold: true + Button { + text: "Hard" + pressed: game.difficulty == 1.0 + onClicked: { game.difficulty = 1.0 } + } + Button { + text: "Moderate" + pressed: game.difficulty == 0.8 + onClicked: { game.difficulty = 0.8 } + } + Button { + text: "Easy" + pressed: game.difficulty == 0.2 + onClicked: { game.difficulty = 0.2 } + } + } } } -- cgit v0.12 From 3501614b3797272dcbd683adcca4fdacc5b319e9 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 26 May 2010 09:19:10 +1000 Subject: Add inherits Item to TextEdit and TextInput docs. Task-number: QTBUG-10969 --- src/declarative/graphicsitems/qdeclarativetextedit.cpp | 3 ++- src/declarative/graphicsitems/qdeclarativetextinput.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index e34bb3d..f41cdd0 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -61,8 +61,9 @@ QT_BEGIN_NAMESPACE /*! \qmlclass TextEdit QDeclarativeTextEdit - \since 4.7 + \since 4.7 \brief The TextEdit item allows you to add editable formatted text to a scene. + \inherits Item It can display both plain and rich text. For example: diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index 2e7715f..b624c5b 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -54,8 +54,9 @@ QT_BEGIN_NAMESPACE /*! \qmlclass TextInput QDeclarativeTextInput - \since 4.7 + \since 4.7 \brief The TextInput item allows you to add an editable line of text to a scene. + \inherits Item TextInput can only display a single line of text, and can only display plain text. However it can provide addition input constraints on the text. -- cgit v0.12 From 291dce4ceba88a6cada0415524e3466621ac1612 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 26 May 2010 09:24:07 +1000 Subject: Mention TextInput/Edit::selectByMouse property in QmlChanges. --- src/declarative/QmlChanges.txt | 1 + src/declarative/graphicsitems/qdeclarativetextedit.cpp | 2 +- src/declarative/graphicsitems/qdeclarativetextinput.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 25c2417..3eed8d6 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -15,6 +15,7 @@ QList models no longer provide properties in model object. The properties are now updated when the object changes. An object's property "foo" may now be accessed as "foo", modelData.foo" or model.modelData.foo" component.createObject has gained a mandatory "parent" argument +TextEdit and TextInput now have a "selectByMouse" property that defaults to false. C++ API ------- diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index f41cdd0..a154d53 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -782,7 +782,7 @@ void QDeclarativeTextEdit::componentComplete() } /*! - \qmlproperty string TextEdit::selectByMouse + \qmlproperty bool TextEdit::selectByMouse Defaults to false. diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index b624c5b..1ac1b4e 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -1121,7 +1121,7 @@ QString QDeclarativeTextInput::displayText() const } /*! - \qmlproperty string TextInput::selectByMouse + \qmlproperty bool TextInput::selectByMouse Defaults to false. -- cgit v0.12