@@ -0,0 +1,179 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | #include "abstractbarchartitem_p.h" | |||
|
22 | #include "bar_p.h" | |||
|
23 | #include "qbarset.h" | |||
|
24 | #include "qbarset_p.h" | |||
|
25 | #include "qabstractbarseries.h" | |||
|
26 | #include "qabstractbarseries_p.h" | |||
|
27 | #include "qchart.h" | |||
|
28 | #include "chartpresenter_p.h" | |||
|
29 | #include "chartanimator_p.h" | |||
|
30 | #include "abstractbaranimation_p.h" | |||
|
31 | #include "chartdataset_p.h" | |||
|
32 | #include <QPainter> | |||
|
33 | ||||
|
34 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
35 | ||||
|
36 | AbstractBarChartItem::AbstractBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : | |||
|
37 | ChartItem(presenter), | |||
|
38 | m_animation(0), | |||
|
39 | m_series(series) | |||
|
40 | { | |||
|
41 | setFlag(ItemClipsChildrenToShape); | |||
|
42 | connect(series->d_func(), SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged())); | |||
|
43 | connect(series->d_func(), SIGNAL(labelsVisibleChanged(bool)), this, SLOT(handleLabelsVisibleChanged(bool))); | |||
|
44 | connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleDataStructureChanged())); | |||
|
45 | connect(series, SIGNAL(visibleChanged()), this, SLOT(handleVisibleChanged())); | |||
|
46 | setZValue(ChartPresenter::BarSeriesZValue); | |||
|
47 | handleDataStructureChanged(); | |||
|
48 | } | |||
|
49 | ||||
|
50 | AbstractBarChartItem::~AbstractBarChartItem() | |||
|
51 | { | |||
|
52 | } | |||
|
53 | ||||
|
54 | void AbstractBarChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) | |||
|
55 | { | |||
|
56 | Q_UNUSED(painter); | |||
|
57 | Q_UNUSED(option); | |||
|
58 | Q_UNUSED(widget); | |||
|
59 | } | |||
|
60 | ||||
|
61 | QRectF AbstractBarChartItem::boundingRect() const | |||
|
62 | { | |||
|
63 | return m_rect; | |||
|
64 | } | |||
|
65 | ||||
|
66 | void AbstractBarChartItem::applyLayout(const QVector<QRectF> &layout) | |||
|
67 | { | |||
|
68 | if (m_animation) { | |||
|
69 | m_animation->setup(m_layout,layout); | |||
|
70 | presenter()->startAnimation(m_animation); | |||
|
71 | ||||
|
72 | } else { | |||
|
73 | setLayout(layout); | |||
|
74 | update(); | |||
|
75 | } | |||
|
76 | } | |||
|
77 | ||||
|
78 | void AbstractBarChartItem::setAnimation(AbstractBarAnimation *animation) | |||
|
79 | { | |||
|
80 | m_animation = animation; | |||
|
81 | } | |||
|
82 | ||||
|
83 | void AbstractBarChartItem::setLayout(const QVector<QRectF> &layout) | |||
|
84 | { | |||
|
85 | if (layout.count() != m_bars.count()) | |||
|
86 | return; | |||
|
87 | ||||
|
88 | m_layout = layout; | |||
|
89 | ||||
|
90 | for (int i=0; i < m_bars.count(); i++) { | |||
|
91 | m_bars.at(i)->setRect(layout.at(i)); | |||
|
92 | } | |||
|
93 | } | |||
|
94 | //handlers | |||
|
95 | ||||
|
96 | void AbstractBarChartItem::handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY) | |||
|
97 | { | |||
|
98 | m_domainMinX = minX; | |||
|
99 | m_domainMaxX = maxX; | |||
|
100 | m_domainMinY = minY; | |||
|
101 | m_domainMaxY = maxY; | |||
|
102 | handleLayoutChanged(); | |||
|
103 | } | |||
|
104 | ||||
|
105 | void AbstractBarChartItem::handleGeometryChanged(const QRectF &rect) | |||
|
106 | { | |||
|
107 | prepareGeometryChange(); | |||
|
108 | m_rect = rect; | |||
|
109 | handleLayoutChanged(); | |||
|
110 | } | |||
|
111 | ||||
|
112 | void AbstractBarChartItem::handleLayoutChanged() | |||
|
113 | { | |||
|
114 | if ((m_rect.width() <= 0) || (m_rect.height() <= 0)) { | |||
|
115 | // rect size zero. | |||
|
116 | return; | |||
|
117 | } | |||
|
118 | QVector<QRectF> layout = calculateLayout(); | |||
|
119 | applyLayout(layout); | |||
|
120 | } | |||
|
121 | ||||
|
122 | void AbstractBarChartItem::handleLabelsVisibleChanged(bool visible) | |||
|
123 | { | |||
|
124 | foreach (QGraphicsSimpleTextItem* label, m_labels) { | |||
|
125 | label->setVisible(visible); | |||
|
126 | } | |||
|
127 | update(); | |||
|
128 | } | |||
|
129 | ||||
|
130 | void AbstractBarChartItem::handleDataStructureChanged() | |||
|
131 | { | |||
|
132 | foreach(QGraphicsItem *item, childItems()) { | |||
|
133 | delete item; | |||
|
134 | } | |||
|
135 | ||||
|
136 | m_bars.clear(); | |||
|
137 | m_labels.clear(); | |||
|
138 | m_layout.clear(); | |||
|
139 | ||||
|
140 | bool labelsVisible = m_series->isLabelsVisible(); | |||
|
141 | ||||
|
142 | // Create new graphic items for bars | |||
|
143 | for (int c = 0; c < m_series->d_func()->categoryCount(); c++) { | |||
|
144 | for (int s = 0; s < m_series->count(); s++) { | |||
|
145 | QBarSet *set = m_series->d_func()->barsetAt(s); | |||
|
146 | ||||
|
147 | // Bars | |||
|
148 | Bar *bar = new Bar(set,c,this); | |||
|
149 | m_bars.append(bar); | |||
|
150 | connect(bar, SIGNAL(clicked(int, QBarSet*)), m_series, SIGNAL(clicked(int, QBarSet*))); | |||
|
151 | connect(bar, SIGNAL(hovered(bool, QBarSet*)), m_series, SIGNAL(hovered(bool, QBarSet*))); | |||
|
152 | connect(bar, SIGNAL(clicked(int, QBarSet*)), set, SIGNAL(clicked(int))); | |||
|
153 | connect(bar, SIGNAL(hovered(bool, QBarSet*)), set, SIGNAL(hovered(bool))); | |||
|
154 | m_layout.append(QRectF(0, 0, 0, 0)); | |||
|
155 | ||||
|
156 | // Labels | |||
|
157 | QGraphicsSimpleTextItem *label = new QGraphicsSimpleTextItem(this); | |||
|
158 | label->setVisible(labelsVisible); | |||
|
159 | m_labels.append(label); | |||
|
160 | } | |||
|
161 | } | |||
|
162 | ||||
|
163 | // TODO: Is this the right place to call it? | |||
|
164 | presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series)); | |||
|
165 | handleLayoutChanged(); | |||
|
166 | } | |||
|
167 | ||||
|
168 | void AbstractBarChartItem::handleVisibleChanged() | |||
|
169 | { | |||
|
170 | bool visible = m_series->isVisible(); | |||
|
171 | handleLabelsVisibleChanged(visible); | |||
|
172 | foreach(QGraphicsItem *item, childItems()) { | |||
|
173 | item->setVisible(visible); | |||
|
174 | } | |||
|
175 | } | |||
|
176 | ||||
|
177 | #include "moc_abstractbarchartitem_p.cpp" | |||
|
178 | ||||
|
179 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -19,7 +19,7 | |||||
19 | ****************************************************************************/ |
|
19 | ****************************************************************************/ | |
20 |
|
20 | |||
21 | #include "abstractbaranimation_p.h" |
|
21 | #include "abstractbaranimation_p.h" | |
22 | #include "barchartitem_p.h" |
|
22 | #include "abstractbarchartitem_p.h" | |
23 | #include <QTimer> |
|
23 | #include <QTimer> | |
24 | #include <QDebug> |
|
24 | #include <QDebug> | |
25 |
|
25 | |||
@@ -27,7 +27,7 Q_DECLARE_METATYPE(QVector<QRectF>) | |||||
27 |
|
27 | |||
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
29 |
|
29 | |||
30 | AbstractBarAnimation::AbstractBarAnimation(BarChartItem *item) |
|
30 | AbstractBarAnimation::AbstractBarAnimation(AbstractBarChartItem *item) | |
31 | :ChartAnimation(item), |
|
31 | :ChartAnimation(item), | |
32 | m_item(item) |
|
32 | m_item(item) | |
33 | { |
|
33 | { |
@@ -34,14 +34,14 | |||||
34 |
|
34 | |||
35 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
35 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
36 |
|
36 | |||
37 | class BarChartItem; |
|
37 | class AbstractBarChartItem; | |
38 |
|
38 | |||
39 | class AbstractBarAnimation : public ChartAnimation |
|
39 | class AbstractBarAnimation : public ChartAnimation | |
40 | { |
|
40 | { | |
41 | Q_OBJECT |
|
41 | Q_OBJECT | |
42 |
|
42 | |||
43 | public: |
|
43 | public: | |
44 | AbstractBarAnimation(BarChartItem *item); |
|
44 | AbstractBarAnimation(AbstractBarChartItem *item); | |
45 | ~AbstractBarAnimation(); |
|
45 | ~AbstractBarAnimation(); | |
46 |
|
46 | |||
47 | public: // from QVariantAnimation |
|
47 | public: // from QVariantAnimation | |
@@ -51,7 +51,7 public: // from QVariantAnimation | |||||
51 | void setup(const QVector<QRectF> &oldLayout, const QVector<QRectF> &newLayout); |
|
51 | void setup(const QVector<QRectF> &oldLayout, const QVector<QRectF> &newLayout); | |
52 |
|
52 | |||
53 | protected: |
|
53 | protected: | |
54 | BarChartItem *m_item; |
|
54 | AbstractBarChartItem *m_item; | |
55 | }; |
|
55 | }; | |
56 |
|
56 | |||
57 | QTCOMMERCIALCHART_END_NAMESPACE |
|
57 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -19,14 +19,14 | |||||
19 | ****************************************************************************/ |
|
19 | ****************************************************************************/ | |
20 |
|
20 | |||
21 | #include "baranimation_p.h" |
|
21 | #include "baranimation_p.h" | |
22 | #include "barchartitem_p.h" |
|
22 | #include "abstractbarchartitem_p.h" | |
23 | #include <QTimer> |
|
23 | #include <QTimer> | |
24 |
|
24 | |||
25 | Q_DECLARE_METATYPE(QVector<QRectF>) |
|
25 | Q_DECLARE_METATYPE(QVector<QRectF>) | |
26 |
|
26 | |||
27 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
27 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
28 |
|
28 | |||
29 | BarAnimation::BarAnimation(BarChartItem *item) |
|
29 | BarAnimation::BarAnimation(AbstractBarChartItem *item) | |
30 | :AbstractBarAnimation(item) |
|
30 | :AbstractBarAnimation(item) | |
31 | { |
|
31 | { | |
32 | setDuration(ChartAnimationDuration); |
|
32 | setDuration(ChartAnimationDuration); |
@@ -32,18 +32,18 | |||||
32 |
|
32 | |||
33 | #include "abstractbaranimation_p.h" |
|
33 | #include "abstractbaranimation_p.h" | |
34 | #include "chartanimation_p.h" |
|
34 | #include "chartanimation_p.h" | |
35 | #include "barchartitem_p.h" |
|
35 | #include "abstractbarchartitem_p.h" | |
36 |
|
36 | |||
37 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
37 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
38 |
|
38 | |||
39 | class BarChartItem; |
|
39 | class AbstractBarChartItem; | |
40 |
|
40 | |||
41 | class BarAnimation : public AbstractBarAnimation |
|
41 | class BarAnimation : public AbstractBarAnimation | |
42 | { |
|
42 | { | |
43 | Q_OBJECT |
|
43 | Q_OBJECT | |
44 |
|
44 | |||
45 | public: |
|
45 | public: | |
46 | BarAnimation(BarChartItem *item); |
|
46 | BarAnimation(AbstractBarChartItem *item); | |
47 | ~BarAnimation(); |
|
47 | ~BarAnimation(); | |
48 |
|
48 | |||
49 | public: // from QVariantAnimation |
|
49 | public: // from QVariantAnimation |
@@ -25,7 +25,7 | |||||
25 | #include "xychart_p.h" |
|
25 | #include "xychart_p.h" | |
26 | #include "pieanimation_p.h" |
|
26 | #include "pieanimation_p.h" | |
27 | #include "baranimation_p.h" |
|
27 | #include "baranimation_p.h" | |
28 | #include "barchartitem_p.h" |
|
28 | #include "abstractbarchartitem_p.h" | |
29 | #include "stackedbaranimation_p.h" |
|
29 | #include "stackedbaranimation_p.h" | |
30 | #include "stackedbarchartitem_p.h" |
|
30 | #include "stackedbarchartitem_p.h" | |
31 | #include "percentbaranimation_p.h" |
|
31 | #include "percentbaranimation_p.h" |
@@ -33,7 +33,7 | |||||
33 | #include "qchartglobal.h" |
|
33 | #include "qchartglobal.h" | |
34 | #include "chartanimation_p.h" |
|
34 | #include "chartanimation_p.h" | |
35 | #include "piechartitem_p.h" |
|
35 | #include "piechartitem_p.h" | |
36 | #include "barchartitem_p.h" |
|
36 | #include "abstractbarchartitem_p.h" | |
37 | #include <QPointF> |
|
37 | #include <QPointF> | |
38 |
|
38 | |||
39 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
39 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
@@ -12,7 +12,7 | |||||
12 |
|
12 | |||
13 | #include "chartanimation_p.h" |
|
13 | #include "chartanimation_p.h" | |
14 | #include "abstractbaranimation_p.h" |
|
14 | #include "abstractbaranimation_p.h" | |
15 | #include "barchartitem_p.h" |
|
15 | #include "abstractbarchartitem_p.h" | |
16 |
|
16 | |||
17 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
17 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
18 |
|
18 |
@@ -11,7 +11,7 | |||||
11 | #define STACKEDBARANIMATION_P_H |
|
11 | #define STACKEDBARANIMATION_P_H | |
12 |
|
12 | |||
13 | #include "chartanimation_p.h" |
|
13 | #include "chartanimation_p.h" | |
14 | #include "barchartitem_p.h" |
|
14 | #include "abstractbarchartitem_p.h" | |
15 | #include "abstractbaranimation_p.h" |
|
15 | #include "abstractbaranimation_p.h" | |
16 |
|
16 | |||
17 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
17 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
@@ -28,25 +28,67 | |||||
28 | // We mean it. |
|
28 | // We mean it. | |
29 |
|
29 | |||
30 |
|
30 | |||
31 |
#ifndef |
|
31 | #ifndef ABSTRACTBARCHARTITEM_H | |
32 |
#define |
|
32 | #define ABSTRACTBARCHARTITEM_H | |
33 |
|
33 | |||
34 |
#include " |
|
34 | #include "chartitem_p.h" | |
35 |
#include "q |
|
35 | #include "qabstractbarseries.h" | |
36 |
#include <Q |
|
36 | #include <QPen> | |
|
37 | #include <QBrush> | |||
37 |
|
38 | |||
38 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
39 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
39 |
|
40 | |||
40 | class GroupedBarChartItem : public BarChartItem |
|
41 | class Bar; | |
|
42 | class QAxisCategories; | |||
|
43 | class QChart; | |||
|
44 | class AbstractBarAnimation; | |||
|
45 | ||||
|
46 | class AbstractBarChartItem : public ChartItem | |||
41 | { |
|
47 | { | |
42 | Q_OBJECT |
|
48 | Q_OBJECT | |
43 | public: |
|
49 | public: | |
44 |
|
|
50 | AbstractBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter); | |
|
51 | virtual ~AbstractBarChartItem(); | |||
|
52 | ||||
|
53 | public: | |||
|
54 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); | |||
|
55 | QRectF boundingRect() const; | |||
|
56 | ||||
|
57 | virtual QVector<QRectF> calculateLayout() = 0; | |||
|
58 | virtual void applyLayout(const QVector<QRectF> &layout); | |||
|
59 | virtual void setAnimation(AbstractBarAnimation* animation); | |||
|
60 | void setLayout(const QVector<QRectF> &layout); | |||
|
61 | void updateLayout(const QVector<QRectF> &layout); | |||
|
62 | ||||
|
63 | ||||
|
64 | QRectF geometry() const { return m_rect;} | |||
|
65 | ||||
|
66 | public Q_SLOTS: | |||
|
67 | void handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY); | |||
|
68 | void handleGeometryChanged(const QRectF &size); | |||
|
69 | void handleLayoutChanged(); | |||
|
70 | void handleLabelsVisibleChanged(bool visible); | |||
|
71 | void handleDataStructureChanged(); // structure of of series has changed, recreate graphic items | |||
|
72 | void handleVisibleChanged(); | |||
|
73 | ||||
|
74 | protected: | |||
|
75 | ||||
|
76 | qreal m_domainMinX; | |||
|
77 | qreal m_domainMaxX; | |||
|
78 | qreal m_domainMinY; | |||
|
79 | qreal m_domainMaxY; | |||
|
80 | ||||
|
81 | QRectF m_rect; | |||
|
82 | QVector<QRectF> m_layout; | |||
|
83 | ||||
|
84 | AbstractBarAnimation *m_animation; | |||
45 |
|
85 | |||
46 | private: |
|
86 | // Not owned. | |
47 | virtual QVector<QRectF> calculateLayout(); |
|
87 | QAbstractBarSeries *m_series; | |
|
88 | QList<Bar *> m_bars; | |||
|
89 | QList<QGraphicsSimpleTextItem *> m_labels; | |||
48 | }; |
|
90 | }; | |
49 |
|
91 | |||
50 | QTCOMMERCIALCHART_END_NAMESPACE |
|
92 | QTCOMMERCIALCHART_END_NAMESPACE | |
51 |
|
93 | |||
52 |
#endif // |
|
94 | #endif // ABSTRACTBARCHARTITEM_H |
@@ -3,9 +3,9 DEPENDPATH += $$PWD | |||||
3 |
|
3 | |||
4 | SOURCES += \ |
|
4 | SOURCES += \ | |
5 | $$PWD/bar.cpp \ |
|
5 | $$PWD/bar.cpp \ | |
6 | $$PWD/barchartitem.cpp \ |
|
6 | $$PWD/abstractbarchartitem.cpp \ | |
7 | $$PWD/percentbarchartitem.cpp \ |
|
7 | $$PWD/percentbarchartitem.cpp \ | |
8 |
$$PWD/ |
|
8 | $$PWD/barchartitem.cpp \ | |
9 | $$PWD/qabstractbarseries.cpp \ |
|
9 | $$PWD/qabstractbarseries.cpp \ | |
10 | $$PWD/qbarset.cpp \ |
|
10 | $$PWD/qbarset.cpp \ | |
11 | $$PWD/qpercentbarseries.cpp \ |
|
11 | $$PWD/qpercentbarseries.cpp \ | |
@@ -20,10 +20,10 SOURCES += \ | |||||
20 |
|
20 | |||
21 | PRIVATE_HEADERS += \ |
|
21 | PRIVATE_HEADERS += \ | |
22 | $$PWD/bar_p.h \ |
|
22 | $$PWD/bar_p.h \ | |
23 | $$PWD/barchartitem_p.h \ |
|
23 | $$PWD/abstractbarchartitem_p.h \ | |
24 | $$PWD/percentbarchartitem_p.h \ |
|
24 | $$PWD/percentbarchartitem_p.h \ | |
25 | $$PWD/stackedbarchartitem_p.h \ |
|
25 | $$PWD/stackedbarchartitem_p.h \ | |
26 |
$$PWD/ |
|
26 | $$PWD/barchartitem_p.h \ | |
27 | $$PWD/qbarset_p.h \ |
|
27 | $$PWD/qbarset_p.h \ | |
28 | $$PWD/qabstractbarseries_p.h \ |
|
28 | $$PWD/qabstractbarseries_p.h \ | |
29 | $$PWD/qstackedbarseries_p.h\ |
|
29 | $$PWD/qstackedbarseries_p.h\ |
@@ -20,47 +20,16 | |||||
20 |
|
20 | |||
21 | #include "barchartitem_p.h" |
|
21 | #include "barchartitem_p.h" | |
22 | #include "bar_p.h" |
|
22 | #include "bar_p.h" | |
23 | #include "qbarset.h" |
|
|||
24 | #include "qbarset_p.h" |
|
23 | #include "qbarset_p.h" | |
25 | #include "qabstractbarseries.h" |
|
|||
26 | #include "qabstractbarseries_p.h" |
|
24 | #include "qabstractbarseries_p.h" | |
27 |
#include "q |
|
25 | #include "qbarset.h" | |
28 |
#include " |
|
26 | #include "qbarset_p.h" | |
29 | #include "chartanimator_p.h" |
|
|||
30 | #include "abstractbaranimation_p.h" |
|
|||
31 | #include "chartdataset_p.h" |
|
|||
32 | #include <QPainter> |
|
|||
33 |
|
27 | |||
34 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
35 |
|
29 | |||
36 | BarChartItem::BarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : |
|
30 | BarChartItem::BarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : | |
37 |
ChartItem(presenter) |
|
31 | AbstractBarChartItem(series, presenter) | |
38 | m_animation(0), |
|
|||
39 | m_series(series) |
|
|||
40 | { |
|
|||
41 | setFlag(ItemClipsChildrenToShape); |
|
|||
42 | connect(series->d_func(), SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged())); |
|
|||
43 | connect(series->d_func(), SIGNAL(labelsVisibleChanged(bool)), this, SLOT(handleLabelsVisibleChanged(bool))); |
|
|||
44 | connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleDataStructureChanged())); |
|
|||
45 | connect(series, SIGNAL(visibleChanged()), this, SLOT(handleVisibleChanged())); |
|
|||
46 | setZValue(ChartPresenter::BarSeriesZValue); |
|
|||
47 | handleDataStructureChanged(); |
|
|||
48 | } |
|
|||
49 |
|
||||
50 | BarChartItem::~BarChartItem() |
|
|||
51 | { |
|
|||
52 | } |
|
|||
53 |
|
||||
54 | void BarChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) |
|
|||
55 | { |
|
|||
56 | Q_UNUSED(painter); |
|
|||
57 | Q_UNUSED(option); |
|
|||
58 | Q_UNUSED(widget); |
|
|||
59 | } |
|
|||
60 |
|
||||
61 | QRectF BarChartItem::boundingRect() const |
|
|||
62 | { |
|
32 | { | |
63 | return m_rect; |
|
|||
64 | } |
|
33 | } | |
65 |
|
34 | |||
66 | QVector<QRectF> BarChartItem::calculateLayout() |
|
35 | QVector<QRectF> BarChartItem::calculateLayout() | |
@@ -79,19 +48,21 QVector<QRectF> BarChartItem::calculateLayout() | |||||
79 | qreal rangeX = m_domainMaxX - m_domainMinX; |
|
48 | qreal rangeX = m_domainMaxX - m_domainMinX; | |
80 | qreal scaleY = (height / rangeY); |
|
49 | qreal scaleY = (height / rangeY); | |
81 | qreal scaleX = (width / rangeX); |
|
50 | qreal scaleX = (width / rangeX); | |
82 | qreal barWidth = scaleX * m_series->d_func()->barWidth(); |
|
51 | qreal barWidth = (scaleX / setCount) * m_series->d_func()->barWidth(); | |
83 |
|
52 | |||
84 | int itemIndex(0); |
|
53 | int itemIndex(0); | |
85 | for (int category = 0; category < categoryCount; category++) { |
|
54 | for (int category = 0; category < categoryCount; category++) { | |
86 | qreal yPos = height + scaleY * m_domainMinY + geometry().topLeft().y(); |
|
55 | qreal yPos = height + scaleY * m_domainMinY + geometry().topLeft().y(); | |
87 | for (int set = 0; set < setCount; set++) { |
|
56 | for (int set = 0; set < setCount; set++) { | |
88 | QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); |
|
57 | QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); | |
89 | qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left() - barWidth/2; |
|
|||
90 | qreal barHeight = barSet->at(category).y() * scaleY; |
|
|||
91 |
|
58 | |||
|
59 | qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left(); | |||
|
60 | xPos -= setCount*barWidth/2; | |||
|
61 | xPos += set*barWidth; | |||
|
62 | qreal barHeight = barSet->at(category).y() * scaleY; | |||
92 | Bar* bar = m_bars.at(itemIndex); |
|
63 | Bar* bar = m_bars.at(itemIndex); | |
93 | QRectF rect(xPos, yPos - barHeight, barWidth, barHeight); |
|
|||
94 |
|
64 | |||
|
65 | QRectF rect(xPos, yPos - barHeight, barWidth, barHeight); | |||
95 | layout.append(rect); |
|
66 | layout.append(rect); | |
96 | bar->setPen(barSet->m_pen); |
|
67 | bar->setPen(barSet->m_pen); | |
97 | bar->setBrush(barSet->m_brush); |
|
68 | bar->setBrush(barSet->m_brush); | |
@@ -117,123 +88,9 QVector<QRectF> BarChartItem::calculateLayout() | |||||
117 | itemIndex++; |
|
88 | itemIndex++; | |
118 | } |
|
89 | } | |
119 | } |
|
90 | } | |
120 |
|
||||
121 | return layout; |
|
91 | return layout; | |
122 | } |
|
92 | } | |
123 |
|
93 | |||
124 | void BarChartItem::applyLayout(const QVector<QRectF> &layout) |
|
|||
125 | { |
|
|||
126 | if (m_animation) { |
|
|||
127 | m_animation->setup(m_layout,layout); |
|
|||
128 | presenter()->startAnimation(m_animation); |
|
|||
129 |
|
||||
130 | } else { |
|
|||
131 | setLayout(layout); |
|
|||
132 | update(); |
|
|||
133 | } |
|
|||
134 | } |
|
|||
135 |
|
||||
136 | void BarChartItem::setAnimation(AbstractBarAnimation *animation) |
|
|||
137 | { |
|
|||
138 | m_animation = animation; |
|
|||
139 | } |
|
|||
140 |
|
||||
141 | void BarChartItem::setLayout(const QVector<QRectF> &layout) |
|
|||
142 | { |
|
|||
143 | if (layout.count() != m_bars.count()) |
|
|||
144 | return; |
|
|||
145 |
|
||||
146 | m_layout = layout; |
|
|||
147 |
|
||||
148 | for (int i=0; i < m_bars.count(); i++) { |
|
|||
149 | m_bars.at(i)->setRect(layout.at(i)); |
|
|||
150 | } |
|
|||
151 | } |
|
|||
152 | //handlers |
|
|||
153 |
|
||||
154 | void BarChartItem::handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY) |
|
|||
155 | { |
|
|||
156 | m_domainMinX = minX; |
|
|||
157 | m_domainMaxX = maxX; |
|
|||
158 | m_domainMinY = minY; |
|
|||
159 | m_domainMaxY = maxY; |
|
|||
160 | handleLayoutChanged(); |
|
|||
161 | } |
|
|||
162 |
|
||||
163 | void BarChartItem::handleGeometryChanged(const QRectF &rect) |
|
|||
164 | { |
|
|||
165 | prepareGeometryChange(); |
|
|||
166 | m_rect = rect; |
|
|||
167 | handleLayoutChanged(); |
|
|||
168 | } |
|
|||
169 |
|
||||
170 | void BarChartItem::handleLayoutChanged() |
|
|||
171 | { |
|
|||
172 | if ((m_rect.width() <= 0) || (m_rect.height() <= 0)) { |
|
|||
173 | // rect size zero. |
|
|||
174 | return; |
|
|||
175 | } |
|
|||
176 | QVector<QRectF> layout = calculateLayout(); |
|
|||
177 | applyLayout(layout); |
|
|||
178 | } |
|
|||
179 |
|
||||
180 |
|
||||
181 |
|
||||
182 | void BarChartItem::handleLabelsVisibleChanged(bool visible) |
|
|||
183 | { |
|
|||
184 | foreach (QGraphicsSimpleTextItem* label, m_labels) { |
|
|||
185 | label->setVisible(visible); |
|
|||
186 | } |
|
|||
187 | update(); |
|
|||
188 | } |
|
|||
189 |
|
||||
190 | void BarChartItem::handleDataStructureChanged() |
|
|||
191 | { |
|
|||
192 | foreach(QGraphicsItem *item, childItems()) { |
|
|||
193 | delete item; |
|
|||
194 | } |
|
|||
195 |
|
||||
196 | m_bars.clear(); |
|
|||
197 | m_labels.clear(); |
|
|||
198 | m_layout.clear(); |
|
|||
199 |
|
||||
200 | bool labelsVisible = m_series->isLabelsVisible(); |
|
|||
201 |
|
||||
202 | // Create new graphic items for bars |
|
|||
203 | for (int c = 0; c < m_series->d_func()->categoryCount(); c++) { |
|
|||
204 | for (int s = 0; s < m_series->count(); s++) { |
|
|||
205 | QBarSet *set = m_series->d_func()->barsetAt(s); |
|
|||
206 |
|
||||
207 | // Bars |
|
|||
208 | Bar *bar = new Bar(set,c,this); |
|
|||
209 | m_bars.append(bar); |
|
|||
210 | connect(bar, SIGNAL(clicked(int, QBarSet*)), m_series, SIGNAL(clicked(int, QBarSet*))); |
|
|||
211 | connect(bar, SIGNAL(hovered(bool, QBarSet*)), m_series, SIGNAL(hovered(bool, QBarSet*))); |
|
|||
212 | connect(bar, SIGNAL(clicked(int, QBarSet*)), set, SIGNAL(clicked(int))); |
|
|||
213 | connect(bar, SIGNAL(hovered(bool, QBarSet*)), set, SIGNAL(hovered(bool))); |
|
|||
214 | m_layout.append(QRectF(0, 0, 0, 0)); |
|
|||
215 |
|
||||
216 | // Labels |
|
|||
217 | QGraphicsSimpleTextItem *label = new QGraphicsSimpleTextItem(this); |
|
|||
218 | label->setVisible(labelsVisible); |
|
|||
219 | m_labels.append(label); |
|
|||
220 | } |
|
|||
221 | } |
|
|||
222 |
|
||||
223 | // TODO: Is this the right place to call it? |
|
|||
224 | presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series)); |
|
|||
225 | handleLayoutChanged(); |
|
|||
226 | } |
|
|||
227 |
|
||||
228 | void BarChartItem::handleVisibleChanged() |
|
|||
229 | { |
|
|||
230 | bool visible = m_series->isVisible(); |
|
|||
231 | handleLabelsVisibleChanged(visible); |
|
|||
232 | foreach(QGraphicsItem *item, childItems()) { |
|
|||
233 | item->setVisible(visible); |
|
|||
234 | } |
|
|||
235 | } |
|
|||
236 |
|
||||
237 | #include "moc_barchartitem_p.cpp" |
|
94 | #include "moc_barchartitem_p.cpp" | |
238 |
|
95 | |||
239 | QTCOMMERCIALCHART_END_NAMESPACE |
|
96 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -31,62 +31,20 | |||||
31 | #ifndef BARCHARTITEM_H |
|
31 | #ifndef BARCHARTITEM_H | |
32 | #define BARCHARTITEM_H |
|
32 | #define BARCHARTITEM_H | |
33 |
|
33 | |||
34 | #include "chartitem_p.h" |
|
34 | #include "abstractbarchartitem_p.h" | |
35 |
#include "q |
|
35 | #include "qstackedbarseries.h" | |
36 |
#include <Q |
|
36 | #include <QGraphicsItem> | |
37 | #include <QBrush> |
|
|||
38 |
|
37 | |||
39 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
38 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
40 |
|
39 | |||
41 | class Bar; |
|
40 | class BarChartItem : public AbstractBarChartItem | |
42 | class QAxisCategories; |
|
|||
43 | class QChart; |
|
|||
44 | class AbstractBarAnimation; |
|
|||
45 |
|
||||
46 | class BarChartItem : public ChartItem |
|
|||
47 | { |
|
41 | { | |
48 | Q_OBJECT |
|
42 | Q_OBJECT | |
49 | public: |
|
43 | public: | |
50 | BarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter); |
|
44 | BarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter); | |
51 | virtual ~BarChartItem(); |
|
|||
52 |
|
||||
53 | public: |
|
|||
54 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); |
|
|||
55 | QRectF boundingRect() const; |
|
|||
56 |
|
45 | |||
|
46 | private: | |||
57 | virtual QVector<QRectF> calculateLayout(); |
|
47 | virtual QVector<QRectF> calculateLayout(); | |
58 | virtual void applyLayout(const QVector<QRectF> &layout); |
|
|||
59 | virtual void setAnimation(AbstractBarAnimation* animation); |
|
|||
60 | void setLayout(const QVector<QRectF> &layout); |
|
|||
61 | void updateLayout(const QVector<QRectF> &layout); |
|
|||
62 |
|
||||
63 |
|
||||
64 | QRectF geometry() const { return m_rect;} |
|
|||
65 |
|
||||
66 | public Q_SLOTS: |
|
|||
67 | void handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY); |
|
|||
68 | void handleGeometryChanged(const QRectF &size); |
|
|||
69 | void handleLayoutChanged(); |
|
|||
70 | void handleLabelsVisibleChanged(bool visible); |
|
|||
71 | void handleDataStructureChanged(); // structure of of series has changed, recreate graphic items |
|
|||
72 | void handleVisibleChanged(); |
|
|||
73 |
|
||||
74 | protected: |
|
|||
75 |
|
||||
76 | qreal m_domainMinX; |
|
|||
77 | qreal m_domainMaxX; |
|
|||
78 | qreal m_domainMinY; |
|
|||
79 | qreal m_domainMaxY; |
|
|||
80 |
|
||||
81 | QRectF m_rect; |
|
|||
82 | QVector<QRectF> m_layout; |
|
|||
83 |
|
||||
84 | AbstractBarAnimation *m_animation; |
|
|||
85 |
|
||||
86 | // Not owned. |
|
|||
87 | QAbstractBarSeries *m_series; |
|
|||
88 | QList<Bar *> m_bars; |
|
|||
89 | QList<QGraphicsSimpleTextItem *> m_labels; |
|
|||
90 | }; |
|
48 | }; | |
91 |
|
49 | |||
92 | QTCOMMERCIALCHART_END_NAMESPACE |
|
50 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -3,7 +3,7 | |||||
3 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
3 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
4 |
|
4 | |||
5 | HorizontalBarChartitem::HorizontalBarChartitem(QAbstractBarSeries *series, ChartPresenter *presenter) : |
|
5 | HorizontalBarChartitem::HorizontalBarChartitem(QAbstractBarSeries *series, ChartPresenter *presenter) : | |
6 | BarChartItem(series, presenter) |
|
6 | AbstractBarChartItem(series, presenter) | |
7 | { |
|
7 | { | |
8 | } |
|
8 | } | |
9 |
|
9 |
@@ -1,14 +1,14 | |||||
1 | #ifndef HORIZONTALBARCHARTITEM_H |
|
1 | #ifndef HORIZONTALBARCHARTITEM_H | |
2 | #define HORIZONTALBARCHARTITEM_H |
|
2 | #define HORIZONTALBARCHARTITEM_H | |
3 |
|
3 | |||
4 | #include "barchartitem_p.h" |
|
4 | #include "abstractbarchartitem_p.h" | |
5 | #include "qstackedbarseries.h" |
|
5 | #include "qstackedbarseries.h" | |
6 | #include <QGraphicsItem> |
|
6 | #include <QGraphicsItem> | |
7 |
|
7 | |||
8 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
8 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
9 |
|
9 | |||
10 |
|
10 | |||
11 | class HorizontalBarChartitem : public BarChartItem |
|
11 | class HorizontalBarChartitem : public AbstractBarChartItem | |
12 | { |
|
12 | { | |
13 | Q_OBJECT |
|
13 | Q_OBJECT | |
14 | public: |
|
14 | public: |
@@ -28,7 +28,7 | |||||
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
29 |
|
29 | |||
30 | PercentBarChartItem::PercentBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : |
|
30 | PercentBarChartItem::PercentBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : | |
31 | BarChartItem(series, presenter) |
|
31 | AbstractBarChartItem(series, presenter) | |
32 | { |
|
32 | { | |
33 | } |
|
33 | } | |
34 |
|
34 |
@@ -31,14 +31,14 | |||||
31 | #ifndef PERCENTBARCHARTITEM_H |
|
31 | #ifndef PERCENTBARCHARTITEM_H | |
32 | #define PERCENTBARCHARTITEM_H |
|
32 | #define PERCENTBARCHARTITEM_H | |
33 |
|
33 | |||
34 | #include "barchartitem_p.h" |
|
34 | #include "abstractbarchartitem_p.h" | |
35 | #include <QGraphicsItem> |
|
35 | #include <QGraphicsItem> | |
36 |
|
36 | |||
37 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
37 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
38 |
|
38 | |||
39 | class QAbstractBarSeries; |
|
39 | class QAbstractBarSeries; | |
40 |
|
40 | |||
41 | class PercentBarChartItem : public BarChartItem |
|
41 | class PercentBarChartItem : public AbstractBarChartItem | |
42 | { |
|
42 | { | |
43 | Q_OBJECT |
|
43 | Q_OBJECT | |
44 | public: |
|
44 | public: |
@@ -43,8 +43,6 protected: | |||||
43 | public: |
|
43 | public: | |
44 | virtual ~QAbstractBarSeries(); |
|
44 | virtual ~QAbstractBarSeries(); | |
45 |
|
45 | |||
46 | // virtual QAbstractSeries::SeriesType type() const = 0; |
|
|||
47 |
|
||||
48 | void setBarWidth(qreal width); |
|
46 | void setBarWidth(qreal width); | |
49 | qreal barWidth() const; |
|
47 | qreal barWidth() const; | |
50 |
|
48 | |||
@@ -73,10 +71,10 Q_SIGNALS: | |||||
73 |
|
71 | |||
74 | protected: |
|
72 | protected: | |
75 | Q_DECLARE_PRIVATE(QAbstractBarSeries) |
|
73 | Q_DECLARE_PRIVATE(QAbstractBarSeries) | |
76 | friend class BarChartItem; |
|
74 | friend class AbstractBarChartItem; | |
77 | friend class PercentBarChartItem; |
|
75 | friend class PercentBarChartItem; | |
78 | friend class StackedBarChartItem; |
|
76 | friend class StackedBarChartItem; | |
79 |
friend class |
|
77 | friend class BarChartItem; | |
80 | }; |
|
78 | }; | |
81 |
|
79 | |||
82 | QTCOMMERCIALCHART_END_NAMESPACE |
|
80 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -20,7 +20,7 | |||||
20 |
|
20 | |||
21 | #include "qbarseries.h" |
|
21 | #include "qbarseries.h" | |
22 | #include "qbarseries_p.h" |
|
22 | #include "qbarseries_p.h" | |
23 |
#include " |
|
23 | #include "barchartitem_p.h" | |
24 | #include "chartdataset_p.h" |
|
24 | #include "chartdataset_p.h" | |
25 | #include "charttheme_p.h" |
|
25 | #include "charttheme_p.h" | |
26 | #include "chartanimator_p.h" |
|
26 | #include "chartanimator_p.h" | |
@@ -65,7 +65,7 QBarSeries::QBarSeries(QObject *parent) | |||||
65 | } |
|
65 | } | |
66 |
|
66 | |||
67 | /*! |
|
67 | /*! | |
68 |
Returns QChartSeries::SeriesType |
|
68 | Returns QChartSeries::SeriesTypeBar. | |
69 | */ |
|
69 | */ | |
70 | QAbstractSeries::SeriesType QBarSeries::type() const |
|
70 | QAbstractSeries::SeriesType QBarSeries::type() const | |
71 | { |
|
71 | { | |
@@ -104,7 +104,7 Chart* QBarSeriesPrivate::createGraphics(ChartPresenter* presenter) | |||||
104 | { |
|
104 | { | |
105 | Q_Q(QBarSeries); |
|
105 | Q_Q(QBarSeries); | |
106 |
|
106 | |||
107 |
|
|
107 | BarChartItem* bar = new BarChartItem(q,presenter); | |
108 | if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) { |
|
108 | if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) { | |
109 | bar->setAnimator(presenter->animator()); |
|
109 | bar->setAnimator(presenter->animator()); | |
110 | bar->setAnimation(new BarAnimation(bar)); |
|
110 | bar->setAnimation(new BarAnimation(bar)); |
@@ -103,11 +103,11 private: | |||||
103 | Q_DISABLE_COPY(QBarSet) |
|
103 | Q_DISABLE_COPY(QBarSet) | |
104 | friend class QAbstractBarSeries; |
|
104 | friend class QAbstractBarSeries; | |
105 | friend class BarLegendMarker; |
|
105 | friend class BarLegendMarker; | |
106 | friend class BarChartItem; |
|
106 | friend class AbstractBarChartItem; | |
107 | friend class QAbstractBarSeriesPrivate; |
|
107 | friend class QAbstractBarSeriesPrivate; | |
108 | friend class StackedBarChartItem; |
|
108 | friend class StackedBarChartItem; | |
109 | friend class PercentBarChartItem; |
|
109 | friend class PercentBarChartItem; | |
110 |
friend class |
|
110 | friend class BarChartItem; | |
111 | }; |
|
111 | }; | |
112 |
|
112 | |||
113 | QTCOMMERCIALCHART_END_NAMESPACE |
|
113 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -28,7 +28,7 | |||||
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
28 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
29 |
|
29 | |||
30 | StackedBarChartItem::StackedBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : |
|
30 | StackedBarChartItem::StackedBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : | |
31 | BarChartItem(series, presenter) |
|
31 | AbstractBarChartItem(series, presenter) | |
32 | { |
|
32 | { | |
33 | } |
|
33 | } | |
34 |
|
34 |
@@ -31,13 +31,13 | |||||
31 | #ifndef STACKEDBARCHARTITEM_H |
|
31 | #ifndef STACKEDBARCHARTITEM_H | |
32 | #define STACKEDBARCHARTITEM_H |
|
32 | #define STACKEDBARCHARTITEM_H | |
33 |
|
33 | |||
34 | #include "barchartitem_p.h" |
|
34 | #include "abstractbarchartitem_p.h" | |
35 | #include "qstackedbarseries.h" |
|
35 | #include "qstackedbarseries.h" | |
36 | #include <QGraphicsItem> |
|
36 | #include <QGraphicsItem> | |
37 |
|
37 | |||
38 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
38 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
39 |
|
39 | |||
40 | class StackedBarChartItem : public BarChartItem |
|
40 | class StackedBarChartItem : public AbstractBarChartItem | |
41 | { |
|
41 | { | |
42 | Q_OBJECT |
|
42 | Q_OBJECT | |
43 | public: |
|
43 | public: |
@@ -41,7 +41,7 | |||||
41 |
|
41 | |||
42 | //items |
|
42 | //items | |
43 | #include "chartaxis_p.h" |
|
43 | #include "chartaxis_p.h" | |
44 | #include "barchartitem_p.h" |
|
44 | #include "abstractbarchartitem_p.h" | |
45 | #include "stackedbarchartitem_p.h" |
|
45 | #include "stackedbarchartitem_p.h" | |
46 | #include "percentbarchartitem_p.h" |
|
46 | #include "percentbarchartitem_p.h" | |
47 | #include "linechartitem_p.h" |
|
47 | #include "linechartitem_p.h" |
@@ -40,7 +40,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
40 | class ChartItem; |
|
40 | class ChartItem; | |
41 | class LineChartItem; |
|
41 | class LineChartItem; | |
42 | class QLineSeries; |
|
42 | class QLineSeries; | |
43 | class BarChartItem; |
|
43 | class AbstractBarChartItem; | |
44 | class QAbstractBarSeries; |
|
44 | class QAbstractBarSeries; | |
45 | class StackedBarChartItem; |
|
45 | class StackedBarChartItem; | |
46 | class QStackedBarSeries; |
|
46 | class QStackedBarSeries; |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now