Warning, /frameworks/kquickcharts/examples/charts/HistoryProxySource.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 2.9 0009 import QtQuick.Controls 2.2 0010 import QtQuick.Layouts 1.2 0011 0012 import org.kde.kirigami 2.4 as Kirigami 0013 import org.kde.kquickcontrols 2.0 0014 0015 import org.kde.quickcharts 1.0 as Charts 0016 0017 Kirigami.Page { 0018 title: "History Proxy Source" 0019 0020 ListModel { 0021 id: lineModel; 0022 dynamicRoles: true; 0023 } 0024 0025 Timer { 0026 id: updateTimer 0027 running: true 0028 repeat: true 0029 interval: 16 0030 0031 property real value 0032 0033 onTriggered: { 0034 value = Math.max(0.0, Math.min(1.0, value + (-0.05 + Math.random() / 10))); 0035 } 0036 } 0037 0038 ColumnLayout { 0039 anchors.fill: parent 0040 anchors.margins: Kirigami.Units.largeSpacing 0041 spacing: Kirigami.Units.largeSpacing 0042 0043 Kirigami.AbstractCard { 0044 Layout.fillHeight: false 0045 Layout.preferredHeight: 400 0046 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter 0047 0048 Charts.LineChart { 0049 id: chart 0050 anchors.fill: parent 0051 0052 yRange { 0053 from: 0 0054 to: 1 0055 automatic: false 0056 } 0057 0058 valueSources: Charts.HistoryProxySource { 0059 id: historySource 0060 source: Charts.SingleValueSource { value: updateTimer.value } 0061 maximumHistory: 100 0062 } 0063 0064 colorSource: Charts.SingleValueSource { value: "darkRed" } 0065 0066 lineWidth: 2 0067 fillOpacity: 0.2 0068 } 0069 } 0070 0071 ColumnLayout { 0072 RangeEditor { label: "X Axis"; range: chart.xRange } 0073 RangeEditor { label: "Y Axis"; range: chart.yRange } 0074 RowLayout { 0075 Button { icon.name: "media-playback-start"; enabled: !updateTimer.running; onClicked: updateTimer.start() } 0076 Button { icon.name: "media-playback-stop"; enabled: updateTimer.running; onClicked: updateTimer.stop() } 0077 Label { text: "History Amount" } 0078 SpinBox { 0079 from: 0 0080 to: 99999 0081 stepSize: 1 0082 value: historySource.maximumHistory 0083 onValueModified: historySource.maximumHistory = value 0084 } 0085 CheckBox { 0086 text: "Smooth" 0087 checked: chart.smooth 0088 onToggled: chart.smooth = checked 0089 } 0090 Label { text : "Interval" } 0091 SpinBox { 0092 from: 10 0093 to: 99999 0094 stepSize: 1 0095 value: updateTimer.interval 0096 onValueModified: updateTimer.interval = value 0097 } 0098 } 0099 RowLayout { 0100 Label { text: "Direction" } 0101 ComboBox { 0102 model: [ 0103 { value: Charts.XYChart.ZeroAtStart, text: "Zero at Start" }, 0104 { value: Charts.XYChart.ZeroAtEnd, text: "Zero at End" } 0105 ] 0106 0107 textRole: "text" 0108 valueRole: "value" 0109 0110 onActivated: chart.direction = currentValue 0111 } 0112 Label { text: "Fill Mode" } 0113 ComboBox { 0114 model: [ 0115 { value: Charts.HistoryProxySource.DoNotFill, text: "Do Not Fill" }, 0116 { value: Charts.HistoryProxySource.FillFromStart, text: "Fill from Start" }, 0117 { value: Charts.HistoryProxySource.FillFromEnd, text: "Fill from End" } 0118 ] 0119 0120 textRole: "text" 0121 valueRole: "value" 0122 0123 onActivated: historySource.fillMode = currentValue 0124 } 0125 } 0126 } 0127 } 0128 }