summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-05-26 01:24:03 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-05-26 01:24:03 (GMT)
commit7120119af835c139b8808e7dcdeec3eb11b0b36d (patch)
tree4cc9386a61de54817ff5413876183beb8f826443
parentb14536650ace48c962e632ab287c347659091381 (diff)
parent3d34201d34ba26530025d5ff88fa6e498ae6f800 (diff)
downloadQt-7120119af835c139b8808e7dcdeec3eb11b0b36d.zip
Qt-7120119af835c139b8808e7dcdeec3eb11b0b36d.tar.gz
Qt-7120119af835c139b8808e7dcdeec3eb11b0b36d.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: Mention TextInput/Edit::selectByMouse property in QmlChanges. Add inherits Item to TextEdit and TextInput docs. Clean up and don't allow clicks on already filled places Clean up project files for c++ examples
-rw-r--r--examples/declarative/cppextensions/imageprovider/imageprovider.pro15
-rw-r--r--examples/declarative/cppextensions/plugins/plugins.pro16
-rw-r--r--examples/declarative/cppextensions/qwidgets/qwidgets.pro12
-rw-r--r--examples/declarative/toys/tic-tac-toe/content/Button.qml34
-rw-r--r--examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js144
-rw-r--r--examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml109
-rw-r--r--examples/declarative/tutorials/extending/chapter5-plugins/chapter5-plugins.pro8
-rw-r--r--src/declarative/QmlChanges.txt1
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp5
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp5
10 files changed, 179 insertions, 170 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/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 76a6a3b..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,75 +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
+ 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 }
+ }
+ }
}
}
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
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<QObject*> 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 e34bb3d..a154d53 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:
@@ -781,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 2e7715f..1ac1b4e 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.
@@ -1120,7 +1121,7 @@ QString QDeclarativeTextInput::displayText() const
}
/*!
- \qmlproperty string TextInput::selectByMouse
+ \qmlproperty bool TextInput::selectByMouse
Defaults to false.