KD Chart API Documentation  3.1
KDChartDatasetProxyModel.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** This file is part of the KD Chart library.
4 **
5 ** SPDX-FileCopyrightText: 2001 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6 **
7 ** SPDX-License-Identifier: MIT
8 **
9 ****************************************************************************/
10 
11 #ifndef KDCHARTDATASETPROXYMODEL_H
12 #define KDCHARTDATASETPROXYMODEL_H
13 
14 #include <QSortFilterProxyModel>
15 #include <QVector>
16 
17 #include "kdchart_export.h"
18 
19 namespace KDChart {
20 
21 class IndexOutOfBoundsException;
22 
23 typedef QVector<int> DatasetDescriptionVector;
24 
43 class KDCHART_EXPORT DatasetProxyModel : public QSortFilterProxyModel
44 {
45  Q_OBJECT
46 public:
51  explicit DatasetProxyModel(QObject *parent = nullptr);
52 
53  QModelIndex buddy(const QModelIndex &index) const override;
54 
55  Qt::ItemFlags flags(const QModelIndex &index) const override;
56 
57  QModelIndex index(int row, int column,
58  const QModelIndex &parent = QModelIndex()) const override;
59  QModelIndex parent(const QModelIndex &child) const override;
60 
62  QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override;
63 
65  QModelIndex mapToSource(const QModelIndex &proxyIndex) const override;
66 
68  QVariant data(const QModelIndex &index, int role) const override;
69 
71  bool setData(const QModelIndex &index, const QVariant &value, int role) override;
72 
74  QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
75 
77  void setSourceModel(QAbstractItemModel *sourceModel) override;
78 
81  void setSourceRootIndex(const QModelIndex &rootIdx);
82 
83 public Q_SLOTS:
88  void resetDatasetDescriptions();
89 
94  void setDatasetColumnDescriptionVector(const DatasetDescriptionVector &columnConfig);
95 
100  void setDatasetRowDescriptionVector(const DatasetDescriptionVector &rowConfig);
101 
103  void setDatasetDescriptionVectors(
104  const DatasetDescriptionVector &rowConfig,
105  const DatasetDescriptionVector &columnConfig);
106 
107  // FIXME: add convenience methods to configure common dataset
108  // selections (like rectangular areas etc)
109 
110 protected:
112  bool filterAcceptsColumn(int sourceColumn,
113  const QModelIndex &) const override;
114 
116  bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
117 
118 private:
120  int mapProxyColumnToSource(const int &proxyColumn) const;
121 
123  int mapSourceColumnToProxy(const int &sourceColumn) const;
124 
126  int mapProxyRowToSource(const int &proxyRow) const;
127 
129  int mapSourceRowToProxy(const int &sourceRow) const;
130 
154  void initializeDatasetDecriptors(
155  const DatasetDescriptionVector &inConfiguration,
156  int sourceCount,
157  DatasetDescriptionVector &outSourceToProxyMap,
158  DatasetDescriptionVector &outProxyToSourceMap);
159 
160  DatasetDescriptionVector mColSrcToProxyMap;
161  DatasetDescriptionVector mColProxyToSrcMap;
162  DatasetDescriptionVector mRowSrcToProxyMap;
163  DatasetDescriptionVector mRowProxyToSrcMap;
164 
165  int mProxyRowCount = 0;
166  int mProxyColumnCount = 0;
167  QModelIndex mRootIndex;
168 };
169 }
170 
171 #endif
QVector< int > DatasetDescriptionVector

© 2001 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-chart/
Generated by doxygen 1.9.1