@@ -0,0 +1,6 | |||||
|
1 | #include "chartwidget.h" | |||
|
2 | ||||
|
3 | ChartWidget::ChartWidget(QWidget *parent) : | |||
|
4 | QChartView(parent) | |||
|
5 | { | |||
|
6 | } |
@@ -0,0 +1,21 | |||||
|
1 | #ifndef CHARTWIDGET_H | |||
|
2 | #define CHARTWIDGET_H | |||
|
3 | ||||
|
4 | #include <qchartview.h> | |||
|
5 | ||||
|
6 | QTCOMMERCIALCHART_USE_NAMESPACE | |||
|
7 | ||||
|
8 | ||||
|
9 | class ChartWidget : public QChartView | |||
|
10 | { | |||
|
11 | Q_OBJECT | |||
|
12 | public: | |||
|
13 | explicit ChartWidget(QWidget *parent = 0); | |||
|
14 | ||||
|
15 | signals: | |||
|
16 | ||||
|
17 | public slots: | |||
|
18 | ||||
|
19 | }; | |||
|
20 | ||||
|
21 | #endif // CHARTWIDGET_H |
@@ -0,0 +1,83 | |||||
|
1 | #include <QApplication> | |||
|
2 | #include <QMainWindow> | |||
|
3 | #include <qchartview.h> | |||
|
4 | #include <qstackedbarseries.h> | |||
|
5 | #include <qbarset.h> | |||
|
6 | #include <qchartaxis.h> | |||
|
7 | #include <QStringList> | |||
|
8 | ||||
|
9 | QTCOMMERCIALCHART_USE_NAMESPACE | |||
|
10 | ||||
|
11 | int main(int argc, char *argv[]) | |||
|
12 | { | |||
|
13 | QApplication a(argc, argv); | |||
|
14 | QMainWindow window; | |||
|
15 | ||||
|
16 | // TODO: | |||
|
17 | /* | |||
|
18 | //! [1] | |||
|
19 | // Define categories | |||
|
20 | QStringList categories; | |||
|
21 | categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; | |||
|
22 | //! [1] | |||
|
23 | ||||
|
24 | //! [2] | |||
|
25 | // Create some test sets for chat | |||
|
26 | QBarSet *set0 = new QBarSet("Bub"); | |||
|
27 | QBarSet *set1 = new QBarSet("Bob"); | |||
|
28 | QBarSet *set2 = new QBarSet("Guybrush"); | |||
|
29 | QBarSet *set3 = new QBarSet("Larry"); | |||
|
30 | QBarSet *set4 = new QBarSet("Zak"); | |||
|
31 | ||||
|
32 | *set0 << 1 << 2 << 3 << 4 << 5 << 6; | |||
|
33 | *set1 << 5 << 0 << 0 << 4 << 0 << 7; | |||
|
34 | *set2 << 3 << 5 << 8 << 13 << 8 << 5; | |||
|
35 | *set3 << 5 << 6 << 7 << 3 << 4 << 5; | |||
|
36 | *set4 << 9 << 7 << 5 << 3 << 1 << 2; | |||
|
37 | //! [2] | |||
|
38 | ||||
|
39 | //! [3] | |||
|
40 | // Create series and add sets to it | |||
|
41 | QStackedBarSeries* series = new QStackedBarSeries(categories); | |||
|
42 | ||||
|
43 | series->addBarSet(set0); | |||
|
44 | series->addBarSet(set1); | |||
|
45 | series->addBarSet(set2); | |||
|
46 | series->addBarSet(set3); | |||
|
47 | series->addBarSet(set4); | |||
|
48 | //! [3] | |||
|
49 | ||||
|
50 | //! [4] | |||
|
51 | // Enable tooltip | |||
|
52 | series->setToolTipEnabled(); | |||
|
53 | ||||
|
54 | // Connect clicked signal of set to toggle floating values of set. | |||
|
55 | // Note that we leave QBarset "Zak" unconnected here, so clicking on it doesn't toggle values. | |||
|
56 | QObject::connect(set0,SIGNAL(clicked(QBarSet*,QString)),set0,SIGNAL(toggleFloatingValues())); | |||
|
57 | QObject::connect(set1,SIGNAL(clicked(QBarSet*,QString)),set1,SIGNAL(toggleFloatingValues())); | |||
|
58 | QObject::connect(set2,SIGNAL(clicked(QBarSet*,QString)),set2,SIGNAL(toggleFloatingValues())); | |||
|
59 | QObject::connect(set3,SIGNAL(clicked(QBarSet*,QString)),set3,SIGNAL(toggleFloatingValues())); | |||
|
60 | //! [4] | |||
|
61 | ||||
|
62 | //! [5] | |||
|
63 | // Create view for chart and add series to it. Apply theme. | |||
|
64 | ||||
|
65 | QChartView* chartView = new QChartView(&window); | |||
|
66 | chartView->addSeries(series); | |||
|
67 | chartView->setChartTitle("simple stacked barchart"); | |||
|
68 | chartView->setChartTheme(QChart::ChartThemeIcy); | |||
|
69 | //! [5] | |||
|
70 | ||||
|
71 | //! [6] | |||
|
72 | chartView->axisX()->setAxisVisible(false); | |||
|
73 | chartView->axisX()->setGridVisible(false); | |||
|
74 | chartView->axisX()->setLabelsVisible(false); | |||
|
75 | //! [6] | |||
|
76 | ||||
|
77 | window.setCentralWidget(chartView); | |||
|
78 | window.resize(400, 300); | |||
|
79 | window.show(); | |||
|
80 | */ | |||
|
81 | return a.exec(); | |||
|
82 | } | |||
|
83 |
@@ -0,0 +1,9 | |||||
|
1 | !include( ../example.pri ) { | |||
|
2 | error( "Couldn't find the example.pri file!" ) | |||
|
3 | } | |||
|
4 | TARGET = stackedbarchartdrilldown | |||
|
5 | SOURCES += main.cpp \ | |||
|
6 | chartwidget.cpp | |||
|
7 | HEADERS += \ | |||
|
8 | chartwidget.h | |||
|
9 |
@@ -47,9 +47,15 int main(int argc, char *argv[]) | |||||
47 | //! [3] |
|
47 | //! [3] | |
48 |
|
48 | |||
49 | //! [4] |
|
49 | //! [4] | |
50 |
// Enable |
|
50 | // Enable tooltip | |
51 | series->setToolTipEnabled(); |
|
51 | series->setToolTipEnabled(); | |
52 | series->setFloatingValuesEnabled(); |
|
52 | ||
|
53 | // Connect clicked signal of set to toggle floating values of set. | |||
|
54 | // Note that we leave QBarset "Zak" unconnected here, so clicking on it doesn't toggle values. | |||
|
55 | QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues())); | |||
|
56 | QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues())); | |||
|
57 | QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues())); | |||
|
58 | QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues())); | |||
53 | //! [4] |
|
59 | //! [4] | |
54 |
|
60 | |||
55 | //! [5] |
|
61 | //! [5] |
@@ -15,4 +15,5 SUBDIRS += linechart \ | |||||
15 | presenterchart \ |
|
15 | presenterchart \ | |
16 | chartview \ |
|
16 | chartview \ | |
17 | scatterinteractions \ |
|
17 | scatterinteractions \ | |
18 | areachart |
|
18 | areachart \ | |
|
19 | stackedbarchartdrilldown |
@@ -47,9 +47,15 int main(int argc, char *argv[]) | |||||
47 | //! [3] |
|
47 | //! [3] | |
48 |
|
48 | |||
49 | //! [4] |
|
49 | //! [4] | |
50 |
// Enable |
|
50 | // Enable tooltip | |
51 | series->setToolTipEnabled(); |
|
51 | series->setToolTipEnabled(); | |
52 | series->setFloatingValuesEnabled(); |
|
52 | ||
|
53 | // Connect clicked signal of set to toggle floating values of set. | |||
|
54 | // Note that we leave QBarset "Zak" unconnected here, so clicking on it doesn't toggle values. | |||
|
55 | QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues())); | |||
|
56 | QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues())); | |||
|
57 | QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues())); | |||
|
58 | QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues())); | |||
53 | //! [4] |
|
59 | //! [4] | |
54 |
|
60 | |||
55 | //! [5] |
|
61 | //! [5] |
@@ -46,9 +46,15 int main(int argc, char *argv[]) | |||||
46 | //! [3] |
|
46 | //! [3] | |
47 |
|
47 | |||
48 | //! [4] |
|
48 | //! [4] | |
49 |
// Enable |
|
49 | // Enable tooltip | |
50 | series->setToolTipEnabled(); |
|
50 | series->setToolTipEnabled(); | |
51 | series->setFloatingValuesEnabled(); |
|
51 | ||
|
52 | // Connect clicked signal of set to toggle floating values of set. | |||
|
53 | // Note that we leave QBarset "Zak" unconnected here, so clicking on it doesn't toggle values. | |||
|
54 | QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues())); | |||
|
55 | QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues())); | |||
|
56 | QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues())); | |||
|
57 | QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues())); | |||
52 | //! [4] |
|
58 | //! [4] | |
53 |
|
59 | |||
54 | //! [5] |
|
60 | //! [5] |
@@ -5,8 +5,9 | |||||
5 |
|
5 | |||
6 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
6 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
7 |
|
7 | |||
8 | Bar::Bar(QGraphicsItem *parent) |
|
8 | Bar::Bar(QString category, QGraphicsItem *parent) | |
9 | : QGraphicsObject(parent) |
|
9 | : QGraphicsObject(parent) | |
|
10 | ,mCategory(category) | |||
10 | { |
|
11 | { | |
11 | setAcceptedMouseButtons(Qt::LeftButton|Qt::RightButton); |
|
12 | setAcceptedMouseButtons(Qt::LeftButton|Qt::RightButton); | |
12 | setAcceptHoverEvents(true); |
|
13 | setAcceptHoverEvents(true); | |
@@ -67,9 +68,9 QRectF Bar::boundingRect() const | |||||
67 | void Bar::mousePressEvent(QGraphicsSceneMouseEvent* event) |
|
68 | void Bar::mousePressEvent(QGraphicsSceneMouseEvent* event) | |
68 | { |
|
69 | { | |
69 | if (event->button() == Qt::LeftButton) { |
|
70 | if (event->button() == Qt::LeftButton) { | |
70 | emit clicked(); |
|
71 | emit clicked(mCategory); | |
71 | } else if (event->button() == Qt::RightButton) { |
|
72 | } else if (event->button() == Qt::RightButton) { | |
72 | emit rightClicked(); |
|
73 | emit rightClicked(mCategory); | |
73 | } |
|
74 | } | |
74 | } |
|
75 | } | |
75 |
|
76 |
@@ -13,7 +13,7 class Bar : public QGraphicsObject | |||||
13 | { |
|
13 | { | |
14 | Q_OBJECT |
|
14 | Q_OBJECT | |
15 | public: |
|
15 | public: | |
16 | Bar(QGraphicsItem *parent=0); |
|
16 | Bar(QString category, QGraphicsItem *parent=0); | |
17 |
|
17 | |||
18 | public: // from ChartItem |
|
18 | public: // from ChartItem | |
19 | void setSize(const QSizeF &size); |
|
19 | void setSize(const QSizeF &size); | |
@@ -33,8 +33,8 public: | |||||
33 | void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); |
|
33 | void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); | |
34 |
|
34 | |||
35 | Q_SIGNALS: |
|
35 | Q_SIGNALS: | |
36 | void clicked(); |
|
36 | void clicked(QString category); | |
37 | void rightClicked(); |
|
37 | void rightClicked(QString category); | |
38 | void hoverEntered(QPoint pos); |
|
38 | void hoverEntered(QPoint pos); | |
39 | void hoverLeaved(); |
|
39 | void hoverLeaved(); | |
40 |
|
40 | |||
@@ -48,6 +48,7 private: | |||||
48 | QBrush mBrush; |
|
48 | QBrush mBrush; | |
49 | QPen mPen; |
|
49 | QPen mPen; | |
50 |
|
50 | |||
|
51 | QString mCategory; | |||
51 | }; |
|
52 | }; | |
52 |
|
53 | |||
53 | QTCOMMERCIALCHART_END_NAMESPACE |
|
54 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -14,8 +14,7 SOURCES += \ | |||||
14 | $$PWD/qstackedbarseries.cpp \ |
|
14 | $$PWD/qstackedbarseries.cpp \ | |
15 | $$PWD/separator.cpp \ |
|
15 | $$PWD/separator.cpp \ | |
16 | $$PWD/stackedbarpresenter.cpp \ |
|
16 | $$PWD/stackedbarpresenter.cpp \ | |
17 |
$$PWD/barvalue.cpp |
|
17 | $$PWD/barvalue.cpp | |
18 | $$PWD/barcategory.cpp |
|
|||
19 |
|
18 | |||
20 | PRIVATE_HEADERS += \ |
|
19 | PRIVATE_HEADERS += \ | |
21 | $$PWD/bar_p.h \ |
|
20 | $$PWD/bar_p.h \ | |
@@ -26,8 +25,7 PRIVATE_HEADERS += \ | |||||
26 | $$PWD/percentbarpresenter_p.h \ |
|
25 | $$PWD/percentbarpresenter_p.h \ | |
27 | $$PWD/separator_p.h \ |
|
26 | $$PWD/separator_p.h \ | |
28 | $$PWD/stackedbarpresenter_p.h \ |
|
27 | $$PWD/stackedbarpresenter_p.h \ | |
29 |
$$PWD/barvalue_p.h |
|
28 | $$PWD/barvalue_p.h | |
30 | $$PWD/barcategory_p.h |
|
|||
31 |
|
29 | |||
32 | PUBLIC_HEADERS += \ |
|
30 | PUBLIC_HEADERS += \ | |
33 | $$PWD/qbarseries.h \ |
|
31 | $$PWD/qbarseries.h \ |
@@ -2,7 +2,6 | |||||
2 | #include <QVector> |
|
2 | #include <QVector> | |
3 | #include <QDebug> |
|
3 | #include <QDebug> | |
4 | #include "barchartmodel_p.h" |
|
4 | #include "barchartmodel_p.h" | |
5 | #include "barcategory_p.h" |
|
|||
6 | #include "qbarset.h" |
|
5 | #include "qbarset.h" | |
7 |
|
6 | |||
8 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
7 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
@@ -11,10 +10,6 BarChartModel::BarChartModel(QStringList categories, QObject *parent) : | |||||
11 | QObject(parent) |
|
10 | QObject(parent) | |
12 | ,mCategory(categories) |
|
11 | ,mCategory(categories) | |
13 | { |
|
12 | { | |
14 | for (int i=0; i<mCategory.count(); i++) { |
|
|||
15 | BarCategory* cat = new BarCategory(mCategory.at(i), this); |
|
|||
16 | mCategoryObjects.append(cat); |
|
|||
17 | } |
|
|||
18 | } |
|
13 | } | |
19 |
|
14 | |||
20 | QStringList BarChartModel::category() |
|
15 | QStringList BarChartModel::category() | |
@@ -172,11 +167,6 QString BarChartModel::categoryName(int category) | |||||
172 | return mCategory.at(category); |
|
167 | return mCategory.at(category); | |
173 | } |
|
168 | } | |
174 |
|
169 | |||
175 | BarCategory* BarChartModel::categoryObject(int category) |
|
|||
176 | { |
|
|||
177 | return mCategoryObjects.at(category); |
|
|||
178 | } |
|
|||
179 |
|
||||
180 | #include "moc_barchartmodel_p.cpp" |
|
170 | #include "moc_barchartmodel_p.cpp" | |
181 |
|
171 | |||
182 | QTCOMMERCIALCHART_END_NAMESPACE |
|
172 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -12,7 +12,6 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
12 | // TODO: Implement as QAbstractItemModel? |
|
12 | // TODO: Implement as QAbstractItemModel? | |
13 |
|
13 | |||
14 | class QBarSet; |
|
14 | class QBarSet; | |
15 | class BarCategory; |
|
|||
16 |
|
15 | |||
17 | class BarChartModel : public QObject //, public QAbstractItemModel |
|
16 | class BarChartModel : public QObject //, public QAbstractItemModel | |
18 | { |
|
17 | { | |
@@ -40,7 +39,6 public: | |||||
40 | qreal maxCategorySum(); // returns maximum sum of sets in all categories. |
|
39 | qreal maxCategorySum(); // returns maximum sum of sets in all categories. | |
41 |
|
40 | |||
42 | QString categoryName(int category); |
|
41 | QString categoryName(int category); | |
43 | BarCategory* categoryObject(int category); |
|
|||
44 |
|
42 | |||
45 | signals: |
|
43 | signals: | |
46 | void modelUpdated(); |
|
44 | void modelUpdated(); | |
@@ -51,7 +49,6 private: | |||||
51 |
|
49 | |||
52 | QList<QBarSet*> mDataModel; |
|
50 | QList<QBarSet*> mDataModel; | |
53 | QStringList mCategory; |
|
51 | QStringList mCategory; | |
54 | QList<BarCategory*> mCategoryObjects; |
|
|||
55 |
|
52 | |||
56 | int mCurrentSet; |
|
53 | int mCurrentSet; | |
57 |
|
54 |
@@ -3,7 +3,6 | |||||
3 | #include "barvalue_p.h" |
|
3 | #include "barvalue_p.h" | |
4 | #include "barlabel_p.h" |
|
4 | #include "barlabel_p.h" | |
5 | #include "separator_p.h" |
|
5 | #include "separator_p.h" | |
6 | #include "barcategory_p.h" |
|
|||
7 | #include "qbarset.h" |
|
6 | #include "qbarset.h" | |
8 | #include "qbarseries.h" |
|
7 | #include "qbarseries.h" | |
9 | #include <QDebug> |
|
8 | #include <QDebug> | |
@@ -20,7 +19,7 BarPresenterBase::BarPresenterBase(QBarSeries *series, QGraphicsItem *parent) | |||||
20 | ,mSeries(series) |
|
19 | ,mSeries(series) | |
21 | { |
|
20 | { | |
22 | connect(series,SIGNAL(showToolTip(QPoint,QString)),this,SLOT(showToolTip(QPoint,QString))); |
|
21 | connect(series,SIGNAL(showToolTip(QPoint,QString)),this,SLOT(showToolTip(QPoint,QString))); | |
23 | connect(series,SIGNAL(separatorsEnabled(bool)),this,SLOT(enableSeparators(bool))); |
|
22 | // connect(series,SIGNAL(separatorsEnabled(bool)),this,SLOT(enableSeparators(bool))); | |
24 | dataChanged(); |
|
23 | dataChanged(); | |
25 | } |
|
24 | } | |
26 |
|
25 | |||
@@ -70,14 +69,14 void BarPresenterBase::dataChanged() | |||||
70 |
|
69 | |||
71 | // Create new graphic items for bars |
|
70 | // Create new graphic items for bars | |
72 | for (int c=0; c<mSeries->categoryCount(); c++) { |
|
71 | for (int c=0; c<mSeries->categoryCount(); c++) { | |
73 |
|
|
72 | QString category = mSeries->categoryName(c); | |
74 | for (int s=0; s<mSeries->barsetCount(); s++) { |
|
73 | for (int s=0; s<mSeries->barsetCount(); s++) { | |
75 | QBarSet *set = mSeries->barsetAt(s); |
|
74 | QBarSet *set = mSeries->barsetAt(s); | |
76 | Bar *bar = new Bar(this); |
|
75 | Bar *bar = new Bar(category,this); | |
77 | childItems().append(bar); |
|
76 | childItems().append(bar); | |
78 | mBars.append(bar); |
|
77 | mBars.append(bar); | |
79 |
connect(bar,SIGNAL(clicked()),set,SL |
|
78 | connect(bar,SIGNAL(clicked(QString)),set,SIGNAL(clicked(QString))); | |
80 |
connect(bar,SIGNAL(rightClicked()), |
|
79 | connect(bar,SIGNAL(rightClicked(QString)),set,SIGNAL(rightClicked(QString))); | |
81 | connect(bar,SIGNAL(hoverEntered(QPoint)),set,SLOT(barHoverEnterEvent(QPoint))); |
|
80 | connect(bar,SIGNAL(hoverEntered(QPoint)),set,SLOT(barHoverEnterEvent(QPoint))); | |
82 | connect(bar,SIGNAL(hoverLeaved()),set,SLOT(barHoverLeaveEvent())); |
|
81 | connect(bar,SIGNAL(hoverLeaved()),set,SLOT(barHoverLeaveEvent())); | |
83 | } |
|
82 | } |
@@ -43,13 +43,6 void BarValue::setPos(qreal x, qreal y) | |||||
43 | mYpos = y; |
|
43 | mYpos = y; | |
44 | } |
|
44 | } | |
45 |
|
45 | |||
46 | /* |
|
|||
47 | bool BarValue::belongsToSet(QBarSet *set) |
|
|||
48 | { |
|
|||
49 | return (&mBarSet == set); |
|
|||
50 | } |
|
|||
51 | */ |
|
|||
52 |
|
||||
53 | void BarValue::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) |
|
46 | void BarValue::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) | |
54 | { |
|
47 | { | |
55 | if (isVisible()) { |
|
48 | if (isVisible()) { |
@@ -10,7 +10,6 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
10 | class QBarSet; |
|
10 | class QBarSet; | |
11 |
|
11 | |||
12 | // Visual class for floating bar values |
|
12 | // Visual class for floating bar values | |
13 | // TODO: fonts, colors etc. |
|
|||
14 | // By default these are not visible. |
|
13 | // By default these are not visible. | |
15 | class BarValue : public QGraphicsObject |
|
14 | class BarValue : public QGraphicsObject | |
16 | { |
|
15 | { | |
@@ -27,9 +26,6 public: | |||||
27 | void resize(qreal w, qreal h); |
|
26 | void resize(qreal w, qreal h); | |
28 | void setPos(qreal x, qreal y); |
|
27 | void setPos(qreal x, qreal y); | |
29 |
|
28 | |||
30 | // Propably not needed. |
|
|||
31 | // bool belongsToSet(QBarSet *set); |
|
|||
32 |
|
||||
33 | // From QGraphicsItem |
|
29 | // From QGraphicsItem | |
34 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); |
|
30 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); | |
35 | QRectF boundingRect() const; |
|
31 | QRectF boundingRect() const; |
@@ -2,7 +2,6 | |||||
2 | #include "qbarseries.h" |
|
2 | #include "qbarseries.h" | |
3 | #include "qbarset.h" |
|
3 | #include "qbarset.h" | |
4 | #include "barchartmodel_p.h" |
|
4 | #include "barchartmodel_p.h" | |
5 | #include "barcategory_p.h" |
|
|||
6 |
|
5 | |||
7 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
6 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
8 |
|
7 | |||
@@ -24,22 +23,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
24 | \brief Returns type of series. |
|
23 | \brief Returns type of series. | |
25 | \sa QSeries, QSeriesType |
|
24 | \sa QSeries, QSeriesType | |
26 | */ |
|
25 | */ | |
27 | /*! |
|
26 | ||
28 | \fn void QBarSeries::changed(int index) |
|
|||
29 | \brief \internal \a index |
|
|||
30 | */ |
|
|||
31 | /*! |
|
|||
32 | \fn void QBarSeries::floatingValuesEnabled(bool enabled) |
|
|||
33 | \brief \internal \a enabled |
|
|||
34 | */ |
|
|||
35 | /*! |
|
|||
36 | \fn void QBarSeries::toolTipEnabled(bool enabled) |
|
|||
37 | \brief \internal \a enabled |
|
|||
38 | */ |
|
|||
39 | /*! |
|
|||
40 | \fn void QBarSeries::separatorsEnabled(bool enabled) |
|
|||
41 | \brief \internal \a enabled |
|
|||
42 | */ |
|
|||
43 | /*! |
|
27 | /*! | |
44 | \fn void QBarSeries::showToolTip(QPoint pos, QString tip) |
|
28 | \fn void QBarSeries::showToolTip(QPoint pos, QString tip) | |
45 | \brief \internal \a pos \a tip |
|
29 | \brief \internal \a pos \a tip | |
@@ -53,25 +37,29 QBarSeries::QBarSeries(QStringList categories, QObject *parent) | |||||
53 | : QSeries(parent) |
|
37 | : QSeries(parent) | |
54 | ,mModel(new BarChartModel(categories, this)) |
|
38 | ,mModel(new BarChartModel(categories, this)) | |
55 | { |
|
39 | { | |
56 | for (int i=0; i<mModel->categoryCount(); i++) { |
|
|||
57 | BarCategory *categoryObject = mModel->categoryObject(i); |
|
|||
58 | connect(categoryObject, SIGNAL(rightClicked(QString)), this, SIGNAL(categoryRightClicked(QString))); |
|
|||
59 | } |
|
|||
60 | } |
|
40 | } | |
61 |
|
41 | |||
62 | /*! |
|
42 | /*! | |
63 | Adds a set of bars to series. Takes ownership of \a set |
|
43 | Adds a set of bars to series. Takes ownership of \a set. | |
|
44 | Connects the clicked(QString) and rightClicked(QString) signals | |||
|
45 | of \a set to this series | |||
64 | */ |
|
46 | */ | |
65 | void QBarSeries::addBarSet(QBarSet *set) |
|
47 | void QBarSeries::addBarSet(QBarSet *set) | |
66 | { |
|
48 | { | |
67 | mModel->addBarSet(set); |
|
49 | mModel->addBarSet(set); | |
|
50 | connect(set,SIGNAL(clicked(QString)),this,SLOT(barsetClicked(QString))); | |||
|
51 | connect(set,SIGNAL(rightClicked(QString)),this,SLOT(barsetRightClicked(QString))); | |||
68 | } |
|
52 | } | |
69 |
|
53 | |||
70 | /*! |
|
54 | /*! | |
71 | Removes a set of bars from series. Releases ownership of \a set. Doesnt delete \a set. |
|
55 | Removes a set of bars from series. Releases ownership of \a set. Doesnt delete \a set. | |
|
56 | Disconnects the clicked(QString) and rightClicked(QString) signals | |||
|
57 | of \a set from this series | |||
72 | */ |
|
58 | */ | |
73 | void QBarSeries::removeBarSet(QBarSet *set) |
|
59 | void QBarSeries::removeBarSet(QBarSet *set) | |
74 | { |
|
60 | { | |
|
61 | disconnect(set,SIGNAL(clicked(QString)),this,SLOT(barsetClicked(QString))); | |||
|
62 | disconnect(set,SIGNAL(rightClicked(QString)),this,SLOT(barsetRightClicked(QString))); | |||
75 | mModel->removeBarSet(set); |
|
63 | mModel->removeBarSet(set); | |
76 | } |
|
64 | } | |
77 |
|
65 | |||
@@ -124,26 +112,6 QString QBarSeries::categoryName(int category) | |||||
124 | } |
|
112 | } | |
125 |
|
113 | |||
126 | /*! |
|
114 | /*! | |
127 | Enables or disables floating values depending on parameter \a enabled. |
|
|||
128 | Floating values are bar values, that are displayed on top of each bar. |
|
|||
129 | Calling without parameter \a enabled, enables the floating values |
|
|||
130 | */ |
|
|||
131 | void QBarSeries::setFloatingValuesEnabled(bool enabled) |
|
|||
132 | { |
|
|||
133 | if (enabled) { |
|
|||
134 | for (int i=0; i<mModel->barsetCount(); i++) { |
|
|||
135 | QBarSet *set = mModel->setAt(i); |
|
|||
136 | connect(set,SIGNAL(clicked()),set,SIGNAL(toggleFloatingValues())); |
|
|||
137 | } |
|
|||
138 | } else { |
|
|||
139 | for (int i=0; i<mModel->barsetCount(); i++) { |
|
|||
140 | QBarSet *set = mModel->setAt(i); |
|
|||
141 | disconnect(set,SIGNAL(clicked()),set,SIGNAL(toggleFloatingValues())); |
|
|||
142 | } |
|
|||
143 | } |
|
|||
144 | } |
|
|||
145 |
|
||||
146 | /*! |
|
|||
147 | Enables or disables tooltip depending on parameter \a enabled. |
|
115 | Enables or disables tooltip depending on parameter \a enabled. | |
148 | Tooltip shows the name of set, when mouse is hovering on top of bar. |
|
116 | Tooltip shows the name of set, when mouse is hovering on top of bar. | |
149 | Calling without parameter \a enabled, enables the tooltip |
|
117 | Calling without parameter \a enabled, enables the tooltip | |
@@ -170,9 +138,28 void QBarSeries::setToolTipEnabled(bool enabled) | |||||
170 | */ |
|
138 | */ | |
171 | void QBarSeries::setSeparatorsEnabled(bool enabled) |
|
139 | void QBarSeries::setSeparatorsEnabled(bool enabled) | |
172 | { |
|
140 | { | |
173 | emit separatorsEnabled(enabled); |
|
141 | // TODO: toggle | |
|
142 | // emit separatorsEnabled(enabled); | |||
174 | } |
|
143 | } | |
175 |
|
144 | |||
|
145 | ||||
|
146 | /*! | |||
|
147 | \internal \a category | |||
|
148 | */ | |||
|
149 | void QBarSeries::barsetClicked(QString category) | |||
|
150 | { | |||
|
151 | emit clicked(qobject_cast<QBarSet*>(sender()), category); | |||
|
152 | } | |||
|
153 | ||||
|
154 | /*! | |||
|
155 | \internal \a category | |||
|
156 | */ | |||
|
157 | void QBarSeries::barsetRightClicked(QString category) | |||
|
158 | { | |||
|
159 | emit rightClicked(qobject_cast<QBarSet*>(sender()), category); | |||
|
160 | } | |||
|
161 | ||||
|
162 | ||||
176 | /*! |
|
163 | /*! | |
177 | \internal |
|
164 | \internal | |
178 | */ |
|
165 | */ | |
@@ -229,12 +216,6 BarChartModel& QBarSeries::model() | |||||
229 | return *mModel; |
|
216 | return *mModel; | |
230 | } |
|
217 | } | |
231 |
|
218 | |||
232 | BarCategory* QBarSeries::categoryObject(int category) |
|
|||
233 | { |
|
|||
234 | return mModel->categoryObject(category); |
|
|||
235 | } |
|
|||
236 |
|
||||
237 |
|
||||
238 | #include "moc_qbarseries.cpp" |
|
219 | #include "moc_qbarseries.cpp" | |
239 |
|
220 | |||
240 | QTCOMMERCIALCHART_END_NAMESPACE |
|
221 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -39,26 +39,27 public: | |||||
39 | qreal categorySum(int category); |
|
39 | qreal categorySum(int category); | |
40 | qreal maxCategorySum(); |
|
40 | qreal maxCategorySum(); | |
41 | BarChartModel& model(); |
|
41 | BarChartModel& model(); | |
42 | BarCategory* categoryObject(int category); |
|
|||
43 | // <--- TO PIMPL |
|
42 | // <--- TO PIMPL | |
44 |
|
43 | |||
45 | signals: |
|
44 | signals: | |
46 | void changed(int index); |
|
45 | //void changed(int index); | |
47 | void categoryRightClicked(QString category); |
|
46 | void clicked(QBarSet* barset, QString category); // Up to user of api, what to do with these signals | |
|
47 | void rightClicked(QBarSet* barset, QString category); | |||
48 |
|
48 | |||
49 | // TODO: internal signals, these to private implementation. |
|
49 | // TODO: internal signals, these to private implementation. | |
50 | // TODO: TO PIMPL ---> |
|
50 | // TODO: TO PIMPL ---> | |
51 | void floatingValuesEnabled(bool enabled); |
|
|||
52 | void toolTipEnabled(bool enabled); |
|
|||
53 | void separatorsEnabled(bool enabled); |
|
|||
54 | void showToolTip(QPoint pos, QString tip); |
|
51 | void showToolTip(QPoint pos, QString tip); | |
55 | // <--- TO PIMPL |
|
52 | // <--- TO PIMPL | |
56 |
|
53 | |||
57 | public Q_SLOTS: |
|
54 | public Q_SLOTS: | |
58 | void setFloatingValuesEnabled(bool enabled=true); // enables floating values on top of bars |
|
|||
59 | void setToolTipEnabled(bool enabled=true); // enables tooltips |
|
55 | void setToolTipEnabled(bool enabled=true); // enables tooltips | |
60 | void setSeparatorsEnabled(bool enabled=true); // enables separators between categories |
|
56 | void setSeparatorsEnabled(bool enabled=true); // enables separators between categories | |
61 |
|
57 | |||
|
58 | // TODO: TO PIMPL ---> | |||
|
59 | void barsetClicked(QString category); | |||
|
60 | void barsetRightClicked(QString category); | |||
|
61 | // <--- TO PIMPL | |||
|
62 | ||||
62 | protected: |
|
63 | protected: | |
63 | BarChartModel* mModel; |
|
64 | BarChartModel* mModel; | |
64 | }; |
|
65 | }; |
@@ -19,21 +19,32 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
19 | */ |
|
19 | */ | |
20 |
|
20 | |||
21 | /*! |
|
21 | /*! | |
22 | \fn void QBarSet::clicked() |
|
22 | \fn void QBarSet::clicked(QString category) | |
23 | \brief signals that set has been clicked |
|
23 | \brief signals that set has been clicked | |
|
24 | Parameter \a category describes on which category was clicked | |||
24 | */ |
|
25 | */ | |
|
26 | ||||
|
27 | /*! | |||
|
28 | \fn void QBarSet::rightClicked(QString category) | |||
|
29 | \brief signals that set has been clicked with right mouse button | |||
|
30 | Parameter \a category describes on which category was clicked | |||
|
31 | */ | |||
|
32 | ||||
25 | /*! |
|
33 | /*! | |
26 | \fn void QBarSet::hoverEnter(QPoint pos) |
|
34 | \fn void QBarSet::hoverEnter(QPoint pos) | |
27 | \brief signals that mouse has entered over the set at position \a pos. |
|
35 | \brief signals that mouse has entered over the set at position \a pos. | |
28 | */ |
|
36 | */ | |
|
37 | ||||
29 | /*! |
|
38 | /*! | |
30 | \fn void QBarSet::hoverLeave() |
|
39 | \fn void QBarSet::hoverLeave() | |
31 | \brief signals that mouse has left from the set. |
|
40 | \brief signals that mouse has left from the set. | |
32 | */ |
|
41 | */ | |
|
42 | ||||
33 | /*! |
|
43 | /*! | |
34 | \fn void QBarSet::toggleFloatingValues() |
|
44 | \fn void QBarSet::toggleFloatingValues() | |
35 | \brief \internal |
|
45 | \brief \internal | |
36 | */ |
|
46 | */ | |
|
47 | ||||
37 | /*! |
|
48 | /*! | |
38 | \fn void QBarSet::showToolTip(QPoint pos, QString tip) |
|
49 | \fn void QBarSet::showToolTip(QPoint pos, QString tip) | |
39 | \brief \internal \a pos \a tip |
|
50 | \brief \internal \a pos \a tip | |
@@ -130,16 +141,20 QBrush QBarSet::brush() | |||||
130 | return mBrush; |
|
141 | return mBrush; | |
131 | } |
|
142 | } | |
132 |
|
143 | |||
133 |
/* |
|
144 | /* | |
134 | \internal |
|
145 | void QBarSet::barClickedEvent(QString category) | |
135 | */ |
|
|||
136 | void QBarSet::barClickedEvent() |
|
|||
137 |
|
|
146 | { | |
138 | // Some bar of this set has been clicked |
|
147 | // Some bar of this set has been clicked | |
139 | // TODO: What happens then? |
|
148 | // TODO: What happens then? | |
140 | emit clicked(); // Notify that set has been clicked |
|
149 | emit clicked(category); // Notify that set has been clicked | |
141 |
|
|
150 | } | |
142 |
|
|
151 | ||
|
152 | void QBarSet::barRightClickedEvent(QString category) | |||
|
153 | { | |||
|
154 | emit rightClicked(category); | |||
|
155 | } | |||
|
156 | */ | |||
|
157 | ||||
143 | /*! |
|
158 | /*! | |
144 | \internal \a pos |
|
159 | \internal \a pos | |
145 | */ |
|
160 | */ |
@@ -28,20 +28,22 public: | |||||
28 | QBrush brush(); |
|
28 | QBrush brush(); | |
29 |
|
29 | |||
30 | Q_SIGNALS: |
|
30 | Q_SIGNALS: | |
31 | void clicked(); // Clicked and hover signals exposed to user |
|
31 | void clicked(QString category); // Clicked and hover signals exposed to user | |
32 | void hoverEnter(QPoint pos); |
|
32 | void rightClicked(QString category); | |
33 | void hoverLeave(); |
|
33 | void toggleFloatingValues(); | |
34 |
|
34 | |||
35 | // TODO: Expose this to user or not? |
|
35 | // TODO: Expose this to user or not? | |
36 | // TODO: TO PIMPL ---> |
|
36 | // TODO: TO PIMPL ---> | |
37 | void toggleFloatingValues(); |
|
37 | void hoverEnter(QPoint pos); | |
|
38 | void hoverLeave(); | |||
38 | void showToolTip(QPoint pos, QString tip); // Private signal |
|
39 | void showToolTip(QPoint pos, QString tip); // Private signal | |
39 | // <--- TO PIMPL |
|
40 | // <--- TO PIMPL | |
40 |
|
41 | |||
41 | public Q_SLOTS: |
|
42 | public Q_SLOTS: | |
42 | // These are for internal communication |
|
43 | // These are for internal communication | |
43 | // TODO: TO PIMPL ---> |
|
44 | // TODO: TO PIMPL ---> | |
44 | void barClickedEvent(); |
|
45 | // void barClickedEvent(QString category); | |
|
46 | // void barRightClickedEvent(QString category); | |||
45 | void barHoverEnterEvent(QPoint pos); |
|
47 | void barHoverEnterEvent(QPoint pos); | |
46 | void barHoverLeaveEvent(); |
|
48 | void barHoverLeaveEvent(); | |
47 | // <--- TO PIMPL |
|
49 | // <--- TO PIMPL |
@@ -146,7 +146,7 void ChartPresenter::handleSeriesAdded(QSeries* series) | |||||
146 | BarPresenter* item = new BarPresenter(barSeries,m_chart); |
|
146 | BarPresenter* item = new BarPresenter(barSeries,m_chart); | |
147 | m_chartTheme->decorate(item,barSeries,m_chartItems.count()); |
|
147 | m_chartTheme->decorate(item,barSeries,m_chartItems.count()); | |
148 | QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&))); |
|
148 | QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&))); | |
149 | QObject::connect(barSeries,SIGNAL(changed(int)),item,SLOT(handleModelChanged(int))); |
|
149 | // QObject::connect(barSeries,SIGNAL(changed(int)),item,SLOT(handleModelChanged(int))); | |
150 | m_chartItems.insert(series,item); |
|
150 | m_chartItems.insert(series,item); | |
151 | // m_axisXItem->setVisible(false); |
|
151 | // m_axisXItem->setVisible(false); | |
152 | if(m_rect.isValid()) item->handleGeometryChanged(m_rect); |
|
152 | if(m_rect.isValid()) item->handleGeometryChanged(m_rect); | |
@@ -159,7 +159,7 void ChartPresenter::handleSeriesAdded(QSeries* series) | |||||
159 | StackedBarPresenter* item = new StackedBarPresenter(stackedBarSeries,m_chart); |
|
159 | StackedBarPresenter* item = new StackedBarPresenter(stackedBarSeries,m_chart); | |
160 | m_chartTheme->decorate(item,stackedBarSeries,m_chartItems.count()); |
|
160 | m_chartTheme->decorate(item,stackedBarSeries,m_chartItems.count()); | |
161 | QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&))); |
|
161 | QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&))); | |
162 | QObject::connect(stackedBarSeries,SIGNAL(changed(int)),item,SLOT(handleModelChanged(int))); |
|
162 | // QObject::connect(stackedBarSeries,SIGNAL(changed(int)),item,SLOT(handleModelChanged(int))); | |
163 | m_chartItems.insert(series,item); |
|
163 | m_chartItems.insert(series,item); | |
164 | if(m_rect.isValid()) item->handleGeometryChanged(m_rect); |
|
164 | if(m_rect.isValid()) item->handleGeometryChanged(m_rect); | |
165 | break; |
|
165 | break; | |
@@ -171,7 +171,7 void ChartPresenter::handleSeriesAdded(QSeries* series) | |||||
171 | PercentBarPresenter* item = new PercentBarPresenter(percentBarSeries,m_chart); |
|
171 | PercentBarPresenter* item = new PercentBarPresenter(percentBarSeries,m_chart); | |
172 | m_chartTheme->decorate(item,percentBarSeries ,m_chartItems.count()); |
|
172 | m_chartTheme->decorate(item,percentBarSeries ,m_chartItems.count()); | |
173 | QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&))); |
|
173 | QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&))); | |
174 | QObject::connect(percentBarSeries,SIGNAL(changed(int)),item,SLOT(handleModelChanged(int))); |
|
174 | // QObject::connect(percentBarSeries,SIGNAL(changed(int)),item,SLOT(handleModelChanged(int))); | |
175 | m_chartItems.insert(series,item); |
|
175 | m_chartItems.insert(series,item); | |
176 | if(m_rect.isValid()) item->handleGeometryChanged(m_rect); |
|
176 | if(m_rect.isValid()) item->handleGeometryChanged(m_rect); | |
177 | break; |
|
177 | break; |
@@ -290,7 +290,8 void MainWidget::addSeries(QString seriesName, int columnCount, int rowCount, QS | |||||
290 | } |
|
290 | } | |
291 | series->addBarSet(set); |
|
291 | series->addBarSet(set); | |
292 | } |
|
292 | } | |
293 | series->setFloatingValuesEnabled(true); |
|
293 | // TODO: new implementation of setFloatingValuesEnabled with signals | |
|
294 | //series->setFloatingValuesEnabled(true); | |||
294 | series->setToolTipEnabled(true); |
|
295 | series->setToolTipEnabled(true); | |
295 | series->setSeparatorsEnabled(false); |
|
296 | series->setSeparatorsEnabled(false); | |
296 | m_chartView->addSeries(series); |
|
297 | m_chartView->addSeries(series); |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now