00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __KDCHART_ATTRIBUTES_MODEL_H__
00030 #define __KDCHART_ATTRIBUTES_MODEL_H__
00031
00032 #include "KDChartAbstractProxyModel.h"
00033 #include <QMap>
00034 #include <QVariant>
00035
00036 #include "KDChartGlobal.h"
00037
00038 namespace KDChart {
00039
00040 class KDCHART_EXPORT AttributesModel : public AbstractProxyModel
00041 {
00042 Q_OBJECT
00043
00044 friend class AttributesModelSerializer;
00045
00046 public:
00047 enum PaletteType {
00048 PaletteTypeDefault = 0,
00049 PaletteTypeRainbow = 1,
00050 PaletteTypeSubdued = 2
00051 };
00052
00053 explicit AttributesModel( QAbstractItemModel* model, QObject * parent = 0 );
00054 ~AttributesModel();
00055
00056
00057
00058
00059 void initFrom( const AttributesModel* other );
00060
00061
00062
00063
00064 bool compare( const AttributesModel* other )const;
00065
00066 bool compareAttributes( int role, const QVariant& a, const QVariant& b )const;
00067
00068
00069 bool setModelData( const QVariant value, int role );
00070 QVariant modelData( int role ) const;
00071
00074 bool isKnownAttributesRole( int role ) const;
00075
00077 void setPaletteType( PaletteType type );
00078 PaletteType paletteType() const;
00079
00083 QVariant data(int role) const;
00084
00088 QVariant data(int column, int role) const;
00089
00091 QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;
00093 int rowCount(const QModelIndex& ) const;
00095 int columnCount(const QModelIndex& ) const;
00097 QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const;
00099 bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::DisplayRole);
00101 bool resetData ( const QModelIndex & index, int role = Qt::DisplayRole);
00103 bool setHeaderData ( int section, Qt::Orientation orientation, const QVariant & value,
00104 int role = Qt::DisplayRole);
00106 bool resetHeaderData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole);
00108 void setSourceModel ( QAbstractItemModel* sourceModel );
00109
00110 Q_SIGNALS:
00111 void attributesChanged( const QModelIndex&, const QModelIndex& );
00112
00113 protected:
00115 const QMap<int, QMap<int, QMap<int, QVariant> > > dataMap()const;
00117 const QMap<int, QMap<int, QVariant> > horizontalHeaderDataMap()const;
00119 const QMap<int, QMap<int, QVariant> > verticalHeaderDataMap()const;
00121 const QMap<int, QVariant> modelDataMap()const;
00123 void setDataMap( const QMap<int, QMap<int, QMap<int, QVariant> > > map );
00125 void setHorizontalHeaderDataMap( const QMap<int, QMap<int, QVariant> > map );
00127 void setVerticalHeaderDataMap( const QMap<int, QMap<int, QVariant> > map );
00129 void setModelDataMap( const QMap<int, QVariant> map );
00130
00131 private:
00132
00133 QVariant defaultsForRole( int role ) const;
00134
00135 QMap<int, QMap<int, QMap<int, QVariant> > > mDataMap;
00136 QMap<int, QMap<int, QVariant> > mHorizontalHeaderDataMap;
00137 QMap<int, QMap<int, QVariant> > mVerticalHeaderDataMap;
00138 QMap<int, QVariant> mModelDataMap;
00139 PaletteType mPaletteType;
00140 };
00141
00142 }
00143
00144 #endif