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

0001 /* GCompris - PieChart.qml
0002 *
0003 * SPDX-FileCopyrightText: 2022 Johnny Jazeix <jazeix@gmail.com>
0004 * SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 import QtQuick 2.12
0007 import QtCharts 2.0
0008 
0009 ChartView {
0010     id: chart
0011     backgroundColor: "transparent"
0012     legend.visible: false
0013     antialiasing: true
0014     property alias pieSeries: pieSeries
0015     PieSeries {
0016         id: pieSeries
0017         size: 0.95
0018 
0019         PieSlice {
0020             value: 1
0021             color: gridContainer.unselectedColor
0022             borderColor: "white"
0023             borderWidth: 5
0024         }
0025 
0026         onClicked: {
0027             if(items.buttonsBlocked || activity.mode === "findFraction") {
0028                 return;
0029             }
0030             if(slice.color == gridContainer.selectedColor) {
0031                 numeratorText.value --;
0032                 slice.color = gridContainer.unselectedColor;
0033             }
0034             else {
0035                 numeratorText.value ++;
0036                 slice.color = gridContainer.selectedColor;
0037             }
0038         }
0039 
0040         function setSliceStyle(sliceNumber, selected) {
0041             var slice = pieSeries.at(sliceNumber);
0042             slice.borderColor = "white";
0043             slice.borderWidth = 5;
0044             slice.color = selected ? gridContainer.selectedColor : gridContainer.unselectedColor;
0045         }
0046     }
0047 
0048     function initLevel(pieIndex) {
0049         var pieSeries = chart.pieSeries;
0050         pieSeries.clear();
0051         var sizeOfOnePie = 1.0 / items.denominatorToFind;
0052 
0053         for(var pieSliceIndex = 0 ; pieSliceIndex < items.denominatorToFind ; ++ pieSliceIndex) {
0054             pieSeries.append(1, sizeOfOnePie);
0055             // Select the good number of slices at the beginning
0056             var selectPie = (activity.mode === "findFraction" && (pieSliceIndex+pieIndex*items.denominatorToFind < items.numeratorToFind));
0057             pieSeries.setSliceStyle(pieSeries.count-1, selectPie);
0058         }
0059     }
0060 
0061     function countSelectedParts() {
0062         var selected = 0;
0063         for(var pieSliceIndex = 0 ; pieSliceIndex < pieSeries.count ; ++ pieSliceIndex) {
0064             if(pieSeries.at(pieSliceIndex).color == gridContainer.selectedColor) {
0065                 selected ++;
0066             }
0067         }
0068         return selected;
0069     }
0070 }