Warning, /education/gcompris/src/activities/learn_decimals/SingleBar.qml is written in an unsupported language. File is not indexed.

0001 /* GCompris - learn_decimals.qml
0002  *
0003  * SPDX-FileCopyrightText: 2021 Mariam Fahmy <mariamfahmy66@gmail.com>
0004  *
0005  * Authors:
0006  *   Mariam Fahmy <mariamfahmy66@gmail.com>
0007  *   Timothée Giet <animtim@gmail.com>
0008  *
0009  * SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 import QtQuick 2.12
0012 import GCompris 1.0
0013 import "../../core"
0014 import "learn_decimals.js" as Activity
0015 
0016 GridView {
0017     id: singleBar
0018     clip: true
0019 
0020     property bool isAnswerRepresentation: false
0021     property bool isUnselectedBar: false
0022     property ListModel selectedModel
0023     property int cellSize: 10
0024 
0025     model: selectedModel
0026     interactive: false
0027     delegate: delegateUnit
0028 
0029     Component {
0030         id: delegateUnit
0031         Item {
0032             id: barItem
0033             width: background.horizontalLayout ? cellSize * 10 : cellSize
0034             height: background.horizontalLayout ? cellSize : cellSize * 10
0035 
0036             Grid {
0037                 id: gridLayout
0038                 anchors.fill: parent
0039 
0040                 states: [
0041                     State {
0042                         when: background.horizontalLayout
0043                         PropertyChanges {
0044                             target: gridLayout
0045                             rows: 1
0046                             columns: 0
0047                         }
0048                     },
0049                     State {
0050                         when: !background.horizontalLayout
0051                         PropertyChanges {
0052                             target: gridLayout
0053                             rows: 0
0054                             columns: 1
0055                         }
0056                     }
0057                 ]
0058 
0059                 Repeater {
0060                     id: rowsRepeater
0061                     model: isAnswerRepresentation ? selectedSquareNumbers : 10
0062                     // There can be random glitches happening on the squares borders if using Rectangle
0063                     // items in this code when using OpenGL, so using Images instead of Rectangles
0064                     // helps to avoid it in most cases.
0065                     Image {
0066                         id: squareContainer
0067                         source: items.isQuantityMode ? "qrc:/gcompris/src/core/resource/empty.svg" :
0068                             "qrc:/gcompris/src/activities/learn_decimals/resource/rectDark.svg"
0069                         visible: singleBar.Drag.active && index >= selectedSquareNumbers ? false : true
0070                         width: singleBar.cellSize
0071                         height: width
0072                         sourceSize.width: width
0073 
0074                         Image {
0075                             id: square
0076                             source: items.isQuantityMode ? "qrc:/gcompris/src/activities/babyshapes/resource/food/orange.svg" :
0077                                 index < selectedSquareNumbers ? "qrc:/gcompris/src/activities/learn_decimals/resource/rectFill.svg" :
0078                                 "qrc:/gcompris/src/activities/learn_decimals/resource/rectWhite.svg"
0079                             width: singleBar.cellSize - 6
0080                             height: width
0081                             sourceSize.width: width
0082                             anchors.centerIn: parent
0083                             opacity: items.isQuantityMode && index >= selectedSquareNumbers ? 0.2 : 1
0084                         }
0085                     }
0086                 }
0087             }
0088 
0089             MouseArea {
0090                 anchors.fill: parent
0091                 enabled: isAnswerRepresentation && !items.typeResult && !items.buttonsBlocked
0092                 onPressed: selectedModel.remove(index)
0093             }
0094         }
0095     }
0096 }