From kde-commits Thu Mar 28 11:59:43 2013 From: Viranch Mehta Date: Thu, 28 Mar 2013 11:59:43 +0000 To: kde-commits Subject: [kmines/viranch/qtquick] src/qml: Implement revealing all neighbours on double clicking a digit cell Message-Id: <20130328115943.46447A611A () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=136447241701794 Git commit 63f0af246616ce4e38e2faaefe1bb6c1c3736eeb by Viranch Mehta. Committed on 13/08/2012 at 17:21. Pushed by viranch into branch 'viranch/qtquick'. Implement revealing all neighbours on double clicking a digit cell The neighbouring cells are revealed only if there are same number of flagged neighbours as the digit being double clicked M +8 -4 src/qml/CellItem.qml M +6 -0 src/qml/MineField.qml M +17 -0 src/qml/logic.js M +1 -0 src/qml/main.qml http://commits.kde.org/kmines/63f0af246616ce4e38e2faaefe1bb6c1c3736eeb diff --git a/src/qml/CellItem.qml b/src/qml/CellItem.qml index 57635f6..33dd028 100644 --- a/src/qml/CellItem.qml +++ b/src/qml/CellItem.qml @@ -36,14 +36,15 @@ KgCore.CanvasItem { property bool error: !hasMine && flagged = signal clicked + signal doubleClicked = MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton | Qt.RightButton - enabled: !revealed && border=3D=3D"" + enabled: (!revealed || digit>0) && border=3D=3D"" onPressed: { if (canvas.game_over) return; - if (mouse.button =3D=3D Qt.LeftButton && cellState=3D=3D0) { + if (mouse.button =3D=3D Qt.LeftButton && !flagged && !question= ed) { cell.pressed =3D true; } } @@ -51,8 +52,7 @@ KgCore.CanvasItem { if (canvas.game_over) return; cell.pressed =3D false; if (mouse.button =3D=3D Qt.LeftButton) { - if (cellState>0) return; - revealed =3D true; + if (flagged || questioned) return; cell.clicked(); } else if (!revealed) { if (flagged && !canvas.useQuestionMarks) @@ -61,6 +61,10 @@ KgCore.CanvasItem { cellState =3D (cellState+1)%3; } } + onDoubleClicked: { + if (digit=3D=3D0 || flagged || questioned) return; + cell.doubleClicked(); + } } = KgCore.CanvasItem { diff --git a/src/qml/MineField.qml b/src/qml/MineField.qml index bfb52c4..74e7efe 100644 --- a/src/qml/MineField.qml +++ b/src/qml/MineField.qml @@ -25,6 +25,7 @@ Item { height: Math.min(parent.width*grid.rows/grid.columns, Math.floor(paren= t.height/grid.rows)*grid.rows) = signal cellClicked(int index) + signal cellDoubleClicked(int index) = property int rows property int columns @@ -60,6 +61,11 @@ Item { var column =3D index%grid.columns; container.cellClicked((row-1)*container.columns + (col= umn-1)); } + onDoubleClicked: { + var row =3D Math.floor(index/grid.columns); + var column =3D index%grid.columns; + container.cellDoubleClicked((row-1)*container.columns = + (column-1)); + } onFlaggedChanged: { if (flagged) flaggedMines++; else flaggedMines--; diff --git a/src/qml/logic.js b/src/qml/logic.js index 9dbd816..53de6d1 100644 --- a/src/qml/logic.js +++ b/src/qml/logic.js @@ -8,6 +8,22 @@ function reset() { canvas.game_over =3D false; } = +function revealNeighbours(index) { + var item =3D field.itemAtIndex(index); + var list =3D adjacentCells(index); + var flaggedNeighbours =3D 0; + for (var i=3D0; i