diff --git a/demos/piechartcustomization/customslice.cpp b/demos/piechartcustomization/customslice.cpp index 4b96c2d..bc01efd 100644 --- a/demos/piechartcustomization/customslice.cpp +++ b/demos/piechartcustomization/customslice.cpp @@ -25,8 +25,7 @@ QTCOMMERCIALCHART_USE_NAMESPACE CustomSlice::CustomSlice(qreal value, QString label) :QPieSlice(value, label) { - connect(this, SIGNAL(hoverEnter()), this, SLOT(handleHoverEnter())); - connect(this, SIGNAL(hoverLeave()), this, SLOT(handleHoverLeave())); + connect(this, SIGNAL(hovered(bool)), this, SLOT(showHighlight(bool))); } QBrush CustomSlice::originalBrush() @@ -34,17 +33,16 @@ QBrush CustomSlice::originalBrush() return m_originalBrush; } -void CustomSlice::handleHoverEnter() +void CustomSlice::showHighlight(bool show) { - QBrush brush = this->brush(); - m_originalBrush = brush; - brush.setColor(brush.color().lighter()); - setBrush(brush); -} - -void CustomSlice::handleHoverLeave() -{ - setBrush(m_originalBrush); + if (show) { + QBrush brush = this->brush(); + m_originalBrush = brush; + brush.setColor(brush.color().lighter()); + setBrush(brush); + } else { + setBrush(m_originalBrush); + } } #include "moc_customslice.cpp" diff --git a/demos/piechartcustomization/customslice.h b/demos/piechartcustomization/customslice.h index 1f855d3..dd451aa 100644 --- a/demos/piechartcustomization/customslice.h +++ b/demos/piechartcustomization/customslice.h @@ -35,8 +35,7 @@ public: QBrush originalBrush(); public Q_SLOTS: - void handleHoverEnter(); - void handleHoverLeave(); + void showHighlight(bool show); private: QBrush m_originalBrush; diff --git a/demos/piechartcustomization/mainwidget.cpp b/demos/piechartcustomization/mainwidget.cpp index 2e53c91..4f0c251 100644 --- a/demos/piechartcustomization/mainwidget.cpp +++ b/demos/piechartcustomization/mainwidget.cpp @@ -53,7 +53,7 @@ MainWidget::MainWidget(QWidget* parent) m_series->setLabelsVisible(); chart->addSeries(m_series); - connect(m_series, SIGNAL(clicked(QPieSlice*,Qt::MouseButtons)), this, SLOT(handleSliceClicked(QPieSlice*,Qt::MouseButtons))); + connect(m_series, SIGNAL(clicked(QPieSlice*)), this, SLOT(handleSliceClicked(QPieSlice*))); // chart settings m_themeComboBox = new QComboBox(); @@ -69,16 +69,20 @@ MainWidget::MainWidget(QWidget* parent) m_animationsCheckBox = new QCheckBox(); m_animationsCheckBox->setCheckState(Qt::Checked); + m_legendCheckBox = new QCheckBox(); + QFormLayout* chartSettingsLayout = new QFormLayout(); chartSettingsLayout->addRow("Theme", m_themeComboBox); chartSettingsLayout->addRow("Antialiasing", m_aaCheckBox); chartSettingsLayout->addRow("Animations", m_animationsCheckBox); + chartSettingsLayout->addRow("Legend", m_legendCheckBox); QGroupBox* chartSettings = new QGroupBox("Chart"); chartSettings->setLayout(chartSettingsLayout); connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this ,SLOT(updateChartSettings())); connect(m_aaCheckBox, SIGNAL(toggled(bool)), this ,SLOT(updateChartSettings())); connect(m_animationsCheckBox, SIGNAL(toggled(bool)), this ,SLOT(updateChartSettings())); + connect(m_legendCheckBox, SIGNAL(toggled(bool)), this ,SLOT(updateChartSettings())); // series settings m_hPosition = new QDoubleSpinBox(); @@ -211,6 +215,11 @@ void MainWidget::updateChartSettings() m_chartView->chart()->setAnimationOptions(QChart::AllAnimations); else m_chartView->chart()->setAnimationOptions(QChart::NoAnimation); + + if (m_legendCheckBox->checkState() == Qt::Checked) + m_chartView->chart()->legend()->show(); + else + m_chartView->chart()->legend()->hide(); } void MainWidget::updateSerieSettings() @@ -240,10 +249,8 @@ void MainWidget::updateSliceSettings() m_slice->setExplodeDistanceFactor(m_sliceExplodedFactor->value()); } -void MainWidget::handleSliceClicked(QPieSlice* slice, Qt::MouseButtons buttons) +void MainWidget::handleSliceClicked(QPieSlice* slice) { - Q_UNUSED(buttons); - m_slice = static_cast(slice); // name diff --git a/demos/piechartcustomization/mainwidget.h b/demos/piechartcustomization/mainwidget.h index 6ab0e63..9489bac 100644 --- a/demos/piechartcustomization/mainwidget.h +++ b/demos/piechartcustomization/mainwidget.h @@ -51,7 +51,7 @@ public Q_SLOTS: void updateChartSettings(); void updateSerieSettings(); void updateSliceSettings(); - void handleSliceClicked(QPieSlice* slice, Qt::MouseButtons buttons); + void handleSliceClicked(QPieSlice* slice); void showFontDialog(); void appendSlice(); void insertSlice(); @@ -61,6 +61,7 @@ private: QComboBox *m_themeComboBox; QCheckBox *m_aaCheckBox; QCheckBox *m_animationsCheckBox; + QCheckBox *m_legendCheckBox; QChartView* m_chartView; QPieSeries* m_series; diff --git a/examples/piechartdrilldown/drilldownslice.cpp b/examples/piechartdrilldown/drilldownslice.cpp index d6d2ac1..58c7377 100644 --- a/examples/piechartdrilldown/drilldownslice.cpp +++ b/examples/piechartdrilldown/drilldownslice.cpp @@ -30,8 +30,7 @@ DrilldownSlice::DrilldownSlice(qreal value, QString prefix, QAbstractSeries* dri updateLabel(); setLabelFont(QFont("Arial", 8)); connect(this, SIGNAL(changed()), this, SLOT(updateLabel())); - connect(this, SIGNAL(hoverEnter()), this, SLOT(showHighlight())); - connect(this, SIGNAL(hoverLeave()), this, SLOT(hideHighlight())); + connect(this, SIGNAL(hovered(bool)), this, SLOT(showHighlight(bool))); } DrilldownSlice::~DrilldownSlice() @@ -55,16 +54,10 @@ void DrilldownSlice::updateLabel() setLabel(label); } -void DrilldownSlice::showHighlight() +void DrilldownSlice::showHighlight(bool show) { - setExploded(); - setLabelVisible(); -} - -void DrilldownSlice::hideHighlight() -{ - setExploded(false); - setLabelVisible(false); + setExploded(show); + setLabelVisible(show); } #include "moc_drilldownslice.cpp" diff --git a/examples/piechartdrilldown/drilldownslice.h b/examples/piechartdrilldown/drilldownslice.h index 92d4e4c..584ba1a 100644 --- a/examples/piechartdrilldown/drilldownslice.h +++ b/examples/piechartdrilldown/drilldownslice.h @@ -39,8 +39,7 @@ public: public Q_SLOTS: void updateLabel(); - void showHighlight(); - void hideHighlight(); + void showHighlight(bool show); private: QAbstractSeries* m_drilldownSeries; diff --git a/examples/piechartdrilldown/main.cpp b/examples/piechartdrilldown/main.cpp index 4a5d3bb..1ca2182 100644 --- a/examples/piechartdrilldown/main.cpp +++ b/examples/piechartdrilldown/main.cpp @@ -58,12 +58,12 @@ int main(int argc, char *argv[]) foreach (QString month, months) *series << new DrilldownSlice(qrand() % 1000, month, yearSeries); - QObject::connect(series, SIGNAL(clicked(QPieSlice*,Qt::MouseButtons)), chart, SLOT(handleSliceClicked(QPieSlice*))); + QObject::connect(series, SIGNAL(clicked(QPieSlice*)), chart, SLOT(handleSliceClicked(QPieSlice*))); *yearSeries << new DrilldownSlice(series->sum(), name, series); } - QObject::connect(yearSeries, SIGNAL(clicked(QPieSlice*,Qt::MouseButtons)), chart, SLOT(handleSliceClicked(QPieSlice*))); + QObject::connect(yearSeries, SIGNAL(clicked(QPieSlice*)), chart, SLOT(handleSliceClicked(QPieSlice*))); chart->changeSeries(yearSeries); diff --git a/src/legend/legendmarker.cpp b/src/legend/legendmarker.cpp index fbf9ec6..b3ae7f1 100644 --- a/src/legend/legendmarker.cpp +++ b/src/legend/legendmarker.cpp @@ -154,7 +154,7 @@ void BarLegendMarker::updated() PieLegendMarker::PieLegendMarker(QPieSeries* series,QPieSlice *pieslice, QLegend *legend) : LegendMarker(series,legend), m_pieslice(pieslice) { - QObject::connect(this, SIGNAL(selected()),pieslice, SIGNAL(selected())); + QObject::connect(this, SIGNAL(selected()),pieslice, SIGNAL(clicked())); QObject::connect(pieslice, SIGNAL(changed()), this, SLOT(updated())); updated(); } diff --git a/src/legend/qlegend.cpp b/src/legend/qlegend.cpp index e181868..44b5b95 100644 --- a/src/legend/qlegend.cpp +++ b/src/legend/qlegend.cpp @@ -35,6 +35,7 @@ #include "qpercentbarseries.h" #include "qbarset.h" #include "qpieseries.h" +#include "qpieseries_p.h" #include "qpieslice.h" #include "chartpresenter_p.h" #include @@ -416,8 +417,9 @@ void QLegendPrivate::handleSeriesAdded(QAbstractSeries *series, Domain *domain) if(series->type() == QAbstractSeries::SeriesTypePie) { QPieSeries *pieSeries = static_cast(series); - QObject::connect(pieSeries,SIGNAL(added(QList)),this,SLOT(handleUpdateSeries())); - QObject::connect(pieSeries,SIGNAL(removed(QList)),this,SLOT(handleUpdateSeries())); + QPieSeriesPrivate *d = QPieSeriesPrivate::seriesData(*pieSeries); + QObject::connect(d, SIGNAL(added(QList)), this, SLOT(handleUpdatePieSeries())); + QObject::connect(d, SIGNAL(removed(QList)), this, SLOT(handleUpdatePieSeries())); } updateLayout(); @@ -438,20 +440,21 @@ void QLegendPrivate::handleSeriesRemoved(QAbstractSeries *series) if(series->type() == QAbstractSeries::SeriesTypePie) { QPieSeries *pieSeries = static_cast(series); - QObject::disconnect(pieSeries,SIGNAL(added(QList)),this,SLOT(handleUpdateSeries())); - QObject::disconnect(pieSeries,SIGNAL(removed(QList)),this,SLOT(handleUpdateSeries())); + QPieSeriesPrivate *d = QPieSeriesPrivate::seriesData(*pieSeries); + QObject::disconnect(d, SIGNAL(added(QList)), this, SLOT(handleUpdatePieSeries())); + QObject::disconnect(d, SIGNAL(removed(QList)), this, SLOT(handleUpdatePieSeries())); } updateLayout(); } -void QLegendPrivate::handleUpdateSeries() +void QLegendPrivate::handleUpdatePieSeries() { //TODO: reimplement to be optimal - QAbstractSeries* series = qobject_cast (sender()); - Q_ASSERT(series); - handleSeriesRemoved(series); - handleSeriesAdded(series,0); + QPieSeriesPrivate* d = qobject_cast (sender()); + Q_ASSERT(d->q_func()); + handleSeriesRemoved(d->q_func()); + handleSeriesAdded(d->q_func(), 0); } #include "moc_qlegend.cpp" diff --git a/src/legend/qlegend_p.h b/src/legend/qlegend_p.h index e190033..faa83af 100644 --- a/src/legend/qlegend_p.h +++ b/src/legend/qlegend_p.h @@ -50,7 +50,7 @@ public: public Q_SLOTS: void handleSeriesAdded(QAbstractSeries *series, Domain *domain); void handleSeriesRemoved(QAbstractSeries *series); - void handleUpdateSeries(); //TODO remove this function + void handleUpdatePieSeries(); //TODO remove this function private: QLegend *q_ptr; diff --git a/src/piechart/piechartitem.cpp b/src/piechart/piechartitem.cpp index 28e10c9..e7d5e00 100644 --- a/src/piechart/piechartitem.cpp +++ b/src/piechart/piechartitem.cpp @@ -22,6 +22,7 @@ #include "piesliceitem_p.h" #include "qpieslice.h" #include "qpieseries.h" +#include "qpieseries_p.h" #include "chartpresenter_p.h" #include "chartdataset_p.h" #include "chartanimator_p.h" @@ -35,10 +36,12 @@ PieChartItem::PieChartItem(QPieSeries *series, ChartPresenter* presenter) m_series(series) { Q_ASSERT(series); - connect(series, SIGNAL(added(QList)), this, SLOT(handleSlicesAdded(QList))); - connect(series, SIGNAL(removed(QList)), this, SLOT(handleSlicesRemoved(QList))); - connect(series, SIGNAL(piePositionChanged()), this, SLOT(handlePieLayoutChanged())); - connect(series, SIGNAL(pieSizeChanged()), this, SLOT(handlePieLayoutChanged())); + + QPieSeriesPrivate *d = QPieSeriesPrivate::seriesData(*series); + connect(d, SIGNAL(added(QList)), this, SLOT(handleSlicesAdded(QList))); + connect(d, SIGNAL(removed(QList)), this, SLOT(handleSlicesRemoved(QList))); + connect(d, SIGNAL(piePositionChanged()), this, SLOT(handlePieLayoutChanged())); + connect(d, SIGNAL(pieSizeChanged()), this, SLOT(handlePieLayoutChanged())); QTimer::singleShot(0, this, SLOT(initialize())); // TODO: get rid of this @@ -75,9 +78,8 @@ void PieChartItem::handleSlicesAdded(QList slices) PieSliceItem* item = new PieSliceItem(this); m_slices.insert(s, item); connect(s, SIGNAL(changed()), this, SLOT(handleSliceChanged())); - connect(item, SIGNAL(clicked(Qt::MouseButtons)), s, SIGNAL(clicked(Qt::MouseButtons))); - connect(item, SIGNAL(hoverEnter()), s, SIGNAL(hoverEnter())); - connect(item, SIGNAL(hoverLeave()), s, SIGNAL(hoverLeave())); + connect(item, SIGNAL(clicked(Qt::MouseButtons)), s, SIGNAL(clicked())); + connect(item, SIGNAL(hovered(bool)), s, SIGNAL(hovered(bool))); PieSliceData data = sliceData(s); diff --git a/src/piechart/piesliceitem.cpp b/src/piechart/piesliceitem.cpp index 684f5a4..85b7b02 100644 --- a/src/piechart/piesliceitem.cpp +++ b/src/piechart/piesliceitem.cpp @@ -85,12 +85,12 @@ void PieSliceItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* /*op void PieSliceItem::hoverEnterEvent(QGraphicsSceneHoverEvent* /*event*/) { - emit hoverEnter(); // TODO: refactor emit hover(somebooleanvalue) + emit hovered(true); } void PieSliceItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* /*event*/) { - emit hoverLeave(); // TODO: refactor emit hover(somebooleanvalue) + emit hovered(false); } void PieSliceItem::mousePressEvent(QGraphicsSceneMouseEvent *event) diff --git a/src/piechart/piesliceitem_p.h b/src/piechart/piesliceitem_p.h index 0ae854c..0ae02f4 100644 --- a/src/piechart/piesliceitem_p.h +++ b/src/piechart/piesliceitem_p.h @@ -55,8 +55,7 @@ public: // from QGraphicsItem Q_SIGNALS: void clicked(Qt::MouseButtons buttons); - void hoverEnter(); - void hoverLeave(); + void hovered(bool state); public: void setSliceData(PieSliceData sliceData); diff --git a/src/piechart/qpieseries.cpp b/src/piechart/qpieseries.cpp index 495c739..4346466 100644 --- a/src/piechart/qpieseries.cpp +++ b/src/piechart/qpieseries.cpp @@ -162,12 +162,11 @@ void QPieSeries::append(QList slices) foreach (QPieSlice* s, slices) { connect(s, SIGNAL(changed()), d, SLOT(sliceChanged())); - connect(s, SIGNAL(clicked(Qt::MouseButtons)), d, SLOT(sliceClicked(Qt::MouseButtons))); - connect(s, SIGNAL(hoverEnter()), d, SLOT(sliceHoverEnter())); - connect(s, SIGNAL(hoverLeave()), d, SLOT(sliceHoverLeave())); + connect(s, SIGNAL(clicked()), d, SLOT(sliceClicked())); + connect(s, SIGNAL(hovered(bool)), d, SLOT(sliceHovered(bool))); } - emit added(slices); + emit d->added(slices); } /*! @@ -215,11 +214,10 @@ void QPieSeries::insert(int index, QPieSlice* slice) d->updateDerivativeData(); connect(slice, SIGNAL(changed()), d, SLOT(sliceChanged())); - connect(slice, SIGNAL(clicked(Qt::MouseButtons)), d, SLOT(sliceClicked(Qt::MouseButtons))); - connect(slice, SIGNAL(hoverEnter()), d, SLOT(sliceHoverEnter())); - connect(slice, SIGNAL(hoverLeave()), d, SLOT(sliceHoverLeave())); + connect(slice, SIGNAL(clicked()), d, SLOT(sliceClicked())); + connect(slice, SIGNAL(hovered(bool)), d, SLOT(sliceHovered(bool))); - emit added(QList() << slice); + emit d->added(QList() << slice); } /*! @@ -237,7 +235,7 @@ void QPieSeries::remove(QPieSlice* slice) d->updateDerivativeData(); - emit removed(QList() << slice); + emit d->removed(QList() << slice); delete slice; slice = 0; @@ -260,7 +258,7 @@ void QPieSeries::clear() d->updateDerivativeData(); - emit removed(slices); + emit d->removed(slices); } /*! @@ -294,14 +292,14 @@ void QPieSeries::setHorizontalPosition(qreal relativePosition) { Q_D(QPieSeries); if (d->setRealValue(d->m_pieRelativeHorPos, relativePosition, 1.0)) - emit piePositionChanged(); + emit d->piePositionChanged(); } void QPieSeries::setVerticalPosition(qreal relativePosition) { Q_D(QPieSeries); if (d->setRealValue(d->m_pieRelativeVerPos, relativePosition, 1.0)) - emit piePositionChanged(); + emit d->piePositionChanged(); } qreal QPieSeries::horizontalPosition() const @@ -320,7 +318,7 @@ void QPieSeries::setPieSize(qreal relativeSize) { Q_D(QPieSeries); if (d->setRealValue(d->m_pieRelativeSize, relativeSize, 1.0)) - emit pieSizeChanged(); + emit d->pieSizeChanged(); } qreal QPieSeries::pieSize() const @@ -397,59 +395,21 @@ qreal QPieSeries::sum() const } /*! - \fn void QPieSeries::clicked(QPieSlice* slice, Qt::MouseButtons buttons) + \fn void QPieSeries::clicked(QPieSlice* slice) - This signal is emitted when a \a slice has been clicked with mouse \a buttons. + This signal is emitted when a \a slice has been clicked. \sa QPieSlice::clicked() */ /*! - \fn void QPieSeries::hoverEnter(QPieSlice* slice) + \fn void QPieSeries::hovered(QPieSlice* slice, bool state) - This signal is emitted when user has hovered over a \a slice. + This signal is emitted when user has hovered over or away from the \a slice. - \sa QPieSlice::hoverEnter() -*/ - -/*! - \fn void QPieSeries::hoverLeave(QPieSlice* slice) - - This signal is emitted when user has hovered away from a \a slice. - - \sa QPieSlice::hoverLeave() -*/ - -/*! - \fn void QPieSeries::added(QList slices) - - This signal is emitted when \a slices has been added to the series. + \a state is true when user has hovered over the slice and false when hover has moved away from the slice. - \sa append(), insert() -*/ - -/*! - \fn void QPieSeries::removed(QList slices) - - This signal is emitted when \a slices has been removed from the series. - - \sa remove(), clear() -*/ - -/*! - \fn void QPieSeries::piePositionChanged() - - This signal is emitted when pie position has changed. - - \sa verticalPosition(), setVerticalPosition(), horizontalPosition(), setHorizontalPosition() -*/ - -/*! - \fn void QPieSeries::pieSizeChanged() - - This signal is emitted when pie size has changed. - - \sa pieSize(), setPieSize() + \sa QPieSlice::hovered() */ /*! @@ -582,34 +542,31 @@ void QPieSeriesPrivate::updateDerivativeData() PieSliceData::data(s).emitChangedSignal(s); } -void QPieSeriesPrivate::sliceChanged() +QPieSeriesPrivate* QPieSeriesPrivate::seriesData(QPieSeries &series) { - Q_ASSERT(m_slices.contains(qobject_cast(sender()))); - updateDerivativeData(); + return series.d_func(); } -void QPieSeriesPrivate::sliceClicked(Qt::MouseButtons buttons) +void QPieSeriesPrivate::sliceChanged() { - QPieSlice* slice = qobject_cast(sender()); - Q_ASSERT(m_slices.contains(slice)); - Q_Q(QPieSeries); - emit q->clicked(slice, buttons); + Q_ASSERT(m_slices.contains(qobject_cast(sender()))); + updateDerivativeData(); } -void QPieSeriesPrivate::sliceHoverEnter() +void QPieSeriesPrivate::sliceClicked() { QPieSlice* slice = qobject_cast(sender()); Q_ASSERT(m_slices.contains(slice)); Q_Q(QPieSeries); - emit q->hoverEnter(slice); + emit q->clicked(slice); } -void QPieSeriesPrivate::sliceHoverLeave() +void QPieSeriesPrivate::sliceHovered(bool state) { QPieSlice* slice = qobject_cast(sender()); Q_ASSERT(m_slices.contains(slice)); Q_Q(QPieSeries); - emit q->hoverLeave(slice); + emit q->hovered(slice, state); } void QPieSeriesPrivate::modelUpdated(QModelIndex topLeft, QModelIndex bottomRight) diff --git a/src/piechart/qpieseries.h b/src/piechart/qpieseries.h index b34d88b..cbdcbb2 100644 --- a/src/piechart/qpieseries.h +++ b/src/piechart/qpieseries.h @@ -40,56 +40,44 @@ public: explicit QPieSeries(QObject *parent = 0); virtual ~QPieSeries(); -public: // from QChartSeries QSeriesType type() const; -public: - - // slice setters void append(QPieSlice* slice); void append(QList slices); + QPieSeries& operator << (QPieSlice* slice); + QPieSlice* append(qreal value, QString name); void insert(int index, QPieSlice* slice); void replace(QList slices); void remove(QPieSlice* slice); void clear(); - // slice getters QList slices() const; - - // calculated data int count() const; bool isEmpty() const; + qreal sum() const; - // pie customization void setHorizontalPosition(qreal relativePosition); qreal horizontalPosition() const; void setVerticalPosition(qreal relativePosition); qreal verticalPosition() const; + void setPieSize(qreal relativeSize); qreal pieSize() const; + void setPieStartAngle(qreal startAngle); qreal pieStartAngle() const; void setPieEndAngle(qreal endAngle); qreal pieEndAngle() const; - // convenience function - QPieSeries& operator << (QPieSlice* slice); - QPieSlice* append(qreal value, QString name); void setLabelsVisible(bool visible = true); - // data from model bool setModel(QAbstractItemModel* model); void setModelMapping(int modelValuesLine, int modelLabelsLine, Qt::Orientation orientation = Qt::Vertical); Q_SIGNALS: - void clicked(QPieSlice* slice, Qt::MouseButtons buttons); - void hoverEnter(QPieSlice* slice); - void hoverLeave(QPieSlice* slice); - void added(QList slices); - void removed(QList slices); - void piePositionChanged(); - void pieSizeChanged(); + void clicked(QPieSlice* slice); + void hovered(QPieSlice* slice, bool state); private: Q_DECLARE_PRIVATE(QPieSeries) diff --git a/src/piechart/qpieseries_p.h b/src/piechart/qpieseries_p.h index 5100c03..4028d86 100644 --- a/src/piechart/qpieseries_p.h +++ b/src/piechart/qpieseries_p.h @@ -27,6 +27,7 @@ class QModelIndex; QTCOMMERCIALCHART_BEGIN_NAMESPACE +class QLegendPrivate; class QPieSeriesPrivate : public QAbstractSeriesPrivate { @@ -37,16 +38,23 @@ public: ~QPieSeriesPrivate(); void scaleDomain(Domain& domain); - Chart* createGraphics(ChartPresenter* presenter); - QList createLegendMarker(QLegend* legend); + Chart* createGraphics(ChartPresenter *presenter); + QList createLegendMarker(QLegend *legend); void updateDerivativeData(); + static QPieSeriesPrivate* seriesData(QPieSeries &series); + +Q_SIGNALS: + void added(QList slices); + void removed(QList slices); + void piePositionChanged(); + void pieSizeChanged(); + public Q_SLOTS: void sliceChanged(); - void sliceClicked(Qt::MouseButtons buttons); - void sliceHoverEnter(); - void sliceHoverLeave(); + void sliceClicked(); + void sliceHovered(bool state); void modelUpdated(QModelIndex topLeft, QModelIndex bottomRight); void modelDataAdded(QModelIndex parent, int start, int end); void modelDataRemoved(QModelIndex parent, int start, int end); @@ -65,7 +73,9 @@ public: int m_mapValues; int m_mapLabels; Qt::Orientation m_mapOrientation; + private: + friend class QLegendPrivate; Q_DECLARE_PUBLIC(QPieSeries) }; diff --git a/src/piechart/qpieslice.cpp b/src/piechart/qpieslice.cpp index 7c16229..7f3c498 100644 --- a/src/piechart/qpieslice.cpp +++ b/src/piechart/qpieslice.cpp @@ -228,28 +228,21 @@ qreal QPieSlice::labelArmLengthFactor() const } /*! - \fn void QPieSlice::clicked(Qt::MouseButtons buttons) + \fn void QPieSlice::clicked() This signal is emitted when user has clicked the slice. - Parameter \a buttons hold the information about the clicked mouse buttons. \sa QPieSeries::clicked() */ /*! - \fn void QPieSlice::hoverEnter() + \fn void QPieSlice::hovered(bool state) - This signal is emitted when user has hovered over the slice. + This signal is emitted when user has hovered over or away from the slice. - \sa QPieSeries::hoverEnter() -*/ - -/*! - \fn void QPieSlice::hoverLeave() - - This signal is emitted when user has hovered away from the slice. + \a state is true when user has hovered over the slice and false when hover has moved away from the slice. - \sa QPieSeries::hoverLeave() + \sa QPieSeries::hovered() */ /*! @@ -259,12 +252,6 @@ qreal QPieSlice::labelArmLengthFactor() const */ /*! - \fn void QPieSlice::selected() - - This signal emitted when this slice has been clicked in the legend. -*/ - -/*! Sets the \a value of this slice. \sa value() */ diff --git a/src/piechart/qpieslice.h b/src/piechart/qpieslice.h index 4f6e549..b159dc8 100644 --- a/src/piechart/qpieslice.h +++ b/src/piechart/qpieslice.h @@ -41,7 +41,6 @@ public: QPieSlice(qreal value, QString label, QObject *parent = 0); virtual ~QPieSlice(); - // data void setValue(qreal value); qreal value() const; void setLabel(QString label); @@ -51,12 +50,6 @@ public: void setExploded(bool exploded = true); bool isExploded() const; - // generated data - qreal percentage() const; - qreal startAngle() const; - qreal endAngle() const; - - // customization void setPen(const QPen &pen); QPen pen() const; void setBrush(const QBrush &brush); @@ -65,17 +58,20 @@ public: QPen labelPen() const; void setLabelFont(const QFont &font); QFont labelFont() const; + void setLabelArmLengthFactor(qreal factor); qreal labelArmLengthFactor() const; void setExplodeDistanceFactor(qreal factor); qreal explodeDistanceFactor() const; + qreal percentage() const; + qreal startAngle() const; + qreal endAngle() const; + Q_SIGNALS: - void clicked(Qt::MouseButtons buttons); - void hoverEnter(); - void hoverLeave(); + void clicked(); + void hovered(bool state); void changed(); - void selected(); private: friend class PieSliceData;