Warning, /education/gcompris/src/activities/digital_electricity/components/SevenSegment.qml is written in an unsupported language. File is not indexed.

0001 /* GCompris - SevenSegment.qml
0002  *
0003  * SPDX-FileCopyrightText: 2016 Pulkit Gupta <pulkitnsit@gmail.com>
0004  *
0005  * Authors:
0006  *   Bruno Coudoin <bruno.coudoin@gcompris.net> (GTK+ version)
0007  *   Pulkit Gupta <pulkitnsit@gmail.com> (Qt Quick port)
0008  *
0009  *   SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 import QtQuick 2.12
0012 import GCompris 1.0
0013 
0014 import "../digital_electricity.js" as Activity
0015 
0016 ElectricalComponent {
0017     id: sevenSegmentDisplay
0018     terminalSize: 0.125
0019     noOfInputs: 7
0020     noOfOutputs: 0
0021     property var inputTerminalPosY: [0.066, 0.211, 0.355, 0.5, 0.645, 0.789, 0.934]
0022     property var redBars: ["sevenSegmentDisplayA.svg","sevenSegmentDisplayB.svg","sevenSegmentDisplayC.svg",
0023                                "sevenSegmentDisplayD.svg","sevenSegmentDisplayE.svg","sevenSegmentDisplayF.svg",
0024                                "sevenSegmentDisplayG.svg"]
0025 
0026     information: qsTr("A 7 segment display takes 7 binary inputs. The display " +
0027                       "consists of 7 segments and each segment is lighted according to the input. " +
0028                       "By generating different combinations of binary inputs, the display can be used to " +
0029                       "display numbers from 0 to 9 and a few letters. The diagram is:")
0030 
0031     property string infoImageSrc: "7SegmentDisplay.svg"
0032 
0033     property alias inputTerminals: inputTerminals
0034 
0035     Repeater {
0036         id: inputTerminals
0037         model: 7
0038         delegate: inputTerminal
0039         Component {
0040             id: inputTerminal
0041             TerminalPoint {
0042                 posX: 0.06
0043                 posY: inputTerminalPosY[index]
0044                 type: "In"
0045             }
0046         }
0047     }
0048 
0049     function updateOutput(wireVisited) {
0050         for(var i = 0 ; i < noOfInputs ; ++i) {
0051             if(inputTerminals.itemAt(i).value == 1)
0052                 outputBar.itemAt(i).visible = true;
0053             else
0054                 outputBar.itemAt(i).visible = false;
0055         }
0056     }
0057 
0058     Repeater {
0059         id: outputBar
0060         model: 7
0061         delegate: outputBarImages
0062         Component {
0063             id: outputBarImages
0064             Image {
0065                 source: Activity.url + redBars[index]
0066                 visible: false //code[0] == 1
0067                 anchors.centerIn: parent
0068                 height: parent.height
0069                 width: parent.width
0070                 fillMode: Image.PreserveAspectFit
0071                 mipmap: true
0072                 antialiasing: true
0073             }
0074         }
0075     }
0076 }