##// END OF EJS Templates
Add possibility to set reverse values to axes...
Add possibility to set reverse values to axes Added support for reverse axis. This works with line, spline, scatter and area series with cartesian chart. QBarCategoryAxis is not supported, nor different bar series. Change-Id: I60f21372ea9cee7b49918d7d99de24671bdc42c3 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>

File last commit:

r2776:bc1f6aa59d42
r2781:7c9f8e5a27d8
Show More
qxymodelmapper.cpp
532 lines | 16.0 KiB | text/x-c | CppLexer
/ src / charts / xychart / qxymodelmapper.cpp
Marek Rosa
Added license text to mapper classes
r1355 /****************************************************************************
**
Titta Heikkala
Copyright header changes...
r2776 ** Copyright (C) 2015 The Qt Company Ltd
Marek Rosa
Added license text to mapper classes
r1355 ** All rights reserved.
Titta Heikkala
Copyright header changes...
r2776 ** For any questions to The Qt Company, please use contact form at http://qt.io
Marek Rosa
Added license text to mapper classes
r1355 **
Titta Heikkala
Updated license headers...
r2740 ** This file is part of the Qt Charts module.
Marek Rosa
Added license text to mapper classes
r1355 **
Titta Heikkala
Updated license headers...
r2740 ** Licensees holding valid commercial license for Qt may use this file in
** accordance with the Qt License Agreement provided with the Software
** or, alternatively, in accordance with the terms contained in a written
Titta Heikkala
Copyright header changes...
r2776 ** agreement between you and The Qt Company.
Marek Rosa
Added license text to mapper classes
r1355 **
** If you have questions regarding the use of this file, please use
Titta Heikkala
Updated license headers...
r2740 ** contact form at http://qt.io
Marek Rosa
Added license text to mapper classes
r1355 **
****************************************************************************/
Titta Heikkala
Fix include syntax...
r2714 #include <QtCharts/QXYModelMapper>
#include <private/qxymodelmapper_p.h>
#include <QtCharts/QXYSeries>
#include <QtCore/QAbstractItemModel>
#include <QtCore/QDateTime>
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_BEGIN_NAMESPACE
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164
Marek Rosa
ModelMappers dosc update
r1347 /*!
Constructs a mapper object which is a child of \a parent.
*/
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QXYModelMapper::QXYModelMapper(QObject *parent)
: QObject(parent),
d_ptr(new QXYModelMapperPrivate(this))
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 {
}
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Jani Honkonen
more coding style fixes for src-folder...
r2104 QAbstractItemModel *QXYModelMapper::model() const
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 {
Q_D(const QXYModelMapper);
return d->m_model;
}
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 void QXYModelMapper::setModel(QAbstractItemModel *model)
{
if (model == 0)
return;
Q_D(QXYModelMapper);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (d->m_model)
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 disconnect(d->m_model, 0, d, 0);
d->m_model = model;
d->initializeXYFromModel();
// connect signals from the model
connect(d->m_model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), d, SLOT(modelUpdated(QModelIndex,QModelIndex)));
connect(d->m_model, SIGNAL(rowsInserted(QModelIndex,int,int)), d, SLOT(modelRowsAdded(QModelIndex,int,int)));
connect(d->m_model, SIGNAL(rowsRemoved(QModelIndex,int,int)), d, SLOT(modelRowsRemoved(QModelIndex,int,int)));
connect(d->m_model, SIGNAL(columnsInserted(QModelIndex,int,int)), d, SLOT(modelColumnsAdded(QModelIndex,int,int)));
connect(d->m_model, SIGNAL(columnsRemoved(QModelIndex,int,int)), d, SLOT(modelColumnsRemoved(QModelIndex,int,int)));
Christian Kandeler
QXYModelMapper: Handle model reset....
r2773 connect(d->m_model, SIGNAL(modelReset()), d, SLOT(initializeXYFromModel()));
Marek Rosa
Model mappers now connected to series and model destroy signals
r1656 connect(d->m_model, SIGNAL(destroyed()), d, SLOT(handleModelDestroyed()));
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Jani Honkonen
more coding style fixes for src-folder...
r2104 QXYSeries *QXYModelMapper::series() const
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(const QXYModelMapper);
return d->m_series;
}
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 void QXYModelMapper::setSeries(QXYSeries *series)
{
Q_D(QXYModelMapper);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (d->m_series)
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 disconnect(d->m_series, 0, d, 0);
if (series == 0)
return;
d->m_series = series;
d->initializeXYFromModel();
// connect the signals from the series
connect(d->m_series, SIGNAL(pointAdded(int)), d, SLOT(handlePointAdded(int)));
connect(d->m_series, SIGNAL(pointRemoved(int)), d, SLOT(handlePointRemoved(int)));
Marek Rosa
XYModelMapper slots for series signals implemented
r1262 connect(d->m_series, SIGNAL(pointReplaced(int)), d, SLOT(handlePointReplaced(int)));
Marek Rosa
Model mappers now connected to series and model destroy signals
r1656 connect(d->m_series, SIGNAL(destroyed()), d, SLOT(handleSeriesDestroyed()));
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 int QXYModelMapper::first() const
{
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(const QXYModelMapper);
return d->m_first;
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 void QXYModelMapper::setFirst(int first)
{
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(QXYModelMapper);
Marek Rosa
QXYModelMapper removed from the docs
r1507 d->m_first = qMax(first, 0);
d->initializeXYFromModel();
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 int QXYModelMapper::count() const
{
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(const QXYModelMapper);
return d->m_count;
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
QXYModelMapper removed from the docs
r1507 /*!
\internal
*/
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 void QXYModelMapper::setCount(int count)
{
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(QXYModelMapper);
Marek Rosa
QXYModelMapper removed from the docs
r1507 d->m_count = qMax(count, -1);
d->initializeXYFromModel();
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
Added documentation for XYModelMapper classes
r1344 /*!
Returns the orientation that is used when QXYModelMapper accesses the model.
This mean whether the consecutive x/y values of the QXYSeries are read from rows (Qt::Horizontal)
or from columns (Qt::Vertical)
*/
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 Qt::Orientation QXYModelMapper::orientation() const
{
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(const QXYModelMapper);
return d->m_orientation;
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
Added documentation for XYModelMapper classes
r1344 /*!
Returns the \a orientation that is used when QXYModelMapper accesses the model.
This mean whether the consecutive x/y values of the QXYSeries are read from rows (Qt::Horizontal)
or from columns (Qt::Vertical)
*/
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 void QXYModelMapper::setOrientation(Qt::Orientation orientation)
{
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(QXYModelMapper);
d->m_orientation = orientation;
d->initializeXYFromModel();
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
Added documentation for XYModelMapper classes
r1344 /*!
Returns which section of the model is kept in sync with the x values of the QXYSeries
*/
Marek Rosa
Added Vertical and Horizontal QXYModelMapper
r1252 int QXYModelMapper::xSection() const
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(const QXYModelMapper);
return d->m_xSection;
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
Added documentation for XYModelMapper classes
r1344 /*!
Sets the model section that is kept in sync with the x values of the QXYSeries.
Parameter \a xSection specifies the section of the model.
*/
Marek Rosa
Added Vertical and Horizontal QXYModelMapper
r1252 void QXYModelMapper::setXSection(int xSection)
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(QXYModelMapper);
Marek Rosa
Added tests for XYModelMapper
r1352 d->m_xSection = qMax(-1, xSection);
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 d->initializeXYFromModel();
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
Added documentation for XYModelMapper classes
r1344 /*!
Returns which section of the model is kept in sync with the y values of the QXYSeries
*/
Marek Rosa
Added Vertical and Horizontal QXYModelMapper
r1252 int QXYModelMapper::ySection() const
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(const QXYModelMapper);
return d->m_ySection;
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
Added documentation for XYModelMapper classes
r1344 /*!
Sets the model section that is kept in sync with the y values of the QXYSeries.
Parameter \a ySection specifies the section of the model.
*/
Marek Rosa
Added Vertical and Horizontal QXYModelMapper
r1252 void QXYModelMapper::setYSection(int ySection)
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 Q_D(QXYModelMapper);
Marek Rosa
Added tests for XYModelMapper
r1352 d->m_ySection = qMax(-1, ySection);
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 d->initializeXYFromModel();
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
QXYModelMapperPrivate::QXYModelMapperPrivate(QXYModelMapper *q) :
Marek Rosa
Added QDonutGroup class
r1671 QObject(q),
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 m_series(0),
m_model(0),
m_first(0),
m_count(-1),
m_orientation(Qt::Vertical),
m_xSection(-1),
m_ySection(-1),
m_seriesSignalsBlock(false),
m_modelSignalsBlock(false),
q_ptr(q)
{
}
void QXYModelMapperPrivate::blockModelSignals(bool block)
{
m_modelSignalsBlock = block;
}
void QXYModelMapperPrivate::blockSeriesSignals(bool block)
{
m_seriesSignalsBlock = block;
}
QModelIndex QXYModelMapperPrivate::xModelIndex(int xPos)
{
if (m_count != -1 && xPos >= m_count)
return QModelIndex(); // invalid
if (m_orientation == Qt::Vertical)
return m_model->index(xPos + m_first, m_xSection);
else
return m_model->index(m_xSection, xPos + m_first);
}
QModelIndex QXYModelMapperPrivate::yModelIndex(int yPos)
{
if (m_count != -1 && yPos >= m_count)
return QModelIndex(); // invalid
if (m_orientation == Qt::Vertical)
return m_model->index(yPos + m_first, m_ySection);
else
return m_model->index(m_ySection, yPos + m_first);
}
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 qreal QXYModelMapperPrivate::valueFromModel(QModelIndex index)
{
QVariant value = m_model->data(index, Qt::DisplayRole);
switch (value.type()) {
case QVariant::DateTime:
return value.toDateTime().toMSecsSinceEpoch();
case QVariant::Date:
return QDateTime(value.toDate()).toMSecsSinceEpoch();
default:
return value.toReal();
}
}
void QXYModelMapperPrivate::setValueToModel(QModelIndex index, qreal value)
{
QVariant oldValue = m_model->data(index, Qt::DisplayRole);
switch (oldValue.type()) {
case QVariant::DateTime:
m_model->setData(index, QDateTime::fromMSecsSinceEpoch(value));
break;
case QVariant::Date:
m_model->setData(index, QDateTime::fromMSecsSinceEpoch(value).date());
break;
default:
m_model->setData(index, value);
}
}
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 void QXYModelMapperPrivate::handlePointAdded(int pointPos)
{
Marek Rosa
XYModelMapper slots for series signals implemented
r1262 if (m_seriesSignalsBlock)
return;
if (m_count != -1)
m_count += 1;
blockModelSignals();
if (m_orientation == Qt::Vertical)
m_model->insertRows(pointPos + m_first, 1);
else
m_model->insertColumns(pointPos + m_first, 1);
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 setValueToModel(xModelIndex(pointPos), m_series->points().at(pointPos).x());
setValueToModel(yModelIndex(pointPos), m_series->points().at(pointPos).y());
Marek Rosa
XYModelMapper slots for series signals implemented
r1262 blockModelSignals(false);
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
void QXYModelMapperPrivate::handlePointRemoved(int pointPos)
{
Marek Rosa
XYModelMapper slots for series signals implemented
r1262 if (m_seriesSignalsBlock)
return;
if (m_count != -1)
m_count -= 1;
blockModelSignals();
if (m_orientation == Qt::Vertical)
m_model->removeRow(pointPos + m_first);
else
m_model->removeColumn(pointPos + m_first);
blockModelSignals(false);
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
void QXYModelMapperPrivate::handlePointReplaced(int pointPos)
{
Marek Rosa
XYModelMapper slots for series signals implemented
r1262 if (m_seriesSignalsBlock)
return;
blockModelSignals();
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 setValueToModel(xModelIndex(pointPos), m_series->points().at(pointPos).x());
setValueToModel(yModelIndex(pointPos), m_series->points().at(pointPos).y());
Marek Rosa
XYModelMapper slots for series signals implemented
r1262 blockModelSignals(false);
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
Marek Rosa
Model mappers now connected to series and model destroy signals
r1656 void QXYModelMapperPrivate::handleSeriesDestroyed()
{
m_series = 0;
}
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 void QXYModelMapperPrivate::modelUpdated(QModelIndex topLeft, QModelIndex bottomRight)
{
Tero Ahola
XY model mappers to QML api
r1278 if (m_model == 0 || m_series == 0)
return;
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 if (m_modelSignalsBlock)
return;
blockSeriesSignals();
QModelIndex index;
QPointF oldPoint;
QPointF newPoint;
for (int row = topLeft.row(); row <= bottomRight.row(); row++) {
for (int column = topLeft.column(); column <= bottomRight.column(); column++) {
index = topLeft.sibling(row, column);
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 if (m_orientation == Qt::Vertical && (index.column() == m_xSection || index.column() == m_ySection)) {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 if (index.row() >= m_first && (m_count == - 1 || index.row() < m_first + m_count)) {
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 QModelIndex xIndex = xModelIndex(index.row() - m_first);
QModelIndex yIndex = yModelIndex(index.row() - m_first);
if (xIndex.isValid() && yIndex.isValid()) {
oldPoint = m_series->points().at(index.row() - m_first);
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 newPoint.setX(valueFromModel(xIndex));
newPoint.setY(valueFromModel(yIndex));
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 }
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
} else if (m_orientation == Qt::Horizontal && (index.row() == m_xSection || index.row() == m_ySection)) {
if (index.column() >= m_first && (m_count == - 1 || index.column() < m_first + m_count)) {
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 QModelIndex xIndex = xModelIndex(index.column() - m_first);
QModelIndex yIndex = yModelIndex(index.column() - m_first);
if (xIndex.isValid() && yIndex.isValid()) {
oldPoint = m_series->points().at(index.column() - m_first);
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 newPoint.setX(valueFromModel(xIndex));
newPoint.setY(valueFromModel(yIndex));
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 }
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
} else {
continue;
}
m_series->replace(oldPoint, newPoint);
}
}
Marek Rosa
BarModelMapper: implemented model updated slots. Some more work needed with categories
r1295 blockSeriesSignals(false);
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
void QXYModelMapperPrivate::modelRowsAdded(QModelIndex parent, int start, int end)
{
Q_UNUSED(parent);
if (m_modelSignalsBlock)
return;
blockSeriesSignals();
if (m_orientation == Qt::Vertical)
insertData(start, end);
else if (start <= m_xSection || start <= m_ySection) // if the changes affect the map - reinitialize the xy
initializeXYFromModel();
blockSeriesSignals(false);
}
void QXYModelMapperPrivate::modelRowsRemoved(QModelIndex parent, int start, int end)
{
Q_UNUSED(parent);
if (m_modelSignalsBlock)
return;
blockSeriesSignals();
if (m_orientation == Qt::Vertical)
removeData(start, end);
else if (start <= m_xSection || start <= m_ySection) // if the changes affect the map - reinitialize the xy
initializeXYFromModel();
blockSeriesSignals(false);
}
void QXYModelMapperPrivate::modelColumnsAdded(QModelIndex parent, int start, int end)
{
Q_UNUSED(parent);
if (m_modelSignalsBlock)
return;
blockSeriesSignals();
if (m_orientation == Qt::Horizontal)
insertData(start, end);
else if (start <= m_xSection || start <= m_ySection) // if the changes affect the map - reinitialize the xy
initializeXYFromModel();
blockSeriesSignals(false);
}
void QXYModelMapperPrivate::modelColumnsRemoved(QModelIndex parent, int start, int end)
{
Q_UNUSED(parent);
if (m_modelSignalsBlock)
return;
blockSeriesSignals();
if (m_orientation == Qt::Horizontal)
removeData(start, end);
else if (start <= m_xSection || start <= m_ySection) // if the changes affect the map - reinitialize the xy
initializeXYFromModel();
blockSeriesSignals(false);
}
Marek Rosa
Model mappers now connected to series and model destroy signals
r1656 void QXYModelMapperPrivate::handleModelDestroyed()
{
m_model = 0;
}
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 void QXYModelMapperPrivate::insertData(int start, int end)
{
if (m_model == 0 || m_series == 0)
return;
if (m_count != -1 && start >= m_first + m_count) {
return;
} else {
int addedCount = end - start + 1;
if (m_count != -1 && addedCount > m_count)
addedCount = m_count;
int first = qMax(start, m_first);
int last = qMin(first + addedCount - 1, m_orientation == Qt::Vertical ? m_model->rowCount() - 1 : m_model->columnCount() - 1);
for (int i = first; i <= last; i++) {
QPointF point;
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 QModelIndex xIndex = xModelIndex(i - m_first);
QModelIndex yIndex = yModelIndex(i - m_first);
if (xIndex.isValid() && yIndex.isValid()) {
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 point.setX(valueFromModel(xIndex));
point.setY(valueFromModel(yIndex));
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 m_series->insert(i - m_first, point);
}
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
Marek Rosa
Small code comments fixes
r1880 // remove excess of points (above m_count)
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 if (m_count != -1 && m_series->points().size() > m_count)
for (int i = m_series->points().size() - 1; i >= m_count; i--) {
m_series->remove(m_series->points().at(i));
}
}
}
void QXYModelMapperPrivate::removeData(int start, int end)
{
if (m_model == 0 || m_series == 0)
return;
int removedCount = end - start + 1;
if (m_count != -1 && start >= m_first + m_count) {
return;
} else {
Marek Rosa
Added Vertical and Horizontal BarModelMappers
r1294 int toRemove = qMin(m_series->count(), removedCount); // first find how many items can actually be removed
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 int first = qMax(start, m_first); // get the index of the first item that will be removed.
Marek Rosa
Added Vertical and Horizontal BarModelMappers
r1294 int last = qMin(first + toRemove - 1, m_series->count() + m_first - 1); // get the index of the last item that will be removed.
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 for (int i = last; i >= first; i--) {
m_series->remove(m_series->points().at(i - m_first));
}
if (m_count != -1) {
int itemsAvailable; // check how many are available to be added
if (m_orientation == Qt::Vertical)
Marek Rosa
Added Vertical and Horizontal BarModelMappers
r1294 itemsAvailable = m_model->rowCount() - m_first - m_series->count();
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 else
Marek Rosa
Added Vertical and Horizontal BarModelMappers
r1294 itemsAvailable = m_model->columnCount() - m_first - m_series->count();
int toBeAdded = qMin(itemsAvailable, m_count - m_series->count()); // add not more items than there is space left to be filled.
int currentSize = m_series->count();
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 if (toBeAdded > 0)
Marek Rosa
Added Vertical and Horizontal BarModelMappers
r1294 for (int i = m_series->count(); i < currentSize + toBeAdded; i++) {
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 QPointF point;
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 QModelIndex xIndex = xModelIndex(i);
QModelIndex yIndex = yModelIndex(i);
if (xIndex.isValid() && yIndex.isValid()) {
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 point.setX(valueFromModel(xIndex));
point.setY(valueFromModel(yIndex));
Marek Rosa
Fixed problem with qhxymodelmapper
r1317 m_series->insert(i, point);
}
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 }
}
}
}
void QXYModelMapperPrivate::initializeXYFromModel()
{
if (m_model == 0 || m_series == 0)
return;
blockSeriesSignals();
// clear current content
m_series->clear();
Marek Rosa
Small code comments fixes
r1880 // create the initial points set
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 int pointPos = 0;
QModelIndex xIndex = xModelIndex(pointPos);
QModelIndex yIndex = yModelIndex(pointPos);
while (xIndex.isValid() && yIndex.isValid()) {
QPointF point;
Marek Rosa
XYModelMapper: added support for models with QDate and QDateTime cells
r2107 point.setX(valueFromModel(xIndex));
point.setY(valueFromModel(yIndex));
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 m_series->append(point);
pointPos++;
xIndex = xModelIndex(pointPos);
yIndex = yModelIndex(pointPos);
}
blockSeriesSignals(false);
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164 }
#include "moc_qxymodelmapper.cpp"
Marek Rosa
XYModelMapper slots for model signals implemented
r1256 #include "moc_qxymodelmapper_p.cpp"
Marek Rosa
Mapper class added for xyseries and pieseries. Model support commented out for barseries for now.
r1164
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_END_NAMESPACE