@@ -226,8 +226,7 QBarSeriesPrivate::QBarSeriesPrivate(QBarCategories categories, QBarSeries *q) : | |||
|
226 | 226 | m_categories(categories), |
|
227 | 227 | m_mapCategories(-1), |
|
228 | 228 | m_mapBarBottom(-1), |
|
229 |
m_mapBarTop(-1) |
|
|
230 | m_mapOrientation(Qt::Vertical) | |
|
229 | m_mapBarTop(-1) | |
|
231 | 230 | { |
|
232 | 231 | } |
|
233 | 232 |
@@ -51,7 +51,6 protected: | |||
|
51 | 51 | int m_mapCategories; |
|
52 | 52 | int m_mapBarBottom; |
|
53 | 53 | int m_mapBarTop; |
|
54 | Qt::Orientation m_mapOrientation; | |
|
55 | 54 | private: |
|
56 | 55 | Q_DECLARE_PUBLIC(QBarSeries) |
|
57 | 56 | }; |
@@ -475,8 +475,7 QPieSeriesPrivate::QPieSeriesPrivate(QPieSeries *parent) : | |||
|
475 | 475 | m_pieEndAngle(360), |
|
476 | 476 | m_sum(0), |
|
477 | 477 | m_mapValues(0), |
|
478 |
m_mapLabels(0) |
|
|
479 | m_mapOrientation(Qt::Vertical) | |
|
478 | m_mapLabels(0) | |
|
480 | 479 | { |
|
481 | 480 | |
|
482 | 481 | } |
@@ -70,7 +70,6 public: | |||
|
70 | 70 | // model map |
|
71 | 71 | int m_mapValues; |
|
72 | 72 | int m_mapLabels; |
|
73 | Qt::Orientation m_mapOrientation; | |
|
74 | 73 | |
|
75 | 74 | private: |
|
76 | 75 | friend class QLegendPrivate; |
@@ -105,11 +105,17 int QAbstractSeries::mapFirst() const | |||
|
105 | 105 | { |
|
106 | 106 | return d_ptr->m_mapFirst; |
|
107 | 107 | } |
|
108 | ||
|
108 | 109 | int QAbstractSeries::mapCount() const |
|
109 | 110 | { |
|
110 | 111 | return d_ptr->m_mapCount; |
|
111 | 112 | } |
|
112 | 113 | |
|
114 | int QAbstractSeries::mapOrientation() const | |
|
115 | { | |
|
116 | return d_ptr->m_mapOrientation; | |
|
117 | } | |
|
118 | ||
|
113 | 119 | void QAbstractSeries::setName(const QString& name) |
|
114 | 120 | { |
|
115 | 121 | d_ptr->m_name = name; |
@@ -130,7 +136,8 QAbstractSeriesPrivate::QAbstractSeriesPrivate(QAbstractSeries* q): | |||
|
130 | 136 | q_ptr(q), |
|
131 | 137 | m_model(0), |
|
132 | 138 | m_mapFirst(0), |
|
133 | m_mapCount(-1) | |
|
139 | m_mapCount(-1), | |
|
140 | m_mapOrientation(Qt::Vertical) | |
|
134 | 141 | { |
|
135 | 142 | } |
|
136 | 143 |
@@ -59,6 +59,7 public: | |||
|
59 | 59 | QAbstractItemModel* model() const; |
|
60 | 60 | int mapFirst() const; |
|
61 | 61 | int mapCount() const; |
|
62 | int mapOrientation() const; | |
|
62 | 63 | void setName(const QString& name); |
|
63 | 64 | QString name() const; |
|
64 | 65 |
@@ -58,6 +58,7 protected: | |||
|
58 | 58 | QAbstractItemModel *m_model; |
|
59 | 59 | int m_mapFirst; |
|
60 | 60 | int m_mapCount; |
|
61 | Qt::Orientation m_mapOrientation; | |
|
61 | 62 | QString m_name; |
|
62 | 63 | |
|
63 | 64 | friend class QAbstractSeries; |
@@ -430,7 +430,6 void QXYSeries::setModelMappingRange(int first, int count) | |||
|
430 | 430 | QXYSeriesPrivate::QXYSeriesPrivate(QXYSeries *q) : QAbstractSeriesPrivate(q), |
|
431 | 431 | m_mapX(-1), |
|
432 | 432 | m_mapY(-1), |
|
433 | m_mapOrientation( Qt::Vertical), | |
|
434 | 433 | m_pointsVisible(false) |
|
435 | 434 | { |
|
436 | 435 | } |
@@ -70,7 +70,6 protected: | |||
|
70 | 70 | |
|
71 | 71 | int m_mapX; |
|
72 | 72 | int m_mapY; |
|
73 | Qt::Orientation m_mapOrientation; | |
|
74 | 73 | bool m_pointsVisible; |
|
75 | 74 | |
|
76 | 75 | private: |
@@ -25,6 +25,7 | |||
|
25 | 25 | #include "chartanimator_p.h" |
|
26 | 26 | #include <QPainter> |
|
27 | 27 | #include <QGraphicsSceneMouseEvent> |
|
28 | #include <QAbstractItemModel> | |
|
28 | 29 | |
|
29 | 30 | |
|
30 | 31 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
@@ -189,6 +190,67 void XYChartItem::handlePointsRemoved(int start, int end) | |||
|
189 | 190 | { |
|
190 | 191 | Q_UNUSED(start) |
|
191 | 192 | Q_UNUSED(end) |
|
193 | if (m_series->model() == 0) { | |
|
194 | for (int i = end; i >= start; i--) | |
|
195 | handlePointRemoved(i); | |
|
196 | } else { | |
|
197 | // series uses model as a data source | |
|
198 | int first = m_series->mapFirst(); | |
|
199 | int count = m_series->mapCount(); | |
|
200 | int removedCount = end - start + 1; | |
|
201 | if (count != -1 && start >= first + count) { | |
|
202 | return; | |
|
203 | } | |
|
204 | ||
|
205 | // removing items from unlimited map | |
|
206 | else if (count == -1 && start >= first) { | |
|
207 | for (int i = end; i >= start; i--) | |
|
208 | handlePointRemoved(i - first); | |
|
209 | } else if (count == - 1 && start < first) { | |
|
210 | // not all removed items | |
|
211 | for (int i = first + removedCount - 1; i >= first; i--) | |
|
212 | handlePointRemoved(i - first); | |
|
213 | } | |
|
214 | ||
|
215 | // removing items from limited map | |
|
216 | else if (start >= first) { | |
|
217 | // | |
|
218 | int lastExisting = qMin(first + m_points.size() - 1, end); | |
|
219 | for (int i = lastExisting; i >= start; i--) { | |
|
220 | handlePointRemoved(i - first); | |
|
221 | } | |
|
222 | ||
|
223 | // the map is limited, so after removing the items some new items may have fall into the map | |
|
224 | int itemsAvailable; | |
|
225 | if (m_series->mapOrientation() == Qt::Vertical) | |
|
226 | itemsAvailable = m_series->model()->rowCount() - first - m_points.size(); | |
|
227 | else | |
|
228 | itemsAvailable = m_series->model()->columnCount() - first - m_points.size(); | |
|
229 | int toBeAdded = qMin(itemsAvailable, count - m_points.size()); | |
|
230 | int currentSize = m_points.size(); | |
|
231 | if (itemsAvailable > 0) | |
|
232 | for (int i = m_points.size(); i < currentSize + toBeAdded; i++) | |
|
233 | handlePointAdded(i); | |
|
234 | } else { | |
|
235 | // TODO: | |
|
236 | int toRemove = qMin(m_points.size() - 1, removedCount); | |
|
237 | for (int i = first; i < first + toRemove; i++) | |
|
238 | handlePointRemoved(0); | |
|
239 | ||
|
240 | // the map is limited, so after removing the items some new items may have fall into the map | |
|
241 | int itemsAvailable; | |
|
242 | if (m_series->mapOrientation() == Qt::Vertical) | |
|
243 | itemsAvailable = m_series->model()->rowCount() - first - m_points.size(); | |
|
244 | else | |
|
245 | itemsAvailable = m_series->model()->columnCount() - first - m_points.size(); | |
|
246 | int toBeAdded = qMin(itemsAvailable, count - m_points.size()); | |
|
247 | int currentSize = m_points.size(); | |
|
248 | if (itemsAvailable > 0) | |
|
249 | for (int i = m_points.size(); i < currentSize + toBeAdded; i++) | |
|
250 | handlePointAdded(i); | |
|
251 | } | |
|
252 | } | |
|
253 | ||
|
192 | 254 | } |
|
193 | 255 | |
|
194 | 256 | void XYChartItem::handlePointReplaced(int index) |
General Comments 0
You need to be logged in to leave comments.
Login now