@@ -43,10 +43,10 PieChartItem::PieChartItem(QPieSeries *series, ChartPresenter* presenter) | |||
|
43 | 43 | connect(d, SIGNAL(piePositionChanged()), this, SLOT(updateLayout())); |
|
44 | 44 | connect(d, SIGNAL(pieSizeChanged()), this, SLOT(updateLayout())); |
|
45 | 45 | |
|
46 | QTimer::singleShot(0, this, SLOT(initialize())); // TODO: get rid of this | |
|
47 | ||
|
48 | 46 | // Note: the following does not affect as long as the item does not have anything to paint |
|
49 | 47 | setZValue(ChartPresenter::PieSeriesZValue); |
|
48 | ||
|
49 | // Note: will not create slice items until we have a proper rectangle to draw on. | |
|
50 | 50 | } |
|
51 | 51 | |
|
52 | 52 | PieChartItem::~PieChartItem() |
@@ -59,6 +59,11 void PieChartItem::handleGeometryChanged(const QRectF& rect) | |||
|
59 | 59 | prepareGeometryChange(); |
|
60 | 60 | m_rect = rect; |
|
61 | 61 | updateLayout(); |
|
62 | ||
|
63 | // This is for delayed initialization of the slice items during startup. | |
|
64 | // It ensures that startup animation originates from the correct position. | |
|
65 | if (m_sliceItems.isEmpty()) | |
|
66 | handleSlicesAdded(m_series->slices()); | |
|
62 | 67 | } |
|
63 | 68 | |
|
64 | 69 | void PieChartItem::handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY) |
@@ -86,11 +91,6 void PieChartItem::rangeYChanged(qreal min, qreal max, int tickYCount) | |||
|
86 | 91 | // does not apply to pie |
|
87 | 92 | } |
|
88 | 93 | |
|
89 | void PieChartItem::initialize() | |
|
90 | { | |
|
91 | handleSlicesAdded(m_series->slices()); | |
|
92 | } | |
|
93 | ||
|
94 | 94 | void PieChartItem::updateLayout() |
|
95 | 95 | { |
|
96 | 96 | // find pie center coordinates |
@@ -122,6 +122,10 void PieChartItem::updateLayout() | |||
|
122 | 122 | |
|
123 | 123 | void PieChartItem::handleSlicesAdded(QList<QPieSlice*> slices) |
|
124 | 124 | { |
|
125 | // delay creating slice items until there is a proper rectangle | |
|
126 | if (!m_rect.isValid() && m_sliceItems.isEmpty()) | |
|
127 | return; | |
|
128 | ||
|
125 | 129 | presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series)); |
|
126 | 130 | |
|
127 | 131 | bool startupAnimation = m_sliceItems.isEmpty(); |
@@ -49,7 +49,6 public Q_SLOTS: | |||
|
49 | 49 | virtual void rangeXChanged(qreal min, qreal max, int tickXCount); |
|
50 | 50 | virtual void rangeYChanged(qreal min, qreal max, int tickYCount); |
|
51 | 51 | |
|
52 | void initialize(); | |
|
53 | 52 | void updateLayout(); |
|
54 | 53 | void handleSlicesAdded(QList<QPieSlice*> slices); |
|
55 | 54 | void handleSlicesRemoved(QList<QPieSlice*> slices); |
General Comments 0
You need to be logged in to leave comments.
Login now