Warning, /games/kreversi/src/qml/Table.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2013 Denis Kuplyakov <dener.kup@gmail.com>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.3
0008 import "globals.js" as Globals
0009
0010 /**
0011 * Table
0012 *
0013 * Represents table with board
0014 */
0015
0016 Item {
0017 id: tableContainer
0018
0019 /**
0020 * Is board showing labels or not
0021 */
0022 property bool isBoardShowingLabels: false
0023 /**
0024 * Chips image's ID prefix at SVG theme file to use.
0025 */
0026 property string chipsImagePrefix: "chip_bw"
0027 /**
0028 * Duration of chip's turning animation
0029 */
0030 property int chipsAnimationTime: 25 * 12
0031 /**
0032 * Emitted when user clicks (row, column) cell
0033 * @param row row index of cell (starting from 0)
0034 * @param column column index of cell (starting from 0)
0035 */
0036 signal cellClicked(int row, int column)
0037 /**
0038 * Enables/disables legal marker at (row, column) cell
0039 * @param row row index of cell (starting from 0)
0040 * @param column column index of cell (starting from 0)
0041 * @param value @c true show legal marker
0042 * @c false hide legal marker
0043 */
0044 function setLegal(row, column, value) {
0045 board.setLegal(row, column, value);
0046 }
0047 /**
0048 * Turn chip to White/Black at (row, column) cell
0049 * @param row row index of cell (starting from 0)
0050 * @param column column index of cell (starting from 0)
0051 * @param value @c "Black" turn chip to black
0052 * @c "White turn chip to white
0053 * @c "" (empty string) hide chip
0054 */
0055 function setChipState(row, column, value) {
0056 board.setChipState(row, column, value);
0057 }
0058 /**
0059 * Enables/disables hint at (row, column) cell
0060 * @param row row index of cell (starting from 0)
0061 * @param column column index of cell (starting from 0)
0062 * @param value @c true show hint
0063 * @c false hide hint
0064 */
0065 function setHint(row, col, show) {
0066 board.setHint(row, col, show);
0067 }
0068 /**
0069 * Enables/disables last move marker at (row, column) cell
0070 * @param row row index of cell (starting from 0)
0071 * @param column column index of cell (starting from 0)
0072 * @param value @c true show last move marker
0073 * @c false hide last move marker
0074 */
0075 function setLastMove(row, column, value) {
0076 board.setLastMove(row, column, value)
0077 }
0078 /**
0079 * Sets time to wait before starting animation
0080 * @param row row index of cell (starting from 0)
0081 * @param column column index of cell (starting from 0)
0082 * @param value time to wait
0083 */
0084 function setPreAnimationTime(row, column, value) {
0085 board.setPreAnimationTime(row, column, value);
0086 }
0087 /**
0088 * Shows popup with specified text
0089 * @param text Text to show
0090 */
0091 function showPopup(text) {
0092 popup.show(text, "SHOWING");
0093 }
0094
0095 CanvasItem {
0096 id: table_background
0097 anchors.fill: parent
0098 spriteKey: "background"
0099 }
0100
0101 CanvasItem {
0102 id: board_image
0103 width: Math.min(parent.width, parent.height)
0104 height: Math.min(parent.width, parent.height)
0105 anchors.horizontalCenter: parent.horizontalCenter
0106 anchors.verticalCenter: parent.verticalCenter
0107 spriteKey: "board"
0108 }
0109
0110 Board {
0111 id: board
0112 width: Math.min(parent.width, parent.height)
0113 height: Math.min(parent.width, parent.height)
0114 anchors.horizontalCenter: parent.horizontalCenter
0115 anchors.verticalCenter: parent.verticalCenter
0116
0117 isShowingLabels: parent.isBoardShowingLabels
0118 chipsImagePrefix: parent.chipsImagePrefix
0119 chipsAnimationTime: parent.chipsAnimationTime
0120
0121 onCellClicked: (row, column) => tableContainer.cellClicked(row, column)
0122 }
0123
0124 Popup {
0125 id: popup
0126
0127 anchors.bottom: undefined
0128 anchors.top: parent.bottom
0129 anchors.left: parent.left
0130 anchors.leftMargin: 5
0131 anchors.bottomMargin: 5
0132
0133 opacity: 0.9
0134 isReplacing: true
0135
0136 states: [
0137 State {
0138 name: "SHOWING"
0139
0140 AnchorChanges {
0141 target: popup
0142 anchors.bottom: popup.parent.bottom
0143 anchors.top: undefined
0144 }
0145 }
0146 ]
0147
0148 transitions: [
0149 Transition {
0150 from: ""
0151 to: "SHOWING"
0152 reversible: true
0153
0154 AnchorAnimation {
0155
0156 duration: 300
0157 }
0158 }
0159 ]
0160 }
0161 }