summaryrefslogtreecommitdiffstats
path: root/src/charts/barchart/qhbarmodelmapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/barchart/qhbarmodelmapper.cpp')
-rw-r--r--src/charts/barchart/qhbarmodelmapper.cpp258
1 files changed, 258 insertions, 0 deletions
diff --git a/src/charts/barchart/qhbarmodelmapper.cpp b/src/charts/barchart/qhbarmodelmapper.cpp
new file mode 100644
index 00000000..0312df40
--- /dev/null
+++ b/src/charts/barchart/qhbarmodelmapper.cpp
@@ -0,0 +1,258 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 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 Enterprise Charts Add-on.
+**
+** $QT_BEGIN_LICENSE$
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise 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 "qhbarmodelmapper.h"
+
+QT_CHARTS_BEGIN_NAMESPACE
+
+/*!
+ \class QHBarModelMapper
+ \inmodule Qt Charts
+ \brief Horizontal model mapper for bar series.
+ \mainclass
+
+ Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series.
+ Horizontal model mapper is used to create a connection between QAbstractBarSeries and QAbstractItemModel derived model object.
+ 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.
+ \note Used model has to support adding/removing rows/columns and modifying the data of the cells.
+*/
+/*!
+ \qmltype HBarModelMapper
+ \instantiates QHBarModelMapper
+ \inqmlmodule QtCharts
+
+ \brief Horizontal model mapper for bar series.
+
+ HBarModelMapper allows you to use your own QAbstractItemModel derived model with data in rows as
+ a data source 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).
+ \code
+ BarSeries {
+ HBarModelMapper {
+ model: myCustomModel // QAbstractItemModel derived implementation
+ firstBarSetRow: 1
+ lastBarSetRow: 3
+ firstColumn: 1
+ }
+ }
+ \endcode
+*/
+
+/*!
+ \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)
+*/
+/*!
+ \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
+ set to the mapper. When new series is specified the old series is disconnected (it preserves its data).
+*/
+
+/*!
+ \property QHBarModelMapper::model
+ \brief Defines the model that is used by the mapper.
+*/
+/*!
+ \qmlproperty SomeModel HBarModelMapper::model
+ 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.
+*/
+
+/*!
+ \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)
+*/
+/*!
+ \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).
+*/
+
+/*!
+ \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)
+*/
+/*!
+ \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).
+*/
+
+/*!
+ \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
+*/
+/*!
+ \qmlproperty int HBarModelMapper::firstColumn
+ Defines which column of the model contains the first values of the QBarSets in the series.
+ The default value is 0.
+*/
+
+/*!
+ \property QHBarModelMapper::columnCount
+ \brief Defines the number of columns of the model that are mapped as the data for QAbstractBarSeries.
+
+ Minimal and default value is: -1 (count limited by the number of columns in the model)
+*/
+/*!
+ \qmlproperty int HBarModelMapper::columnCount
+ Defines the number of columns of the model that are mapped as the data for QAbstractBarSeries. The default value is
+ -1 (count limited by the number of columns in the model)
+*/
+
+/*!
+ \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.
+*/
+
+/*!
+ \fn void QHBarModelMapper::firstBarSetRowChanged()
+
+ Emitted when the firstBarSetRow has changed.
+*/
+
+/*!
+ \fn void QHBarModelMapper::lastBarSetRowChanged()
+
+ Emitted when the lastBarSetRow has changed.
+*/
+
+/*!
+ \fn void QHBarModelMapper::firstColumnChanged()
+ Emitted when the firstColumn has changed.
+*/
+
+/*!
+ \fn void QHBarModelMapper::columnCountChanged()
+ Emitted when the columnCount has changed.
+*/
+
+/*!
+ Constructs a mapper object which is a child of \a parent.
+*/
+QHBarModelMapper::QHBarModelMapper(QObject *parent) :
+ QBarModelMapper(parent)
+{
+ QBarModelMapper::setOrientation(Qt::Horizontal);
+}
+
+QAbstractItemModel *QHBarModelMapper::model() const
+{
+ return QBarModelMapper::model();
+}
+
+void QHBarModelMapper::setModel(QAbstractItemModel *model)
+{
+ if (model != QBarModelMapper::model()) {
+ QBarModelMapper::setModel(model);
+ emit modelReplaced();
+ }
+}
+
+QAbstractBarSeries *QHBarModelMapper::series() const
+{
+ return QBarModelMapper::series();
+}
+
+void QHBarModelMapper::setSeries(QAbstractBarSeries *series)
+{
+ if (series != QBarModelMapper::series()) {
+ QBarModelMapper::setSeries(series);
+ emit seriesReplaced();
+ }
+}
+
+int QHBarModelMapper::firstBarSetRow() const
+{
+ return QBarModelMapper::firstBarSetSection();
+}
+
+void QHBarModelMapper::setFirstBarSetRow(int firstBarSetRow)
+{
+ if (firstBarSetRow != firstBarSetSection()) {
+ QBarModelMapper::setFirstBarSetSection(firstBarSetRow);
+ emit firstBarSetRowChanged();
+ }
+}
+
+int QHBarModelMapper::lastBarSetRow() const
+{
+ return QBarModelMapper::lastBarSetSection();
+}
+
+void QHBarModelMapper::setLastBarSetRow(int lastBarSetRow)
+{
+ if (lastBarSetRow != lastBarSetSection()) {
+ QBarModelMapper::setLastBarSetSection(lastBarSetRow);
+ emit lastBarSetRowChanged();
+ }
+}
+
+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);
+ emit columnCountChanged();
+ }
+}
+
+#include "moc_qhbarmodelmapper.cpp"
+
+QT_CHARTS_END_NAMESPACE