From f354dfd88f13e7c3fdb64c4151fbc4580dcb3fb8 2012-05-31 11:44:43 From: Jani Honkonen Date: 2012-05-31 11:44:43 Subject: [PATCH] Add QPieSlice::series() and tests --- diff --git a/src/piechart/qpieseries.cpp b/src/piechart/qpieseries.cpp index a8e858d..49701ba 100644 --- a/src/piechart/qpieseries.cpp +++ b/src/piechart/qpieseries.cpp @@ -273,6 +273,7 @@ bool QPieSeries::append(QList slices) foreach (QPieSlice* s, slices) { s->setParent(this); + QPieSlicePrivate::fromSlice(s)->m_series = this; d->m_slices << s; } @@ -329,6 +330,7 @@ bool QPieSeries::insert(int index, QPieSlice* slice) return false; slice->setParent(this); + QPieSlicePrivate::fromSlice(slice)->m_series = this; d->m_slices.insert(index, slice); d->updateDerivativeData(); diff --git a/src/piechart/qpieslice.cpp b/src/piechart/qpieslice.cpp index 6dfde11..6cb8eed 100644 --- a/src/piechart/qpieslice.cpp +++ b/src/piechart/qpieslice.cpp @@ -452,9 +452,20 @@ qreal QPieSlice::angleSpan() const return d_ptr->m_data.m_angleSpan; } +/*! + Returns the series that this slice belongs to. + + \sa QPieSeries::append() +*/ +QPieSeries *QPieSlice::series() const +{ + return d_ptr->m_series; +} + QPieSlicePrivate::QPieSlicePrivate(QPieSlice *parent) :QObject(parent), - q_ptr(parent) + q_ptr(parent), + m_series(0) { } diff --git a/src/piechart/qpieslice.h b/src/piechart/qpieslice.h index 10dad96..4cf48a8 100644 --- a/src/piechart/qpieslice.h +++ b/src/piechart/qpieslice.h @@ -29,6 +29,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE class QPieSlicePrivate; +class QPieSeries; class QTCOMMERCIALCHART_EXPORT QPieSlice : public QObject { @@ -86,6 +87,8 @@ public: qreal startAngle() const; qreal angleSpan() const; + QPieSeries *series() const; + Q_SIGNALS: void labelChanged(); void valueChanged(); diff --git a/src/piechart/qpieslice_p.h b/src/piechart/qpieslice_p.h index b76d4aa..32a6762 100644 --- a/src/piechart/qpieslice_p.h +++ b/src/piechart/qpieslice_p.h @@ -6,6 +6,7 @@ #include "pieslicedata_p.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE +class QPieSeries; class QPieSlicePrivate : public QObject { @@ -27,15 +28,16 @@ public: void setAngleSpan(qreal span); private: - PieSliceData m_data; - -private: + friend class QPieSeries; friend class QPieSeriesPrivate; friend class ChartTheme; friend class PieChartItem; QPieSlice * const q_ptr; Q_DECLARE_PUBLIC(QPieSlice) + + PieSliceData m_data; + QPieSeries *m_series; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/tests/auto/qpieseries/tst_qpieseries.cpp b/tests/auto/qpieseries/tst_qpieseries.cpp index b65ac07..d215ea9 100644 --- a/tests/auto/qpieseries/tst_qpieseries.cpp +++ b/tests/auto/qpieseries/tst_qpieseries.cpp @@ -53,6 +53,7 @@ private slots: void calculatedValues(); void clickedSignal(); void hoverSignal(); + void sliceSeries(); private: void verifyCalculatedData(const QPieSeries &series, bool *ok); @@ -531,6 +532,23 @@ void tst_qpieseries::hoverSignal() QCOMPARE(qvariant_cast(hoverSpy.at(1).at(1)), false); } +void tst_qpieseries::sliceSeries() +{ + QPieSlice *slice = new QPieSlice(); + QVERIFY(!slice->series()); + delete slice; + + slice = new QPieSlice(m_series); + QVERIFY(!slice->series()); + + m_series->append(slice); + QCOMPARE(slice->series(), m_series); + + slice = new QPieSlice(); + m_series->insert(0, slice); + QCOMPARE(slice->series(), m_series); +} + QTEST_MAIN(tst_qpieseries) #include "tst_qpieseries.moc"