Warning, /frameworks/kquickcharts/examples/charts/PieChart.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * This file is part of KQuickCharts
0003  * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006  */
0007 
0008 import QtQuick
0009 import QtQuick.Controls
0010 import QtQuick.Layouts
0011 
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kquickcontrols
0014 
0015 import org.kde.quickcharts as Charts
0016 
0017 Kirigami.Page {
0018     title: "Pie Chart"
0019 
0020     ListModel {
0021         id: pieModel;
0022         dynamicRoles: true;
0023 
0024         Component.onCompleted: {
0025             append({ data: 50, data2: 30, color: "red" })
0026             append({ data: 50, data2: 60, color: "green" })
0027             append({ data: 50, data2: 60, color: "blue" })
0028         }
0029     }
0030 
0031     ColumnLayout {
0032         anchors.fill: parent
0033         anchors.margins: Kirigami.Units.largeSpacing
0034         spacing: Kirigami.Units.largeSpacing
0035 
0036         Kirigami.AbstractCard {
0037             Layout.fillWidth: false
0038             Layout.fillHeight: false
0039             Layout.preferredWidth: 600
0040             Layout.preferredHeight: 400
0041             Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
0042 
0043             Charts.PieChart {
0044                 id: chart
0045                 anchors.fill: parent
0046                 anchors.margins: Kirigami.Units.smallSpacing;
0047 
0048                 range.to: 150
0049 
0050                 valueSources: Charts.ModelSource { roleName: "data"; model: pieModel }
0051                 colorSource: Charts.ModelSource { roleName: "color"; model: pieModel }
0052 
0053                 thickness: 20;
0054                 filled: false;
0055                 backgroundColor: "gray"
0056             }
0057         }
0058 
0059         RangeEditor { label: "Range"; range: chart.range }
0060 
0061         RowLayout {
0062             Button { text: "Add Item"; onClicked: pieModel.append({data: 50, color: Qt.rgba(1.0, 1.0, 1.0)}) }
0063             Button { text: "Remove Item"; onClicked: pieModel.remove(pieModel.count - 1)}
0064             Label { text: "Thickness" }
0065             SpinBox { from: 0; to: chart.width / 2; value: chart.thickness; onValueModified: chart.thickness = value; }
0066             CheckBox { text: "Filled"; checked: chart.filled; onCheckedChanged: chart.filled = checked }
0067         }
0068 
0069         RowLayout {
0070             CheckBox { text: "Smooth Ends"; checked: chart.smoothEnds; onCheckedChanged: chart.smoothEnds = checked }
0071             Label { text: "From Angle" }
0072             SpinBox { from: -360; to: 360; value: chart.fromAngle; onValueModified: chart.fromAngle = value; }
0073             Label { text: "To Angle" }
0074             SpinBox { from: -360; to: 360; value: chart.toAngle; onValueModified: chart.toAngle = value; }
0075         }
0076 
0077         Frame {
0078             Layout.fillWidth: true
0079             Layout.fillHeight: true
0080 
0081             leftPadding: 1
0082             rightPadding: 1
0083             topPadding: 1
0084             bottomPadding: 1
0085 
0086             Kirigami.Theme.inherit: false
0087             Kirigami.Theme.colorSet: Kirigami.Theme.View
0088 
0089             ScrollView {
0090                 anchors.fill: parent
0091                 ListView {
0092                     model: pieModel;
0093                     delegate: ItemDelegate {
0094                         width: ListView.view.width
0095                         height: Kirigami.Units.gridUnit * 2 + Kirigami.Units.smallSpacing
0096                         contentItem: RowLayout {
0097                             Label { text: "Value" }
0098                             SpinBox {
0099                                 Layout.preferredWidth: parent.width * 0.15
0100                                 from: 0; to: 10000;
0101                                 stepSize: 1;
0102                                 value: model.data;
0103                                 onValueModified: pieModel.setProperty(index, "data", value)
0104                             }
0105                             Label { text: "Color" }
0106                             ColorButton {
0107                                 color: model.color;
0108                                 showAlphaChannel: true;
0109                                 onColorChanged: pieModel.setProperty(index, "color", color)
0110                             }
0111                         }
0112                     }
0113                 }
0114             }
0115         }
0116     }
0117 }