declarativeboxplotseries.cpp
134 lines
| 4.5 KiB
| text/x-c
|
CppLexer
Mika Salmela
|
r2481 | /**************************************************************************** | ||
** | ||||
** Copyright (C) 2013 Digia Plc | ||||
** All rights reserved. | ||||
** For any questions to Digia, please use contact form at http://qt.digia.com | ||||
** | ||||
** This file is part of the Qt Commercial Charts Add-on. | ||||
** | ||||
** $QT_BEGIN_LICENSE$ | ||||
** Licensees holding valid Qt Commercial licenses may use this file in | ||||
** accordance with the Qt Commercial License Agreement provided with the | ||||
** Software or, alternatively, in accordance with the terms contained in | ||||
** a written agreement between you and Digia. | ||||
** | ||||
** If you have questions regarding the use of this file, please use | ||||
** contact form at http://qt.digia.com | ||||
** $QT_END_LICENSE$ | ||||
** | ||||
****************************************************************************/ | ||||
#include "declarativebarseries.h" | ||||
#include "declarativeboxplotseries.h" | ||||
Mika Salmela
|
r2486 | #include "qboxset.h" | ||
Mika Salmela
|
r2528 | #include "qvboxplotmodelmapper.h" | ||
Mika Salmela
|
r2481 | |||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
Mika Salmela
|
r2528 | DeclarativeBoxSet::DeclarativeBoxSet(const QString label, QObject *parent) | ||
: QBoxSet(label, parent) | ||||
Mika Salmela
|
r2486 | { | ||
connect(this, SIGNAL(valuesAdded(int,int)), this, SLOT(handleCountChanged(int,int))); | ||||
Mika Salmela
|
r2528 | //connect(this, SIGNAL(valuesRemoved(int,int)), this, SLOT(handleCountChanged(int,int))); | ||
Mika Salmela
|
r2486 | } | ||
void DeclarativeBoxSet::handleCountChanged(int index, int count) | ||||
{ | ||||
Q_UNUSED(index) | ||||
Q_UNUSED(count) | ||||
emit countChanged(QBoxSet::count()); | ||||
} | ||||
QVariantList DeclarativeBoxSet::values() | ||||
{ | ||||
QVariantList values; | ||||
for (int i(0); i < count(); i++) | ||||
values.append(QVariant(QBoxSet::at(i))); | ||||
return values; | ||||
} | ||||
void DeclarativeBoxSet::setValues(QVariantList values) | ||||
{ | ||||
for (int i(0); i < values.count(); i++) { | ||||
if (values.at(i).canConvert(QVariant::Double)) | ||||
QBoxSet::append(values[i].toDouble()); | ||||
} | ||||
} | ||||
Mika Salmela
|
r2531 | // ===================================================== | ||
Mika Salmela
|
r2486 | |||
Mika Salmela
|
r2481 | DeclarativeBoxPlotSeries::DeclarativeBoxPlotSeries(QDeclarativeItem *parent) : | ||
QBoxPlotSeries(parent), | ||||
m_axes(new DeclarativeAxes(this)) | ||||
{ | ||||
connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); | ||||
connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); | ||||
connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); | ||||
connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); | ||||
Mika Salmela
|
r2531 | connect(this, SIGNAL(hovered(bool, QBoxSet*)), this, SLOT(onHovered(bool, QBoxSet*))); | ||
connect(this, SIGNAL(clicked(QBoxSet*)), this, SLOT(onClicked(QBoxSet*))); | ||||
Mika Salmela
|
r2481 | } | ||
void DeclarativeBoxPlotSeries::classBegin() | ||||
{ | ||||
} | ||||
void DeclarativeBoxPlotSeries::componentComplete() | ||||
{ | ||||
foreach (QObject *child, children()) { | ||||
Mika Salmela
|
r2486 | if (qobject_cast<DeclarativeBoxSet *>(child)) { | ||
QBoxPlotSeries::append(qobject_cast<DeclarativeBoxSet *>(child)); | ||||
Mika Salmela
|
r2528 | } else if (qobject_cast<QVBoxPlotModelMapper *>(child)) { | ||
QVBoxPlotModelMapper *mapper = qobject_cast<QVBoxPlotModelMapper *>(child); | ||||
mapper->setSeries(this); | ||||
}// else if (qobject_cast<QHBarModelMapper *>(child)) { // TODO: Horisontal | ||||
//QHBarModelMapper *mapper = qobject_cast<QHBarModelMapper *>(child); //TODO | ||||
Mika Salmela
|
r2486 | //mapper->setSeries(this); | ||
Mika Salmela
|
r2528 | //} | ||
Mika Salmela
|
r2481 | } | ||
} | ||||
QDeclarativeListProperty<QObject> DeclarativeBoxPlotSeries::seriesChildren() | ||||
{ | ||||
return QDeclarativeListProperty<QObject>(this, 0, &DeclarativeBoxPlotSeries::appendSeriesChildren); | ||||
} | ||||
void DeclarativeBoxPlotSeries::appendSeriesChildren(QDeclarativeListProperty<QObject> * list, QObject *element) | ||||
{ | ||||
// Empty implementation; the children are parsed in componentComplete instead | ||||
Q_UNUSED(list); | ||||
Q_UNUSED(element); | ||||
} | ||||
Mika Salmela
|
r2486 | DeclarativeBoxSet *DeclarativeBoxPlotSeries::at(int index) | ||
Mika Salmela
|
r2481 | { | ||
Mika Salmela
|
r2486 | QList<QBoxSet *> setList = boxSets(); | ||
Mika Salmela
|
r2481 | if (index >= 0 && index < setList.count()) | ||
Mika Salmela
|
r2486 | return qobject_cast<DeclarativeBoxSet *>(setList[index]); | ||
Mika Salmela
|
r2481 | |||
return 0; | ||||
} | ||||
Mika Salmela
|
r2528 | DeclarativeBoxSet *DeclarativeBoxPlotSeries::insert(int index, const QString label, QVariantList values) | ||
Mika Salmela
|
r2481 | { | ||
Mika Salmela
|
r2528 | DeclarativeBoxSet *barset = new DeclarativeBoxSet(label, this); | ||
Mika Salmela
|
r2481 | barset->setValues(values); | ||
if (QBoxPlotSeries::insert(index, barset)) | ||||
return barset; | ||||
delete barset; | ||||
return 0; | ||||
} | ||||
Mika Salmela
|
r2531 | void DeclarativeBoxPlotSeries::onHovered(bool status, QBoxSet *boxset) | ||
{ | ||||
emit hovered(status, qobject_cast<DeclarativeBoxSet *>(boxset)); | ||||
} | ||||
void DeclarativeBoxPlotSeries::onClicked(QBoxSet *boxset) | ||||
{ | ||||
emit clicked(qobject_cast<DeclarativeBoxSet *>(boxset)); | ||||
} | ||||
Mika Salmela
|
r2481 | |||
#include "moc_declarativeboxplotseries.cpp" | ||||
QTCOMMERCIALCHART_END_NAMESPACE | ||||