#ifndef QBARSERIES_P_H #define QBARSERIES_P_H #include "qbarseries.h" #include "qseries_p.h" #include #include class QModelIndex; QTCOMMERCIALCHART_BEGIN_NAMESPACE // Container for series class QBarSeriesPrivate : public QSeriesPrivate { Q_OBJECT public: QBarSeriesPrivate(QBarCategories categories, QBarSeries *parent); void scaleDomain(Domain& domain); Chart* createGraphics(ChartPresenter* presenter); QList createLegendMarker(QLegend* legend); bool setModel(QAbstractItemModel *model); void setModelMapping(int categories, int bottomBoundry, int topBoundry, Qt::Orientation orientation = Qt::Vertical); QBarSet* barsetAt(int index); QString categoryName(int category); qreal min(); qreal max(); qreal valueAt(int set, int category); qreal percentageAt(int set, int category); qreal categorySum(int category); qreal absoluteCategorySum(int category); qreal maxCategorySum(); BarChartModel& modelInternal(); Q_SIGNALS: void clicked(QBarSet *barset, QString category, Qt::MouseButtons button); void selected(); void updatedBars(); void restructuredBars(); private Q_SLOTS: // slots for updating bars when data in model changes void modelUpdated(QModelIndex topLeft, QModelIndex bottomRight); void modelDataAdded(QModelIndex parent, int start, int end); void modelDataRemoved(QModelIndex parent, int start, int end); void barsetChanged(); protected: BarChartModel *m_internalModel; // TODO: this may change... current "2 models" situation doesn't look good. QAbstractItemModel* m_model; int m_mapCategories; int m_mapBarBottom; int m_mapBarTop; int m_mapFirst; int m_mapCount; Qt::Orientation m_mapOrientation; private: Q_DECLARE_PUBLIC(QBarSeries) }; QTCOMMERCIALCHART_END_NAMESPACE #endif // QBARSERIESPRIVATE_P_H