qhbarmodelmapper.cpp
249 lines
| 7.5 KiB
| text/x-c
|
CppLexer
Marek Rosa
|
r1355 | /**************************************************************************** | ||
** | ||||
** Copyright (C) 2012 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$ | ||||
** | ||||
****************************************************************************/ | ||||
Marek Rosa
|
r1294 | #include "qhbarmodelmapper.h" | ||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
Marek Rosa
|
r1331 | /*! | ||
\class QHBarModelMapper | ||||
sauimone
|
r1502 | \brief Horizontal model mapper for bar series | ||
Marek Rosa
|
r1331 | \mainclass | ||
Marek Rosa
|
r1397 | Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series. | ||
sauimone
|
r1586 | Horizontal 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. | ||||
Marek Rosa
|
r1378 | NOTE: used model has to support adding/removing rows/columns and modifying the data of the cells. | ||
Marek Rosa
|
r1331 | */ | ||
Tero Ahola
|
r1492 | /*! | ||
Tero Ahola
|
r1497 | \qmlclass HBarModelMapper QHBarModelMapper | ||
Tero Ahola
|
r1492 | |||
HBarModelMapper allows you to use your own QAbstractItemModel derived model with data in rows as a data source | ||||
Tero Ahola
|
r1516 | for any bar series. It is possible to use both QAbstractItemModel and bar series data API to manipulate data. | ||
HBarModelMapper 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 rows). Each bar set would contain data starting from column 1. The name of a set would be defined by | ||||
the vertical header (of the row). | ||||
Tero Ahola
|
r1492 | \code | ||
BarSeries { | ||||
HBarModelMapper { | ||||
Tero Ahola
|
r1497 | model: myCustomModel // QAbstractItemModel derived implementation | ||
Tero Ahola
|
r1492 | firstBarSetRow: 1 | ||
lastBarSetRow: 3 | ||||
Tero Ahola
|
r1496 | firstColumn: 1 | ||
Tero Ahola
|
r1492 | } | ||
} | ||||
\endcode | ||||
*/ | ||||
Marek Rosa
|
r1331 | |||
Marek Rosa
|
r1509 | /*! | ||
\property QHBarModelMapper::series | ||||
\brief Defines the QPieSeries object that is used by the mapper. | ||||
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 HBarModelMapper::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 QHBarModelMapper::model | ||||
\brief Defines the model that is used by the mapper. | ||||
*/ | ||||
Tero Ahola
|
r1497 | /*! | ||
Tero Ahola
|
r1516 | \qmlproperty SomeModel HBarModelMapper::model | ||
Tero Ahola
|
r1497 | The QAbstractItemModel based model that is used by the mapper. You need to implement the model and expose it to | ||
QML as shown in \l {QML Custom Model} demo application. NOTE: the model has to support adding/removing rows/columns | ||||
and modifying the data of the cells. | ||||
*/ | ||||
Marek Rosa
|
r1348 | /*! | ||
\property QHBarModelMapper::firstBarSetRow | ||||
\brief Defines which column of the model is used as the data source for the first bar set | ||||
Default value is: -1 (invalid mapping) | ||||
*/ | ||||
Tero Ahola
|
r1497 | /*! | ||
\qmlproperty int HBarModelMapper::firstBarSetRow | ||||
Defines which column of the model is used as the data source for the first bar set. The default value is -1 | ||||
(invalid mapping). | ||||
*/ | ||||
Marek Rosa
|
r1348 | |||
/*! | ||||
\property QHBarModelMapper::lastBarSetRow | ||||
\brief Defines which column of the model is used as the data source for the last bar set | ||||
Default value is: -1 (invalid mapping) | ||||
*/ | ||||
Tero Ahola
|
r1497 | /*! | ||
\qmlproperty int HBarModelMapper::lastBarSetRow | ||||
Defines which column of the model is used as the data source for the last bar set. The default value is -1 | ||||
(invalid mapping). | ||||
*/ | ||||
Marek Rosa
|
r1348 | |||
Marek Rosa
|
r1495 | /*! | ||
\property QHBarModelMapper::firstColumn | ||||
\brief Defines which column of the model contains the first values of the QBarSets in the series. | ||||
Minimal and default value is: 0 | ||||
*/ | ||||
/*! | ||||
Tero Ahola
|
r1497 | \qmlproperty int HBarModelMapper::firstColumn | ||
Marek Rosa
|
r1495 | Defines which column of the model contains the first values of the QBarSets in the series. | ||
The default value is 0. | ||||
*/ | ||||
/*! | ||||
\property QHBarModelMapper::columnCount | ||||
sauimone
|
r1586 | \brief Defines the number of columns of the model that are mapped as the data for QAbstractBarSeries | ||
Tero Ahola
|
r1497 | Minimal and default value is: -1 (count limited by the number of columns in the model) | ||
Marek Rosa
|
r1495 | */ | ||
/*! | ||||
Tero Ahola
|
r1497 | \qmlproperty int HBarModelMapper::columnCount | ||
sauimone
|
r1586 | Defines the number of columns of the model that are mapped as the data for QAbstractBarSeries. The default value is | ||
Tero Ahola
|
r1497 | -1 (count limited by the number of columns in the model) | ||
Marek Rosa
|
r1495 | */ | ||
Marek Rosa
|
r1509 | /*! | ||
\fn void QHBarModelMapper::seriesReplaced() | ||||
Emitted when the series to which mapper is connected to has changed. | ||||
*/ | ||||
/*! | ||||
\fn void QHBarModelMapper::modelReplaced() | ||||
Emitted when the model to which mapper is connected to has changed. | ||||
*/ | ||||
Marek Rosa
|
r1478 | /*! | ||
\fn void QHBarModelMapper::firstBarSetRowChanged() | ||||
Emitted when the firstBarSetRow has changed. | ||||
*/ | ||||
/*! | ||||
\fn void QHBarModelMapper::lastBarSetRowChanged() | ||||
Emitted when the lastBarSetRow has changed. | ||||
*/ | ||||
Marek Rosa
|
r1495 | /*! | ||
\fn void QHBarModelMapper::firstColumnChanged() | ||||
Emitted when the firstColumn has changed. | ||||
*/ | ||||
/*! | ||||
\fn void QHBarModelMapper::columnCountChanged() | ||||
Emitted when the columnCount has changed. | ||||
*/ | ||||
Marek Rosa
|
r1347 | /*! | ||
Constructs a mapper object which is a child of \a parent. | ||||
*/ | ||||
Marek Rosa
|
r1294 | QHBarModelMapper::QHBarModelMapper(QObject *parent) : | ||
QBarModelMapper(parent) | ||||
{ | ||||
Marek Rosa
|
r1311 | QBarModelMapper::setOrientation(Qt::Horizontal); | ||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1509 | QAbstractItemModel* QHBarModelMapper::model() const | ||
{ | ||||
return QBarModelMapper::model(); | ||||
} | ||||
void QHBarModelMapper::setModel(QAbstractItemModel *model) | ||||
{ | ||||
if (model != QBarModelMapper::model()) { | ||||
QBarModelMapper::setModel(model); | ||||
emit modelReplaced(); | ||||
} | ||||
} | ||||
sauimone
|
r1584 | QAbstractBarSeries* QHBarModelMapper::series() const | ||
Marek Rosa
|
r1509 | { | ||
return QBarModelMapper::series(); | ||||
} | ||||
sauimone
|
r1584 | void QHBarModelMapper::setSeries(QAbstractBarSeries *series) | ||
Marek Rosa
|
r1509 | { | ||
if (series != QBarModelMapper::series()) { | ||||
QBarModelMapper::setSeries(series); | ||||
emit seriesReplaced(); | ||||
} | ||||
} | ||||
Marek Rosa
|
r1312 | int QHBarModelMapper::firstBarSetRow() const | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1312 | return QBarModelMapper::firstBarSetSection(); | ||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1312 | void QHBarModelMapper::setFirstBarSetRow(int firstBarSetRow) | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1478 | if (firstBarSetRow != firstBarSetSection()) { | ||
Marek Rosa
|
r1495 | QBarModelMapper::setFirstBarSetSection(firstBarSetRow); | ||
Marek Rosa
|
r1478 | emit firstBarSetRowChanged(); | ||
} | ||||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1312 | int QHBarModelMapper::lastBarSetRow() const | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1312 | return QBarModelMapper::lastBarSetSection(); | ||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1312 | void QHBarModelMapper::setLastBarSetRow(int lastBarSetRow) | ||
Marek Rosa
|
r1294 | { | ||
Marek Rosa
|
r1478 | if (lastBarSetRow != lastBarSetSection()) { | ||
Marek Rosa
|
r1495 | QBarModelMapper::setLastBarSetSection(lastBarSetRow); | ||
Marek Rosa
|
r1478 | emit lastBarSetRowChanged(); | ||
} | ||||
Marek Rosa
|
r1294 | } | ||
Marek Rosa
|
r1495 | int QHBarModelMapper::firstColumn() const | ||
{ | ||||
return QBarModelMapper::first(); | ||||
} | ||||
void QHBarModelMapper::setFirstColumn(int firstColumn) | ||||
{ | ||||
if (firstColumn != first()) { | ||||
QBarModelMapper::setFirst(firstColumn); | ||||
emit firstColumnChanged(); | ||||
} | ||||
} | ||||
int QHBarModelMapper::columnCount() const | ||||
{ | ||||
return QBarModelMapper::count(); | ||||
} | ||||
void QHBarModelMapper::setColumnCount(int columnCount) | ||||
{ | ||||
if (columnCount != count()) { | ||||
QBarModelMapper::setCount(columnCount); | ||||
Marek Rosa
|
r1923 | emit columnCountChanged(); | ||
Marek Rosa
|
r1495 | } | ||
} | ||||
Marek Rosa
|
r1294 | #include "moc_qhbarmodelmapper.cpp" | ||
QTCOMMERCIALCHART_END_NAMESPACE | ||||