summaryrefslogtreecommitdiffstats
path: root/src/charts/axis/cartesianchartaxis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/axis/cartesianchartaxis.cpp')
-rw-r--r--src/charts/axis/cartesianchartaxis.cpp50
1 files changed, 41 insertions, 9 deletions
diff --git a/src/charts/axis/cartesianchartaxis.cpp b/src/charts/axis/cartesianchartaxis.cpp
index 34e618c2..935a9601 100644
--- a/src/charts/axis/cartesianchartaxis.cpp
+++ b/src/charts/axis/cartesianchartaxis.cpp
@@ -81,17 +81,25 @@ void CartesianChartAxis::createItems(int count)
for (int i = 0; i < count; ++i) {
QGraphicsLineItem *arrow = new QGraphicsLineItem(this);
QGraphicsLineItem *grid = new QGraphicsLineItem(this);
- QGraphicsTextItem *label = axis()->type() == QAbstractAxis::AxisTypeValue
- ? new ValueAxisLabel(this)
- : new QGraphicsTextItem(this);
- if (axis()->type() == QAbstractAxis::AxisTypeValue) {
- ValueAxisLabel *valueLabel = static_cast<ValueAxisLabel *>(label);
- connect(valueLabel, &ValueAxisLabel::valueChanged,
- this, &ChartAxisElement::labelEdited);
- // only QValueAxis labels editable for now
+ QGraphicsTextItem *label;
+ if (axis()->type() == QtCharts::QAbstractAxis::AxisTypeValue) {
+ label = new ValueAxisLabel(this);
+ connect(static_cast<ValueAxisLabel *>(label), &ValueAxisLabel::valueChanged,
+ this, &ChartAxisElement::valueLabelEdited);
if (labelsEditable())
- valueLabel->setEditable(true);
+ static_cast<ValueAxisLabel *>(label)->setEditable(true);
+ } else if (axis()->type() == QtCharts::QAbstractAxis::AxisTypeDateTime) {
+ DateTimeAxisLabel *dateTimeLabel = new DateTimeAxisLabel(this);
+ label = dateTimeLabel;
+ connect(dateTimeLabel, &DateTimeAxisLabel::dateTimeChanged,
+ this, &ChartAxisElement::dateTimeLabelEdited);
+ if (labelsEditable())
+ dateTimeLabel->setEditable(true);
+ dateTimeLabel->setFormat(static_cast<QDateTimeAxis*>(axis())->format());
+ } else {
+ label = new QGraphicsTextItem(this);
}
+
label->document()->setDocumentMargin(ChartPresenter::textMargin());
arrow->setPen(axis()->linePen());
grid->setPen(axis()->gridLinePen());
@@ -281,6 +289,18 @@ QSizeF CartesianChartAxis::sizeHint(Qt::SizeHint which, const QSizeF &constraint
return QSizeF();
}
+void CartesianChartAxis::setDateTimeLabelsFormat(const QString &format)
+{
+ if (max() <= min()
+ || layout().size() < 1
+ || axis()->type() != QAbstractAxis::AxisTypeDateTime) {
+ return;
+ }
+
+ for (int i = 0; i < layout().size(); i++)
+ static_cast<DateTimeAxisLabel *>(labelItems().at(i))->setFormat(format);
+}
+
void CartesianChartAxis::handleArrowPenChanged(const QPen &pen)
{
foreach (QGraphicsItem *item, arrowItems())
@@ -366,6 +386,18 @@ void CartesianChartAxis::updateLabelsValues(QValueAxis *axis)
}
}
+void CartesianChartAxis::updateLabelsDateTimes()
+{
+ if (max() <= min() || layout().size() < 1)
+ return;
+
+ for (int i = 0; i < layout().size(); i++) {
+ qreal value = min() + (i * (max() - min()) / (layout().size() - 1));
+ static_cast<DateTimeAxisLabel *>(labelItems().at(i))->setValue(
+ QDateTime::fromMSecsSinceEpoch(value));
+ }
+}
+
QT_CHARTS_END_NAMESPACE
#include "moc_cartesianchartaxis_p.cpp"