qvbarmodelmapper.cpp
255 lines
| 7.5 KiB
| text/x-c
|
CppLexer
Marek Rosa
|
r1355 | /**************************************************************************** | ||
** | ||||
Titta Heikkala
|
r2776 | ** Copyright (C) 2015 The Qt Company Ltd | ||
Marek Rosa
|
r1355 | ** All rights reserved. | ||
Titta Heikkala
|
r2776 | ** For any questions to The Qt Company, please use contact form at http://qt.io | ||
Marek Rosa
|
r1355 | ** | ||
Titta Heikkala
|
r2740 | ** This file is part of the Qt Charts module. | ||
Marek Rosa
|
r1355 | ** | ||
Titta Heikkala
|
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
|
r2776 | ** agreement between you and The Qt Company. | ||
Marek Rosa
|
r1355 | ** | ||
** If you have questions regarding the use of this file, please use | ||||
Titta Heikkala
|
r2740 | ** contact form at http://qt.io | ||
Marek Rosa
|
r1355 | ** | ||
****************************************************************************/ | ||||
Titta Heikkala
|
r2714 | #include <QtCharts/QVBarModelMapper> | ||
Marek Rosa
|
r1294 | |||
Titta Heikkala
|
r2712 | QT_CHARTS_BEGIN_NAMESPACE | ||
Marek Rosa
|
r1294 | |||
Marek Rosa
|
r1331 | /*! | ||
\class QVBarModelMapper | ||||
Titta Heikkala
|
r2639 | \inmodule Qt Charts | ||
Miikka Heikkinen
|
r2520 | \brief Vertical model mapper for bar series. | ||
Marek Rosa
|
r1331 | |||
Marek Rosa
|
r1397 | Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series. | ||
sauimone
|
r1586 | Vertical model mapper is used to create a connection between QAbstractBarSeries and QAbstractItemModel derived model object. | ||
Marek Rosa
|
r1485 | Model mapper maintains equal size of all the BarSets. | ||
Adding/removing value from the BarSet causes the the same change in the rest of the BarSets added to the same series. | ||||
Miikka Heikkinen
|
r2494 | \note Used model has to support adding/removing rows/columns and modifying the data of the cells. | ||
Marek Rosa
|
r1331 | */ | ||
Tero Ahola
|
r1492 | /*! | ||
Titta Heikkala
|
r2639 | \qmltype VBarModelMapper | ||
\instantiates QVBarModelMapper | ||||
Titta Heikkala
|
r2712 | \inqmlmodule QtCharts | ||
Titta Heikkala
|
r2639 | |||
Titta Heikkala
|
r2712 | \inherits BarModelMapper | ||
\brief Vertical model mapper for bar series. | ||||
Tero Ahola
|
r1492 | |||
Titta Heikkala
|
r2712 | VBarModelMapper allows you to use your own QAbstractItemModel derived model with data in columns | ||
as a data source for any bar series. It is possible to use both QAbstractItemModel and bar | ||||
series data API to manipulate data. VBarModelMapper keeps the series and the model in sync. | ||||
The following QML example would create a bar series with three bar sets (assuming the model has | ||||
at least four columns). Each bar set would contain data starting from row 1. The name of a set | ||||
would be defined by the horizontal header (of the column). | ||||
\code | ||||
BarSeries { | ||||
VBarModelMapper { | ||||
model: myCustomModel // QAbstractItemModel derived implementation | ||||
firstBarSetColumn: 1 | ||||
lastBarSetColumn: 3 | ||||
firstRow: 1 | ||||
} | ||||
} | ||||
\endcode | ||||
Tero Ahola
|
r1492 | */ | ||
Marek Rosa
|
r1331 | |||
Marek Rosa
|
r1509 | /*! | ||
\property QVBarModelMapper::series | ||||
Mika Salmela
|
r2548 | \brief Defines the QBarSeries object that is used by the mapper. | ||
Marek Rosa
|
r1509 | |||
All the data in the series is discarded when it is set to the mapper. | ||||
When new series is specified the old series is disconnected (it preserves its data) | ||||
*/ | ||||
Tero Ahola
|
r1497 | /*! | ||
sauimone
|
r1590 | \qmlproperty AbstractBarSeries VBarModelMapper::series | ||
Defines the AbstractBarSeries based object that is used by the mapper. All the data in the series is discarded when it is | ||||
Tero Ahola
|
r1497 | set to the mapper. When new series is specified the old series is disconnected (it preserves its data). | ||
*/ | ||||
Marek Rosa
|
r1509 | /*! | ||
\property QVBarModelMapper::model | ||||
\brief Defines the model that is used by the mapper. | ||||
*/ | ||||
Tero Ahola
|
r1497 | /*! | ||
Tero Ahola
|
r1516 | \qmlproperty SomeModel VBarModelMapper::model | ||
Titta Heikkala
|
r2618 | The QAbstractItemModel based model that is used by the mapper. You need to implement the model | ||
and expose it to QML. Note: the model has to support adding/removing rows/columns and modifying | ||||
the data of the cells. | ||||
Tero Ahola
|
r1497 | */ | ||
Marek Rosa
|
r1348 | /*! | ||
\property QVBarModelMapper::firstBarSetColumn | ||||
Miikka Heikkinen
|
r2520 | \brief Defines which column of the model is used as the data source for the first bar set. | ||
Marek Rosa
|
r1348 | Default value is: -1 (invalid mapping) | ||
*/ | ||||
Tero Ahola
|
r1492 | /*! | ||
\qmlproperty int VBarModelMapper::firstBarSetColumn | ||||
Defines which column of the model is used as the data source for the first bar set. Default value | ||||
is: -1 (invalid mapping). | ||||
*/ | ||||
Marek Rosa
|
r1348 | |||
/*! | ||||
\property QVBarModelMapper::lastBarSetColumn | ||||
Miikka Heikkinen
|
r2520 | \brief Defines which column of the model is used as the data source for the last bar set. | ||
Marek Rosa
|
r1348 | Default value is: -1 (invalid mapping) | ||
*/ | ||||
Tero Ahola
|
r1492 | /*! | ||
\qmlproperty int VBarModelMapper::lastBarSetColumn | ||||
Defines which column of the model is used as the data source for the last bar set. Default | ||||
value is: -1 (invalid mapping). | ||||
*/ | ||||
Marek Rosa
|
r1348 | |||
Marek Rosa
|
r1495 | /*! | ||
\property QVBarModelMapper::firstRow | ||||
\brief Defines which row of the model contains the first values of the QBarSets in the series. | ||||
Miikka Heikkinen
|
r2520 | |||
Marek Rosa
|
r1495 | Minimal and default value is: 0 | ||
*/ | ||||
/*! | ||||
Tero Ahola
|
r1497 | \qmlproperty int VBarModelMapper::firstRow | ||
Marek Rosa
|
r1495 | Defines which row of the model contains the first values of the QBarSets in the series. | ||
The default value is 0. | ||||
*/ | ||||
/*! | ||||
\property QVBarModelMapper::rowCount | ||||
Miikka Heikkinen
|
r2520 | \brief Defines the number of rows of the model that are mapped as the data for QAbstractBarSeries. | ||
Marek Rosa
|
r1495 | Minimal and default value is: -1 (count limited by the number of rows in the model) | ||
*/ | ||||
/*! | ||||
Tero Ahola
|
r1497 | \qmlproperty int VBarModelMapper::rowCount | ||
sauimone
|
r1586 | Defines the number of rows of the model that are mapped as the data for QAbstractBarSeries. The default value is | ||
Marek Rosa
|
r1495 | -1 (count limited by the number of rows in the model) | ||
*/ | ||||
Marek Rosa
|
r1509 | /*! | ||
\fn void QVBarModelMapper::seriesReplaced() | ||||
Emitted when the series to which mapper is connected to has changed. | ||||
*/ | ||||
/*! | ||||
\fn void QVBarModelMapper::modelReplaced() | ||||
Emitted when the model to which mapper is connected to has changed. | ||||
*/ | ||||
Marek Rosa
|
r1478 | /*! | ||
\fn void QVBarModelMapper::firstBarSetColumnChanged() | ||||
Emitted when the firstBarSetColumn has changed. | ||||
*/ | ||||
/*! | ||||
\fn void QVBarModelMapper::lastBarSetColumnChanged() | ||||
Emitted when the lastBarSetColumn has changed. | ||||
*/ | ||||
Marek Rosa
|
r1495 | /*! | ||
\fn void QVBarModelMapper::firstRowChanged() | ||||
Emitted when the firstRow has changed. | ||||
*/ | ||||
/*! | ||||
\fn void QVBarModelMapper::rowCountChanged() | ||||
Emitted when the rowCount has changed. | ||||
*/ | ||||
Marek Rosa
|
r1347 | /*! | ||
Constructs a mapper object which is a child of \a parent. | ||||
*/ | ||||
Marek Rosa
|
r1294 | QVBarModelMapper::QVBarModelMapper(QObject *parent) : | ||
QBarModelMapper(parent) | ||||
{ | ||||
Marek Rosa
|
r1311 | QBarModelMapper::setOrientation(Qt::Vertical); | ||
Marek Rosa
|
r1294 | } | ||
Jani Honkonen
|
r2104 | QAbstractItemModel *QVBarModelMapper::model() const | ||
Marek Rosa
|
r1509 | { | ||
return QBarModelMapper::model(); | ||||
} | ||||
void QVBarModelMapper::setModel(QAbstractItemModel *model) | ||||
{ | ||||
if (model != QBarModelMapper::model()) { | ||||
QBarModelMapper::setModel(model); | ||||
emit modelReplaced(); | ||||
} | ||||
} | ||||
Jani Honkonen
|
r2104 | QAbstractBarSeries *QVBarModelMapper::series() const | ||
Marek Rosa
|
r1509 | { | ||
return QBarModelMapper::series(); | ||||
} | ||||
sauimone
|
r1584 | void QVBarModelMapper::setSeries(QAbstractBarSeries *series) | ||
Marek Rosa
|
r1509 | { | ||
if (series != QBarModelMapper::series()) { | ||||
QBarModelMapper::setSeries(series); | ||||
emit seriesReplaced(); | ||||
} | ||||
} | ||||
Marek Rosa
|
r1312 | int QVBarModelMapper::firstBarSetColumn() const | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1312 | return QBarModelMapper::firstBarSetSection(); | ||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1312 | void QVBarModelMapper::setFirstBarSetColumn(int firstBarSetColumn) | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1478 | if (firstBarSetColumn != firstBarSetSection()) { | ||
Marek Rosa
|
r1495 | QBarModelMapper::setFirstBarSetSection(firstBarSetColumn); | ||
Marek Rosa
|
r1478 | emit firstBarSetColumnChanged(); | ||
} | ||||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1312 | int QVBarModelMapper::lastBarSetColumn() const | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1312 | return QBarModelMapper::lastBarSetSection(); | ||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1312 | void QVBarModelMapper::setLastBarSetColumn(int lastBarSetColumn) | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1478 | if (lastBarSetColumn != lastBarSetSection()) { | ||
Marek Rosa
|
r1495 | QBarModelMapper::setLastBarSetSection(lastBarSetColumn); | ||
Marek Rosa
|
r1478 | emit lastBarSetColumnChanged(); | ||
} | ||||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1495 | int QVBarModelMapper::firstRow() const | ||
{ | ||||
return QBarModelMapper::first(); | ||||
} | ||||
void QVBarModelMapper::setFirstRow(int firstRow) | ||||
{ | ||||
if (firstRow != first()) { | ||||
QBarModelMapper::setFirst(firstRow); | ||||
emit firstRowChanged(); | ||||
} | ||||
} | ||||
int QVBarModelMapper::rowCount() const | ||||
{ | ||||
return QBarModelMapper::count(); | ||||
} | ||||
void QVBarModelMapper::setRowCount(int rowCount) | ||||
{ | ||||
if (rowCount != count()) { | ||||
QBarModelMapper::setCount(rowCount); | ||||
Marek Rosa
|
r1923 | emit rowCountChanged(); | ||
Marek Rosa
|
r1495 | } | ||
} | ||||
Marek Rosa
|
r1294 | #include "moc_qvbarmodelmapper.cpp" | ||
Titta Heikkala
|
r2712 | QT_CHARTS_END_NAMESPACE | ||