Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef KDCHARTDATASETPROXYMODEL_H
00024 #define KDCHARTDATASETPROXYMODEL_H
00025
00026 #include <QVector>
00027 #include <QSortFilterProxyModel>
00028
00029 #include "kdchart_export.h"
00030
00031 namespace KDChart {
00032
00033 class IndexOutOfBoundsException;
00034
00035 typedef QVector<int> DatasetDescriptionVector;
00036
00055 class KDCHART_EXPORT DatasetProxyModel : public QSortFilterProxyModel
00056 {
00057 Q_OBJECT
00058 public:
00063 explicit DatasetProxyModel ( QObject* parent = 0 );
00064
00065 QModelIndex buddy( const QModelIndex& index ) const;
00066
00067 Qt::ItemFlags flags( const QModelIndex& index ) const;
00068
00069 QModelIndex index( int row, int column,
00070 const QModelIndex &parent = QModelIndex() ) const;
00071 QModelIndex parent(const QModelIndex &child ) const;
00072
00074 QModelIndex mapFromSource ( const QModelIndex & sourceIndex ) const;
00075
00077 QModelIndex mapToSource ( const QModelIndex& proxyIndex ) const;
00078
00080 QVariant data(const QModelIndex &index, int role) const;
00081
00083 bool setData( const QModelIndex& index, const QVariant& value, int role );
00084
00086 QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;
00087
00089 void setSourceModel(QAbstractItemModel *sourceModel);
00090
00093 void setSourceRootIndex(const QModelIndex& rootIdx);
00094
00095
00096 public Q_SLOTS:
00101 void resetDatasetDescriptions();
00102
00107 void setDatasetColumnDescriptionVector ( const DatasetDescriptionVector& columnConfig );
00108
00113 void setDatasetRowDescriptionVector ( const DatasetDescriptionVector& rowConfig );
00114
00116 void setDatasetDescriptionVectors (
00117 const DatasetDescriptionVector& rowConfig,
00118 const DatasetDescriptionVector& columnConfig );
00119
00120
00121
00122
00123 protected:
00125 bool filterAcceptsColumn ( int sourceColumn,
00126 const QModelIndex & ) const;
00127
00128
00130 bool filterAcceptsRow ( int source_row, const QModelIndex & source_parent ) const;
00131
00132 private:
00133
00135 int mapProxyColumnToSource ( const int& proxyColumn ) const;
00136
00138 int mapSourceColumnToProxy ( const int& sourceColumn ) const;
00139
00141 int mapProxyRowToSource ( const int& proxyRow ) const;
00142
00144 int mapSourceRowToProxy ( const int& sourceRow ) const;
00145
00169 void initializeDatasetDecriptors (
00170 const DatasetDescriptionVector& inConfiguration,
00171 int sourceCount,
00172 DatasetDescriptionVector& outSourceToProxyMap,
00173 DatasetDescriptionVector& outProxyToSourceMap );
00174
00175 DatasetDescriptionVector mColSrcToProxyMap;
00176 DatasetDescriptionVector mColProxyToSrcMap;
00177 DatasetDescriptionVector mRowSrcToProxyMap;
00178 DatasetDescriptionVector mRowProxyToSrcMap;
00179
00180 int mProxyRowCount;
00181 int mProxyColumnCount;
00182 QModelIndex mRootIndex;
00183 };
00184
00185 }
00186
00187
00188 #endif