qpieseries.h
133 lines
| 3.1 KiB
| text/x-c
|
CLexer
|
r142 | #ifndef PIESERIES_H | ||
#define PIESERIES_H | ||||
#include "qchartseries.h" | ||||
#include <QObject> | ||||
#include <QRectF> | ||||
#include <QColor> | ||||
|
r174 | #include <QPen> | ||
#include <QBrush> | ||||
|
r203 | #include <QSignalMapper> | ||
|
r142 | |||
class QGraphicsObject; | ||||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
|
r146 | class PiePresenter; | ||
|
r142 | class PieSlice; | ||
|
r203 | class QPieSlice; | ||
|
r157 | |||
|
r142 | class QTCOMMERCIALCHART_EXPORT QPieSeries : public QChartSeries | ||
{ | ||||
Q_OBJECT | ||||
public: | ||||
enum PiePosition { | ||||
PiePositionMaximized = 0, | ||||
PiePositionTopLeft, | ||||
PiePositionTopRight, | ||||
PiePositionBottomLeft, | ||||
PiePositionBottomRight | ||||
}; | ||||
|
r174 | class ChangeSet | ||
{ | ||||
public: | ||||
|
r314 | |||
// TODO: these should not really be exposed to the public API | ||||
|
r203 | void appendAdded(QPieSlice* slice); | ||
|
r289 | void appendAdded(QList<QPieSlice*> slices); | ||
|
r203 | void appendChanged(QPieSlice* slice); | ||
void appendRemoved(QPieSlice* slice); | ||||
QList<QPieSlice*> added() const; | ||||
QList<QPieSlice*> changed() const; | ||||
QList<QPieSlice*> removed() const; | ||||
bool isEmpty() const; | ||||
private: | ||||
QList<QPieSlice*> m_added; | ||||
QList<QPieSlice*> m_changed; | ||||
QList<QPieSlice*> m_removed; | ||||
|
r174 | }; | ||
|
r142 | public: | ||
QPieSeries(QObject *parent = 0); | ||||
|
r203 | virtual ~QPieSeries(); | ||
|
r142 | |||
public: // from QChartSeries | ||||
|
r314 | QChartSeriesType type() const; | ||
|
r174 | virtual bool setData(QList<qreal> data); // TODO: remove this | ||
|
r142 | |||
public: | ||||
|
r354 | void replace(QList<QPieSlice*> slices); | ||
|
r203 | void add(QList<QPieSlice*> slices); | ||
void add(QPieSlice* slice); | ||||
QPieSlice* add(qreal value, QString name); | ||||
void remove(QPieSlice* slice); | ||||
void clear(); | ||||
|
r142 | |||
|
r314 | int count() const; | ||
|
r142 | |||
|
r314 | QList<QPieSlice*> slices() const; | ||
|
r174 | |||
|
r142 | void setSizeFactor(qreal sizeFactor); | ||
|
r314 | qreal sizeFactor() const; | ||
|
r142 | |||
void setPosition(PiePosition position); | ||||
|
r314 | PiePosition position() const; | ||
|
r142 | |||
|
r314 | void setSpan(qreal startAngle, qreal angleSpan); | ||
|
r203 | |||
void setLabelsVisible(bool visible); | ||||
void enableClickExplodes(bool enable); | ||||
void enableHoverHighlight(bool enable); | ||||
|
r289 | // TODO: find slices? | ||
// QList<QPieSlice*> findByValue(qreal value); | ||||
// ... | ||||
// TODO: sorting slices? | ||||
// void sort(QPieSeries::SortByValue|label|??) | ||||
// TODO: general graphics customization | ||||
// setDrawStyle(2d|3d) | ||||
// setDropShadows(bool) | ||||
|
r157 | Q_SIGNALS: | ||
|
r174 | void changed(const QPieSeries::ChangeSet& changeSet); | ||
|
r203 | void clicked(QPieSlice* slice); | ||
void hoverEnter(QPieSlice* slice); | ||||
void hoverLeave(QPieSlice* slice); | ||||
|
r157 | void sizeFactorChanged(); | ||
void positionChanged(); | ||||
|
r181 | |||
|
r289 | private Q_SLOTS: // TODO: should be private and not visible in the interface at all | ||
|
r203 | void sliceChanged(); | ||
void sliceClicked(); | ||||
void sliceHoverEnter(); | ||||
void sliceHoverLeave(); | ||||
void toggleExploded(QPieSlice* slice); | ||||
void highlightOn(QPieSlice* slice); | ||||
void highlightOff(QPieSlice* slice); | ||||
|
r174 | |||
private: | ||||
void updateDerivativeData(); | ||||
|
r157 | |||
|
r142 | private: | ||
Q_DISABLE_COPY(QPieSeries) | ||||
|
r174 | |||
|
r142 | // TODO: use PIML | ||
|
r174 | friend class PiePresenter; | ||
friend class PieSlice; | ||||
|
r203 | QList<QPieSlice*> m_slices; | ||
|
r142 | qreal m_sizeFactor; | ||
PiePosition m_position; | ||||
|
r174 | qreal m_total; | ||
|
r203 | qreal m_pieStartAngle; | ||
|
r314 | qreal m_pieAngleSpan; | ||
|
r142 | }; | ||
QTCOMMERCIALCHART_END_NAMESPACE | ||||
#endif // PIESERIES_H | ||||