summaryrefslogtreecommitdiffstats
path: root/src/charts/axis/polarchartaxisangular.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/axis/polarchartaxisangular.cpp')
-rw-r--r--src/charts/axis/polarchartaxisangular.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/charts/axis/polarchartaxisangular.cpp b/src/charts/axis/polarchartaxisangular.cpp
index 9b22058d..b09ebc03 100644
--- a/src/charts/axis/polarchartaxisangular.cpp
+++ b/src/charts/axis/polarchartaxisangular.cpp
@@ -51,6 +51,8 @@ void PolarChartAxisAngular::updateGeometry()
QList<QGraphicsItem *> gridItemList = gridItems();
QList<QGraphicsItem *> labelItemList = labelItems();
QList<QGraphicsItem *> shadeItemList = shadeItems();
+ QList<QGraphicsItem *> minorGridItemList = minorGridItems();
+ QList<QGraphicsItem *> minorArrowItemList = minorArrowItems();
QGraphicsTextItem *title = titleItem();
QGraphicsEllipseItem *axisLine = static_cast<QGraphicsEllipseItem *>(arrowItemList.at(0));
@@ -217,6 +219,36 @@ void PolarChartAxisAngular::updateGeometry()
shadeItem->setVisible(true);
firstShade = false;
}
+
+ // Minor ticks
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(axis());
+ if ((i + 1) != layout.size() && valueAxis) {
+ int minorTickCount = valueAxis->minorTickCount();
+ if (minorTickCount != 0) {
+ qreal minorAngularCoordinate = (layout[i + 1] - layout[i])
+ / qreal(minorTickCount + 1);
+ for (int j = 0; j < minorTickCount; j++) {
+ QGraphicsLineItem *minorGridItem =
+ static_cast<QGraphicsLineItem *>(minorGridItemList.at(i * minorTickCount + j));
+ QGraphicsLineItem *minorTickItem =
+ static_cast<QGraphicsLineItem *>(minorArrowItemList.at(i * minorTickCount + j));
+ qreal minorAngle = 90.0 - angularCoordinate
+ - minorAngularCoordinate * qreal(j + 1);
+ QLineF minorGridLine = QLineF::fromPolar(radius, minorAngle);
+ minorGridLine.translate(center);
+ minorGridItem->setLine(minorGridLine);
+ minorGridItem->setVisible(true);
+
+ QLineF minorTickLine(QLineF::fromPolar(radius - tickWidth() + 1,
+ minorAngle).p2(),
+ QLineF::fromPolar(radius + tickWidth() - 1,
+ minorAngle).p2());
+ minorTickLine.translate(center);
+ minorTickItem->setLine(minorTickLine);
+ minorTickItem->setVisible(true);
+ }
+ }
+ }
}
// Title, centered above the chart
@@ -299,6 +331,19 @@ void PolarChartAxisAngular::handleGridPenChanged(const QPen &pen)
static_cast<QGraphicsLineItem *>(item)->setPen(pen);
}
+void PolarChartAxisAngular::handleMinorArrowPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorArrowItems()) {
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+ }
+}
+
+void PolarChartAxisAngular::handleMinorGridPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorGridItems())
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+}
+
QSizeF PolarChartAxisAngular::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
Q_UNUSED(which);
@@ -426,6 +471,36 @@ QRectF PolarChartAxisAngular::moveLabelToPosition(qreal angularCoordinate, QPoin
return labelRect;
}
+void PolarChartAxisAngular::updateMinorTickItems()
+{
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(this->axis());
+ if (valueAxis) {
+ int currentCount = minorArrowItems().size();
+ int expectedCount = valueAxis->minorTickCount() * (valueAxis->tickCount() - 1);
+ int diff = expectedCount - currentCount;
+ if (diff > 0) {
+ for (int i = 0; i < diff; i++) {
+ QGraphicsLineItem *minorArrow = new QGraphicsLineItem(presenter()->rootItem());
+ QGraphicsLineItem *minorGrid = new QGraphicsLineItem(presenter()->rootItem());
+ minorArrow->setPen(valueAxis->linePen());
+ minorGrid->setPen(valueAxis->minorGridLinePen());
+ minorArrowGroup()->addToGroup(minorArrow);
+ minorGridGroup()->addToGroup(minorGrid);
+ }
+ } else {
+ QList<QGraphicsItem *> minorGridLines = minorGridItems();
+ QList<QGraphicsItem *> minorArrows = minorArrowItems();
+ for (int i = 0; i > diff; i--) {
+ if (!minorGridLines.isEmpty())
+ delete(minorGridLines.takeLast());
+ if (!minorArrows.isEmpty())
+ delete(minorArrows.takeLast());
+ }
+ }
+ }
+}
+
+
#include "moc_polarchartaxisangular_p.cpp"
QT_CHARTS_END_NAMESPACE