summaryrefslogtreecommitdiffstats
path: root/src/charts/piechart/qhpiemodelmapper.cpp
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@digia.com>2014-07-01 07:10:00 +0300
committerTitta Heikkala <titta.heikkala@theqtcompany.com>2014-10-14 13:04:52 +0300
commitc544258484ff4fd5d2b88402fbaa5d154b89a3a2 (patch)
tree7659625abb566dec55d3783ed820b928542d9b2b /src/charts/piechart/qhpiemodelmapper.cpp
parent76339f714f088645e911cee65bdb66055fe029aa (diff)
Qt Charts project file structure change
Charts repository structure is changed to follow the structure of a Qt Add-On module. The task includes following changes: - All macros and definitions named 'commercial' have been renamed. - Compile errors related to QString and qSort usage have been fixed. - Old demos are moved under examples. The QML examples now support only Qt Quick 2.0, the support for Qt Quick 1 is removed. - The QML examples with multiple views are updated so that they are usable also with touch devices. - Unnecessary version checks are removed from examples. - The build stamp has been removed as it was only meant for Charts development purposes and it's no longer needed. Also development build related debug prints are removed as __DATE__ can't be used for all OS thus it doesn't make much sense. - Documentation structure has been updated based on the new module structure. The raw HTML files have been removed. Demos are combined to examples. - Unnecessary .qdocinc files are no longer needed. The content is moved to the corresponding .cpp files. - The Charts widget designer plugin is updated according to the module change. - The test cases updated according to the project structure change. Tests are added also for version 2.0. - cmake modules generation is not needed with Qt 5.4 and Qt Charts so it's disabled. - The new module name and version are updated to the plugin.qmltypes file. Task-number: QTRD-2844, QTRD-3217, QTRD-3218, QTRD-3277, QTRD-3228, QTRD-2526, QTRD-3233, QTRD-3222 Change-Id: Ib7fb26057cde710ffaf6bc780c8bf52a16f45160 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
Diffstat (limited to 'src/charts/piechart/qhpiemodelmapper.cpp')
-rw-r--r--src/charts/piechart/qhpiemodelmapper.cpp267
1 files changed, 267 insertions, 0 deletions
diff --git a/src/charts/piechart/qhpiemodelmapper.cpp b/src/charts/piechart/qhpiemodelmapper.cpp
new file mode 100644
index 00000000..b1c7d84f
--- /dev/null
+++ b/src/charts/piechart/qhpiemodelmapper.cpp
@@ -0,0 +1,267 @@
+/****************************************************************************
+**
+** 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 "qhpiemodelmapper.h"
+
+QT_CHARTS_BEGIN_NAMESPACE
+
+/*!
+ \class QHPieModelMapper
+ \inmodule Qt Charts
+ \brief Horizontal model mapper for pie 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 QPieSeries and QAbstractItemModel derived model object that keeps the consecutive pie slices data in rows.
+ It is possible to use both QAbstractItemModel and QPieSeries model API. QHPieModelMapper 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 HPieModelMapper
+ \instantiates QHPieModelMapper
+ \inqmlmodule QtCharts
+
+ \brief Horizontal model mapper for pie series.
+
+ HPieModelMapper allows you to use your own QAbstractItemModel derived model with data in rows as
+ a data source for a pie series. It is possible to use both QAbstractItemModel and PieSeries data
+ API to manipulate data. HPieModelMapper 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 columns). Each slice would contain a label from row 1 and a value from row 2.
+ \code
+ HPieModelMapper {
+ series: pieSeries
+ model: customModel
+ labelsRow: 1
+ valuesRow: 2
+ firstColumn: 1
+ columnCount: 4
+ }
+ \endcode
+*/
+
+/*!
+ \property QHPieModelMapper::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 HPieModelMapper::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 QHPieModelMapper::model
+ \brief Defines the model that is used by the mapper.
+*/
+/*!
+ \qmlproperty SomeModel HPieModelMapper::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 QHPieModelMapper::valuesRow
+ \brief Defines which row of the model is kept in sync with the values of the pie's slices.
+
+ Default value is: -1 (invalid mapping)
+*/
+/*!
+ \qmlproperty int HPieModelMapper::valuesRow
+ Defines which row of the model is kept in sync with the values of the pie's slices. Default value is: -1 (invalid
+ mapping).
+*/
+
+/*!
+ \property QHPieModelMapper::labelsRow
+ \brief Defines which row of the model is kept in sync with the labels of the pie's slices.
+
+ Default value is: -1 (invalid mapping)
+*/
+/*!
+ \qmlproperty int HPieModelMapper::labelsRow
+ Defines which row of the model is kept in sync with the labels of the pie's slices
+ Default value is: -1 (invalid mapping)
+*/
+
+/*!
+ \property QHPieModelMapper::firstColumn
+ \brief Defines which column of the model contains the first slice value.
+
+ Minimal and default value is: 0
+*/
+/*!
+ \qmlproperty int HPieModelMapper::firstColumn
+ Defines which column of the model contains the first slice value.
+ The default value is 0.
+*/
+
+/*!
+ \property QHPieModelMapper::columnCount
+ \brief Defines the number of columns of the model that are mapped as the data for QPieSeries.
+
+ Minimal and default value is: -1 (count limited by the number of columns in the model)
+*/
+/*!
+ \qmlproperty int HPieModelMapper::columnCount
+ Defines the number of columns of the model that are mapped as the data for QPieSeries. The default value is
+ -1 (count limited by the number of columns in the model)
+*/
+
+/*!
+ \fn void QHPieModelMapper::seriesReplaced()
+ Emitted when the series to which mapper is connected to has changed.
+*/
+
+/*!
+ \fn void QHPieModelMapper::modelReplaced()
+ Emitted when the model to which mapper is connected to has changed.
+*/
+
+/*!
+ \fn void QHPieModelMapper::valuesRowChanged()
+ Emitted when the valuesRow has changed.
+*/
+
+/*!
+ \fn void QHPieModelMapper::labelsRowChanged()
+ Emitted when the labelsRow has changed.
+*/
+
+/*!
+ \fn void QHPieModelMapper::firstColumnChanged()
+ Emitted when the firstColumn has changed.
+*/
+
+/*!
+ \fn void QHPieModelMapper::columnCountChanged()
+ Emitted when the columnCount has changed.
+*/
+
+/*!
+ Constructs a mapper object which is a child of \a parent.
+*/
+QHPieModelMapper::QHPieModelMapper(QObject *parent) :
+ QPieModelMapper(parent)
+{
+ setOrientation(Qt::Horizontal);
+}
+
+QAbstractItemModel *QHPieModelMapper::model() const
+{
+ return QPieModelMapper::model();
+}
+
+void QHPieModelMapper::setModel(QAbstractItemModel *model)
+{
+ if (model != QPieModelMapper::model()) {
+ QPieModelMapper::setModel(model);
+ emit modelReplaced();
+ }
+}
+
+QPieSeries *QHPieModelMapper::series() const
+{
+ return QPieModelMapper::series();
+}
+
+void QHPieModelMapper::setSeries(QPieSeries *series)
+{
+ if (series != QPieModelMapper::series()) {
+ QPieModelMapper::setSeries(series);
+ emit seriesReplaced();
+ }
+}
+
+/*!
+ Returns which row of the model is kept in sync with the values of the pie's slices
+*/
+int QHPieModelMapper::valuesRow() const
+{
+ return valuesSection();
+}
+
+/*!
+ Sets the model row that is kept in sync with the pie slices values.
+ Parameter \a valuesRow specifies the row of the model.
+*/
+void QHPieModelMapper::setValuesRow(int valuesRow)
+{
+ if (valuesRow != valuesSection()) {
+ setValuesSection(valuesRow);
+ emit valuesRowChanged();
+ }
+}
+
+/*!
+ Returns which row of the model is kept in sync with the labels of the pie's slices
+*/
+int QHPieModelMapper::labelsRow() const
+{
+ return labelsSection();
+}
+
+/*!
+ Sets the model row that is kept in sync with the pie's slices labels.
+ Parameter \a labelsRow specifies the row of the model.
+*/
+void QHPieModelMapper::setLabelsRow(int labelsRow)
+{
+ if (labelsRow != labelsSection()) {
+ setLabelsSection(labelsRow);
+ emit labelsRowChanged();
+ }
+}
+
+int QHPieModelMapper::firstColumn() const
+{
+ return first();
+}
+
+void QHPieModelMapper::setFirstColumn(int firstColumn)
+{
+ if (firstColumn != first()) {
+ setFirst(firstColumn);
+ emit firstColumnChanged();
+ }
+}
+
+int QHPieModelMapper::columnCount() const
+{
+ return count();
+}
+
+void QHPieModelMapper::setColumnCount(int columnCount)
+{
+ if (columnCount != count()) {
+ setCount(columnCount);
+ emit columnCountChanged();
+ }
+}
+
+#include "moc_qhpiemodelmapper.cpp"
+
+QT_CHARTS_END_NAMESPACE