Warning, /games/kreversi/src/qml/Chip.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 * Chip
0012 *
0013 * Represents chip on cell.
0014 * Set state to:
0015 * "Black" to show black chip
0016 * "White" to show white chip
0017 * "" (empty string) to hide chip
0018 */
0019
0020 Item {
0021 id: chipContainer
0022
0023 /**
0024 * Total frames in animation
0025 */
0026 property int framesCount: 12
0027 /**
0028 * Current chip's frame
0029 */
0030 property int currentFrame: 1
0031 /**
0032 * Chips image's ID prefix at SVG theme file to use.
0033 * Should already contain '_' at end of it.
0034 */
0035 property string imagePrefix: "chip_bw_"
0036 /**
0037 * Duration of chip's turning animation
0038 */
0039 property int animationTime: 25 * 12
0040 /**
0041 * How long to wait before start of animation
0042 */
0043 property int preAnimationTime: 0
0044
0045 CanvasItem {
0046 id: chipImage
0047 anchors.fill: parent
0048 visible: false
0049 spriteKey: imagePrefix + currentFrame
0050 }
0051
0052 MouseArea {
0053 id: mouseArea
0054 anchors.fill: parent
0055 onClicked: chipContainer.clicked()
0056 }
0057
0058 Timer {
0059 id: blinkingTimer
0060 interval: 500
0061 running: false
0062 repeat: true
0063 onTriggered: chipImage.visible = !chipImage.visible
0064 }
0065
0066 states: [
0067 State {
0068 name: "Black"
0069
0070 PropertyChanges {
0071 target: chipImage
0072 visible: true
0073 }
0074
0075 PropertyChanges {
0076 target: chipContainer
0077 currentFrame: 1
0078 }
0079
0080 PropertyChanges {
0081 target: blinkingTimer
0082 running: false
0083 }
0084 },
0085
0086 State {
0087 name: "Black_blinking"
0088
0089 PropertyChanges {
0090 target: chipImage
0091 visible: true
0092 }
0093
0094 PropertyChanges {
0095 target: chipContainer
0096 currentFrame: 1
0097 }
0098
0099 PropertyChanges {
0100 target: blinkingTimer
0101 running: true
0102 }
0103 },
0104
0105 State {
0106 name: "White"
0107
0108 PropertyChanges {
0109 target: chipImage
0110 visible: true
0111 }
0112
0113 PropertyChanges {
0114 target: chipContainer
0115 currentFrame: framesCount
0116 }
0117
0118 PropertyChanges {
0119 target: blinkingTimer
0120 running: false
0121 }
0122 },
0123
0124 State {
0125 name: "White_blinking"
0126
0127 PropertyChanges {
0128 target: chipImage
0129 visible: true
0130 }
0131
0132 PropertyChanges {
0133 target: chipContainer
0134 currentFrame: framesCount
0135 }
0136
0137 PropertyChanges {
0138 target: blinkingTimer
0139 running: true
0140 }
0141 }
0142 ]
0143
0144 Behavior on currentFrame {
0145 SequentialAnimation {
0146 PauseAnimation {
0147 duration: preAnimationTime
0148 }
0149
0150 NumberAnimation {
0151 duration: animationTime
0152 easing.type: Easing.InOutQuad
0153 }
0154
0155 }
0156 }
0157
0158 transitions: [
0159 Transition {
0160 from: ""
0161 to: "*"
0162 reversible: false
0163
0164 NumberAnimation {
0165 property: "currentFrame"
0166 duration: 0
0167 }
0168 }
0169 ]
0170 }