[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kmines/viranch/qtquick] src/qml: Implement flagged and questioned states which react to right-click
From:       Viranch Mehta <viranch.mehta () gmail ! com>
Date:       2013-03-28 11:59:42
Message-ID: 20130328115942.D1A71A60C5 () git ! kde ! org
[Download RAW message or body]

Git commit 7ebc74d1747d3fe4dfc5bdda83a6edc4203ece9c by Viranch Mehta.
Committed on 06/08/2012 at 21:59.
Pushed by viranch into branch 'viranch/qtquick'.

Implement flagged and questioned states which react to right-clicks

M  +25   -4    src/qml/CellItem.qml
M  +1    -1    src/qml/logic.js

http://commits.kde.org/kmines/7ebc74d1747d3fe4dfc5bdda83a6edc4203ece9c

diff --git a/src/qml/CellItem.qml b/src/qml/CellItem.qml
index be79e9f..b461ea8 100644
--- a/src/qml/CellItem.qml
+++ b/src/qml/CellItem.qml
@@ -20,28 +20,49 @@ import org.kde.games.core 0.1 as KgCore
 
 KgCore.CanvasItem {
     id: cell
-    spriteKey: revealed ? "cell_down" : "cell_up"
+    spriteKey: pressed || revealed ? "cell_down" : "cell_up"
 
     property bool hasMine: false
     property int digit: 0
 
+    property bool pressed: false
     property bool revealed: false
+    property bool flagged: cellState == 1
+    property bool questioned: cellState == 2
+    property int cellState: 0
 
     signal clicked
 
     MouseArea {
         anchors.fill: parent
-        enabled: spriteKey=="cell_up" || spriteKey=="cell_down"
+        acceptedButtons: Qt.LeftButton | Qt.RightButton
+        enabled: !revealed
         onPressed: {
-            revealed = true;
+            if (mouse.button == Qt.LeftButton) {
+                cell.pressed = true;
+            }
         }
         onReleased: {
-            cell.clicked();
+            cell.pressed = false;
+            if (mouse.button == Qt.LeftButton) {
+                if (cellState>0) return;
+                revealed = true;
+                cell.clicked();
+            } else {
+                if (revealed) return;
+                cellState = (cellState+1)%3;
+            }
         }
     }
 
     KgCore.CanvasItem {
         anchors.fill: parent
+        spriteKey: ["", "flag", "question"][cellState]
+        visible: cellState>0
+    }
+
+    KgCore.CanvasItem {
+        anchors.fill: parent
         visible: parent.hasMine && revealed
         spriteKey: "mine"
     }
diff --git a/src/qml/logic.js b/src/qml/logic.js
index 4830a01..ef284f2 100644
--- a/src/qml/logic.js
+++ b/src/qml/logic.js
@@ -20,7 +20,7 @@ function revealEmptyCells(row, column) {
     for (var i=0; i<list.length; i++) {
         // first is row, second is col
         item = field.cells.itemAt(list[i]);
-        if (item.revealed /*|| item.flagged || item.questioned*/)
+        if (item.revealed || item.flagged || item.questioned)
             continue;
         if (item.digit == 0) {
             item.revealed = true;

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic