1 | /* |
---|---|
2 | * This file is part of KQuickCharts |
3 | * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl> |
4 | * |
5 | * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
6 | */ |
7 | |
8 | #include "ArraySource.h" |
9 | |
10 | ArraySource::ArraySource(QObject *parent) |
11 | : ChartDataSource(parent) |
12 | { |
13 | } |
14 | |
15 | int ArraySource::itemCount() const |
16 | { |
17 | return m_array.count(); |
18 | } |
19 | |
20 | QVariant ArraySource::item(int index) const |
21 | { |
22 | if (m_array.isEmpty()) { |
23 | return {}; |
24 | } |
25 | |
26 | if (!m_wrap && (index < 0 || index > m_array.count() - 1)) { |
27 | return {}; |
28 | } |
29 | |
30 | return m_array.at(i: index % m_array.count()); |
31 | } |
32 | |
33 | QVariant ArraySource::minimum() const |
34 | { |
35 | auto itr = std::min_element(first: m_array.cbegin(), last: m_array.cend(), comp: variantCompare); |
36 | if (itr != m_array.cend()) { |
37 | return *itr; |
38 | } |
39 | return QVariant{}; |
40 | } |
41 | |
42 | QVariant ArraySource::maximum() const |
43 | { |
44 | auto itr = std::max_element(first: m_array.cbegin(), last: m_array.cend(), comp: variantCompare); |
45 | if (itr != m_array.cend()) { |
46 | return *itr; |
47 | } |
48 | return QVariant{}; |
49 | } |
50 | |
51 | QVariantList ArraySource::array() const |
52 | { |
53 | return m_array; |
54 | } |
55 | |
56 | bool ArraySource::wrap() const |
57 | { |
58 | return m_wrap; |
59 | } |
60 | |
61 | void ArraySource::setArray(const QVariantList &array) |
62 | { |
63 | if (m_array == array) { |
64 | return; |
65 | } |
66 | |
67 | m_array = array; |
68 | Q_EMIT dataChanged(); |
69 | } |
70 | |
71 | void ArraySource::setWrap(bool wrap) |
72 | { |
73 | if (m_wrap == wrap) { |
74 | return; |
75 | } |
76 | |
77 | m_wrap = wrap; |
78 | Q_EMIT dataChanged(); |
79 | } |
80 | |
81 | #include "moc_ArraySource.cpp" |
82 |