summaryrefslogtreecommitdiffstats
path: root/src/charts/piechart/qvpiemodelmapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/piechart/qvpiemodelmapper.cpp')
-rw-r--r--src/charts/piechart/qvpiemodelmapper.cpp270
1 files changed, 270 insertions, 0 deletions
diff --git a/src/charts/piechart/qvpiemodelmapper.cpp b/src/charts/piechart/qvpiemodelmapper.cpp
new file mode 100644
index 00000000..7b9c0a0c
--- /dev/null
+++ b/src/charts/piechart/qvpiemodelmapper.cpp
@@ -0,0 +1,270 @@
+/****************************************************************************
+**
+** 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 "qvpiemodelmapper.h"
+
+QT_CHARTS_BEGIN_NAMESPACE
+
+/*!
+ \class QVPieModelMapper
+ \inmodule Qt Charts
+ \brief Vertical model mapper for pie series.
+ \mainclass
+
+ Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series.
+ Vertical model mapper is used to create a connection between QPieSeries and QAbstractItemModel derived model object that keeps the consecutive pie slices data in columns.
+ It is possible to use both QAbstractItemModel and QPieSeries model API. QVPieModelMapper makes sure that Pie and the model are kept in sync.
+ \note Used model has to support adding/removing rows/columns and modifying the data of the cells.
+*/
+/*!
+ \qmltype VPieModelMapper
+ \instantiates QVPieModelMapper
+ \inqmlmodule QtCharts
+
+ \brief Vertical model mapper for pie series.
+
+ VPieModelMapper allows you to use your own QAbstractItemModel derived model with data in columns
+ as a data source for a pie series. It is possible to use both QAbstractItemModel and PieSeries
+ data API to manipulate data. VPieModelMapper keeps the Pie and the model in sync.
+
+ The following QML example would create a pie series with four slices (assuming the model has at
+ least five rows). Each slice would contain a label from column 1 and a value from column 2.
+ \code
+ VPieModelMapper {
+ series: pieSeries
+ model: customModel
+ labelsColumn: 1
+ valuesColumn: 2
+ firstRow: 1
+ rowCount: 4
+ }
+ \endcode
+*/
+
+/*!
+ \property QVPieModelMapper::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 PieSeries VPieModelMapper::series
+ Defines the PieSeries object that is used by the mapper. If you define the mapper element as a child for a
+ PieSeries, leave this property undefined. 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 QVPieModelMapper::model
+ \brief Defines the model that is used by the mapper.
+*/
+/*!
+ \qmlproperty SomeModel VPieModelMapper::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 QVPieModelMapper::valuesColumn
+ \brief Defines which column of the model is kept in sync with the values of the pie's slices.
+
+ Default value is: -1 (invalid mapping)
+*/
+/*!
+ \qmlproperty int VPieModelMapper::valuesColumn
+ Defines which column of the model is kept in sync with the values of the pie's slices. Default value is -1 (invalid
+ mapping).
+*/
+
+/*!
+ \property QVPieModelMapper::labelsColumn
+ \brief Defines which column of the model is kept in sync with the labels of the pie's slices.
+
+ Default value is: -1 (invalid mapping)
+*/
+/*!
+ \qmlproperty int VPieModelMapper::labelsColumn
+ Defines which column of the model is kept in sync with the labels of the pie's slices. Default value is -1 (invalid
+ mapping).
+*/
+
+/*!
+ \property QVPieModelMapper::firstRow
+ \brief Defines which row of the model contains the first slice value.
+
+ Minimal and default value is: 0
+*/
+/*!
+ \qmlproperty int VPieModelMapper::firstRow
+ Defines which row of the model contains the first slice value.
+ The default value is 0.
+*/
+
+/*!
+ \property QVPieModelMapper::rowCount
+ \brief Defines the number of rows of the model that are mapped as the data for QPieSeries.
+
+ Minimal and default value is: -1 (count limited by the number of rows in the model)
+*/
+/*!
+ \qmlproperty int VPieModelMapper::columnCount
+ Defines the number of rows of the model that are mapped as the data for QPieSeries. The default value is
+ -1 (count limited by the number of rows in the model)
+*/
+
+/*!
+ \fn void QVPieModelMapper::seriesReplaced()
+
+ Emitted when the series to which mapper is connected to has changed.
+*/
+
+/*!
+ \fn void QVPieModelMapper::modelReplaced()
+
+ Emitted when the model to which mapper is connected to has changed.
+*/
+
+/*!
+ \fn void QVPieModelMapper::valuesColumnChanged()
+
+ Emitted when the valuesColumn has changed.
+*/
+
+/*!
+ \fn void QVPieModelMapper::labelsColumnChanged()
+
+ Emitted when the labelsColumn has changed.
+*/
+
+/*!
+ \fn void QVPieModelMapper::firstRowChanged()
+ Emitted when the firstRow has changed.
+*/
+
+/*!
+ \fn void QVPieModelMapper::rowCountChanged()
+ Emitted when the rowCount has changed.
+*/
+
+/*!
+ Constructs a mapper object which is a child of \a parent.
+*/
+QVPieModelMapper::QVPieModelMapper(QObject *parent) :
+ QPieModelMapper(parent)
+{
+ QPieModelMapper::setOrientation(Qt::Vertical);
+}
+
+QAbstractItemModel *QVPieModelMapper::model() const
+{
+ return QPieModelMapper::model();
+}
+
+void QVPieModelMapper::setModel(QAbstractItemModel *model)
+{
+ if (model != QPieModelMapper::model()) {
+ QPieModelMapper::setModel(model);
+ emit modelReplaced();
+ }
+}
+
+QPieSeries *QVPieModelMapper::series() const
+{
+ return QPieModelMapper::series();
+}
+
+void QVPieModelMapper::setSeries(QPieSeries *series)
+{
+ if (series != QPieModelMapper::series()) {
+ QPieModelMapper::setSeries(series);
+ emit seriesReplaced();
+ }
+}
+
+/*!
+ Returns which column of the model is kept in sync with the values of the pie's slices
+*/
+int QVPieModelMapper::valuesColumn() const
+{
+ return QPieModelMapper::valuesSection();
+}
+
+/*!
+ Sets the model column that is kept in sync with the pie slices values.
+ Parameter \a valuesColumn specifies the row of the model.
+*/
+void QVPieModelMapper::setValuesColumn(int valuesColumn)
+{
+ if (valuesColumn != valuesSection()) {
+ QPieModelMapper::setValuesSection(valuesColumn);
+ emit valuesColumnChanged();
+ }
+}
+
+/*!
+ Returns which column of the model is kept in sync with the labels of the pie's slices
+*/
+int QVPieModelMapper::labelsColumn() const
+{
+ return QPieModelMapper::labelsSection();
+}
+
+/*!
+ Sets the model column that is kept in sync with the pie's slices labels.
+ Parameter \a labelsColumn specifies the row of the model.
+*/
+void QVPieModelMapper::setLabelsColumn(int labelsColumn)
+{
+ if (labelsColumn != labelsSection()) {
+ QPieModelMapper::setLabelsSection(labelsColumn);
+ emit labelsColumnChanged();
+ }
+}
+
+int QVPieModelMapper::firstRow() const
+{
+ return first();
+}
+
+void QVPieModelMapper::setFirstRow(int firstRow)
+{
+ if (firstRow != first()) {
+ setFirst(firstRow);
+ emit firstRowChanged();
+ }
+}
+
+int QVPieModelMapper::rowCount() const
+{
+ return count();
+}
+
+void QVPieModelMapper::setRowCount(int rowCount)
+{
+ if (rowCount != count()) {
+ setCount(rowCount);
+ emit rowCountChanged();
+ }
+}
+
+#include "moc_qvpiemodelmapper.cpp"
+
+QT_CHARTS_END_NAMESPACE